From db36c91a0b0cc2e3b8a7ade151c03a6d0a38301e Mon Sep 17 00:00:00 2001 From: gurpreetsinghmatharoo Date: Fri, 26 Jun 2026 19:34:24 +0530 Subject: [PATCH] add type=module --- .../Additional_Information.htm | 54 - .../Best_Practices_When_Programming.htm | 166 -- .../Bitwise_Operators.htm | 212 -- .../Compatibility_Functions.htm | 84 - .../Compatibility_Scripts.htm | 60 - .../Error_Reporting.htm | 47 - .../Errors/Compiler_Errors.htm | 495 ----- .../Errors/Runner_Errors.htm | 332 --- .../Errors/Syntax_Errors.htm | 272 --- ...uide_To_Primitives_And_Vertex_Building.htm | 154 -- .../Guide_To_Using_Blendmodes.htm | 182 -- .../Guide_To_Using_Buffers.htm | 232 -- .../Guide_To_Using_Particles.htm | 201 -- .../Guide_To_Using_Shaders.htm | 409 ---- .../Obsolete_Functions.htm | 915 -------- .../The_File_System.htm | 91 - .../Additional_Information/Type_Tables.htm | 694 ------ .../Additional_Information/Vectors.htm | 79 - .../Drag_And_Drop/Drag_And_Drop_Index.htm | 43 - .../Action_Block_Functions.htm | 53 - .../Applying_Actions_To_Other_Instances.htm | 82 - .../Changing_DnD_To_Code.htm | 49 - .../Constructing_Action_Block_Code.htm | 83 - .../Drag_And_Drop_Overview/DnD_Overview.htm | 83 - .../Right_Mouse_Button_Menu_Options.htm | 88 - .../Audio/Audio_Actions.htm | 139 -- .../Audio/Get_Audio_Length.htm | 64 - .../Audio/Get_Audio_Pitch.htm | 63 - .../Audio/Get_Audio_Volume.htm | 63 - .../Audio/Get_Master_Volume.htm | 60 - .../Audio/If_Audio_Is_Paused.htm | 62 - .../Audio/If_Audio_Is_Playing.htm | 62 - .../Audio/Pause_All_Audio.htm | 43 - .../Audio/Pause_Audio.htm | 59 - .../Audio/Play_Audio.htm | 82 - .../Audio/Resume_All_Audio.htm | 44 - .../Audio/Resume_Audio.htm | 59 - .../Audio/Set_Audio_Pitch.htm | 69 - .../Audio/Set_Audio_Position.htm | 66 - .../Audio/Set_Audio_Volume.htm | 66 - .../Audio/Set_Master_Volume.htm | 61 - .../Audio/Stop_All_Audio.htm | 46 - .../Audio/Stop_Audio.htm | 58 - .../Buffers/Buffer_Actions.htm | 112 - .../Buffers/Copy_Buffer.htm | 64 - .../Buffers/Create_Buffer.htm | 67 - .../Buffers/Delete_Buffer.htm | 60 - .../Buffers/Get_Buffer_Position.htm | 64 - .../Buffers/Get_Buffer_Size.htm | 63 - .../Buffers/If_Buffer_Exists.htm | 60 - .../Buffers/If_End_Of_Buffer.htm | 60 - .../Buffers/Read_Buffer.htm | 64 - .../Buffers/Seek_Buffer.htm | 64 - .../Buffers/Write_Buffer.htm | 65 - .../Cameras/Camera_Actions.htm | 59 - .../Cameras/Get_View_Variable.htm | 104 - .../Cameras/Set_View_Variable.htm | 111 - .../Collisions/Collision_Actions.htm | 66 - .../Collisions/If_Any_Object_At_Place.htm | 67 - .../Collisions/If_Collision_Point.htm | 104 - .../Collisions/If_Collision_Shape.htm | 109 - .../Collisions/If_Object_At_Place.htm | 89 - .../Common/Apply_To...htm | 50 - .../Common/Assign_Variable.htm | 72 - .../Common/Common_Actions_Library.htm | 138 -- .../Common/Declare_A_New_Function.htm | 84 - .../Common/Declare_Temporary_Variable.htm | 69 - .../Drag_And_Drop_Reference/Common/Else.htm | 49 - .../Common/Execute_Code.htm | 47 - .../Common/Execute_Script.htm | 71 - .../Drag_And_Drop_Reference/Common/Exit.htm | 46 - .../Common/Function_Call.htm | 73 - .../Common/Get_Global_Variable.htm | 69 - .../Common/If_Expression.htm | 69 - .../Common/If_Undefined.htm | 68 - .../Common/If_Variable.htm | 86 - .../Drag_And_Drop_Reference/Common/Macro.htm | 60 - .../Drag_And_Drop_Reference/Common/New.htm | 66 - .../Drag_And_Drop_Reference/Common/Return.htm | 61 - .../Common/Set_Global_Variable.htm | 74 - .../Data_Structures/Add_To_List.htm | 63 - .../Data_Structures/Clear_Data_Structure.htm | 64 - .../Data_Structures/Clear_Grid.htm | 63 - .../Data_Structures/Create_Grid.htm | 66 - .../Data_Structures/Create_List.htm | 65 - .../Data_Structures/Create_Map.htm | 65 - .../Data_Structures/Create_Stack.htm | 65 - .../Data_Structure_Actions.htm | 195 -- .../Data_Structures/Free_Data_Structure.htm | 66 - .../Data_Structures/Get_Grid_Value.htm | 72 - .../Get_Index_Of_List_Item.htm | 68 - .../Data_Structures/Get_List_Item_At.htm | 68 - .../Data_Structures/Get_List_Item_Count.htm | 63 - .../Data_Structures/Get_Map_Value.htm | 68 - .../If_Data_Structure_Empty.htm | 67 - .../If_Data_Structure_Exists.htm | 66 - .../Data_Structures/Insert_Into_List.htm | 69 - .../Data_Structures/Pop_Stack.htm | 63 - .../Data_Structures/Push_Onto_Stack.htm | 63 - .../Data_Structures/Remove_From_List.htm | 63 - .../Data_Structures/Remove_Map_Entry.htm | 63 - .../Data_Structures/Set_Grid_Value.htm | 71 - .../Data_Structures/Set_Map_Value.htm | 68 - .../Data_Types/Data_Type_Actions.htm | 64 - .../Data_Types/Decimal_To_Integer.htm | 78 - .../Data_Types/Number_To_String.htm | 62 - .../Data_Types/String_To_Number.htm | 94 - .../Drag_And_Drop_Reference/DnD_Reference.htm | 71 - .../Drawing/Draw_Ellipse.htm | 72 - .../Drawing/Draw_Gradient_Ellipse.htm | 82 - .../Drawing/Draw_Gradient_Rectangle.htm | 90 - .../Drawing/Draw_Healthbar.htm | 99 - .../Drawing/Draw_Instance_Health.htm | 95 - .../Drawing/Draw_Instance_Lives.htm | 77 - .../Drawing/Draw_Instance_Score.htm | 69 - .../Drawing/Draw_Line.htm | 72 - .../Drawing/Draw_Rectangle.htm | 73 - .../Drawing/Draw_Self.htm | 48 - .../Drawing/Draw_Sprite.htm | 75 - .../Drawing/Draw_Sprite_Transformed.htm | 92 - .../Drawing/Draw_Stacked_Sprites.htm | 78 - .../Drawing/Draw_Transformed_Value.htm | 88 - .../Drawing/Draw_Value.htm | 74 - .../Drawing/Drawing_Actions.htm | 170 -- .../Drawing/Get_Draw_Alpha.htm | 45 - .../Drawing/Get_Draw_Colour.htm | 44 - .../Drawing/Get_Draw_Font.htm | 45 - .../Drawing/Get_Text_Alignment.htm | 74 - .../Drawing/Set_Draw_Alpha.htm | 58 - .../Drawing/Set_Draw_Colour.htm | 48 - .../Drawing/Set_Font.htm | 48 - .../Drawing/Set_Text_Alignment.htm | 94 - .../Files/Close_Ini_File.htm | 46 - .../Files/Copy_File.htm | 64 - .../Files/Delete_File.htm | 60 - .../Files/File_Actions.htm | 109 - .../Files/If_File_Exists.htm | 61 - .../Files/Load_Buffer.htm | 64 - .../Files/Open_Ini_File.htm | 62 - .../Files/Read_Ini_File.htm | 84 - .../Files/Rename_File.htm | 64 - .../Files/Save_Buffer.htm | 63 - .../Files/Write_To_Ini_File.htm | 76 - .../Game/Exit_Game.htm | 51 - .../Game/Game_Actions.htm | 66 - .../Game/Load_Game.htm | 59 - .../Game/Restart_Game.htm | 46 - .../Game/Save_Game.htm | 60 - .../Gamepad/Gamepad_Actions.htm | 200 -- .../Gamepad/Get_Gamepad_Axis.htm | 71 - .../Gamepad/Get_Gamepad_Connected.htm | 63 - .../Gamepad/Get_Gamepad_Count.htm | 58 - .../Gamepad/Get_Gamepad_Trigger.htm | 67 - .../Gamepad/If_Gamepad_Button_Down.htm | 72 - .../Gamepad/If_Gamepad_Button_Pressed.htm | 73 - .../Gamepad/If_Gamepad_Button_Released.htm | 72 - .../Gamepad/Set_Gamepad_Axis_Deadzone.htm | 66 - .../Gamepad/Set_Gamepad_Button_Threshold.htm | 64 - .../Instance/Call_Parent_Event.htm | 45 - .../Instance/Call_User_Event.htm | 59 - .../Instance/Change_Object_Instance.htm | 65 - .../Instance/Create_Object_Instance.htm | 77 - .../Instance/Destroy_At_Position.htm | 63 - .../Instance/Destroy_Object_Instance.htm | 46 - .../Instance/Get_Alarm.htm | 63 - .../Instance/Get_Instance_Count.htm | 64 - .../Instance/Get_Instance_Variable.htm | 109 - .../Instance/If_Instance_Exists.htm | 64 - .../Instance/Instance_Actions_Library.htm | 141 -- .../Instance/Set_Alarm.htm | 65 - .../Instance/Set_Animation_Speed.htm | 60 - .../Instance/Set_Instance_Alpha.htm | 61 - .../Instance/Set_Instance_Colour.htm | 60 - .../Instance/Set_Instance_Rotation.htm | 61 - .../Instance/Set_Instance_Scale.htm | 67 - .../Instance/Set_Instance_Variable.htm | 108 - .../Instance/Set_Sprite.htm | 65 - .../Instance_Vars/Get_Health.htm | 60 - .../Instance_Vars/Get_Lives.htm | 60 - .../Instance_Vars/Get_Score.htm | 60 - .../Instance_Vars/If_Health.htm | 80 - .../Instance_Vars/If_Lives.htm | 80 - .../Instance_Vars/If_Score.htm | 80 - .../Instance_Variable_Actions.htm | 97 - .../Instance_Vars/Set_Health.htm | 60 - .../Instance_Vars/Set_Lives.htm | 59 - .../Instance_Vars/Set_Score.htm | 59 - .../Drag_And_Drop_Reference/Loops/Break.htm | 45 - .../Drag_And_Drop_Reference/Loops/For.htm | 77 - .../Drag_And_Drop_Reference/Loops/Loop.htm | 47 - .../Loops/Loop_Actions.htm | 73 - .../Drag_And_Drop_Reference/Loops/Repeat.htm | 62 - .../Drag_And_Drop_Reference/Loops/While.htm | 73 - .../Miscellaneous/Miscellaneous_Actions.htm | 58 - .../Miscellaneous/Set_Window_State.htm | 66 - .../Miscellaneous/Show_Debug_Message.htm | 58 - .../Get_Virtual_Keyboard_Height.htm | 44 - .../Hide_Virtual_Keyboard.htm | 56 - .../Mouse_And_Keyboard/If_Key_Down.htm | 67 - .../Mouse_And_Keyboard/If_Key_Pressed.htm | 68 - .../Mouse_And_Keyboard/If_Key_Released.htm | 68 - .../Mouse_And_Keyboard/If_Mouse_Down.htm | 64 - .../Mouse_And_Keyboard/If_Mouse_Pressed.htm | 63 - .../Mouse_And_Keyboard/If_Mouse_Released.htm | 65 - .../If_Virtual_Keyboard_Is_Showing.htm | 47 - .../Mouse_And_Keyboard_Actions.htm | 118 - .../Show_Virtual_Keyboard.htm | 247 --- .../Movement/Jump_To_Point.htm | 64 - .../Movement/Jump_To_Start.htm | 44 - .../Movement/Movement_Actions.htm | 116 - .../Movement/Reverse.htm | 62 - .../Movement/Set_Direction_Fixed.htm | 45 - .../Movement/Set_Direction_Random.htm | 44 - .../Movement/Set_Direction_Variable.htm | 59 - .../Movement/Set_Friction.htm | 59 - .../Movement/Set_Gravity_Direction.htm | 65 - .../Movement/Set_Gravity_Force.htm | 60 - .../Movement/Set_Point_Direction.htm | 64 - .../Movement/Set_Speed.htm | 62 - .../Movement/Snap_Position.htm | 64 - .../Movement/Wrap_Around_Room.htm | 68 - .../Particles/Burst_Particles.htm | 77 - .../Particles/Clear_Particle_System.htm | 62 - .../Particles/Create_Particle_Emitter.htm | 69 - .../Particles/Create_Particle_System.htm | 74 - .../Particles/Create_Particle_Type.htm | 72 - .../Particles/Destroy_Particle_Emitter.htm | 65 - .../Particles/Destroy_Particle_System.htm | 61 - .../Particles/Destroy_Particle_Type.htm | 59 - .../Particles/Do_Effect.htm | 80 - .../Particles/Emit_Particles.htm | 78 - .../Particles/Particle_Actions.htm | 202 -- .../Particles/Pause_Particle_System.htm | 66 - .../Particles/Set_Emitter_Region.htm | 95 - .../Particles/Set_Particle_Alpha.htm | 72 - .../Particles/Set_Particle_Colour.htm | 74 - .../Particles/Set_Particle_Direction.htm | 80 - .../Particles/Set_Particle_Gravity.htm | 68 - .../Particles/Set_Particle_Life.htm | 70 - .../Particles/Set_Particle_Orientation.htm | 88 - .../Particles/Set_Particle_Shape.htm | 65 - .../Particles/Set_Particle_Size.htm | 80 - .../Particles/Set_Particle_Speed.htm | 75 - .../Particles/Set_Particle_Sprite.htm | 64 - .../Particles/Set_Secondary_Particles.htm | 78 - .../Particles/Update_Particle_System.htm | 60 - .../Paths/Get_Path_Follow_Speed.htm | 59 - .../Paths/Get_Position_Along_Path.htm | 59 - .../Paths/Path_Actions.htm | 77 - .../Paths/Set_Path_Follow_Speed.htm | 60 - .../Paths/Set_Position_Along_Path.htm | 58 - .../Paths/Start_Following_Path.htm | 85 - .../Paths/Stop_Following_Path.htm | 44 - .../Drag_And_Drop_Reference/Random/Choose.htm | 60 - .../Random/Get_Random_Number.htm | 73 - .../Random/Random_Actions.htm | 63 - .../Random/Randomise.htm | 47 - .../Rollback/Create_Game.htm | 66 - .../Rollback/Define_Input.htm | 64 - .../Rollback/Define_Input_Frame_Delay.htm | 58 - .../Rollback/Define_Mock_Input.htm | 66 - .../Rollback/Define_Player.htm | 63 - .../Rollback/Display_Events.htm | 56 - .../Rollback/Get_Info.htm | 59 - .../Rollback/Get_Input.htm | 63 - .../Rollback/Get_Player_Prefs.htm | 54 - .../Rollback/If_Key_Down_(Rollback).htm | 63 - .../Rollback/If_Key_Pressed_(Rollback).htm | 61 - .../Rollback/If_Key_Up_(Rollback).htm | 61 - .../Rollback/If_Rollback_Event_Fired.htm | 60 - .../Rollback/Join_Game.htm | 56 - .../Rollback/Leave_Game.htm | 43 - .../Rollback/Rollback_Actions.htm | 66 - .../Rollback/Send_Message.htm | 70 - .../Rollback/Set_Player_Prefs.htm | 54 - .../Rollback/Start_Game.htm | 44 - .../Rollback/Sync_On_Frame.htm | 63 - .../Rollback/Use_Manual_Start.htm | 45 - .../Rollback/Use_Player_Prefs.htm | 54 - .../Rollback/Use_Random_Input.htm | 54 - .../Rooms/Get_Current_Room.htm | 57 - .../Rooms/Go_To_Next_Room.htm | 45 - .../Rooms/Go_To_Previous_Room.htm | 45 - .../Rooms/Go_To_Room.htm | 59 - .../Rooms/If_Room_Is_First.htm | 47 - .../Rooms/If_Room_Is_Last.htm | 47 - .../Rooms/Restart_Room.htm | 43 - .../Rooms/Room_Actions.htm | 85 - .../Sequences/Create_Sequence_Element.htm | 73 - .../Sequences/Destroy_Sequence_Element.htm | 57 - .../Sequences/Get_Sequence_Head.htm | 62 - .../Sequences/Get_Sequence_Length.htm | 63 - .../Sequences/Get_Sequence_Position.htm | 67 - .../Sequences/If_Sequence_Exists.htm | 63 - .../Sequences/Pause_Sequence.htm | 60 - .../Sequences/Play_Sequence.htm | 60 - .../Sequences/Sequence_Actions_Library.htm | 95 - .../Sequences/Set_Sequence_Head.htm | 72 - .../Sequences/Set_Sequence_Position.htm | 67 - .../Drag_And_Drop_Reference/Switch/Case.htm | 63 - .../Switch/Default.htm | 46 - .../Drag_And_Drop_Reference/Switch/Switch.htm | 61 - .../Switch/Switch_Actions.htm | 72 - .../Tiles/Get_Tile_Data_At_Pixel.htm | 71 - .../Tiles/Get_Tile_Data_In_Cell.htm | 65 - .../Tiles/Get_Tile_Data_Transform.htm | 66 - .../Tiles/Get_Tile_Index_At_Pixel.htm | 74 - .../Tiles/Get_Tile_Index_In_Cell.htm | 75 - .../Tiles/Get_Tilemap_Variable.htm | 76 - .../Tiles/Set_Tile_Data_At_Pixel.htm | 74 - .../Tiles/Set_Tile_Data_In_Cell.htm | 73 - .../Tiles/Set_Tile_Data_Transform.htm | 66 - .../Tiles/Set_Tile_Index_At_Pixel.htm | 77 - .../Tiles/Set_Tile_Index_In_Cell.htm | 74 - .../Tiles/Set_Tile_Set.htm | 62 - .../Tiles/Tile_Actions.htm | 112 - .../Timelines/Set_Instance_Timeline.htm | 68 - .../Timelines/Set_Timeline_Moment.htm | 63 - .../Timelines/Set_Timeline_Speed.htm | 65 - .../Timelines/Set_Timeline_State.htm | 83 - .../Timelines/Timeline_Actions.htm | 70 - .../GML_Overview/Accessors.htm | 200 -- ...ddressing_Variables_In_Other_Instances.htm | 96 - .../GML_Overview/Arrays.htm | 243 --- .../GML_Overview/Basic_Code_Structure.htm | 64 - .../GML_Overview/Commenting_Code.htm | 71 - .../GML_Overview/Data_Types.htm | 208 -- .../GML_Overview/Evaluation_Order.htm | 49 - .../Expressions_And_Operators.htm | 208 -- .../Functions/Static_Variables.htm | 101 - .../GML_Overview/GML_Overview.htm | 78 - .../GML_Overview/Instance_Keywords.htm | 240 -- .../GML_Overview/Language_Features.htm | 55 - .../If_Else_and_Conditional_Operators.htm | 129 -- .../Language_Features/begin_end.htm | 47 - .../GML_Overview/Language_Features/break.htm | 129 -- .../Language_Features/continue.htm | 115 - .../GML_Overview/Language_Features/delete.htm | 50 - .../Language_Features/do___until.htm | 89 - .../GML_Overview/Language_Features/exit.htm | 57 - .../GML_Overview/Language_Features/for.htm | 89 - .../GML_Overview/Language_Features/new.htm | 51 - .../GML_Overview/Language_Features/repeat.htm | 87 - .../GML_Overview/Language_Features/return.htm | 62 - .../GML_Overview/Language_Features/switch.htm | 109 - .../GML_Overview/Language_Features/throw.htm | 44 - .../Language_Features/try_catch_finally.htm | 122 -- .../GML_Overview/Language_Features/while.htm | 99 - .../GML_Overview/Language_Features/with.htm | 125 -- .../GML_Overview/Method_Variables.htm | 109 - .../GML_Overview/Runtime_Functions.htm | 67 - .../GML_Overview/Script_Functions.htm | 226 -- .../Script_Functions_vs_Methods.htm | 103 - .../Struct_Forbidden_Variables.htm | 169 -- .../GML_Overview/Structs.htm | 256 --- .../Builtin_Global_Variables/argument.htm | 68 - .../argument_count.htm | 63 - .../Builtin_Global_Variables/async_load.htm | 56 - .../Builtin_Global_Variables/health.htm | 52 - .../Builtin_Global_Variables/lives.htm | 51 - .../Builtin_Global_Variables/score.htm | 63 - .../GML_Overview/Variables/Constants.htm | 181 -- .../Variables/Global_Variables.htm | 77 - .../Variables/Instance_Variables.htm | 53 - .../Variables/Local_Variables.htm | 82 - .../Variables_And_Variable_Scope.htm | 94 - .../Animation_Curves/Animation_Curves.htm | 50 - .../animcurve_channel_evaluate.htm | 71 - .../animcurve_channel_new.htm | 136 -- .../Animation_Curves/animcurve_create.htm | 70 - .../Animation_Curves/animcurve_destroy.htm | 62 - .../Animation_Curves/animcurve_exists.htm | 66 - .../Animation_Curves/animcurve_get.htm | 99 - .../animcurve_get_channel.htm | 130 -- .../animcurve_get_channel_index.htm | 74 - .../Animation_Curves/animcurve_point_new.htm | 95 - .../Asset_Management/Asset_Management.htm | 59 - .../Assets_And_Tags/Assets_And_Tags.htm | 55 - .../Assets_And_Tags/asset_add_tags.htm | 145 -- .../Assets_And_Tags/asset_clear_tags.htm | 139 -- .../Assets_And_Tags/asset_get_index.htm | 66 - .../Assets_And_Tags/asset_get_tags.htm | 136 -- .../Assets_And_Tags/asset_get_type.htm | 145 -- .../Assets_And_Tags/asset_has_any_tag.htm | 152 -- .../Assets_And_Tags/asset_has_tags.htm | 152 -- .../Assets_And_Tags/asset_remove_tags.htm | 146 -- .../Assets_And_Tags/tag_get_asset_ids.htm | 140 -- .../Assets_And_Tags/tag_get_assets.htm | 71 - .../Asset_Management/Audio/Audio.htm | 98 - .../Audio/Audio_Buffers/Audio_Buffers.htm | 64 - .../audio_create_buffer_sound.htm | 140 -- .../Audio_Buffers/audio_create_play_queue.htm | 104 - .../Audio_Buffers/audio_free_buffer_sound.htm | 62 - .../Audio_Buffers/audio_free_play_queue.htm | 72 - .../audio_get_recorder_count.htm | 53 - .../Audio_Buffers/audio_get_recorder_info.htm | 76 - .../Audio/Audio_Buffers/audio_queue_sound.htm | 81 - .../Audio_Buffers/audio_start_recording.htm | 70 - .../Audio_Buffers/audio_stop_recording.htm | 64 - .../Audio/Audio_Emitters/Audio_Emitters.htm | 120 - .../Audio_Emitters/audio_emitter_create.htm | 56 - .../Audio_Emitters/audio_emitter_exists.htm | 71 - .../Audio_Emitters/audio_emitter_falloff.htm | 81 - .../Audio_Emitters/audio_emitter_free.htm | 66 - .../Audio_Emitters/audio_emitter_gain.htm | 86 - .../Audio_Emitters/audio_emitter_get_gain.htm | 66 - .../audio_emitter_get_listener_mask.htm | 67 - .../audio_emitter_get_pitch.htm | 66 - .../Audio_Emitters/audio_emitter_get_vx.htm | 66 - .../Audio_Emitters/audio_emitter_get_vy.htm | 66 - .../Audio_Emitters/audio_emitter_get_vz.htm | 66 - .../Audio_Emitters/audio_emitter_get_x.htm | 66 - .../Audio_Emitters/audio_emitter_get_y.htm | 66 - .../Audio_Emitters/audio_emitter_get_z.htm | 68 - .../Audio_Emitters/audio_emitter_pitch.htm | 75 - .../Audio_Emitters/audio_emitter_position.htm | 80 - .../audio_emitter_set_listener_mask.htm | 68 - .../Audio_Emitters/audio_emitter_velocity.htm | 79 - .../Audio_Emitters/audio_play_sound_on.htm | 106 - .../Audio/Audio_Groups/Audio_Groups.htm | 48 - .../Audio_Groups/audio_group_is_loaded.htm | 66 - .../Audio/Audio_Groups/audio_group_load.htm | 65 - .../audio_group_load_progress.htm | 67 - .../Audio/Audio_Groups/audio_group_name.htm | 65 - .../Audio_Groups/audio_group_set_gain.htm | 76 - .../Audio_Groups/audio_group_stop_all.htm | 65 - .../Audio/Audio_Groups/audio_group_unload.htm | 65 - .../Audio/Audio_Listeners/Audio_Listeners.htm | 71 - .../audio_get_listener_count.htm | 50 - .../audio_get_listener_info.htm | 79 - .../audio_get_listener_mask.htm | 65 - .../audio_listener_get_data.htm | 90 - .../audio_listener_orientation.htm | 94 - .../audio_listener_position.htm | 78 - .../audio_listener_set_orientation.htm | 98 - .../audio_listener_set_position.htm | 81 - .../audio_listener_set_velocity.htm | 90 - .../audio_listener_velocity.htm | 78 - .../audio_set_listener_mask.htm | 70 - .../Audio_Synchronisation.htm | 52 - .../audio_create_sync_group.htm | 72 - .../audio_destroy_sync_group.htm | 63 - .../audio_pause_sync_group.htm | 74 - .../audio_play_in_sync_group.htm | 73 - .../audio_resume_sync_group.htm | 74 - .../audio_start_sync_group.htm | 71 - .../audio_stop_sync_group.htm | 66 - .../audio_sync_group_debug.htm | 93 - .../audio_sync_group_get_track_pos.htm | 77 - .../audio_sync_group_is_playing.htm | 67 - .../Audio/audio_channel_num.htm | 82 - .../Audio/audio_create_stream.htm | 65 - .../Asset_Management/Audio/audio_debug.htm | 80 - .../Audio/audio_destroy_stream.htm | 63 - .../Asset_Management/Audio/audio_exists.htm | 66 - .../Audio/audio_falloff_set_model.htm | 150 -- .../Audio/audio_get_master_gain.htm | 73 - .../Asset_Management/Audio/audio_get_name.htm | 63 - .../Asset_Management/Audio/audio_get_type.htm | 63 - .../Audio/audio_is_paused.htm | 66 - .../Audio/audio_is_playing.htm | 66 - .../Audio/audio_master_gain.htm | 71 - .../Audio/audio_pause_all.htm | 60 - .../Audio/audio_pause_sound.htm | 73 - .../Audio/audio_play_sound.htm | 103 - .../Audio/audio_play_sound_at.htm | 133 -- .../Audio/audio_resume_all.htm | 60 - .../Audio/audio_resume_sound.htm | 73 - .../Audio/audio_set_master_gain.htm | 73 - .../Audio/audio_sound_gain.htm | 79 - .../Audio/audio_sound_get_gain.htm | 66 - .../Audio/audio_sound_get_listener_mask.htm | 67 - .../Audio/audio_sound_get_pitch.htm | 66 - .../Audio/audio_sound_get_track_position.htm | 66 - .../Audio/audio_sound_is_playable.htm | 66 - .../Audio/audio_sound_length.htm | 66 - .../Audio/audio_sound_pitch.htm | 77 - .../Audio/audio_sound_set_listener_mask.htm | 69 - .../Audio/audio_sound_set_track_position.htm | 74 - .../Asset_Management/Audio/audio_stop_all.htm | 52 - .../Audio/audio_stop_sound.htm | 69 - .../Audio/audio_system_is_available.htm | 70 - .../Extensions/Extensions.htm | 44 - .../Extensions/extension_exists.htm | 65 - .../Extensions/extension_get_option_count.htm | 73 - .../Extensions/extension_get_option_names.htm | 73 - .../Extensions/extension_get_option_value.htm | 67 - .../Extensions/extension_get_options.htm | 63 - .../Asset_Management/Fonts/Fonts.htm | 68 - .../Asset_Management/Fonts/font_add.htm | 93 - .../Fonts/font_add_enable_aa.htm | 63 - .../Fonts/font_add_get_enable_aa.htm | 51 - .../Fonts/font_add_sprite.htm | 82 - .../Fonts/font_add_sprite_ext.htm | 81 - .../Asset_Management/Fonts/font_delete.htm | 61 - .../Asset_Management/Fonts/font_exists.htm | 64 - .../Asset_Management/Fonts/font_get_bold.htm | 64 - .../Asset_Management/Fonts/font_get_first.htm | 65 - .../Fonts/font_get_fontname.htm | 62 - .../Asset_Management/Fonts/font_get_info.htm | 217 -- .../Fonts/font_get_italic.htm | 64 - .../Asset_Management/Fonts/font_get_last.htm | 63 - .../Asset_Management/Fonts/font_get_name.htm | 63 - .../Asset_Management/Fonts/font_get_size.htm | 61 - .../Fonts/font_get_texture.htm | 65 - .../Asset_Management/Fonts/font_get_uvs.htm | 68 - .../Asset_Management/Fonts/font_replace.htm | 204 -- .../Fonts/font_replace_sprite.htm | 85 - .../Fonts/font_replace_sprite_ext.htm | 85 - .../Fonts/font_set_cache_size.htm | 67 - .../Fonts/font_texture_page_size.htm | 55 - .../Deactivating_Instances.htm | 55 - .../instance_activate_all.htm | 51 - .../instance_activate_layer.htm | 66 - .../instance_activate_object.htm | 65 - .../instance_activate_region.htm | 94 - .../instance_deactivate_all.htm | 75 - .../instance_deactivate_layer.htm | 70 - .../instance_deactivate_object.htm | 66 - .../instance_deactivate_region.htm | 101 - .../Instance_Variables/Instance_Variables.htm | 139 -- .../Instances/Instance_Variables/alarm.htm | 60 - .../Instances/Instance_Variables/depth.htm | 56 - .../Instance_Variables/direction.htm | 50 - .../Instances/Instance_Variables/friction.htm | 55 - .../Instances/Instance_Variables/gravity.htm | 55 - .../Instance_Variables/gravity_direction.htm | 51 - .../Instances/Instance_Variables/hspeed.htm | 52 - .../Instances/Instance_Variables/id.htm | 56 - .../Instances/Instance_Variables/layer.htm | 49 - .../Instance_Variables/persistent.htm | 53 - .../Instances/Instance_Variables/solid.htm | 52 - .../Instances/Instance_Variables/speed.htm | 51 - .../Instances/Instance_Variables/visible.htm | 52 - .../Instances/Instance_Variables/vspeed.htm | 52 - .../Instances/Instance_Variables/x.htm | 51 - .../Instance_Variables/xprevious.htm | 51 - .../Instances/Instance_Variables/xstart.htm | 53 - .../Instances/Instance_Variables/y.htm | 51 - .../Instance_Variables/yprevious.htm | 51 - .../Instances/Instance_Variables/ystart.htm | 53 - .../Asset_Management/Instances/Instances.htm | 77 - .../Asset_Management/Instances/alarm_get.htm | 66 - .../Asset_Management/Instances/alarm_set.htm | 70 - .../Instances/instance_change.htm | 74 - .../Instances/instance_copy.htm | 68 - .../Instances/instance_count.htm | 55 - .../Instances/instance_create_depth.htm | 108 - .../Instances/instance_create_layer.htm | 107 - .../Instances/instance_destroy.htm | 80 - .../Instances/instance_exists.htm | 68 - .../Instances/instance_find.htm | 76 - .../Instances/instance_furthest.htm | 74 - .../Instances/instance_id.htm | 51 - .../Instances/instance_id_get.htm | 70 - .../Instances/instance_nearest.htm | 77 - .../Instances/instance_number.htm | 64 - .../Instances/instance_place.htm | 80 - .../Instances/instance_place_list.htm | 97 - .../Instances/instance_position.htm | 82 - .../Instances/instance_position_list.htm | 94 - .../Generating_Object_Events.htm | 55 - .../Objects/Object_Events/event_action.htm | 48 - .../Objects/Object_Events/event_inherited.htm | 54 - .../Objects/Object_Events/event_number.htm | 53 - .../Objects/Object_Events/event_object.htm | 48 - .../Objects/Object_Events/event_perform.htm | 537 ----- .../Object_Events/event_perform_async.htm | 157 -- .../Object_Events/event_perform_object.htm | 74 - .../Objects/Object_Events/event_type.htm | 76 - .../Objects/Object_Events/event_user.htm | 62 - .../Asset_Management/Objects/Objects.htm | 75 - .../Objects/object_exists.htm | 69 - .../Objects/object_get_mask.htm | 64 - .../Objects/object_get_name.htm | 62 - .../Objects/object_get_parent.htm | 61 - .../Objects/object_get_persistent.htm | 64 - .../Objects/object_get_physics.htm | 64 - .../Objects/object_get_solid.htm | 64 - .../Objects/object_get_sprite.htm | 65 - .../Objects/object_get_visible.htm | 64 - .../Asset_Management/Objects/object_index.htm | 48 - .../Objects/object_is_ancestor.htm | 71 - .../Objects/object_set_mask.htm | 71 - .../Objects/object_set_persistent.htm | 73 - .../Objects/object_set_solid.htm | 71 - .../Objects/object_set_sprite.htm | 74 - .../Objects/object_set_visible.htm | 71 - .../Path_Manipulation/Path_Manipulation.htm | 63 - .../Paths/Path_Manipulation/path_add.htm | 48 - .../Path_Manipulation/path_add_point.htm | 82 - .../Paths/Path_Manipulation/path_append.htm | 66 - .../Paths/Path_Manipulation/path_assign.htm | 68 - .../Path_Manipulation/path_change_point.htm | 87 - .../Path_Manipulation/path_clear_points.htm | 64 - .../Paths/Path_Manipulation/path_delete.htm | 67 - .../Path_Manipulation/path_delete_point.htm | 85 - .../Path_Manipulation/path_duplicate.htm | 60 - .../Paths/Path_Manipulation/path_exists.htm | 67 - .../Paths/Path_Manipulation/path_flip.htm | 61 - .../Path_Manipulation/path_insert_point.htm | 82 - .../Paths/Path_Manipulation/path_mirror.htm | 63 - .../Paths/Path_Manipulation/path_rescale.htm | 70 - .../Paths/Path_Manipulation/path_reverse.htm | 64 - .../Paths/Path_Manipulation/path_rotate.htm | 69 - .../Path_Manipulation/path_set_closed.htm | 68 - .../Paths/Path_Manipulation/path_set_kind.htm | 69 - .../Path_Manipulation/path_set_precision.htm | 67 - .../Paths/Path_Manipulation/path_shift.htm | 72 - .../Paths/Path_Variables/Path_Variables.htm | 50 - .../Paths/Path_Variables/path_endaction.htm | 86 - .../Paths/Path_Variables/path_index.htm | 51 - .../Paths/Path_Variables/path_orientation.htm | 51 - .../Paths/Path_Variables/path_position.htm | 49 - .../Path_Variables/path_positionprevious.htm | 54 - .../Paths/Path_Variables/path_scale.htm | 50 - .../Paths/Path_Variables/path_speed.htm | 50 - .../Asset_Management/Paths/Paths.htm | 70 - .../Asset_Management/Paths/path_end.htm | 53 - .../Paths/path_get_closed.htm | 63 - .../Asset_Management/Paths/path_get_kind.htm | 63 - .../Paths/path_get_length.htm | 63 - .../Asset_Management/Paths/path_get_name.htm | 65 - .../Paths/path_get_number.htm | 65 - .../Paths/path_get_point_speed.htm | 73 - .../Paths/path_get_point_x.htm | 76 - .../Paths/path_get_point_y.htm | 75 - .../Paths/path_get_precision.htm | 68 - .../Asset_Management/Paths/path_get_speed.htm | 68 - .../Asset_Management/Paths/path_get_x.htm | 68 - .../Asset_Management/Paths/path_get_y.htm | 68 - .../Asset_Management/Paths/path_start.htm | 83 - .../Background_Layers/Background_Layers.htm | 75 - .../layer_background_alpha.htm | 68 - .../layer_background_blend.htm | 68 - .../layer_background_create.htm | 69 - .../layer_background_destroy.htm | 68 - .../layer_background_exists.htm | 73 - .../layer_background_get_alpha.htm | 66 - .../layer_background_get_blend.htm | 66 - .../layer_background_get_htiled.htm | 66 - .../layer_background_get_id.htm | 65 - .../layer_background_get_index.htm | 66 - .../layer_background_get_speed.htm | 66 - .../layer_background_get_sprite.htm | 66 - .../layer_background_get_stretch.htm | 66 - .../layer_background_get_visible.htm | 66 - .../layer_background_get_vtiled.htm | 66 - .../layer_background_get_xscale.htm | 66 - .../layer_background_get_yscale.htm | 66 - .../layer_background_htiled.htm | 73 - .../layer_background_index.htm | 69 - .../layer_background_speed.htm | 70 - .../layer_background_sprite.htm | 76 - .../layer_background_stretch.htm | 79 - .../layer_background_visible.htm | 79 - .../layer_background_vtiled.htm | 73 - .../layer_background_xscale.htm | 66 - .../layer_background_yscale.htm | 69 - .../Filter_Effect_Functions.htm | 131 -- .../Rooms/Filter_Effect_Layers/fx_create.htm | 76 - .../Filter_Effect_Layers/fx_get_name.htm | 72 - .../Filter_Effect_Layers/fx_get_parameter.htm | 70 - .../fx_get_parameter_names.htm | 66 - .../fx_get_parameters.htm | 74 - .../Filter_Effect_Layers/fx_set_parameter.htm | 77 - .../fx_set_parameters.htm | 75 - .../Filter_Effect_Layers/layer_clear_fx.htm | 80 - .../Filter_Effect_Layers/layer_enable_fx.htm | 76 - .../layer_fx_is_enabled.htm | 71 - .../Filter_Effect_Layers/layer_get_fx.htm | 75 - .../Filter_Effect_Layers/layer_set_fx.htm | 71 - .../General_Layer_Functions.htm | 92 - .../layer_add_instance.htm | 72 - .../General_Layer_Functions/layer_create.htm | 71 - .../General_Layer_Functions/layer_depth.htm | 73 - .../General_Layer_Functions/layer_destroy.htm | 65 - .../layer_destroy_instances.htm | 66 - .../layer_element_move.htm | 75 - .../General_Layer_Functions/layer_exists.htm | 67 - .../layer_force_draw_depth.htm | 70 - .../General_Layer_Functions/layer_get_all.htm | 53 - .../layer_get_all_elements.htm | 70 - .../layer_get_depth.htm | 69 - .../layer_get_element_layer.htm | 63 - .../layer_get_element_type.htm | 121 -- .../layer_get_forced_depth.htm | 52 - .../layer_get_hspeed.htm | 68 - .../General_Layer_Functions/layer_get_id.htm | 62 - .../layer_get_id_at_depth.htm | 70 - .../layer_get_name.htm | 70 - .../layer_get_script_begin.htm | 66 - .../layer_get_script_end.htm | 66 - .../layer_get_shader.htm | 66 - .../layer_get_target_room.htm | 52 - .../layer_get_visible.htm | 71 - .../layer_get_vspeed.htm | 68 - .../General_Layer_Functions/layer_get_x.htm | 68 - .../General_Layer_Functions/layer_get_y.htm | 68 - .../layer_has_instance.htm | 71 - .../General_Layer_Functions/layer_hspeed.htm | 72 - .../layer_instance_get_instance.htm | 72 - .../layer_is_draw_depth_forced.htm | 52 - .../layer_reset_target_room.htm | 54 - .../layer_script_begin.htm | 98 - .../layer_script_end.htm | 98 - .../layer_set_target_room.htm | 69 - .../layer_set_visible.htm | 76 - .../General_Layer_Functions/layer_shader.htm | 69 - .../General_Layer_Functions/layer_vspeed.htm | 72 - .../Rooms/General_Layer_Functions/layer_x.htm | 72 - .../Rooms/General_Layer_Functions/layer_y.htm | 72 - .../Asset_Management/Rooms/Rooms.htm | 94 - .../Rooms/Sequence_Layers/Sequence_Layers.htm | 72 - .../Sequence_Layers/layer_sequence_angle.htm | 72 - .../Sequence_Layers/layer_sequence_create.htm | 78 - .../layer_sequence_destroy.htm | 67 - .../Sequence_Layers/layer_sequence_exists.htm | 72 - .../layer_sequence_get_angle.htm | 66 - .../layer_sequence_get_headdir.htm | 86 - .../layer_sequence_get_headpos.htm | 64 - .../layer_sequence_get_instance.htm | 65 - .../layer_sequence_get_length.htm | 61 - .../layer_sequence_get_sequence.htm | 63 - .../layer_sequence_get_speedscale.htm | 64 - .../Sequence_Layers/layer_sequence_get_x.htm | 66 - .../layer_sequence_get_xscale.htm | 66 - .../Sequence_Layers/layer_sequence_get_y.htm | 66 - .../layer_sequence_get_yscale.htm | 66 - .../layer_sequence_headdir.htm | 89 - .../layer_sequence_headpos.htm | 80 - .../layer_sequence_is_finished.htm | 65 - .../layer_sequence_is_paused.htm | 64 - .../Sequence_Layers/layer_sequence_pause.htm | 66 - .../Sequence_Layers/layer_sequence_play.htm | 81 - .../layer_sequence_speedscale.htm | 68 - .../Sequence_Layers/layer_sequence_x.htm | 68 - .../Sequence_Layers/layer_sequence_xscale.htm | 71 - .../Sequence_Layers/layer_sequence_y.htm | 68 - .../Sequence_Layers/layer_sequence_yscale.htm | 71 - .../Rooms/Sprite_Layers/Sprite_Layers.htm | 64 - .../Sprite_Layers/layer_sprite_alpha.htm | 66 - .../Sprite_Layers/layer_sprite_angle.htm | 71 - .../Sprite_Layers/layer_sprite_blend.htm | 68 - .../Sprite_Layers/layer_sprite_change.htm | 71 - .../Sprite_Layers/layer_sprite_create.htm | 84 - .../Sprite_Layers/layer_sprite_destroy.htm | 66 - .../Sprite_Layers/layer_sprite_exists.htm | 75 - .../Sprite_Layers/layer_sprite_get_alpha.htm | 66 - .../Sprite_Layers/layer_sprite_get_angle.htm | 66 - .../Sprite_Layers/layer_sprite_get_blend.htm | 66 - .../Sprite_Layers/layer_sprite_get_id.htm | 71 - .../Sprite_Layers/layer_sprite_get_index.htm | 66 - .../Sprite_Layers/layer_sprite_get_speed.htm | 66 - .../Sprite_Layers/layer_sprite_get_sprite.htm | 66 - .../Sprite_Layers/layer_sprite_get_x.htm | 66 - .../Sprite_Layers/layer_sprite_get_xscale.htm | 66 - .../Sprite_Layers/layer_sprite_get_y.htm | 66 - .../Sprite_Layers/layer_sprite_get_yscale.htm | 66 - .../Sprite_Layers/layer_sprite_index.htm | 68 - .../Sprite_Layers/layer_sprite_speed.htm | 68 - .../Rooms/Sprite_Layers/layer_sprite_x.htm | 64 - .../Sprite_Layers/layer_sprite_xscale.htm | 69 - .../Rooms/Sprite_Layers/layer_sprite_y.htm | 64 - .../Sprite_Layers/layer_sprite_yscale.htm | 69 - .../Rooms/Tile_Map_Layers/Tile_Map_Layers.htm | 91 - .../Tile_Map_Layers/layer_tilemap_create.htm | 88 - .../Tile_Map_Layers/layer_tilemap_destroy.htm | 67 - .../Tile_Map_Layers/layer_tilemap_exists.htm | 73 - .../Tile_Map_Layers/layer_tilemap_get_id.htm | 65 - .../Rooms/Tile_Map_Layers/tile_get_empty.htm | 76 - .../Rooms/Tile_Map_Layers/tile_get_flip.htm | 70 - .../Rooms/Tile_Map_Layers/tile_get_index.htm | 71 - .../Rooms/Tile_Map_Layers/tile_get_mirror.htm | 70 - .../Rooms/Tile_Map_Layers/tile_get_rotate.htm | 70 - .../Rooms/Tile_Map_Layers/tile_set_empty.htm | 75 - .../Rooms/Tile_Map_Layers/tile_set_flip.htm | 65 - .../Rooms/Tile_Map_Layers/tile_set_index.htm | 74 - .../Rooms/Tile_Map_Layers/tile_set_mirror.htm | 71 - .../Rooms/Tile_Map_Layers/tile_set_rotate.htm | 74 - .../Rooms/Tile_Map_Layers/tilemap_clear.htm | 69 - .../Rooms/Tile_Map_Layers/tilemap_get.htm | 78 - .../Tile_Map_Layers/tilemap_get_at_pixel.htm | 78 - .../tilemap_get_cell_x_at_pixel.htm | 71 - .../tilemap_get_cell_y_at_pixel.htm | 71 - .../Tile_Map_Layers/tilemap_get_frame.htm | 72 - .../tilemap_get_global_mask.htm | 54 - .../Tile_Map_Layers/tilemap_get_height.htm | 62 - .../Tile_Map_Layers/tilemap_get_mask.htm | 70 - .../tilemap_get_tile_height.htm | 61 - .../tilemap_get_tile_width.htm | 61 - .../Tile_Map_Layers/tilemap_get_tileset.htm | 68 - .../Tile_Map_Layers/tilemap_get_width.htm | 62 - .../Rooms/Tile_Map_Layers/tilemap_get_x.htm | 61 - .../Rooms/Tile_Map_Layers/tilemap_get_y.htm | 61 - .../Rooms/Tile_Map_Layers/tilemap_set.htm | 81 - .../Tile_Map_Layers/tilemap_set_at_pixel.htm | 81 - .../tilemap_set_global_mask.htm | 93 - .../Tile_Map_Layers/tilemap_set_height.htm | 72 - .../Tile_Map_Layers/tilemap_set_mask.htm | 107 - .../Tile_Map_Layers/tilemap_set_width.htm | 72 - .../Rooms/Tile_Map_Layers/tilemap_tileset.htm | 72 - .../Rooms/Tile_Map_Layers/tilemap_x.htm | 69 - .../Rooms/Tile_Map_Layers/tilemap_y.htm | 69 - .../Asset_Management/Rooms/room.htm | 51 - .../Asset_Management/Rooms/room_add.htm | 52 - .../Asset_Management/Rooms/room_assign.htm | 69 - .../Asset_Management/Rooms/room_duplicate.htm | 61 - .../Asset_Management/Rooms/room_exists.htm | 64 - .../Asset_Management/Rooms/room_first.htm | 51 - .../Rooms/room_get_camera.htm | 72 - .../Asset_Management/Rooms/room_get_name.htm | 64 - .../Rooms/room_get_viewport.htm | 81 - .../Asset_Management/Rooms/room_goto.htm | 66 - .../Asset_Management/Rooms/room_goto_next.htm | 52 - .../Rooms/room_goto_previous.htm | 52 - .../Asset_Management/Rooms/room_height.htm | 51 - .../Rooms/room_instance_add.htm | 75 - .../Rooms/room_instance_clear.htm | 63 - .../Asset_Management/Rooms/room_last.htm | 51 - .../Asset_Management/Rooms/room_next.htm | 62 - .../Rooms/room_persistent.htm | 52 - .../Asset_Management/Rooms/room_previous.htm | 63 - .../Asset_Management/Rooms/room_restart.htm | 49 - .../Rooms/room_set_camera.htm | 73 - .../Rooms/room_set_height.htm | 70 - .../Rooms/room_set_persistent.htm | 71 - .../Rooms/room_set_view_enabled.htm | 68 - .../Rooms/room_set_viewport.htm | 95 - .../Asset_Management/Rooms/room_set_width.htm | 70 - .../Asset_Management/Rooms/room_speed.htm | 50 - .../Asset_Management/Rooms/room_width.htm | 51 - .../Asset_Management/Scripts/Scripts.htm | 44 - .../Scripts/script_execute.htm | 73 - .../Scripts/script_execute_ext.htm | 78 - .../Scripts/script_exists.htm | 70 - .../Scripts/script_get_name.htm | 63 - .../Sequence_Events_Moments_Broadcast.htm | 149 -- .../The_Keyframe_Data_Struct.htm | 250 --- .../Sequence_Structs/The_Keyframe_Struct.htm | 75 - .../The_Sequence_Instance_Struct.htm | 291 --- .../The_Sequence_Object_Struct.htm | 165 -- .../Sequence_Structs/The_Track_Struct.htm | 233 -- .../Asset_Management/Sequences/Sequences.htm | 163 -- .../Sequences/in_sequence.htm | 54 - .../Sequences/sequence_create.htm | 51 - .../Sequences/sequence_destroy.htm | 65 - .../Sequences/sequence_exists.htm | 66 - .../Sequences/sequence_get.htm | 64 - .../Sequences/sequence_get_objects.htm | 65 - .../Sequences/sequence_instance.htm | 52 - .../sequence_instance_override_object.htm | 75 - .../Sequences/sequence_keyframe_new.htm | 96 - .../Sequences/sequence_keyframedata_new.htm | 96 - .../Sequences/sequence_track_new.htm | 96 - .../Shaders/Shader_Constants.htm | 162 -- .../Asset_Management/Shaders/Shaders.htm | 161 -- .../Shaders/shader_current.htm | 52 - .../Shaders/shader_enable_corner_id.htm | 61 - .../Shaders/shader_get_name.htm | 61 - .../Shaders/shader_get_sampler_index.htm | 73 - .../Shaders/shader_get_uniform.htm | 69 - .../Shaders/shader_is_compiled.htm | 66 - .../Asset_Management/Shaders/shader_reset.htm | 50 - .../Asset_Management/Shaders/shader_set.htm | 61 - .../Shaders/shader_set_uniform_f.htm | 85 - .../Shaders/shader_set_uniform_f_array.htm | 75 - .../Shaders/shader_set_uniform_i.htm | 72 - .../Shaders/shader_set_uniform_i_array.htm | 76 - .../Shaders/shader_set_uniform_matrix.htm | 67 - .../shader_set_uniform_matrix_array.htm | 72 - .../Shaders/shaders_are_supported.htm | 56 - .../Sprites/Nine_Slice_Functions.htm | 47 - .../Sprites/Nine_Slice_Struct.htm | 166 -- .../Animation/Animation.htm | 54 - .../Animation/skeleton_animation_clear.htm | 75 - .../Animation/skeleton_animation_get.htm | 55 - .../skeleton_animation_get_duration.htm | 66 - .../skeleton_animation_get_event_frames.htm | 85 - .../Animation/skeleton_animation_get_ext.htm | 67 - .../skeleton_animation_get_frame.htm | 70 - .../skeleton_animation_get_frames.htm | 65 - .../skeleton_animation_get_position.htm | 67 - .../skeleton_animation_is_finished.htm | 68 - .../skeleton_animation_is_looping.htm | 67 - .../Animation/skeleton_animation_list.htm | 76 - .../Animation/skeleton_animation_mix.htm | 76 - .../Animation/skeleton_animation_set.htm | 76 - .../Animation/skeleton_animation_set_ext.htm | 81 - .../skeleton_animation_set_frame.htm | 71 - .../skeleton_animation_set_position.htm | 68 - .../Attachments/Attachments.htm | 46 - .../skeleton_attachment_create.htm | 101 - .../skeleton_attachment_create_colour.htm | 113 - .../Attachments/skeleton_attachment_get.htm | 66 - .../Attachments/skeleton_attachment_set.htm | 71 - .../Skeletal_Animation/Bones/Bones.htm | 45 - .../Bones/skeleton_bone_data_get.htm | 78 - .../Bones/skeleton_bone_data_set.htm | 79 - .../Bones/skeleton_bone_list.htm | 68 - .../Bones/skeleton_bone_state_get.htm | 95 - .../Bones/skeleton_bone_state_set.htm | 96 - .../Drawing_And_Miscellaneous.htm | 56 - .../draw_enable_skeleton_blendmodes.htm | 63 - .../draw_get_enable_skeleton_blendmodes.htm | 52 - .../draw_skeleton.htm | 115 - .../draw_skeleton_collision.htm | 104 - .../draw_skeleton_instance.htm | 114 - .../draw_skeleton_time.htm | 111 - .../skeleton_collision_draw_set.htm | 67 - .../skeleton_get_bounds.htm | 87 - .../skeleton_get_minmax.htm | 63 - .../skeleton_get_num_bounds.htm | 65 - .../Skeletal_Animation/Skeletal_Animation.htm | 92 - .../Skeletal_Animation/Skins/Skins.htm | 44 - .../Skins/skeleton_skin_get.htm | 52 - .../Skins/skeleton_skin_list.htm | 71 - .../Skins/skeleton_skin_set.htm | 63 - .../Skeletal_Animation/Slots/Slots.htm | 49 - .../Slots/skeleton_find_slot.htm | 74 - .../Slots/skeleton_slot_alpha_get.htm | 74 - .../Slots/skeleton_slot_colour_get.htm | 75 - .../Slots/skeleton_slot_colour_set.htm | 84 - .../Slots/skeleton_slot_data.htm | 95 - .../Slots/skeleton_slot_data_instance.htm | 89 - .../Slots/skeleton_slot_list.htm | 68 - .../Sprite_Information/Sprite_Information.htm | 59 - .../sprite_get_bbox_bottom.htm | 62 - .../sprite_get_bbox_left.htm | 62 - .../sprite_get_bbox_mode.htm | 87 - .../sprite_get_bbox_right.htm | 62 - .../sprite_get_bbox_top.htm | 63 - .../Sprite_Information/sprite_get_height.htm | 64 - .../Sprite_Information/sprite_get_info.htm | 543 ----- .../Sprite_Information/sprite_get_name.htm | 63 - .../sprite_get_nineslice.htm | 69 - .../Sprite_Information/sprite_get_number.htm | 62 - .../Sprite_Information/sprite_get_speed.htm | 71 - .../sprite_get_speed_type.htm | 96 - .../Sprite_Information/sprite_get_texture.htm | 76 - .../Sprite_Information/sprite_get_tpe.htm | 69 - .../Sprite_Information/sprite_get_uvs.htm | 77 - .../Sprite_Information/sprite_get_width.htm | 64 - .../Sprite_Information/sprite_get_xoffset.htm | 65 - .../Sprite_Information/sprite_get_yoffset.htm | 65 - .../Sprite_Instance_Variables.htm | 58 - .../Sprite_Instance_Variables/bbox_bottom.htm | 51 - .../Sprite_Instance_Variables/bbox_left.htm | 51 - .../Sprite_Instance_Variables/bbox_right.htm | 51 - .../Sprite_Instance_Variables/bbox_top.htm | 51 - .../Sprite_Instance_Variables/image_alpha.htm | 48 - .../Sprite_Instance_Variables/image_angle.htm | 48 - .../Sprite_Instance_Variables/image_blend.htm | 50 - .../Sprite_Instance_Variables/image_index.htm | 56 - .../image_number.htm | 51 - .../Sprite_Instance_Variables/image_speed.htm | 51 - .../image_xscale.htm | 58 - .../image_yscale.htm | 59 - .../Sprite_Instance_Variables/mask_index.htm | 48 - .../sprite_height.htm | 51 - .../sprite_index.htm | 58 - .../sprite_width.htm | 51 - .../sprite_xoffset.htm | 52 - .../sprite_yoffset.htm | 52 - .../Sprite_Manipulation.htm | 65 - .../Sprite_Manipulation/sprite_add.htm | 98 - .../sprite_add_from_surface.htm | 103 - .../Sprite_Manipulation/sprite_assign.htm | 74 - .../sprite_collision_mask.htm | 150 -- .../sprite_create_from_surface.htm | 116 - .../Sprite_Manipulation/sprite_delete.htm | 63 - .../Sprite_Manipulation/sprite_duplicate.htm | 61 - .../Sprite_Manipulation/sprite_exists.htm | 68 - .../Sprite_Manipulation/sprite_flush.htm | 62 - .../sprite_flush_multi.htm | 63 - .../Sprite_Manipulation/sprite_merge.htm | 73 - .../sprite_nineslice_create.htm | 56 - .../Sprite_Manipulation/sprite_prefetch.htm | 63 - .../sprite_prefetch_multi.htm | 67 - .../Sprite_Manipulation/sprite_replace.htm | 100 - .../Sprite_Manipulation/sprite_save.htm | 84 - .../Sprite_Manipulation/sprite_save_strip.htm | 78 - .../sprite_set_alpha_from_sprite.htm | 94 - .../Sprite_Manipulation/sprite_set_bbox.htm | 84 - .../sprite_set_bbox_mode.htm | 101 - .../sprite_set_cache_size.htm | 65 - .../sprite_set_cache_size_ext.htm | 72 - .../sprite_set_nineslice.htm | 76 - .../Sprite_Manipulation/sprite_set_offset.htm | 70 - .../Sprite_Manipulation/sprite_set_speed.htm | 98 - .../Asset_Management/Sprites/Sprites.htm | 46 - .../Asset_Management/Tilsets/Tile_Sets.htm | 44 - .../Tilsets/tileset_get_name.htm | 66 - .../Tilsets/tileset_get_texture.htm | 71 - .../Tilsets/tileset_get_uvs.htm | 72 - .../Asset_Management/Timelines/Timelines.htm | 61 - .../Timelines/timeline_add.htm | 48 - .../Timelines/timeline_clear.htm | 66 - .../Timelines/timeline_delete.htm | 63 - .../Timelines/timeline_exists.htm | 64 - .../Timelines/timeline_get_name.htm | 63 - .../Timelines/timeline_index.htm | 51 - .../Timelines/timeline_loop.htm | 52 - .../Timelines/timeline_max_moment.htm | 64 - .../Timelines/timeline_moment_add_script.htm | 78 - .../Timelines/timeline_moment_clear.htm | 67 - .../Timelines/timeline_position.htm | 52 - .../Timelines/timeline_running.htm | 52 - .../Timelines/timeline_size.htm | 64 - .../Timelines/timeline_speed.htm | 52 - .../Achievements_And_Leaderboards.htm | 69 - .../achievement_available.htm | 48 - .../achievement_get_challenges.htm | 97 - .../achievement_get_pic.htm | 77 - .../achievement_increment.htm | 73 - .../achievement_load_friends.htm | 67 - .../achievement_load_leaderboard.htm | 121 -- .../achievement_load_progress.htm | 70 - .../achievement_login.htm | 69 - .../achievement_login_status.htm | 52 - .../achievement_logout.htm | 48 - .../achievement_post.htm | 72 - .../achievement_post_score.htm | 86 - .../achievement_reset.htm | 49 - .../achievement_send_challenge.htm | 120 - .../achievement_show_achievements.htm | 52 - ...hievement_show_challenge_notifications.htm | 72 - .../achievement_show_leaderboards.htm | 52 - .../Asynchronous_Functions.htm | 62 - .../Cloud_Saving/Cloud_Saving.htm | 45 - .../Cloud_Saving/cloud_file_save.htm | 73 - .../Cloud_Saving/cloud_string_save.htm | 74 - .../Cloud_Saving/cloud_synchronise.htm | 115 - .../Asynchronous_Functions/Dialog/Dialog.htm | 48 - .../Dialog/get_integer_async.htm | 80 - .../Dialog/get_login_async.htm | 79 - .../Dialog/get_string_async.htm | 84 - .../Dialog/shop_leave_rating.htm | 87 - .../Dialog/show_message_async.htm | 75 - .../Dialog/show_question_async.htm | 76 - .../Facebook/Facebook.htm | 77 - .../Asynchronous_Functions/HTTP/HTTP.htm | 59 - .../Asynchronous_Functions/HTTP/http_get.htm | 85 - .../HTTP/http_get_file.htm | 96 - .../HTTP/http_get_request_crossorigin.htm | 53 - .../HTTP/http_post_string.htm | 90 - .../HTTP/http_request.htm | 100 - .../HTTP/http_set_request_crossorigin.htm | 64 - .../Push_Notifications/Push_Notifications.htm | 42 - .../push_cancel_local_notification.htm | 74 - .../push_get_first_local_notification.htm | 79 - .../push_get_next_local_notification.htm | 79 - .../push_local_notification.htm | 106 - .../GML_Reference/Buffers/Buffers.htm | 106 - .../Buffers/buffer_async_group_begin.htm | 76 - .../Buffers/buffer_async_group_end.htm | 62 - .../Buffers/buffer_async_group_option.htm | 79 - .../Buffers/buffer_base64_decode.htm | 64 - .../Buffers/buffer_base64_decode_ext.htm | 74 - .../Buffers/buffer_base64_encode.htm | 70 - .../GML_Reference/Buffers/buffer_compress.htm | 73 - .../GML_Reference/Buffers/buffer_copy.htm | 78 - .../buffer_copy_from_vertex_buffer.htm | 82 - .../Buffers/buffer_copy_stride.htm | 191 -- .../GML_Reference/Buffers/buffer_crc32.htm | 70 - .../GML_Reference/Buffers/buffer_create.htm | 125 -- .../buffer_create_from_vertex_buffer.htm | 118 - .../buffer_create_from_vertex_buffer_ext.htm | 129 -- .../Buffers/buffer_decompress.htm | 62 - .../GML_Reference/Buffers/buffer_delete.htm | 63 - .../GML_Reference/Buffers/buffer_exists.htm | 64 - .../GML_Reference/Buffers/buffer_fill.htm | 78 - .../Buffers/buffer_get_address.htm | 68 - .../Buffers/buffer_get_alignment.htm | 61 - .../GML_Reference/Buffers/buffer_get_size.htm | 64 - .../Buffers/buffer_get_surface.htm | 78 - .../GML_Reference/Buffers/buffer_get_type.htm | 94 - .../GML_Reference/Buffers/buffer_load.htm | 67 - .../Buffers/buffer_load_async.htm | 87 - .../GML_Reference/Buffers/buffer_load_ext.htm | 70 - .../Buffers/buffer_load_partial.htm | 81 - .../GML_Reference/Buffers/buffer_md5.htm | 72 - .../GML_Reference/Buffers/buffer_peek.htm | 78 - .../GML_Reference/Buffers/buffer_poke.htm | 77 - .../GML_Reference/Buffers/buffer_read.htm | 142 -- .../GML_Reference/Buffers/buffer_resize.htm | 67 - .../GML_Reference/Buffers/buffer_save.htm | 65 - .../Buffers/buffer_save_async.htm | 89 - .../GML_Reference/Buffers/buffer_save_ext.htm | 73 - .../GML_Reference/Buffers/buffer_seek.htm | 111 - .../Buffers/buffer_set_surface.htm | 70 - .../Buffers/buffer_set_used_size.htm | 66 - .../GML_Reference/Buffers/buffer_sha1.htm | 72 - .../GML_Reference/Buffers/buffer_sizeof.htm | 64 - .../GML_Reference/Buffers/buffer_tell.htm | 64 - .../GML_Reference/Buffers/buffer_write.htm | 156 -- .../Cameras_And_Display.htm | 75 - .../Cameras_And_View_Ports.htm | 124 -- .../Cameras_And_Viewports/camera_apply.htm | 63 - .../Cameras_And_Viewports/camera_create.htm | 54 - .../camera_create_view.htm | 110 - .../Cameras_And_Viewports/camera_destroy.htm | 61 - .../camera_get_active.htm | 53 - .../camera_get_begin_script.htm | 65 - .../camera_get_default.htm | 50 - .../camera_get_end_script.htm | 65 - .../camera_get_proj_mat.htm | 61 - .../camera_get_update_script.htm | 65 - .../camera_get_view_angle.htm | 65 - .../camera_get_view_border_x.htm | 66 - .../camera_get_view_border_y.htm | 66 - .../camera_get_view_height.htm | 62 - .../camera_get_view_mat.htm | 61 - .../camera_get_view_speed_x.htm | 66 - .../camera_get_view_speed_y.htm | 66 - .../camera_get_view_target.htm | 65 - .../camera_get_view_width.htm | 62 - .../camera_get_view_x.htm | 62 - .../camera_get_view_y.htm | 62 - .../camera_set_begin_script.htm | 78 - .../camera_set_default.htm | 62 - .../camera_set_end_script.htm | 78 - .../camera_set_proj_mat.htm | 73 - .../camera_set_update_script.htm | 79 - .../camera_set_view_angle.htm | 65 - .../camera_set_view_border.htm | 71 - .../camera_set_view_mat.htm | 69 - .../camera_set_view_pos.htm | 69 - .../camera_set_view_size.htm | 69 - .../camera_set_view_speed.htm | 70 - .../camera_set_view_target.htm | 67 - .../Cameras_And_Viewports/view_camera.htm | 51 - .../Cameras_And_Viewports/view_current.htm | 59 - .../Cameras_And_Viewports/view_enabled.htm | 52 - .../Cameras_And_Viewports/view_get_camera.htm | 64 - .../Cameras_And_Viewports/view_get_hport.htm | 64 - .../view_get_surface_id.htm | 64 - .../view_get_visible.htm | 64 - .../Cameras_And_Viewports/view_get_wport.htm | 64 - .../Cameras_And_Viewports/view_get_xport.htm | 64 - .../Cameras_And_Viewports/view_get_yport.htm | 64 - .../Cameras_And_Viewports/view_hport.htm | 50 - .../Cameras_And_Viewports/view_set_camera.htm | 65 - .../Cameras_And_Viewports/view_set_hport.htm | 67 - .../view_set_surface_id.htm | 74 - .../view_set_visible.htm | 68 - .../Cameras_And_Viewports/view_set_wport.htm | 67 - .../Cameras_And_Viewports/view_set_xport.htm | 67 - .../Cameras_And_Viewports/view_set_yport.htm | 67 - .../Cameras_And_Viewports/view_surface_id.htm | 65 - .../Cameras_And_Viewports/view_visible.htm | 51 - .../Cameras_And_Viewports/view_wport.htm | 50 - .../Cameras_And_Viewports/view_xport.htm | 51 - .../Cameras_And_Viewports/view_yport.htm | 51 - .../The_Game_Window/The_Game_Window.htm | 75 - .../The_Game_Window/window_center.htm | 52 - .../The_Game_Window/window_device.htm | 50 - .../The_Game_Window/window_get_caption.htm | 52 - .../The_Game_Window/window_get_colour.htm | 54 - .../The_Game_Window/window_get_cursor.htm | 142 -- .../The_Game_Window/window_get_fullscreen.htm | 56 - .../The_Game_Window/window_get_height.htm | 49 - .../window_get_visible_rects.htm | 75 - .../The_Game_Window/window_get_width.htm | 49 - .../The_Game_Window/window_get_x.htm | 49 - .../The_Game_Window/window_get_y.htm | 49 - .../The_Game_Window/window_handle.htm | 77 - .../The_Game_Window/window_has_focus.htm | 53 - .../The_Game_Window/window_mouse_get_x.htm | 50 - .../The_Game_Window/window_mouse_get_y.htm | 50 - .../The_Game_Window/window_mouse_set.htm | 66 - .../The_Game_Window/window_set_caption.htm | 63 - .../The_Game_Window/window_set_colour.htm | 65 - .../The_Game_Window/window_set_cursor.htm | 148 -- .../The_Game_Window/window_set_fullscreen.htm | 70 - .../The_Game_Window/window_set_max_height.htm | 66 - .../The_Game_Window/window_set_max_width.htm | 66 - .../The_Game_Window/window_set_min_height.htm | 66 - .../The_Game_Window/window_set_min_width.htm | 66 - .../The_Game_Window/window_set_position.htm | 65 - .../The_Game_Window/window_set_rectangle.htm | 73 - .../The_Game_Window/window_set_size.htm | 69 - .../window_view_mouse_get_x.htm | 75 - .../window_view_mouse_get_y.htm | 75 - .../window_views_mouse_get_x.htm | 50 - .../window_views_mouse_get_y.htm | 50 - .../Cameras_And_Display/display_get_dpi_x.htm | 50 - .../Cameras_And_Display/display_get_dpi_y.htm | 53 - .../display_get_frequency.htm | 67 - .../display_get_gui_height.htm | 49 - .../display_get_gui_width.htm | 48 - .../display_get_height.htm | 49 - .../display_get_orientation.htm | 94 - .../display_get_sleep_margin.htm | 56 - .../display_get_timing_method.htm | 82 - .../Cameras_And_Display/display_get_width.htm | 49 - .../display_mouse_get_x.htm | 51 - .../display_mouse_get_y.htm | 51 - .../Cameras_And_Display/display_mouse_set.htm | 65 - .../Cameras_And_Display/display_reset.htm | 74 - .../display_set_gui_maximise.htm | 88 - .../display_set_gui_size.htm | 70 - .../display_set_sleep_margin.htm | 119 - .../display_set_timing_method.htm | 91 - .../display_set_ui_visibility.htm | 63 - .../Cameras_And_Display/gif_add_surface.htm | 105 - .../Cameras_And_Display/gif_open.htm | 91 - .../Cameras_And_Display/gif_save.htm | 82 - .../Cameras_And_Display/gif_save_buffer.htm | 77 - .../Cameras_And_Display/screen_save.htm | 69 - .../Cameras_And_Display/screen_save_part.htm | 81 - .../Data_Structures/DS_Grids/DS_Grids.htm | 86 - .../Data_Structures/DS_Grids/ds_grid_add.htm | 73 - .../DS_Grids/ds_grid_add_disk.htm | 77 - .../DS_Grids/ds_grid_add_grid_region.htm | 90 - .../DS_Grids/ds_grid_add_region.htm | 81 - .../DS_Grids/ds_grid_clear.htm | 65 - .../Data_Structures/DS_Grids/ds_grid_copy.htm | 69 - .../DS_Grids/ds_grid_create.htm | 66 - .../DS_Grids/ds_grid_destroy.htm | 66 - .../Data_Structures/DS_Grids/ds_grid_get.htm | 71 - .../DS_Grids/ds_grid_get_disk_max.htm | 72 - .../DS_Grids/ds_grid_get_disk_mean.htm | 73 - .../DS_Grids/ds_grid_get_disk_min.htm | 72 - .../DS_Grids/ds_grid_get_disk_sum.htm | 73 - .../DS_Grids/ds_grid_get_max.htm | 76 - .../DS_Grids/ds_grid_get_mean.htm | 77 - .../DS_Grids/ds_grid_get_min.htm | 77 - .../DS_Grids/ds_grid_get_sum.htm | 78 - .../DS_Grids/ds_grid_height.htm | 71 - .../DS_Grids/ds_grid_multiply.htm | 78 - .../DS_Grids/ds_grid_multiply_disk.htm | 83 - .../DS_Grids/ds_grid_multiply_grid_region.htm | 89 - .../DS_Grids/ds_grid_multiply_region.htm | 88 - .../Data_Structures/DS_Grids/ds_grid_read.htm | 76 - .../DS_Grids/ds_grid_resize.htm | 69 - .../Data_Structures/DS_Grids/ds_grid_set.htm | 87 - .../DS_Grids/ds_grid_set_disk.htm | 77 - .../DS_Grids/ds_grid_set_grid_region.htm | 90 - .../DS_Grids/ds_grid_set_region.htm | 81 - .../DS_Grids/ds_grid_shuffle.htm | 63 - .../Data_Structures/DS_Grids/ds_grid_sort.htm | 70 - .../DS_Grids/ds_grid_value_disk_exists.htm | 81 - .../DS_Grids/ds_grid_value_disk_x.htm | 81 - .../DS_Grids/ds_grid_value_disk_y.htm | 81 - .../DS_Grids/ds_grid_value_exists.htm | 85 - .../DS_Grids/ds_grid_value_x.htm | 85 - .../DS_Grids/ds_grid_value_y.htm | 85 - .../DS_Grids/ds_grid_width.htm | 70 - .../DS_Grids/ds_grid_write.htm | 63 - .../Data_Structures/DS_Lists/DS_Lists.htm | 72 - .../Data_Structures/DS_Lists/ds_list_add.htm | 72 - .../DS_Lists/ds_list_clear.htm | 65 - .../Data_Structures/DS_Lists/ds_list_copy.htm | 69 - .../DS_Lists/ds_list_create.htm | 50 - .../DS_Lists/ds_list_delete.htm | 70 - .../DS_Lists/ds_list_destroy.htm | 66 - .../DS_Lists/ds_list_empty.htm | 68 - .../DS_Lists/ds_list_find_index.htm | 68 - .../DS_Lists/ds_list_find_value.htm | 67 - .../DS_Lists/ds_list_insert.htm | 71 - .../DS_Lists/ds_list_is_list.htm | 74 - .../DS_Lists/ds_list_is_map.htm | 74 - .../DS_Lists/ds_list_mark_as_list.htm | 70 - .../DS_Lists/ds_list_mark_as_map.htm | 68 - .../Data_Structures/DS_Lists/ds_list_read.htm | 80 - .../DS_Lists/ds_list_replace.htm | 71 - .../Data_Structures/DS_Lists/ds_list_set.htm | 75 - .../DS_Lists/ds_list_shuffle.htm | 64 - .../Data_Structures/DS_Lists/ds_list_size.htm | 64 - .../Data_Structures/DS_Lists/ds_list_sort.htm | 67 - .../DS_Lists/ds_list_write.htm | 65 - .../Data_Structures/DS_Maps/DS_Maps.htm | 87 - .../Data_Structures/DS_Maps/ds_map_add.htm | 75 - .../DS_Maps/ds_map_add_list.htm | 78 - .../DS_Maps/ds_map_add_map.htm | 78 - .../Data_Structures/DS_Maps/ds_map_clear.htm | 63 - .../Data_Structures/DS_Maps/ds_map_copy.htm | 64 - .../Data_Structures/DS_Maps/ds_map_create.htm | 50 - .../Data_Structures/DS_Maps/ds_map_delete.htm | 66 - .../DS_Maps/ds_map_destroy.htm | 65 - .../Data_Structures/DS_Maps/ds_map_empty.htm | 64 - .../Data_Structures/DS_Maps/ds_map_exists.htm | 71 - .../DS_Maps/ds_map_find_first.htm | 71 - .../DS_Maps/ds_map_find_last.htm | 71 - .../DS_Maps/ds_map_find_next.htm | 75 - .../DS_Maps/ds_map_find_previous.htm | 74 - .../DS_Maps/ds_map_find_value.htm | 67 - .../DS_Maps/ds_map_is_list.htm | 76 - .../Data_Structures/DS_Maps/ds_map_is_map.htm | 76 - .../DS_Maps/ds_map_keys_to_array.htm | 67 - .../Data_Structures/DS_Maps/ds_map_read.htm | 80 - .../DS_Maps/ds_map_replace.htm | 70 - .../DS_Maps/ds_map_replace_list.htm | 77 - .../DS_Maps/ds_map_replace_map.htm | 76 - .../DS_Maps/ds_map_secure_load.htm | 61 - .../DS_Maps/ds_map_secure_load_buffer.htm | 66 - .../DS_Maps/ds_map_secure_save.htm | 67 - .../DS_Maps/ds_map_secure_save_buffer.htm | 74 - .../Data_Structures/DS_Maps/ds_map_set.htm | 70 - .../Data_Structures/DS_Maps/ds_map_size.htm | 64 - .../DS_Maps/ds_map_values_to_array.htm | 78 - .../Data_Structures/DS_Maps/ds_map_write.htm | 64 - .../DS_Priority_Queues/DS_Priority_Queues.htm | 59 - .../DS_Priority_Queues/ds_priority_add.htm | 72 - .../ds_priority_change_priority.htm | 75 - .../DS_Priority_Queues/ds_priority_clear.htm | 65 - .../DS_Priority_Queues/ds_priority_copy.htm | 68 - .../DS_Priority_Queues/ds_priority_create.htm | 50 - .../ds_priority_delete_max.htm | 64 - .../ds_priority_delete_min.htm | 64 - .../ds_priority_delete_value.htm | 67 - .../ds_priority_destroy.htm | 66 - .../DS_Priority_Queues/ds_priority_empty.htm | 66 - .../ds_priority_find_max.htm | 64 - .../ds_priority_find_min.htm | 64 - .../ds_priority_find_priority.htm | 66 - .../DS_Priority_Queues/ds_priority_read.htm | 80 - .../DS_Priority_Queues/ds_priority_size.htm | 64 - .../DS_Priority_Queues/ds_priority_write.htm | 66 - .../Data_Structures/DS_Queues/DS_Queues.htm | 55 - .../DS_Queues/ds_queue_clear.htm | 65 - .../DS_Queues/ds_queue_copy.htm | 71 - .../DS_Queues/ds_queue_create.htm | 50 - .../DS_Queues/ds_queue_dequeue.htm | 66 - .../DS_Queues/ds_queue_destroy.htm | 66 - .../DS_Queues/ds_queue_empty.htm | 66 - .../DS_Queues/ds_queue_enqueue.htm | 70 - .../DS_Queues/ds_queue_head.htm | 61 - .../DS_Queues/ds_queue_read.htm | 80 - .../DS_Queues/ds_queue_size.htm | 64 - .../DS_Queues/ds_queue_tail.htm | 61 - .../DS_Queues/ds_queue_write.htm | 65 - .../Data_Structures/DS_Stacks/DS_Stacks.htm | 54 - .../DS_Stacks/ds_stack_clear.htm | 65 - .../DS_Stacks/ds_stack_copy.htm | 71 - .../DS_Stacks/ds_stack_create.htm | 50 - .../DS_Stacks/ds_stack_destroy.htm | 66 - .../DS_Stacks/ds_stack_empty.htm | 66 - .../DS_Stacks/ds_stack_pop.htm | 65 - .../DS_Stacks/ds_stack_push.htm | 70 - .../DS_Stacks/ds_stack_read.htm | 80 - .../DS_Stacks/ds_stack_size.htm | 64 - .../DS_Stacks/ds_stack_top.htm | 61 - .../DS_Stacks/ds_stack_write.htm | 65 - .../Data_Structures/Data_Structures.htm | 61 - .../Data_Structures/ds_exists.htm | 122 -- .../Data_Structures/ds_set_precision.htm | 68 - .../GML_Reference/Debugging/Debugging.htm | 63 - .../Debugging/code_is_compiled.htm | 52 - .../GML_Reference/Debugging/debug_event.htm | 74 - .../Debugging/debug_get_callstack.htm | 79 - .../GML_Reference/Debugging/debug_mode.htm | 55 - .../Debugging/exception_unhandled_handler.htm | 126 -- .../GML_Reference/Debugging/fps.htm | 52 - .../GML_Reference/Debugging/fps_real.htm | 53 - .../GML_Reference/Debugging/get_integer.htm | 69 - .../GML_Reference/Debugging/get_string.htm | 69 - .../Debugging/show_debug_message.htm | 66 - .../Debugging/show_debug_overlay.htm | 81 - .../GML_Reference/Debugging/show_error.htm | 72 - .../GML_Reference/Debugging/show_message.htm | 69 - .../GML_Reference/Debugging/show_question.htm | 71 - .../Drawing/Basic_Forms/Basic_Forms.htm | 70 - .../Drawing/Basic_Forms/draw_arrow.htm | 81 - .../Drawing/Basic_Forms/draw_button.htm | 84 - .../Drawing/Basic_Forms/draw_circle.htm | 80 - .../Basic_Forms/draw_circle_colour.htm | 90 - .../Drawing/Basic_Forms/draw_ellipse.htm | 85 - .../Basic_Forms/draw_ellipse_colour.htm | 95 - .../Drawing/Basic_Forms/draw_healthbar.htm | 118 - .../Drawing/Basic_Forms/draw_line.htm | 77 - .../Drawing/Basic_Forms/draw_line_colour.htm | 85 - .../Drawing/Basic_Forms/draw_line_width.htm | 80 - .../Basic_Forms/draw_line_width_colour.htm | 89 - .../Drawing/Basic_Forms/draw_path.htm | 77 - .../Drawing/Basic_Forms/draw_point.htm | 66 - .../Drawing/Basic_Forms/draw_point_colour.htm | 72 - .../Drawing/Basic_Forms/draw_rectangle.htm | 85 - .../Basic_Forms/draw_rectangle_colour.htm | 105 - .../Drawing/Basic_Forms/draw_roundrect.htm | 85 - .../Basic_Forms/draw_roundrect_colour.htm | 95 - .../Basic_Forms/draw_roundrect_colour_ext.htm | 107 - .../Basic_Forms/draw_roundrect_ext.htm | 96 - .../Basic_Forms/draw_set_circle_precision.htm | 65 - .../Drawing/Basic_Forms/draw_triangle.htm | 95 - .../Basic_Forms/draw_triangle_colour.htm | 110 - .../Colour_And_Alpha/Colour_And_Alpha.htm | 211 -- .../Colour_And_Alpha/colour_get_blue.htm | 62 - .../Colour_And_Alpha/colour_get_green.htm | 62 - .../Colour_And_Alpha/colour_get_hue.htm | 63 - .../Colour_And_Alpha/colour_get_red.htm | 62 - .../colour_get_saturation.htm | 64 - .../Colour_And_Alpha/colour_get_value.htm | 64 - .../Drawing/Colour_And_Alpha/draw_clear.htm | 60 - .../Colour_And_Alpha/draw_clear_alpha.htm | 69 - .../Colour_And_Alpha/draw_get_alpha.htm | 51 - .../Colour_And_Alpha/draw_get_colour.htm | 53 - .../Colour_And_Alpha/draw_getpixel.htm | 66 - .../Colour_And_Alpha/draw_getpixel_ext.htm | 70 - .../Colour_And_Alpha/draw_set_alpha.htm | 68 - .../Colour_And_Alpha/draw_set_colour.htm | 69 - .../Colour_And_Alpha/make_colour_hsv.htm | 71 - .../Colour_And_Alpha/make_colour_rgb.htm | 72 - .../Drawing/Colour_And_Alpha/merge_colour.htm | 70 - .../GML_Reference/Drawing/Drawing.htm | 59 - .../Drawing/GPU_Control/GPU_Control.htm | 96 - .../GPU_Control/gpu_get_alphatestenable.htm | 53 - .../GPU_Control/gpu_get_alphatestref.htm | 55 - .../GPU_Control/gpu_get_blendenable.htm | 52 - .../Drawing/GPU_Control/gpu_get_blendmode.htm | 93 - .../GPU_Control/gpu_get_blendmode_dest.htm | 116 - .../gpu_get_blendmode_destalpha.htm | 116 - .../GPU_Control/gpu_get_blendmode_ext.htm | 127 -- .../gpu_get_blendmode_ext_sepalpha.htm | 124 -- .../GPU_Control/gpu_get_blendmode_src.htm | 115 - .../gpu_get_blendmode_srcalpha.htm | 115 - .../GPU_Control/gpu_get_colourwriteenable.htm | 58 - .../Drawing/GPU_Control/gpu_get_cullmode.htm | 82 - .../Drawing/GPU_Control/gpu_get_fog.htm | 58 - .../Drawing/GPU_Control/gpu_get_state.htm | 49 - .../Drawing/GPU_Control/gpu_get_texfilter.htm | 59 - .../GPU_Control/gpu_get_texfilter_ext.htm | 74 - .../Drawing/GPU_Control/gpu_get_texrepeat.htm | 56 - .../GPU_Control/gpu_get_texrepeat_ext.htm | 65 - .../Drawing/GPU_Control/gpu_get_zfunc.htm | 107 - .../GPU_Control/gpu_get_ztestenable.htm | 52 - .../GPU_Control/gpu_get_zwriteenable.htm | 52 - .../Drawing/GPU_Control/gpu_pop_state.htm | 56 - .../Drawing/GPU_Control/gpu_push_state.htm | 56 - .../GPU_Control/gpu_set_alphatestenable.htm | 66 - .../GPU_Control/gpu_set_alphatestref.htm | 66 - .../GPU_Control/gpu_set_blendenable.htm | 62 - .../Drawing/GPU_Control/gpu_set_blendmode.htm | 105 - .../GPU_Control/gpu_set_blendmode_ext.htm | 151 -- .../gpu_set_blendmode_ext_sepalpha.htm | 165 -- .../GPU_Control/gpu_set_colourwriteenable.htm | 86 - .../Drawing/GPU_Control/gpu_set_cullmode.htm | 89 - .../Drawing/GPU_Control/gpu_set_fog.htm | 88 - .../Drawing/GPU_Control/gpu_set_state.htm | 60 - .../Drawing/GPU_Control/gpu_set_texfilter.htm | 70 - .../GPU_Control/gpu_set_texfilter_ext.htm | 75 - .../Drawing/GPU_Control/gpu_set_texrepeat.htm | 70 - .../GPU_Control/gpu_set_texrepeat_ext.htm | 74 - .../Drawing/GPU_Control/gpu_set_zfunc.htm | 117 - .../GPU_Control/gpu_set_ztestenable.htm | 64 - .../GPU_Control/gpu_set_zwriteenable.htm | 66 - .../Drawing/Lighting/Lighting.htm | 48 - .../Drawing/Lighting/draw_get_lighting.htm | 52 - .../Lighting/draw_light_define_ambient.htm | 61 - .../Lighting/draw_light_define_direction.htm | 79 - .../Lighting/draw_light_define_point.htm | 82 - .../Drawing/Lighting/draw_light_enable.htm | 70 - .../Drawing/Lighting/draw_light_get.htm | 101 - .../Lighting/draw_light_get_ambient.htm | 49 - .../Drawing/Lighting/draw_set_lighting.htm | 64 - .../Drawing/Mipmapping/Mipmapping.htm | 70 - .../Mipmapping/gpu_get_tex_max_aniso.htm | 52 - .../Mipmapping/gpu_get_tex_max_aniso_ext.htm | 69 - .../Mipmapping/gpu_get_tex_max_mip.htm | 52 - .../Mipmapping/gpu_get_tex_max_mip_ext.htm | 69 - .../Mipmapping/gpu_get_tex_min_mip.htm | 52 - .../Mipmapping/gpu_get_tex_min_mip_ext.htm | 69 - .../Mipmapping/gpu_get_tex_mip_bias.htm | 52 - .../Mipmapping/gpu_get_tex_mip_bias_ext.htm | 69 - .../Mipmapping/gpu_get_tex_mip_enable.htm | 82 - .../Mipmapping/gpu_get_tex_mip_enable_ext.htm | 94 - .../Mipmapping/gpu_get_tex_mip_filter.htm | 87 - .../Mipmapping/gpu_get_tex_mip_filter_ext.htm | 93 - .../Mipmapping/gpu_set_tex_max_aniso.htm | 64 - .../Mipmapping/gpu_set_tex_max_aniso_ext.htm | 73 - .../Mipmapping/gpu_set_tex_max_mip.htm | 64 - .../Mipmapping/gpu_set_tex_max_mip_ext.htm | 73 - .../Mipmapping/gpu_set_tex_min_mip.htm | 64 - .../Mipmapping/gpu_set_tex_min_mip_ext.htm | 73 - .../Mipmapping/gpu_set_tex_mip_bias.htm | 63 - .../Mipmapping/gpu_set_tex_mip_bias_ext.htm | 72 - .../Mipmapping/gpu_set_tex_mip_enable.htm | 88 - .../Mipmapping/gpu_set_tex_mip_enable_ext.htm | 98 - .../Mipmapping/gpu_set_tex_mip_filter.htm | 93 - .../Mipmapping/gpu_set_tex_mip_filter_ext.htm | 100 - .../Particle_Emitters/Particle_Emitters.htm | 49 - .../Particle_Emitters/part_emitter_burst.htm | 77 - .../Particle_Emitters/part_emitter_clear.htm | 67 - .../Particle_Emitters/part_emitter_create.htm | 63 - .../part_emitter_destroy.htm | 70 - .../part_emitter_destroy_all.htm | 64 - .../Particle_Emitters/part_emitter_exists.htm | 71 - .../Particle_Emitters/part_emitter_region.htm | 167 -- .../Particle_Emitters/part_emitter_stream.htm | 77 - .../Particle_Systems/Particle_Systems.htm | 68 - .../Particle_Systems/part_particles_clear.htm | 66 - .../Particle_Systems/part_particles_count.htm | 67 - .../part_particles_create.htm | 86 - .../part_particles_create_colour.htm | 93 - .../part_system_automatic_draw.htm | 68 - .../part_system_automatic_update.htm | 71 - .../Particle_Systems/part_system_clear.htm | 64 - .../Particle_Systems/part_system_create.htm | 49 - .../part_system_create_layer.htm | 70 - .../Particle_Systems/part_system_depth.htm | 68 - .../Particle_Systems/part_system_destroy.htm | 67 - .../part_system_draw_order.htm | 71 - .../Particle_Systems/part_system_drawit.htm | 67 - .../Particle_Systems/part_system_exists.htm | 66 - .../part_system_get_layer.htm | 66 - .../Particle_Systems/part_system_layer.htm | 70 - .../Particle_Systems/part_system_position.htm | 76 - .../Particle_Systems/part_system_update.htm | 65 - .../Particle_Types/Particle_Types.htm | 88 - .../Particle_Types/part_type_alpha1.htm | 67 - .../Particle_Types/part_type_alpha2.htm | 72 - .../Particle_Types/part_type_alpha3.htm | 77 - .../Particle_Types/part_type_blend.htm | 67 - .../Particle_Types/part_type_clear.htm | 62 - .../Particle_Types/part_type_colour1.htm | 68 - .../Particle_Types/part_type_colour2.htm | 73 - .../Particle_Types/part_type_colour3.htm | 78 - .../Particle_Types/part_type_colour_hsv.htm | 93 - .../Particle_Types/part_type_colour_mix.htm | 73 - .../Particle_Types/part_type_colour_rgb.htm | 93 - .../Particle_Types/part_type_create.htm | 49 - .../Particle_Types/part_type_death.htm | 97 - .../Particle_Types/part_type_destroy.htm | 68 - .../Particle_Types/part_type_direction.htm | 94 - .../Particle_Types/part_type_exists.htm | 66 - .../Particle_Types/part_type_gravity.htm | 82 - .../Particle_Types/part_type_life.htm | 72 - .../Particle_Types/part_type_orientation.htm | 99 - .../Particle_Types/part_type_scale.htm | 81 - .../Particle_Types/part_type_shape.htm | 164 -- .../Particle_Types/part_type_size.htm | 93 - .../Particle_Types/part_type_speed.htm | 94 - .../Particle_Types/part_type_sprite.htm | 92 - .../Particle_Types/part_type_step.htm | 97 - .../Drawing/Particles/Particles.htm | 75 - .../Drawing/Particles/effect_clear.htm | 48 - .../Drawing/Particles/effect_create_above.htm | 177 -- .../Drawing/Particles/effect_create_below.htm | 168 -- .../Primitives_And_Vertex_Formats.htm | 92 - .../Primitives/draw_primitive_begin.htm | 120 - .../draw_primitive_begin_texture.htm | 75 - .../Drawing/Primitives/draw_primitive_end.htm | 50 - .../Drawing/Primitives/draw_vertex.htm | 67 - .../Drawing/Primitives/draw_vertex_colour.htm | 75 - .../Primitives/draw_vertex_texture.htm | 88 - .../Primitives/draw_vertex_texture_colour.htm | 86 - .../Drawing/Primitives/vertex_argb.htm | 67 - .../Drawing/Primitives/vertex_begin.htm | 73 - .../Drawing/Primitives/vertex_colour.htm | 73 - .../Primitives/vertex_create_buffer.htm | 50 - .../Primitives/vertex_create_buffer_ext.htm | 61 - .../vertex_create_buffer_from_buffer.htm | 73 - .../vertex_create_buffer_from_buffer_ext.htm | 83 - .../Primitives/vertex_delete_buffer.htm | 62 - .../Drawing/Primitives/vertex_end.htm | 62 - .../Drawing/Primitives/vertex_float1.htm | 67 - .../Drawing/Primitives/vertex_float2.htm | 72 - .../Drawing/Primitives/vertex_float3.htm | 77 - .../Drawing/Primitives/vertex_float4.htm | 82 - .../Primitives/vertex_format_add_colour.htm | 51 - .../Primitives/vertex_format_add_custom.htm | 214 -- .../Primitives/vertex_format_add_normal.htm | 50 - .../Primitives/vertex_format_add_position.htm | 50 - .../vertex_format_add_position_3d.htm | 50 - .../Primitives/vertex_format_add_texcoord.htm | 53 - .../Primitives/vertex_format_begin.htm | 50 - .../Primitives/vertex_format_delete.htm | 62 - .../Drawing/Primitives/vertex_format_end.htm | 51 - .../Drawing/Primitives/vertex_freeze.htm | 64 - .../Primitives/vertex_get_buffer_size.htm | 63 - .../Drawing/Primitives/vertex_get_number.htm | 63 - .../Drawing/Primitives/vertex_normal.htm | 77 - .../Drawing/Primitives/vertex_position.htm | 72 - .../Drawing/Primitives/vertex_position_3d.htm | 77 - .../Drawing/Primitives/vertex_submit.htm | 110 - .../Drawing/Primitives/vertex_texcoord.htm | 73 - .../Drawing/Primitives/vertex_ubyte4.htm | 82 - .../Sprites_And_Tiles/Sprites_And_Tiles.htm | 73 - .../Sprites_And_Tiles/draw_enable_swf_aa.htm | 64 - .../draw_get_swf_aa_level.htm | 53 - .../Drawing/Sprites_And_Tiles/draw_self.htm | 50 - .../draw_set_swf_aa_level.htm | 64 - .../Drawing/Sprites_And_Tiles/draw_sprite.htm | 80 - .../Sprites_And_Tiles/draw_sprite_ext.htm | 97 - .../Sprites_And_Tiles/draw_sprite_general.htm | 126 -- .../Sprites_And_Tiles/draw_sprite_part.htm | 96 - .../draw_sprite_part_ext.htm | 114 - .../Sprites_And_Tiles/draw_sprite_pos.htm | 107 - .../draw_sprite_stretched.htm | 76 - .../draw_sprite_stretched_ext.htm | 82 - .../Sprites_And_Tiles/draw_sprite_tiled.htm | 75 - .../draw_sprite_tiled_ext.htm | 93 - .../Drawing/Sprites_And_Tiles/draw_tile.htm | 118 - .../Sprites_And_Tiles/draw_tilemap.htm | 74 - .../Drawing/Surfaces/Surfaces.htm | 158 -- .../Surfaces/application_get_position.htm | 53 - .../Drawing/Surfaces/application_surface.htm | 49 - .../application_surface_draw_enable.htm | 65 - .../Surfaces/application_surface_enable.htm | 72 - .../application_surface_is_enabled.htm | 59 - .../Drawing/Surfaces/draw_surface.htm | 76 - .../Drawing/Surfaces/draw_surface_ext.htm | 99 - .../Drawing/Surfaces/draw_surface_general.htm | 135 -- .../Drawing/Surfaces/draw_surface_part.htm | 94 - .../Surfaces/draw_surface_part_ext.htm | 114 - .../Surfaces/draw_surface_stretched.htm | 84 - .../Surfaces/draw_surface_stretched_ext.htm | 94 - .../Drawing/Surfaces/draw_surface_tiled.htm | 74 - .../Surfaces/draw_surface_tiled_ext.htm | 94 - .../Drawing/Surfaces/surface_copy.htm | 85 - .../Drawing/Surfaces/surface_copy_part.htm | 108 - .../Drawing/Surfaces/surface_create.htm | 73 - .../Drawing/Surfaces/surface_create_ext.htm | 75 - .../Surfaces/surface_depth_disable.htm | 72 - .../Drawing/Surfaces/surface_exists.htm | 71 - .../Drawing/Surfaces/surface_free.htm | 65 - .../Surfaces/surface_get_depth_disable.htm | 56 - .../Drawing/Surfaces/surface_get_height.htm | 62 - .../Drawing/Surfaces/surface_get_target.htm | 55 - .../Surfaces/surface_get_target_ext.htm | 64 - .../Drawing/Surfaces/surface_get_texture.htm | 72 - .../Drawing/Surfaces/surface_get_width.htm | 62 - .../Drawing/Surfaces/surface_getpixel.htm | 70 - .../Drawing/Surfaces/surface_getpixel_ext.htm | 70 - .../Drawing/Surfaces/surface_reset_target.htm | 61 - .../Drawing/Surfaces/surface_resize.htm | 72 - .../Drawing/Surfaces/surface_save.htm | 67 - .../Drawing/Surfaces/surface_save_part.htm | 83 - .../Drawing/Surfaces/surface_set_target.htm | 93 - .../Surfaces/surface_set_target_ext.htm | 65 - .../GML_Reference/Drawing/Text/Text.htm | 64 - .../Drawing/Text/draw_get_font.htm | 71 - .../Drawing/Text/draw_get_halign.htm | 88 - .../Drawing/Text/draw_get_valign.htm | 88 - .../Drawing/Text/draw_highscore.htm | 74 - .../Drawing/Text/draw_set_font.htm | 62 - .../Drawing/Text/draw_set_halign.htm | 88 - .../Drawing/Text/draw_set_valign.htm | 87 - .../GML_Reference/Drawing/Text/draw_text.htm | 70 - .../Drawing/Text/draw_text_colour.htm | 94 - .../Drawing/Text/draw_text_ext.htm | 80 - .../Drawing/Text/draw_text_ext_colour.htm | 115 - .../Text/draw_text_ext_transformed.htm | 91 - .../Text/draw_text_ext_transformed_colour.htm | 117 - .../Drawing/Text/draw_text_transformed.htm | 83 - .../Text/draw_text_transformed_colour.htm | 106 - .../Drawing/Textures/Textures.htm | 69 - .../Drawing/Textures/draw_texture_flush.htm | 52 - .../Textures/texture_debug_messages.htm | 63 - .../Drawing/Textures/texture_flush.htm | 66 - .../Drawing/Textures/texture_get_height.htm | 63 - .../Textures/texture_get_texel_height.htm | 65 - .../Textures/texture_get_texel_width.htm | 65 - .../Drawing/Textures/texture_get_uvs.htm | 79 - .../Drawing/Textures/texture_get_width.htm | 63 - .../Drawing/Textures/texture_global_scale.htm | 70 - .../Drawing/Textures/texture_is_ready.htm | 70 - .../Drawing/Textures/texture_prefetch.htm | 66 - .../Drawing/Textures/texture_set_stage.htm | 72 - .../Textures/texturegroup_get_fonts.htm | 67 - .../Textures/texturegroup_get_names.htm | 50 - .../Textures/texturegroup_get_sprites.htm | 67 - .../Textures/texturegroup_get_textures.htm | 70 - .../Textures/texturegroup_get_tilesets.htm | 67 - .../GML_Reference/Drawing/Videos/Videos.htm | 112 - .../Drawing/Videos/YUV_Videos.htm | 132 -- .../Drawing/Videos/video_close.htm | 52 - .../Drawing/Videos/video_enable_loop.htm | 65 - .../Drawing/Videos/video_get_duration.htm | 64 - .../Drawing/Videos/video_get_format.htm | 68 - .../Drawing/Videos/video_get_position.htm | 64 - .../Drawing/Videos/video_get_status.htm | 93 - .../Drawing/Videos/video_get_volume.htm | 56 - .../Drawing/Videos/video_is_looping.htm | 51 - .../Drawing/Videos/video_pause.htm | 62 - .../Drawing/Videos/video_resume.htm | 62 - .../Drawing/Videos/video_seek_to.htm | 79 - .../Drawing/draw_enable_drawevent.htm | 69 - .../GML_Reference/Drawing/draw_flush.htm | 54 - .../Binary_Files/Binary_Files.htm | 50 - .../Binary_Files/file_bin_close.htm | 63 - .../Binary_Files/file_bin_open.htm | 76 - .../Binary_Files/file_bin_position.htm | 62 - .../Binary_Files/file_bin_read_byte.htm | 62 - .../Binary_Files/file_bin_rewrite.htm | 62 - .../Binary_Files/file_bin_seek.htm | 66 - .../Binary_Files/file_bin_size.htm | 63 - .../Binary_Files/file_bin_write_byte.htm | 65 - .../Encoding_And_Hashing.htm | 65 - .../Encoding_And_Hashing/base64_decode.htm | 62 - .../Encoding_And_Hashing/base64_encode.htm | 62 - .../Encoding_And_Hashing/json_decode.htm | 90 - .../Encoding_And_Hashing/json_encode.htm | 80 - .../Encoding_And_Hashing/json_parse.htm | 115 - .../Encoding_And_Hashing/json_stringify.htm | 102 - .../Encoding_And_Hashing/load_csv.htm | 78 - .../Encoding_And_Hashing/md5_file.htm | 63 - .../md5_string_unicode.htm | 66 - .../Encoding_And_Hashing/md5_string_utf8.htm | 67 - .../Encoding_And_Hashing/sha1_file.htm | 64 - .../sha1_string_unicode.htm | 67 - .../Encoding_And_Hashing/sha1_string_utf8.htm | 69 - .../Encoding_And_Hashing/zip_unzip.htm | 70 - .../File_Directories/File_Directories.htm | 46 - .../File_Directories/directory_create.htm | 65 - .../File_Directories/directory_destroy.htm | 65 - .../File_Directories/directory_exists.htm | 64 - .../File_Directories/program_directory.htm | 50 - .../File_Directories/temp_directory.htm | 50 - .../File_Directories/working_directory.htm | 57 - .../File_Handling/File_Handling.htm | 85 - .../File_Handling/File_System/File_System.htm | 69 - .../File_System/file_attributes.htm | 110 - .../File_Handling/File_System/file_copy.htm | 67 - .../File_Handling/File_System/file_delete.htm | 64 - .../File_Handling/File_System/file_exists.htm | 64 - .../File_System/file_find_close.htm | 68 - .../File_System/file_find_first.htm | 136 -- .../File_System/file_find_next.htm | 70 - .../File_Handling/File_System/file_rename.htm | 68 - .../File_System/filename_change_ext.htm | 64 - .../File_System/filename_dir.htm | 61 - .../File_System/filename_drive.htm | 61 - .../File_System/filename_ext.htm | 61 - .../File_System/filename_name.htm | 61 - .../File_System/filename_path.htm | 61 - .../File_System/get_open_filename.htm | 71 - .../File_System/get_open_filename_ext.htm | 80 - .../File_System/get_save_filename.htm | 71 - .../File_System/get_save_filename_ext.htm | 80 - .../File_Handling/Ini_Files/Ini_Files.htm | 54 - .../File_Handling/Ini_Files/ini_close.htm | 51 - .../Ini_Files/ini_key_delete.htm | 67 - .../Ini_Files/ini_key_exists.htm | 70 - .../File_Handling/Ini_Files/ini_open.htm | 66 - .../Ini_Files/ini_open_from_string.htm | 63 - .../File_Handling/Ini_Files/ini_read_real.htm | 71 - .../Ini_Files/ini_read_string.htm | 76 - .../Ini_Files/ini_section_delete.htm | 62 - .../Ini_Files/ini_section_exists.htm | 66 - .../Ini_Files/ini_write_real.htm | 72 - .../Ini_Files/ini_write_string.htm | 77 - .../File_Handling/Text_Files/Text_Files.htm | 55 - .../Text_Files/file_text_close.htm | 66 - .../Text_Files/file_text_eof.htm | 67 - .../Text_Files/file_text_eoln.htm | 66 - .../Text_Files/file_text_open_append.htm | 66 - .../Text_Files/file_text_open_from_string.htm | 62 - .../Text_Files/file_text_open_read.htm | 63 - .../Text_Files/file_text_open_write.htm | 70 - .../Text_Files/file_text_read_real.htm | 68 - .../Text_Files/file_text_read_string.htm | 68 - .../Text_Files/file_text_readln.htm | 68 - .../Text_Files/file_text_write_real.htm | 73 - .../Text_Files/file_text_write_string.htm | 72 - .../Text_Files/file_text_writeln.htm | 68 - .../GML_Reference/GML_Reference.htm | 67 - .../Challenges/gxc_pause_movie_recording.htm | 51 - .../Challenges/gxc_resume_movie_recording.htm | 51 - .../Challenges/gxc_start_movie_recording.htm | 82 - .../Challenges/gxc_stop_movie_recording.htm | 75 - .../Game_Input/Device_Input/Device_Input.htm | 99 - .../Device_Input/device_get_tilt_x.htm | 56 - .../Device_Input/device_get_tilt_y.htm | 56 - .../Device_Input/device_get_tilt_z.htm | 49 - .../Device_Input/device_is_keypad_open.htm | 57 - .../device_mouse_check_button.htm | 70 - .../device_mouse_check_button_pressed.htm | 68 - .../device_mouse_check_button_released.htm | 68 - .../device_mouse_dbclick_enable.htm | 66 - .../Device_Input/device_mouse_raw_x.htm | 66 - .../Device_Input/device_mouse_raw_y.htm | 66 - .../Device_Input/device_mouse_x.htm | 71 - .../Device_Input/device_mouse_x_to_gui.htm | 71 - .../Device_Input/device_mouse_y.htm | 71 - .../Device_Input/device_mouse_y_to_gui.htm | 71 - .../GamePad_Input/Gamepad_Input.htm | 288 --- .../GamePad_Input/gamepad_axis_count.htm | 60 - .../GamePad_Input/gamepad_axis_value.htm | 72 - .../GamePad_Input/gamepad_button_check.htm | 77 - .../gamepad_button_check_pressed.htm | 73 - .../gamepad_button_check_released.htm | 72 - .../GamePad_Input/gamepad_button_count.htm | 60 - .../GamePad_Input/gamepad_button_value.htm | 69 - .../gamepad_get_axis_deadzone.htm | 64 - .../gamepad_get_button_threshold.htm | 64 - .../GamePad_Input/gamepad_get_description.htm | 73 - .../gamepad_get_device_count.htm | 61 - .../GamePad_Input/gamepad_get_guid.htm | 88 - .../GamePad_Input/gamepad_get_mapping.htm | 69 - .../GamePad_Input/gamepad_get_option.htm | 96 - .../GamePad_Input/gamepad_hat_count.htm | 66 - .../GamePad_Input/gamepad_hat_value.htm | 86 - .../GamePad_Input/gamepad_is_connected.htm | 69 - .../GamePad_Input/gamepad_is_supported.htm | 53 - .../GamePad_Input/gamepad_remove_mapping.htm | 63 - .../gamepad_set_axis_deadzone.htm | 69 - .../gamepad_set_button_threshold.htm | 72 - .../GamePad_Input/gamepad_set_colour.htm | 68 - .../GamePad_Input/gamepad_set_option.htm | 104 - .../GamePad_Input/gamepad_set_vibration.htm | 73 - .../GamePad_Input/gamepad_test_mapping.htm | 184 -- .../GML_Reference/Game_Input/Game_Input.htm | 48 - .../Gesture_Input/Gesture_Input.htm | 64 - .../Game_Input/Gesture_Input/event_data.htm | 60 - .../gesture_double_tap_distance.htm | 64 - .../Gesture_Input/gesture_double_tap_time.htm | 65 - .../Gesture_Input/gesture_drag_distance.htm | 64 - .../Gesture_Input/gesture_drag_time.htm | 63 - .../Gesture_Input/gesture_flick_speed.htm | 63 - .../gesture_get_double_tap_distance.htm | 52 - .../gesture_get_double_tap_time.htm | 52 - .../gesture_get_drag_distance.htm | 52 - .../Gesture_Input/gesture_get_drag_time.htm | 52 - .../Gesture_Input/gesture_get_flick_speed.htm | 52 - .../gesture_get_pinch_angle_away.htm | 52 - .../gesture_get_pinch_angle_towards.htm | 52 - .../gesture_get_pinch_distance.htm | 52 - .../gesture_get_rotate_angle.htm | 52 - .../Gesture_Input/gesture_get_rotate_time.htm | 52 - .../Gesture_Input/gesture_get_tap_count.htm | 52 - .../gesture_pinch_angle_away.htm | 51 - .../gesture_pinch_angle_towards.htm | 51 - .../Gesture_Input/gesture_pinch_distance.htm | 52 - .../Gesture_Input/gesture_rotate_angle.htm | 51 - .../Gesture_Input/gesture_rotate_time.htm | 52 - .../Gesture_Input/gesture_tap_count.htm | 64 - .../Keyboard_Input/Keyboard_Input.htm | 315 --- .../Game_Input/Keyboard_Input/io_clear.htm | 54 - .../Keyboard_Input/keyboard_check.htm | 66 - .../Keyboard_Input/keyboard_check_direct.htm | 65 - .../Keyboard_Input/keyboard_check_pressed.htm | 66 - .../keyboard_check_released.htm | 64 - .../Keyboard_Input/keyboard_clear.htm | 66 - .../Keyboard_Input/keyboard_get_map.htm | 64 - .../Keyboard_Input/keyboard_get_numlock.htm | 57 - .../Keyboard_Input/keyboard_key.htm | 53 - .../Keyboard_Input/keyboard_key_press.htm | 63 - .../Keyboard_Input/keyboard_key_release.htm | 64 - .../Keyboard_Input/keyboard_lastchar.htm | 52 - .../Keyboard_Input/keyboard_lastkey.htm | 52 - .../Keyboard_Input/keyboard_set_map.htm | 71 - .../Keyboard_Input/keyboard_set_numlock.htm | 70 - .../Keyboard_Input/keyboard_string.htm | 51 - .../Keyboard_Input/keyboard_unset_map.htm | 51 - .../Game_Input/Mouse_Input/Mouse_Input.htm | 70 - .../Game_Input/Mouse_Input/mouse_button.htm | 51 - .../Mouse_Input/mouse_check_button.htm | 66 - .../mouse_check_button_pressed.htm | 67 - .../mouse_check_button_released.htm | 66 - .../Game_Input/Mouse_Input/mouse_clear.htm | 63 - .../Mouse_Input/mouse_lastbutton.htm | 51 - .../Mouse_Input/mouse_wheel_down.htm | 52 - .../Game_Input/Mouse_Input/mouse_wheel_up.htm | 52 - .../Game_Input/Mouse_Input/mouse_x.htm | 52 - .../Game_Input/Mouse_Input/mouse_y.htm | 47 - .../Virtual_Keys_And_Keyboards.htm | 79 - .../keyboard_virtual_height.htm | 52 - .../keyboard_virtual_hide.htm | 64 - .../keyboard_virtual_show.htm | 305 --- .../keyboard_virtual_status.htm | 54 - .../virtual_key_add.htm | 84 - .../virtual_key_delete.htm | 64 - .../virtual_key_hide.htm | 70 - .../virtual_key_show.htm | 71 - .../Garbage_Collection/Garbage_Collection.htm | 57 - .../Garbage_Collection/gc_collect.htm | 51 - .../Garbage_Collection/gc_enable.htm | 63 - .../Garbage_Collection/gc_get_stats.htm | 115 - .../gc_get_target_frame_time.htm | 52 - .../Garbage_Collection/gc_is_enabled.htm | 52 - .../gc_target_frame_time.htm | 64 - .../Garbage_Collection/weak_ref_alive.htm | 66 - .../Garbage_Collection/weak_ref_any_alive.htm | 77 - .../Garbage_Collection/weak_ref_create.htm | 62 - .../General_Game_Control.htm | 77 - .../General_Game_Control/cursor_sprite.htm | 49 - .../game_display_name.htm | 48 - .../General_Game_Control/game_end.htm | 57 - .../General_Game_Control/game_get_speed.htm | 92 - .../General_Game_Control/game_id.htm | 50 - .../General_Game_Control/game_load.htm | 65 - .../General_Game_Control/game_load_buffer.htm | 63 - .../game_project_name.htm | 52 - .../General_Game_Control/game_restart.htm | 58 - .../General_Game_Control/game_save.htm | 66 - .../General_Game_Control/game_save_buffer.htm | 66 - .../General_Game_Control/game_save_id.htm | 50 - .../General_Game_Control/game_set_speed.htm | 96 - .../General_Game_Control/highscore_add.htm | 72 - .../General_Game_Control/highscore_clear.htm | 49 - .../General_Game_Control/highscore_name.htm | 66 - .../General_Game_Control/highscore_value.htm | 65 - .../In_App_Purchases/In_App_Purchases.htm | 66 - .../Angles_And_Distance.htm | 78 - .../Angles_And_Distance/angle_difference.htm | 96 - .../Angles_And_Distance/arccos.htm | 66 - .../Angles_And_Distance/arcsin.htm | 66 - .../Angles_And_Distance/arctan.htm | 66 - .../Angles_And_Distance/arctan2.htm | 69 - .../Angles_And_Distance/cos.htm | 64 - .../Angles_And_Distance/darccos.htm | 65 - .../Angles_And_Distance/darcsin.htm | 65 - .../Angles_And_Distance/darctan.htm | 66 - .../Angles_And_Distance/darctan2.htm | 68 - .../Angles_And_Distance/dcos.htm | 61 - .../Angles_And_Distance/degtorad.htm | 62 - .../distance_to_object.htm | 66 - .../Angles_And_Distance/distance_to_point.htm | 68 - .../Angles_And_Distance/dot_product.htm | 94 - .../Angles_And_Distance/dot_product_3d.htm | 102 - .../dot_product_3d_normalised.htm | 90 - .../dot_product_normalised.htm | 80 - .../Angles_And_Distance/dsin.htm | 61 - .../Angles_And_Distance/dtan.htm | 65 - .../Angles_And_Distance/lengthdir_x.htm | 66 - .../Angles_And_Distance/lengthdir_y.htm | 66 - .../Angles_And_Distance/point_direction.htm | 80 - .../Angles_And_Distance/point_distance.htm | 80 - .../Angles_And_Distance/point_distance_3d.htm | 89 - .../Angles_And_Distance/radtodeg.htm | 64 - .../Angles_And_Distance/sin.htm | 64 - .../Angles_And_Distance/tan.htm | 63 - .../Date_And_Time/Date_And_Time.htm | 106 - .../Date_And_Time/current_day.htm | 47 - .../Date_And_Time/current_hour.htm | 47 - .../Date_And_Time/current_minute.htm | 47 - .../Date_And_Time/current_month.htm | 47 - .../Date_And_Time/current_second.htm | 47 - .../Date_And_Time/current_time.htm | 51 - .../Date_And_Time/current_weekday.htm | 59 - .../Date_And_Time/current_year.htm | 47 - .../Date_And_Time/date_compare_date.htm | 68 - .../Date_And_Time/date_compare_datetime.htm | 65 - .../Date_And_Time/date_compare_time.htm | 71 - .../Date_And_Time/date_create_datetime.htm | 81 - .../Date_And_Time/date_current_datetime.htm | 51 - .../Date_And_Time/date_date_of.htm | 61 - .../Date_And_Time/date_date_string.htm | 66 - .../Date_And_Time/date_datetime_string.htm | 66 - .../Date_And_Time/date_day_span.htm | 70 - .../Date_And_Time/date_days_in_month.htm | 66 - .../Date_And_Time/date_days_in_year.htm | 66 - .../Date_And_Time/date_get_day.htm | 66 - .../Date_And_Time/date_get_day_of_year.htm | 66 - .../Date_And_Time/date_get_hour.htm | 66 - .../Date_And_Time/date_get_hour_of_year.htm | 66 - .../Date_And_Time/date_get_minute.htm | 66 - .../Date_And_Time/date_get_minute_of_year.htm | 66 - .../Date_And_Time/date_get_month.htm | 66 - .../Date_And_Time/date_get_second.htm | 66 - .../Date_And_Time/date_get_second_of_year.htm | 66 - .../Date_And_Time/date_get_timezone.htm | 77 - .../Date_And_Time/date_get_week.htm | 65 - .../Date_And_Time/date_get_weekday.htm | 66 - .../Date_And_Time/date_get_year.htm | 65 - .../Date_And_Time/date_hour_span.htm | 70 - .../Date_And_Time/date_inc_day.htm | 69 - .../Date_And_Time/date_inc_hour.htm | 69 - .../Date_And_Time/date_inc_minute.htm | 70 - .../Date_And_Time/date_inc_month.htm | 69 - .../Date_And_Time/date_inc_second.htm | 69 - .../Date_And_Time/date_inc_week.htm | 69 - .../Date_And_Time/date_inc_year.htm | 69 - .../Date_And_Time/date_is_today.htm | 64 - .../Date_And_Time/date_leap_year.htm | 67 - .../Date_And_Time/date_minute_span.htm | 70 - .../Date_And_Time/date_month_span.htm | 70 - .../Date_And_Time/date_second_span.htm | 70 - .../Date_And_Time/date_set_timezone.htm | 83 - .../Date_And_Time/date_time_of.htm | 60 - .../Date_And_Time/date_time_string.htm | 60 - .../Date_And_Time/date_valid_datetime.htm | 85 - .../Date_And_Time/date_week_span.htm | 70 - .../Date_And_Time/date_year_span.htm | 70 - .../Date_And_Time/delta_time.htm | 50 - .../Date_And_Time/get_timer.htm | 52 - .../Maths_And_Numbers/Maths_And_Numbers.htm | 70 - .../Matrix_Functions/Matrix_Functions.htm | 63 - .../Matrix_Functions/matrix_build.htm | 95 - .../matrix_build_identity.htm | 53 - .../Matrix_Functions/matrix_build_lookat.htm | 97 - .../matrix_build_projection_ortho.htm | 77 - .../matrix_build_projection_perspective.htm | 77 - ...atrix_build_projection_perspective_fov.htm | 74 - .../Matrix_Functions/matrix_get.htm | 98 - .../Matrix_Functions/matrix_multiply.htm | 67 - .../Matrix_Functions/matrix_set.htm | 90 - .../Matrix_Functions/matrix_stack_clear.htm | 51 - .../matrix_stack_is_empty.htm | 52 - .../Matrix_Functions/matrix_stack_pop.htm | 55 - .../Matrix_Functions/matrix_stack_push.htm | 69 - .../Matrix_Functions/matrix_stack_set.htm | 60 - .../Matrix_Functions/matrix_stack_top.htm | 56 - .../matrix_transform_vertex.htm | 83 - .../Number_Functions/Number_Functions.htm | 98 - .../Number_Functions/abs.htm | 61 - .../Number_Functions/ceil.htm | 63 - .../Number_Functions/choose.htm | 66 - .../Number_Functions/clamp.htm | 74 - .../Number_Functions/exp.htm | 61 - .../Number_Functions/floor.htm | 61 - .../Number_Functions/frac.htm | 60 - .../Number_Functions/irandom.htm | 64 - .../Number_Functions/irandom_range.htm | 72 - .../Number_Functions/lerp.htm | 78 - .../Maths_And_Numbers/Number_Functions/ln.htm | 68 - .../Number_Functions/log10.htm | 62 - .../Number_Functions/log2.htm | 61 - .../Number_Functions/logn.htm | 65 - .../Number_Functions/math_get_epsilon.htm | 53 - .../Number_Functions/math_set_epsilon.htm | 77 - .../Number_Functions/max.htm | 61 - .../Number_Functions/mean.htm | 61 - .../Number_Functions/median.htm | 68 - .../Number_Functions/min.htm | 62 - .../Number_Functions/power.htm | 71 - .../Number_Functions/random.htm | 64 - .../Number_Functions/random_get_seed.htm | 50 - .../Number_Functions/random_range.htm | 67 - .../Number_Functions/random_set_seed.htm | 64 - .../Number_Functions/randomise.htm | 51 - .../Number_Functions/round.htm | 63 - .../Number_Functions/sign.htm | 66 - .../Number_Functions/sqr.htm | 60 - .../Number_Functions/sqrt.htm | 61 - .../Collision_Compatibility_Mode.htm | 44 - .../Collisions/Collisions.htm | 93 - .../Collisions/collision_circle.htm | 95 - .../Collisions/collision_circle_list.htm | 109 - .../Collisions/collision_ellipse.htm | 99 - .../Collisions/collision_ellipse_list.htm | 114 - .../Collisions/collision_line.htm | 98 - .../Collisions/collision_line_list.htm | 114 - .../Collisions/collision_point.htm | 88 - .../Collisions/collision_point_list.htm | 104 - .../Collisions/collision_rectangle.htm | 100 - .../Collisions/collision_rectangle_list.htm | 114 - .../Collisions/place_empty.htm | 79 - .../Collisions/place_free.htm | 71 - .../Collisions/place_meeting.htm | 77 - .../Collisions/point_in_circle.htm | 84 - .../Collisions/point_in_rectangle.htm | 84 - .../Collisions/point_in_triangle.htm | 97 - .../Collisions/position_change.htm | 77 - .../Collisions/position_destroy.htm | 67 - .../Collisions/position_empty.htm | 70 - .../Collisions/position_meeting.htm | 79 - .../Collisions/rectangle_in_circle.htm | 93 - .../Collisions/rectangle_in_rectangle.htm | 94 - .../Collisions/rectangle_in_triangle.htm | 108 - .../Motion_Planning/Motion_Planning.htm | 80 - .../Motion_Planning/mp_grid_add_cell.htm | 80 - .../Motion_Planning/mp_grid_add_instances.htm | 74 - .../Motion_Planning/mp_grid_add_rectangle.htm | 84 - .../Motion_Planning/mp_grid_clear_all.htm | 65 - .../Motion_Planning/mp_grid_clear_cell.htm | 76 - .../mp_grid_clear_rectangle.htm | 83 - .../Motion_Planning/mp_grid_create.htm | 88 - .../Motion_Planning/mp_grid_destroy.htm | 67 - .../Motion_Planning/mp_grid_draw.htm | 65 - .../Motion_Planning/mp_grid_get_cell.htm | 81 - .../Motion_Planning/mp_grid_path.htm | 104 - .../Motion_Planning/mp_grid_to_ds_grid.htm | 69 - .../Motion_Planning/mp_linear_path.htm | 81 - .../Motion_Planning/mp_linear_path_object.htm | 88 - .../Motion_Planning/mp_linear_step.htm | 78 - .../Motion_Planning/mp_linear_step_object.htm | 82 - .../Motion_Planning/mp_potential_path.htm | 87 - .../mp_potential_path_object.htm | 87 - .../Motion_Planning/mp_potential_settings.htm | 79 - .../Motion_Planning/mp_potential_step.htm | 78 - .../mp_potential_step_object.htm | 83 - .../Movement/Movement.htm | 75 - .../Movement/motion_add.htm | 67 - .../Movement/motion_set.htm | 67 - .../Movement/move_bounce_all.htm | 63 - .../Movement/move_bounce_solid.htm | 61 - .../Movement/move_contact_all.htm | 67 - .../Movement/move_contact_solid.htm | 67 - .../Movement/move_outside_all.htm | 67 - .../Movement/move_outside_solid.htm | 69 - .../Movement/move_random.htm | 68 - .../Movement/move_snap.htm | 70 - .../Movement/move_towards_point.htm | 77 - .../Movement/move_wrap.htm | 72 - .../Movement/place_snapped.htm | 71 - .../Movement_And_Collisions.htm | 43 - .../GML_Reference/Networking/Networking.htm | 62 - .../Networking/network_connect.htm | 74 - .../Networking/network_connect_async.htm | 70 - .../Networking/network_connect_raw.htm | 74 - .../Networking/network_connect_raw_async.htm | 70 - .../Networking/network_create_server.htm | 84 - .../Networking/network_create_server_raw.htm | 80 - .../Networking/network_create_socket.htm | 80 - .../Networking/network_create_socket_ext.htm | 70 - .../Networking/network_destroy.htm | 64 - .../Networking/network_resolve.htm | 61 - .../Networking/network_send_broadcast.htm | 81 - .../Networking/network_send_packet.htm | 69 - .../Networking/network_send_raw.htm | 104 - .../Networking/network_send_udp.htm | 83 - .../Networking/network_send_udp_raw.htm | 77 - .../Networking/network_set_config.htm | 132 -- .../Networking/network_set_timeout.htm | 69 - .../OS_And_Compiler/GM_build_date.htm | 49 - .../OS_And_Compiler/GM_build_type.htm | 49 - .../OS_And_Compiler/GM_project_filename.htm | 49 - .../OS_And_Compiler/GM_runtime_version.htm | 50 - .../OS_And_Compiler/GM_version.htm | 48 - .../OS_And_Compiler/OS_And_Compiler.htm | 84 - .../environment_get_variable.htm | 64 - .../OS_And_Compiler/external_call.htm | 68 - .../OS_And_Compiler/external_define.htm | 141 -- .../OS_And_Compiler/external_free.htm | 63 - .../OS_And_Compiler/gml_pragma.htm | 100 - .../OS_And_Compiler/gml_release_mode.htm | 66 - .../OS_And_Compiler/os_browser.htm | 125 -- .../OS_And_Compiler/os_check_permission.htm | 101 - .../OS_And_Compiler/os_device.htm | 126 -- .../OS_And_Compiler/os_get_config.htm | 53 - .../OS_And_Compiler/os_get_info.htm | 201 -- .../OS_And_Compiler/os_get_language.htm | 126 -- .../OS_And_Compiler/os_get_region.htm | 76 - .../os_is_network_connected.htm | 68 - .../OS_And_Compiler/os_is_paused.htm | 58 - .../OS_And_Compiler/os_lock_orientation.htm | 63 - .../OS_And_Compiler/os_powersave_enable.htm | 65 - .../OS_And_Compiler/os_request_permission.htm | 101 - .../GML_Reference/OS_And_Compiler/os_type.htm | 139 -- .../OS_And_Compiler/os_version.htm | 120 - .../OS_And_Compiler/parameter_count.htm | 50 - .../OS_And_Compiler/parameter_string.htm | 57 - .../scheduler_resolution_get.htm | 50 - .../scheduler_resolution_set.htm | 63 - .../Physics/Fixtures/Fixtures.htm | 89 - .../Fixtures/physics_fixture_add_point.htm | 76 - .../Physics/Fixtures/physics_fixture_bind.htm | 76 - .../Fixtures/physics_fixture_bind_ext.htm | 86 - .../Fixtures/physics_fixture_create.htm | 49 - .../Fixtures/physics_fixture_delete.htm | 64 - .../physics_fixture_set_angular_damping.htm | 65 - .../Fixtures/physics_fixture_set_awake.htm | 66 - .../physics_fixture_set_box_shape.htm | 68 - .../physics_fixture_set_chain_shape.htm | 74 - .../physics_fixture_set_circle_shape.htm | 64 - .../physics_fixture_set_collision_group.htm | 68 - .../Fixtures/physics_fixture_set_density.htm | 73 - .../physics_fixture_set_edge_shape.htm | 88 - .../Fixtures/physics_fixture_set_friction.htm | 66 - .../physics_fixture_set_kinematic.htm | 64 - .../physics_fixture_set_linear_damping.htm | 67 - .../physics_fixture_set_polygon_shape.htm | 62 - .../physics_fixture_set_restitution.htm | 66 - .../Fixtures/physics_fixture_set_sensor.htm | 68 - .../Physics/Fixtures/physics_get_density.htm | 62 - .../Physics/Fixtures/physics_get_friction.htm | 64 - .../Fixtures/physics_get_restitution.htm | 62 - .../Fixtures/physics_remove_fixture.htm | 67 - .../Physics/Fixtures/physics_set_density.htm | 65 - .../Physics/Fixtures/physics_set_friction.htm | 64 - .../Fixtures/physics_set_restitution.htm | 64 - .../GML_Reference/Physics/Forces/Forces.htm | 55 - .../Forces/physics_apply_angular_impulse.htm | 63 - .../Physics/Forces/physics_apply_force.htm | 82 - .../Physics/Forces/physics_apply_impulse.htm | 80 - .../Forces/physics_apply_local_force.htm | 77 - .../Forces/physics_apply_local_impulse.htm | 77 - .../Physics/Forces/physics_apply_torque.htm | 64 - .../GML_Reference/Physics/Joints/Joints.htm | 64 - .../Joints/Physics_Joint_Constants.htm | 319 --- .../Physics/Joints/physics_joint_delete.htm | 74 - .../Joints/physics_joint_distance_create.htm | 101 - .../Joints/physics_joint_enable_motor.htm | 76 - .../Joints/physics_joint_friction_create.htm | 101 - .../Joints/physics_joint_gear_create.htm | 100 - .../Joints/physics_joint_get_value.htm | 79 - .../Joints/physics_joint_prismatic_create.htm | 133 -- .../Joints/physics_joint_pulley_create.htm | 128 -- .../Joints/physics_joint_revolute_create.htm | 123 -- .../Joints/physics_joint_rope_create.htm | 106 - .../Joints/physics_joint_set_value.htm | 75 - .../Joints/physics_joint_weld_create.htm | 116 - .../Joints/physics_joint_wheel_create.htm | 129 -- .../GML_Reference/Physics/Physics.htm | 66 - .../Physics_Variables/Physics_Variables.htm | 77 - .../Physics/Physics_Variables/phy_active.htm | 55 - .../Physics_Variables/phy_angular_damping.htm | 55 - .../phy_angular_velocity.htm | 55 - .../Physics/Physics_Variables/phy_bullet.htm | 52 - .../Physics_Variables/phy_col_normal_x.htm | 55 - .../Physics_Variables/phy_col_normal_y.htm | 55 - .../phy_collision_points.htm | 52 - .../Physics_Variables/phy_collision_x.htm | 52 - .../Physics_Variables/phy_collision_y.htm | 52 - .../Physics/Physics_Variables/phy_com_x.htm | 48 - .../Physics/Physics_Variables/phy_com_y.htm | 48 - .../Physics/Physics_Variables/phy_dynamic.htm | 56 - .../Physics_Variables/phy_fixed_rotation.htm | 49 - .../Physics/Physics_Variables/phy_inertia.htm | 49 - .../Physics_Variables/phy_kinematic.htm | 51 - .../Physics_Variables/phy_linear_damping.htm | 55 - .../phy_linear_velocity_x.htm | 51 - .../phy_linear_velocity_y.htm | 51 - .../Physics/Physics_Variables/phy_mass.htm | 51 - .../Physics_Variables/phy_position_x.htm | 49 - .../phy_position_xprevious.htm | 48 - .../Physics_Variables/phy_position_y.htm | 49 - .../phy_position_yprevious.htm | 48 - .../Physics_Variables/phy_rotation.htm | 52 - .../Physics_Variables/phy_sleeping.htm | 51 - .../Physics/Physics_Variables/phy_speed.htm | 55 - .../Physics/Physics_Variables/phy_speed_x.htm | 51 - .../Physics/Physics_Variables/phy_speed_y.htm | 51 - .../Soft_Body_Particles.htm | 103 - .../physics_particle_count.htm | 52 - .../physics_particle_create.htm | 165 -- .../physics_particle_delete.htm | 62 - .../physics_particle_delete_region_box.htm | 73 - .../physics_particle_delete_region_circle.htm | 69 - .../physics_particle_delete_region_poly.htm | 68 - .../physics_particle_draw.htm | 80 - .../physics_particle_draw_ext.htm | 105 - .../physics_particle_get_damping.htm | 52 - .../physics_particle_get_data.htm | 130 -- .../physics_particle_get_data_particle.htm | 120 - .../physics_particle_get_density.htm | 52 - .../physics_particle_get_gravity_scale.htm | 49 - .../physics_particle_get_group_flags.htm | 68 - .../physics_particle_get_max_count.htm | 52 - .../physics_particle_get_radius.htm | 52 - .../physics_particle_group_add_point.htm | 67 - .../physics_particle_group_begin.htm | 153 -- .../physics_particle_group_box.htm | 68 - .../physics_particle_group_circle.htm | 63 - .../physics_particle_group_count.htm | 61 - .../physics_particle_group_delete.htm | 62 - .../physics_particle_group_end.htm | 51 - .../physics_particle_group_get_ang_vel.htm | 62 - .../physics_particle_group_get_angle.htm | 62 - .../physics_particle_group_get_centre_x.htm | 62 - .../physics_particle_group_get_centre_y.htm | 62 - .../physics_particle_group_get_data.htm | 127 -- .../physics_particle_group_get_inertia.htm | 63 - .../physics_particle_group_get_mass.htm | 63 - .../physics_particle_group_get_vel_x.htm | 62 - .../physics_particle_group_get_vel_y.htm | 62 - .../physics_particle_group_get_x.htm | 62 - .../physics_particle_group_get_y.htm | 62 - .../physics_particle_group_join.htm | 75 - .../physics_particle_group_polygon.htm | 53 - .../physics_particle_set_category_flags.htm | 122 -- .../physics_particle_set_damping.htm | 64 - .../physics_particle_set_density.htm | 65 - .../physics_particle_set_flags.htm | 122 -- .../physics_particle_set_gravity_scale.htm | 66 - .../physics_particle_set_group_flags.htm | 87 - .../physics_particle_set_max_count.htm | 62 - .../physics_particle_set_radius.htm | 64 - .../The_Physics_World/The_Physics_World.htm | 47 - .../The_Physics_World/physics_draw_debug.htm | 52 - .../physics_pause_enable.htm | 66 - .../physics_world_create.htm | 66 - .../physics_world_draw_debug.htm | 118 - .../physics_world_gravity.htm | 70 - .../physics_world_update_iterations.htm | 62 - .../physics_world_update_speed.htm | 63 - .../Physics/physics_mass_properties.htm | 83 - .../Physics/physics_test_overlap.htm | 82 - .../Rollback/Creating_Multiplayer.htm | 153 -- .../Rollback/Defining_Inputs.htm | 146 -- .../Rollback/Rollback_Constraints.htm | 103 - .../Rollback/Rollback_Errors.htm | 176 -- .../Rollback/Rollback_Events.htm | 147 -- .../Rollback_Functions/rollback_chat.htm | 99 - .../rollback_create_game.htm | 110 - .../rollback_define_input.htm | 76 - .../rollback_define_mock_input.htm | 87 - .../rollback_define_player.htm | 83 - .../rollback_display_events.htm | 68 - .../Rollback_Functions/rollback_get_info.htm | 109 - .../Rollback_Functions/rollback_get_input.htm | 78 - .../rollback_get_player_prefs.htm | 75 - .../Rollback_Functions/rollback_join_game.htm | 77 - .../rollback_leave_game.htm | 59 - .../rollback_set_player_prefs.htm | 75 - .../rollback_start_game.htm | 57 - .../rollback_sync_on_frame.htm | 63 - .../rollback_use_manual_start.htm | 58 - .../rollback_use_player_prefs.htm | 75 - .../rollback_use_random_input.htm | 68 - .../Rollback/Rollback_Preferences.htm | 42 - .../Rollback/Rollback_System.htm | 123 -- .../Rollback/Rollback_Variables/managed.htm | 46 - .../Rollback/Rollback_Variables/player_.htm | 58 - .../Rollback_Variables/player_avatar_s.htm | 51 - .../Rollback_Variables/player_avatar_url.htm | 48 - .../Rollback/Rollback_Variables/player_id.htm | 73 - .../Rollback_Variables/player_local.htm | 54 - .../Rollback_Variables/player_prefs.htm | 50 - .../Rollback_Variables/player_type.htm | 63 - .../Rollback_Variables/player_user_id.htm | 47 - .../Rollback/Rollback_Variables/rollback_.htm | 45 - .../rollback_confirmed_frame.htm | 58 - .../rollback_current_frame.htm | 49 - .../rollback_game_running.htm | 52 - .../GML_Reference/Steam/Steam.htm | 39 - .../Steam/Steam_API/Steam_API.htm | 50 - .../Steam_API/steam_available_languages.htm | 48 - .../Steam_API/steam_current_game_language.htm | 48 - .../Steam/Steam_API/steam_get_app_id.htm | 48 - .../Steam_API/steam_get_persona_name.htm | 51 - .../Steam_API/steam_get_user_account_id.htm | 48 - .../Steam_API/steam_get_user_persona_name.htm | 67 - .../Steam_API/steam_get_user_steam_id.htm | 51 - .../Steam/Steam_API/steam_initialised.htm | 55 - .../Steam_API/steam_is_user_logged_on.htm | 51 - .../Steam/Steam_API/steam_stats_ready.htm | 55 - .../Steam_Achievements/Steam_Achievements.htm | 59 - .../steam_clear_achievement.htm | 66 - .../steam_get_achievement.htm | 67 - .../steam_get_stat_avg_rate.htm | 61 - .../steam_get_stat_float.htm | 64 - .../Steam_Achievements/steam_get_stat_int.htm | 65 - .../steam_reset_all_stats.htm | 54 - .../steam_reset_all_stats_achievements.htm | 54 - .../steam_set_achievement.htm | 67 - .../steam_set_stat_avg_rate.htm | 80 - .../steam_set_stat_float.htm | 65 - .../Steam_Achievements/steam_set_stat_int.htm | 69 - .../Steam/Steam_Cloud/Steam_Cloud.htm | 54 - .../Steam/Steam_Cloud/steam_file_delete.htm | 63 - .../Steam/Steam_Cloud/steam_file_exists.htm | 63 - .../Steam_Cloud/steam_file_persisted.htm | 63 - .../Steam/Steam_Cloud/steam_file_read.htm | 63 - .../Steam/Steam_Cloud/steam_file_share.htm | 63 - .../Steam/Steam_Cloud/steam_file_size.htm | 60 - .../Steam/Steam_Cloud/steam_file_write.htm | 69 - .../Steam_Cloud/steam_file_write_file.htm | 65 - .../Steam_Cloud/steam_get_quota_free.htm | 51 - .../Steam_Cloud/steam_get_quota_total.htm | 52 - .../steam_is_cloud_enabled_for_account.htm | 51 - .../steam_is_cloud_enabled_for_app.htm | 51 - .../Steam/Steam_DLC/Steam_DLC.htm | 43 - .../Steam_DLC/steam_user_installed_dlc.htm | 67 - .../Steam/Steam_DLC/steam_user_owns_dlc.htm | 68 - .../Steam_Leaderboards/Steam_Leaderboards.htm | 47 - .../steam_create_leaderboard.htm | 124 -- .../steam_download_friends_scores.htm | 63 - .../steam_download_scores.htm | 97 - .../steam_download_scores_around_user.htm | 72 - .../Steam_Leaderboards/steam_upload_score.htm | 102 - .../steam_upload_score_buffer.htm | 111 - .../Steam/Steam_Overlay/Steam_Overlay.htm | 46 - .../Steam_Overlay/steam_activate_overlay.htm | 110 - .../steam_activate_overlay_browser.htm | 63 - .../steam_activate_overlay_store.htm | 63 - .../steam_activate_overlay_user.htm | 74 - .../steam_is_overlay_activated.htm | 51 - .../steam_is_overlay_enabled.htm | 55 - .../Steam/Steam_UGC/Steam_UGC.htm | 116 - .../steam_is_screenshot_requested.htm | 56 - .../Steam/Steam_UGC/steam_send_screenshot.htm | 74 - .../Steam/Steam_UGC/steam_ugc_create_item.htm | 103 - .../Steam_UGC/steam_ugc_create_query_all.htm | 210 -- .../steam_ugc_create_query_all_ex.htm | 217 -- .../Steam_UGC/steam_ugc_create_query_user.htm | 242 --- .../steam_ugc_create_query_user_ex.htm | 254 --- .../Steam/Steam_UGC/steam_ugc_download.htm | 85 - .../steam_ugc_get_item_install_info.htm | 70 - .../steam_ugc_get_item_update_info.htm | 79 - .../steam_ugc_get_item_update_progress.htm | 73 - .../steam_ugc_get_subscribed_items.htm | 62 - .../steam_ugc_num_subscribed_items.htm | 48 - .../steam_ugc_query_add_excluded_tag.htm | 65 - .../steam_ugc_query_add_required_tag.htm | 66 - ...am_ugc_query_set_allow_cached_response.htm | 66 - ...am_ugc_query_set_cloud_filename_filter.htm | 66 - .../steam_ugc_query_set_match_any_tag.htm | 66 - ...eam_ugc_query_set_ranked_by_trend_days.htm | 67 - ..._ugc_query_set_return_long_description.htm | 65 - .../steam_ugc_query_set_return_total_only.htm | 66 - .../steam_ugc_query_set_search_text.htm | 66 - .../steam_ugc_request_item_details.htm | 109 - .../Steam/Steam_UGC/steam_ugc_send_query.htm | 101 - .../Steam_UGC/steam_ugc_set_item_content.htm | 68 - .../steam_ugc_set_item_description.htm | 68 - .../Steam_UGC/steam_ugc_set_item_preview.htm | 69 - .../Steam_UGC/steam_ugc_set_item_tags.htm | 68 - .../Steam_UGC/steam_ugc_set_item_title.htm | 68 - .../steam_ugc_set_item_visibility.htm | 93 - .../Steam_UGC/steam_ugc_start_item_update.htm | 68 - .../steam_ugc_submit_item_update.htm | 75 - .../Steam_UGC/steam_ugc_subscribe_item.htm | 68 - .../Steam_UGC/steam_ugc_unsubscribe_item.htm | 68 - .../GML_Reference/Strings/Strings.htm | 164 -- .../GML_Reference/Strings/ansi_char.htm | 62 - .../GML_Reference/Strings/chr.htm | 63 - .../Strings/clipboard_get_text.htm | 54 - .../Strings/clipboard_has_text.htm | 54 - .../Strings/clipboard_set_text.htm | 67 - .../GML_Reference/Strings/ord.htm | 66 - .../GML_Reference/Strings/string.htm | 63 - .../GML_Reference/Strings/string_byte_at.htm | 66 - .../Strings/string_byte_length.htm | 63 - .../GML_Reference/Strings/string_char_at.htm | 66 - .../GML_Reference/Strings/string_copy.htm | 73 - .../GML_Reference/Strings/string_count.htm | 66 - .../GML_Reference/Strings/string_delete.htm | 70 - .../GML_Reference/Strings/string_digits.htm | 63 - .../GML_Reference/Strings/string_format.htm | 75 - .../Strings/string_hash_to_newline.htm | 68 - .../GML_Reference/Strings/string_height.htm | 63 - .../Strings/string_height_ext.htm | 71 - .../GML_Reference/Strings/string_insert.htm | 71 - .../GML_Reference/Strings/string_last_pos.htm | 68 - .../Strings/string_last_pos_ext.htm | 72 - .../GML_Reference/Strings/string_length.htm | 66 - .../GML_Reference/Strings/string_letters.htm | 63 - .../Strings/string_lettersdigits.htm | 65 - .../GML_Reference/Strings/string_lower.htm | 63 - .../GML_Reference/Strings/string_ord_at.htm | 65 - .../GML_Reference/Strings/string_pos.htm | 68 - .../GML_Reference/Strings/string_pos_ext.htm | 72 - .../GML_Reference/Strings/string_repeat.htm | 66 - .../GML_Reference/Strings/string_replace.htm | 70 - .../Strings/string_replace_all.htm | 70 - .../Strings/string_set_byte_at.htm | 71 - .../GML_Reference/Strings/string_upper.htm | 63 - .../GML_Reference/Strings/string_width.htm | 63 - .../Strings/string_width_ext.htm | 72 - .../Time_Sources/call_cancel.htm | 67 - .../GML_Reference/Time_Sources/call_later.htm | 121 -- .../Time_Sources/time_bpm_to_seconds.htm | 76 - .../Time_Sources/time_seconds_to_bpm.htm | 72 - .../Time_Sources/time_source_create.htm | 166 -- .../Time_Sources/time_source_destroy.htm | 79 - .../Time_Sources/time_source_exists.htm | 75 - .../Time_Sources/time_source_get_children.htm | 77 - .../Time_Sources/time_source_get_parent.htm | 68 - .../Time_Sources/time_source_get_period.htm | 65 - .../time_source_get_reps_completed.htm | 64 - .../time_source_get_reps_remaining.htm | 65 - .../Time_Sources/time_source_get_state.htm | 81 - .../time_source_get_time_remaining.htm | 65 - .../Time_Sources/time_source_get_units.htm | 63 - .../Time_Sources/time_source_pause.htm | 82 - .../Time_Sources/time_source_reconfigure.htm | 105 - .../Time_Sources/time_source_reset.htm | 70 - .../Time_Sources/time_source_resume.htm | 81 - .../Time_Sources/time_source_start.htm | 80 - .../Time_Sources/time_source_stop.htm | 70 - .../Match_Making/Match_Making.htm | 98 - .../xboxlive_matchmaking_create.htm | 126 -- .../xboxlive_matchmaking_find.htm | 91 - .../xboxlive_matchmaking_join_invite.htm | 74 - .../xboxlive_matchmaking_join_session.htm | 87 - .../xboxlive_matchmaking_send_invites.htm | 73 - ...xboxlive_matchmaking_session_get_users.htm | 75 - .../xboxlive_matchmaking_session_leave.htm | 63 - ...xlive_matchmaking_set_joinable_session.htm | 67 - .../xboxlive_matchmaking_start.htm | 61 - .../xboxlive_matchmaking_stop.htm | 63 - .../Saving_Data/Saving_Data.htm | 46 - .../Saving_Data/xboxlive_get_file_error.htm | 84 - .../xboxlive_get_savedata_user.htm | 51 - .../xboxlive_set_savedata_user.htm | 65 - .../Stats_And_Leaderboards.htm | 68 - .../xboxlive_achievements_set_progress.htm | 73 - .../xboxlive_fire_event.htm | 69 - .../xboxlive_get_stats_for_user.htm | 86 - .../xboxlive_read_player_leaderboard.htm | 126 -- .../xboxlive_stats_add_user.htm | 74 - .../xboxlive_stats_delete_stat.htm | 69 - .../xboxlive_stats_flush_user.htm | 82 - .../xboxlive_stats_get_leaderboard.htm | 128 -- .../xboxlive_stats_get_social_leaderboard.htm | 127 -- .../xboxlive_stats_get_stat.htm | 71 - .../xboxlive_stats_get_stat_names.htm | 64 - .../xboxlive_stats_remove_user.htm | 76 - .../xboxlive_stats_set_stat_int.htm | 72 - .../xboxlive_stats_set_stat_real.htm | 77 - .../xboxlive_stats_set_stat_string.htm | 74 - .../xboxlive_stats_setup.htm | 74 - .../UWP_And_XBox_Live/UWP_And_XBox_Live.htm | 60 - .../Users_And_Accounts/Users_And_Accounts.htm | 70 - .../xboxlive_agegroup_for_user.htm | 104 - .../xboxlive_gamedisplayname_for_user.htm | 64 - .../xboxlive_gamerscore_for_user.htm | 74 - .../xboxlive_gamertag_for_user.htm | 58 - .../xboxlive_generate_player_session_id.htm | 58 - .../xboxlive_get_activating_user.htm | 49 - .../Users_And_Accounts/xboxlive_get_user.htm | 67 - .../xboxlive_get_user_count.htm | 51 - .../xboxlive_pad_count_for_user.htm | 60 - .../xboxlive_pad_for_user.htm | 78 - .../xboxlive_reputation_for_user.htm | 74 - .../xboxlive_set_rich_presence.htm | 79 - .../xboxlive_show_account_picker.htm | 58 - .../xboxlive_show_profile_card_for_user.htm | 68 - .../xboxlive_sponsor_for_user.htm | 63 - .../xboxlive_sprite_add_from_gamerpicture.htm | 91 - .../xboxlive_user_for_pad.htm | 71 - .../xboxlive_user_id_for_user.htm | 60 - .../xboxlive_user_is_active.htm | 70 - .../xboxlive_user_is_guest.htm | 67 - .../xboxlive_user_is_remote.htm | 72 - .../xboxlive_user_is_signed_in.htm | 58 - .../xboxlive_user_is_signing_in.htm | 58 - .../UWP_And_XBox_Live/uwp_check_privilege.htm | 202 -- .../UWP_And_XBox_Live/uwp_is_constrained.htm | 54 - .../UWP_And_XBox_Live/uwp_is_suspending.htm | 52 - .../uwp_license_trial_time_remaining.htm | 58 - .../uwp_license_trial_user.htm | 55 - .../uwp_license_trial_version.htm | 51 - .../UWP_And_XBox_Live/uwp_show_help.htm | 67 - .../UWP_And_XBox_Live/uwp_suspend.htm | 52 - .../uwp_was_closed_by_user.htm | 51 - .../UWP_And_XBox_Live/uwp_was_terminated.htm | 52 - .../Variable_Functions/Variable_Functions.htm | 107 - .../Variable_Functions/array_copy.htm | 97 - .../Variable_Functions/array_create.htm | 68 - .../Variable_Functions/array_delete.htm | 68 - .../Variable_Functions/array_equals.htm | 91 - .../Variable_Functions/array_get.htm | 78 - .../Variable_Functions/array_height_2d.htm | 70 - .../Variable_Functions/array_insert.htm | 77 - .../Variable_Functions/array_length.htm | 75 - .../Variable_Functions/array_length_1d.htm | 68 - .../Variable_Functions/array_length_2d.htm | 75 - .../Variable_Functions/array_pop.htm | 61 - .../Variable_Functions/array_push.htm | 72 - .../Variable_Functions/array_resize.htm | 83 - .../Variable_Functions/array_set.htm | 82 - .../Variable_Functions/array_sort.htm | 111 - .../GML_Reference/Variable_Functions/bool.htm | 66 - .../Variable_Functions/instanceof.htm | 79 - .../Variable_Functions/int64.htm | 63 - .../Variable_Functions/is_array.htm | 66 - .../Variable_Functions/is_bool.htm | 70 - .../Variable_Functions/is_infinity.htm | 66 - .../Variable_Functions/is_int32.htm | 66 - .../Variable_Functions/is_int64.htm | 66 - .../Variable_Functions/is_matrix.htm | 66 - .../Variable_Functions/is_method.htm | 66 - .../Variable_Functions/is_nan.htm | 66 - .../Variable_Functions/is_numeric.htm | 66 - .../Variable_Functions/is_ptr.htm | 66 - .../Variable_Functions/is_real.htm | 67 - .../Variable_Functions/is_string.htm | 66 - .../Variable_Functions/is_struct.htm | 67 - .../Variable_Functions/is_undefined.htm | 68 - .../Variable_Functions/is_vec3.htm | 66 - .../Variable_Functions/is_vec4.htm | 66 - .../Variable_Functions/method.htm | 75 - .../Variable_Functions/method_get_index.htm | 67 - .../Variable_Functions/method_get_self.htm | 62 - .../GML_Reference/Variable_Functions/ptr.htm | 66 - .../GML_Reference/Variable_Functions/real.htm | 64 - .../Variable_Functions/typeof.htm | 144 -- .../variable_global_exists.htm | 66 - .../variable_global_get.htm | 65 - .../variable_global_set.htm | 70 - .../variable_instance_exists.htm | 76 - .../variable_instance_get.htm | 81 - .../variable_instance_get_names.htm | 75 - .../variable_instance_names_count.htm | 69 - .../variable_instance_set.htm | 81 - .../variable_struct_exists.htm | 71 - .../variable_struct_get.htm | 76 - .../variable_struct_get_names.htm | 70 - .../variable_struct_names_count.htm | 64 - .../variable_struct_remove.htm | 70 - .../variable_struct_set.htm | 75 - .../Web_And_HTML5/Web_And_HTML5.htm | 72 - .../Web_And_HTML5/analytics_event.htm | 63 - .../Web_And_HTML5/analytics_event_ext.htm | 73 - .../Web_And_HTML5/browser_height.htm | 68 - .../Web_And_HTML5/browser_input_capture.htm | 62 - .../Web_And_HTML5/browser_width.htm | 68 - .../Web_And_HTML5/clickable_add.htm | 170 -- .../Web_And_HTML5/clickable_add_ext.htm | 100 - .../Web_And_HTML5/clickable_change.htm | 81 - .../Web_And_HTML5/clickable_change_ext.htm | 91 - .../Web_And_HTML5/clickable_delete.htm | 65 - .../Web_And_HTML5/clickable_exists.htm | 66 - .../Web_And_HTML5/clickable_set_style.htm | 70 - .../Web_And_HTML5/url_get_domain.htm | 49 - .../GML_Reference/Web_And_HTML5/url_open.htm | 63 - .../Web_And_HTML5/url_open_ext.htm | 93 - .../Web_And_HTML5/url_open_full.htm | 152 -- .../Web_And_HTML5/webgl_enabled.htm | 52 - .../GameMaker_Language_Index.htm | 45 - Manual/contents/IDE_Navigation/Bookmarks.htm | 44 - Manual/contents/IDE_Navigation/IDE_Input.htm | 120 - .../IDE_Navigation/Keyboard_Shortcuts.htm | 1932 ----------------- Manual/contents/IDE_Navigation/Menus.htm | 51 - .../IDE_Navigation/Menus/The_Build_Menu.htm | 44 - .../IDE_Navigation/Menus/The_Edit_Menu.htm | 69 - .../IDE_Navigation/Menus/The_File_Menu.htm | 68 - .../IDE_Navigation/Menus/The_Help_Menu.htm | 64 - .../IDE_Navigation/Menus/The_Layouts_Menu.htm | 44 - .../Menus/The_Marketplace_Menu.htm | 47 - .../IDE_Navigation/Menus/The_Tools_Menu.htm | 48 - .../IDE_Navigation/Menus/The_Windows_Menu.htm | 47 - .../IDE_Navigation/Recent_Windows.htm | 38 - .../IDE_Tools/Additional_IDE_Tools.htm | 46 - .../IDE_Tools/Local_Asset_Packages.htm | 54 - .../IDE_Tools/Project_Image_Generator.htm | 63 - Manual/contents/IDE_Tools/Remote_Workers.htm | 107 - Manual/contents/IDE_Tools/Sound_Mixer.htm | 47 - Manual/contents/IDE_Tools/Source_Control.htm | 64 - .../Source_Control/Cloning_A_Repository.htm | 54 - .../IDE_Tools/Source_Control/Conflicts.htm | 56 - .../External_Merge_Diff_Tools.htm | 71 - .../Source_Control/Repository_Options.htm | 45 - .../Source_Control/Reverting_Files.htm | 79 - .../Source_Control/Setting_Up_Git_Plugin.htm | 42 - .../Source_Control/Standard_Workflow.htm | 60 - Manual/contents/IDE_Tools/The_Debugger.htm | 153 -- .../IDE_Tools/The_Debugger/The_Profiler.htm | 80 - .../IDE_Tools/The_Debugger/Watches.htm | 126 -- Manual/contents/IDE_Tools/The_Inspector.htm | 110 - .../IDE_Tools/The_Micro_Web_Server.htm | 48 - Manual/contents/Introduction/Compiling.htm | 138 -- Manual/contents/Introduction/Debugging.htm | 76 - .../Introduction_To_GameMaker_Studio_2.htm | 45 - .../Creating_A_Marketplace_Asset.htm | 68 - .../Creating_A_Publisher_Account.htm | 85 - .../Marketplace/Creating_A_Tutorial.htm | 48 - .../Marketplace/Listing_A_Service.htm | 80 - .../Marketplace/Listing_An_Asset.htm | 84 - .../Marketplace/Marketplace_Style_Guide.htm | 133 -- .../Marketplace/Purchasing_An_Asset.htm | 44 - .../Rating_And_Flagging_Assets.htm | 59 - .../Marketplace/Submission_Guidelines.htm | 104 - .../Marketplace/Your_Marketplace_Library.htm | 53 - .../Introduction/Our_Knowledge_Base.htm | 51 - .../Introduction/Our_Social_Links.htm | 62 - .../Introduction/The_Asset_Browser.htm | 344 --- .../contents/Introduction/The_Marketplace.htm | 69 - .../Introduction/The_Output_Window.htm | 114 - .../contents/Introduction/The_Start_Page.htm | 93 - Manual/contents/Introduction/Workspaces.htm | 148 -- .../Creating_Sound_Effects.htm | 58 - .../Quick_Start_Guide/Creating_Sprites.htm | 82 - .../Quick_Start_Guide/Creating_Tile_Sets.htm | 63 - Manual/contents/Quick_Start_Guide/Drawing.htm | 277 --- .../Movement_And_Controls.htm | 212 -- .../Objects_And_Instances.htm | 97 - .../Quick_Start_Guide/Quick_Start_Guide.htm | 50 - Manual/contents/Quick_Start_Guide/Rooms.htm | 117 - .../contents/Quick_Start_Guide/Sequences.htm | 50 - Manual/contents/Quick_Start_Guide/Summary.htm | 62 - .../What_Is_Programming_.htm | 149 -- .../Error_Reporting.htm | 44 - .../GMS2_Version_Information.htm | 68 - .../IDE_Preferences.htm | 73 - .../Anim_Curve_Editor_Preferences.htm | 44 - .../Asset_Browser_Preferences.htm | 83 - .../Drag_And_Drop_Preferences.htm | 69 - .../Extension_Editor_Preferences.htm | 44 - .../IDE_Preferences/Feather_Settings.htm | 112 - .../Font_Editor_Preferences.htm | 57 - .../IDE_Preferences/GML_Code_Preferences.htm | 46 - .../GML_Visual_Preferences.htm | 54 - .../IDE_Preferences/General/Background.htm | 55 - .../IDE_Preferences/General/Compiling.htm | 50 - .../General/Confirm_Dialogs.htm | 51 - .../IDE_Preferences/General/Debugging.htm | 73 - .../IDE_Preferences/General/File_Watcher.htm | 48 - .../IDE_Preferences/General/Go_To.htm | 47 - .../IDE_Preferences/General/Help.htm | 44 - .../IDE_Preferences/General/Input.htm | 52 - .../General/Output_Windows.htm | 75 - .../IDE_Preferences/General/Paths.htm | 103 - .../IDE_Preferences/General/Power_Saving.htm | 45 - .../General/Recent_Windows.htm | 44 - .../IDE_Preferences/General/Resources.htm | 45 - .../IDE_Preferences/General/Workspace.htm | 50 - .../IDE_Preferences/General_Preferences.htm | 80 - .../Image_Editor_Preferences.htm | 149 -- .../IDE_Preferences/Language_Preferences.htm | 47 - .../Marketplace_Preferences.htm | 74 - .../Object_Editor_Preferences.htm | 53 - .../IDE_Preferences/Plugin_Preferences.htm | 62 - .../Redefine_Keys_Preferences.htm | 88 - .../Room_Editor_Preferences.htm | 104 - .../Runtime_Feed_Preferences.htm | 60 - .../IDE_Preferences/Sequences_Preferences.htm | 73 - .../IDE_Preferences/Spline_Editor.htm | 54 - .../Sprite_Editor_Preferences.htm | 65 - .../Start_Screen_Preferences.htm | 43 - .../Text_Editor_Preferences.htm | 85 - .../Tile_Set_Editor_Preferences.htm | 44 - .../IDE_Preferences/Timeline_Preferences.htm | 45 - .../Installation_Guide.htm | 55 - .../Licencing_Information.htm | 56 - .../Platform_Preferences.htm | 51 - .../Platform_Preferences/Android.htm | 65 - .../Platform_Preferences/HTML5.htm | 46 - .../Opera_GX_Preferences.htm | 45 - .../Platform_Preferences/Steam.htm | 43 - .../Platform_Preferences/Windows.htm | 45 - .../Platform_Preferences/Windows_UWP.htm | 47 - .../Platform_Preferences/iOS.htm | 46 - .../Platform_Preferences/macOS.htm | 43 - .../Platform_Preferences/tvOS.htm | 49 - .../Release_Notes.htm | 46 - .../Required_SDKs.htm | 42 - .../The_Device_Manager.htm | 184 -- .../Updating_Guide.htm | 48 - Manual/contents/Settings/Audio_Groups.htm | 58 - .../Settings/Building_via_Command_Line.htm | 474 ---- .../Settings/Command_Line_Parameters.htm | 91 - Manual/contents/Settings/Configurations.htm | 58 - Manual/contents/Settings/Game_Options.htm | 76 - .../Settings/Game_Options/Amazon_Fire.htm | 108 - .../Settings/Game_Options/Android.htm | 148 -- .../contents/Settings/Game_Options/HTML5.htm | 84 - .../Settings/Game_Options/Opera_GX.htm | 77 - .../Settings/Game_Options/Template_Info.htm | 38 - .../contents/Settings/Game_Options/Ubuntu.htm | 67 - .../Settings/Game_Options/Windows.htm | 75 - .../Settings/Game_Options/Windows_UWP.htm | 118 - Manual/contents/Settings/Game_Options/iOS.htm | 84 - .../contents/Settings/Game_Options/macOS.htm | 72 - .../contents/Settings/Game_Options/tvOS.htm | 63 - Manual/contents/Settings/Game_Settings.htm | 46 - Manual/contents/Settings/Included_Files.htm | 62 - Manual/contents/Settings/Texture_Groups.htm | 73 - .../Non-Bitmap_Sprites.htm | 67 - .../Texture_Information/Texture_Pages.htm | 68 - Manual/contents/Settings/The_Room_Manager.htm | 83 - .../Animation_Curve_Library.htm | 81 - .../The_Asset_Editors/Animation_Curves.htm | 97 - .../Code_Editor_Properties/Code_Snippets.htm | 72 - .../Code_Editor_Properties/Editing_Code.htm | 68 - .../Feather_Data_Types.htm | 272 --- .../Feather_Features.htm | 78 - .../JSDoc_Script_Comments.htm | 160 -- .../Extension_Creation/Android_Extensions.htm | 120 - .../Creating_An_Extension.htm | 196 -- .../Extension_Creation/Extended_Examples.htm | 133 -- .../Extension_Creation/iOS_Extensions.htm | 161 -- .../contents/The_Asset_Editors/Extensions.htm | 103 - Manual/contents/The_Asset_Editors/Fonts.htm | 133 -- .../The_Asset_Editors/Image_Editor.htm | 282 --- Manual/contents/The_Asset_Editors/Notes.htm | 42 - .../Object_Properties/Async_Events.htm | 172 -- .../Async_Events/Audio_Playback.htm | 61 - .../Async_Events/Audio_Recording.htm | 55 - .../Object_Properties/Async_Events/Cloud.htm | 92 - .../Object_Properties/Async_Events/Dialog.htm | 46 - .../Object_Properties/Async_Events/HTTP.htm | 54 - .../Object_Properties/Async_Events/IAP.htm | 43 - .../Async_Events/Image_Loaded.htm | 52 - .../Async_Events/Networking.htm | 96 - .../Async_Events/Push_Notifications.htm | 39 - .../Async_Events/Save_Load.htm | 58 - .../Object_Properties/Async_Events/Social.htm | 71 - .../Object_Properties/Async_Events/Steam.htm | 141 -- .../Object_Properties/Async_Events/System.htm | 97 - .../Object_Properties/Draw_Events.htm | 126 -- .../Object_Properties/Event_Order.htm | 67 - .../Object_Properties/Gesture_Events.htm | 540 ----- .../Object_Properties/Object_Events.htm | 196 -- .../Object_Properties/Object_Variables.htm | 77 - .../Object_Properties/Other_Events.htm | 153 -- .../Object_Properties/Parent_Objects.htm | 81 - .../Object_Properties/Physics_Objects.htm | 126 -- Manual/contents/The_Asset_Editors/Objects.htm | 96 - Manual/contents/The_Asset_Editors/Paths.htm | 97 - .../Room_Properties/Filters_and_Effects.htm | 64 - .../Room_Properties/Layer_Properties.htm | 174 -- .../Room_Properties/Room_Inheritance.htm | 45 - .../Room_Properties/Room_Properties.htm | 79 - Manual/contents/The_Asset_Editors/Rooms.htm | 175 -- Manual/contents/The_Asset_Editors/Scripts.htm | 137 -- .../Broadcast_Messages.htm | 92 - .../Sequence_Properties/Clipping_Masks.htm | 56 - .../The_Sequence_Canvas.htm | 89 - .../Sequence_Properties/The_Track_Panel.htm | 221 -- .../Using_Animation_Curves.htm | 153 -- .../Using_The_Dope_Sheet.htm | 126 -- .../contents/The_Asset_Editors/Sequences.htm | 263 --- Manual/contents/The_Asset_Editors/Shaders.htm | 103 - Manual/contents/The_Asset_Editors/Sounds.htm | 95 - .../Sprite_Properties/Nine_Slices.htm | 51 - Manual/contents/The_Asset_Editors/Sprites.htm | 245 --- .../The_Asset_Editors/The_Asset_Editors.htm | 102 - .../Tile_Set_Editors/Animated_Tiles.htm | 58 - .../Tile_Set_Editors/Auto_Tiles.htm | 60 - .../Tile_Set_Editors/Brush_Builder.htm | 110 - .../contents/The_Asset_Editors/Tile_Sets.htm | 95 - .../contents/The_Asset_Editors/Timelines.htm | 78 - .../assets/masterpages/Manual_Action_Page.htt | 59 - .../masterpages/Manual_Keyword_Page.htt | 72 - .../assets/masterpages/Manual_Page.htt | 39 - 2801 files changed, 215067 deletions(-) diff --git a/Manual/contents/Additional_Information/Additional_Information.htm b/Manual/contents/Additional_Information/Additional_Information.htm index eb3145b97..e69de29bb 100644 --- a/Manual/contents/Additional_Information/Additional_Information.htm +++ b/Manual/contents/Additional_Information/Additional_Information.htm @@ -1,54 +0,0 @@ - - - - - - Дополнительная информация - - - - - - - - - - -

Дополнительная информация

-

В этом разделе руководства собраны различные статьи, связанные с программированием и работой GameMaker Language. Следующие статьи разработаны как сопутствующие статьи для дальнейшего расширения вашего понимания того, как работает GameMaker и как получить максимальную отдачу от различных доступных возможностей языка:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Additional_Information/Best_Practices_When_Programming.htm b/Manual/contents/Additional_Information/Best_Practices_When_Programming.htm index 214509b64..e69de29bb 100644 --- a/Manual/contents/Additional_Information/Best_Practices_When_Programming.htm +++ b/Manual/contents/Additional_Information/Best_Practices_When_Programming.htm @@ -1,166 +0,0 @@ - - - - - - Лучшие практики при программировании - - - - - - - - - - -

Лучшие практики при программировании

-

На этой странице мы расскажем о некоторых "лучших практиках" программирования игры, а также немного объясним внутреннюю работу GameMaker. Однако прежде чем продолжить, стоит обратить внимание на два очень важных момента:

- -

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

-

Стиль программирования

-
-

Когда дело доходит до написания кода, у каждого есть свой стиль. Стиль, в котором вы программируете, - это то, как вы расставляете скобки, как делаете отступы в строках, как объявляете и называете переменные и т.д., и это очень важно для того, чтобы ваш код был понятен и читабелен для других людей (и для вашего будущего "я", когда вам придется вернуться к этому проекту после некоторого времени работы над чем-то другим).

-

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

-

На рисунке выше приведен пример объявления функции в скрипте, иллюстрирующий вышеизложенные моменты. Видно, что в нем используются комментарии в стиле JSDoc, чтобы четко объяснить, что все это делает, а стиль кодирования соответствует, с отступами в 4 пробела, подчеркиваниями, используемыми для локальных переменных, протоколируемым выводом и т.д..

-

Также обратите внимание, что хотя редактор сценариев позволяет сворачивать код в каждой из открытых/закрытых скобок, вы можете использовать теги #region и #endregion для разделения частей вашего кода и значительного улучшения читабельности, особенно при работе с большими сценариями, содержащими множество функций. Регионы также можно комментировать - см. раздел "Редактирование" на этой странице руководства):

-

При написании кода вы должны знать, что при компиляции готовой игры GameMaker удаляет комментарии, убирает ненужные переносы строк и пробелы, подставляет значения констант, макросов и переменных и в целом сжимает ваш код. Это означает, что вы можете добавлять столько пробелов в коде, сколько необходимо, и вам не нужно беспокоиться о том, чтобы ваши комментарии были короткими или использовались редко.

-

-
-

Используйте локальные переменные

-
-

Продолжая тему стиля программирования, можно сказать, что многие начинающие программисты стремятся впихнуть как можно больше в одну строку кода. Например:

-

draw_sprite(sprite_index, image_index, x + lengthdir_x(100, point_direction(x, y, mouse_x, mouse_y)), y + lengthdir_y(100, point_direction(x, y, mouse_x, mouse_y)));

-

Хотя он и не совсем нечитабелен, но неэффективен (например, функция point_direction() вызывается дважды), а также грязен и неудобен на вид. Гораздо лучше было бы выразить это как:

-

var p_dir = point_direction(x, y, mouse_x, mouse_y);
- var local_x = x + lengthdir_x(100, p_dir);
- var local_y = y + lengthdir_y(100, p_dir);
- draw_sprite(sprite_index, image_index, local_x, local_y);

-

Память и ресурсы, необходимые для создания этих локальных переменных, ничтожно малы, и их значительно перевешивает мгновенная польза, которую вы (или любой другой человек, читающий код позже) получите от его ясности. Та же идея должна быть применена и к функциям, где вы должны присваивать разумные имена входным переменным, использовать четкое форматирование и локальные переменные, где это необходимо, чтобы сделать код как можно более читабельным.

-

Локальные переменные быстро обрабатываются в игре, поэтому используйте их по максимуму, а если выражение появляется в блоке кода или скрипте два или более раз, подумайте о создании локальной переменной для него. При использовании целей YoYo Compiler (YYC), если вы ссылаетесь на global или переменные экземпляра несколько раз в функции или блоке кода, особенно полезно присвоить их локальной переменной в начале кода, а затем ссылаться на эту локальную переменную, так как это обеспечит гораздо более высокую производительность.

-

-
-

Массивы

-
-

Массивы быстры в использовании и требуют меньше памяти, чем структуры данных, но их можно еще больше оптимизировать. При создании массива память для него выделяется в зависимости от его размера, поэтому сначала следует попытаться инициализировать массив до максимального размера, даже если вы не планируете заполнять его в дальнейшем. Например, если вы знаете, что массив должен содержать максимум 100 значений, вы сразу инициализируете его до 100 слотов, используя функцию array_create() функция:

-

array = array_create(100, 0);

-

Это выделяет память для него одним "куском", при этом все значения массива устанавливаются в значение 0 по умолчанию, что помогает поддерживать быстрое выполнение, поскольку в противном случае каждый раз, когда вы добавляете новое значение в массив, вся память должна быть выделена заново.

-

ПРИМЕЧАНИЕ Для цели HTML5 присвоение массивов подобным образом не применяется, и ваши массивы должны инициализироваться с 0 для этой цели! Вы можете легко справиться с этим, проверив переменную os_browser, например:

-

if (os_browser == browser_not_a_browser)
- {
-     array_create(100, 0);
- }
- else
- {
-     for (var i = 0; i < 100; ++i)
-     {
-         array[i] = 0;
-     }
- }

-

Вы также можете освободить память, связанную с массивом, установив используемую переменную равной 0. Таким образом, чтобы очистить массив из приведенного выше примера кода, достаточно использовать:

-

array = 0;

-

Также обратите внимание, что массивы передаются по ссылке, но при изменении будут копироваться целиком (такое поведение называется copy on write). Таким образом, если вы передаете массив функции, вы передаете ссылку на исходный массив, и любые значения, считанные из него, будут получены из исходного источника. Это хорошо и быстро, но если вам нужно изменить какие-либо значения массива, сам массив дублируется в момент записи, и все сделанные изменения должны быть возвращены из функции, иначе они будут потеряны. Это намного медленнее и потребляет больше памяти, поэтому будьте осторожны при использовании массивов в функциях.

-

Однако вы можете избежать такого поведения при копировании при записи, используя специальный аксессор массива @, так как он дает прямой доступ к базовому массиву. Например:

-

// Call a function, passing our array
- my_function(my_array);

-

// The function looks like this:
-
- function my_function(_a)
- {
-     // The array will be copied and the copy modified,
-     // requiring you to use "return _a", later
-     _a[0] = 100;
-
-     // This will modify the ORIGINAL array directly and
-     // does not require it to be returned
-     _a[@ 0] = 100;
- } -

-

-
-

Структуры данных

-
-

В GameMaker структуры данных были оптимизированы таким образом, чтобы быть намного быстрее, чем в предыдущих версиях GameMaker. Их по-прежнему нужно очищать (уничтожать), когда они не используются, чтобы освободить память, и они все еще могут быть медленнее, чем, скажем, массивы, но простота использования и дополнительные функции для работы с данными, которые они содержат, часто перевешивают минимальную разницу в скорости, поэтому не бойтесь использовать их в своих играх.

-

Следует отметить, что из всех структур данных, DS Maps, в частности, отличаются высокой скоростью чтения и записи, что делает их отличным вариантом для всех типов задач.

-

Ранее мы упоминали аксессоры для массивов, но они также доступны для структур данных, что может помочь очистить ваш код и сделать его намного легче для чтения.

-

-
-

Столкновения

-
-

В GameMaker существует множество способов борьбы с коллизиями, и большинство из них сопровождается небольшими дополнительными нагрузками на процессор. Функции collision_ и point_, place_ и instance_ опираются на проверку ограничивающих рамок для всех экземпляров данного типа в комнате, и хотя в движок встроена некоторая оптимизация для ограничения этих проверок, столкновения никогда не являются наиболее эффективным способом борьбы с ними. Если вы начнете использовать точные коллизии, производительность также заметно ухудшится, поскольку вы не только будете выполнять проверку пограничной области, но и попиксельную проверку, что очень медленно.

- -

Это не означает, что вы не должны использовать эти функции, так как они могут быть очень удобными. Однако вы должны знать, какие из них использовать и когда, поскольку все они работают немного по-разному и имеют разную скорость. Примерное правило гласит, что функции place_ работают быстрее, чем функции instance_, которые быстрее, чем функции collision_ и point_, поэтому прочитайте страницы руководства по каждому из этих типов функций и убедитесь, что выбрали наиболее подходящую для каждой ситуации.

-

В качестве альтернативы рассмотрите возможность создания системы столкновений на основе плиток, которые можно создать с помощью функций tilemap или даже пользовательского двумерного массива или сетки DS. Они будут очень быстрыми и помогут увеличить скорость вашей игры. Однако если вы используете нерегулярную местность или стены и объекты, которые не выравниваются по сетке, они могут не подойти. Вы можете найти очень простой учебник по столкновениям тайлмапов по следующей видеоссылке

- -

-
-

Замена текстур и партии вершин

-
-

Если вы включите наложение отладкивы увидите, что во время тестирования в верхней части экрана отображаются две цифры в скобках. Первая - это количество выполняемых обменов текстур , а вторая - количество вершинных батчей. На эти цифры влияет множество факторов, и вам никогда не удастся свести их к (0) (0), поскольку движок требует выполнения одного или двух операций на каждом шаге, но вы должны стремиться свести эти значения как можно ниже.

-

Для замены текстур лучшим и наиболее эффективным способом является оптимизация хранения sprites и фона на странице текстур. Это делается в свойствах спрайта, и вы можете создавать страницы текстур в редакторе групп текстур. Если у вас есть несколько изображений, которые используются только в главном меню (например), поместите их вместе на отдельную страницу текстур. То же самое, если у вас есть изображения, специфичные для уровня, или для игрока, врагов и т.д. В общем, вы хотите сгруппировать их по использованию, чтобы максимально сократить количество подмен. Кроме того, для оптимизации VRAM вы можете использовать различные функции prefetch и flush для загрузки и удаления текстур из памяти по мере необходимости.

-

ПРИМЕЧАНИЕ Как уже упоминалось в начале этой страницы, если ваша игра работает нормально и с приличным FPS, то не стоит слишком беспокоиться о замене текстур... особенно при создании проектов на настольных компьютерах. Эти оптимизации лучше всего использовать в больших играх или на мобильных устройствах низкого класса, а при неправильном использовании они могут негативно повлиять на производительность.

-

Информация о вершинах отправляется "партиями" на GPU для отрисовки, и в целом, чем больше партия, тем лучше. Поэтому при отрисовке следует избегать "разрыва" пакета, так как это увеличит количество пакетов вершин, отправляемых на GPU. Существует ряд вещей, которые нарушают пакет, основными из них являются режимы наложения, изменение шейдера, изменение формы для шейдера перед отрисовкой, а также отрисовка с использованием встроенных фигур и примитивов.

-

Так, если у вас есть несколько экземпляров пуль, которые рисуются с использованием режима наложения bm_add, например, вы будете создавать новую партию вершин для каждой из них, что определенно плохо! Вместо этого в вашей игре есть объект контроллера, который рисует все пули, например, так:

-

gpu_set_blendmode(bm_add);
-
- with (obj_BULLET)
- {
-     draw_self();
- }
-
- gpu_set_blendmode(bm_normal); -

-

ПРИМЕЧАНИЕ Это относится не только к использованию bm_add - любое изменение смешивания нарушит пакет и приведет к снижению производительности.

-

Таким образом, все пули будут нарисованы в одной партии. Разумное использование функций gpu_set_blendenable(), gpu_set_alphatestref(), и gpu_set_alphatestenable() может значительно повысить производительность и может быть включено/выключено по мере необходимости в коде вашего проекта, хотя они могут не подходить для всех типов графики или проектов.

-

ПРИМЕЧАНИЕ Если вам не нужно, чтобы экземпляр рисовал сам себя при использовании контроллера таким образом, вы можете просто добавить комментарий в событие Draw Event, чтобы подавить рисование по умолчанию, или сделать экземпляр невидимым (хотя это предотвратит выполнение кода для экземпляра во всех событиях draw).

-

Другой способ уменьшить эти числа - отключить опцию Separate Texture Page для sprites, если это не является абсолютно необходимым. Каждое изображение, сохраненное таким образом, отправляется на свою собственную страницу текстур и по-разному сортируется, поэтому лучше иметь эти изображения на обычной странице текстур. Затем вы можете получить координаты UVS с помощью функции sprite_get_uvs() и сохранить их в переменных для последующего использования. Это может быть небольшое количество дополнительного кода, но эффект, который вы получите, того стоит. Обратите внимание, что этот метод не позволяет повторять текстуры!

-

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

-

-
-

Частицы

-
-

Частицы - это очень быстрый и эффективный способ создания динамических эффектов в вашей игре, и в целом они обеспечивают хорошую производительность. Однако стоит отметить, что использование аддитивного смешивания, альфа-смешивания и смешивания цвета для частиц может снизить эту производительность, особенно на мобильных объектах, поэтому если вам это не нужно, не используйте это! Аддитивное смешивание, в частности, может значительно увеличить партии вершин и должно использоваться с осторожностью.

-

Обратите внимание, что для HTML5, не поддерживающего WebGL, наличие разноцветных исчезающих частиц потребует кэширования большого количества изображений и будет работать очень медленно. Однако, поскольку частица sprites может быть анимированной, вы можете создать анимированный sprite, который имеет подизображения, меняющие цвет, и затем использовать его для частицы. Это все равно будет выглядеть как постепенное изменение цвета, но не потребует постоянного создания кэш-изображений.

-

Вы можете узнать больше о частицах на странице Руководство по использованию частиц.

-

-
-

Поверхности

-
-

Наконец, мы вкратце коснемся использования поверхностей, поскольку в GameMaker есть довольно значительная оптимизация при их использовании в играх: возможность включать и выключать буфер глубины.

-

Когда вы просто используете поверхности как обычно, GameMaker фактически создает поверхность и сопутствующий буфер глубины для обеспечения правильной сортировки глубины при рисовании чего-либо в 3D. Однако в большинстве 2D-игр этот дополнительный буфер глубины просто не нужен и занимает дополнительное пространство памяти и время обработки, которое можно было бы использовать для других целей. Вот где функция surface_depth_disable() вступает в игру...

-

Эту функцию можно вызвать до создания поверхности, чтобы отключить генерацию буфера глубины, и все поверхности, созданные после этого, не будут иметь созданного для них буфера глубины. Вы можете включать/выключать эту функцию по мере необходимости, и даже можете вызвать ее один раз в начале игры, чтобы отключить буферы глубины для всех последующих вызовов поверхностей (и в большинстве 2D-игр это нормально). Это не даст значительного прироста производительности, но это, безусловно, то, о чем следует помнить, если ваша игра в значительной степени зависит от поверхностей, и может остановить нехватку памяти на устройствах с более низкими характеристиками.

-
-

-

Помимо основных вещей, упомянутых выше, есть и другие, более общие вещи, которые могут помочь в производительности и которые также считаются "хорошей практикой":

- -

Но, как мы уже упоминали в начале страницы, все эти оптимизации необязательны, и если ваша игра прекрасно работает с 60 вершинными партиями, 80 сменами текстур, аддитивным смешиванием и т.д., то не стоит слишком беспокоиться об этом! Просто помните об этих вещах, когда будете программировать свою следующую игру...

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Additional_Information/Bitwise_Operators.htm b/Manual/contents/Additional_Information/Bitwise_Operators.htm index 84e65227d..e69de29bb 100644 --- a/Manual/contents/Additional_Information/Bitwise_Operators.htm +++ b/Manual/contents/Additional_Information/Bitwise_Operators.htm @@ -1,212 +0,0 @@ - - - - - - Побитовые операторы - - - - - - - - - - -

Побитовые операторы и двоичные

-

В начале компьютерной эры двоичная и шестнадцатеричная системы были образом жизни, вероятно, потому, что языки высокого уровня (такие как BASIC) были слишком медленными для работы. Например, для выполнения умножения 32 x 32 на BASIC могло потребоваться несколько тактов процессора, а в двоичной системе это делается как одна операция за один такт процессора.

-

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

-

Ответ определенно "да, стоит". Хотя это правда, что вы все еще можете получить некоторое увеличение скорости - и иногда оно может быть значительным - использование двоичных и шестнадцатеричных кодов приводит к лучшему пониманию того, как работает процессор, а также может привести к написанию лучшего кода, возможности лучше упаковывать данные и значительно упростить некоторые задачи. На этой странице мы немного расскажем о том, что такое двоичный код, а также о том, как его можно использовать при создании игр.

-

Итак, давайте сначала рассмотрим самую основную теорию двоичных чисел - как создаются числа. Взгляните на эту таблицу:

-

000 = 0
- 001 = 1
- 010 = 2
- 100 = 4

-

Каждая 1 или 0 представляет собой один бит данных, и, как вы видите, это означает, что в двоичном формате 10 равно 2! Каждый бит в 2 раза больше предыдущего значения, причем первый бит равен 1. Таким образом, бит 2 = 2, бит 3 = 4, бит 4 = 8 и так далее (как показано ниже в таблице байтов ):

-

00000001 = 1
- 00000010 = 2
- 00000100 = 4
- 00001000 = 8
- 00010000 = 16
- 00100000 = 32
- 01000000 = 64
- 10000000 = 128

-

Это хорошо, если вам нужны числа, равные степени 2, но как создать более сложные числа? Одно двоичное число может хранить только 0 или 1, и все, поэтому для создания более сложных чисел нам нужно складывать биты вместе. Если, например, мы хотим получить число 6, то сложим 4 и 2 следующим образом.

-

00000010 = 2
- 00000100 = 4
- 00000110 = 6

-

Это относится ко всем двоичным числам и к тому, как компьютер составляет любое число внутри себя. В качестве примера возьмем более сложное число: 23. Число 23 на самом деле состоит из 1+2+4+16 или 00010111. А как насчет гораздо более сложного примера: 196? Ну, оно состоит из 128+64+4 или 11000100. Так что на самом деле оно не такое уж и сложное!

-

Если мы начинаем использовать значения вне диапазона байта (который может хранить числа от 0 до 255), отследить их становится немного сложнее. Например, 217 361 - это 110101000100010001 в двоичном формате. Или 1+16+256+etc... Правила одинаковы независимо от того, какое значение выражается - каждое число создается путем сложения нескольких битов.

-

Теперь, как нам выполнить математические операции над этими значениями? Допустим, вы хотите сохранить true или false в качестве значения. Обычно компиляторы используют INT ( INT обычно определяется как знаковое 32-битное число - знаковое означает, что оно может быть положительным или отрицательным, а беззнаковое - только положительным) и затем просто присваивают его 0 или 1. Имея только 2 состояния, значение true / false идеально хранить в бите, и если мы сделаем это, то сможем хранить 32 бита true / false для каждого INT, а не один, поскольку INT состоит из 32 битов.

-

Как бы мы это сделали? Оказывается, довольно просто:

-

flags = flags | 1;

-

Оператор "|" является побитовым OR, и это означает, что приведенная выше инструкция ORs 1 в значение, хранящееся в переменной flags. Если вы помните из предыдущего, использование 1 устанавливает первый бит. Если бы мы хотели установить второй бит, мы бы сделали следующее:

-

flags = flags | 2;

-

Мы OR в 2, потому что битовый шаблон 00000010 равен 2. Что же именно делает двоичный оператор OR? Ну, он объединяет все биты в одно значение, вот так:

-

010110100 // Value 1
- 110011001 // value 2
- 110111101 // Value 1 OR Value 2

-

Вот что известно как таблица истинности для оператора OR:

-

00 | 00 = 00
- 00 | 01 = 01
- 01 | 01 = 01
- 01 | 00 = 01

-

Поэтому там, где есть значение с двумя нулями, оно останется нулем. Преимущество использования таких битов в качестве true/false состояния заключается в том, что вы можете установить несколько битов в качестве "флагов" за одну операцию, чего вы просто не сможете сделать с обычным булевым значением. Например, допустим, бит 1 - это "активный" флаг, а бит 3 - "видимый" флаг. Мы можем установить оба флага следующим образом:

-

flags = flags | 5;

-

Это происходит потому, что 5 - это 00000101 в двоичном формате, и, следуя вышеприведенному правилу, переменная "flags" получит оба этих бита, объединенных с ее собственными. Таким образом, даже если бит 1 уже был установлен, операция все равно сработает, и бит 3 также будет установлен.

-

А как насчет очистки флагов? Вот тут-то и приходит на помощь побитовая операция "&" AND. Когда вы AND что-то делаете, биты, установленные в маске, сохраняются, а биты, очищенные в маске, удаляются - вот так:

-

01110010101 // Value 1
- 00110000100 // Value 2
- 00110000100 // Value 1 AND value 2

-

Как вы видите, там, где в каждом значении есть 1, 1 сохраняется, а там, где есть смесь 0 и 1, они сбрасываются в 0. Вот таблица истинности для ANDing:

-

00 & 00 = 00
- 01 & 00 = 00
- 00 & 01 = 00
- 01 & 01 = 01

-

Таким образом, только когда в каждом месте есть бит, он будет сохранен. Это означает, что так же, как вы можете установить несколько флагов одновременно, вы можете и очистить несколько флагов одновременно. Например, возьмем приведенный выше случай, но на этот раз очистим их. Мы хотим очистить биты 1 и 3 (получив значение 5), но, вспоминая таблицу истинности выше, мы хотим оставить все остальные биты, а биты 1 и 3 очистить. Это будет двоичная "маска" 111111111111111111111111111111111010 (32 бита). Эта маска сохраняет все биты установленными, но очищает два бита, которые мы хотим очистить. Таким образом, если значение 1000111011 и я хочу очистить биты 1 и 3, используя вышеуказанную маску, это будет выглядеть следующим образом...

-

00000000000000000000001000111011 // Value
- 11111111111111111111111111111010 // Mask
- 00000000000000000000001000111010 // Value AND Mask

-

Это здорово, но если бы нам приходилось делать это каждый раз, когда нам нужно очистить флаги, это стало бы утомительным. Нам нужен способ легко перебрасывать биты (и желательно без затрат процессора). К счастью, есть простой способ сделать это с помощью оператора " ~" NOT.

-

Оператор NOT - это именно то, что он говорит - не эти биты. Вот таблица истинности для NOT.

-

~00 = 11
- ~01 = 10
- ~10 = 01
- ~11 = 00

-

Этот оператор делает удаление флагов очень простым, и что еще лучше, обычно это оптимизация во время компиляции, то есть если вы используете постоянное число (то есть не переменную), то компилятор автоматически перевернет биты. Возьмем это выражение, где мы хотим снова очистить биты 1 и 3:

-

a = a & ~5;

-

На самом деле это будет компилироваться просто как "a & 11111111111111111111111111111010". Это делает жизнь довольно простой в плане очистки флагов.

-

Последний оператор, который мы хотим рассмотреть, это "^" EOR (Exclusive OR, иногда называемый XOR), этот оператор переворачивает биты, установленные в обоих значениях. Вот таблица истинности EOR:

-

0 ^ 0 = 0
- 0 ^ 1 = 1
- 1 ^ 0 = 1
- 1 ^ 1 = 0

-

Это любопытная, но невероятно полезная функция. Например, допустим, нам нужен счетчик, который просто считает от 0 до 1 и обратно до 0 (переключаясь между 0 и 1), мы можем добавить 1 и сделать IF, чтобы увидеть, дошел ли он до 2, а затем сбросить его обратно в 1. Или... мы можем добавить 1 и затем AND его с 1 (так как 01+01 = 10, и 10 & 01 = 0) или мы можем сделать вот так:

-

a = a ^ 1;

-

При первом запуске 0 ^ 1 = 1, при втором 1 ^ 1 = 0, таким образом, происходит переключение с 0 на 1.

-

Итак - OR (|), AND(&), NOT(~) и EOR(^) позволяют нам манипулировать битами с относительной легкостью, позволяя, на самом простом уровне, управлять несколькими битами одновременно. Очевидно, что при разработке игр мы можем использовать эти операции для других целей, например, маскировать sprites, выполнять целочисленные операции MOD (используя AND) или делать красивые циклические счетчики.

-

Итак, мы можем выполнять простые побитовые операции, но давайте рассмотрим более сложные вещи, начиная с вопроса, как компьютер складывает? Давайте рассмотрим очень простой пример: 1+1.

-

00000001
- 00000001
- 00000010

-

Как и при обычном сложении, мы складываем числа вместе, а затем переполняем следующий столбец, но в отличие от обычного десятичного сложения, мы можем переходить только от 0 к 1, а не от 0 к 9. Таким образом, добавление 1+1 означает переполнение в 10. Давайте рассмотрим более сложный пример.

-

01011011 = 91
- 00101101 = 45
- 10001000 = 136

-

Очевидно, что здесь это сложнее увидеть, но переполнения пульсируют до тех пор, пока в столбце не останется ни одной единицы. Стоит отметить, что компьютеры могут складывать (или вычитать, умножать или делить) только 2 числа одновременно. Возьмем 19 + 19 + 19. Будучи людьми, мы можем сложить все 9 вместе, перенести 2 и продолжить! Но компьютеры не могут этого сделать - они могут сделать вот что: (19 + 19) + 19. Поэтому они будут выполнять каждое вычисление блоками по 2.

-

Двоичные вычисления, которые представляют наибольший интерес для нас, программистов, - это умножение и деление. Компьютеры умножают только на 2, а чтобы сделать больше, они разбивают число на части, а затем складывают все результаты вместе. Давайте сначала рассмотрим несколько очень простых примеров. 4 * 2 = 8. Чтобы умножить на 2 в двоичной системе, мы сдвигаем все биты влево на единицу. Вот так:

-

00000100 * 2 = 00001000 = 8

-

В этом случае все биты сдвинулись влево на единицу, в результате чего число переместилось из 3-го бита в 4-й и изменило значение с 4 на 8. Как насчет большего числа?

-

101 = 01100101 * 2 = 11001010 = 202

-

Опять же, все биты сдвигаются на единицу, и это умножается на 2. Итак, как насчет умножения на 4? Легко, мы сдвигаем все влево на 2, а не на 1. Так как насчет 16 или 128? Это потребует сдвига влево на 4 или 7 бит соответственно. Это невероятно полезно; это означает, что мы можем выполнять простые умножения, просто перемещая биты. Для этого мы используем оператор сдвига влево <<. Вот несколько примеров:

-

00000001 << 1 = 000000010 = 2
- 00000001 << 2 = 000000100 = 4
- 00000001 << 3 = 000001000 = 8
- 00000001 << 4 = 000010000 = 16
- 00000001 << 5 = 000100000 = 32
- 00000001 << 6 = 001000000 = 64
- 00000001 << 7 = 010000000 = 128
- 00000001 << 8 = 100000000 = 256

-

Теперь, помимо того, что это очень полезно для быстрого/простого умножения, это также очень полезно для установки определенных битов, без необходимости выяснять значение бита. Допустим, мы хотим установить бит 27, что это за число? (67108864, кстати!), ну, мы можем использовать приведенный выше синтаксис, чтобы легко установить флаги, как это:

-

a = a | (1 << 27)

-

Хорошо... на самом деле это будет бит 26, как мы описывали до сих пор (поскольку биты начинаются с единицы), но на самом деле... биты начинаются с бита 0 и идут вверх, а не с бита 1. Поэтому, хотя в INTEGER 32 бита, биты начинаются с 0 до 31, а не с 1 до 32. На самом деле это довольно полезно, поскольку теперь мы можем задавать константы для битовых чисел.

-

Допустим, бит 27 - активный флаг, а бит 0 - флаг взрыва. Как мы можем установить оба?

-

ACTIVE = 27;
- BOOM = 0;
- A = A | (1 << ACTIVE) | (1 << BOOM);

-

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

-

A = A | 13421772;

-

Очистка этих битов (как мы видели выше) - это просто использование модификатора NOT, например, так:

-

A = A & ~((1 << ACTIVE) | (1 << BOOM));

-

Таким образом, это позволяет нам устанавливать и очищать любые биты, а также значительно сжимать структуры данных. Сжатие структур данных - это хорошо, потому что если вы используете меньше памяти, вы получаете меньше промахов кэша, и ваш код просто работает быстрее. Скажите, что быстрее - копировать 32 Мб данных или 4 Мб? Совершенно очевидно, что 4. Так что если вы можете упаковать все ваши флаги в один доступ к памяти, это хорошо!

-

Теперь давайте вкратце рассмотрим, как выполняется деление, и почему это будет так полезно. Деление выполняется путем сдвига битов вправо с помощью оператора сдвига вправо >>. Возьмем простое число - 64 - и разделим его на 32:

-

64 / 32 = 01000000 >> 5 = 00000010

-

Таким образом, вы сдвигаете единственный бит вниз на 5 (это количество сдвигов, необходимое для 32 - см. выше), что дает нам 2. Но что произойдет, если здесь есть другие биты? Давайте посмотрим:

-

68 / 32 = 01000100 >> 5 = 00000010

-

Так что вот, пожалуйста.... Все точно так же. Биты, которые мы сдвигаем вниз, просто теряются. На самом деле это очень полезно, потому что при делении вниз, если нам нужен остаток, есть еще более простой способ его получить, к которому мы перейдем через некоторое время. Но сначала давайте рассмотрим практический пример. У меня есть позиция X и Y, и я хочу получить ячейку сетки, в которую она попадает, где сетка имеет размер 32x32. Этот метод позволяет хранить объекты, столкновения, флаги - всевозможные вещи, и обращаться к ним очень быстро. Итак, начнем:

-

var X_index = x >> 5;
- var Y_index = y >> 5;
- cell_data = mygrid[# X_index,Y_index];

-

Итак, что если нам нужен остаток? Возможно, этот остаток используется как некий флаг порядка или что-то в этом роде. Какова бы ни была причина, получить остаток так же просто, как выполнить AND:

-

var remainder = x & 31
- var X_Index = x >> 5;

-

Теперь вы, наверное, заметили, что мы использовали несколько строк кода (как это часто бывает), но это все равно всего лишь пара очень быстрых инструкций. Но почему именно 31? Так как бит 5 равен 32, то все биты ниже будут равны 31, а это максимальный остаток, поэтому мы используем AND (мы также можем использовать (1 << 5) - 1, в результате чего получится 32 - 1 = 31). Теперь, если бы я делал это без понимания двоичной системы счисления, это выглядело бы следующим образом:

-

var r = x mod 32;
- var X_Index = floor(x / 32);

-

Почему же это намного хуже? Чтобы разделить на 32, мы должны выполнить деление с плавающей запятой - что, очевидно, занимает время, но для того, чтобы сделать mod 32, нужно выполнить еще одно деление! Если бы мы делали это на ассемблере, мы бы получили ОБА значения за одно деление, но в языках высокого уровня такого не бывает (ну... не очень часто), и поэтому приходится выполнять всю работу дважды. Это увеличивается, особенно если вы выполняете узкий цикл с большим количеством вычислений, как в этом случае. Целочисленные деления с использованием сдвига битов, как показано выше, действительно помогают оптимизировать вашу игру.

-

Поскольку эта концепция может быть довольно сложной для понимания и последующего применения в реальных ситуациях программирования, ниже вы найдете серию коротких примеров, которые могут быть применены к любой игре, созданной с помощью GameMaker.

-

Выравнивание плитки

-
-

РазработчикиGameMaker часто используют функцию place_free(), а затем, когда обнаружено столкновение, пытаются медленно вывести объект, либо обходя по кругу позиции x или y, продолжая выполнять эту функцию, либо используя функцию move_outside_all().

-

Итак, какой способ сделать это быстрее? Ну, если мы используем правильные тайлы power-of-2, то у нас есть очень простой метод, который также является молниеносным. Если мы движемся вправо и попали в блок столкновения, то, как мы знаем, все выравнивается по 32, поэтому нам нужно также выровнять sprite по 32-пиксельной границе - предпочтительно по левой - так, чтобы sprite был перемещен ВНЕ столкновения. Это очень просто, зная правила, которые мы использовали выше для получения остатка, и зная, как получить обратную величину битов, мы можем просто сделать следующее:

-

x = x & ~31;

-

Правильно, это ВСЕ, что требуется для выравнивания по границе 32 пикселей. Изменив 31, мы можем выровнять по любой границе - если только она является степенью 2. (Это эквивалентно делению на 32, затем умножению на 32, таким образом удаляя младшие биты).

-

Если мы хотим выровнять вправо, то сделаем то же самое, но добавим 32, чтобы переместить его на следующую плитку. Все просто. Все это делает весь код столкновений монументально быстрее и позволяет тратить процессорное время там, где оно действительно нужно.

-

-
-

Ключи и двери

-
-

Допустим, у вас есть уровень с несколькими дверями, и для каждой из них есть ключ. Как можно легко пометить ключ для определенной двери? Обычно вы просто присваиваете идентификатор ключу и двери. А что если вы хотите, чтобы ключ открывал 2 или 3 двери? Легко. Вы используете MASK. Дверь будет иметь один бит, назначенный следующим образом:
-

-

door_id = 1; // 0001

-

Остальные могут быть примерно такими:
-

-

door_id=2; // 0010
- door_id=4; // 0100
- door_id=8; // 1000
- etc...

-

Если бы мы хотели, чтобы ключ открывал двери 1 и 3, то ключ имел бы значение MASK, равное 5 (что в двоичном формате равно 101). Если мы выполним AND и получится "не ноль", то мы будем знать, что ключ может открыть дверь. Вы также можете иметь ключи, которые ничего не открывают, имея MASK равный 0. Смотрите код ниже для фактической проверки:

-

if ((key_id & door_id) ! = 0)
- {
-     opendoor();
- }

-

-
-

Петлевые счетчики

-
-

Допустим, нам нужен простой счетчик анимации, идущий от 0 до 15 (поскольку у нас 16 кадров анимации). Обычно вы делаете инкремент, а затем выполняете проверку if, чтобы обернуть число, но для этого примера давайте воспользуемся оператором AND(&):

-

counter = (counter + 1) & 15;

-

Поскольку 16 - это степень 2, мы можем уменьшить это число на 1 и использовать его в качестве маски, которую затем можно использовать для обертывания значения счетчика. Если счетчик перейдет от 15 к 16, мы получим битовый шаблон 10000, а если мы AND это 15 (битовый шаблон 01111), мы получим 00000 (просто ноль). Это означает, что приведенный выше код полезен для обертывания значений в диапазоне степени 2.

-

-
-

Power Of 2 Check

-
-

Что, если вы хотите проверить, является ли что-то мощностью 2? Вот небольшой трюк... Это вернет true, если заданное значение является степенью 2:

-

function is_pow2(_val)
- {
-     return _val & (_val - 1)) == 0;
- }

-

Итак, если у нас есть число 51 (110011), что это дает? Ну, мы получаем вот это... 110011 & 110010, что, очевидно, оставляет нам false, поскольку после AND остается много битов. Если у нас было 64 (1000000), то получается вот это... 1000000 & 0111111, что оставляет нам 0, так что это true.

-

-
-

Выравнивание индекса

-
-

Вот небольшой код для выравнивания по мощности 2 чисел. (1,2,4,8,16 и так далее). Это может быть очень полезно при распределении памяти или для того, чтобы убедиться, что вы записываете данные в соответствующие границы. В этом примере _val1 нужно выровнять по байтам _val2, где _val2 - число, равное 2. Эта маленькая функция округляет до следующей границы нужного числа.

-

function align_pow2(_val1, _val2)
- {
-     return _val1 + (_val2 - 1)) & ~(_val2 - 1);
- }

-

-

-
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Additional_Information/Compatibility_Functions.htm b/Manual/contents/Additional_Information/Compatibility_Functions.htm index 3e1563c1a..e69de29bb 100644 --- a/Manual/contents/Additional_Information/Compatibility_Functions.htm +++ b/Manual/contents/Additional_Information/Compatibility_Functions.htm @@ -1,84 +0,0 @@ - - - - - - Функции совместимости - - - - - - - - - - -

Функции совместимости

-

При импорте проекта из предыдущей версии GameMaker вы можете увидеть, что в проект добавлены сценарии совместимости. В общем, эти скрипты используют обновленные функции GameMaker Language (GML) - для преобразования устаревших функций в новые, и это отличный способ узнать, как все должно быть сделано в GameMaker. Однако есть несколько функций, используемых только для совместимости, которые не должны использоваться - нигде больше, и уж точно не в ваших собственных проектах. Чтобы помочь вам определить эти функции совместимости, они перечислены здесь, но мы должны подчеркнуть, что они никогда не должны использоваться вне скриптов совместимости:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Additional_Information/Compatibility_Scripts.htm b/Manual/contents/Additional_Information/Compatibility_Scripts.htm index 3c2fe167a..e69de29bb 100644 --- a/Manual/contents/Additional_Information/Compatibility_Scripts.htm +++ b/Manual/contents/Additional_Information/Compatibility_Scripts.htm @@ -1,60 +0,0 @@ - - - - - Сценарии совместимости - - - - - - - - - - -

Сценарии совместимости

-

Для пользователей, перешедших с предыдущих версий GameMaker, использование GameMaker может быть поначалу немного непонятным, так как был внесен ряд изменений в способ работы с активами проекта, редактированием и кодированием. Эти изменения означают - что ни IDE, ни язык GameMaker Language (GML) не поддерживают перечисленные ниже элементы. Однако это не означает, что вы - не можете импортировать в GameMaker игры, созданные в предыдущих версиях. GameMaker автоматически преобразует все устаревшие функции в скрипты совместимости, которые представляют собой скрипты, содержащие функции, преобразующие - устаревшие методы в обновленные методы.

-

Происходит это так: GameMaker анализирует ваш проект на предмет всех устаревших функций и переменных, которые вы использовали, а затем создает серию скриптов, используя имена этих функций. Эти скрипты будут содержать либо новую эквивалентную - функцию времени выполнения, либо короткую функцию сценария, которая выполняет то же действие, что и устаревшая функция.

-

Когда вы впервые импортируете проект GameMaker, вам будет показан отчет о совместимости, подобный этому:

-

В основной части отчета показано, какие объекты и скрипты были затронуты и где, а в конце - вы можете найти список скриптов, которые были созданы для вашего проекта. Вы можете нажать среднюю кнопку мыши или клавишу на любом из скриптов, перечисленных в отчете, чтобы открыть его и посмотреть, что было сделано.

-

Обратите внимание, что если вы видите какие-либо скрипты, созданные с двойной чертой перед их именем (например: __global_object_depths), то это скрипты, которые были созданы IDE для обеспечения совместимости и не являются скриптами - которые были преобразованы из устаревших функций, поэтому их не следует изменять, так как они необходимы для работы других скриптов совместимости.

-

После завершения редактирования отчета о совместимости вы можете закрыть рабочую область, но если вам понадобится пересмотреть что-либо в отчете, вы можете найти это снова, перейдя в раздел Notes в - Браузера активов.

-

Обратите внимание, что вы можете продолжать использовать эти сценарии совместимости так же, как вы бы использовали функции в старой версии GameMaker, однако, в связи с тем, как они работают, это повлияет на производительность. Мы рекомендуем вам - обновлять проекты для прямого использования новых методов и удалять скрипты совместимости, если это возможно, поскольку это повысит производительность, а также даст вам представление о том, как работает GameMaker и GameMaker Language по сравнению с устаревшими продуктами.

-

Также обратите внимание, что есть некоторые функции, которые были введены в GameMaker Language для обеспечения совместимости со старыми проектами и которые будут появляться в этих скриптах совместимости. Однако эти функции никогда не должны использоваться в ваших собственных проектах. - Список этих функций вы можете найти в следующем разделе руководства:

- -

Вы также можете найти полный список всех устаревших функций, для которых созданы эквивалентные скрипты совместимости, на следующей странице:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Additional_Information/Error_Reporting.htm b/Manual/contents/Additional_Information/Error_Reporting.htm index 654dccf8d..e69de29bb 100644 --- a/Manual/contents/Additional_Information/Error_Reporting.htm +++ b/Manual/contents/Additional_Information/Error_Reporting.htm @@ -1,47 +0,0 @@ - - - - - - Отчеты об ошибках - - - - - - - - - - -

Отчеты об ошибках

-

Первая форма сообщения об ошибках - это синтаксическая ошибка. Это ошибка в вашем коде, которую GameMaker обнаружил до того, как вы попытались его скомпилировать, и она будет показана на сайте IDE, либо в редакторе кода, либо в окне вывода синтаксических ошибок:

-

Следующий уровень сообщений об ошибках -ошибки компилятора. Эти типы ошибок являются более общими, чем ошибки бегущей строки, и могут быть вызваны какими-то тонкими ошибками в коде игры, которые приводят к ее аварийному завершению во время компиляции, еще до того, как она получит шанс запуститься. О них также будет сообщено в окне вывода ошибок компилятора:

-

Если игра компилируется и возникает ошибка, вы получите сообщение Runner Error. При этом типе ошибки на экране появится сообщение, подобное показанному ниже:

-

Большинство сообщений об ошибках в бегущей строке выглядят одинаково: сообщение с указанием типа ошибки, экземпляра и события, в котором произошла ошибка, затем ряд подробностей бегущей строки, которые объясняют ошибку более подробно, и, наконец, список всех объявленных глобальных, экземпляров и локальных переменных в вашей игре на данный момент. В самом низу находится кнопка Abort , которая прерывает игру, а также кнопка Copy (копирует ошибку в буфер обмена) и кнопка Clear , которая удаляет сообщения об ошибках из окна. Информация, предоставляемая сообщением об ошибках, очень важна, поскольку она обнаруживает и сообщает о крупных ошибках, связанных с синтаксисом, которые приведут к краху вашей готовой игры, но обратите внимание, что она не сообщает о более тонких ошибках и не дает обратной связи по производительности... для этого вам нужно использовать отладчик.

-

На следующих страницах описаны все различные ошибки синтаксиса, бегунка и компилятора, которые вы можете получить, и что они означают:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Additional_Information/Errors/Compiler_Errors.htm b/Manual/contents/Additional_Information/Errors/Compiler_Errors.htm index e3ce1d860..e69de29bb 100644 --- a/Manual/contents/Additional_Information/Errors/Compiler_Errors.htm +++ b/Manual/contents/Additional_Information/Errors/Compiler_Errors.htm @@ -1,495 +0,0 @@ - - - - - - Ошибки компилятора - - - - - - - - - - -

Ошибки компиляции

-

Второй тип ошибки, о которой может быть сообщено в вашей игре, - это ошибка компилятора. Ошибка компилятора возникает, когда ваша игра сталкивается с ошибкой, которую не смогла обнаружить программа проверки синтаксиса - например, очень легко забыть объявить переменную или ошибочно ввести строку как real - или когда ошибка связана с тем, как вы настроили инструменты компиляции из Platform Preferences для целевой платформы. Эти ошибки будут отловлены GameMaker в процессе компиляции игры, и эта информация также будет показана в выводе ошибок компилятора, как показано ниже:

-

Compile Errors

-

ПРИМЕЧАНИЕ Эти ошибки обычно не выводят окно и просто показывают "Build Failed" в выводе компилятора. Если появляется окно, то это обычно ошибка Runner Error, которая объясняется здесь.

-

Все сообщения об ошибках компилятора будут иметь одинаковый формат:

-

[object] - [event] - [Line Number]: [error string]

-

Если ошибка найдена в сценарии, то это будет просто:

-

[script] - [Line Number]: [error string]

-

Затем вы можете дважды щелкнуть на любой из записей об ошибках компилятора, чтобы открыть данный актив в позиции, отмеченной как дающая ошибку, а затем вы можете использовать информацию, содержащуюся в сообщении, чтобы точно определить, где именно в объекте или сценарии произошла ошибка. Однако иногда эти ошибки могут показаться немного загадочными, поэтому ниже вы найдете полный список всех ошибок и краткое объяснение того, что они означают:

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ОшибкаОписание
-

Разное

-
Нет программы для компиляцииПредыдущая ошибка компиляции привела к тому, что дерево разбора компилятора не было создано, и поэтому у компилятора нет данных программы для компиляции
Фатальная ошибка при компиляции [имя] - подробности нижеЭто сообщение означает, что обнаружена какая-то ошибка, но компилятор не может определить, какая и где (если это происходит постоянно, вы можете обратиться в службу поддержки и предоставить данные, которые показывает окно вывода компилятора).
Рекурсивное расширение макросов не поддерживаетсяВы использовали рекурсивные макросы, которые ссылаются друг на друга и постоянно расширяются
Невозможно найти TextureGroup [group]Эта ошибка обычно возникает только при попытке запустить неправильно сформированный файл проекта (если это происходит постоянно, вы можете обратиться в службу поддержки и предоставить данные, которые показывает окно вывода компилятора).
Неправильное преобразование [value] в числоВы попытались преобразовать заданное значение, например, строку, в число
Деление на 0Вы пытались разделить значение на 0
Использован неверный идентификатор объекта [object ID] Вы пытались получить доступ к объекту, используя неверное значение ID
Незакрытый комментарий (/*) в конце сценарияВы создали комментарий к сценарию, используя
- /* [comment] */
- но не поставили закрывающий тег комментария -
Неверный токенВ коде вашей игры есть недопустимый символ, что может произойти с символами иностранного языка или Unicode
Номер [num] в неправильном форматеЗаданное число - показанное в ошибке - не является правильным форматом для выполняемой функции или операции, например, вы предоставили целое число, когда требуется указатель
Возникла неожиданная ошибка EOFВы неожиданно достигли конца файла при использовании функций файла
-

Струны

-
Невозможно Не строкаВы пытались использовать "!" (не) в строке
Невозможно отрицать строкуВы пытались отрицать строку, например
- string = -string -
-

Скрипты, Функции и аргументы

-
Неправильное количество аргументов для функции [function]Вы указали слишком много или слишком мало аргументов для данной функции
Не удалось разобрать action_execute_script() - получено неверное количество аргументовДействие GML Visual Execute Script имеет слишком много или слишком мало аргументов для вызываемого сценария.
Неизвестная функция [function] проверьте, не пуст ли скрипт.Был вызван скрипт или функция, которую компилятор не распознал (эта ошибка обычно возникает при пустых ссылках на активы скрипта, поскольку компилятор удаляет эти активы при компиляции).
Функция [function] ожидает n аргументов, a предоставленоФункция получила неправильное количество аргументов (n), когда ожидалось определенное количество (a)
Присвоение пустого значения (функция ничего не возвращает?)Вы пытались присвоить возвращаемое значение функции, когда эта функция ничего не возвращает
Невозможно найти функцию [function] Вы вызвали неизвестную функцию
Вызов функции, которой нужен экземпляр, а экземпляр недоступенВызываемая функция или сценарий предназначены для действия над экземпляром, но на момент выполнения не существует ни одного экземпляра
Вызов функции, которая нуждается в другой функции, а другая функция недоступнаВы использовали ключевое слово other вне события столкновения или вне высказывания with.
Ошибка именования аргументов, n аргументов, но не найдена ссылка на aВы задали несколько аргументов сценарию, но не указали один из них в сценарии, например, ваш сценарий принимает три аргумента, но вы используете только аргументы n и a
Невозможно сравнить аргументыВы пытались сравнить два разных типа аргументов, например, строку и вещественное число.
Неизвестная функция или сценарий [functions/script] Компилятор не распознает вызываемую функцию или скрипт
Невозможно использовать имя ресурса [resource] , поскольку он не экспортируется.Вы попытались получить доступ к ресурсу, который не был отмечен как часть проекта для компилируемой платформы.
Невозможно использовать имя функции/скрипта для переменной, используя [functions/script]Вы пытались использовать в качестве переменной, например, имя функции или имя скрипта:
- string = "Hello World" -
Невозможно использовать аргумент вне сценария Встроенные переменные аргументов можно использовать только внутри сценария, но вы пытались использовать их в другом месте
Нет ссылок на argument[num], но есть ссылки argument[num]Вы используете ссылку на аргумент, которого не существует, но который может быть связан с другим аргументом.
Неправильное количество аргументов для аксессораВы указали неверное количество аргументов при использовании аксессора
Неправильный тип аргументов для (одного из нижеперечисленных):
- /, div, mod, +, -, &&, ||, &, |, ^, <<, >>
Вы указали неверный тип аргумента для вычисляемого выражения
-

Переменные

-
Использование неинициализированной переменной [var]Вы попытались использовать именованную переменную до того, как она была инициализирована
Переменная [var] доступна только для чтенияВы пытались изменить именованную переменную, когда она не может быть изменена
Невозможно найти переменную с именем [var]Именованная переменная не может быть найдена в текущей компиляции
Некорректная ссылка на переменнуюВы попытались сослаться на переменную неправильным способом
Попытка установить переменную [var], доступную только для чтения.Вы пытались установить переменную, которая доступна только для чтения
Невозможно повторно объявить встроенную переменнуюВы пытались объявить локальную переменную, используя то же имя, что и одна из встроенных переменных
Невозможно использовать имя ресурса для переменнойВы можете использовать то же имя ресурса из дерева ресурсов в качестве локальной переменной
[Переменная] доступно только для чтенияВы пытались использовать переменную, которая была помечена как доступная только для чтения
-

Константы

-
Невозможно установить константу [константа] на значениеВы пытались установить константу в другое значение
Константа здесь недействительнаВы пытались использовать константу, которая не является действительной для выполняемого кода
Невозможно присвоить [var] - это константаВы попытались присвоить новое значение именованной константе
-

Массивы

-
Индекс массива не должен быть отрицательнымВы пытались получить доступ, создать или установить значение массива, используя отрицательный индекс массива
-

Неправильно сформированный...

-
Некорректный условный операторВы использовали ошибочный условный (троичный) оператор или оператор if, а не формат:
- [condition] ? [expression1] : [expression2]; -
Если требует утверждения thenВы написали оператор if и выражение для оценки, но не указали часть then для выполнения
неверно сформированное заявление о назначенииВ коде вы неправильно используете оператор присваивания
Неправильно сформированный
- if / repeat / while / do / for / with / switch / break / continue / exit
- оператор
Структура приведенного утверждения неверна.
Неправильно сформированное сообщение post inc или decВы пытались использовать [var]++ или [var]-- незаконным способом
Неправильно сформированный оператор pre inc или decВы пытались использовать ++[var] или --[var] незаконным способом
Некорректная глобальная gml_pragmaВы создали неправильную глобальную строку при использовании gml_pragma
Некорректная форма PNGCrush gml_pragmaВы создали неправильную строковую команду для PNGCrush при использовании gml_pragma
Некорректная форма Texgroup.Scale gml_pragmaВы создали неправильную глобальную строку при использовании gml_pragma
-

Переключатель / корпус

-
Значение по умолчанию нельзя использовать несколько раз в переключателеВ операторе switch вы определили default: более одного раза
Несоответствие типа выражения клаузулы (все выражения клаузулы должны быть одного типа)В вашем переключателе вы проверяете два различных типа регистра констант, например, строка в одном случае и целое число в другом.
Аргументация по делу должна быть постояннойВы пытались использовать значение, которое не оценивается как константа, в одном из случаев переключения
Утверждение в переключателе ДОЛЖНО появляться после регистра или значения по умолчаниюВы добавили оператор в переключатель вне вызова case: или default:.
Найдено дублирующее заявление по делу / оригинал здесьВы использовали одну и ту же константу case в двух разных местах внутри switch (обратите внимание, что комментарий "original here" будет находиться на другой строке и его можно щелкнуть, чтобы показать исходный случай)
-

Выражения

-
Нет возвращаемого значения из выражения (есть ли у выражения возвращаемое значение?)Вы пытались присвоить переменной возвращаемое значение из выражения, когда выражение ничего не возвращает.
Ожидание выражения после '.'Вы ошибочно использовали обозначение точки "." и не добавили выражение после слов.
Неожиданный символ [символ] в выраженииВ выражении используется символ, который не входит в принятый набор символов выражения - соответствующий символ будет показан
-

Неизвестные операторы

-
Неизвестно Предварительный операторВы пытались использовать символ в качестве предоператора, когда этот символ не разрешен, например, **[var] или >>[var] - допустимы только ++ и --.
Неизвестный оператор почтовой связиВы пытались использовать символ в качестве постоператора, когда этот символ не разрешен, например, [var]** или [var]>> - допустимы только ++ и --.
Неизвестная прагма [gml_pragma string]Вы использовали строку прагмы, которая неизвестна компилятору
Неизвестный унарный операторВы пытались использовать неизвестный символ в качестве унарного оператора
Неизвестный двоичный операторВы пытались использовать неизвестный символ в качестве двоичного оператора
Неизвестный оператор [оператор]Вы попытались использовать неизвестный символ в качестве оператора (символ будет показан в ошибке)
-

Перерыв / Продолжение

-
Перерыв, используемый без контекстаВы не использовали разрыв внутри переключателя, петли или любой другой разрешенной структуры
Продолжение используется без контекстаВы не использовали continue в правильном контексте
продолжение заявления не допускается на данном этапеВы использовали continue в той части вашего кода, где это запрещено
-

Enums

-
перечисление num недействительноНомер перечисления недействителен для данного перечисления
неправильное перечислениеВы неправильно создали перечисление
enum [перечисление] уже определеноВы попытались определить перечисление, использующее то же имя, что и другое, ранее определенное.
неправильное заполнение перечисленияПеречисление имеет недопустимую запись
выражение перечисления должно быть целочисленной константойЗапись перечисления не оценивается как целочисленная константа
Ссылка на перечисление [ключ] не существует в [перечислении]Вы попытались сослаться на запись перечисления, используя ключ, который ранее не был определен для этого перечисления
-

Ожидаемые символы/значения

-
Символ (ожидаемый
- Символ ) ожидаемый
- Символ , или ) ожидаемый
- Символ { ожидаемый
- Символ } ожидаемый
- Символ , или } ожидается
- Символ : ожидается
- Символ ; ожидается
- Символ [ ожидаемый
- символ ] ожидаемый
- Символ , или ] ожидаемый
Вы не использовали требуемый символ при написании кода
Ожидаемый идентификатор или строкаВы использовали значение, которое не является ни идентификатором слоя, ни именем слоя - в виде строки - в одной из функций Layer
ключевое слово Пока не ожидаетсяВы создали цикл do... until, но не указали выражение until.
Ожидаемое имя функцииВы использовали что-то, кроме имени функции, в коде, где должна быть функция
ожидаемое имя переменнойВы ввели имя, которое не является именем переменной там, где оно ожидается
Ожидается оператор присваиванияВы создали присваивание, которое ожидает оператора, но ни один из них не был предоставлен
-

Эксклюзив Android

-
Каталог [dir] Android ARM ToolChain не существуетСсылка, указанная в Android Preferences для инструментальной цепочки ARM, неверна и не существует.
Каталог [dir] Android MIPS ToolChain не существуетСсылка, указанная в разделе Android Preferences для инструментальной цепочки MIPS, неверна и не существует.
Каталог Android x86 ToolChain [dir] не существуетСсылка, указанная в разделе Android Preferences для инструментальной цепочки x86, неверна и не существует.
Каталог Android NDK [dir] не существуетСсылка, указанная в разделе Android Preferences для Android NDK, неверна и не существует.
-

Эксклюзив Windows

-
Проблема конфигурации: Windows Visual Studio Path необходимо установить так, чтобы он указывал на пакетный файл Visual Studio (.bat).Ссылка, указанная в предпочтениях Windows для пакетного файла Visual Studio (.bat), неверна и не существует.
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Additional_Information/Errors/Runner_Errors.htm b/Manual/contents/Additional_Information/Errors/Runner_Errors.htm index cda932ea4..e69de29bb 100644 --- a/Manual/contents/Additional_Information/Errors/Runner_Errors.htm +++ b/Manual/contents/Additional_Information/Errors/Runner_Errors.htm @@ -1,332 +0,0 @@ - - - - - - Ошибки бегунов - - - - - - - - - - -

Ошибки бегунов

-

Даже после проверки синтаксиса в редакторе кода и последующей проверки кода компилятором на наличие ошибок компилятора, все равно бывают случаи, когда что-то может пойти не так. В большинстве случаев это приведет к возникновению ошибки выполнения виртуальной машины (VM) (также называемой исключением времени выполнения), которая выглядит следующим образом:

-

Ошибки Runner обычно более серьезны, чем ошибки компиляции, поскольку они означают, что в вашем коде что-то серьезно не так, чего не смогли обнаружить ни редактор кода, ни компилятор, и поэтому вы должны обращать внимание на все такие ошибки. При возникновении такой ошибки вы можете воспользоваться кнопкой Copy на всплывающем окне, чтобы скопировать ошибку в буфер обмена, который затем можно вставить в текстовый файл (или куда-либо еще) для дальнейшего использования.

-

Структура этой ошибки выглядит следующим образом:

- -

Как упоминалось выше, некоторые сообщения об ошибках будут идентифицироваться не по значению ID экземпляра, а по отрицательному значению. Эти значения могут быть использованы для точного определения природы ошибки и того, к чему она относится, при этом возможны следующие значения:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПрефиксОбласть применения
-1Самостоятельно
-2Другое
-3Все
-4Noone
-5Глобальный
-6Не указано
-7Местный
-

-

Ниже перечислены возможные ошибки, возникающие при запуске VM runner:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ОшибкаСообщениеОперацияОписание
DoSetНедопустимый тип сравненияТипы данныхЭто означает, что программа попыталась сравнить два несовместимых типа данных, например, вещественное число со строкой.
DoConvОшибка выполненияТипы данныхЭто означает ошибку при преобразовании одного типа данных в другой.
-
-
DoAddОшибка выполненияМатематикаЧто-то пошло не так при использовании выражения сложения (+).
DoMulОшибка выполненияМатематикаЧто-то пошло не так при использовании выражения умножения (*).
DoSubОшибка выполненияМатематикаЧто-то пошло не так при использовании выражения вычитания (-).
DoSubExecution Engine - Невозможно выполнить операцию над строковым типомМатематикаВы пытаетесь вычесть переменные не того типа (например, вычесть строку из real).
DoDivОшибка выполненияМатематикаЧто-то пошло не так при использовании выражения деления (/ или div).
DoDivExecution Engine - Невозможно выполнить операцию над строковым типомМатематикаВы пытаетесь разделить переменные не того типа (например, разделить строку на вещественную).
DoDivДеление на нольМатематикаВы пытаетесь разделить на 0 (обратите внимание, что это произойдет только при использовании целочисленного деления, деление (ненулевого) вещественного числа на 0 даст бесконечность в качестве ответа, деление нуля на ноль даст NaN в качестве ответа). Вы можете проверить наличие этих значений с помощью (is_infinity) и (is_nan).
DoModОшибка выполненияМатематикаЧто-то пошло не так при использовании выражения modulo (mod).
DoModExecution Engine - Невозможно выполнить операцию над строковым типомМатематикаВы пытаетесь использовать modulo (mod) для переменных неправильного типа (например, mod строку на вещественную).
-
-
DoAndОшибка выполненияПобитоваяЧто-то пошло не так при использовании побитового выражения "и" (&).
DoAndExecution Engine - Невозможно выполнить операцию над строковым типомПобитоваяВы пытаетесь использовать побитовое "и" (&) для переменных неправильного типа (например, пытаетесь "и" строки с вещественным числом).
DoOrОшибка выполненияПобитоваяЧто-то пошло не так при использовании побитового выражения "или" (|).
DoOrExecution Engine - Невозможно выполнить операцию над строковым типомПобитоваяВы пытаетесь использовать "или" (|) для неправильного типа переменных (например, пытаетесь "или" строку с вещественным).
DoXorОшибка выполненияПобитоваяЧто-то пошло не так при использовании побитового выражения "xor" (^).
DoXorExecution Engine - Невозможно выполнить операцию над строковым типомПобитоваяВы пытаетесь использовать "xor" (^) для переменных неправильного типа (например, пытаетесь "xor" строки с вещественным числом).
DoShlОшибка выполненияПобитоваяЧто-то пошло не так при битовом сдвиге влево (<<) значения.
DoShlExecution Engine - Невозможно выполнить операцию над строковым типомПобитоваяВы пытаетесь выполнить левый битовый сдвиг (<<) переменных не того типа (например, пытаетесь выполнить битовый сдвиг строки).
DoShrОшибка выполненияПобитоваяЧто-то пошло не так при битовом сдвиге вправо (>>) значения.
DoShrExecution Engine - Невозможно выполнить операцию над строковым типомПобитоваяВы пытаетесь выполнить правый битовый сдвиг (>>) переменных не того типа (например, пытаетесь выполнить битовый сдвиг строки).
-
-
DoNegОшибка выполненияОтрицатьВы пытаетесь превратить тип переменной в отрицательный, когда этот тип не допускает такой операции.
DoNotОшибка выполненияОтрицаниеВы пытаетесь "не" тип переменной, когда этот тип не допускает такой операции.
-
-
PushОшибка выполнения - индекс переменной вышел за пределы диапазона (var)СтекПеременная, к которой осуществляется доступ, находится вне установленного диапазона для бегуна.
PushПолучение переменной (var)СтекДанная переменная не определена или неизвестна.
PopИндекс переменной вне диапазона (var)СтекПеременная, к которой осуществляется доступ, находится вне установленного диапазона для бегуна.
PopПолучение переменной (var)СтекДанная переменная не определена или неизвестна.
-
-
WithНевозможно использовать global в операторе withСВы пытались использовать "global" в качестве переменной в операторе "with", т.е:
- with (global)
-    {
-    //do something;
-    }
-
WithНевозможно использовать local в операторе withСВы пытались использовать "local" в качестве переменной в операторе "with", т.е:
- with (local)
-    {
-    //do something;
-    }
-
-
-
DoCallОшибка типа исполнительного механизмаДвигательЭто неопределенная ошибка в виртуальной машине. В этом случае необходимо подать отчет об ошибке (как это сделать, см. в меню Справка.
Stack Overflow-ДвигательПереполнение стека происходит, когда в стеке вызовов используется слишком много памяти, и когда ваша игра пытается использовать больше места, чем доступно в стеке вызовов (то есть, когда она пытается получить доступ к памяти за пределами стека вызовов, что по сути является переполнением буфера), считается, что стек переполняется, что приводит к сбою программы. Перезагрузите компьютер и GameMaker, и если ошибка не исчезнет, обратитесь в службу поддержки и/или оформите ошибку (как описано выше).
 
ExpressionUnable to find any instance for object index 'N' name 'X'InstanceYou tried to access an instance that does not exist, either through an instance handle that is invalid or through an object handle that does not have any active instances in the room
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Additional_Information/Errors/Syntax_Errors.htm b/Manual/contents/Additional_Information/Errors/Syntax_Errors.htm index cb0c22308..e69de29bb 100644 --- a/Manual/contents/Additional_Information/Errors/Syntax_Errors.htm +++ b/Manual/contents/Additional_Information/Errors/Syntax_Errors.htm @@ -1,272 +0,0 @@ - - - - - - Ошибки синтаксиса (сообщения пера) - - - - - - - - - - -

Ошибки синтаксиса (сообщения пера)

-

Первый уровень сообщений об ошибках при программировании игр в GameMaker находится в визуальном редакторе кода или GML, и это проверка синтаксиса. По мере написания кода или добавления действий GameMaker будет проверять соблюдение установленного синтаксиса языка и отмечать все найденные проблемы, чтобы вы могли исправить их до запуска игры или компиляции исполняемого файла.

-

Проверка синтаксических ошибок происходит по-разному в зависимости от того, включили ли вы Feather в настройках Feather.

-

Ошибки синтаксиса (перо отключено)

-

Syntax Errors Example

-

Эти ошибки делятся на две основные категории:

- -

Синтаксические ошибки будут обновляться по мере написания кода (между вводом текста и появлением ошибок в этом окне будет небольшая пауза, чтобы избежать появления сообщений об ошибках в незаконченном коде), и будут соответствовать формату:

-

[object] - [event] - [Line Number] - [Position In Line]: [error string]

-

Или если ошибка находится в скрипте, она будет:

-

[script] - [Line Number] - [Position in line]: [error string]

-

Двойной щелчок на любой из ошибок, показанных в консоли вывода, приведет вас к строке в событии объекта или сценарии, в которой содержится ошибка, и вы сможете ее отредактировать.

-

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

-

На приведенном выше рисунке все три ошибки были спровоцированы одной ошибкой - использованием двоеточия ";" вместо запятой "," в строке 220 для функции variable_instance_exists().

-

Список синтаксических ошибок

-

В таблице ниже перечислены различные синтаксические ошибки и их основные причины:

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Ошибка Тип Описание
Некорректная ссылка [val]Syntax Warning IconЭто означает, что произошла внутренняя ошибка AST Validation Error (вы никогда не должны видеть эту ошибку, но если вы ее видите, пожалуйста, рассмотрите возможность подачи сообщения об ошибке из меню Help).
Некорректная последовательность шестнадцатеричных символов Syntax Error IconЭто может произойти, если вы использовали шестнадцатеричное значение для управляющего символа в строке, и оно имеет неправильный формат.
Неожиданный узел [val]Icon LMBЭто означает, что произошла внутренняя ошибка AST Validation Error (вы никогда не должны видеть эту ошибку, но если вы ее видите, пожалуйста, рассмотрите возможность подачи сообщения об ошибке из меню Help).
Исключение при разборе [val]Multiple Syntax ErrorsЭто означает, что произошла внутренняя ошибка AST Validation Error (вы никогда не должны видеть эту ошибку, но если вы ее видите, пожалуйста, рассмотрите возможность подачи сообщения об ошибке из меню Help).
Некорректная ссылка на идентификатор [val]Syntax Error Icon
Ненужное выражение [val] используется в качестве утвержденияSyntax Error IconЭта ошибка возникает, когда программа проверки синтаксиса обнаруживает выражение (показанное в [val]) там, где она ожидала оператора. Например, следующий код приведет к ошибке, так как он ожидает троичный оператор ?, но встречает 32:
- temp_x = x < (room_width / 2)  32: room_width - 32; -
Некорректная ссылка на массив [val]Syntax Error IconЭто означает, что вы попытались сослаться на массив некорректным образом, и [val] покажет эту ссылку.
Неожиданный двоичный оператор [val]Syntax Error IconЭта ошибка возникает, когда вы используете один из побитовых операторов в том месте, где он не должен использоваться, причем [val] показывает, где именно.
Непрерванный строковый литералSyntax Error IconЭта ошибка возникнет, если открыть строку с помощью @“ или , но не закрыть ее до конца кода.
Одинарные кавычки больше не допускаются для строкиSyntax Error IconЭта ошибка возникает при попытке использовать строки, заключенные в одинарные кавычки, например: 'Hello World', вместо двойных кавычек, например: "Hello World".
Неожиданная синтаксическая ошибкаSyntax Error IconЭта ошибка обозначает синтаксическую ошибку, которую синтаксический анализатор не может определить более конкретно.
Получено "[val1]", ожидалось "[val2]".Syntax Error IconЭто происходит, когда программа проверки синтаксиса ожидает какое-то значение или символ, но получает другое, где [val1] - текущий символ или значение, а [val2] - ожидаемый символ или значение. Например:
- Got "{", expected "(" -
Получили "[val1]", ожидали "[val2]" или "[val3]".Syntax Error IconКак и выше, но для случаев, когда существует несколько возможных ожидаемых символов.
Ожидаемое выражениеSyntax Error IconЭта ошибка возникает, когда программа проверки синтаксиса ожидает выражения, но оно не задано.
Пустое утверждение [val]Syntax Error IconЭто происходит, когда вы завершаете оператор и оставляете его пустым. Например, следующий код выдаст ошибку (обратите внимание на завершающую точку с запятой):
- if (x < 0); -
Вызовы вложенных функций не допускаютсяSyntax Error IconЭто может произойти, когда вы пытаетесь вложить вызовы функций внутри оператора, например:
- ds_list_find_value(list, 0)).sprite_index -
Количество аргументов для функции [val1] expected [val2] got val[3]Syntax Error IconЭта ошибка говорит о том, что вы не указали правильное количество аргументов для функции, показанной для [val1], которая ожидает число, показанное в [val2], но получила те, что показаны в [val3].
Количество аргументов для функции [val1] ожидаемое [val2] - [val3] полученное [val4]Syntax Error IconКак и выше, только для ряда аргументов.
Найдена дублирующая запись перечисленияSyntax Error IconЭта ошибка говорит о том, что вы продублировали имя записи переменной перечисления
Найдено дублирующее перечислениеSyntax Error IconЭта ошибка говорит о том, что вы определили два или более перечислений с одинаковым именем.
Отсутствующее имя переменной в globalvarSyntax Error IconЭто говорит о том, что вы использовали объявление globalvar, но не указали имя переменной.
Отсутствие имени переменной в varSyntax Error IconЭто говорит о том, что вы использовали объявление var, но не указали имя переменной.
Не найдено ни одного подходящего #региона для #endregionSyntax Error IconЭта ошибка означает, что вы объявили конечную область в своем коде, не определив начальную область.
В конце сценария обнаружена незакрытая #областьSyntax Error IconЭта ошибка означает, что вы объявили регион где-то в коде, но нигде не определили для него конечный регион.
Неожиданный оператор терминала [val]Syntax Error IconЭто означает, что произошла внутренняя ошибка AST Validation Error (вы никогда не должны видеть эту ошибку, но если вы ее видите, пожалуйста, рассмотрите возможность подачи сообщения об ошибке из меню Help).
Неожиданный унарный оператор [val]Syntax Error IconЭто происходит, когда унарный оператор (например, +, -, = и т.д.) встречается в вашем коде в не ожидаемом месте, где [val] покажет вам оператор.
Неожиданный троичный оператор [val]Syntax Error IconЭта ошибка означает, что вы неправильно использовали одну из частей тернарного оператора где-то в вашем коде, где [val] показывает часть, в которой допущена ошибка.
Попытка должна содержать предложение catch или finallySyntax Error IconЭта ошибка означает, что вы вызвали функцию try, но не включили в нее предложение catch или finally.
Макрос [val] уже существуетSyntax Error IconВы можете получить эту ошибку, если попытаетесь определить макрос [val] с тем же именем, что и ранее определенный.
Некорректная ссылка на переменную, получена [val].Syntax Error IconЭто означает, что произошла внутренняя ошибка AST Validation Error (вы никогда не должны видеть эту ошибку, но если вы ее видите, пожалуйста, рассмотрите возможность подачи сообщения об ошибке из меню Help).
Присвоение в выражении с несколькими реляциями - GML не поддерживает несколько присваиваний в выражении.Syntax Error IconЭта ошибка говорит о том, что возникла проблема с многооператорным присвоением (также называемым составным присвоением), которое не поддерживается GameMaker Language. Сюда относятся такие вещи, как "*=" или "/=" и т.д..
Макрос [val] не используетсяSyntax Error IconЭто происходит, когда макрос [val] не используется нигде в коде.
Переменная [val] ссылается только один разSyntax Error IconЭто означает, что на данную переменную [val] в вашем коде ссылаются только один раз.
Ссылка на неназначенную переменную [val]Syntax Error IconЭто означает, что переменная [val] была упомянута в вашем коде, но нигде ранее ей не было присвоено значение.
Только функции, объявленные как конструкторы, могут использовать наследованиеSyntax Error IconЭта ошибка говорит о том, что вы пытались использовать наследование для функции, которая не была объявлена как конструктор.
Неизвестный атрибут функции [val]Syntax Error IconЭта ошибка означает, что вы попытались использовать недопустимый или неопознанный модификатор функции ([val]) при объявлении функции in-kine (модификатор функции - это что-то вроде ключевого слова constructor, которое поддерживается).
Наследуемый аргумент \"[val]\" отсутствует в аргументах функцииSyntax Warning IconЭта ошибка возникает, когда вы пытаетесь сослаться на аргумент в наследуемой функции, который не был объявлен в определении родительской функции.
[val] Код созданияSyntax Warning IconЭто происходит, когда в коде создания комнаты где-то есть ошибка [val].
-

Сообщения пера (перо включено)

-

Когда Feather включен, окно Syntax Errors заменяется окном Feather Messages:

-

В окне Feather Messages перечислены ошибки и предупреждения, которые Feather встречает в вашем коде, а также предложения, которые он выдает, когда находит определенные шаблоны кода. Какие типы ошибок отображаются здесь, зависит от профиля, который вы определяете в настройках Feather в разделе Message Severity.

-

В этом окне список сообщений можно сортировать по возрастанию или убыванию по коду сообщения, по тексту сообщения (в алфавитном порядке) или по ресурсу (в алфавитном порядке по имени ресурса). Вы также можете осуществлять поиск с помощью поисковой строки в правом верхнем углу окна.

-

Сообщения перьев делятся на три категории:

- -

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Additional_Information/Guide_To_Primitives_And_Vertex_Building.htm b/Manual/contents/Additional_Information/Guide_To_Primitives_And_Vertex_Building.htm index e59084586..e69de29bb 100644 --- a/Manual/contents/Additional_Information/Guide_To_Primitives_And_Vertex_Building.htm +++ b/Manual/contents/Additional_Information/Guide_To_Primitives_And_Vertex_Building.htm @@ -1,154 +0,0 @@ - - - - - - - Руководство по примитивам и построению вершин - - - - - - - - - - -

Руководство по примитивам и построению вершин

-

Это руководство кратко описывает, как создавать и использовать примитивы, используя пользовательские форматы вершин и вершинные буферы.

-

Обычно, когда вы начинаете работать с 3D, спецэффектами, сложными процессами рисования или шейдерами, вам не нужно слишком беспокоиться об используемом формате вершин, поскольку GameMaker автоматически установит и передаст вершинные данные за вас. Однако иногда необходимо создать собственные вершинные данные и отформатировать их в соответствии с требованиями, особенно если вам нужно увеличить скорость или передать дополнительную информацию. Например, стандартный формат вершин включает x, y, z 3D позицию, цвет (с альфой) и UV координаты текстуры, которые, если бы вы создавали их самостоятельно, выглядели бы примерно так:

-

vertex_format_begin();
- vertex_format_add_position_3d();
- vertex_format_add_colour();
- vertex_format_add_textcoord();
- my_format = vertex_format_end();

-

Однако если вы используете (например) шейдер только для манипулирования положением вершины, то нет необходимости передавать данные цвета или текстуры. В этом случае вы создадите свой собственный формат следующим образом:

-

vertex_format_begin();
- vertex_format_add_position_3d();
- my_format = vertex_format_end();

-

Всего существует пять различных атрибутов вершин, которые можно использовать при определении формата вершин:

- -

В общем случае вы всегда должны указывать позицию или 3D-позицию как часть формата, но все остальные параметры являются необязательными.

-

Следует отметить, что после создания формата вершин, порядок, в котором вы определили атрибуты вершин, должен соблюдаться при создании примитивов. Так, если вы определили формат вершины как позицию, цвет и координату текстуры, то вы должны добавить эти атрибуты в примитив в том же порядке, иначе вы получите ошибку. Также обратите внимание, что, как и любой другой динамический ресурс, формат вершины требует памяти и поэтому должен быть удален, когда он не нужен, с помощью функцииvertex_format_delete().

-

Все примитивы, которые вы создаете, хранятся в буфере вершин. Он должен быть создан заранее, а затем на него ссылаются функции, которые используются для создания вашего примитива. Буфер вершин можно использовать повторно столько раз, сколько необходимо для создания различных примитивов, или его можно "заморозить", чтобы сохранить определенный тип примитива на все время игры или уровня (это самый быстрый подход, поэтому если вы знаете, что созданный вами примитив не изменится, всегда используйте этот вариант).

-

Пример построения примитива с одним треугольником показан в следующем коде:

-

// CREATE EVENT
- v_buff = vertex_create_buffer();
- vertex_begin(v_buff, global.my_format);
- vertex_position(v_buff, 10, 10);
- vertex_colour(v_buff, c_white, 1);
- vertex_texcoord(v_buff, 0, 0);
- vertex_position(v_buff, 110, 10);
- vertex_colour(v_buff, c_white, 1);
- vertex_texcoord(v_buff, 1, 0);
- vertex_position(v_buff, 110, 110);
- vertex_colour(v_buff, c_white, 1);
- vertex_texcoord(v_buff, 1, 1);
- vertex_end(v_buff);
-
- // DRAW EVENT
- var tex = sprite_get_texture(spr_Background, 0);
- shader_set(shd_shimmer);
- vertex_submit(v_buff, pr_trianglelist, tex);
- shader_reset(); -

-

Здесь мы сначала создаем буфер вершин в событии Create экземпляра, затем начинаем определение различных вершин, составляющих наш треугольный примитив, указывая положение, цвет и UV-координаты текстуры для каждой из трех точек, которые мы хотим использовать. Затем мы завершаем определение вершин и узнаем, что буфер вершин с данными вершин хранится в переменной "v_buff".

-

ПРИМЕЧАНИЕ: Если содержимое буфера будет постоянно обновляться, буфер будет создан, ему будут переданы данные вершин, а затем он будет снова уничтожен - после того, как будет отрисован - и все это на одном шаге.

-

Затем мы отрисовываем содержимое буфера вершин в событии Draw Event с помощью шейдера. Это очень простой пример, и в основном он показывает, как работает GameMaker внутри программы, т.е.: когда вы рисуете sprite, GameMaker создает вершинный буфер с четырьмя вершинами, образующими два треугольника (которые образуют квадрат, также называемый "квад"), и текстурирует эти два треугольника изображением sprite. Когда мы рисуем этот sprite, мы передаем вершинный буфер, и его содержимое выводится на экран.

-

Вы заметите, что когда мы передаем буфер вершин для отрисовки, мы предоставляем тип примитива. Тип используемого примитива может быть точкой, списком или полосой линий, списком или полосой треугольников, но вы не можете использовать веер треугольников, так как большинство мобильных устройств не принимают этот тип примитива. Не забудьте правильно отформатировать вершинный буфер для типа примитива, который будет использоваться для его отрисовки. Например, для рисования примитива с двумя треугольниками в виде списка треугольников требуется 6 точек, а в виде полосы треугольников - только 4 точки. Какой тип использовать - решать вам, это зависит от того, что вы хотите нарисовать, и от эффекта, которого вы хотите добиться.

-

Последний важный момент, который следует отметить при использовании собственных вершинных буферов таким образом, - это то, как это влияет на пакеты вершин, которые отправляются на GPU. Когда вы создаете вершинный буфер, вы создаете самый низкий уровень графических данных, поэтому при рисовании все, что происходит, это то, что GameMaker отправляет ваш буфер непосредственно на видеокарту. Поэтому, если вы хотите улучшить пакетную обработку, вы должны сделать это самостоятельно и хранить то, что вы хотите пакетно обрабатывать, в одном и том же буфере.

-

Как мы уже говорили выше, вершинные форматы строятся с помощью следующих 5 типов атрибутов (добавляются с помощью соответствующей функции vertex_format_add_* ):

- -

В шейдере GLSL ES эти виды распознаются с помощью следующих 4 атрибутов:

- -

Теперь это может показаться странным, поскольку кажется, что мы можем указать больше видов атрибутов в нашем вершинном формате, чем в вершинном шейдере. Однако в шейдере Position и 3D Position рассматриваются как один и тот же атрибут, за исключением того, что Position, как ожидается, имеет только координаты "x" и "y", тогда как 3D Position имеет координаты "x", "y" и "z". Как же сопоставить то, что находится в формате вершин, с тем, как вы определяете атрибуты в шейдере? Давайте начнем с рассмотрения типичного набора атрибутов из шейдера по умолчанию:

-

-

attribute vec3 in_Position;        // (x,y,z)
- //attribute vec3 in_Normal;        // (x,y,z) unused in this shader.
- attribute vec4 in_Colour;          // (r,g,b,a)
- attribute vec2 in_TextureCoord;    // (u,v)

-

А вот фрагмент кода, который устанавливает формат вершин, совместимый с этим шейдером:

-

vertex_format_begin();
- vertex_format_add_position_3d();
- vertex_format_add_colour();
- vertex_format_add_textcoord();
- my_format = vertex_format_end();

-

Итак, как атрибут шейдера сопоставляется с типом вершинного формата? Это просто основано на соглашении об именовании:

- -

Теперь все становится сложнее, когда у вас есть несколько атрибутов одного типа, но все равно все основано на одном и том же соглашении об именовании. Теперь мы рассмотрим предоставление дополнительных координат цвета и текстуры, поскольку в шейдере или вершинном формате может быть только один атрибут Position и один Normal, но может быть несколько атрибутов цвета или текстуры.

-

При добавлении дополнительных цветовых атрибутов в шейдер к концу атрибута шейдера необходимо добавить число, указывающее, к какой именно записи вершинного формата относится атрибут. Вот пример - сначала формат вершин:

-

vertex_format_begin();
- vertex_format_add_position_3d();
- vertex_format_add_colour();
- vertex_format_add_colour();
- vertex_format_add_textcoord();
- my_format = vertex_format_end();

-

А теперь связанные атрибуты шейдера:

-

attribute vec3 in_Position;      // (x,y,z)
- attribute vec4 in_Colour0;       // (r,g,b,a)
- attribute vec4 in_Colour1;       // (r,g,b,a)
- attribute vec2 in_TextureCoord;  // (u,v)

-

В этом случае in_Colour0 сопоставляется с первым vertex_format_add_colour(), а in_Colour1 - со вторым.

-

Координаты текстуры обрабатываются несколько иначе, чем цвет. В основном, все, что не называется in_Position, in_Normal или одним из атрибутов in_Colour[0 ... ], рассматривается как текстурная координата. Порядок, в котором они определены в списке атрибутов в шейдере, обозначает, с каким атрибутом в формате вершин они связаны. Смотрите следующий пример GML:

-

vertex_format_begin();
- vertex_format_add_position_3d();
- vertex_format_add_colour();
- vertex_format_add_textcoord();
- vertex_format_add_textcoord();
- vertex_format_add_textcoord();
- my_format = vertex_format_end();

-

А код шейдера будет выглядеть примерно так:

-

attribute vec3 in_Position;      // (x,y,z)
- attribute vec4 in_Colour;        // (r,g,b,a)
- attribute vec2 in_myTexcoord;    // (u,v)
- attribute vec2 in_TextureCoord;  // (u,v)
- attribute vec2 in_Something;     // (u,v)

-

В этом примере in_myTexcoord, in_TextureCoord и in_Something отображаются на три последовательных атрибута текстурных координат, определенных в вершинном формате.

-

Полный список всех функций, необходимых для создания вершинных форматов, вершинных буферов и примитивов, можно найти на следующей странице:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Additional_Information/Guide_To_Using_Blendmodes.htm b/Manual/contents/Additional_Information/Guide_To_Using_Blendmodes.htm index 1d6d10e5f..e69de29bb 100644 --- a/Manual/contents/Additional_Information/Guide_To_Using_Blendmodes.htm +++ b/Manual/contents/Additional_Information/Guide_To_Using_Blendmodes.htm @@ -1,182 +0,0 @@ - - - - - - Руководство по использованию блендмодов - - - - - - - - - - -

Руководство по использованию блендмодов

-

Если вы пользуетесь GameMaker хоть сколько-нибудь долгое время, вы почти наверняка сталкивались с режимами наложения и, возможно, даже использовали их в своих играх. Режимы наложения - это отличный способ изменить способ рисования, чтобы получить интересные и специфические графические эффекты, но знаете ли вы, как они работают и как их использовать? Эта тема может запутать людей, поэтому в этом разделе мы надеемся развеять некоторые тайны, связанные с режимами наложения, и дать вам возможность использовать их в полной мере в своих играх.

-

-

ОБЗОР

-

Режимы наложения, по сути, указывают вашей игре рисовать определенные вещи, смешивая их с тем, что уже было нарисовано ранее. Все, что вы рисуете на экране, состоит из четырех компонентов - красного, зеленого, синего и альфа, и по умолчанию они рисуются на экране с использованием режима наложения bm_normal. В этом режиме наложения все пиксели рисуются с неизменными значениями цвета и альфа (хотя далее в этом разделе вы увидите, что это не совсем так...), но в GameMaker есть несколько встроенных режимов наложения, которые можно установить, чтобы изменить это поведение.

-

Когда GameMaker рисует пиксель, есть исходный цвет (цвет пикселя, который вы собираетесь нарисовать) и конечный цвет (цвет, который уже есть в пикселе, к которому мы рисуем). При определении нового цвета пикселя GameMaker комбинирует исходный и конечный цвета в соответствии с режимом наложения, как упоминалось выше. Каждый компонент цветов хранится как значение с плавающей точкой между 0 и 1, а новый цвет вычисляется путем умножения каждого компонента исходного цвета на некоторый коэффициент и умножения каждого компонента цвета назначения на другой коэффициент, а затем сложения результатов по компонентам.

-

-

ОСНОВНЫЕ РЕЖИМЫ НАЛОЖЕНИЯ

-

GameMaker использует функцию gpu_set_blendmode() для изменения смешивания, используемого вашей игрой для рисования. Вы должны вызвать эту функцию перед (например) рисованием sprite, а затем установить ее обратно, примерно так:

-

gpu_set_blendmode(bm_add);
- draw_self();
- gpu_set_blendmode(bm_normal);

-

Этот код рисует экземпляр sprite с использованием аддитивного режима наложения. Аддитивный режим наложения устанавливается с помощью одной из доступных констант GML, которых четыре для основных режимов:

-

bm_normal
- bm_add
- bm_subtract
- bm_max

-

Мы уже видели, как выглядит bm_normal - ведь именно он используется по умолчанию! - Так что давайте продолжим и рассмотрим остальные три более подробно...

-

bm_normal example

-

-

bm_add

-
-

Этот режим наложения складывает цвета исходного и конечного пикселей вместе (но не влияет на альфа-значения). Например, если ваше фоновое изображение - сплошной цвет со значением RGB (100,15,70), а затем вы рисуете прямоугольник со значением RGB (120,25,30), то (при использовании bm_add) конечные значения RGB для каждого пикселя прямоугольника будут (220,40,100). Обратите внимание, что значения цвета не могут быть больше 255 (или меньше 0), поэтому все, что в сумме превышает это значение, будет ограничено 255.

-

Использование этого режима наложения - отличный способ добиться эффекта "неонового свечения", и чаще всего он используется для световых эффектов, лазеров или всего того, что должно выглядеть светящимся или люминесцирующим.

-

-
-

bm_subtract

-
-

Этот режим наложения немного отличается от предыдущего, так как он работает на основе процента, а не прямого значения. Этот процент и будет вычитаться из конечного цвета (цвета пикселя, на который накладывается рисунок). Чтобы лучше объяснить это, давайте рассмотрим пример.

-

Представьте, что вы хотите уменьшить значение красного цвета всех пикселей, нарисованных в области комнаты, на 25%. Сначала вам нужно получить 25% от 255, затем преобразовать это значение в значение цвета RGB, а затем использовать его вместе с bm_subtract для обводки области. Примерно так:

-

var red = (25 / 100) * 255;
- var col = make_colour_rgb(red, 0, 0);
- gpu_set_blendmode(bm_subtract);
- draw_rectangle_colour(0, 0, 128, 256, col, col, col, col, false);
- gpu_set_blendmode(bm_normal);

-

Следуя тому же правилу, если бы вы хотели просто уменьшить яркость фона на 50%, вы бы использовали цвет, состоящий из 50% красного, 50% зеленого и 50% синего, т.е. RGB (128, 128, 128). Этот режим наложения в основном используется для рисования теней или создания интересных эффектов затухания.

-

-
-

bm_reverse_subtract

-
-

Этот режим наложения сложнее объяснить, но в основном он умножает исходные цвета на исходную альфу, затем добавляет их к значениям конечного цвета, умноженным на обратные значения исходного цвета. О математике, лежащей в основе bm_max (и других режимов наложения), мы расскажем во второй части нашей статьи, но все, что вам нужно знать, это то, что результатом будет более "насыщенный" и яркий цвет, не приводящий к такому же чистому белому блеску, как при использовании bm_add.

-

Этот режим наложения может быть полезен, когда нужно нарисовать перекрывающиеся изображения так, чтобы они не стали настолько яркими, что их нельзя было бы увидеть. Яркие части станут ярче, но они должны сохранять уровень цвета и оттенка. Обратите внимание, что альфа-значение исходного изображения также будет влиять на конечный эффект при использовании этого режима наложения.

-
-

-

Теперь вы знаете самые основы использования режима наложения в GameMaker. Он берет значения RGB и альфа для исходного изображения (то, что рисуется), а затем смешивает их со значениями RGB и альфа для конечного изображения (то, что тоже рисуется). Это смешивание выполняется путем умножения отдельных компонентов для каждого цвета пикселя и альфа на разное количество, в зависимости от эффектов, которых мы хотим достичь. С этими знаниями вы можете начать использовать режимы наложения в своих играх, чтобы получить светящиеся лазеры, реалистичные тени или насыщенные эффекты перехода, но вам еще многое предстоит узнать! Ниже мы рассмотрим расширенные режимы наложения, а также изучим немного математики, стоящей за ними, чтобы вы могли создавать свои собственные эффекты наложения, такие как умножение или наложение.

-

-

Расширенные режимы смешивания

-

Выше мы говорили о функции gpu_set_blendmode(), но теперь мы рассмотрим gpu_set_blendmode_ext(). Это (как следует из названия) расширенная функция для установки пользовательских режимов наложения, но как это работает? Давайте сначала посмотрим на сухой технический ответ, прежде чем двигаться дальше:

- -

Хотя этот текст верен и объясняет, что делают режимы наложения, он не совсем интуитивно понятен... поэтому давайте разберемся немного подробнее и объясним, что это такое.

-

Когда мы говорим об источнике , мы имеем в виду цвет и альфа-значения рисуемого пикселя, а когда мы говорим о месте назначения , мы имеем в виду цвет и альфа-значения пикселя, поверх которого он рисуется. Чтобы упростить задачу, мы можем записать исходный цвет в виде его компонентов, например, так:

- -

И место назначения будет таким:

- -

Поэтому, когда мы рисуем что-то на экране, наш графический процессор фактически делает следующее для каждого отдельного пикселя:

-

final_pixel_colour =  (Rs,Gs,Bs,As) * source_blend_factor + (Rd,Gd,Bd,Ad) * destination_blend_factor

-

Коэффициенты смешивания, упомянутые выше, определяются в GameMaker рядом констант GML, каждая из которых представляет собой коэффициент, на который следует умножить исходные или конечные значения R, G, B и A. Доступны следующие коэффициенты:

- -

Четыре "основных" режима наложения, которые есть в GameMaker, на самом деле являются композициями двух из этих факторов наложения.

-

Пример работы bm_normal

-
-

Пришло время рассмотреть практический пример того, как это сочетается для рисования в GameMaker. Для этого мы рассмотрим bm_normal, который является действительно:

-

gpu_set_blendmode_ext(bm_src_alpha, bm_inv_src_alpha);

-

Одна из проблем, с которой сталкиваются люди при работе с режимами наложения, - это визуализация результатов, поэтому, чтобы показать математику, лежащую в их основе, мы будем использовать этот режим наложения в качестве подопытного, поскольку он используется всеми чаще всего, и мы точно знаем, чего от него ожидать. Представьте, что мы рисуем прямоугольник с цветом (128, 255, 64, 255) на фоне с цветом (64, 128, 255, 255):

-

Итак, наш режим наложения выглядит следующим образом:

-

Source: (128, 255, 64, 255) = (0.5, 1, 0.25, 1)
- Destination: (64, 128, 255, 255) = (0.25, 0.5, 1, 1)
-
- Factors:
- bm_src_alpha (As, As, As, As) = (255, 255, 255, 255) = (1, 1, 1, 1)
- bm_inv_src_alpha (1-As, 1-As, 1-As, 1-As) =  (0, 0, 0, 0)
-
- Formula:
- (Rs,Gs,Bs,As) * bm_src_alpha + (Rd,Gd,Bd,Ad) * bm_inv_src_alpha
-
- Apply factors:
- (0.5, 1, 0.25, 1) * (1, 1, 1, 1) + (0.25, 0.5, 1, 1) * (0, 0, 0, 0)
- (0.5, 1, 0.25, 1) + (0, 0, 0, 0) = (0.5, 1, 0.25, 1) = (128, 255, 64, 255)

-

Как вы видите, мы умножаем конечные значения на 0, что дает им значение 0, что означает, что исходные цвета остаются неизменными, поэтому наше окончательное значение цвета равно (128, 255, 64, 255). Вы можете видеть, как включение альфы влияет и на это значение:

-

Source (128, 255, 64, 128) = (0.5, 1, 0.25, 0.5)
- Destination: (64, 128, 255, 255) = (0.25, 0.5, 1, 1)
-
- Factors:
- bm_src_alpha (As, As, As, As) = (128, 128, 128, 128) = (0.5, 0.5, 0.5, 0.5)
- bm_inv_src_alpha (1-As, 1-As, 1-As, 1-As) = (0.5, 0.5, 0.5, 0.5)
-
- Formula:
- (Rs,Gs,Bs,As) * bm_src_alpha + (Rd,Gd,Bd,Ad) * bm_inv_src_alpha
-
- Apply factors:
- (0.5, 1, 0.25, 0.5) * (0.5, 0.5, 0.5, 0.5) + (0.25, 0.5, 1, 1) * (0.5, 0.5, 0.5, 0.5)
- (0.25, 0.5, 0.125, 0.25) + (0.125, 0.25, 0.5, 0.5) = (0.375, 0.75, 0.625, 0.75) = (96, 192, 159, 192)

-

Это дает конечный цвет пикселя (96, 192, 159, 192) и позволяет получить изображение, подобное показанному ниже:

-

bm_add example

-

Надеюсь, теперь вы ясно видите, что делают факторы режима наложения и как их сочетание может изменить нарисованное изображение, создавая интересные эффекты. Теперь мы рассмотрим практический пример того, как комбинировать эти факторы для создания собственных режимов наложения.

-

-

-
-

Теперь вы знаете, как работает настройка режимов наложения и видели пример ее использования в повседневном рисовании, давайте рассмотрим кое-что более сложное...

-

-

СОЗДАНИЕ СОБСТВЕННЫХ РЕЖИМОВ НАЛОЖЕНИЯ

-

Используя различные доступные факторы, вы можете создавать собственные режимы наложения для достижения недоступных в обычных условиях вариантов смешивания. В этом примере мы создадим эффект умножения , подобный тому, что используется в Photoshop. Мы можем смоделировать этот режим наложения с помощью двух вышеупомянутых констант коэффициентов режима наложения следующим образом:

-

gpu_set_blendmode_ext(bm_dest_colour, bm_zero);

-

Прежде чем мы нарисуем что-то, используя этот режим наложения, давайте посмотрим, как это должно выглядеть в Photoshop:

-

Используя расширенный режим наложения, мы получаем следующее:

-

(Rs, Gs, Bs, As) * (Rd, Gd, Bd, Ad) + (Rd, Gd, Bd, Ad) * (0,0,0,0) = (Rs, Gs, Bs, As) * (Rd, Gd, Bd, Ad)
- Source colour * dest colour + dest colour * zero = source colour * dest colour

-

Коэффициент смешивания bm_zero фактически удаляет цвет назначения из уравнения (так как ноль на ноль - это ноль), поэтому у нас остается исходный цвет, умноженный на коэффициент смешивания цвета назначения, отсюда и название "multiply" для режима. Чтобы использовать этот режим в GameMaker, в событии Draw Event нужно просто написать что-то вроде этого:

-

gpu_set_blendmode_ext(bm_dest_colour, bm_zero);
- draw_self();
- gpu_set_blendmode(bm_normal);

-

Следующее изображение было получено из тестового проекта в GameMaker с использованием именно этого кода:

-

Можете ли вы заметить разницу? Скорее всего, нет! Правда, будет некоторое отклонение между двумя режимами из-за различий между используемыми инструментами рендеринга, но это почти то, что вы ожидаете. Обратите внимание, что не все режимы наложения, используемые в художественных программах, доступны вам в GameMaker, поскольку некоторые из них могут заставить значения цвета превысить 255 и таким образом создать специальные эффекты, но это не значит, что вы не сможете создать с их помощью достойные имитации этих эффектов или даже совершенно новые эффекты.

-

Стоит отметить, что в GameMaker вы можете сделать еще один шаг вперед, используя функцию gpu_set_blendmode_ext_sepalpha(). Она позволяет отделить альфа-компонент от различных коэффициентов режима наложения и использовать их по отдельности для создания еще большего количества возможных комбинаций. Мы не будем рассматривать эту функцию здесь, так как она подробно описана в руководстве, но о ней стоит упомянуть, чтобы вы знали, что она доступна для использования.

-

-

ПОВЕРХНОСТИ И АЛЬФА

-

И последнее, что стоит отметить о режимах наложения, это то, как они влияют на альфа-компонент цвета. Когда вы просто рисуете на поверхности приложения или в буфере дисплея, вам не нужно принимать во внимание значение альфа-коэффициента назначения, поскольку оно всегда будет равно единице. Однако поверхности, которые вы создаете сами, отличаются, поскольку вы можете очистить поверхность, чтобы она имела любое значение альфа от нуля до единицы. Это приводит к некоторым интересным эффектам, которые противоречат ожиданиям большинства людей.

-

Чтобы проиллюстрировать это, мы рассмотрим рисование с использованием базового значения по умолчанию bm_normal. Большинство людей думают, что если очистить поверхность до альфа 0, а затем нарисовать что-то с альфа 0,5, то результирующее значение альфа тоже будет 0,5... но это не так, и многие считают это "ошибкой" в том, как GameMaker делает рендеринг. Однако, как вы увидите, это вовсе не ошибка!

-

Допустим, у вас есть поверхность, каждый пиксель которой имеет альфа 0, затем вы рисуете на ней круг с альфа 0,5, используя режим наложения bm_normal. Вся поверхность по-прежнему будет иметь альфа 0, но в круге альфа будет 0,25, так как:

-

0.5 * 0.5 + 0 * 0.5 = 0.5 * 0.5 = 0.25

-

Если в существующем круге нарисовать еще один круг, также с альфой 0,5, то альфа за пределами кругов будет равна 0, между кругами - 0,25, а в меньшем круге - 0,375:

-

0.5 * 0.5 + 0.25 * 0.5 = 0.25 + 0.125 = 0.375

-

Если бы вы продолжили рисовать ряд кругов с альфа 0,5 к поверхности с альфа 0, а затем нарисовали бы эту поверхность в комнате, вы бы смогли ясно увидеть это:

-

Если вы все еще немного не понимаете, что такое альфа, попробуйте представить его как еще один цвет. Он ведет себя как цвет, и все вычисления с ним выполняются аналогичным образом. Он просто не очень заметен, хотя влияние, которое он оказывает на другие цвета, заметно. Это подводит нас к последнему моменту, на который следует обратить внимание при использовании поверхностей и режимов наложения (даже bm_normal)...

-

Даже если альфа поверхности равна 0, цветовые компоненты все еще существуют и будут влиять на все операции смешивания.. Поэтому при рисовании на очищенной поверхности с нулевой альфой, которая была очищена с помощью красного цвета (например), исходные цвета смешаются с конечными цветами и дадут эффект, отличный от того, который вы можете себе представить. Приведенное выше изображение было создано на поверхности, очищенной до черного цвета, на черном фоне, но если мы очистим поверхность до красного цвета, то получим следующее:

-

Надеюсь, теперь вы сможете сами разобраться, почему так происходит, используя формулы, которые я описал выше, и применяя соответствующие цифры для bm_normal.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Additional_Information/Guide_To_Using_Buffers.htm b/Manual/contents/Additional_Information/Guide_To_Using_Buffers.htm index 968b0feb0..e69de29bb 100644 --- a/Manual/contents/Additional_Information/Guide_To_Using_Buffers.htm +++ b/Manual/contents/Additional_Information/Guide_To_Using_Buffers.htm @@ -1,232 +0,0 @@ - - - - - - Руководство по использованию буферов - - - - - - - - - - -

Руководство по использованию буферов

-

Буфер (в программировании) - это пространство в системной памяти, которое используется для хранения небольших пакетов данных практически для всего (например: передача данных, столкновения, данные о цвете и т.д.). Поскольку он хранится в системной памяти, доступ к нему осуществляется очень быстро, и буфер обычно используется для очень краткосрочного хранения, например, для получения сетевой информации перед ее обработкой или для хранения контрольной точки в вашей игре (это объясняется в примере, приведенном далее на странице).

-

Буферы создаются путем выделения места в системной памяти, исчисляемого в байтах, которое затем резервируется для вашей игры, пока игра запущена или пока вы не удалите буфер с помощью соответствующей функции (вы можете найти все функции буфера GML, перечисленные здесь). Это означает, что даже когда ваша игра не находится в фокусе (например, на мобильном устройстве, когда вы принимаете звонок, игра переходит в фоновый режим), буфер все еще будет существовать, однако если игра будет закрыта или запущена заново, буфер будет потерян.

-

ПРИМЕЧАНИЕ: Перезапуск игры не очистит и не удалит буфер! Но это предотвратит дальнейший доступ к ранее созданному буферу, так как ID handle будет потерян, что вызовет утечку памяти, которая в конечном итоге приведет к краху вашей игры. Поэтому, перезапуская игру, не забудьте сначала удалить все буферы.

-

GameMaker позволяет создавать четыре различных типа буферов. Причина этого заключается в том, что буферы предназначены для высоко оптимизированного временного хранения данных, и поэтому вы должны создавать буфер, соответствующий типу данных, которые вы хотите в нем хранить, иначе вы можете получить ошибки или вызвать узкое место в вашем коде. Прежде чем объяснять это дальше, давайте рассмотрим четыре доступных типа буферов (определенные как константы в GML):

-

- - - - - - - - - - - - - - - - - - - - - - - -
Постояннаяописание
buffer_fixed
- Буфер фиксированного размера в байтах. Размер устанавливается при создании буфера и больше не может быть изменен.
buffer_grow
- Буфер, который будет динамически увеличиваться по мере добавления данных. Вы создаете его с начальным размером (который должен быть приблизительно равен размеру данных, которые предполагается хранить), а затем он будет расширяться, принимая данные, превышающие этот начальный размер.
buffer_wrap
- Буфер, в который будут заворачиваться данные. Когда добавляемые данные достигнут предела размера буфера, перезапись будет помещена обратно в начало буфера, и дальнейшая запись продолжится с этого момента.
buffer_fast
- Это специальный "урезанный" буфер, который очень быстро читается и записывается. Однако он может использоваться только с типами данных buffer_u8 и должен быть выровнен по 1 байту. (Информацию о типах данных и выравнивании байтов можно найти далее на этой странице).
-

-

Таковы типы буферов, доступные вам при работе с GameMaker, и выбор буфера во многом зависит от того, для каких целей вы хотите его использовать. Например, растущий буфер будет использоваться для хранения "снимка" данных для создания сохранения игры, поскольку вы не знаете фактического объема данных, которые будут в него помещены, или быстрый буфер будет использоваться, когда вы знаете, что все значения, с которыми вы работаете, находятся в диапазоне от 0 до 255 или от -128 до 127, например, при обработке данных ARGB из изображения.

-

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

-

Фактический код для создания буфера будет выглядеть примерно так:

-

player_buffer = buffer_create(16384, buffer_fixed, 2);

-


- Это создаст фиксированный буфер размером 16384 байта с выравниванием по байтам до 2, при этом функция возвращает уникальное значение ID, которое хранится в переменной для последующего обращения к этому буферу.

-

При чтении и записи данных в буфер, вы делаете это "кусками" данных, определяемыми их "типом данных". Тип данных" задает количество байт, выделяемых в буфере для записываемого значения, и очень важно, чтобы это было правильно, иначе вы получите очень странные результаты (или даже ошибки) для вашего кода.

-

Запись в буфер (и чтение из него) происходит последовательно, то есть одна часть данных записывается за другой, причем каждая часть данных имеет определенный тип. Это означает, что в идеале вы должны постоянно знать, какие данные вы записываете в буфер. Эти типы данных определяются в GML следующими константами:

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип данных КонстантаБайтыОписание
buffer_u81
- Беззнаковое 8-разрядное целое число. Это положительное значение от 0 до 255.
buffer_s81
- Знаковое 8-разрядное целое число. Это может быть положительное или отрицательное значение от -128 до 127 (0 считается положительным).
buffer_u162
- Беззнаковое 16-разрядное целое число. Это положительное значение от 0 до 65 535.
buffer_s162
- Подписанное 16-разрядное целое число. Это может быть положительное или отрицательное значение от -32,768 до 32,767 (0 считается положительным).
buffer_f162
- 16-разрядное число с плавающей запятой. Это может быть положительное или отрицательное значение в диапазоне +/- 65504. (В настоящее время не поддерживается!)
buffer_u324
- Беззнаковое 32-разрядное целое число. Это положительное значение от 0 до 4 294 967 295.
buffer_s324
- Подписанное 32-разрядное целое число. Это может быть положительное или отрицательное значение от -2,147,483,648 до 2,147,483,647 (0 считается положительным).
buffer_f324
- 32-разрядное число с плавающей запятой. Это может быть положительное или отрицательное значение в диапазоне +/-16777216.
buffer_u648
- 64-битное беззнаковое целочисленное значение.(В настоящее время поддерживается не всеми функциями буфера!)
buffer_f648
- 64-разрядное число с плавающей запятой.
buffer_bool1
- Булево значение. Может быть только 1 или 0 (true или false).
buffer_stringН/Д
- Это строка UTF-8 с нулевым окончанием (0x00). По сути, в буфер сбрасывается строка GameMaker, а в конце ставится 0.
-

-

Итак, допустим, вы создали буфер и хотите записать в него информацию, тогда вы используете что-то вроде следующего кода:

-

buffer_write(buff, buffer_bool, global.Sound);
- buffer_write(buff, buffer_bool, global.Music);
- buffer_write(buff, buffer_s16, obj_Player.x);
- buffer_write(buff, buffer_s16, obj_Player.y);
- buffer_write(buff, buffer_string, global.Player_Name);

-

Рассмотрев приведенный выше пример, можно увидеть, что в буфер можно одновременно записывать различные типы данных (при использовании быстрого типа буфера вы ограничены только определенным типом данных), и эти данные будут добавляться в буфер последовательно (хотя их фактическое положение в буфере будет зависеть от их выравнивания по байтам, о чем будет сказано ниже). То же самое относится и к чтению информации из буфера, и в случае приведенного выше примера вы будете читать из буфера в том же порядке, в котором записывали данные, проверяя их на одинаковый тип, например

-

global.Sound = buffer_read(buff, buffer_bool);
- global.Music = buffer_read(buff, buffer_bool);
- obj_Player.x = buffer_read(buff, buffer_s16);
- obj_Player.y = buffer_read(buff, buffer_s16);
- global.Player_Name = buffer_read(buff, buffer_string);

-

Как вы видите, вы считываете информацию в том же порядке, в котором вы считываете ее в буфер. Для получения дополнительной информации о том, как добавлять и удалять данные из буфера, смотрите примеры, приведенные ниже.

-

Если вы читали эту страницу, то наверняка видели упоминания о выравнивании байтов в буфере. В основном это относится к позиции, в которой новые данные будут храниться в данном буфере. Как это работает? Для буфера с выравниванием по одному байту каждый фрагмент данных записывается в буфер последовательно, причем каждый новый фрагмент данных добавляется непосредственно после предыдущего. Однако буфер с выравниванием по 2 байтам будет записывать каждый фрагмент данных с интервалом в 2 байта, так что даже если ваша первоначальная запись составляет 1 байт данных, следующая запись будет перемещена для выравнивания по двум байтам:

-

Так, если ваше выравнивание по байтам установлено, скажем, на 4 байта, и вы записываете один фрагмент данных размером в 1 байт, затем выполняете буфер tell (буфер tell получает текущую позицию для чтения/записи для буфера), вы получите смещение в 1 байт (смещение в данном случае - это количество байт от начала буфера до текущей позиции чтения/записи).

-

Однако если вы запишете еще один фрагмент данных размером в 1 байт, а затем выполните буфер tell, вы получите смещение в 5 байт (даже если вы записали только 2 байта данных), так как выравнивание добавило данные, чтобы выровнять их с выравниванием буфера в 4 байта.

-

По сути, это означает, что выравнивание влияет только на то , куда записываются данные, поэтому если после записи чего-либо вы сделаете буфер tell, он вернет текущую позицию записи, которая следует сразу за данными, которые вы ранее записали. Обратите внимание, однако, что если после этого вы запишете еще один фрагмент данных, буфер с внутренней стороны переместит позицию записи на следующую кратную величину выравнивания, прежде чем записать этот фрагмент данных.

-

Ниже мы приводим несколько примеров использования буферов в проекте:

-

-

Контрольная точка буфера

-
-

Простым примером использования буфера в игре GameMaker для любой платформы является функция game_save_buffer(). Эта функция делает "снимок" текущего состояния игры и сохраняет его в заранее определенном буфере, который затем может быть прочитан, чтобы снова загрузить игру в этот момент.

-

ПРИМЕЧАНИЕ: Эта функция очень ограничена и предназначена для новичков, чтобы быстро запустить систему контрольных точек, но более опытные пользователи могут предпочесть кодировать свою собственную систему, используя функции File, из-за того, что игра не будет сохранять динамические ресурсы, которые вы можете создавать во время выполнения, такие как структуры данных, поверхности, добавленные sprites и т.д..

-

Первое, что нам нужно сделать, это создать новый объект для управления сохранением и загрузкой, поэтому создайте его и дайте ему событие Create. В этом событии вы можете разместить следующий код:

-

SaveBuffer = buffer_create(1024, buffer_grow, 1);
- StateSaved = false;

-

Первая строка создает растущий буфер (поскольку мы не знаем окончательного размера сохраненных данных) размером 1024 байта с выравниванием по 1 байту. Затем создается переменная для проверки, была ли игра сохранена или нет (она будет использоваться для загрузки).

-

Далее мы добавим событие нажатия клавиш (например, Keypress Event ), в котором мы сохраним текущее состояние игры в созданный буфер:

-

StateSaved = true;
- buffer_seek(SaveBuffer, buffer_seek_start, 0);
- game_save_buffer(SaveBuffer);

-

Приведенные выше действия сначала установят управляющую переменную в true (чтобы она сохранилась при сохранении игры в буфер), а затем обратятся к началу буфера перед записью в него текущего состояния сохранения. Почему мы используем buffer_seek()? Как уже упоминалось на этой странице, вы читаете и записываете в буфер с последней позиции, с которой в него были добавлены данные. Это означает, что если вы не установите буфер tell обратно в начало, то при сохранении вы будете добавлять данные в буфер в текущей позиции чтения/записи буфера. Поэтому мы используем функцию buffer_seek(), чтобы переместить tell в начало буфера.

-

Теперь мы сохранили текущее состояние игры в буфер. Следующим шагом будет разработка кода для его загрузки, возможно, в другом событии Keypress Event:

-

if StateSaved
- {
-     buffer_seek(SaveBuffer, buffer_seek_start, 0);
-     game_load_buffer(SaveBuffer);
- }

-

Игра будет загружена в конце события, в котором вы разместите приведенный выше код.

-

ПРИМЕЧАНИЕ: Это только для использования в одной комнате, а не для создания полных сохраненных игр после закрытия или перезапуска игры!

-

Последнее, что нужно добавить в объект контроллера, - это код "очистки". Буферы хранятся в памяти, и поэтому, если вы не очистите их после завершения работы с ними, вы можете получить утечку памяти, которая в конечном итоге приведет к лагам и краху вашей игры. Поэтому вы, вероятно, добавите событие Room End Event (из категории Other event) с:

-

buffer_delete(SaveBuffer);

-

Теперь этот объект можно поместить в комнату и по нажатию клавиши сохранить и загрузить состояние комнаты из буфера.

-

-
-

Сетевые буферы

-
-

При работе с сетевыми функциями GameMaker вам придется использовать буферы для создания пакета данных, который передается по сетевому соединению. Этот пример призван показать, как это делается, но из-за широких возможностей сетевых функций он предназначен только для того, чтобы показать, как использовать сами буферы, а не всю сетевую систему.

-

Первое, что мы покажем, это создание и использование буфера для клиентской стороны сетевого соединения. Этот буфер будет использоваться для создания небольших пакетов данных, которые затем могут быть отправлены на сервер, поэтому в событии Create экземпляра мы назначим буфер следующим образом:

-

send_buff = buffer_create(256, buffer_grow, 1);

-

Мы делаем буфер небольшим (256 байт) - поскольку он не предназначен для хранения большого количества данных - затем мы делаем его растущим буфером, чтобы гарантировать отсутствие ошибок, если нам понадобится добавить больше данных для отправки в любое время, а выравнивание установлено на единицу для удобства.

-

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

-

buffer_seek(buff, buffer_seek_start, 0);
- buffer_write(buff, buffer_u8, 1);
- buffer_write(buff, buffer_s16, vk_left);
- buffer_write(buff, buffer_bool, true);
- network_send_packet(client, buff, buffer_tell(buff));

-

Перед записью в буфер мы установили "tell" в начало буфера, так как networking всегда берет данные из начала буфера. Затем мы записываем контрольное значение (оно будет использоваться сервером для определения типа обрабатываемого события), затем используемую клавишу, а затем состояние клавиши (в данном случае true для нажатой). Этот буфер затем отправляется сетевой функцией в виде пакета данных. Обратите внимание, что мы не отправляем весь буфер! Мы отправляем только записанные данные, используя функцию buffer_tell для возврата текущей позиции чтения/записи в буфере (помните, что запись в буфер перемещает "tell" в конец того, что было записано). Это делается просто для того, чтобы избежать отправки большего количества байт, чем необходимо.

-

А как насчет получения данных на сервере? Полученный пакет данных должен быть записан в буфер на сервере и затем использован для обновления игры. Для этого мы будем использовать асинхронное событие Networking в объекте сетевого контроллера сервера, как показано в этом упрощенном коде ниже:

-

var buff = ds_map_find_value(async_load, "buffer");
- if (cmd == buffer_read(buff, buffer_u8))
- {
-     key = buffer_read(buff, buffer_s16);
-     key_state = buffer_read(buff, buffer_bool);
- }

-

Асинхронное событие будет содержать специальную временную карту DS async_load (она удаляется из памяти по окончании события автоматически), которая содержит различную информацию в зависимости от типа входящих данных из сети. В данном случае мы предполагаем, что карта была проверена и оказалась буферным пакетом данных, отправленным от клиента. Теперь мы проверяем первую часть данных, которая находится в буфере, чтобы увидеть, какой тип события был отправлен - в данном случае значение "1" представляет собой событие нажатия клавиши, однако при кодировании таких вещей вы должны определить константы для хранения этих значений, чтобы упростить работу - и затем сохранить нажатую клавишу и ее состояние (true = нажата, false = отпущена). Эта информация затем будет использоваться для обновления всех клиентов с новым статусом игрока отправляющего клиента.

-

ПРИМЕЧАНИЕ: Буфер, который создается из карты DS, автоматически удаляется в конце сетевого асинхронного события, поэтому здесь нет необходимости использовать buffer_delete().

-

-
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Additional_Information/Guide_To_Using_Particles.htm b/Manual/contents/Additional_Information/Guide_To_Using_Particles.htm index b9ffc2734..e69de29bb 100644 --- a/Manual/contents/Additional_Information/Guide_To_Using_Particles.htm +++ b/Manual/contents/Additional_Information/Guide_To_Using_Particles.htm @@ -1,201 +0,0 @@ - - - - - - Руководство по использованию частиц - - - - - - - - - -

Руководство по использованию частиц

-

Это руководство предназначено для тех, кто хочет понять, как использовать и создавать частицы. На этой странице будут рассмотрены функции языка GameMaker Language и визуальные действия GML для частиц. Если вы никогда раньше не использовали частицы, мы надеемся, что это руководство поможет вам начать, поскольку они очень полезны и довольно забавны в создании.

-

Прежде чем продолжить, мы, вероятно, должны объяснить, что такое частица... По сути, частица - это графический ресурс, имеющий определенные свойства, которые определяются системой частиц. Этими свойствами нельзя управлять непосредственно для отдельных частиц, но они изменяются коллективно с помощью кода или действий, которые используются для определения системы, к которой они принадлежат. Они очень полезны для создания красивых и ярких эффектов - или тонких и незаметных - в игре без нагрузки на процессор, которую несет использование экземпляров.

-

Мы уже упоминали о системах частиц, поэтому давайте объясним, что это такое, прежде чем продолжить. Думайте о системе частиц как о контейнере, который вы будете использовать для хранения частиц, готовых к использованию. Вы можете использовать код или действия для определения визуального аспекта частиц, а затем они помещаются в "контейнер" (систему частиц), чтобы вы могли достать его и использовать в любое время и в любом месте, где он вам понадобится.

-

Прежде чем настраивать систему и создавать частицы, важно знать несколько вещей... Во-первых, большая часть кода системы частиц вызывается только один раз в игре, обычно в каком-нибудь объекте контроллера в первой комнате или уровне - это не всегда так, но для простоты мы будем использовать этот сценарий в следующем кратком руководстве, поскольку это самый распространенный способ использования частиц. Это делается потому, что система частиц, однажды созданная, остается в памяти и готова к использованию в любое время, поэтому если вы создаете ее более одного раза, это может быстро увеличить использование памяти и вызвать серьезные задержки, и даже может привести к краху игры. Для простоты в этом руководстве вы создадите глобальную систему частиц, которая может быть использована любым экземпляром в игре в любое время.

-

-

Создание системы частиц

-
-

Для начала необходимо определить систему частиц и дать ей имя, чтобы ее можно было использовать. Поскольку это будет глобальная система, которую может использовать любой объект, вы должны сделать это в объекте контроллера или в функции инициализации, запускаемой в начале игры. Сайт GML будет выглядеть следующим образом:

-

global.P_System = part_system_create_layer("Instance_Layer", false);

-

И используя GML Visual:

-

Обратите внимание, что указанное имя слоя должно быть действительным слоем в помещении, где будет использоваться система, иначе частицы не будут видны. Также обратите внимание, что мы установили флаг "persistent" (как в коде, так и в GML Visual) на false. Постоянная система частиц - это система, которая будет "сохраняться" в разных комнатах без необходимости уничтожать и создавать ее заново для каждой комнаты. Однако, чтобы упростить задачу, в данном руководстве мы не будем использовать постоянство.

-

Итак, система создана, но как насчет частиц? Мы должны определить и их, иначе система бесполезна и ничего не делает.

-

-
-

Определение типа частицы

-
-

Чтобы использовать частицу в системе, необходимо сначала определить ее общие свойства. Они похожи на свойства объекта, но применяются только в общем случае к отдельным частицам. Это означает, что если вы зададите частицам минимальную скорость движения 1 и максимальную скорость движения 2, то любая частица, созданная системой, будет иметь случайную скорость между 1 и 2 пикселями за шаг, и в целом их средняя скорость будет равна 1,5. Вы должны назвать и добавить первую частицу в систему, используя следующий GML в том же объекте, который вы использовали для создания системы:

-

global.Particle1 = part_type_create();

-

И для тех из вас, кто использует GML Visual:

-

Обратите внимание, что при использовании GML Visual мы также отмечаем опцию смешивания . Это включает аддитивное смешивание для частиц, о котором мы поговорим чуть ниже.

-

Теперь у вас есть система и частица, которую нужно в нее поместить, но вы еще не готовы к созданию выдающихся эффектов! Вам еще предстоит определить свойства частицы, то есть то, как она выглядит - ее скорость, ее вращение, ее альфа и т.д.... Существует множество деталей, которые можно использовать для определения эффекта частицы, поэтому ниже приведен обзор наиболее важных параметров, а также фрагмент кода и GML Visual, который использует их все:

- -

Теперь, прежде чем мы представим вам код для определения частицы, давайте немного поговорим о "wiggle"... Хотите верьте, хотите нет, но "wiggle" является свойством частицы и может быть установлено для многих из вышеперечисленных параметров по отдельности. Когда вы видите "wiggle" в качестве аргумента для функции или действия частицы, это означает, что если вы поставите число от 1 до 20, частица будет "вихлять" или колебаться между минимальным и максимальным значениями для этого свойства, причем 1 - это медленное вихляние, а 20 - очень быстрое. Таким образом, частица со скоростью минимум 2 и максимум 5 с "вихлянием" 20 будет очень быстро колебаться между минимальной и максимальной скоростями в течение времени жизни каждой созданной частицы.

-

ПРИМЕЧАНИЕ: Существуют и другие незначительные свойства частиц, которые мы здесь не рассматриваем, чтобы максимально упростить процесс. Полная информация о свойствах частиц приведена на соответствующих страницах.

-

Давайте теперь посмотрим на код, определяющий частицу:

-

// This defines the particle's shape -
- part_type_shape(global.Particle1,pt_shape_pixel); -
-
- // This is for the size -
- part_type_size(global.Particle1,1,1,0,2); -
-
- // This sets its colour. There are three different codes for this -
- part_type_color1(global.Particle1,c_white); -
-
- // This is its alpha. There are three different codes for this -
- part_type_alpha1(global.Particle1,1); -
-
- // The particles speed -
- part_type_speed(global.Particle1,0.50,2,-0.10,0); -
-
- // The direction -
- part_type_direction(global.Particle1,0,359,0,20); -
-
- // This changes the rotation of the particle -
- part_type_orientation(global.Particle1,0,0,0,0,true); -
-
- // This is the blend mode, either additive or normal -
- part_type_blend(global.Particle1,1); -
-
- // This is its lifespan in steps -
- part_type_life(global.Particle1,5,30);

-

Чтобы создать такое же определение частицы в GML Visual, нам понадобятся следующие действия:

-

Вот и все! Теперь мы определили наши частицы, и они готовы к использованию.

-

-
-

Создание частиц непосредственно в игре

-
-

Существует несколько способов создания частиц, и каждый из них имеет свои плюсы и минусы. Вы можете использовать эмиттеры для разрыва или потока частиц, а можете создавать частицы непосредственно в точке. Выбор способа зависит от того, чего вы пытаетесь достичь и какой эффект хотите создать, но мы начнем с самого простого из них - создания частиц напрямую. В GML мы используем следующую функцию:

-

part_particles_create(global.P_System, x, y, global.Particle1, 10);

-

и в GML Визуально это будет:

-

Этот единственный код/действие выше создаст 10 частиц в заданных координатах x/y типа "Particle1" из нашей глобальной системы. Просто! Самое замечательное в этой строке кода/действия то, что ее можно использовать в любом месте без лишних усилий. Например, если вы поместите ее в глобальное событие нажатия левой кнопки мыши в объекте и измените значения x/y для позиции mouse_x/y, она будет создавать частицы в позиции мыши каждый раз, когда вы нажимаете кнопку. Или, если у вас есть ракета, вы можете поместить это в событие шага, и частицы дыма будут появляться каждый шаг (хотя 1 или 2 будет лучше, чем 10!). Можно даже заставить его создавать частицы по области, например, случайным образом изменяя координаты x/y:

-

repeat(50) -
- { -
- var xx = x + 20 - random(40); -
- var yy = y + 20 - random(40); -
- part_particles_create(global.P_System, xx, yy, global.Particle1, 1); -
- }

-

Приведенный выше код создаст 50 частиц в случайном положении в пределах квадратной области размером 40px.

-

-
-

Создание частиц с помощью излучателей

-
-

Поскольку мы объяснили простой способ создания частиц, давайте теперь пойдем более сложным путем, который заключается в использовании эмиттеров. Эмиттеры - это еще одна часть системы частиц, которая должна быть определена перед использованием, поэтому мы создадим глобальный эмиттер так же, как мы это делали для системы и частиц. Нам также нужно решить, будет ли эмиттер статичным (недвижущимся) или нет, будем ли мы выпускать или распылять частицы, а также решить, на какой площади и какое распределение будет использовать эмиттер.

-

Что все это значит? Статический эмиттер - это тот, который вы можете задать один раз и забыть о нем, поскольку он не будет никуда двигаться в течение всей игры, т.е. представьте себе костер из поленьев - он не движется, он просто излучает пламя и поэтому статичен, но для огненного шара потребуется динамический эмиттер, который будет двигаться по экрану. Что касается всплеска или потока, то всплеск - это одноразовый взрыв частиц, в то время как поток - это постоянный поток частиц на каждом шагу. Что касается области и распределения, то с помощью эмиттеров можно определить область для излучения частиц (это может быть прямоугольник, эллипс, ромб или линия), а также кривую распределения (гауссову, обратную гауссову или линейную).

-

Следующие изображения иллюстрируют различные типы формы области, доступные для излучателей:

-

-
Create Particle System Create Particle Type
-
Define Particle Type Create Particles At A Position
-

-
- А кривые распределения (линейная, гауссова и обратная гауссова) показаны здесь:

-

Create Particles Over A Random Area

-

Ниже приведен пример кода/действий, необходимых для определения двух эмиттеров, которые обычно идут в событии Create объекта контроллера, сразу после определения системы частиц. Один из них будет статичным и будет распылять частицы по площади всей комнаты, а другой будет динамичным и будет следовать за мышью и вырываться каждые 30 шагов из небольшого эллипса:

-

-

global.Particle1_Emitter1 = part_emitter_create(global.P_System); -
- global.Particle1_Emitter2 = part_emitter_create(global.P_System); -
-
- // Set up the area that will emit particles -
- part_emitter_region(global.P_System, global.Particle1_Emitter1, 0, room_width, 0, room_height, ps_shape_rectangle, ps_distr_linear); -
- part_emitter_region(global.P_System, global.Particle1_Emitter2, mouse_x-10, mouse_x+10, mouse_y-10, mouse_y+10, ps_shape_ellipse, ps_distr_gaussian); -
-
- // Set the first to stream 10 particles every step -
- part_emitter_stream(global.P_System, global.Particle1_Emitter1, global.Particle1, 10); -
-
- // This can now be forgotten as it will function until told to stop... -
- // Set the alarm[0] event to burst the emitter2 particles... -
- alarm[0] = 30;

-

Итак, здесь мы создаем два излучателя частиц, которые назначаются системе частиц, созданной нами в самом начале. Функции/действия для создания этих излучателей позволяют нам определить область в комнате, над которой они будут излучать частицы, а также указать тип излучаемых частиц, их форму и распределение в заданной области. Функции/действия возвращают числовое значение, которое является идентификатором излучателя, и мы сохраняем его в переменной, чтобы использовать дальнейшие функции излучателей для нацеливания на эти излучатели.

-

Теперь у нас есть код/GML Visual для потоковой передачи частиц (эти частицы будут испускаться каждый шаг игры без нашего участия), но мы также хотим добавить событиеAlarm[0], чтобы частицы вырывались через определенные промежутки времени:

-

part_emitter_region(global.P_System, global.Particle1_Emitter2, mouse_x - 10, mouse_x + 10, mouse_y - 10, mouse_y + 10, ps_shape_ellipse, ps_distr_gaussian); -
- part_emitter_burst(global.P_System, global.Particle1_Emitter2, global.Particle1, 30); -
- alarm[0] = 30;

-

Всплеск частиц - это просто единовременный взрыв частиц из излучателя, а не постоянный поток их на каждом шаге игры.

-

Но что если вы хотите, чтобы несколько объектов испускали частицы? Глобальный эмиттер может одновременно находиться только в одном месте, поэтому вам нужно будет создать локальные эмиттеры в каждом объекте. Эти эмиттеры будут по-прежнему использовать глобальную систему частиц и любые частицы, находящиеся в ней, но они могут быть разных форм и размеров и перемещаться вместе с объектом, что делает их идеальными для ракет, пуль и прочего. Код, который вы будете использовать, точно такой же, как и выше, но без префикса "global" перед именами эмиттеров.

-

С созданием частиц разобрались, но есть еще одна вещь, которая очень важна... Очистка, когда вы закончите с ними.

-

-
-

Уборка

-
-

Как уже упоминалось в начале, после создания система частиц (и ее частицы, эмиттеры и т.д.) сохраняется в памяти для мгновенного использования. Отлично, но что произойдет, если вы перезапустите игру? Или если ваш игрок умрет и начнет комнату заново? Если вы не будете правильно управлять игрой, вы получите утечку памяти. Это когда что-то было создано и использует память, но было "отнесено", то есть GameMaker больше не имеет к нему доступа. Такие вещи будут медленно съедать память и вызывать задержки в игре или даже блокировать компьютер, что приведет к краху игры, и это довольно распространенная проблема у начинающих пользователей систем частиц.

-

Как избежать этого? В GameMaker есть функции GML Code и GML Visual actions для удаления систем частиц, их излучателей и частиц из памяти, когда они не используются, и при небольшом планировании при использовании следующего кода/действий вы можете легко предотвратить эту потенциальную проблему.

-

Прежде всего, вам нужно решить, где вы собираетесь создать систему и как вы будете ее использовать. Вы можете создать глобальную систему в событии начала игры объекта, который находится в вашей первой комнате (например, меню или титульный экран), но это означает, что если вы перезапустите игру с помощью функции game_restart() функция будет создана заново и вызовет утечку памяти. Или вы можете создать локальную систему в экземпляре в любой комнате, но опять же, если вы покинете комнату, система будет недоступна и вызовет утечку памяти. Чтобы избежать этого, вам нужно иметь что-то вроде этого в параметре Мероприятие по окончанию игры или Событие очистки вашего объекта:

-

part_type_destroy(global.Particle1); -
- part_emitter_destroy(global.P_System, global.Particle1_Emitter); -
- part_emitter_destroy(global.P_System, global.Particle2_Emitter); -
- part_system_destroy(global.P_System);

-

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

-

-
-

-

Теперь вы знаете основы о частицах, системах частиц и эмиттерах, так что теперь вы можете добавить их в свою игру! Но прежде чем бросаться добавлять эффекты частиц во все подряд, обратите внимание, что хотя частицы менее требовательны к процессору, чем инстансы, они не являются решением всех проблем, так как при одновременном использовании тысяч частиц они будут вызывать лаг. Лучше всего экспериментировать и использовать их осторожно, чтобы визуально "оживить" игру и придать ей больше привлекательности, не переусердствуя при этом.

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/Additional_Information/Guide_To_Using_Shaders.htm b/Manual/contents/Additional_Information/Guide_To_Using_Shaders.htm index 241fe817b..e69de29bb 100644 --- a/Manual/contents/Additional_Information/Guide_To_Using_Shaders.htm +++ b/Manual/contents/Additional_Information/Guide_To_Using_Shaders.htm @@ -1,409 +0,0 @@ - - - - - - Руководство по использованию шейдеров - - - - - - - - - - -

Руководство по использованию шейдеров

-

Шейдеры часто используются для создания красивых графических эффектов в играх. Они также являются одними из самых продвинутых функций, предлагаемых GameMaker, поэтому перед началом работы с ними необходимо иметь базовое понимание программирования и работы GameMaker.

-

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

-

Каждый шейдер состоит из двух отдельных компонентов: вершинного шейдера и фрагментного шейдера (также называемого пиксельным шейдером). Начнем с вершинного шейдера. Каждый sprite образован прямоугольником, но компьютеры любят рисовать треугольники, поэтому прямоугольники разбиваются на два треугольника (иногда их называют квадратами). В результате у нас остается шесть вершин (углов) на каждый sprite, но две из них одинаковые, поэтому мы должны беспокоиться только о четырех. Теперь представьте, что у нас есть цикл for, который перебирает все вершины и выполняет код вершинного шейдера для каждой из них. Это позволяет нам изменить положение и цвет вершины перед передачей ее в шейдер фрагмента, поскольку шейдер вершины выполняется раньше.

-

Вот как это будет выглядеть:

-

Для фрагментного шейдера можно представить тот же цикл, что и раньше, но на этот раз он просматривает каждый отдельный пиксель в вашем sprite, предоставляя вам информацию, такую как местоположение и цвет этого пикселя. В коде фрагментного шейдера вы выполняете операции и вычисления для определения цвета пикселя, чтобы получить желаемый эффект. Например, если вы хотите, чтобы шейдер сделал ваш sprite черно-белым, то вы рассчитаете, какого оттенка серого должен быть каждый пиксель для создания эффекта.

-

Это будет выглядеть примерно так:

-

Причина, по которой шейдерный код обычно выполняется графическим процессором, заключается в том, что он более эффективен. Современные CPU обычно имеют от двух до восьми ядер. Каждое ядро может выполнять одну задачу за раз, поэтому, используя преимущества нескольких ядер, мы можем выполнять множество задач одновременно. В отличие от них, современные графические процессоры могут выполнять тысячи и даже десятки тысяч задач одновременно. Это полезно для шейдеров, поскольку мы можем одновременно выполнять код шейдера для тысяч пикселей. Ограничением является то, что мы имеем доступ только к начальному состоянию sprite, поэтому мы не знаем о любых модификациях, сделанных в других пикселях, так как мы не можем быть уверены, что код уже выполнялся на них.

-

ПРИМЕЧАНИЕ: GameMaker позволяет пользователям писать шейдеры на GLSL (OpenGL Shader Language), HLSL (High-level Shader Language, используется при работе с DirectX) и GLSL ES (подмножество GLSL, распространенное в мобильных устройствах). Здесь мы используем GLSL ES в качестве языка шейдеров, поскольку именно он обеспечивает наилучшую совместимость с целевыми платформами. Как правило, именно его вы всегда хотите использовать, если только у вас нет очень специфических потребностей и вы не понимаете ограничения других шейдерных языков. Математика и методы должны быть схожими для всех трех языков, за исключением некоторых различий в синтаксисе.

-

Вершинный шейдер выполняется первым, и, как мы объясняли выше, он работает с вершинами. Он используется для вычисления положения, нормалей и координат текстуры. Эти шейдеры не особенно полезны в 2D, поскольку каждый sprite обычно является квадратом, но они могут быть использованы для некоторого перекоса, масштабирования и т.д.. Они становятся гораздо более полезными в 3D для расчетов освещения и деформации сетки. Фрагментные шейдеры гораздо интереснее и именно они будут рассматриваться здесь, поскольку именно фрагментный шейдер получает информацию о наших текстурах и может настраивать конечный цвет каждого пикселя в нашем изображении.

-

-

Переменные шейдера

-

Если вы создавали шейдер в GameMaker, вы могли заметить следующие ключевые слова в стандартном проходном шейдере. Эти ключевые слова помогают шейдеру понять назначение и область применения каждой переменной:

- -

Вы также увидите использование vec в качестве ключевого слова. Оно используется для идентификации векторной переменной в шейдере, и вскоре вы увидите, что векторы очень важны при работе с шейдерами. Именно поэтому они реализованы как базовый тип в GLSL. Если вы не знакомы с ними, то это математический термин, представленный в виде матрицы с одним столбцом. В программировании мы обычно представляем их в виде массива, где количество компонентов соответствует размерности. Двухмерные и трехмерные векторы часто используются для позиций, координат текстур или цветов без альфа-канала, а четырехмерные - для цветов с альфа-каналом. Мы также можем указать, что они содержат булевы, целые числа или значения с плавающей запятой. Синтаксис для объявления вектора следующий:

-

vec2 firstVec;  // Two-dimensional vector of floats
- vec3 secondVec; // Three-dimensional vector of floats
- vec4 thirdVec;  // Four-dimensional vector of floats
-
- bvec3 boolVec;  // Three-dimensional vector of booleans
- ivec4 intVec;   // Four-dimensional vector of integers -

-

Чтобы инициализировать их, мы можем использовать конструктор для создания вектора. Вам нужно предоставить столько же значений, сколько длина вектора, но вы можете смешивать и сопоставлять скаляры и меньшие векторы, чтобы достичь целевой длины. Вот несколько примеров:

-

// Simple 2D vector with 2 scalar values
- vec2 firstVec  = vec2(2.0, 1.0);
- // A 4D vector using 2 scalars and a vec2 create the 4 values
- vec4 secondVec = vec4(1.0, firstVec, 0.0);
- // A 3D vector using 1 component of a vec4 plus a vec2 to create the 3 values
- vec3 thirdVec  = vec3(secondVec.x, firstVec);

-

Мы также можем присвоить им другой вектор той же длины (или изменить вектор до нужной длины, но об этом мы расскажем позже):

-

vec3 firstVec;
- vec3 secondVec = firstVec;
- vec4 thirdVec  = secondVec.xyz;
- vec2 fourthVec = thirdVec.zx;

-

При обращении к компонентам вектора в GLSL у нас есть несколько вариантов. Самый простой - рассматривать вектор как массив и обращаться к компонентам с помощью квадратных скобок, например, так:

-

vec4 myVec;
- myVec[0] = 0.0;
- myVec[1] = 1.0;
- myVec[2] = 2.0;
- myVec[3] = 1.0;

-

Однако существует и другой способ доступа к компонентам со следующим синтаксисом:

-

vec4 myVec;
- myVec.x = 1.0;
- myVec.y = 2.0;

-

Для доступа к ним используются имена компонентов внутри вектора. Вы можете использовать x, y, z или w, чтобы получить первый, второй, третий или четвертый компонент соответственно. Мы называем этот метод swizzling , потому что следующий синтаксис также допустим:

-

vec4 firstVec;
- vec3 secondVec = firstVec.xyz;
- vec2 thirdVec  = secondVec.zy;
- vec4 fourthVec = thirdVec.yxxy;

-

Как видите, мы можем использовать любую комбинацию до четырех букв для создания вектора такой длины. Мы не можем попытаться получить доступ к компоненту, который будет выходить за рамки (например, попытаться получить доступ к w в secondVec или thirdVec, поскольку у них нет четвертого компонента). Кроме того, мы можем повторять буквы и использовать их в любом порядке, при условии, что векторная переменная, которой она присваивается, имеет тот же размер, что и количество используемых букв.

-

По очевидным причинам, при использовании swizzle для установки значений компонентов, вы не можете использовать один и тот же компонент дважды. Например, приведенный ниже вариант не подходит, так как вы пытаетесь установить один и тот же компонент на два разных значения:

-

myVec.xx = vec2(2.0, 3.0);

-

И последнее, мы использовали xyzw в качестве маски, что обычно происходит при работе с позициями. Есть еще два набора масок, которые вы можете использовать: rgba (используется для цветов) или stpq (используется для координат текстуры). Внутренне между этими масками нет никакой разницы, и мы используем их только для того, чтобы сделать код более понятным, что представляет собой вектор в данном случае. Кроме того, мы не можем комбинировать маски swizzle в одной операции, так что это недействительно:

-

myVec = otherVec.ybp;

-

Это было много определений и информации, но знание этих вещей необходимо для понимания самих шейдеров.

-

-

Создание шейдера

-

Когда вы создаете шейдер в GameMaker, он открывает для вас два файла: вершинный шейдер (.vsh) и фрагментный шейдер (.fsh). Это самый простой шейдер, который вы можете создать. Он принимает файл sprite, считывает текстуру и окрашивает каждый пиксель в этот цвет. Если при рисовании вы укажете цвета вершин, эти цвета будут смешиваться с текстурой.

-

Давайте пройдемся по коду только что созданного шейдерного актива и проанализируем его, начиная с вершинного шейдера.

-

// Passthrough Vertex Shader
- attribute vec3 in_Position;                  // (x,y,z)
- //attribute vec3 in_Normal;                  // (x,y,z)     unused in this shader.
- attribute vec4 in_Colour;                    // (r,g,b,a)
- attribute vec2 in_TextureCoord;              // (u,v)
-
- varying vec2 v_vTexcoord;
- varying vec4 v_vColour;
-
- void main()
- {
-     vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0);
-     gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos;
-     
-     v_vColour = in_Colour;
-     v_vTexcoord = in_TextureCoord;
- } -

-

За пределами главной функции мы видим некоторые объявления переменных и их классификаторы. Атрибуты даны нам GameMaker. Переменные создаются пользователем для передачи информации в шейдер фрагмента. Внутри основной функции мы имеем вычисления для определения экранной позиции вершины:

- -

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

-

Давайте теперь быстро посмотрим на шейдер фрагмента:

-

// Passthrough Fragment Shader
- varying vec2 v_vTexcoord;
- varying vec4 v_vColour;
-
- void main()
- {
-     gl_FragColor = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord );
- } -

-

Как уже объяснялось, идея фрагментного шейдера заключается в том, чтобы вернуть цвет текущего пикселя. Это делается путем присвоения переменной gl_FragColor конечного значения цвета. Функция texture2D принимает текстуру и vec2 с UV-координатами, которые вы хотите проверить в этой текстуре, и возвращает vec4 с цветом. В проходном шейдере все, что мы делаем, это берем цвет текстуры в координатах этого пикселя и умножаем его на цвет вершины, связанной с этим пикселем.

-

Теперь, когда у нас есть наш первый шейдер, все, что нам нужно сделать для его тестирования, это создать объект и присвоить ему sprite, затем в событии Draw Event объекта установить шейдер следующим образом:

-

// Draw Event
- shader_set(shdrColorOverlay);
- draw_self();
- shader_reset();

-

Каждый ничейный вызов, который мы делаем между shader_set() и shader_reset() будет применяться шейдер. Здесь мы рисуем объект sprite с помощью нашего шейдера passthrough:

-

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

-

-

Шейдер наложения цвета

-
-

Теперь мы можем отредактировать базовый шейдер, чтобы сделать кое-что другое. Мы не будем касаться вершинного шейдера, а отредактируем только шейдер фрагмента, и для начала выполним очень простую операцию, которая заключается в том, чтобы заставить шейдер рисовать sprite красным цветом. Мы сделаем это, просто изменив gl_FragColor на красный цвет, вот так:

-

// Color Overlay Fragment Shader
- void main()
- {
-     gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
- }

-

Это даст нам следующий результат:

-

Не совсем то, что мы ожидали! Нам нужно помнить, что каждый sprite в конечном итоге является прямоугольником, поэтому, если не учитывать прозрачность - а мы этого не делали, - мы получим именно такой результат.

-

ПРИМЕЧАНИЕ: На изображении выше прямоугольник меняет размер, потому что базовый sprite имеет "пустое" пространство вокруг него, которое было автоматически обрезано, когда он был помещен на страницу текстуры GameMaker, поэтому в каждом кадре анимации треугольники, составляющие его, имеют разные размеры, чтобы соответствовать обрезанному размеру кадра. Если отключить эту опцию, то на экране будет просто неподвижный красный квадрат.

-

Выше мы упоминали функцию texture2D, и мы будем использовать ее для захвата цвета в пикселе, над которым мы работаем, и получения из него прозрачности. Возвращаемое значение функции texture2D - это vec4, где компонентами являются красный, зеленый, синий и альфа-канал, в таком порядке. Мы можем получить доступ к альфа-каналу, поставив точку, а затем a или w после имени переменной. Это соответствует RGBA и XYZW, соответственно.

-

Вот обновленный код:

-

// Color Overlay Fragment Shader
- varying vec2 v_vTexcoord;
-
- void main()
- {
-     vec4 texColor = texture2D(gm_BaseTexture, v_vTexcoord);
-     gl_FragColor = vec4(1.0, 0.0, 0.0, texColor.a);
- } -

-

Теперь мы назначаем новый vec4 на gl_FragColor, где красный канал максимален, зеленый и синий каналы равны нулю, а альфа-канал такой же, как у исходной текстуры. Результат выглядит следующим образом:

-

Это то, чего мы добивались! Мы заменили цвет каждого пикселя на красный, но сохранили альфа-канал нетронутым.

-

Менять шейдер каждый раз, когда мы хотим использовать другой цвет, - не самая лучшая идея, особенно если учесть, что для каждого цвета нам потребуется отдельный шейдер. Вместо этого мы передадим шейдеру информацию о цвете с помощью формы. Для этого нам сначала нужно получить указатель на форму. Мы сделаем это в событии Create нашего объекта sprite, добавив:

-

// Create Event
- _uniColor = shader_get_uniform(shdrColorOverlay, "u_colour");
- _color    = [1.0, 1.0, 0.0, 1.0];

-

Все, что нам нужно сделать, это вызвать shader_get_uniform() чтобы получить указатель на форму. Параметры, которые нам нужно передать, это имя актива шейдера (без кавычек, потому что мы хотим передать ID, который GameMaker генерирует для нас) и имя переменной униформы внутри шейдера, на этот раз в виде строки. Это имя должно точно совпадать с именем в коде шейдера, чтобы он работал. Мы также добавили переменную color, чтобы мы могли изменять ее во время выполнения и чтобы она запомнила наши изменения.

-

Теперь код в нашем событии draw немного изменится, чтобы передать переменную uniform.

-

// Draw Event
- shader_set(shdrColorOverlay);
- shader_set_uniform_f_array(_uniColor, _color);
- draw_self();
- shader_reset();

-

Это тот же код, что и раньше, но прежде чем мы нарисуем что-либо, нам нужно передать шейдеру все однородные значения. В данном случае мы передаем цвет как массив плавающих значений. Что касается шейдера, мы изменим его, чтобы он включал униформу и использовал ее, так что он становится:

-

// Color Overlay Fragment Shader
- varying vec2 v_vTexcoord;
- uniform vec4 u_color;
- void main()
- {
-     vec4 texColor = texture2D(gm_BaseTexture, v_vTexcoord);
-     gl_FragColor = vec4(u_color.rgb, texColor.a);
- }

-

Мы объявляем переменную с тем же именем, что и в шейдере create (u_color), и передаем ее в качестве первых трех компонентов вектора gl_FragColor, используя преимущества swizzling. Если мы скомпилируем еще раз, то увидим следующее:

-

Теперь шейдер стал гораздо более полезным и многократно используемым. Вы можете добавить больше функциональности, если вам нужно, чтобы он устанавливал цвет (используя переменную _color) во время выполнения.

-

-
-

Черно-белый шейдер

-
-

Создание черно-белого шейдера - отличный способ узнать больше о том, как работают шейдеры, и многие новички начинают с попытки сделать это, поскольку концептуально это довольно просто: получить каждый пиксель и присвоить ему оттенок серого. Но так ли это просто? Не совсем...

-

При использовании цвета RGB, если все три компонента имеют одинаковое значение, то мы получаем серый тон. Наивный подход к созданию шейдера для использования этой идеи заключался бы в том, чтобы сложить все три цветовых канала (красный, зеленый и синий), а затем разделить на три. После этого вы присвоили бы это значение всем трем каналам, создав таким образом серый тон. Вот как выглядит шейдер фрагмента:

-

// Black and white fragment shader
- varying vec2 v_vTexcoord;
- varying vec4 v_vColour;
-
- void main()
- {
-     vec4 texColor = texture2D(gm_BaseTexture, v_vTexcoord);
-     float gray = (texColor.r + texColor.g + texColor.b) / 3.0;
-     gl_FragColor = v_vColour * vec4(gray, gray, gray, texColor.a);
- } -

-

Вы могли заметить, что в коде gl_FragColor мы умножаем vec4 на что-то под названием v_vColour. Это переменная, передаваемая вершинным шейдером, которая сообщает нам цвет вершины, связанной с этим пикселем. Всегда полезно умножать конечный вычисленный цвет на цвет вершины. В большинстве случаев это ничего не даст, но если вы изменили цвет вершины в GML, это отразится (с помощью таких функций, как draw_sprite_ext() или draw_sprite_general() для изменения image_blend).

-

Что касается события draw, то оно довольно простое, поскольку у нас нет формы для передачи:

-

// Draw Event
- shader_set(shdrBlackAndWhite);
- draw_self();
- shader_reset();

-

Давайте скомпилируем и посмотрим, что у нас получилось.

-

Это уже выглядит отлично, верно? И да, и нет... есть решение, которое является более "правильным", поскольку вместо сложения компонентов и деления на три мы умножаем каждый компонент на стандартные значения NTSC для черного и белого. Вот измененный код фрагментного шейдера:

-

// Black and white fragment shader
- varying vec2 v_vTexcoord;
-
- void main()
- {
-     vec4 texColor = texture2D(gm_BaseTexture, v_vTexcoord);
-     float gray = dot(texColor.rgb, vec3(0.299, 0.587, 0.114));
-     gl_FragColor = vec4(gray, gray, gray, texColor.a);
- } -

-

Мы используем точечное произведение как сокращение для умножения каждого компонента texColor с правильными весами, а затем складываем их вместе. Если вы не знакомы с точечным произведением, то, по сути, происходит следующее:

-

float gray = (texColor.r * 0.299) + (texColor.g * 0.587) + (texColor.b * 0.114);

-

В конечном итоге, это выглядит очень похоже, но технически более правильно.

-

Shader Vertices

-

-
-

Радужный шейдер

-
-

Наш последний пример шейдера - это забавный пример, который можно использовать для придания жизни тексту, кнопкам и другим вещам. Мы начнем с простого и будем постепенно добавлять функциональность, поскольку этот шейдер очень настраиваемый. В этом разделе мы рассмотрим довольно много вопросов, поэтому если вы чувствуете себя немного потерянным или запутавшимся, пожалуйста, вернитесь и перечитайте некоторые разделы выше.

-

Первое, что мы хотим сделать, - это окрасить пиксели в любой оттенок в зависимости от горизонтального положения пикселя. Для этого нужно установить позицию x в качестве оттенка, а затем преобразовать формат HSV (оттенок, насыщенность, яркость) в формат RGB (красный, зеленый и синий). Для этого нам нужно написать вспомогательную функцию в шейдере фрагмента, которая принимает значения HSV и возвращает вектор RGB. Мы будем использовать одну функцию, которая делает это без необходимости использования каких-либо операторов if, так как использование условий в коде шейдера делает шейдеры очень медленными, и их следует избегать.

-

Вот как выглядит шейдер на данном этапе:

-

// Fragment Shader
- varying vec2 v_vTexcoord;
- varying vec4 v_vColour;
-
- vec3 hsv2rgb(vec3 c) 
- {
-     vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
-     vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
-     return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
- }
-
- void main()
- {
-     vec3 col = vec3(v_vTexcoord.x, 1.0, 1.0);
-     float alpha = texture2D(gm_BaseTexture, v_vTexcoord).a;
-     gl_FragColor = v_vColour * vec4(hsv2rgb(col), alpha);
- } -

-

Здесь происходит немного больше событий, чем в предыдущих примерах, но большинство из них должно быть достаточно очевидным для вас. Во-первых, есть наша функция hsv2rgb, которая принимает vec3 с нашим цветом HSV и возвращает другой vec3 с нашим преобразованием в RGB. В основной функции мы начинаем с создания цвета HSV, где оттенок - это наша позиция x, а насыщенность и яркость мы пока оставим равными 1.0. Затем мы получим альфу из текстуры, чтобы она окрасила только наш персонаж sprite, а не весь прямоугольник sprite (как мы делали в примере наложения цветов выше). Наконец, мы установим цвет фрагмента как цвет HSV, преобразованный в RGB с альфой, умноженной на цвет вершины (хорошая практика - делать это всегда).

-

Что касается нашего кода для рисования, то на данный момент он тривиален:

-

// Draw Event
- shader_set(shdrRainbow);
- draw_self();
- shader_reset();

-

Давайте проверим, что мы получили:

-

Мы близки к тому, что хотим, но есть проблема: мы не видим все цвета сразу в каждом кадре анимации, и цвета, кажется, меняются случайным образом. Причина в том, что мы предположили, что v_vTexcoord дал нам координаты sprite, начинающиеся в левом верхнем углу (0,0) и заканчивающиеся в правом нижнем углу (1,1), что является стандартным в шейдерах. Однако для оптимизации GameMaker запихивает столько текстур вместе, сколько может поместиться в так называемую текстурную страницу, и поэтому наша текстура выглядит именно так:

-

Как объяснялось выше, v_vTexcoord дает нам абсолютные координаты sprite на всей странице текстуры, но нам нужно значение от 0,0 до 1,0, которое охватывает только наш текущий sprite. Этот процесс называется нормализацией (получение значения и перевод его в диапазон от 0 до 1). Чтобы нормализовать наши горизонтальные значения, нам нужно знать значения x0 и x1 на рисунке выше. К счастью, в GameMaker есть функция, которая дает нам расположение каждого угла в нашем sprite на странице текстуры. Сначала нам нужно перейти в Create Event и создать форму для передачи этих данных шейдеру:

-

// Create Event
- _uniUV = shader_get_uniform(shdrRainbow, "u_uv");

-

И мы изменяем событие draw, чтобы получить значения и затем передать их шейдеру:

-

// Draw Event
- shader_set(shdrRainbow);
- var uv = sprite_get_uvs(sprite_index, image_index);
- shader_set_uniform_f(_uniUV, uv[0], uv[2]);
- draw_self();
- shader_reset();

-

Функция sprite_get_uvs() принимает sprite и индекс, и возвращает массив с массой информации, такой как координаты каждого угла, сколько пикселей было обрезано для оптимизации и т.д.. Нас интересуют два из этих значений: левая и правая координаты sprite, которые хранятся в uv[0] и uv[2] соответственно. В шейдере фрагмента мы будем использовать эти значения для вычисления нормализованного горизонтального положения следующим образом:

-

// Fragment Shader
- varying vec2 v_vTexcoord;
- varying vec4 v_vColour;
-
- uniform vec2 u_uv;
-
- vec3 hsv2rgb(vec3 c) 
- {
-     vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
-     vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
-     return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
- }
-
- void main()
- {
-     float pos = (v_vTexcoord.x - u_uv[0]) / (u_uv[1] - u_uv[0]);
-     vec3 col = vec3(pos, 1.0, 1.0);
-     float alpha = texture2D(gm_BaseTexture, v_vTexcoord).a;
-     gl_FragColor = v_vColour * vec4(hsv2rgb(col), alpha);
- } -

-

Здесь мы добавляем переменную uniform в верхней части файла с тем же именем, которое мы использовали в событии Create Event. Далее мы вычисляем нормализованную горизонтальную позицию, переводя нашу текущую координату x в начало координат ( v_vTexcoord.x - u_uv[0]), а затем делим ее на ширину sprite, чтобы получить диапазон от 0 до 1 (u_uv[1] - u_uv[0]).

-

В результате:

-

Вот так! Это именно то, что мы хотели. Мы можем видеть каждый цвет спектра внутри нашего sprite.

-

Вы можете быть довольны этим, но мы можем еще немного поразвлечься с этим шейдером. Что если мы добавим смещение цветов, основанное на времени, чтобы создать движение? Для этого нам понадобятся две дополнительные переменные для скорости и времени. Нам также понадобятся еще две формы, по одной для каждой из новых переменных, так что событие Create Event станет:

-

// Create Event
- _uniUV    = shader_get_uniform(shdrRainbow, "u_uv");
- _uniTime  = shader_get_uniform(shdrRainbow, "u_time");
- _uniSpeed = shader_get_uniform(shdrRainbow, "u_speed");
- _time  = 0;
- _speed = 1.0;

-

Нам также необходимо увеличивать время на каждом кадре, поэтому в событии Step Event мы добавляем:

-

// Step Event
- _time += 1 / room_speed;

-

Давайте теперь перейдем к событию draw, чтобы отправить эти формы в шейдер:

-

// Draw Event
- shader_set(shdrRainbow);
- var uv = sprite_get_uvs(sprite_index, image_index);
- shader_set_uniform_f(_uniUV, uv[0], uv[2]);
- shader_set_uniform_f(_uniSpeed, _speed);
- shader_set_uniform_f(_uniTime, _time);
- draw_self();
- shader_reset();

-

Наконец, мы вернемся к нашему шейдеру, чтобы фактически использовать эти переменные. Мы умножим скорость на время и добавим это к положению, как показано ниже:

-

// Fragment Shader
- varying vec2 v_vTexcoord;
- varying vec4 v_vColour;
-
- uniform vec2 u_uv;
- uniform float u_speed;
- uniform float u_time;
-
- vec3 hsv2rgb(vec3 c) 
- {
-     vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
-     vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
-     return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
- }
-
- void main()
- {
-     float pos = (v_vTexcoord.x - u_uv[0]) / (u_uv[1] - u_uv[0]);
-     vec3 col = vec3((u_time * u_speed) + pos, 1.0, 1.0);
-     float alpha = texture2D(gm_BaseTexture, v_vTexcoord).a;
-     gl_FragColor = v_vColour * vec4(hsv2rgb(col), alpha);
- } -

-

Если вы все сделали правильно, вы должны увидеть что-то вроде этого:

-

Чтобы завершить этот шейдер, мы добавим еще несколько форм для его дальнейшей настройки. Первые две предназначены для управления насыщенностью и яркостью. Следующую мы назовем "section", и ее функция - позволить пользователю передать число от нуля до единицы, чтобы определить, какой процент всего спектра мы видим за один раз. Наконец, мы добавим переменную "mix", которая будет определять, насколько мы хотим смешать цвет нашего шейдера с цветом оригинальной текстуры (1.0 - вся радуга, 0.0 - вся текстура). Как обычно, начнем с добавления переменных в событие Create Event:

-

// Create Event
- _uniUV         = shader_get_uniform(shdrRainbow, "u_uv");
- _uniTime       = shader_get_uniform(shdrRainbow, "u_time");
- _uniSpeed      = shader_get_uniform(shdrRainbow, "u_speed");
- _uniSection    = shader_get_uniform(shdrRainbow, "u_section");
- _uniSaturation = shader_get_uniform(shdrRainbow, "u_saturation"); 
- _uniBrightness = shader_get_uniform(shdrRainbow, "u_brightness");
- _uniMix        = shader_get_uniform(shdrRainbow, "u_mix");
-
- _time  = 0;
- _speed = 1.0;
- _section = 0.5;
- _saturation = 0.7;
- _brightness = 0.8;
- _mix = 0.5; -

-

В ходе жеребьевки мы меняем униформу таким образом:

-

// Draw Event
- shader_set(shdrRainbow);
- var uv = sprite_get_uvs(sprite_index, image_index);
- shader_set_uniform_f(_uniUV, uv[0], uv[2]);
- shader_set_uniform_f(_uniSpeed, _speed);
- shader_set_uniform_f(_uniTime, _time);
- shader_set_uniform_f(_uniSaturation, _saturation);
- shader_set_uniform_f(_uniBrightness, _brightness);
- shader_set_uniform_f(_uniSection, _section);
- shader_set_uniform_f(_uniMix, _mix);
- draw_self();
- shader_reset();

-

Что касается шейдера, нам нужно передать насыщенность и яркость в цвет, что повлияет на цвет, генерируемый нашей вспомогательной функцией. Сечение нужно умножить на нашу позицию, чтобы уменьшить диапазон. Мы также захватим весь цвет текстуры, чтобы вычислить наш окончательный цвет путем смешивания цвета текстуры с RGB-преобразованием нашего цвета. Последний параметр функции mix определяет, сколько второго цвета мы хотим добавить. Это наш окончательный код шейдера:

-

// Fragment Shader
- varying vec2 v_vTexcoord;
- varying vec4 v_vColour;
-
- uniform vec2 u_uv;
- uniform float u_speed;
- uniform float u_time;
- uniform float u_saturation;
- uniform float u_brightness;
- uniform float u_section;
- uniform float u_mix;
-
- vec3 hsv2rgb(vec3 c) 
- {
-     vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
-     vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
-     return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
- }
-
- void main()
- {
-     float pos = (v_vTexcoord.x - u_uv[0]) / (u_uv[1] - u_uv[0]);
-     vec4 texColor = texture2D(gm_BaseTexture, v_vTexcoord);
-     
-     vec3 col = vec3(u_section * ((u_time * u_speed) + pos), u_saturation, u_brightness);
-     vec4 finalCol = mix(texColor, vec4(hsv2rgb(col), texColor.a), u_mix);
-     
-     gl_FragColor = v_vColour * finalCol;
- } -

-

И наш конечный результат таков!

-

Shader Fragments

-

-
-

-

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

-

Мы хотели бы поблагодарить Алехандро Хитти и компанию Amazon за разрешение воспроизвести это руководство. Оригинальную версию можно найти в блоге разработчиков Amazon.

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Additional_Information/Obsolete_Functions.htm b/Manual/contents/Additional_Information/Obsolete_Functions.htm index 29f1d657f..e69de29bb 100644 --- a/Manual/contents/Additional_Information/Obsolete_Functions.htm +++ b/Manual/contents/Additional_Information/Obsolete_Functions.htm @@ -1,915 +0,0 @@ - - - - - - Устаревшие функции - - - - - - - - - - -

Устаревшие функции

-

Здесь вы найдете список всех функций, которые стали устаревшими при сравнении GameMaker с устаревшими версиями продукта. Перечисленные здесь функции будут преобразованы в скрипты совместимости при импорте проекта *.yyz, созданного с использованием устаревшей версии, и вы сможете продолжать работу над проектом, как и прежде. Однако мы рекомендуем вам пересмотреть все скрипты совместимости, созданные в проекте, и убедиться, что будущие проекты используют новые функции/методы работы, а не зависят от этих скриптов.

-

Фоны

-
-

В старых версиях GameMaker у вас был отдельный фоновый ресурс, куда вы могли добавлять изображения для использования в качестве фона. В GameMaker все изображения считаются sprites, и их использование зависит от того, к какому слою в комнате они отнесены. Это означает, что больше не существует ресурса "фон", а также то, что следующие функции устарели:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
рисовать_фонdraw_background_extрисовать_фон
- растянутый
рисовать_фон
- растянутый_экстент
рисовать_фон
- часть
рисовать_фон
- часть_текста
рисовать_фон
- общий
рисовать_фон
- плиточный
рисовать_фон
- плиточный_текст
имя_фонафон_существуетbackground_get_
- имя
рисовать_фонdraw_background_extрисовать_фон
- растянутый
рисовать_фон
- растянутый_экстент
background_get_
- ширина
background_get_
- высота
background_get_
- прозрачный
background_get_
- гладкий
background_get_
- предварительная загрузка
background_get_uvsbackground_get_
- текстура
background_set_alpha_
- от_фона
фон_создать_
- с_поверхности
фон_создать_
- цвет
фон_создать_
- цвет
фон_создать_
- градиент
background_addbackground_replacebackground_add_
- альфа
фон_замены_
- альфа
фон_удалитьфон_дубликатbackground_assignфон_сохранения
фоновая_выборкафон_
- prefetch_multi
фоновая_промывкафоновая_промывка_
- мульти
room_set_backgroundустановка_комнаты
- цвет_фона
-

В Legacy GameMaker также было несколько различных переменных фона, которые обращались к глобальному массиву фона. В GameMaker они больше не требуются:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
фон_
- index[0..7]
фон_
- видимый[0..7]
фон_
- alpha[0..7]
фон_
- blend[0..7]
background_x[0..7]background_y[0..7]фон_
- цвет
фон_
- showcolour
фон_
- передний план[0..7]
фон_
- hspeed[0..7]
фон_
- vspeed[0..7]
фон_
- htiled[0..7]
фон_
- vtiled[0..7]
фон_
- width[0..7]
фон_
- высота[0..7]
фон_
- xscale[0..7]
фон_
- yscale[0..7]
-

Подробнее о фоновых слоях вы можете узнать из раздела о редакторе помещений, а для получения дополнительной информации о функциях, управляющих фоновыми слоями с помощью кода, смотрите раздел Фоновые слои.

-

-
-

Плитка

-
-

Как и в случае с фоном (описанном выше), ресурс плитки из устаревшего GameMaker больше не существует, вместо него в GameMaker есть наборы плиток. В устаревшей версии GameMaker плитки использовали ресурс фона и размещались на разной глубине в редакторе комнат или с помощью кода, однако используемый метод был не слишком гибким и не слишком эффективным. Чтобы решить эти проблемы, в GameMaker наборы плиток теперь создаются из ресурса sprite и могут иметь различные свойства (например, анимацию или автоматическую укладку). Затем они помещаются на слой tilemap в редакторе комнат или с помощью кода. В связи с этими изменениями следующие функции теперь устарели:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
tile_get_xtile_get_ytile_get_lefttile_get_top
tile_get_widthвысота_плиткиtile_get_depthtile_get_visible
tile_get_xscaletile_get_yscaletile_get_alphatile_get_background
tile_set_visibletile_set_backgroundtile_set_regiontile_set_position
tile_set_depthtile_set_scaletile_set_blendtile_set_alpha
tile_get_counttile_get_idtile_get_idstile_get_ids_at_depth
tile_addплитка_существуетплитка_удалитьскрыть_слой_плитки
tile_layer_showплиточный_слой_удалитьсдвиг_слоя_плиткиtile_layer_find
tile_layer_delete_atглубина_слоя_плиткикомната_плитка_добавитьroom_tile_add_ext
комната_плитка_чистая
-

Подробнее о наборах плиток вы можете узнать из раздела руководства " Редактор наборов плиток ", а о том, как использовать их в редакторе помещений, - из раздела " Слои плиток". Для получения дополнительной информации о функциях, управляющих фоновыми слоями с помощью кода, смотрите раздел Слои плиток. Стоит также отметить, что на сайте GameMaker Language есть некоторые специфические функции, связанные с использованием устаревших плиток в импортированных проектах, информацию о которых вы можете найти здесь.

-

-
-

Объекты

-
-

Работа с объектами в GameMaker несколько изменилась в связи с введением слоев в редакторе комнат. Переменная "depth" по-прежнему существует, но теперь она используется только для совместимости, и вы больше не можете получить или установить глубину для объектов, только для экземпляров. Это делает следующие функции устаревшими:

- - - - - - - - - -
object_get_depth
глубина_объекта
-

Подробнее о ресурсах объектов вы можете узнать из раздела руководства, посвященного редактору объектов, а о функциях, управляющих объектами с помощью кода, - из раздела Объекты.

-

-
-

Звуки

-
-

В устаревшей версии GameMaker было два разных звуковых API: один использовал устаревшие функции sound_ (которые были действительны только для целевой платформы HTML5), а другой - функции audio_. В GameMaker звуковой API был улучшен и расширен, что сделало устаревшие функции, перечисленные ниже, устаревшими:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
имя_звуказвук_существуетsound_get_namesound_get_kind
sound_get_preloadзвук_существуетвосстановление звукаsound_delete
звук_воспроизведениязвуковая петлязвуковая_остановказвук_остановить_все
звук_воспроизведениягромкость звуказвук_затуханиязвук_глобальный_громкость
audio_music_gainaudio_music_is_playingаудио_новая_системааудио_старая_система
audio_pause_musicaudio_play_musicaudio_resume_musicaudio_stop_music
аудиосистема
-

Подробнее о звуковых ресурсах вы можете узнать из раздела руководства по звуковому редактору, а о функциях, управляющих звуком с помощью кода, - из раздела " Аудио".

-

-
-

D3D

-
-

При использовании 3D-моделей или примитивов в устаревшем GameMaker приходилось использовать функции d3d_. Они использовали устаревший API для рисования и во многих случаях не были связаны с Direct 3D API или даже с использованием самого 3D. С появлением вершинных буферов, матриц и камер в GameMaker, следующие функции стали устаревшими:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
d3d_startd3d_endd3d_set_perspectived3d_set_hidden
d3d_set_depthd3d_set_lightingd3d_set_shadingd3d_set_fog
d3d_set_cullingd3d_set_zwriteenabled3d_set_projectiond3d_set_projection_ext
d3d_set_projection_
- орто
d3d_set_projection_
- перспектива
d3d_transform_set_
- идентичность
d3d_transform_
- установка_трансляции
d3d_transform_set_
- масштабирование
d3d_transform_
- установить_вращение_x
d3d_transform_set_
- вращение_y
d3d_transform_
- установить_вращение_z
d3d_transform_set_
- ось вращения
d3d_transform_
- добавить_перевод
d3d_transform_add_
- масштабирование
d3d_transform_
- добавление_вращения_x
d3d_transform_add_
- вращение_y
d3d_transform_
- добавление_вращения_z
d3d_transform_add_
- ось вращения
d3d_transform_
- очистка_стека
d3d_transform_stack_
- пустой
d3d_transform_
- стек_толчок
d3d_transform_stack_
- pop
d3d_transform_
- вершина стека
d3d_transform_stack_
- отбрасывать
d3d_transform_vertexd3d_light_define_
- окружение
d3d_light_define_
- направление
d3d_light_define_pointd3d_light_enabled3d_primitive_begind3d_primitive_
- начало_текстуры
d3d_primitive_endd3d_vertexd3d_vertex_colord3d_vertex_colour
d3d_vertex_textured3d_vertex_texture_
- цвет
d3d_vertex_texture_
- цвет
d3d_vertex_normal
d3d_vertex_normal_
- цвет
d3d_vertex_normal_
- цвет
d3d_vertex_normal_
- текстура
d3d_vertex_normal_
- цвет_текстуры
d3d_vertex_normal_
- цвет_текстуры
d3d_draw_blockd3d_draw_cylinderd3d_draw_cone
d3d_draw_ellipsoidd3d_draw_walld3d_draw_floord3d_model_create
d3d_model_destroyd3d_model_cleard3d_model_loadd3d_model_save
d3d_model_drawd3d_model_primitive_
- начать
d3d_model_
- примитив_конец
d3d_model_vertex
d3d_model_vertex_
- цвет
d3d_model_vertex_
- цвет
d3d_model_
- вершинный_текстур
d3d_model_vertex_
- цвет_текстуры
d3d_model_vertex_
- цвет_текстуры
d3d_model_vertex_
- нормальный
d3d_model_
- цвет_нормальной_вершины
d3d_model_vertex_
- нормальный_цвет
d3d_model_vertex_
- нормальный_текстур
d3d_model_vertex_
- нормальный_цвет_текстуры
d3d_model_vertex_
- нормальный_цвет_текстуры
d3d_model_block
d3d_model_cylinderd3d_model_coned3d_model_ellipsoidd3d_model_wall
d3d_model_floor
-

Вы можете узнать больше о буферах вершин здесь, больше о матрицах здесь, больше о камерах здесь, и больше о функциях GPU здесь.

-

-
-

Переменные вида и функции окна

-
-

С появлением в GameMaker функций камеры отпала необходимость в использовании ряда переменных вида, в частности, тех, которые относятся к виду на комнату, а не к view_port (который по-прежнему используется). Есть также несколько функций для управления отображением объектов, которые были доступны в старых версиях GameMaker Studio и которые также больше не нужны. Эти переменные и функции перечислены ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - -
view_objectугол обзораview_xviewview_yview
просмотр_hviewview_wviewview_hborderview_vborder
view_hspeedview_vspeeddisplay_set_windows_
- метод вершинного_буфера
display_get_windows_
- метод вершинного_буфера
display_set_windows_
- чередование_синхронизации
display_get_windows_
- чередование_синхронизации
вид_из_комнаты
-

Подробнее о камерах вы можете узнать из раздела руководства " Камеры и дисплей".

-

-
-

Поддержка третьих сторон

-
-

GameMaker переносит многие встроенные функции из предыдущих версий в расширения, что означает, что следующие функции поддержки сторонних разработчиков считаются устаревшими:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ads_enableads_disableads_moveads_get_display_
- ширина
ads_get_display_
- высота
реклама_интерстициальная_
- доступно
реклама_интерстициальная_
- показ
ads_setup
реклама_привлечения_
- доступно
реклама_привлечения_
- запуск
реклама_привлечения_
- активный
рекламное_событие
ads_event_preloadads_set_reward_
- обратный звонок
playhaven_add_
- значок_уведомления
playhaven_hide_
- значок_оповещения
playhaven_position_
- значок_оповещения
playhaven_update_
- значок_уведомления
pocketchange_display_
- вознаграждение
pocketchange_display_
- магазин
аналитика_событиеanalytics_event_extfacebook_initfacebook_login
facebook_request_
- публиковать_разрешения
facebook_request_
- разрешения на чтение
facebook_check_
- разрешение
facebook_status
facebook_accesstokenfacebook_user_idfacebook_graph_
- запрос
facebook_dialog
facebook_send_invite facebook_post_
- сообщение
facebook_logout facebook_launch_
- стена предложения
iap_event_queue iap_files_purchased iap_is_downloaded iap_product_files
iap_product_status iap_store_status iap_dataiap_activate
iap_statusiap_enumerate_productsiap_restore_alliap_acquire
iap_consumeiap_product_detailsiap_purchase_details
эффект погруженияпогружение_остановки
достижение_*win8_*uwp_appbar_*
-

Вы можете получить наши официальные расширения для рекламы и другие API на странице Marketplace.

-

-
-

Визуальные действияGML

-
-

Как в устаревшей версии GameMaker, так и в GameMaker имеется визуальный скриптовый интерфейс GML Visual для создания игр, однако способ работы с ним в GameMaker значительно отличается от прежних методов. Ранее все действия GML Visual имели свою собственную функцию, которая работала "за кулисами" для получения желаемых результатов, однако это было не очень прозрачно и добавляло дополнительные накладные расходы на вызов функций, что приводило к снижению производительности. В GameMaker это было изменено, и теперь все действия компилируются в чистый код (и при необходимости могут быть показаны в таком виде), что означает, что следующие функции действий устарели:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
путь_действия_старыйaction_set_spriteaction_draw_fontaction_draw_font_old
action_fill_coloraction_fill_colourцвет_линии_действияцвет_линии_действия
action_highscoreaction_set_relativeдействие_перемещениедействие_настроить_движение
action_set_hspeedaction_set_vspeedaction_set_gravityдействие_настройки_трения
точка_движения_действиядействие_перемещения_кдействие_движения_стартдействие_движения_случайно
действие_снапдействие_обёрткиaction_reverse_xdiraction_reverse_ydir
действие_переместить_контактдействие_отскокапуть_действияпуть_действия_конец
позиция_пути_действияскорость_пути действиядействие_линейный_шагшаг_потенциала_действия
действие_убить_объектдействие_создать_объектдействие_создать_объект_движениядействие_создать_объект_случайно
действие_изменение_объектадействие_убийства_позициядействие_спрайта_наборадействие_спрайт_трансформации
цвет действия_спиралидействие_спрайта_цветдействие_звукадействие_конец_звука
действие_если_звукдействие_другой_комнатыдействие_текущей_комнатыдействие_предыдущей_комнаты
действие_следующей_комнатыдействие_если_предыдущая_комнатадействие_если_следующая_комнатадействие_установить_тревогу
действие_снадействие_установить_временную_линиюдействие_время_настройкидействие_временной_старт
действие_временной_остановкидействие_временной_паузыaction_set_timeline_positionaction_set_timeline_speed
сообщение действиядействие_показать_инфодействие_показать_видеодействие_конец_игры
действие_перезапустить_игрудействие_сохранить_игруaction_load_gameдействие_замены_спрайта
действие_заменить_звукдействие_замены_
- фон
действие_если_пустодействие_если_столкновение
действие_еслидействие_если_номердействие_если_объектдействие_если_вопрос
действие_если_кубикдействие_если_мышьдействие_если_выровненодействие_выполнить_скрипт
действие_наследуетсядействие_если_переменнаяпеременная действия_рисункаaction_set_score
action_if_scoreaction_draw_scoreдействие_высокого_показадействие_высокой_оценки_чистоты
действие_установить_жизньдействие_если_жизньдействие_рисовать_жизньaction_draw_life_images
action_set_healthдействие_если_здоровьедействие_рисовать_здоровьеaction_set_caption
действие_парцисты_создатьдействие_парциста_уничтожитьдействие_парциста_очиститьaction_parttype_create_old
action_parttype_createaction_parttype_colorцвет_части_действиятип_действия_жизнь
действие_части_типа_скороститип_действия_гравитациятип_действия_вторичныйдействие_партемита_создать
действие_партемита_уничтожитьдействие_партемита_взрывадействие_партемит_потокадействие_cd_play
действие_cd_стопдействие_cd_паузадействие_сд_возобновитьдействие_сд_присутствует
действие_cd_воспроизведениеaction_set_cursorстраница_действияaction_splash_web
действие_рисунка_спрайтаaction_draw_backgroundдействие_рисовать_текстaction_draw_text_transformed
action_draw_rectangleaction_draw_gradient_horaction_draw_gradient_vertдействие_рисовать_эллипс
действие_рисунка
- эллипс_градиент
действие_рисовать_линиюдействие_рисовать_стрелкуцвет_действия
цвет действияaction_fontaction_fullscreenдействие_снимка
эффект действия
-

Вы можете узнать больше о новом GML Visual из раздела руководства по GML Visual.

-

-
-

-

Следующие встроенные глобальные переменные также устарели, хотя они все еще считаются зарезервированными переменными в GML, чтобы IDE мог распознать их и отметить для обновления/удаления, когда импортируется старый проект, использующий их (как и переменные, перечисленные в разделах "Виды" и "Фоны", выше):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
gamemaker_registeredgamemaker_progamemaker_
- версия
безопасный режим
show_healthshow_scoreshow_lives
caption_scorecaption_livescaption_health
аргумент_относительныйroom_captionкомнатная скорость
шаги_переходавид_переходаигровой_гид
error_lasterror_occurredкопирование_поверхности_буфера
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Additional_Information/The_File_System.htm b/Manual/contents/Additional_Information/The_File_System.htm index ac76c0ad8..e69de29bb 100644 --- a/Manual/contents/Additional_Information/The_File_System.htm +++ b/Manual/contents/Additional_Information/The_File_System.htm @@ -1,91 +0,0 @@ - - - - - - Файловая система - - - - - - - - - - -

Файловая система

-

При использовании функций файловой системы или включенных файлов в GameMaker жизненно важно знать, как именно - как работает файловая система и что происходит за кулисами. С этой целью данный раздел призван объяснить и разъяснить, как именно хранятся файлы, где они хранятся и какие возможные ограничения или обходные пути - могут быть в этой системе.

-

Первое и самое важное, что следует отметить о файловых функциях, это то, что они ограничены - в целом и по умолчанию - песочницей. Это означает, что GameMaker не может сохранять или загружать файлы из любого места, которое не является частью игрового пакета или локальной памяти устройства без явного участия пользователя, и даже тогда это участие ограничено только целевыми платформами Windows, macOS и Ubuntu (Linux).

-

ВАЖНО! Однако можно отключить "песочницу" в целях Desktop (Windows, macOS, и Ubuntu (Linux)), отметив опцию Disable file system sandbox в Game Options для целевой платформы. Вы делаете это на свой страх и риск, и хотя это откроет сохранение и загрузку файлов и позволит вам получить доступ к файлам в любом месте данной системы, это все равно может быть ограничено разрешениями ОС, и вы не сможете записывать - в каталог_программ папку.

-

Чтобы понять, что такое песочница, прежде всего, нужно понять, что для файлов существуют две различные области:

- -

Следующая диаграмма может помочь вам лучше представить себе это:

-

File System Save Areas

-

ПРИМЕЧАНИЕ: Вы никогда не сможете записывать в каталог File Bundle (программа).

-

Когда ваша игра находится в "песочнице", две целевые области - каталог пакета и локальная область хранения - доступны на каждой целевой платформе, но на каждой из них они будут работать немного по-разному. Однако GameMaker абстрагировался от основной - суть того, что можно и чего нельзя делать, что облегчает перенацеливание игр на различные среды.

-

Для начала следует понять, что имеется в виду, когда мы говорим о working_directory. Это синоним двух - возможных мест сохранения (как показано на диаграмме выше), и когда вы используете этот каталог, он будет делать одно из двух действий в зависимости от того, читаете вы или записываете, и был ли файл, из которого вы читаете, изменен или нет:

- -

ПРИМЕЧАНИЕ: в общем случае GameMaker сделает все это за вас, и вам редко придется использовать встроенную переменную working_directory.

-

Используя эти два простых правила, мы можем увидеть, как работают следующие функции (это примеры, чтобы помочь вам представить процесс для различных доступных функций):

- -

На платформах Windows, macOS и Ubuntu (Linux) есть два способа сохранения и загрузки файлов извне песочницы, и это либо использование функций get_open_filename() и - get_save_filename() (обе эти функции требуют, чтобы пользователь выбрал область для загрузки и сохранения, а возвращаемая строка - строка может быть использована в остальных файловых функциях для обхода песочницы - подробнее см. описание функций в языковом разделе руководства). Другой способ - полностью отключить песочницу в опциях игры для целевой платформы (доступно только для Desktop-целей, как описано далее на этой странице).

-

На HTML5 также можно загружать файлы извне песочницы с сервера, однако это следует делать только с помощью функции buffer_load_async() как - синхронной загрузки была устаревшей в большинстве браузеров и со временем будет устаревшей. Это означает, что загружаемые таким образом файлы должны быть сохранены как двоичные файлы - например, вы можете сохранить *.ini как строку - (см. ini_close() подробнее), а затем записать ее в буфер, который затем можно сохранить и загрузить с помощью функций async. Обратите внимание - что если вы загружаете изображения с помощью sprite_add() то они уже обрабатываются асинхронно.

-

Вы также должны знать, что каждая целевая платформа имеет свою собственную область сохранения, в которую можно записывать и из которой можно читать файлы и каталоги. Ниже приведен список этих областей для каждой целевой платформы в режиме "песочницы":

- -

Стоит отметить, что целевой модуль HTML5 имеет ограничение на локальное хранение (которое может составлять от 1 МБ до 5 МБ в зависимости от браузера), что означает, что вам не будет разрешено сохранять большие sprites, скриншоты и т.д..

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Additional_Information/Type_Tables.htm b/Manual/contents/Additional_Information/Type_Tables.htm index 960290e46..e69de29bb 100644 --- a/Manual/contents/Additional_Information/Type_Tables.htm +++ b/Manual/contents/Additional_Information/Type_Tables.htm @@ -1,694 +0,0 @@ - - - - - - Типовые столы - - - - - - - - - - -

Типовые столы

-

На этой странице показаны различные результаты, которые вы можете получить при использовании арифметических операций с различными типами данных. Все таблицы имеют одинаковый формат: столбцы показывают левую часть арифметической операции, а строки - правую часть, например:

-

<LHS> + <RHS> = <result>

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Add (+)РеальноBoolСтрокаInt32Int64PtrнеопределенныйМассив
РеальноРеальноРеальноОшибка РеальноРеальноОшибка Ошибка Ошибка
BoolРеальноРеальноОшибка РеальноРеальноОшибка Ошибка Ошибка
СтрокаСтрокаСтрокаСтрокаСтрокаСтрокаОшибка Ошибка Ошибка
Int32РеальноРеальноОшибка Int32Int64Ошибка Ошибка Ошибка
Int64РеальноРеальноОшибка Int64Int64Ошибка Ошибка Ошибка
PtrОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
неопределенныйОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
МассивОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Subtract (-)РеальноBoolСтрокаInt32Int64PtrнеопределенныйМассив
РеальноРеальноРеальноОшибка РеальноРеальноОшибка Ошибка Ошибка
BoolРеальноРеальноОшибка РеальноРеальноОшибка Ошибка Ошибка
СтрокаОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
Int32РеальноРеальноОшибка Int32Int64Ошибка Ошибка Ошибка
Int64РеальноРеальноОшибка Int64Int64Ошибка Ошибка Ошибка
PtrОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
неопределенныйОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
МассивОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Multiply (*)РеальноBoolСтрокаInt32Int64PtrнеопределенныйМассив
РеальноРеальноРеальноОшибка РеальноРеальноОшибка Ошибка Ошибка
BoolРеальноРеальноОшибка РеальноРеальноОшибка Ошибка Ошибка
СтрокаСтрокаОшибка Ошибка СтрокаОшибка Ошибка Ошибка Ошибка
Int32РеальноРеальноОшибка Int32Int64Ошибка Ошибка Ошибка
Int64РеальноРеальноОшибка Int64Int64Ошибка Ошибка Ошибка
PtrОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
неопределенныйОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
МассивОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Divide (/)РеальноBoolСтрокаInt32Int64PtrнеопределенныйМассив
РеальноРеальноРеальноОшибка РеальноРеальноОшибка Ошибка Ошибка
BoolРеальноРеальноОшибка РеальноРеальноОшибка Ошибка Ошибка
СтрокаОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
Int32РеальноРеальноОшибка Int32Int64Ошибка Ошибка Ошибка
Int64РеальноРеальноОшибка Int64Int64Ошибка Ошибка Ошибка
PtrОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
неопределенныйОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
МассивОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Divide (div)РеальноBoolСтрокаInt32Int64PtrнеопределенныйМассив
РеальноРеальноРеальноОшибка РеальноРеальноОшибка Ошибка Ошибка
BoolРеальноРеальноОшибка РеальноРеальноОшибка Ошибка Ошибка
СтрокаОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
Int32РеальноРеальноОшибка Int32Int64Ошибка Ошибка Ошибка
Int64РеальноРеальноОшибка Int64Int64Ошибка Ошибка Ошибка
PtrОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
неопределенныйОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
МассивОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Mod (%)РеальноBoolСтрокаInt32Int64PtrнеопределенныйМассив
РеальноРеальноРеальноОшибка РеальноРеальноОшибка Ошибка Ошибка
BoolРеальноРеальноОшибка РеальноРеальноОшибка Ошибка Ошибка
СтрокаОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
Int32РеальноРеальноОшибка Int32Int64Ошибка Ошибка Ошибка
Int64РеальноРеальноОшибка Int64Int64Ошибка Ошибка Ошибка
PtrОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
неопределенныйОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
МассивОшибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка Ошибка
-

-

Таблица равенства

-

Есть несколько специальных констант, которые могут быть равны или не равны самим себе, как показано в следующей таблице:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Equality (==)NaNнеопределенныйбесконечность
NaNложныйложныйложный
неопределенныйложныйправдаложный
бесконечностьложныйложныйправда
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Additional_Information/Vectors.htm b/Manual/contents/Additional_Information/Vectors.htm index 614a5ee55..e69de29bb 100644 --- a/Manual/contents/Additional_Information/Vectors.htm +++ b/Manual/contents/Additional_Information/Vectors.htm @@ -1,79 +0,0 @@ - - - - - - Векторы - - - - - - - - - - -

Векторы

-

В какой-то момент при создании игры любой сложности вам наверняка придется иметь дело с векторами. Они используются в физике, в искусственном интеллекте, в тригонометрии и во многих других ситуациях, но что такое вектор? Проще говоря, вектор - это направленная величина. Давайте начнем с рассмотрения одномерного вектора - это то же самое, что и одно число - нарисуем пронумерованную линию со стрелкой, начинающейся на нуле и заканчивающейся на 5. Это вектор "a", который равен 5, а если мы нарисуем другую стрелку, начинающуюся на 5 и заканчивающуюся на 8, то получим вектор "b", равный 3:

-

Вы должны понимать, что не имеет значения, где начинается вектор, важно лишь то, какой он длины и в каком направлении движется. Так, вектор "b" начинается с 5, имеет длину 3 единицы и направлен вправо, что делает его идентичным вектору, начинающемуся с 0 и идущему в направлении 3. Теперь вы можете сложить эти векторы вместе, положив два вектора "a" и "b" один на другой, чтобы получить вектор "c", равный 8. А как насчет отрицательных чисел? Если на рисунке выше вектор, направленный вправо, соответствует положительному числу, то вектор, направленный влево, соответствует отрицательному числу, что делает одномерный вектор не более чем знаковым (+/-) числом. Это объясняет основную концепцию вектора: важны только длина и направление ("влево" или "вправо" в данном случае), но не положение.

-

А как насчет двумерных векторов? Ну, мы можем думать о них как о состоящих не только из "лево" и "право", но и из "вверх" и "вниз":

-

Теперь это еще не совсем векторы, так как мы должны уменьшить их, используя начальные и конечные координаты. Рассматривая вектор "a", мы видим, что его начальная координата [2,2], а конечная [4,3], поэтому, чтобы получить вектор, мы должны уменьшить его, вычитая конечную координату из начальной следующим образом:

-

a = [(x2-x1), (y2-y1)] = [(4-2), (3-2)] = [2,1]

-

Теперь сделаем то же самое для вектора b:

-

b = [(-1.2 -(-3.2)) ,(2.1 - 1.1)] = [2 ,1]

-

Заметили что-нибудь? Эти два вектора одинаковы! Это еще одна демонстрация того, что вектор не имеет положения, только направление и длину, и мы можем нарисовать эти векторы относительно друг друга вокруг локальной оси [0,0]:

-

Это означает, что двумерный вектор определяется двумя значениями - "x" и "y" относительно локальной оси [0,0]. А как насчет трехмерных векторов? Ну, у них есть дополнительное измерение "глубина", с которым нужно бороться, и они будут вычисляться как позиции "x", "y" и "z" вокруг локальной оси примерно так:

-

Хорошим примером вектора, используемого в GameMaker, является физическое свойство гравитации в редакторе комнат. Гравитация рассчитывается как вектор вокруг позиции [0,0]. Так, если вы определите гравитацию как [x0, y10], сила тяжести будет равна 10.

-

Обычно векторы можно использовать во многих ситуациях, но иногда требуется ограничить их значение (например, при работе с углами), поэтому мы их нормализуем . По сути, это математический прием, который используется для преобразования вектора длины n в вектор длины 1, то есть компоненты вектора нормируются на значения от 0 до 1. Такие векторы также называются единичными векторами:

-

Чтобы вычислить нормализованный вектор, мы должны сначала получить исходные компоненты вектора, затем использовать их для получения длины вектора. Затем мы делим каждую из компонент вектора на эту длину, чтобы получить нормализованные компоненты вектора, которые образуют нормализованный вектор, в котором сумма квадратов всех координат равна 1. Вот как это делается:

-

Сначала мы берем координаты вектора и получаем его компоненты:

-

vx = (x2 - x1) = (7 - 1) = 6
- vy = (y2 - y1) = (4 - 1) = 3

-

Затем мы используем эти значения для расчета длины вектора:

-

len = sqr(vx2 + vy2); // = sqr(36 + 9) = sqr(45) = 6.708203932499369

-

Теперь, это дает нам точную длину вектора "a", поэтому давайте используем ее для нормализации двух компонентов вектора vx и vy:

-

vx = (vx/len); // = (6 / 6.708203932499369) = 0.8944271909999159
- vy = (vy/len); // = (3 / 6.708203932499369) = 0.4472135954999579

-

Отлично! Теперь мы нормализовали компоненты вектора! Но какое практическое применение это имеет в контексте GameMaker? Хорошо, давайте приведем практический пример...

-

Допустим, у вас есть игра, в которой игрок должен стрелять во врага, и вам нужно знать, насколько объект с пулей должен перемещаться вдоль оси x и y каждый шаг, чтобы попасть в него:

-

Для этого нужно использовать координаты игрока и противника, чтобы получить компоненты вектора и его длину, затем нормализовать их, чтобы получить значение между 0 и 1, которое в итоге нужно умножить на скорость, с которой пуля должна двигаться на каждом шаге. Эти два последних значения вы должны сохранить и добавить к начальным координатам x и y на каждом шаге. Звучит сложно? Это не так, посмотрите (для простоты значения были округлены до одного десятичного знака):

-

px = 100;
- py = 425;
- ex = 356;
- ey = 83;
- bullet_speed = 5;
-
- vx = (ex - px); // = 256
- vy = (ey - py); // = -342
-
- len = sqrt(vx2 + vy2); // = sqrt(65536 + 116964) = 427.2
-
- vx = vx / len; // = 0.6
- vy = vy / len; // = 0.8
-
- speed_x = vx * bullet_speed; // = 3
- speed_y = vy * bullet_speed; // = 4 -

-

Итак, чтобы попасть в цель, нам нужно каждый шаг добавлять 3 к координате x пули и 4 к ее координате y.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Index.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Index.htm index d3000a5ed..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Index.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Index.htm @@ -1,43 +0,0 @@ - - - - - - {GML_Visual} - - - - - - - - - - - -

GML Visual

-

GML Visual - это метод визуального создания сценариев для программирования на языке GameMaker Language (GML). Он заключается в использовании блоков действий для построения игровой логики визуальным и интуитивно понятным способом, и является идеальным инструментом для людей, которые изучают программирование, или для людей с более визуальными наклонностями.

-

Раздел руководства " GML Visual " состоит из следующих разделов:

- -

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Action_Block_Functions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Action_Block_Functions.htm index e3788cdbf..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Action_Block_Functions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Action_Block_Functions.htm @@ -1,53 +0,0 @@ - - - - - - Функции сценария блока действий - - - - - - - - - - -

Функции сценария блока действий

-

Одним из наиболее важных активов в браузере активов является актив " Сценарий". Сценарии - это особые активы, поскольку они являются "контейнерами" для пользовательских функций и не вызываются вами непосредственно в игре. Все скрипты имеют глобальную область применения и автоматически запускаются GameMaker при запуске игры, поэтому вы можете использовать их для определения глобальных переменных и функций, которые вы хотите использовать в своей игре.

-

В каждый скрипт GML Visual можно добавить одну или несколько пользовательских функций, которые создаются с помощью действия Declare A New Function:

-

Функции, которые вы определите здесь, будут иметь глобальную область применения и действовать подобно любому встроенному действию GML Visual, то есть: они могут принимать различные значения - или вообще не принимать их - в качестве аргументов(или параметров), а затем выполнять задачу, возвращая значение или не возвращая ничего, в зависимости от необходимости. Затем вы вызываете функцию в своих играх с помощью действия Function Call , которое выглядит следующим образом:

-

Чтобы создать GML визуальный сценарий, достаточно воспользоваться правой кнопкой мыши в любом месте браузера активов и выбрать Create then Script. Это создаст новый GML визуальный сценарий и откроет окно редактора:

-

Вы можете дать имя скрипту, щелкнув правой кнопкой мыши на нем в браузере активов и выбрав " Переименовать" (или с помощью медленного двойного щелчка левой кнопкой мыши ), но учтите, что имя скрипта должно соответствовать общим правилам для активов, то есть начинаться с буквы и содержать только буквы, цифры или символ "_" под баром. Ваш скрипт также будет предварительно заполнен действием Declare A New Function, готовым к заполнению, и вы можете добавить дополнительные объявления функций по мере необходимости (один скрипт может содержать несколько функций, что полезно для группировки функций с похожим или связанным использованием вместе).

-

Как упоминалось выше, вы можете передать функции ряд аргументов, и она будет использовать их для выполнения задачи, для которой вы ее написали. Чтобы лучше понять это, возьмите, например, любое из встроенных действий и подумайте, как оно работает... Вы помещаете его в событие, передаете ряд значений, и оно заставит ваш экземпляр что-то сделать. Определяемые пользователем функции работают точно так же, с той лишь разницей, что их пишете вы .

-

При определении новой функции вы даете ей имя, а также определяете имена аргументов, которые она принимает, если принимает (функции могут не принимать аргументы или принимать несколько аргументов, в зависимости от того, что вам требуется). Если вы задаете имена аргументов, то они будут использоваться в действиях, которые вызывает функция, как локальные переменные , содержащие входные значения функции.

-

Также хорошей практикой является добавление комментария к действию, который объясняет, что оно делает, следуя правилам JS Doc. Например, рассмотрим эту функцию set_vec():

-

Для вызова приведенного выше сценария достаточно использовать действие Call Function, как показано ниже:

-

Вы можете не только передавать аргументы в функцию, но и просить функцию вернуть значение (используя действие Return ), поэтому вы можете использовать их, например, для построения методов вычисления или возврата идентификатора экземпляра после сложного обнаружения столкновений или для любых других целей. Однако обратите внимание, что использование return завершает функцию, поэтому никакие действия после ее использования выполняться не будут, и это означает, что необходимо тщательно продумать структуру ваших функций.

-

Ниже приведена функция GML Visual, которая возвращает значение:

-

Declare A New Function Syntax

-

Приведенная выше функция просто проверяет все объекты в комнате на предмет их object_index, и если один из них является объектом игрока, то функция возвращает true (завершая вызов функции) или false. Вы можете вызвать эту функцию следующим образом:

-

Итак, мы вызываем функцию и заставляем ее создать временную (локальную) переменную для хранения возвращаемого значения (которое в данном случае равно true или false), а затем эта переменная проверяется и выполняется действие.

-

Вы также можете сделать аргументы необязательными и определить значение по умолчанию, тогда в случае, если они не будут предоставлены в вызове функции, вместо них будет использоваться значение по умолчанию. Более подробную информацию см. в расширенном примере 2 действия.

-

При создании функций для ваших скриптов GML Visual вы можете использовать все те же действия, что и при добавлении действий в событие объекта, и даже можете вызывать функции изнутри функций, создавая таким образом более "модульный" код действий. Построение скриптов с использованием функций таким образом может сэкономить вам много времени на создание одинаковых последовательностей действий, а также поможет сделать ваши последовательности действий более легкими для чтения и отладки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Applying_Actions_To_Other_Instances.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Applying_Actions_To_Other_Instances.htm index db40e58cf..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Applying_Actions_To_Other_Instances.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Applying_Actions_To_Other_Instances.htm @@ -1,82 +0,0 @@ - - - - - - Применение действий к другим экземплярам - - - - - - - - - - -

Применение действий к другим экземплярам

-

Большинство действий в библиотеках GML Visual имеют возможность применять действие различными способами. Это называется установкой области действия, и она может быть одной из нескольких:

-

По сути, вы указываете GameMaker, какой экземпляр должен выполнять действие. Область действия по умолчанию - является self, что означает, что как только объект будет создан как экземпляр в комнате, этот экземпляр будет выполнять код действия. Однако это не всегда то, что вам нужно, и вы можете захотеть, чтобы некоторые действия влияли на другие или даже - все экземпляры в комнате. В этом случае необходимо изменить область действия.

-

Различные области видимости для выполнения действий перечислены ниже, но следует отметить, что изменение области видимости действия таким образом применит новую область видимости только к этому действию , но не к последующим действиям в цепочке. Если вы хотите применить - изменение области действия к нескольким цепочке действий, то сначала используйте действие " Применить к...".

-

-

Самостоятельно

-
-

Это область видимости по умолчанию для действия, и она просто указывает, что действие должно вызываться только тем экземпляром, который выполняет код.

-

-
-

Другое

-
-

Область видимости other имеет две основные функции, и возвращаемое ею значение будет зависеть от того, где и как вы ее используете. В событии столкновения other возвращает уникальное значение ID экземпляра - (уникальное значение, которое используется для различения отдельных экземпляров каждого объекта), поэтому вы можете, например, создать экземпляр "пуля" и вызвать событие столкновения с экземпляром "игрок", а затем использовать область действия other для удаления точек попадания с объекта "игрок", а затем вернуться к области действия self для уничтожения экземпляра "пуля".

-

Вне события столкновения параметр other будет вести себя так же, как если бы он был установлен на noone, если только он не вызывается из блока действий. Это означает, что если вы измените - scope группы действий на определенный объект, то во время вызова этих действий область видимости other будет возвращать ID экземпляра, который первоначально вызвал группу действий. Например, вы можете запустить - действие Apply to..., а затем в следующем блоке кода установить область видимости на other, чтобы выполнить действие над экземпляром, выполняющим весь блок событий, а не над тем экземпляром, который был выбран в области видимости в блоке событий. - экземпляр, на который распространяется действие в блоке кода Apply to. На рисунке ниже приведен пример:

-

На рисунке мы проверяем наличие нажатия мыши в экземпляре, и если оно обнаружено, то меняем область видимости с помощью действия Apply To.... Следующие два блока действий теперь вызываются из экземпляра "obj_Player" (если их несколько, то они будут выполняться для всех), поэтому объект изменит свой sprite и затем создаст объект в другой позиции, - т.е. в позиции объекта, который выполняет событие и обнаружил нажатие мыши.

-

-
-

Все

-
-

Когда вы задаете область действия для всех, вы говорите GameMaker выполнить этот блок для каждого активного экземпляра в текущей комнате. Например, создав действие Destroy Object Instance (Уничтожить экземпляр объекта ) - и установив его область действия на all, приведет к исчезновению всех экземпляров в комнате, независимо от того, на основе какого объекта они были созданы.

-

-
-

Объект

-
-

Действию также может быть задан объект в качестве области действия. Это означает, что все экземпляры данного объекта будут выполнять это действие одновременно с его вызовом. Например, если в комнате находится 100 экземпляров врагов и - вы хотите, чтобы все они были направлены в определенную точку. Вы вызовете Set Point Direction и установите область действия на объект "obj_Enemy", и когда это действие - все экземпляры этого объекта изменят направление.

-

-
-

Выражение

-
-

Поле ввода Expression предназначено для ввода ID конкретного экземпляра, над которым будет работать действие. Это может быть уникальное значение ID, присвоенное экземпляру в редакторе комнат, или ID экземпляра, который вы сохранили в переменной (где переменная будет входным значением), или даже выражение с помощью кода. - в переменной (где переменная будет входным значением) или это может быть даже выражение с использованием кода, как показано на рисунке ниже:

-

В этом случае экземпляр вызывает Set Sprite из - экземпляра, созданного кодом, заданным для Выражения. Обратите внимание, что в этом случае создаваемый экземпляр сначала выполнит событие Create Event, прежде чем к нему будет применено действие.

-

-
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Changing_DnD_To_Code.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Changing_DnD_To_Code.htm index f0e01b65f..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Changing_DnD_To_Code.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Changing_DnD_To_Code.htm @@ -1,49 +0,0 @@ - - - - - - Изменение визуального представления GML в код - - - - - - - - - - -

Изменение GML Visual To Code

-

Еще одной особенностью GML Visual является то, что вы можете преобразовать его в код GML и таким образом увидеть, что именно происходит за кулисами при использовании действий. Однако перед тем, как преобразовать действия в код, вы можете сначала просмотреть их, используя правую кнопку мыши меню Live Preview:

-

В результате откроется новое окно:

-

По мере добавления, изменения или удаления GML визуальных действий, GML Live Preview будет обновляться, чтобы показать вам фактический код, который создается "за кулисами". Код в режиме реального просмотра нельзя редактировать напрямую, но вы можете выбрать разделы и скопировать их для вставки в скрипты GML или, например, в Code Actions.

-

Если после предварительного просмотра вы решите, что хотите преобразовать GML Visual в код, то это можно сделать снова, нажав правую кнопку мыши в любой рабочей области с действиями и выбрав Convert To GML Code.

-

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

-

Полученный код будет использовать {} для разграничения отдельных действий, и вы сможете четко видеть, какие действия относятся к каким функциям или объявлениям переменных в коде. Если визуал GML более сложный, то и код будет таким же, но действуют те же общие правила, и код будет последовательно структурирован точно так же, как вы писали визуал GML. Обратите внимание, что иногда в код добавляются дополнительные локальные (временные) переменные для хранения определенных значений, которые будут использоваться, например, так:

-

RMB Icon

-

Станет этим кодом:

-

Live Preview

-

Здесь код сначала создает локальную (временную) переменную и устанавливает ее в значение false, затем проверяет, существует ли экземпляр, и устанавливает локальную переменную в значение возврата вызова функции. Затем локальная переменная проверяется на то, является ли она true или false, и если это true, то выполняется остальная часть кода.

-

При обучении программированию с помощью GML Visual это может стать важным инструментом для перехода к использованию GML на более позднем этапе, но это ни в коем случае не обязательно, и вы все равно сможете создавать отличные игры, используя GML Visual! Стоит также отметить, что хотя процесс конвертации является односторонним, после преобразования действий в код, вы можете вернуться к использованию GML Visual снова, используя меню правой кнопки мыши в редакторе кода и выбрав "Convert To GML Visual". В результате ранее созданный код будет помещен в действие Execute Code, и вы сможете продолжать использовать GML Visual, как и раньше:

-

GML VisualLive Preview Window

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Constructing_Action_Block_Code.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Constructing_Action_Block_Code.htm index dff5a3a58..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Constructing_Action_Block_Code.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Constructing_Action_Block_Code.htm @@ -1,83 +0,0 @@ - - - - - - Конструирование кода блока действий - - - - - - - - - -

Конструирование кода блока действий

-

Чтобы добавить поведение к объектам, вы можете построить свой код, используя действия из различных библиотек, доступных вам из Action Toolbox. Для начала вам нужно создать новый проект GML Visual, а затем создать новый объект (при необходимости вы можете назначить объекту спрайт ). В новом объекте вы можете начать добавлять events, а в событиях добавьте ваши действия из кода GML Visual.

-

Обратите внимание, что при добавлении нового события открывается окно "код" с вкладкой для данного события (см. рисунок выше), и теперь вы можете перетащить любое действие из панели инструментов справа в панель Action Block окна кода. Теперь, хотя это правда, что вы можете добавить любое действие, это не означает, что все они будут работать или что проект будет компилироваться с ними. Некоторые действия требуют для работы хотя бы одной переменной, а другие - например, действия Draw - будут работать только при использовании в определенном событии. Как узнать, какие из них использовать? Если действие требует переменной, а мы ее еще не определили, то не стоит ее использовать, пока мы не добавим действие для создания переменной.

-

Когда вы перетащите действие из панели инструментов в основное рабочее пространство блока действий, оно развернется и покажет доступные аргументы(параметры), которые вы можете заполнить и изменить, чтобы задать поведение. На изображении ниже мы перетащили действие Assign Variable из библиотеки Toolbox Common в рабочую область блока действий:

-

Вы можете видеть, что новое действие также отображается слева от окна кода в сокращенном виде. Этот список действий, называемый "Обзор действий", можно щелкнуть, чтобы быстро перейти к этому действию для редактирования. При необходимости вы можете продолжать добавлять действия к событию, при этом каждое новое действие будет "привязано" к предыдущему, чтобы показать поток создаваемого вами кода GML Visual. Обратите внимание, что область, в которую можно добавлять последующие действия, выделена под начальным действием, и, в зависимости от используемого действия, различные области будут выделены, чтобы показать, в каком месте цепочки вы можете его добавить:

-

По мере добавления действий в рабочую область они будут "примыкать" к действиям выше, чтобы вы могли видеть, как течет код GML Visual, где одно действие ведет к другому, а панель обзора показывает их в сокращенном виде и в порядке выполнения:

-

Некоторые действия помещают код в отдельную цепочку в стороне от основного потока - такие вещи, как If Variable, создают подцепочку действий, которые должны произойти при выполнении правильных условий, прежде чем продолжить основную цепочку:

-

Обратите внимание, что при использовании действий, которые могут иметь боковой блок цепочки, как это, действие будет иметь две выделенные области для отбрасывания дальнейших действий:

- -

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

-

Также можно добавлять комментарии к визуальным действиям GML, поэтому вы можете оставлять заметки рядом с различными блоками, чтобы объяснить, что они делают (что особенно полезно при работе в команде):

-

Подробнее об этой функции можно узнать на странице Меню правой кнопки мыши.

-

Это основы использования редактора кода GML Visual, но есть и другие важные детали, о которых рассказано в следующих разделах:

-

-

Целевые переменные

-
-

Важно отметить, что многие действия предлагают переменную "цель", которая может быть помечена, например, как "Временная":

-

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

-

Если вы отметите опцию "Temp", то можете просто добавить имя переменной, и действие создаст эту переменную и установит ее для хранения возвращаемого значения (создав временную локальную переменную). Любые действия, используемые после этого, теперь могут получить доступ к значению временной переменной, но только в рамках одного события или сценария. Временные переменные доступны только в той области видимости, в которой они были созданы. Более подробную информацию о переменных и области видимости переменных можно найти здесь.

-

-
-

Сфера действия

-
-

Не только переменные имеют области видимости (см. раздел " Целевые переменные " выше), действия также могут иметь различные области видимости. На самом деле, почти всем действиям можно присвоить разные области действия, задаваемые из выпадающего окна, открываемого в самом действии, как показано здесь:

-

Вы также можете установить область действия для всех последующих действий с помощью специального действия Apply to. Более подробную информацию об этой возможности визуальных действий GML см. здесь:

- -

-
-

Автокомплект

-
-

При работе с GML Visual вам придется добавлять переменные и выражения в различные поля ввода действий. Однако при этом часто появляется окно Auto Complete, которое помогает вам:

-

В этом всплывающем окне будут перечислены все встроенные в GML (GameMaker Language) переменные, константы и функции, а также любые ресурсы, содержащие начальные буквы того, что вы набирали. Его можно использовать для быстрого поиска нужного ресурса или переменной для действия без необходимости вводить их самостоятельно. Например, если все ваши комнаты имеют префикс "rm_", то, набрав его и подождав немного, вы увидите окно автозаполнения со всеми ресурсами, начинающимися с "rm_". Обратите внимание, что все встроенные переменные, которые отображаются в окне автозавершения, можно использовать везде, где в действии ожидается переменная или выражение, как и большинство функций GML.

-

-
-

Расширение действия

-
-

Иногда при использовании действия вы увидите маленький значок плюса сбоку. Это означает, что вы можете расширить действие, чтобы выполнить дополнительные задачи или принять дополнительные аргументы. Например, если вы посмотрите на действие Declare Temporary Variables, вы увидите, что у него есть этот значок:

-

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

-

Значок также можно использовать для тех действий, которые требуют необязательных аргументов, например, действие Choose, которое позволяет добавлять различные значения для возврата:

-

GML Visual Create Event

-
-

-

-

- -
© Copyright YoYo Games Ltd. 2025 All Rights Reserved
- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/DnD_Overview.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/DnD_Overview.htm index f495cd866..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/DnD_Overview.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/DnD_Overview.htm @@ -1,83 +0,0 @@ - - - - - - обзор {GML_Visual} - - - - - - - - - - -

обзор {GML_Visual}

-

GML Visual - это инструмент визуального создания сценариев, который можно использовать для создания игр, не набирая никакого кода. Это не означает, что вы не программируете код при использовании GML Visual, это так, просто ваш код создается и представляется в визуальном виде с использованием "блоков" действий , а не текста. Действия - это простые выраженияилиутверждения, которые можно "связать" вместе, чтобы заставить экземпляр объекта сделать что-то, когда он помещен в комнату. Например, можно выполнить действие в событии Create для перемещения экземпляра в случайном направлении, а другое действие в событии Collision, чтобы заставить его отскакивать от предметов, с которыми он сталкивается (более подробную информацию о различных доступных событиях и их взаимодействии см. в разделе " События объектов").

-

На рисунке выше показан типичный объект, открытый на рабочем пространстве для редактирования. Он имеет окно "Событие" и окно "Код", прикрепленные к нему, и в окне кода вы можете видеть, где мы построили наш GML Visual. Давайте рассмотрим это окно немного подробнее и посмотрим, какие опции нам доступны:

-

Ниже вы найдете более подробную информацию о каждом из представленных разделов:

-

Вкладки событий

-
-

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

-

 

-
-

Обзор действий

-
-

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

-

 

-
-

Рабочая область блока действий

-
-

В эту область рабочего пространства вы перетаскиваете действия из панели инструментов для создания визуального кода GML. Нажмите на действие и перетащите его в эту область, чтобы добавить его в список действий и отредактировать. Большинство действий имеют различные аргументы(параметры), которые вы можете задать, и большинство из них также принимают ключевые слова, переменные экземпляра или даже функции GML - например, вы можете вызвать действие Set Direction и использовать функцию GML. random(val) для задания произвольного направления.

-

По мере добавления блоков действий в код они визуально "связываются в цепочку", чтобы указать порядок выполнения различных действий, хотя то, как создается эта цепочка, зависит от исходного блока, который был использован. Например, блок If Variable будет иметь две цепочки - одну к блокам, которые будут вызваны, если проверяемое условие true, а затем к следующему за ним блоку. Для получения дополнительной информации о построении блоков действий в коде см. разделы, ссылки на которые приведены ниже.

-

Находясь в рабочей области блока действий, вы можете нажать и удерживать среднюю кнопку мыши для панорамирования, а колесико мыши - для прокрутки списка действий вверх или вниз. Если вы удерживаете кнопку при перемещении колесика мыши, то вид будет прокручиваться влево/вправо, а если вы удерживаете кнопки / и перемещаете колесико мыши, то вид будет увеличиваться или уменьшаться, позволяя вам видеть больше рабочей области с действиями. Вы можете щелкнуть на любом действии из списка действий слева, чтобы сфокусироваться на этом действии, сбросив масштаб и положение. Также обратите внимание, что вы можете изменить размер блоков действий, перемещая мышь к краям блока, а затем - когда курсор изменится - перетаскивая в нужном направлении.

-

Вы также можете щелкнуть правой кнопкой мыши в любом месте рабочего пространства GML Visual, чтобы вызвать меню RMB, которое подробно описано здесь.

-

 

-
-

Ящик для инструментов

-
-

На панели инструментов хранятся все действия GML Visual, причем в разных разделах находятся коллекции (библиотеки) действий, которые похожи или связаны между собой. Каждая коллекция действий связана с определенной темой или общей целью, и вы просто нажимаете и перетаскиваете нужное действие из панели инструментов в рабочую область блока действий, чтобы добавить его к текущему событию. Для упрощения работы - поскольку действий очень много - вы можете использовать панель "Поиск" в верхней части для поиска определенного действия или фильтрации видимых действий (например, введите "draw", чтобы получить все действия рисования), а также вы можете нажать и перетащить значки из любой библиотеки в папку "Избранное", чтобы сохранить часто используемые действия вместе. Это особенно полезно, если есть определенные действия, которые вы будете выполнять снова и снова. Папку "Избранное" можно очистить, нажав на маленький значок "Корзина".

-

Полный список доступных действий, а также аргументы, которые они принимают и как они могут быть соединены в цепочку, смотрите в разделе " справочник GML Visual ".

-

Вы можете использовать правую кнопку мыши на любом действии в панели инструментов, чтобы открыть следующее меню:

-

GML Visual Overview Screen

-

Здесь у вас есть следующие опции:

- -

 

-
-

 

-

На следующих страницах мы более подробно рассмотрим, как построить код блока действий, а также как установить область действия, чтобы влиять на различные вещи в вашем проекте, и другие важные детали:

- -

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Right_Mouse_Button_Menu_Options.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Right_Mouse_Button_Menu_Options.htm index 2da5a20eb..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Right_Mouse_Button_Menu_Options.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Overview/Right_Mouse_Button_Menu_Options.htm @@ -1,88 +0,0 @@ - - - - - - Опции меню правой кнопки мыши - - - - - - - - - - -

Опции меню правой кнопки мыши

-

При работе над кодом GML Visual вы можете нажать правую кнопку мыши на действии, на рабочей области или на тексте в списке слева. - чтобы открыть меню правой кнопки мыши:

-

Это меню содержит следующие опции:

- -

Следующие две опции доступны только при открытии меню RMB на узле GML Visual:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Audio_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Audio_Actions.htm index bfbd700a7..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Audio_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Audio_Actions.htm @@ -1,139 +0,0 @@ - - - - - - Аудиодействия - - - - - - - - - - -

Библиотека звуковых действий

-

GameMaker имеет полноценный звуковой движок, основанный на форматах *.ogg, - *.mp3 и *.wav звуковых форматах. Звуки этих типов, добавленные в IDE, могут быть использованы в вашей игре с помощью основных звуковых действий, показанных ниже. Для более сложных вещей, чем базовые звуковые эффекты или воспроизведение одного - Вы можете обратиться к расширенным аудиофункциям, посвященным потоковому аудио, позиционированию аудио - для придания 3D-звука - и группировке аудио.

-

ВАЖНО! При использовании звука в HTML5-цели следует помнить, что не все браузеры поддерживают Web Audio, поэтому при запуске ваш проект может не воспроизводить звук. Вы можете получить общее представление о поддержке Web Audio по следующей ссылке - ссылка: Могу ли я использовать Web Audio?

-

Библиотека Audio имеет следующие действия:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Audio Action LibraryВоспроизвести аудио
Play Audio IconОстановить аудио
Stop Audio IconОстановить все аудио
Stop All Audio IconПриостановить аудио
Pause Audio IconПриостановить все аудио
Pause All Audio IconРезюме Аудио
Resume Audio IconВозобновить все аудиозаписи
Resume All Audio IconУстановите положение звука
Set Audio Position IconПолучить длину звука
Get Audio Length IconНастройка высоты звука
Set Audio Pitch IconПолучение звукового сигнала
Get Audio Pitch IconНастройка громкости звука
Set Audio Volume IconПолучить громкость звука
Get Audio Volume IconУстановите мастер-громкость
Set Master Volume IconПолучить главный объем
Get Master Volume IconЕсли воспроизводится звук
If Audio Is Playing IconЕсли звук приостановлен
-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Get_Audio_Length.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Get_Audio_Length.htm index d170c4e76..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Get_Audio_Length.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Get_Audio_Length.htm @@ -1,64 +0,0 @@ - - - - - - Получить длину звука - - - - - - - - - - -

Получить длину звука

-

Это действие можно использовать для получения длины звука в вашей игре. Вы указываете ресурс звука для получения длины и переменную target для возврата значения (или вы можете отметить target как временную переменную, чтобы действие создало переменную - для использования до конца события или сценария). Длительность будет возвращена в целевую переменную (которую можно сделать временной) в секундах и может быть десятичным значением.

-

-

Синтаксис действия:

-

Get Audio Length Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
SoundЗвуковой ресурс для получения длины
TargetЦелевая переменная для хранения возвращаемого значения
-

-

Пример:

-

Приведенный выше код блока действий получает длительность воспроизведения заданного звукового ресурса и сохраняет ее - ее во временную локальную переменную. Затем она используется для генерации случайного значения от 0 до длины звука, которое затем сохраняется в другой временной локальной переменной. Это новое случайное значение затем используется для установки начальной позиции для - и звук воспроизводится.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Get_Audio_Pitch.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Get_Audio_Pitch.htm index d45638f80..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Get_Audio_Pitch.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Get_Audio_Pitch.htm @@ -1,63 +0,0 @@ - - - - - - Получение звукового сигнала - - - - - - - - - - -

Получение звукового сигнала

-

Это действие извлекает высоту тона предоставленного вами звукового ресурса. Возвращаемое значение будет множителем для фактического записанного тона образца, где значение 1 означает отсутствие изменений. Более подробную информацию о высоте тона см. в действии Set Audio Pitch.

-

-

Синтаксис действия:

-

Get Audio Pitch Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
SoundЗвуковой ресурс для получения высоты тона
TargetЦелевая переменная для хранения возвращаемого шага
-

-

Пример:

-

Приведенный выше код блока действий сначала получает высоту тона для заданного звука и сохраняет ее во временной - локальную переменную. Затем он проверяет нажатие клавиши, и если таковое обнаружено, значение высоты тона проверяется на то, меньше ли оно 2. Если да, то звук останавливается, к переменной высоты тона добавляется 0,1, и затем эта переменная используется для установки высоты тона звука снова перед воспроизведением. - высоты тона звука перед его воспроизведением.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Get_Audio_Volume.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Get_Audio_Volume.htm index 1db2b0fd0..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Get_Audio_Volume.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Get_Audio_Volume.htm @@ -1,63 +0,0 @@ - - - - - - Получить громкость звука - - - - - - - - - - -

Получить громкость звука

-

Это действие возвращает громкость заданного звука. Вы выбираете звук из проводника активов и задаете целевую переменную для возврата значения громкости (вы можете отметить ее как временную локальную переменную). Возвращаемое значение будет находиться в диапазоне от 0 до - 1, где 0 - тишина, а 1 - полная громкость.

-

-

Синтаксис действия:

-

Get Audio Volume Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
SoundЗвуковой ресурс для получения громкости
TargetЦелевая переменная для хранения возвращенного объема
-

-

Пример:

-

Приведенный выше код блока действий проверяет глобальную переменную на предмет того, имеет ли она значение true или false. Если она равна true, то громкость данного звука извлекается и сохраняется во временной локальной переменной. Затем проверяется, не равно ли это значение 0,5, и если нет, то громкость звука устанавливается равной 0,5. Если - значение глобальной переменной равно false, то громкость звука устанавливается равной 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Get_Master_Volume.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Get_Master_Volume.htm index 8c2faa7cf..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Get_Master_Volume.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Get_Master_Volume.htm @@ -1,60 +0,0 @@ - - - - - - Получить главный объем - - - - - - - - - - -

Получить главный объем

-

Это действие возвращает значение основной громкости для звуковой системы. Вы задаете целевую переменную для возврата значения громкости (вы можете отметить ее как временную локальную переменную). Возвращаемое значение будет находиться в диапазоне от 0 до 1, где 0 - тишина, а 1 - полная громкость. - громкость.

-

-

Синтаксис действия:

-

Get Master Volume Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
TargetЦелевая переменная для хранения возвращенного объема
-

-

Пример:

-

Приведенный выше код блока действий проверяет глобальную переменную, чтобы узнать, является ли она true или - false. Если она равна true, то извлекается значение основной громкости звуковой системы и сохраняется во временной локальной переменной. Затем проверяется, не равно ли это значение 0,5, и если это не так, то основная громкость звуковой системы - устанавливается на 0,5. Если значение глобальной переменной равно false, то основная громкость устанавливается равной 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/If_Audio_Is_Paused.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/If_Audio_Is_Paused.htm index 7856e2b8b..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/If_Audio_Is_Paused.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/If_Audio_Is_Paused.htm @@ -1,62 +0,0 @@ - - - - - - Если звук приостановлен - - - - - - - - - - -

Если звук приостановлен

-

Это действие можно использовать для проверки того, находится ли экземпляр любого звукового ресурса в паузе в вашей игре. Вы указываете звуковой ресурс для проверки из проводника активов, и функция вернет true if it is paused and false. - если это не так, хотя если вы отметите флаг "not", это изменится, и функция вернет true, если звук не приостановлен, и false в противном случае.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" имеет значение true, в то время как - любые действия, отброшенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Audio Is Paused Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
SoundЗвуковой ресурс для проверки
-

-

Пример:

-

Приведенный выше код блока действий проверяет, приостановлен ли данный звук в данный момент, и - если да, то возобновляет его воспроизведение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/If_Audio_Is_Playing.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/If_Audio_Is_Playing.htm index c4237bbc4..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/If_Audio_Is_Playing.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/If_Audio_Is_Playing.htm @@ -1,62 +0,0 @@ - - - - - - Если воспроизводится звук - - - - - - - - - - -

Если воспроизводится звук

-

Это действие можно использовать для проверки того, играет ли в данный момент в вашей игре какой-либо звуковой ресурс. Вы указываете звуковой ресурс для проверки из проводника активов, и функция вернет true if it is playing and false. - хотя если вы отметите флаг "not", это изменится, и функция вернет true, если звук не воспроизводится, и false в противном случае.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" оценивается в true, в то время как любые - действия, отброшенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Audio Is Playing Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
SoundЗвуковой ресурс для проверки
-

-

Пример:

-

Приведенный выше код блока действий проверяет, воспроизводится ли данный звук в настоящее время - и если да, то останавливает его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Pause_All_Audio.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Pause_All_Audio.htm index 1b4647951..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Pause_All_Audio.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Pause_All_Audio.htm @@ -1,43 +0,0 @@ - - - - - - Приостановить все аудио - - - - - - - - - - -

Приостановить все аудио

-

Это действие можно использовать для приостановки всех воспроизводимых в данный момент звуков, но это не приостановит воспроизведение звуков, воспроизводимых после вызова этого действия. Вы можете запустить их воспроизведение снова с помощью действия Resume All Audio.

-

-

Синтаксис действия:

-

Pause All Audio Icon

-

Пример:

-

Приведенный выше код блока действий проверит глобальную переменную, и если ее значение равно true, то весь звук будет приостановлен, в противном случае он будет возобновлен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Pause_Audio.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Pause_Audio.htm index 452a9a3b2..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Pause_Audio.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Pause_Audio.htm @@ -1,59 +0,0 @@ - - - - - - Приостановить аудио - - - - - - - - - - -

Приостановить аудио

-

Это действие можно использовать для приостановки выбранного звука, если он воспроизводится в данный момент. Обратите внимание, если воспроизводится несколько экземпляров одного и того же звука, все они будут поставлены на паузу. - вызвано. Запустить воспроизведение приостановленного звука можно с помощью действия Resume Audio.

-

-

Синтаксис действия:

-

Pause Audio Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
SoundЗвуковой ресурс для паузы
-

-

Пример:

-

Приведенный выше код блока действий проверяет глобальную переменную, и если ее значение равно true, то - данный звук будет приостановлен, в противном случае он будет возобновлен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Play_Audio.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Play_Audio.htm index 084466696..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Play_Audio.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Play_Audio.htm @@ -1,82 +0,0 @@ - - - - - - Воспроизвести аудио - - - - - - - - - - -

Воспроизвести аудио

-

Это действие включит воспроизведение заданного звука. Вы выбираете звук в Asset Explorer, а затем устанавливаете, будет ли звук зациклен или нет (зацикленный звук будет воспроизводиться снова и снова, пока не остановится), устанавливая флаг "Loop".

-

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

-

Окончательное значение усиления и высоты тона для воспроизводимого звука является произведением значений усиления и высоты тона, установленных для звукового актива. Значение смещения - это значение, указанное в поле "Смещение", или значение смещения воспроизводимого звукового актива, если поле оставлено пустым (см. пример 2).

-

Синтаксис действия:

-

Play Audio Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
SoundЗвуковой актив для воспроизведения
LoopЗацикливать звук или нет (по умолчанию выключено)
TargetЦелевая переменная для хранения возвращаемого значения
GainЗначение для множителя усиления (по умолчанию 1). Установленный здесь множитель усиления умножается на множитель усиления звукового актива.
OffsetВремя (в секундах) для установки начальной точки (по умолчанию 0). Значения, превышающие длину заданного звука, игнорируются.
- Если это поле оставлено пустым, используется смещение звукового актива (позиция дорожки).
PitchМножитель высоты тона (по умолчанию 1). Установленный здесь множитель усиления умножается на множитель усиления звукового актива.
-

-

Пример 1:

-

Приведенный выше код блока действий проверяет нажатие кнопки мыши, и если оно обнаружено, то проверяет глобальную переменную, чтобы убедиться, что она не true. Если это не true, то воспроизводится звук (и зацикливается) и глобальная переменная устанавливается в true, в противном случае звук останавливается и глобальная переменная устанавливается в false.
- Звук воспроизводится с настройками по умолчанию: коэффициент усиления и высоты тона 1 и смещение 0 (смещение по умолчанию звукового актива).

-

Пример 2:

-

Приведенный выше код блока действий сначала устанавливает позицию дорожки звукового актива "snd_MusicBoss" на 20 секунд. Затем он проверяет, установлена ли переменная экземпляра "skip_intro" в значение true. Если да, то начинается воспроизведение "snd_MusicBoss" с 20 секунды - значения позиции дорожки, установленного ранее (это происходит потому, что поле "Offset" оставлено пустым, поэтому используется смещение актива ). Первые 20 секунд аудио пропускаются.
- Если переменная экземпляра "skip_intro" установлена в false, то также начинается воспроизведение "snd_MusicBoss", но, поскольку "Offset" было установлено в 0, звук начнет воспроизводиться с самого начала. Позиция дорожки в 20 секунд, определенная ранее для звукового актива, игнорируется.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Resume_All_Audio.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Resume_All_Audio.htm index c9e7bfff2..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Resume_All_Audio.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Resume_All_Audio.htm @@ -1,44 +0,0 @@ - - - - - - Возобновить все аудиозаписи - - - - - - - - - - -

Возобновить все аудиозаписи

-

Это действие можно использовать для возобновления всех ранее приостановленных звуков, которые были приостановлены с помощью Pause Audio или Pause All Audio. Это действие не будет иметь эффекта на те звуки, которые не были приостановлены - ранее.

-

-

Синтаксис действия:

-

Resume All Audio Icon

-

Пример:

-

Приведенный выше код блока действий проверит глобальную переменную, и если ее значение равно true, то весь звук будет приостановлен, в противном случае он будет возобновлен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Resume_Audio.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Resume_Audio.htm index fd4f1233d..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Resume_Audio.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Resume_Audio.htm @@ -1,59 +0,0 @@ - - - - - - Резюме Аудио - - - - - - - - - - -

Резюме Аудио

-

Это действие можно использовать для возобновления ранее приостановленного звука. Это действие можно использовать для любого звука, который был приостановлен с помощью Pause Audio или Pause All Audio, и оно не влияет на те звуки, которые - которые не были приостановлены ранее.

-

-

Синтаксис действия:

-

Resume Audio Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
SoundВозобновление воспроизведения звукового ресурса
-

-

Пример:

-

Приведенный выше код блока действий проверяет глобальную переменную, и если ее значение равно true, то - данный звук будет приостановлен, в противном случае он будет возобновлен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Set_Audio_Pitch.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Set_Audio_Pitch.htm index 29ed6311e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Set_Audio_Pitch.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Set_Audio_Pitch.htm @@ -1,69 +0,0 @@ - - - - - - Настройка высоты звука - - - - - - - - - - -

Настройка высоты звука

-

Это действие можно использовать для установки высоты тона звука. Вы предоставляете звуковой актив из браузера активов, а затем задаете желаемую высоту тона для изменения, и все последующие экземпляры этого звука, которые вы воспроизводите, будут иметь измененную высоту тона. Это действие - не изменит высоту тона воспроизводимого в данный момент звука, поэтому его следует использовать до того, как вы примените к звуку действие Play Audio.

-

Значение высоты тона - это множитель высоты тона, то есть вводимое значение умножает текущую высоту тона на данное значение, поэтому значение по умолчанию 1 не изменяет высоту тона, а значение меньше 1 понижает высоту тона, а больше 1 повышает высоту тона. - Для этой функции лучше использовать небольшие приращения, так как значение меньше 0 или больше 5 может быть не слышно. Стоит отметить, что общее допустимое изменение высоты тона ограничено (1/256) - 256 октавами, поэтому любое значение больше или меньше этого не будет зарегистрировано. - зарегистрировано.

-

ПРИМЕЧАНИЕ: Значение зажима, указанное выше, это то, к чему GameMaker пытается привязать диапазон, но это значение не гарантируется на всех целевых платформах. iOS например, диапазон зажимается до (1/256) - 8, поэтому вам может потребоваться экспериментировать на каждой целевой платформе - и иметь разные версии звукового ресурса, каждая из которых предварительно сдвинута, если вам нужны более высокие или более низкие значения октавы.

-

-

Синтаксис действия:

-

Set Audio Pitch Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
SoundЗвуковой ресурс для установки высоты тона
pitchВысота тона для установки звука (по умолчанию 1)
-

-

Пример:

-

Приведенный выше код блока действий сначала получает высоту тона для заданного звука и сохраняет ее во временной - локальную переменную. Затем проверяется нажатие клавиши, и если оно обнаружено, то значение высоты тона проверяется на то, меньше ли оно 2. Если да, то звук останавливается, к переменной высоты тона добавляется 0,1, и затем эта переменная используется для установки высоты тона звука снова перед воспроизведением. - высоты тона звука перед его воспроизведением.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Set_Audio_Position.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Set_Audio_Position.htm index a8d757bac..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Set_Audio_Position.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Set_Audio_Position.htm @@ -1,66 +0,0 @@ - - - - - - Установите положение звука - - - - - - - - - - -

Установите положение звука

-

С помощью этого действия вы можете установить воспроизведение звука в определенное время. Вы указываете звук, который нужно воспроизвести, и время, с которого его нужно запустить, но это действие не будет воспроизводить звук за вас, оно просто установит позицию воспроизведения для звука. Чтобы использовать это действие - вы должны сначала установить позицию , а затем воспроизвести звук с помощью действия Play Audio, иначе позиция не изменится до следующего воспроизведения того же звукового ресурса (который начнется с новой позиции). - новой позиции). Позиция задается в секундах - вы можете использовать десятичные значения - и вы можете получить общую длину звука с помощью действия Get Audio Length, хотя если вы предоставите значение, превышающее длину - желаемого звука, оно будет обернуто, так что если длина звука составляет 10 секунд, а в качестве начальной позиции вы указали 12 секунд, звук начнется на 2-й секунде.

-

-

Синтаксис действия:

-

Set Audio Position Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
SoundЗвуковой ресурс для установки позиции воспроизведения
TimeВремя установки (в секундах)
-

-

Пример:

-

Приведенный выше код блока действий получает длительность воспроизведения заданного звукового ресурса и сохраняет ее - ее во временную локальную переменную. Затем она используется для генерации случайного значения от 0 до длины звука, которое затем сохраняется в другой временной локальной переменной. Это новое случайное значение затем используется для установки начальной позиции для - и звук воспроизводится.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Set_Audio_Volume.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Set_Audio_Volume.htm index 4d8053ddc..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Set_Audio_Volume.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Set_Audio_Volume.htm @@ -1,66 +0,0 @@ - - - - - - Настройка громкости звука - - - - - - - - - - -

Настройка громкости звука

-

С помощью этого действия можно установить громкость заданного звука. Вы выбираете звук в проводнике активов, а затем устанавливаете значение громкости. Громкость может быть от 0 (тихо) до 1 (полная громкость), шкала линейная, так что значение 0,5 означает половину громкости. Обратите внимание, что это действие повлияет на все экземпляры звука, которые воспроизводятся в данный момент в комнате, и повлияет на все будущие экземпляры воспроизводимого звука.

-

Поле "Время" определяет, через какое время изменение громкости вступит в силу. Значение 0 приводит к мгновенному изменению, в то время как большее значение будет постепенно изменять громкость в течение заданного количества миллисекунд.

-

-

Синтаксис действия:

-

Set Audio Volume Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
SoundЗвуковой ресурс для установки громкости
VolumeНовая громкость для звука (от 0 до 1, по умолчанию 1)
TimeКоличество времени, в течение которого будет уменьшаться громкость (в миллисекундах).
-

-

Пример:

-

Приведенный выше код блока действий проверяет глобальную переменную на предмет того, имеет ли она значение true или false. Если она равна true, то громкость данного звука извлекается и сохраняется во временной локальной переменной. Затем проверяется, не равно ли это значение 0,5, и если нет, то громкость звука уменьшается до 0,5 за 1000 миллисекунд (1 секунда). Если значение глобальной переменной равно false, то громкость звука устанавливается равной 1. Поскольку значение времени здесь установлено в 0, изменение громкости происходит немедленно.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Set_Master_Volume.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Set_Master_Volume.htm index aa3205afb..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Set_Master_Volume.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Set_Master_Volume.htm @@ -1,61 +0,0 @@ - - - - - - Установите мастер-громкость - - - - - - - - - - -

Установите мастер-громкость

-

С помощью этого действия вы можете установить громкость для всей звуковой системы. Значение громкости может быть от 0 (тихо) до 1 (полная громкость), шкала линейная, так что значение 0,5 означает половину громкости. Обратите внимание, что это действие повлияет на все - экземпляры всех звуков, воспроизводимых в данный момент в комнате, и повлияет на все будущие экземпляры всех воспроизводимых звуков. Это действие также не зависит от громкости, установленной для каждого отдельного звука, поэтому если вы настроили звук на воспроизведение с громкостью 0,5 - и затем установить главную громкость на 0,5, звук будет воспроизводиться с громкостью 0,25.

-

-

Синтаксис действия:

-

Set Master Volume Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
VolumeНовая основная громкость для всех звуков (от 0 до 1, по умолчанию 1)
-

-

Пример:

-

Приведенный выше код блока действий проверяет глобальную переменную, чтобы узнать, является ли она true или - false. Если она равна true, то извлекается значение основной громкости звуковой системы и сохраняется во временной локальной переменной. Затем проверяется, не равно ли это значение 0,5, и если это не так, то основная громкость звуковой системы - устанавливается на 0,5. Если значение глобальной переменной равно false, то основная громкость устанавливается равной 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Stop_All_Audio.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Stop_All_Audio.htm index 5fbefff84..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Stop_All_Audio.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Stop_All_Audio.htm @@ -1,46 +0,0 @@ - - - - - - Остановить все аудио - - - - - - - - - - -

Остановить все аудио

-

Это действие можно использовать для остановки всего воспроизводимого аудио (обратите внимание, что даже если аудио отмечено как приостановленное, оно будет остановлено с помощью этой функции, и вы не сможете возобновить его позже).

-

-

Синтаксис действия:

-

Stop All Audio Icon

-

-

Пример:

-

Приведенный выше код блока действий проверяет нажатие кнопки мыши, и если оно обнаружено, то проверяет - глобальную переменную, чтобы убедиться, что она не истинна. Если это не так, то воспроизводится звук, а глобальная переменная устанавливается в true, в противном случае все звуки останавливаются, а глобальная переменная устанавливается в false.

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Stop_Audio.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Stop_Audio.htm index d3f23e7e6..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Stop_Audio.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Audio/Stop_Audio.htm @@ -1,58 +0,0 @@ - - - - - - Остановить аудио - - - - - - - - - - -

Остановить аудио

-

Это действие можно использовать для остановки воспроизведения звука. Вы выбираете звук в проводнике активов, и все экземпляры этого звука прекращают воспроизведение (так, если вы установили один и тот же звук для воспроизведения в трех разных событиях, все они будут остановлены).

-

-

Синтаксис действия:

-

Stop Audio Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
SoundЗвуковой ресурс для остановки
-

-

Пример:

-

Приведенный выше код блока действий проверяет наличие нажатия кнопки мыши, и если оно обнаружено, то проверяет - глобальную переменную, чтобы убедиться, что она не истинна. Если она не истинна, то воспроизводится звук (и зацикливается), а глобальная переменная устанавливается в true, в противном случае звук останавливается, а глобальная переменная устанавливается в false.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Buffer_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Buffer_Actions.htm index c6f9641f4..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Buffer_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Buffer_Actions.htm @@ -1,112 +0,0 @@ - - - - - - Действия буфера - - - - - - - - - - -

Библиотека действий буферов

-

Buffers Action Library

-

Буфер - это область физической памяти, используемая для временного хранения данных, пока они перемещаются из одного места в другое или манипулируются каким-либо образом, например, вы можете использовать буфер для хранения данных состояния игры. В GameMaker есть ряд специфических действий, связанных с созданием, изменением и загрузкой/сохранением буферов, но перед их использованием обратите внимание на следующие моменты:

- -

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

-

На следующей странице более подробно объясняется, как работают буферы в контексте GameMaker, и приводится пара примеров кода GML:

- -

Библиотека Buffer имеет следующие действия:

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create Buffer IconСоздать буфер
Copy Buffer IconБуфер копирования
Delete Buffer IconУдалить буфер
Read Buffer IconБуфер чтения
Write Buffer IconБуфер записи
Seek Buffer IconБуфер поиска
Get Buffer Size IconПолучить размер буфера
Get Buffer Position IconПолучить положение буфера
If Buffer Exists IconЕсли буфер существует
If End Of Buffer IconIf End Of Buffer
-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Copy_Buffer.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Copy_Buffer.htm index 598e6a984..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Copy_Buffer.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Copy_Buffer.htm @@ -1,64 +0,0 @@ - - - - - - Буфер копирования - - - - - - - - - - -

Буфер копирования

-

Это действие можно использовать для копирования всех данных, хранящихся в одном буфере, в другой. При использовании двух буферов и копировании из одного в другой оба буфера должны быть предварительно созданы с помощью действия Create Buffer, - а в качестве аргументов "от" и "до" указываются уникальные идентификаторы буферов.

-

ПРИМЕЧАНИЕ: Копирование в один и тот же буфер невозможно.

-

-

Синтаксис действия:

-

Copy Buffer Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
BufferИндекс буфера (хранится в переменной) для копирования из
Copy ToИндекс буфера (хранится в переменной) для копирования в
-

-

Пример:

-

Приведенный выше код блока действий создаст новый буфер и сохранит его ID во временной переменной. - Затем он проверяет, существует ли буфер, индексированный в данной глобальной переменной, и если существует, то он копируется во временный буфер, а позиция чтения/записи сбрасывается на начало, а если не существует, то он создается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Create_Buffer.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Create_Buffer.htm index bb5d06700..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Create_Buffer.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Create_Buffer.htm @@ -1,67 +0,0 @@ - - - - - - Создать буфер - - - - - - - - - - -

Создать буфер

-

Это действие можно использовать для выделения части памяти под буфер в вашей игре, при этом функция возвращает уникальное значение идентификатора буфера, которое должно храниться в переменной и использоваться для всех последующих обращений к буферу. Вы можете предоставить - глобальную переменную, переменную экземпляра или попросить функцию создать временную локальную переменную для хранения идентификатора буфера. Обратите внимание, что вы можете создавать дополнительные буферы, нажав на значок плюса рядом с - и выбрать другую переменную для хранения идентификатора буфера.

-

ПРИМЕЧАНИЕ: Важно, чтобы вы удаляли из памяти любые динамически созданные ресурсы, подобные этому, когда они вам больше не нужны, чтобы предотвратить утечку памяти, поэтому, когда вы закончите работу с созданным буфером, вы должны освободить его снова - используя действие Delete Buffer (например, в событии Other - Clean Up ). Это особенно важно помнить при использовании временной локальной - переменную, так как если вы не удалите буфер до окончания события или сценария действия, то вы больше не сможете получить к нему доступ, и в дальнейшем могут возникнуть проблемы.

-

-

Синтаксис действия:

-

Create Buffer Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
BufferИндекс буфера (хранится в переменной)
ValueЗначение для добавления в список
-

-

Пример:

-

Приведенный выше код блока действий создает глобальную переменную, а затем буфер, присваивая уникальный - идентификатор буфера переменной. Затем в этот буфер записываются два фрагмента данных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Delete_Buffer.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Delete_Buffer.htm index 457ef4839..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Delete_Buffer.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Delete_Buffer.htm @@ -1,60 +0,0 @@ - - - - - - Удалить буфер - - - - - - - - - - -

Удалить буфер

-

Это действие можно использовать для удаления буфера из памяти, освобождая ресурсы, использованные для его создания, и удаляя любые данные, которые он может содержать в данный момент. Вы предоставляете уникальное значение ID буфера, возвращаемое действием Создать буфер. - Обратите внимание, что вы можете выбрать несколько буферов для удаления, нажав на значок плюса рядом с действием и добавив - еще один идентификатор буфера.

-

ПРИМЕЧАНИЕ: Важно всегда удалять любые динамически создаваемые ресурсы из памяти, когда они больше не нужны, чтобы предотвратить утечку памяти.

-

-

Синтаксис действия:

-

Delete Buffer Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
BufferИндекс буфера (хранится в переменной)
-

-

Пример:

-

Приведенный выше код блока действий проверяет, существует ли буфер, и если существует, то он удаляется.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Get_Buffer_Position.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Get_Buffer_Position.htm index 5365af316..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Get_Buffer_Position.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Get_Buffer_Position.htm @@ -1,64 +0,0 @@ - - - - - - Получить положение буфера - - - - - - - - - - -

Получить положение буфера

-

Это действие можно использовать для получения текущей позиции для чтения/записи в буфер. Когда вы создаете буфер, позиция чтения/записи устанавливается на 0 байт, и по мере добавления данных в буфер эта позиция будет последовательно перемещаться, что означает, что - вы можете использовать это действие для получения количества байт в буфере, на которое он установлен в любой момент времени. Вы предоставляете уникальное значение ID буфера, возвращаемое действием Create Buffer, а затем указываете целевую переменную для возврата - значение позиции. Целевая переменная может быть помечена как временная локальная переменная, в этом случае она будет создана для вас и удалена из памяти в конце текущего сценария действия или события.

-

-

Синтаксис действия:

-

Get Buffer Position Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
BufferИндекс буфера (хранится в переменной)
PositionПозиция чтения/записи (в байтах) в буфере
-

-

Пример:

-

Приведенный выше код блока действий получает позицию чтения/записи для данного буфера - и если она не равна 0 (т.е. находится в начале буфера), то она устанавливается в начало буфера.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Get_Buffer_Size.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Get_Buffer_Size.htm index 248b1a0d9..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Get_Buffer_Size.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Get_Buffer_Size.htm @@ -1,63 +0,0 @@ - - - - - - Получить размер буфера - - - - - - - - - - -

Получить размер буфера

-

Это действие можно использовать для получения размера буфера в байтах. Вы предоставляете уникальное значение ID буфера, возвращаемое действием Create Buffer, а затем указываете целевую переменную для возврата значения размера. Цель - может быть помечена как временная локальная переменная, в этом случае она будет создана для вас и удалена из памяти в конце текущего сценария действия или события.

-

-

Синтаксис действия:

-

Get Buffer Size Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
BufferИндекс буфера (хранится в переменной)
TargetЦелевая переменная для хранения возвращаемого значения
-

-

Пример:

-

Приведенный выше код блока действий получает размер буфера и затем использует это значение для установки - чтения/записи в конец текущих сохраненных данных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/If_Buffer_Exists.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/If_Buffer_Exists.htm index 6b15decac..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/If_Buffer_Exists.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/If_Buffer_Exists.htm @@ -1,60 +0,0 @@ - - - - - - Если буфер существует - - - - - - - - - - -

Если буфер существует

-

Это действие можно использовать для проверки того, действителен ли заданный идентификатор буфера и существует ли буфер в памяти. Если идентификатор буфера действителен и существует, действие вернет true, в противном случае оно вернет false. Вы можете установить флаг "not" - для того, чтобы действие проверяло, не существует ли буфер.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

If Buffer Exists Icon

-

-

Синтаксис действия:

-

Buffer Exists drop actions

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
BufferИндекс буфера (хранится в переменной)
-

-

Пример:

-

Приведенный выше код блока действий проверяет, существует ли буфер, и если существует, то он удаляется.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/If_End_Of_Buffer.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/If_End_Of_Buffer.htm index 201ddb8f5..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/If_End_Of_Buffer.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/If_End_Of_Buffer.htm @@ -1,60 +0,0 @@ - - - - - - If End Of Buffer - - - - - - - - - - -

If End Of Buffer

-

Это действие можно использовать для проверки того, достигла ли позиция чтения/записи конца буфера. Вы указываете уникальное значение ID буфера, возвращаемое действием Create Buffer, а затем действие возвращает true, если позиция чтения/записи достигла конца всех доступных данных в буфере, или false, если нет. Вы можете установить флаг "not", чтобы действие проверяло, не находится ли позиция чтения/записи в конце буфера.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

If End Of Buffer Icon

-

-

Синтаксис действия:

-

End Of Buffer drop actions

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
BufferИндекс буфера (хранится в переменной)
-

-

Пример:

-

Приведенный выше код блока действий создает список DS в экземпляре и затем циклически просматривает - данные в заданном буфере, считывая их и добавляя в список. Это продолжается до тех пор, пока не будет достигнут конец буфера, после чего цикл прерывается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Read_Buffer.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Read_Buffer.htm index 3becd1f76..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Read_Buffer.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Read_Buffer.htm @@ -1,64 +0,0 @@ - - - - - - Буфер чтения - - - - - - - - - - -

Буфер чтения

-

Это действие можно использовать для чтения данных из ранее созданного буфера. Вы предоставляете уникальное значение ID буфера (возвращаемое действием Create Buffer) и указываете переменную для хранения возвращаемого значения. Если вы отметите переменную - как временную локальную переменную, то она будет создана для вас и отброшена в конце события или сценария действия. Все данные возвращаются в виде строки, поэтому если вы храните какие-либо реальные числа, вам придется использовать одно из действий типа данных, чтобы преобразовать их из строки в значение. Следует также помнить, что буферы считываются и записываются последовательно, поэтому при чтении из буфера позиция "seek" будет перемещаться на следующую запись, а это значит, что для чтения различных частей данных - вы просто вызываете это действие необходимое количество раз и сохраняете каждый возвращенный фрагмент данных в переменную.

-

-

Синтаксис действия:

-

Read Buffer Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
BufferИндекс буфера (хранится в переменной)
TargetЦелевая переменная для хранения возвращенных данных
-

-

Пример:

-

Приведенный выше код блока действий устанавливает позицию чтения/записи буфера в начало буфера и - затем считывает два фрагмента данных, сохраняя их (в виде строк) во временных локальных переменных. Эти переменные затем используются для вывода данных на экран.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Seek_Buffer.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Seek_Buffer.htm index f390ffca7..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Seek_Buffer.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Seek_Buffer.htm @@ -1,64 +0,0 @@ - - - - - - Буфер поиска - - - - - - - - - - -

Буфер поиска

-

Это действие можно использовать для перемещения (поиска) к позиции в буфере. Вы указываете уникальное значение ID буфера, возвращаемое действием Create Buffer, а затем значение смещения в байтах для перемещения. Значение смещения будет - будет применяться от начала буфера, поэтому вызов этой функции переместит позицию чтения/записи в начало буфера, затем переместит на заданное количество байт и установит новую позицию чтения/записи. Однако, если вы отметите - смещение как относительное, то позиция чтения/записи будет перемещена вперед (или назад, если смещение отрицательное) от текущей позиции.

-

-

Синтаксис действия:

-

Seek Buffer Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
BufferИндекс буфера (хранится в переменной)
offsetСмещение (в байтах) относительно текущей позиции поиска
-

-

Пример:

-

Приведенный выше код блока действий получает размер буфера, а затем использует это значение для установки позиции чтения/записи - в конец текущих сохраненных данных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Write_Buffer.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Write_Buffer.htm index b934bbdbf..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Write_Buffer.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Buffers/Write_Buffer.htm @@ -1,65 +0,0 @@ - - - - - - Буфер записи - - - - - - - - - - -

Буфер записи

-

Это действие можно использовать для записи данных в буфер. Вы указываете уникальный идентификатор буфера для записи (возвращаемый действием Create Buffer), а затем значение для записи, которое может быть либо вещественным, либо строковым, но обратите внимание, что - все значения хранятся как строки, поэтому при чтении из буфера (с помощью Read Buffer) вам может понадобиться использовать одно из действий типа данных, чтобы преобразовать его из строки - обратно в исходное значение. Помните также, что буферы считываются и записываются последовательно, поэтому при записи в буфер позиция "seek" сдвигается на одну позицию, а это значит, что для записи различных фрагментов данных вы просто вызываете это действие - необходимое количество раз.

-

-

Синтаксис действия:

-

Write Buffer Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
BufferИндекс буфера (хранится в переменной)
ValueЗначение для добавления в буфер
-

-

Пример:

-

Приведенный выше код блока действий создает глобальную переменную, а затем буфер, присваивая уникальный - идентификатор буфера переменной. Затем в этот буфер записываются два фрагмента данных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Cameras/Camera_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Cameras/Camera_Actions.htm index d9d94c82e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Cameras/Camera_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Cameras/Camera_Actions.htm @@ -1,59 +0,0 @@ - - - - - - Действия камеры - - - - - - - - - - -

Библиотека действий с камерой

-

Сайт Cameras содержит действия, связанные с установкой различных переменных, связанных с видом камеры. Камера - это точка в помещении, из которой просматривается помещение, а вид камеры - это то, что что видит камера (и что рисуется на экране). Эти действия позволяют манипулировать различными частями вида камеры и определять области комнаты для отображения с помощью позиции вида или размера вида, а также нескольких других основных функций.

-

Доступны следующие действия:

-

- - - - - - - - - - - -
Camera Action LibraryУстановить переменную вида
Set View Variable IconПолучить переменную вида
-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Cameras/Get_View_Variable.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Cameras/Get_View_Variable.htm index f349d8358..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Cameras/Get_View_Variable.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Cameras/Get_View_Variable.htm @@ -1,104 +0,0 @@ - - - - - - Получить переменную вида - - - - - - - - - - -

Получить переменную вида

-

Это действие позволяет получить значение определенных встроенных переменных, связанных с данным портом представления. Вы выбираете переменную порта представления для получения, затем указываете порт представления для цели (от 0 до 7) и, наконец, целевую переменную для хранения возвращаемого значения (она может быть отмечена как временная локальная переменная). - (она может быть помечена как временная локальная переменная). Порт просмотра - это область экрана, которая будет использоваться для отрисовки данного вида камеры (как установлено в редакторе комнаты), и различные переменные, которые вы можете получить таким образом. - приведены в таблице ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПеременнаяОписание
CameraВозвращаемое значение будет уникальным значением ID камеры, назначенной порту (см. здесь для получения дополнительной информации).
VisibilityЭто вернет значение true или false, где true означает, что порт просмотра виден (т.е. выводится на экран), а false означает, что ничего не выводится.
View Port X CoordinateЭто X-положение порта просмотра в игровом окне.
View Port Y CoordinateЭто положение по оси Y порта просмотра в игровом окне.
View Port WidthЭто ширина (в пикселях) порта просмотра.
View Port HeightЭто высота (в пикселях) порта просмотра.
View Port Surface IDЭто вернет уникальное значение ID для поверхности, назначенной порту просмотра, или -1, если поверхность не была назначена.
-

-

Синтаксис действия:

-

Get View Variable Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
VariableВстроенная переменная представления для получения
ViewПорт просмотра, на который будет нацелено представление (от 0 до 7)
TargetЦелевая переменная для хранения возвращаемого значения (может быть помечена как временная локальная переменная)
-

-

Пример:

-

Приведенный выше код блока действий получает идентификатор текущей камеры, присвоенный порту просмотра - port [0], а затем проверяет, совпадает ли он с тем, который хранится в глобальной переменной. Если нет, то камера устанавливается на новую.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Cameras/Set_View_Variable.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Cameras/Set_View_Variable.htm index 3d1869504..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Cameras/Set_View_Variable.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Cameras/Set_View_Variable.htm @@ -1,111 +0,0 @@ - - - - - Установить переменную вида - - - - - - - - - - -

Установить переменную вида

-

Это действие позволяет установить определенные встроенные переменные, связанные с тем, как порт просмотра будет отображать вид камеры на комнату. Вы выбираете переменную порта просмотра для редактирования, затем задаете цель порта просмотра (от 0 до 7) и, наконец, новое значение - для переменной. Порт просмотра - это область экрана, которая будет использоваться для рисования данного вида камеры (как установлено в редакторе помещения), и различные переменные, которые вы можете установить таким образом, описаны в таблице ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПеременнаяОписание
CameraЭта функция предназначена для настройки области просмотра для отображения другого вида камеры. Вам необходимо ввести уникальное значение ID камеры, на которую нужно перейти (см. здесь - более подробную информацию).
VisibilityЭто переключатель видимости для порта просмотра и ожидает значения true или false, где установка значения true сделает порт просмотра видимым (т.е. он будет рисовать на экране), а значение false не будет рисовать ничего на экране. - ничего на экран.
View Port X CoordinateЭто X-положение порта просмотра в игровом окне. Обратите внимание, что это значение действительно необходимо, только когда активно более одного порта просмотра - например, для создания эффекта разделенного экрана - и если оно используется, когда активен только один порт, вы получите - неожиданные результаты.
View Port Y CoordinateЭто позиция Y порта просмотра в игровом окне. Обратите внимание, что это значение действительно необходимо, только когда активно более одного порта просмотра - например, для создания эффекта разделенного экрана - и если оно используется, когда активен только один порт, вы получите - неожиданные результаты.
View Port WidthЭто ширина (в пикселях) порта просмотра. Ширина порта просмотра (или комбинированных портов просмотра, если активны несколько портов) определяет ширину игрового окна или фонового холста в начале игры, поэтому изменение этого значения после начала игры не окажет видимого влияния на размер игрового окна, если не вызвать функцию . - не окажет видимого влияния на размер игрового окна, если только не будет вызвано вместе с функцией GML. window_set_size(). - Также обратите внимание, что если у вас размер порта больше или меньше, чем назначенный для камеры, то вид камеры будет уменьшен или увеличен для соответствия.
View Port HeightЭто высота (в пикселях) порта просмотра. Высота порта просмотра (или комбинированных портов просмотра, если активны несколько портов) определяет высоту игрового окна или фонового холста в начале игры, поэтому изменение этого значения после того, как - после начала игры не окажет видимого влияния на размер игрового окна, если только не будет вызвано вместе с функцией GML. window_set_size(). - Также обратите внимание, что если у вас размер порта больше или меньше, чем тот, который назначен для вида камеры, то вид камеры будет уменьшен или увеличен, чтобы соответствовать ему.
View Port Surface IDС помощью этой переменной вы можете установить содержимое данного видового порта для отрисовки на поверхность, причем значение, которое вы предоставите, будет значением поверхности, на которую будет отрисовываться видовой порт. Для получения дополнительной информации смотрите здесь.
-

-

Синтаксис действия:

-

Set View Variable Icon

-

Аргументы:

-

- - - - - - - - - - - - - - - - - - - -
АргументОписание
VariableВстроенная переменная представления для установки
ViewПорт просмотра, на который будет нацелено представление (от 0 до 7)
ValueНовое значение для встроенной переменной
-

-

Пример:

-

Приведенный выше код блока действий будет проверять нажатие клавиши, и если оно будет обнаружено, то он - сделает порт просмотра [0] видимым, в противном случае он станет невидимым.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/Collision_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/Collision_Actions.htm index 267572ac6..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/Collision_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/Collision_Actions.htm @@ -1,66 +0,0 @@ - - - - - - Действия при столкновении - - - - - - - - - - -

Библиотека действий при столкновении

-

Collision Action Library

-

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

- - - - - - - - - - - - - - - - - - - -
If Any Object At Place IconЕсли какой-либо объект на месте
If Object At Place IconЕсли объект на месте
If Collision Shape IconЕсли форма столкновения
If Collision Point IconЕсли точка столкновения
-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/If_Any_Object_At_Place.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/If_Any_Object_At_Place.htm index ef5749cd7..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/If_Any_Object_At_Place.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/If_Any_Object_At_Place.htm @@ -1,67 +0,0 @@ - - - - - - Если какой-либо объект на месте - - - - - - - - - - -

Если какой-либо объект на месте

-

Это действие используется для проверки наличия экземпляра любого объекта, расположенного в позиции, основанной на маске столкновений вызывающего экземпляра. Вы задаете позицию, которая может быть абсолютной позицией или позицией относительно экземпляра, - и действие вернет true, если столкновение есть, или false, если его нет. Вы также можете установить флаг "Not", чтобы проверить, нет ли столкновения в данной позиции, и тогда действие вернет true, если столкновений не обнаружено, и false в противном случае. Столкновения рассчитываются на основе маски столкновений вызывающего экземпляра, перекрывающей маску столкновений любого экземпляра в данной позиции (как если бы он был "помещен" в данную позицию).

-

ВАЖНО! Столкновения будут регистрироваться только для тех экземпляров, которые имеют действительную маску столкновения, т.е. у них есть sprite, назначенный на sprite_index, или sprite, назначенный на mask_index. Если у одного из экземпляров, участвующих в столкновении, нет маски столкновения, то столкновение не будет обнаружено, независимо от того, какой экземпляр рисуется в данный момент. - столкновения не имеет маски столкновения, то столкновение не будет обнаружено, независимо от того, что рисует экземпляр в это время.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

If Any Object At Place Icon

-

-

Синтаксис действия:

-

If Any Object At Place drop actions

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
xПозиция x для проверки
yПозиция y для проверки
-

-

Пример:

-

Приведенный выше код блока действий проверяет наличие коллизии в позиции, куда помещен экземпляр - и если таковая найдена, то смешивает экземпляр с красным цветом, в противном случае смешивание остается обычным (белым).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/If_Collision_Point.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/If_Collision_Point.htm index 19da1c32e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/If_Collision_Point.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/If_Collision_Point.htm @@ -1,104 +0,0 @@ - - - - - - Если точка столкновения - - - - - - - - - - -

Если точка столкновения

-

Это действие используется для проверки наличия столкновения с одним или несколькими экземплярами данного объекта в определенной точке комнаты и оценивается как true, если столкновение обнаружено, или false в противном случае. Вы задаете объект - для проверки и позицию для проверки - которая может быть абсолютной позицией в комнате или позицией относительно экземпляра - и вы также можете установить флаг Not, чтобы проверить, нет ли столкновения в данной позиции, то есть - что действие будет оценено как true только в том случае, если столкновений не обнаружено, в противном случае оно будет оценено как false. Можно также установить опцию Exclude Self, чтобы исключить вызывающий экземпляр из проверки столкновений.

-

Далее вы можете установить/отметить опцию Возвращать список. Установка флажка означает, что действие создаст и заполнит список структурой данных со всеми экземплярами в столкновении - с точкой и установит переменную Target в идентификатор списка DS. Если флажок не установлен, то переменная Target будет иметь значение меньше 0, только если столкновение не обнаружено, или уникальное значение ID одного из столкнувшихся экземпляров. - (обратите внимание, что если в столкновении участвуют несколько экземпляров, то у вас нет возможности узнать, какой ID экземпляра будет возвращен, если не используется список).

-

Если вы выбрали возврат списка - и переменная Target не установлена в Temp - то вы также можете выбрать опцию Free Target. Если установлено значение true, то список, содержащийся в переменной target, будет уничтожен и - новый список будет создан (и возвращен в переменную target) каждый раз, когда вы вызываете действие. Таким образом, вы можете повторно использовать одну и ту же переменную, не беспокоясь об утечке памяти, поскольку, если вы не отметите опцию Free Target, вы становитесь ответственным за то, что - за уничтожение списка перед повторным использованием переменной в действии. Обратите внимание, что независимо от того, отмечена эта опция или нет, если вы установили действие на Return List, то переменная target всегда будет содержать идентификатор списка, - и, как таковая, она должна быть освобождена при уничтожении экземпляра или завершении работы комнаты (для этого можно использовать событие Clean Up, например, вместе с действием Free Data Structure ). - Стоит отметить, что вы можете установить опцию Free Target на использование предопределенной переменной или выражения и таким образом контролировать момент освобождения структуры данных списка, устанавливая переменную в другом месте (или используя различные результаты для выражения) - до тех пор, пока оно оценивается как true/false.

-

Наконец, вы указываете переменную Target, которая будет содержать возвращаемое значение или ID списка. Если вы отметите переменную Target для хранения возвращаемого значения как Temp (локальную) переменную, то действие создаст эту переменную для хранения возвращаемого значения только до конца события. - В этом случае опция Free Target ничего не делает, и вы будете ответственны за уничтожение списка DS, если эта опция была отмечена. Если переменная цели не задана, а опция Return List отмечена, список не будет создан.

-

ВАЖНО! Столкновения будут регистрироваться только для тех экземпляров, которые имеют действительную маску столкновения, т.е. у них есть sprite, назначенный на sprite_index, или sprite, назначенный на mask_index. Если у экземпляров объекта, который проверяется в этом действии, нет маски столкновения, то столкновение будет обнаружено независимо от того, что рисует экземпляр в данный момент. - не имеют маски столкновения, то столкновение не будет обнаружено, независимо от того, что рисует экземпляр в данный момент.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

If Collision Point Icon

-

-

Синтаксис действия:

-

If Collision Point drop actions

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
ShapeФорма для использования
ObjectОбъект для проверки на наличие экземпляров
x1Позиция x, с которой нужно начинать
y1Позиция y, с которой нужно начинать
x2Позиция x, на которой нужно закончить
y2Позиция y, на которой нужно закончить
Free TargetМожет быть задана переменная или выражение, или установлено значение true/false для управления освобождением памяти списка при повторном использовании переменной списка.
TargetПеременная, на которую будет нацелено возвращаемое значение действия
-

-

Пример:

-

Приведенный выше код блока действий проверяет наличие столкновения в позиции мыши x/y с экземпляром - объекта "obj_Enemy". Если найдено одно (или несколько) столкновений, создается эффект в позиции экземпляра с идентификатором, хранящимся в переменной Target, а затем экземпляр уничтожается. Если столкновение не найдено, создается другой - эффект создается в позиции мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/If_Collision_Shape.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/If_Collision_Shape.htm index 76b03a90f..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/If_Collision_Shape.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/If_Collision_Shape.htm @@ -1,109 +0,0 @@ - - - - - - Если форма столкновения - - - - - - - - - - -

Если форма столкновения

-

Это действие используется для проверки наличия столкновения с экземпляром заданного объекта в области заданной формы или вдоль линии. Вы указываете форму (прямоугольник, эллипс или линия), объект для проверки, а затем задаете координаты для - верхнего левого и нижнего правого углов используемой фигуры, или, в случае линии, начального и конечного положения. Это могут быть абсолютные позиции в пределах игровой комнаты или позиции относительно экземпляра, выполняющего действие. Вы можете увидеть, как - это работает на изображении ниже:

-

Как вы можете видеть, результаты будут зависеть от маски столкновений проверяемого экземпляра. - то есть экземпляр искомого объекта должен иметь sprite, назначенный на sprite_index, или sprite, назначенный на mask_index. Если это не так, то он не будет обнаружен этими функциями, - независимо от того, рисует ли он sprite или нет. Стоит отметить, что любой экземпляр, который полностью попадает в границы, установленные для формы эллипса или прямоугольника, также вернет столкновение. Действие будет оценено в true, если - столкновение обнаружено, или false в противном случае, хотя вы также можете установить флаг Not, чтобы проверить, нет ли столкновения с данной областью фигуры, и тогда действие будет оцениваться как true, если столкновений не обнаружено. - в противном случае оно будет оцениваться как false. Вы также можете установить опцию Exclude Self, чтобы исключить вызывающий экземпляр из проверки столкновений.

-

Далее вы можете установить/отметить опцию Возвращать список. Установка флажка означает, что действие создаст и заполнит список структурой данных со всеми экземплярамив столкновении - с фигурой и установит переменную Target в идентификатор списка DS. Если флажок не установлен, то переменная Target будет установлена в значение меньше 0 только в том случае, если столкновение не обнаружено, или в уникальное значение ID одного из столкнувшихся экземпляров. - (обратите внимание, что если в столкновении участвуют несколько экземпляров, то у вас нет возможности узнать, какой ID экземпляра будет возвращен, если не используется список).

-

Если вы выбрали возврат списка - и переменная Target не установлена в Temp - то вы также можете выбрать опцию Free Target. Если установлено значение true, то список, содержащийся в переменной target, будет уничтожен и - новый список будет создан (и возвращен в переменную target) каждый раз, когда вы вызываете действие. Таким образом, вы можете повторно использовать одну и ту же переменную, не беспокоясь об утечке памяти, поскольку, если вы не отметите опцию Free Target, вы становитесь ответственным за то, что - за уничтожение списка перед повторным использованием переменной в действии. Обратите внимание, что независимо от того, отмечена эта опция или нет, если вы установили действие на Return List, то переменная target всегда будет содержать идентификатор списка, - и как таковая, она должна быть освобождена при уничтожении экземпляра или завершении комнаты (для этого можно использовать событие Очистка событие, например, вместе с действием Free Data Structure ). - Стоит отметить, что вы можете установить опцию Free Target на использование предопределенной переменной или выражения и таким образом контролировать, когда структура данных списка будет освобождена, установив переменную в другом месте (или используя различные результаты для выражения) - до тех пор, пока оно оценивается как true/false.

-

Наконец, вы указываете переменную Target, которая будет содержать возвращаемое значение или ID списка. Если вы отметите переменную Target для хранения возвращаемого значения как Temp (локальную) переменную, то действие создаст эту переменную для хранения возвращаемого значения только до конца события. - В этом случае опция Free Target ничего не делает, и вы будете ответственны за уничтожение списка DS, если эта опция была отмечена. Если переменная цели не задана, а опция Return List отмечена, список не будет создан.

-

ВАЖНО! Столкновения будут регистрироваться только для тех экземпляров, которые имеют действительную маску столкновения, т.е. у них есть sprite, назначенный на sprite_index, или sprite, назначенный на mask_index. Если у экземпляров объекта, который проверяется в этом действии, нет маски столкновения, то столкновение будет обнаружено независимо от того, что рисует экземпляр в данный момент. - не имеют маски столкновения, то столкновение не будет обнаружено, независимо от того, что в данный момент рисует экземпляр.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

If Collision Shape Icon

-

-

Синтаксис действия:

-

Example of different collision shapes

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
ShapeФорма для использования
ObjectОбъект для проверки на наличие экземпляров
x1Позиция x, с которой нужно начинать
y1Позиция y, с которой нужно начинать
x2Позиция x, на которой нужно закончить
y2Позиция y, на которой нужно закончить
Free TargetМожет быть задана переменная или выражение, или установлено значение true/false для управления освобождением памяти списка при повторном использовании переменной списка.
TargetПеременная, на которую будет нацелено возвращаемое значение действия
-

-

Пример:

-

Приведенный выше код блока действий проверяет столкновение с любыми экземплярами объекта " - obj_Enemy" в радиусе 100px вокруг позиции вызывающего экземпляра. Действие генерирует список всех экземпляров, с которыми обнаружено столкновение, и сохраняет идентификатор списка в переменной Target. Если действие оценивается как - true то список просматривается по циклу и у каждого экземпляра с его ID, сохраненным в списке, переменная "hp" уменьшается на 1. Затем список DS освобождается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/If_Object_At_Place.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/If_Object_At_Place.htm index 1676795dc..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/If_Object_At_Place.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/If_Object_At_Place.htm @@ -1,89 +0,0 @@ - - - - - - Если объект на месте - - - - - - - - - - -

Если объект на месте

-

Это действие используется для проверки и определения наличия столкновения с одним или несколькими экземплярами данного объекта с текущим экземпляром, помещенным в точку комнаты, на основе маски столкновения вызывающего экземпляра. Действие будет иметь значение true, если обнаружено столкновение, или false в противном случае. Вы указываете объект для проверки и позицию для "размещения" экземпляра для выполнения проверки - это может быть абсолютная позиция в комнате или позиция относительно экземпляра. - - можно также установить флаг Not, чтобы проверить, нет ли столкновения в данной позиции, в этом случае действие будет оценено как true, если столкновений не обнаружено, в противном случае оно будет оценено как false.

-

После указания объекта и позиции вы можете установить/отметить опцию Возвращать список. Установка этого флажка означает, что действие создаст и заполнит структуру данных list со - все экземпляры, столкнувшиеся с данным экземпляром, и установит переменную Target в идентификатор списка DS. Если флажок снят, то переменная Target будет установлена в значение меньше 0, только если столкновение не обнаружено, или в уникальное значение ID одного из столкнувшихся экземпляров (обратите внимание, что если столкнулись несколько экземпляров, то у вас нет возможности узнать, какой ID экземпляра будет возвращен, если не используется список).

-

Если вы выбрали возврат списка - и переменная Target не установлена в Temp - то вы также можете выбрать опцию Free Target. Если установлено значение true, то список, содержащийся в переменной target, будет уничтожен и - новый список будет создан (и возвращен в переменную target) каждый раз, когда вы вызываете действие. Таким образом, вы можете повторно использовать одну и ту же переменную, не беспокоясь об утечке памяти, поскольку, если вы не отметите опцию Free Target, вы становитесь ответственным за то, что - за уничтожение списка перед повторным использованием переменной в действии. Обратите внимание, что независимо от того, отмечена эта опция или нет, если вы установили действие на Return List, то переменная target всегда будет содержать идентификатор списка, - и как таковая, она должна быть освобождена при уничтожении экземпляра или завершении комнаты (вы можете использовать событие Очистка событие, например, вместе с действием Free Data Structure ). - Стоит отметить, что вы можете установить опцию Free Target на использование предопределенной переменной или выражения и таким образом контролировать, когда структура данных списка будет освобождена, установив переменную в другом месте (или используя различные результаты для выражения) - до тех пор, пока оно оценивается как true/false.

-

Наконец, вы указываете переменную Target, которая будет содержать возвращаемое значение или ID списка. Если вы отметите переменную Target для хранения возвращаемого значения как Temp (локальную) переменную, то действие создаст эту переменную для хранения возвращаемого значения только до конца события. - В этом случае опция Free Target ничего не делает, и вы будете ответственны за уничтожение списка DS, если эта опция была отмечена. Если переменная цели не задана, а опция Return List отмечена, список не будет создан.

-

ВАЖНО! Столкновения будут регистрироваться только для тех экземпляров, которые имеют действительную маску столкновения, т.е. у них есть sprite, назначенный на sprite_index, или sprite, назначенный на mask_index. Если у одного из экземпляров, участвующих в столкновении, нет маски столкновения, то столкновение не будет обнаружено, независимо от того, какой экземпляр рисуется в данный момент. - столкновения не имеет маски столкновения, то столкновение не будет обнаружено, независимо от того, что рисует экземпляр в это время.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

If Object At Place Icon

-

-

Синтаксис действия:

-

If Object At Place drop actions

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
ObjectОбъект для проверки на наличие экземпляров
xПозиция x для проверки
yПозиция y для проверки
Free TargetМожет быть задана переменная или выражение, или установлено значение true/false для управления освобождением памяти списка при повторном использовании переменной списка.
TargetПеременная, на которую будет нацелено возвращаемое значение действия
-

-

Пример:

-

Приведенный выше код блока действий проверяет наличие столкновения с любыми экземплярами объекта " - obj_Wall" слева и справа, и если таковое обнаружено, то он изменяет горизонтальное направление вызывающего экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Apply_To...htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Apply_To...htm index 1c83b2a6c..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Apply_To...htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Apply_To...htm @@ -1,50 +0,0 @@ - - - - - - Применить к... - - - - - - - - - - -

Применить к...

-

Это действие может быть использовано для изменения области действия для всех последующих действий. Как и в случае с if действие, если вы поместите последующие - действия справа от действия Apply to..., то они будут выполняться из области действия объекта или экземпляра. Область действия выбирается из всплывающего меню, отображаемого при нажатии на маленькую стрелку в правом верхнем углу действия, и таким образом вы можете указать - другому набору объектов - или даже одному экземпляру, если у вас есть идентификатор экземпляра - выполнить несколько действий, прежде чем продолжить работу с кодом текущего объекта.

-

Обратите внимание, что для добавления действий в блок "Применяется к", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться из объекта или экземпляра, на который нацелен блок - "Применяется к", в то время как любые действия, брошенные в другом месте, будут выполняться после блока "Применяется к".

-

-

Синтаксис действия:

-

Apply To... Icon

-

Пример:

-

Приведенный выше код блока действий проверяет переменную на то, равна ли она 100, и если да, то меняет область видимости - на экземпляры " obj_Player" и говорит им выполнить действие Set Sprite (все экземпляры этого объекта в комнате изменят sprite в этот момент), а затем продолжает - добавлять 1 к переменной в экземпляре, выполняющем полный блок кода.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Assign_Variable.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Assign_Variable.htm index caf6e1880..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Assign_Variable.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Assign_Variable.htm @@ -1,72 +0,0 @@ - - - - - Присвоить переменную - - - - - - - - - - -

Присвоить переменную

-

Это действие используется либо для присвоения переменной значения (создавая ее в процессе работы), либо для изменения значения существующей переменной. Вы задаете имя переменной, а затем значение, которое может быть добавлено относительно исходного значения, если это необходимо. - требуется. Если вы зададите имя новой переменной (т.е. переменной, которая никогда ранее не присваивалась в данном экземпляре), то это создаст новую переменную и присвоит ей указанное вами значение, в то время как если вы зададите имя существующей переменной, то она - просто изменит значение на новое. Обратите внимание, что проверка Is Relative добавит значение к значению существующей переменной (для вычитания используйте отрицательное число), а также вы можете использовать в качестве значения выражения s и переменные, созданные ранее.

-

Стоит отметить, что когда мы говорим о "значениях", мы имеем в виду не только числовые значения, поскольку переменная может быть строкой, указателем, идентификатором ресурса или чем-либо еще, что функция может вернуть или использовать. В случае со строкой проверка Relative будет - конкатенирует значение со значением, которое переменная имела ранее, поэтому если ваша переменная была "Hello" и вы присвоили ей " World" с помощью проверки Relative, конечное значение переменной будет "Hello World". Необходимо соблюдать осторожность, - Однако необходимо убедиться, что значения переменных имеют один и тот же тип данных, так как попытка сложить, например, целое число и строку приведет к ошибке компилятора.

-

Обратите внимание, что вы можете добавить дополнительные переменные в одно и то же действие, нажав на значок плюса рядом с действием и задав другой переменной имя и - значение. Более подробную информацию о переменных можно найти в разделе " Переменные и область действия переменных".

-

-

Синтаксис действия:

-

Assign Variable Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
NameИмя новой переменной, которую нужно присвоить, или имя существующей переменной, которую нужно изменить.
ValueЗначение, которое должна иметь переменная.
RelativeУстановите флажок, чтобы задать значение относительно предыдущего.
-

-

Пример:

-

Приведенный выше код блока действий проверяет две переменные экземпляра, и если одна из них больше другой ( - если "my_score" больше, чем "level_score"), то он устанавливает ряд переменных экземпляра в новые значения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Common_Actions_Library.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Common_Actions_Library.htm index 02682a08f..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Common_Actions_Library.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Common_Actions_Library.htm @@ -1,138 +0,0 @@ - - - - - - Библиотека общих действий - - - - - - - - - - -

Библиотека общих действий

-

Common Actions Library

-

Библиотека общих действий - это, как следует из названия, место, где вы найдете действия, которые будут чаще всего использоваться при создании ваших проектов. Эти действия обычно используются вместе с другими действиями и все они связаны с функционированием - внутренней логики игры. Все доступные действия перечислены ниже:

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Assign VariableПрисвоить переменную
Declare Temporary VariableОбъявление временной переменной
Set Global VariableУстановить глобальную переменную
Get Global VariableПолучить глобальную переменную
If VariableЕсли переменная
If ExpressionЕсли выражение
If UndefinedЕсли не определено
ElseElse
Execute CodeВыполнить код
Execute ScriptВыполнить сценарий
New IconНовый
Function CallВызов функции
ReturnВозврат
Apply To...Применить к...
MacroМакро
ExitВыход
Declare A New FunctionОбъявление новой функции
-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

- -

 

- - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Declare_A_New_Function.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Declare_A_New_Function.htm index 9c8ac6fa4..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Declare_A_New_Function.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Declare_A_New_Function.htm @@ -1,84 +0,0 @@ - - - - - - Объявление новой функции - - - - - - - - - - -

Объявление новой функции

-

Это действие можно использовать для создания новой определяемой пользователем функции, которая впоследствии может быть вызвана в любое время в вашем коде. Определяемая пользователем функция - это функция, которую вы определяете для выполнения задачи, не охваченной встроенными действиями GML Visual или функциями GML runner, и которая может быть глобальной, экземпляром или локальной по области видимости (более подробную информацию о области видимости см. здесь ); они также могут использоваться в качестве конструкторов для создания структур. Чтобы узнать больше об использовании этого действия для создания глобальных функций, обратитесь к разделу Создание функций действия.

-

Чтобы использовать это действие, вы можете добавить его в событие или сценарий и дать новой функции имя. Затем вы указываете необходимые аргументы/параметры, которые будет принимать функция, и значения по умолчанию для любых необязательных аргументов.

-

Если функция будет использоваться в качестве конструктора (который используется для создания структуры), то необходимо отметить опцию Constructor , а затем использовать действие New для создания структуры из функции. Вы также можете отметить функцию как статическую, что означает, что она будет определена только один раз, независимо от того, сколько раз будет выполняться это действие. Наконец, если функция будет использоваться только локально в одном событии и больше нигде, то можно включить опцию Temp .

-

После того как вы определили имя и параметры, вы можете прикрепить действия, которые вы хотите, чтобы функция выполнялась при вызове в вашем коде, поместив их сбоку от действия, как показано на рисунке ниже:

-

Примеры использования этого действия в качестве обычной функции и функции-конструктора можно посмотреть в разделе "Расширенные примеры", приведенном ниже.

-

-

Синтаксис действия:

-

Declare A New Function Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
NameИмя новой функции.
Argument [+]Различные аргументы, которые могут быть переданы в функцию, и их значения по умолчанию, если они необязательны.
ConstructorЯвляется ли эта функция конструктором.
StaticЯвляется ли эта функция статической.
TempЯвляется ли функция временной (это означает, что она используется только в рамках текущего события).
-

-

Расширенные примеры

-

Расширенный пример 1

-

Приведенный выше блок действий находится в событии Create экземпляра или сценария и объявляет новую функцию set_vec с тремя аргументами: _x, _y и spd. Эти аргументы затем используются в действиях, которые содержит функция, для установки направления и скорости движения экземпляра, что происходит при вызове функции. В дальнейшем вы будете вызывать функцию с помощью действия Function Call в любых последующих событиях, например, так:

-

На изображении выше вызывается функция set_vec, которая изменяет направление движения экземпляра на направленное в сторону позиции X/Y мыши и устанавливает скорость на 5.

-

-

Расширенный пример 2

-

Приведенный выше блок действий будет находиться в событии Create экземпляра или сценария и объявляет новую функцию-конструктор init_char_struct с четырьмя аргументами: _name, _location, _hp и _mana, причем последние два являются необязательными и имеют значение по умолчанию 100 (это означает, что если эти аргументы не указаны при вызове функции, то вместо них будут использоваться их значения по умолчанию). Эти аргументы затем используются для создания некоторых переменных в структуре, которую создает функция.

-

Позже вы вызовете эту функцию с помощью действия New для создания структуры, как показано ниже:

-

Функция вызывается и возвращает новый struct, который хранится в массиве char, а struct будет заполнен переменными name, location, hp и mana, установленными в значения, которые были переданы в соответствующих аргументах при вызове функции.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Declare_Temporary_Variable.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Declare_Temporary_Variable.htm index 43fcd6af0..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Declare_Temporary_Variable.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Declare_Temporary_Variable.htm @@ -1,69 +0,0 @@ - - - - - Объявление временной переменной - - - - - - - - - - -

Объявление временной переменной

-

Это действие используется для объявления и присвоения начального значения временной переменной (также называемой локальной переменной), которая существует только в течение времени действия события или сценария, в котором она была объявлена. Временные переменные - очень полезны для хранения значений, которые нужны только для одной операции, и предотвращают "загромождение" объектов переменными, которые могут быть использованы только один раз. Они также очень полезны для разбиения сложных операций или для - установки значений в других экземплярах при изменении области действия. Это происходит потому, что переменные, объявленные как временные,не привязанык конкретному экземпляру, а привязаны к самому событию или сценарию, поэтому если вы создадите временную переменную - а затем изменить область действия с помощью действия Apply To..., вы все равно сможете проверить временную переменную без проблем и без изменения области действия.

-

Стоит отметить, что когда мы говорим о "значениях", мы имеем в виду не только числовые значения, поскольку переменная может быть строкой, указателем, идентификатором ресурса или чем-либо еще, что может вернуть или использовать функция, даже выражением. Более подробную информацию см. в разделе о типах данных.

-

Обратите внимание, что многие действия имеют флажок "Temp", который позволяет создать новую временную локальную переменную для хранения возвращаемого значения действия, и к этой переменной можно получить доступ в сценарии действия или события, как и к любой другой переменной. - после этого. Также обратите внимание, что временные локальные переменные привязаны к сценарию или событию, в котором они созданы, поэтому они могут быть использованы другими экземплярами в том же блоке при использовании Apply To.

-

Вы также можете добавить дополнительные переменные в том же действии, нажав на значок плюса рядом с действием и задав другой временной локальной переменной - имя и значение. Более подробную информацию о переменных можно найти в разделе " Переменные и область действия переменных".

-

-

Синтаксис действия:

-

Declare Temporary Variable Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
NameИмя новой переменной, которую нужно присвоить, или имя существующей переменной, которую нужно изменить.
ValueЗначение, которое должна иметь переменная.
-

-

Пример:

-

Приведенный выше код блока действий создает две временные переменные, " _dir" - и "_spd" и устанавливает их в случайные значения. Затем он использует эти значения, чтобы заставить экземпляр двигаться в случайном направлении со случайной скоростью.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Else.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Else.htm index e4ddb770c..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Else.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Else.htm @@ -1,49 +0,0 @@ - - - - - - Else - - - - - - - - - - -

Else

-

Действие "else" используется только в сочетании с If Variable (или любым другим действием "if") и представляет собой способ определения набора действий, которые должны быть выполнены, если оценка "if" - возвращает false. Например, у вас может быть действие "если", которое проверяет, если переменная здоровья игроков меньше или равна 0, и если это значение равно true, вы уничтожаете экземпляр. Однако если вы хотите выполнить другой - набор действий кода, если здоровье игрока не меньше 0, то вы можете добавить "else" и затем указать действия, которые должны быть выполнены, пока if оценивается как false.

-

Обратите внимание, что для добавления действий в блок "else" их следует опустить сбоку от действия, как показано на изображении ниже:

-

Любые действия, брошенные в другом месте, будут выполнены после блока "else" - блока и его содержимого.

-

-

Синтаксис действия:

-

Else Icon

-

Пример:

-

Приведенный выше код блока действий проверяет список DS на предмет того, является ли начальное значение "undefined" или нет. Если оно - то список DS уничтожается, в противном случае значение присваивается глобальной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Execute_Code.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Execute_Code.htm index d2f48a39f..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Execute_Code.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Execute_Code.htm @@ -1,47 +0,0 @@ - - - - - - Выполнить код - - - - - - - - - - -

Выполнить код

-

Это действие просто добавляет блок редактора кода в список GML Visual, куда вы можете добавить любой действительный код GML, который вам нужен для объекта. Обратите внимание, что весь код в действии будет выполнен до того, как будет выполнено следующее - до того, как будет выполнено следующее действие в списке. Чтобы было легче отследить, что делают эти действия, вы можете назвать их, используя идентификатор JSDoc @description, как показано на рисунке ниже. - на рисунке ниже:

-

Execute Code Icon

-

-

Синтаксис действия:

-

Execute Code example of use

-

Пример:

-

Приведенный выше код блока действий создает пару переменных глобальной области видимости для создания сетки MP и - путь.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Execute_Script.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Execute_Script.htm index a2c61369c..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Execute_Script.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Execute_Script.htm @@ -1,71 +0,0 @@ - - - - - - Выполнить сценарий - - - - - - - - - - -

Выполнить сценарий

-

Это действие можно использовать для вызова функции сценария или функции, определяемой пользователем. В целом, это действие может использоваться только для поддержки наследия и не должно применяться в текущих или новых проектах. Чтобы использовать - вы передаете актив скрипта для вызова - или имя переменной пользовательской функции для вызова - и затем предоставляете любые аргументы, которые он требует, т.е. любые значения (строки, целые числа, индексы ресурсов и т.д.), которые вы хотите ввести в скрипт. - или функцию, чтобы она могла их использовать. При необходимости вы можете добавить дополнительные аргументы, нажав на значок плюса рядом с действием.

-

Некоторые сценарии и пользовательские функции могут также возвращать значение для последующего использования в списке блоков действий, поэтому вы можете указать целевую переменную, которая должна хранить это возвращаемое значение. Она может быть создана ранее или может быть новой временной - локальной (если вы установите флажок "Temp"). Поля "цель" и "аргумент" можно оставить пустыми, если они не требуются.

-

Обратите внимание, что обычно лучше использовать действие Function Call для вызова пользовательских функций, и обычно не нужно использовать это действие или вызывать актив сценария непосредственно в коде.

-

-

Синтаксис действия:

-

Execute Script Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
ScriptИмя сценария или определяемой пользователем функции для вызова.
Argument0 ... Argument3Различные аргументы (значения), которые должны быть переданы скрипту или функции (неиспользуемые аргументы можно оставить пустыми)
TargetИмя переменной, которая будет использоваться для возвращаемых значений (можно оставить пустым).
-

-

Пример:

-

Приведенный выше код блока действий вызывает определяемую пользователем функцию, передавая два аргумента для - случайной позиции в комнате. Функция ничего не возвращает.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Exit.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Exit.htm index a434e8c02..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Exit.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Exit.htm @@ -1,46 +0,0 @@ - - - - - - Выход - - - - - - - - - - -

Выход

-

Это действие будет выполнять одно из двух действий в зависимости от контекста, в котором оно вызывается. Если оно вызывается внутри события, то оно завершит событие и перейдет к следующему, пропуская любой код блока действий, который может быть размещен после него. Однако - если он используется внутри функции блока действий, то он выйдет только из функции и вернется к событию, вызвавшему функцию, выполняя все последующие действия. Обратите внимание, что вызов - в середине функции не вернет никакого значения (для этого используется return действие).

-

-

Синтаксис действия:

-

Exit Icon

-

Пример:

-

Приведенный выше код блока действий проверяет переменную и, если она больше или равна 100, событие завершается, - в противном случае переменная увеличивается на единицу и экземпляру sprite присваивается случайный масштаб.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Function_Call.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Function_Call.htm index 9c75327ee..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Function_Call.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Function_Call.htm @@ -1,73 +0,0 @@ - - - - - - Вызов функции - - - - - - - - - - -

Вызов функции

-

Это действие можно использовать для вызова любой функции GML или любой функции, определенной пользователем. Вы задаете функцию для вызова, а затем предоставляете любые дополнительные - аргументы, которые она требует, т.е. любые значения (строки, целые числа, индексы ресурсов и т.д...), которые вы хотите ввести в функцию, чтобы она могла их использовать. Вы можете добавить дополнительные аргументы, нажав на значок плюса рядом с - и убедитесь, что количество аргументов соответствует количеству аргументов используемой функции (т.е. если функция требует 3 аргумента, вы должны ввести 3 аргумента). Некоторые функции могут также возвращать значение для последующего использования в блоке действия - список, и поэтому вы также можете указать целевую переменную, которая должна хранить это возвращаемое значение, которая может быть создана ранее или может быть новой временной локальной переменной (если вы установите флажок "Temp"). И цель - и поле аргумента можно оставить пустыми, если они не требуются.

-

-

Синтаксис действия:

-

Function Call Icon

-

Аргументы:

-

- - - - - - - - - - - - - - - - - - - -
АргументОписание
FunctionФункция GML для вызова.
Argument0 ... ArgumentXРазличные аргументы (значения), которые должны быть переданы в функцию.
TargetИмя переменной, на которую будут нацелены возвращаемые значения (можно оставить пустым).
-

-

Пример:

-

Приведенный выше код блока действий проверяет, существует ли экземпляр "obj_Player" - и если он существует, то вызывает point_distance() передавая текущую позицию x и y экземпляра, - а также позиции x и y экземпляра "obj_player". Функция вернет расстояние между двумя точками в (ранее созданную) переменную экземпляра dist, или установит переменную в 0, если в комнате нет экземпляра . - "obj_Player в комнате.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Get_Global_Variable.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Get_Global_Variable.htm index 871e7ca70..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Get_Global_Variable.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Get_Global_Variable.htm @@ -1,69 +0,0 @@ - - - - - - Получить глобальную переменную - - - - - - - - - - -

Получить глобальную переменную

-

Это действие используется для получения значения глобальной переменной и присвоения его другому экземпляру или временной (локальной) переменной. Переменная, которой вы присваиваете глобальное значение, может быть ранее созданной, или же вы можете установить флажок "Temp" - и задать имя новой переменной, чтобы действие создало новую временную (локальную) переменную специально для хранения возвращаемого значения.

-

Обратите внимание, что вы можете добавить дополнительные переменные в одно и то же действие, нажав на значок плюса рядом с действием, и задать другое глобальное - имя переменной и имя временной локальной переменной. Более подробную информацию о переменных можно найти в разделе " Переменные и область действия переменных".

-

-

Синтаксис действия:

-

Get Global Variable Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
NameИмя глобальной переменной, значение которой нужно получить.
TargetЦелевая переменная для хранения возвращаемого значения - она должна была быть создана ранее, если не установлен флажок "Temp" (см. ниже).
TempСоздайте временную (локальную) переменную для хранения возвращаемого значения (по умолчанию выключена)
-

-

Пример:

-

Приведенный выше код блока действий извлекает значения двух глобальных переменных и присваивает их - временным (локальным) переменным, которые затем используются в сравнении "if". Если результат равен true, то три глобальные переменные устанавливаются в новые значения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/If_Expression.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/If_Expression.htm index e5d637b74..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/If_Expression.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/If_Expression.htm @@ -1,69 +0,0 @@ - - - - - Если выражение - - - - - - - - - - -

Если выражение

-

Это действие используется для проверки выражения true или false, и вы можете проверить здесь любое логическое выражение, если оно оценивается в одно или другое значение. Например, можно использовать любое из следующих выражений:

-

x < (room_width / 2)
a == b
++val >= 100

-

Если вы отметите аргумент "Not", то вышеперечисленные выражения будут отрицаемыми, например, "==" станет "not=". Также обратите внимание, что выражение не ограничивается числовыми значениями, и вы можете проверять строки, указатели, идентификаторы ресурсов или все остальное, что может возвращать или использовать функция (подробнее см. раздел о типах данных ), но вы не можете сравнивать два разных типа данных без получения ошибки - например, если вы попытаетесь использовать в выражении строку и целое число, вы получите ошибку. Более подробную информацию о выражениях см. здесь.

-

ВАЖНОЕ ПРИМЕЧАНИЕ: Из-за проблем точности с плавающей запятой, проверка на то, что два значения точно равны, может вернуть false, так как одно может быть точно 1, в то время как - другое может быть 1.00000000000001. Этого можно избежать, используя перед проверкой действие Decimal to Integer или используя выражения "больше (>)" или "меньше (<)".

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" имеет значение true, в то время как - любые действия, брошенные в другом месте, будут выполняться после блока "if". Обратите внимание, что вы можете "складывать" выражения в одно и то же действие, нажав на значок плюса рядом с - и указать еще одно выражение для проверки. Это позволит проверить, все ли приведенные выражения возвращают true за одну проверку, и выполнить добавленный код действия, только если они возвращают (см. пример, приведенный ниже).

-

-

Синтаксис действия:

-

If Expression Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
ExpressionВыражение для проверки.
NotУстанавливается для проверки, если выражение не имеет значения true.
-

-

Пример:

-

Приведенный выше код блока действий проверяет, больше ли переменная экземпляра "player_score" - больше 1000 , а переменная экземпляра "player_level" меньше 10. Если обе проверки возвращают true, то код действия переходит к присвоению новых значений этим переменным.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/If_Undefined.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/If_Undefined.htm index f9fc1f3c2..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/If_Undefined.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/If_Undefined.htm @@ -1,68 +0,0 @@ - - - - - - Если не определено - - - - - - - - - - -

Если не определено

-

Это действие используется для проверки, возвращает ли переменная или выражение значение "undefined", и если да, то это действие вернет true, а если нет, то вернет false. "Undefined" может быть возвращено по нескольким причинам. - по ряду причин, и неопределенное значение может привести к сбою или серьезной ошибке в вашем проекте, поэтому вы можете использовать это действие для проверки и отлова ошибки до того, как она произойдет. Если вы отметили аргумент "Not", то вы проверяете, не является ли значение - не является "неопределенным".

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" имеет значение true, в то время как - любые действия, брошенные в другом месте, будут выполняться после блока "if". Обратите внимание, что вы можете "складывать" неопределенные проверки в одно и то же действие, нажав на значок плюса рядом с - и указать еще одну переменную для проверки. Это позволит проверить, все ли указанные переменные являются неопределенными в одной проверке, и выполнить добавленный код действия, только если они являются таковыми.

-

-

Синтаксис действия:

-

If Undefined Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
VariableИмя переменной для проверки.
NotУстанавливается для проверки, если значение undefined не равно true.
-

-

Пример:

-

Приведенный выше код блока действий проверяет список DS на предмет того, является ли его начальное значение "undefined" - или нет, и если это так, то список уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/If_Variable.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/If_Variable.htm index d3a8e3a5a..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/If_Variable.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/If_Variable.htm @@ -1,86 +0,0 @@ - - - - - - Если переменная - - - - - - - - - - -

Если переменная

-

Это действие используется для проверки состояния заданной переменной на соответствие заданному значению с помощью определенного выражения. Оператор "if" всегда возвращает либо true, либо false, а выражения для проверки могут быть любыми из следующих - следующих:

- -

Если вы отметите аргумент "Not", то вышеперечисленные выражения будут отрицаемыми, например, "equals to" станет "not equals to". Также обратите внимание, что ни аргументы переменной, ни аргументы значения не ограничиваются числовыми значениями - и могут быть строкой, указателем, идентификатором ресурса или чем-либо еще, что функция может вернуть или использовать (см. раздел о типах данных для получения дополнительной информации), но вы не можете сравнить два - например, если переменная содержит строку, а вы пытаетесь проверить, равна ли она числу, вы получите синтаксическую ошибку.

-

ВАЖНОЕ ПРИМЕЧАНИЕ: Из-за проблем точности с плавающей запятой, проверка на то, что два значения точно равны, может вернуть false, так как одно может быть точно 1, в то время как - другое может быть 1.00000000000001. Этого можно избежать, используя действие Decimal to Integer перед проверкой или используя выражения "больше чем" или "меньше чем".

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" оценивается в true, в то время как любые - действия, отброшенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Variable Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
VariableИмя переменной для проверки.
NotУстанавливается для проверки, если выражение не имеет значения true.
ExpressionТип выражения, используемый для проверки.
ValueЗначение, по которому проверяется переменная.
-

-

Пример:

-

Приведенный выше код блока действий проверяет переменную "dir" на то, равна ли она 10, и если - он создает экземпляр "obj_Squirrel", а если нет, то уничтожает его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Macro.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Macro.htm index 0ad04e16a..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Macro.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Macro.htm @@ -1,60 +0,0 @@ - - - - - - Макро - - - - - - - - - - -

Макро

-

Это действие позволяет определить один или несколько макросов. Макросы - это просто уникальные значения констант или выражения, которые оцениваются в уникальное значение константы, которые затем можно использовать так же, как и обычные константы. Вы также можете использовать - вызов функции в этом действии для создания единственного возвращаемого значения, в этом случае макрос будет оценивать функцию при каждом ее вызове. Обратите внимание, что макросы имеют область действия global, и после объявления они могут быть использованы любым экземпляром, сценарием или блоком действий в вашей игре. - или блоком действий в вашей игре, но их нельзя изменить после определения. Обратите внимание, что вы можете определить дополнительные макросы в одном и том же действии, нажав на значок плюса рядом с действием. Более подробную информацию о макросах можно найти здесь.

-

-

Синтаксис действия:

-

Macro Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
ReturnВозвращаемое значение.
-

-

Пример:

-

Приведенное выше действие создаст три новых макроса, вызываемых для генерации новых цветовых констант, которые затем могут быть использованы - в любом другом действии в вашей игре.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/New.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/New.htm index 010373828..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/New.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/New.htm @@ -1,66 +0,0 @@ - - - - - - Новая структура - - - - - - - - - - -

Новая структура

-

Это действие используется толькопри создании структур с помощью функции, которая была помечена как функция-конструктор (см. раздел " Объявление новой функции " для получения дополнительной информации). Это действие принимает метод функции для ранее определенной функции, а также ряд аргументов, которые при необходимости можно увеличить, используя значок слева. Эти аргументы должны соответствовать входным данным, требуемым функцией, и будут использоваться для заполнения создаваемой структуры. Структура будет возвращена в целевую переменную, которая может быть помечена как временная локальная переменная или нет.

-

-

Синтаксис действия:

-

New Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
FunctionИмя сценария или определяемой пользователем функции для вызова.
Argument0 ... Argument3Различные аргументы (значения), которые должны быть переданы скрипту или функции (неиспользуемые аргументы можно оставить пустыми)
TargetИмя переменной, которая будет использоваться для возвращаемых значений (можно оставить пустым).
-

-

Расширенный пример:

-

Приведенный выше код блока действий, вероятно, будет находиться в событии Create экземпляра, и объявляет новую функцию-конструктор init_char_struct с четырьмя аргументами: _str1, _str2, _val1 и _val2. Эти аргументы затем используются для заполнения заданных переменных в структуре, которую создает функция. Затем вы будете вызывать эту функцию с помощью действия New в любом последующем событии, например, так:

-

Вызывается функция, которая вернет новый struct в массив "char", а struct будет заполнен переменными "name", "location", "hp" и "mana", установленными в значения, используемые для соответствующих аргументов в функции.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Return.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Return.htm index f4445bf08..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Return.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Return.htm @@ -1,61 +0,0 @@ - - - - - - Возврат - - - - - - - - - - -

Возврат

-

Это действие используется при создании функций блока действий и служит для возврата значения экземпляру, вызывающему сценарий. Возвращаемое значение может быть чем угодно, что может хранить переменная - например, строкой. - например, строка, числовое значение, указатель или идентификатор ресурса, или же это может быть сама переменная. Обратите внимание, что когда мы вызываем действие return в функции, функция завершается, возвращая заданное значение, и никакие дальнейшие действия после return вызываться не будут, - Хотя, если в событии после вызова функции есть действия, они все равно будут выполнены.

-

-

Синтаксис действия:

-

Return Icon

-

Аргументы:

-

- - - - - - - - - - - -
АргументОписание
ReturnВозвращаемое значение.
-

-

Пример:

-

Приведенная выше функция блока действий устанавливает временную переменную на ключевое слово noone, - а затем проверяет входную переменную, чтобы узнать, какое значение она имеет в данный момент. Если значение переменной больше 100, то создается экземпляр, и его уникальный идентификатор экземпляра сохраняется во временной переменной, которая затем возвращается из функции.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Set_Global_Variable.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Set_Global_Variable.htm index 5a3f86381..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Set_Global_Variable.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Common/Set_Global_Variable.htm @@ -1,74 +0,0 @@ - - - - - Установить глобальную переменную - - - - - - - - - - -

Установить глобальную переменную

-

Это действие используется либо для присвоения значения глобальной переменной (создавая ее в процессе), либо для изменения значения существующей глобальной переменной. Глобальные переменные - это переменные, которые "принадлежат" ни одному конкретному экземпляру, а скорее всему - и поэтому могут быть доступны и изменены любым экземпляром, скриптом или кодом. Более подробную информацию о глобальных переменных можно найти здесь.

-

Вы задаете имя глобальной переменной, а затем значение, которое при необходимости может быть добавлено относительно исходного значения. Если вы зададите имя новой переменной (т.е. переменной, которая никогда не присваивалась ранее во всей игре), то эта команда - создаст новую глобальную переменную и присвоит ей указанное вами значение, а если вы укажете имя существующей глобальной переменной, то она просто изменит значение на новое. Обратите внимание, что при установке флажка Relative значение будет добавлено к существующему значению - (для вычитания используйте отрицательное число), а в качестве значения можно также использовать выраженияи переменные, созданные ранее.

-

Стоит отметить, что когда мы говорим о "значениях", мы имеем в виду не только числовые значения, поскольку переменная может быть строкой, указателем, идентификатором ресурса или чем-либо еще, что функция может вернуть или использовать. В случае со строкой проверка Relative конкатенирует значение с тем, что переменная имела ранее, поэтому если ваша переменная была "Hello" и вы присвоили ей " World" с помощью проверки relative, конечное значение переменной будет "Hello World". Необходимо - Однако необходимо следить за тем, чтобы значения переменных были одного и того же типа данных, так как попытка сложить, например, целое число и строку приведет к ошибке компилятора.

-

Вы также можете добавить дополнительные переменные в одно и то же действие, нажав на значок плюса рядом с действием и присвоив другой глобальной переменной - имя и значение. Более подробную информацию о переменных можно найти в разделе " Переменные и область действия переменных".

-

-

Синтаксис действия:

-

Set Global Variable Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
NameИмя новой глобальной переменной, которую нужно создать, или имя существующей глобальной переменной, которую нужно изменить.
ValueЗначение, которое должна иметь глобальная переменная.
RelativeУстановите этот флажок, чтобы задать значение относительно предыдущего.
-

-

Пример:

-

Приведенный выше код блока действий проверяет наличие коллизии между вызывающим экземпляром и объектом - "obj_player", и если таковое обнаружено, то из глобальной переменной "player_hp" вычитается 1, а глобальная переменная "player_score" устанавливается в 0. - в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Add_To_List.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Add_To_List.htm index 4d78e0124..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Add_To_List.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Add_To_List.htm @@ -1,63 +0,0 @@ - - - - - - Добавить в список - - - - - - - - - - -

Добавить в список

-

Это действие можно использовать для добавления нового значения (любого типа данных) в список, и это значение будет добавлено в конец. Вы передаете переменную, в которой хранится индекс списка (возвращенный действием Создать список) и значение - для хранения.

-

-

Синтаксис действия:

-

Add To List Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
ListИндекс (хранится в переменной) списка для добавления в список
ValueЗначение для добавления в список
-

-

Пример:

-

Приведенный выше код блока действий создает глобальную переменную области видимости, а затем создает - новую структуру данных списка, присваивая ее индексное значение глобальной переменной. Затем область видимости изменяется таким образом, чтобы все экземпляры объекта "obj_Enemy_Parent" добавили свое уникальное значение ID экземпляра в список.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Clear_Data_Structure.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Clear_Data_Structure.htm index 3d8267732..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Clear_Data_Structure.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Clear_Data_Structure.htm @@ -1,64 +0,0 @@ - - - - - - Очистить структуру данных - - - - - - - - - - -

Очистить структуру данных

-

Это действие очистит все значения из заданной структуры данных. Сначала необходимо выбрать тип структуры данных для очистки, а затем указать индекс структуры данных (индекс - это значение, которое возвращается и хранится в переменной при создании структуры данных). - структуру данных). Очищенная структура данных считается "пустой" (т.е. в ней нет записей), за исключением сеток. В случае с сетками это действие просто очистит все ячейки сетки до 0.

-

ПРИМЕЧАНИЕ: Это не освобождает структуру данных из памяти, а только очищает ее от любой информации. Чтобы освободить память, отведенную для структуры данных, необходимо использовать действие Free Data Structure.

-

-

Синтаксис действия:

-

Clear Data Structure Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
StructureТип структуры данных, которую вы очищаете (список, карта, сетка или стек).
VariableПеременная, содержащая индекс структуры данных для очистки
-

-

Пример:

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Clear_Grid.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Clear_Grid.htm index 6a8945f03..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Clear_Grid.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Clear_Grid.htm @@ -1,63 +0,0 @@ - - - - - - Четкая сетка - - - - - - - - - - -

Четкая сетка

-

С помощью этого действия вы можете очистить структуру данных сетки до одного значения (каждая ячейка в сетке будет установлена на заданное значение). Вы передаете переменную, содержащую индекс сетки (как возвращается действием Создать сетку) - и затем задаете значение, до которого нужно очистить сетку.

-

-

Синтаксис действия:

-

Clear Grid Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
GridИндекс (хранится в переменной) сетки, которую нужно очистить
ValueЗначение, до которого нужно очистить сетку
-

-

Пример:

-

Приведенный выше код блока действий очищает заданную структуру данных сетки для хранения ключевого слова noone в - каждой ячейке, если глобальная переменная меньше или равна 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Create_Grid.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Create_Grid.htm index f70f2688b..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Create_Grid.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Create_Grid.htm @@ -1,66 +0,0 @@ - - - - - - Создать сетку - - - - - - - - - - -

Создать сетку

-

Это действие создаст новую структуру данных сетки и вернет значение индекса, чтобы в дальнейшем вы могли получить доступ к сетке с помощью других действий структуры данных. Индекс сетки будет возвращен в целевую переменную, которую вы предоставите, и которая может быть создана ранее с помощью Assign Variable или Declare Temp. - создана ранее с помощью Assign Variable или Declare Temp, или вы можете установить флажок "Temp", чтобы задать имя и создать временную локальную переменную - для хранения значения до конца сценария или события. Обратите внимание, что в отличие от других структур данных, сетки не создаются "пустыми", и каждая ячейка вновь созданной сетки будет иметь значение 0. Вы сами можете изменить данные ячейки - или очистить саму сетку до другого значения с помощью действия Очистить сетку. Обратите внимание, что вы можете создавать дополнительные сетки DS, нажав на значок плюса - рядом с действием, и выбрать другую переменную для хранения идентификатора сетки, а также снова задать значения ширины и высоты.

-

ВАЖНО! Создание любой структуры данных расходует память на целевой платформе, и поэтому все структуры данных должны быть освобождены, когда они больше не нужны, с помощью действия Free Data Structure, иначе вы получите - утечка памяти, которая может ухудшить производительность игры или даже привести к ее аварийному завершению. Это особенно актуально при использовании временных локальных переменных для хранения индексов структур данных, так как эти переменные удаляются в конце кода или события, но - это не означает, что структура данных тоже удаляется! Структура данных все еще будет существовать, но у вас не будет возможности ссылаться на нее, поэтому либо используйте переменную экземпляра и освободите структуру позже, либо освободите структуру до окончания - события или функции, если ее индекс хранится во временной переменной.

-

-

Синтаксис действия:

-

Create Grid Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
TargetЦелевая переменная для хранения индекса сетки
-

-

Пример:

-

Приведенный выше код блока действий создает две временные переменные для хранения количества 32px ячеек - по ширине и высоте комнаты, а затем создает новую переменную глобальной области видимости для хранения индекса вновь созданной структуры данных сетки. Затем сетка очищается с помощью ключевого слова noone.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Create_List.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Create_List.htm index 70a24524c..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Create_List.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Create_List.htm @@ -1,65 +0,0 @@ - - - - - - Создать список - - - - - - - - - - -

Создать список

-

Это действие создаст новую структуру данных списка и вернет значение индекса, чтобы вы могли позже получить доступ к списку с помощью других действий структуры данных. Индекс списка будет возвращен в целевую переменную, которую вы предоставите. - создана ранее с помощью Assign Variable или Declare Temp, или вы можете установить флажок "Temp", чтобы задать имя и создать временную локальную переменную - для хранения значения до конца сценария или события. Вновь созданная структура данных списка считается "пустой", т.е. не содержит никаких элементов списка. Обратите внимание, что вы можете создавать дополнительные списки DS, нажав на значок плюса - рядом с действием и выбрав другую переменную для хранения идентификатора списка.

-

ВАЖНО! Создание любой структуры данных расходует память на целевой платформе, и поэтому все структуры данных должны быть освобождены, когда они больше не нужны, с помощью действия Free Data Structure, иначе вы получите - утечка памяти, которая может ухудшить производительность игры или даже привести к ее аварийному завершению. Это особенно актуально при использовании временных локальных переменных для хранения индексов структур данных, так как эти переменные удаляются в конце кода или события, но - это не означает, что структура данных тоже удаляется! Структура данных все еще будет существовать, но у вас не будет возможности ссылаться на нее, поэтому либо используйте переменную экземпляра и освободите структуру позже, либо освободите структуру до окончания - события или функции, если ее индекс хранится во временной переменной.

-

-

Синтаксис действия:

-

Create List Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
TargetЦелевая переменная для хранения индекса списка
-

-

Пример:

-

Приведенный выше код блока действий создает глобальную переменную области видимости, а затем создает новую структуру данных list - присваивая его индексное значение глобальной переменной. Затем область видимости изменяется таким образом, чтобы все экземпляры объекта "obj_Enemy_Parent" добавили свое уникальное значение ID экземпляра в список.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Create_Map.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Create_Map.htm index 5d0032b17..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Create_Map.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Create_Map.htm @@ -1,65 +0,0 @@ - - - - - - Создать карту - - - - - - - - - - -

Создать карту

-

Это действие создаст новую структуру данных карты и вернет значение индекса, чтобы вы могли позже получить доступ к карте с помощью других действий структуры данных. Индекс карты будет возвращен в указанную вами целевую переменную, которая может быть создана - ранее с помощью Assign Variable или Declare Temp, или вы можете установить флажок "Temp", чтобы задать имя и создать временную локальную переменную, которая будет хранить значение до конца работы. - хранить значение до конца сценария или события. Вновь созданная структура данных карты считается "пустой", т.е. не содержит записей ключа/значения карты. Обратите внимание, что вы можете создать дополнительные карты DS, нажав на значок плюса рядом с - и выбрать другую переменную для хранения идентификатора карты.

-

ВАЖНО! Создание любой структуры данных расходует память на целевой платформе, и поэтому все структуры данных должны быть освобождены, когда они больше не нужны, с помощью действия Free Data Structure, иначе вы получите - утечка памяти, которая может ухудшить производительность игры или даже привести к ее аварийному завершению. Это особенно актуально при использовании временных локальных переменных для хранения индексов структур данных, так как эти переменные удаляются в конце кода или события, но - это не означает, что структура данных тоже удаляется! Структура данных все еще будет существовать, но у вас не будет возможности ссылаться на нее, поэтому либо используйте переменную экземпляра и освободите структуру позже, либо освободите структуру до завершения события или функции, если ее индекс не был удален. - события или функции, если ее индекс хранится во временной переменной.

-

-

Синтаксис действия:

-

Create Map Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
TargetЦелевая переменная для хранения индекса карты
-

-

Пример:

-

Приведенный выше код блока действий создает новую переменную экземпляра и новую структуру данных map. Значение - значение индекса карты хранится в переменной, а затем используется для добавления двух элементов в карту.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Create_Stack.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Create_Stack.htm index c0952e77d..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Create_Stack.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Create_Stack.htm @@ -1,65 +0,0 @@ - - - - - - Создать стек - - - - - - - - - - -

Создать стек

-

Это действие создаст новую структуру данных стека и вернет значение индекса, чтобы в дальнейшем вы могли получить доступ к стеку с помощью других действий структуры данных. Индекс стека будет возвращен в целевую переменную, которую вы предоставите. - была создана ранее с помощью Assign Variable или Declare Temp, или вы можете установить флажок "Temp", чтобы задать имя и создать временную локальную переменную, которая будет хранить значение до конца работы. - переменную для хранения значения до конца сценария или события. Вновь созданная структура данных стека считается "пустой", т.е. не содержит записей. Обратите внимание, что вы можете создавать дополнительные стеки DS, нажав на значок плюса рядом с - и выбрать другую переменную для хранения идентификатора стека.

-

ВАЖНО! Создание любой структуры данных расходует память на целевой платформе, и поэтому все структуры данных должны быть освобождены, когда они больше не нужны, с помощью действия Free Data Structure, иначе вы получите - утечка памяти, которая может ухудшить производительность игры или даже привести к ее аварийному завершению. Это особенно актуально при использовании временных локальных переменных для хранения индексов структур данных, так как эти переменные удаляются в конце кода или события, но - это не означает, что структура данных тоже удаляется! Структура данных все еще будет существовать, но у вас не будет возможности ссылаться на нее, поэтому либо используйте переменную экземпляра и освободите структуру позже, либо освободите структуру до завершения события или функции, если ее индекс не был удален. - события или функции, если ее индекс хранится во временной переменной.

-

-

Синтаксис действия:

-

Create Stack

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
TargetЦелевая переменная для хранения индекса стека в
-

-

Пример:

-

Приведенный выше код блока действий создает переменную экземпляра и новую структуру данных стека. - Индекс стека хранится в новой переменной, а затем выполняется цикл, который создает 10 экземпляров и помещает их уникальные значения ID в стек.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Data_Structure_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Data_Structure_Actions.htm index dff09811d..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Data_Structure_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Data_Structure_Actions.htm @@ -1,195 +0,0 @@ - - - - - - Действия со структурой данных - - - - - - - - - - -

Библиотека действий со структурой данных

-

Data Structure Library

-

В играх часто требуется хранить информацию в точном и упорядоченном виде. Например, вам может понадобиться хранить списки предметов, которые несет человек, или сетку мест, которые еще нужно посетить. Теперь вы можете использовать несколько переменных - но если вы хотите выполнить более сложные операции, такие как сортировка данных или поиск определенного элемента, вам придется писать большие куски кода блока действий, который может быть медленным в исполнении, трудным в отладке и настоящей мукой в написании!

-

Для решения этой проблемы в GameMaker имеется ряд встроенных структур данных, доступ к которым можно получить с помощью специальных функций. Существует четыре различных типа структур данных, доступных через GML Visual (если вы используете GML, то их шесть), - Каждый из них имеет свои плюсы и минусы в зависимости от типа информации, которую вы хотите хранить, и от того, как вы хотите манипулировать ею в дальнейшем - четыре типа:

- - - - - - - - - - - - - - - - - - - - - - - -
Create List IconСпискиСписок - это структура данных, которая хранит информацию последовательно, по мере ее добавления. Индексы списка начинаются с 0 и увеличиваются для каждого элемента, который добавляется в конец списка, хотя вы также можете вставить данные в позицию, отличную от последней. В отличие от структуры данных Stack (описанной ниже), вы можете получить доступ к данным из любого индекса списка в любое время.
Create Map IconКартыСтруктура данных map является исключительно полезной, поскольку она позволяет хранить ключ и значение пары. Например, персонаж вашей игры может иметь некоторое количество различных предметов (ключи), а для каждого отдельного предмета он может иметь некоторое их количество (значения), как в ролевой игре, где у вас может быть 10 зелий здоровья, 5 зелий маны и 100 золотых. Карты хранят такие пары в одном месте, и вы можете добавлять пары на карту и искать значение, соответствующее определенным ключам, используя некоторые простые функции. Карты не сортируются каким-либо (узнаваемым) способом, что означает, что для поиска определенного ключа вам придется просмотреть все карты (что очень медленно), а также нет возможности хранить два одинаковых ключа или присваивать одному ключу два значения.
Create Grid IconСеткиСетка - это двумерный массив значений, где вы определяете его ширину и высоту. Это задает общее количество "ячеек" сетки (ширина и высота перемножаются), и эти ячейки затем используются для хранения различных значений данных, которые могут быть любыми из разрешенных типов данных. Этот тип структуры позволяет задавать и извлекать значения ячеек в сетке, задавая их положение по x (столбец) и y (строка) (и строки, и столбцы начинаются с 0 и идут до ширины сетки - 1 и высоты сетки -1). При обращении к структурам данных сетки всегда старайтесь использовать целочисленные значения для позиции ячейки, все нецелые индексы будут сбрасываться программой GameMaker - Studio 2, если вы этого не сделаете. Если это не то, что вам требуется, то вам нужно будет выполнить округление самостоятельно перед передачей индекса, который вы хотите проверить.
Create Stack IconСтекиСтековая структура данных - это так называемая структура "последний по порядку" (LIFO). Вы можете помещать значения в стек, а затем удалять их, вынимая из стека, причем значение, которое было помещено в стек последним, первым вынимается из стека (вспомните стопку монет, где каждая добавленная монета должна быть сначала вынута, прежде чем вы сможете добраться до остальных монет). Стеки часто используются при обработке прерываний, рекурсивных функций или даже при создании элементарного искусственного интеллекта для ваших игр.
-

-

По сути, все структуры данных работают одинаково - вы создаете структуру данных и сохраняете значение ее индекса в переменной. Затем вы используете этот индекс для ссылки на структуру данных во всех последующих вызовах функций, которые могут выполнять операции над ней. Наконец, - после завершения работы вы снова уничтожаете структуру данных, чтобы удалить ее из памяти. Вы можете использовать столько структур одновременно, сколько вам нужно, и все структуры могут хранить как строки, так и реальные значения.

-

ПРИМЕЧАНИЕ: Как и все динамические ресурсы, структуры данных занимают память, поэтому их всегда следует уничтожать, когда они больше не нужны, чтобы предотвратить утечку памяти, которая замедлит и в конечном итоге приведет к краху вашей игры.

-

Библиотека Data Structure имеет следующие действия:

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create List IconСоздать список
Create Map IconСоздать карту
Create Grid IconСоздать сетку
Create Stack IconСоздать стек
Clear Data Structure IconОчистить структуру данных
Free Data Structure IconСвободная структура данных
Add To List IconДобавить в список
Remove From List IconУдалить из списка
Get List Item At IconПолучить элемент списка At
Get Index Of List Item IconПолучить индекс элемента списка
Insert Into List IconВставка в список
Get List Item CountПолучить количество элементов списка
Set Map Value IconУстановить значение карты
Get Map Value IconПолучить значение карты
Remove Map Value IconУдалить запись на карте
Set Grid Value IconУстановить значение сетки
Get Grid Value IconПолучить значение сетки
Clear Grid IconЧеткая сетка
Push Onto Stack IconПеремещение в стек
Pop Stack IconПоп-стек
If Data Structure Exists IconЕсли структура данных существует
If Data Structure Empty IconЕсли структура данных пуста
-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Free_Data_Structure.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Free_Data_Structure.htm index b34bf3020..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Free_Data_Structure.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Free_Data_Structure.htm @@ -1,66 +0,0 @@ - - - - - - Свободная структура данных - - - - - - - - - - -

Свободная структура данных

-

Это действие освободит структуру данных из памяти и должно вызываться всякий раз, когда структура данных больше не нужна, например, в событии Destroy даже экземпляра или в событии Room End и т.д.. Освобождение структуры данных означает, что никакие дальнейшие действия - не могут быть использованы для ссылки на нее, поскольку она больше не существует, хотя вы также можете проверить это с помощью действия If Data Structure Exists.

-

Обратите внимание, что если структура данных не имеет индекса, назначенного переменной глобальной области видимости, она не будет переноситься из одной комнаты в другую. Например, если вы создадите экземпляр игрока и структура данных list будет присвоена переменной этого экземпляра, - список нужно будет освободить, если игрок будет уничтожен или если изменится комната с экземпляром игрока в ней (если только экземпляр игрока не помечен как постоянный), поэтому экземпляр игрока будет иметь два действия Free Data Structure для - обоих этих событий. Важно, чтобы все созданные структуры данных уничтожались таким образом, когда они больше не нужны, чтобы предотвратить утечку памяти, которая может вызвать проблемы с производительностью или даже крах вашей игры.

-

-

Синтаксис действия:

-

Free Data Structure Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
TypeТип структуры данных, которую вы освобождаете (список, карта, сетка или стек).
VariableПеременная, содержащая индекс структуры данных для освобождения
-

-

Пример:

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_Grid_Value.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_Grid_Value.htm index 5bbf3a8c0..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_Grid_Value.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_Grid_Value.htm @@ -1,72 +0,0 @@ - - - - - - Получить значение сетки - - - - - - - - - - -

Получить значение сетки

-

С помощью этого действия вы можете установить значение для определенной ячейки в структуре данных сетки. Вы передаете переменную, которая содержит индекс сетки (возвращается действием Создать сетку), затем указываете позицию x и y (столбец - и строка) для ячейки, которую нужно установить, и, наконец, значение для этой ячейки. Вы также должны задать целевую переменную (которая может быть помечена как временная локальная переменная) для хранения возвращаемого значения ячейки, причем значение может быть любым допустимым типом данных. Обратите внимание, что - позиции x и y для ячейки должны быть целыми целыми числами в пределах сетки.

-

-

Синтаксис действия:

-

Get Grid Value Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
GridИндекс (хранится в переменной) сетки, которую нужно получить
xПоложение ячейки вдоль оси x для получения (столбец)
yПоложение ячейки вдоль оси y для получения (строка)
TargetЦелевая переменная, которая будет использоваться для хранения возвращаемого значения
-

-

Пример:

-

Приведенный выше код блока действий получает значение в сетке, хранящееся в глобальной переменной, которая - соответствует положению экземпляра в комнате. Затем это значение проверяется, и если оно является значением ID экземпляра, то этот экземпляр уничтожается, а ячейка сетки устанавливается на ключевое слово noone.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_Index_Of_List_Item.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_Index_Of_List_Item.htm index 14c6c33f1..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_Index_Of_List_Item.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_Index_Of_List_Item.htm @@ -1,68 +0,0 @@ - - - - - - Получить индекс элемента списка - - - - - - - - - - -

Получить индекс элемента списка

-

С помощью этого действия вы можете восстановить индексную позицию элемента в заданном списке. Вы предоставляете переменную, которая хранит индекс списка (возвращенный действием Создать список) и значение, которое вы хотите найти позицию индекса - в списке, а также целевую переменную для хранения возвращенной индексной позиции элемента (которая может быть помечена как временная локальная переменная, которая будет использоваться до конца сценария или события). Обратите внимание, что если искомое значение - не существует в списке, то не будет возвращена позиция индекса списка, и поэтому возвращаемое значение будет равно -1.

-

-

Синтаксис действия:

-

Get Index Of List Item Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
ListИндекс (хранится в переменной) списка, из которого нужно удалить список
ValueЗначение, на которое проверяется список
TargetЦелевая переменная для хранения возвращенного индекса
-

-

Пример:

-

Приведенный выше код блока действий проверяет наличие коллизии в позиции экземпляра - и если таковая найдена, то уникальное значение ID экземпляра сохраняется во временной переменной, а затем проверяется, существует ли оно в структуре данных списка. Если оно существует, то элемент удаляется из списка, а экземпляр уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_List_Item_At.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_List_Item_At.htm index 20b75fc6f..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_List_Item_At.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_List_Item_At.htm @@ -1,68 +0,0 @@ - - - - - - Получить элемент списка At - - - - - - - - - - -

Получить элемент списка At

-

С помощью этого действия вы можете восстановить индексную позицию элемента в заданном списке. Вы предоставляете переменную, которая хранит индекс списка (возвращенный действием Создать список) и позицию индекса в списке, чтобы - а также целевую переменную для хранения возвращаемого значения элемента (которая может быть помечена как временная локальная переменная, которая будет использоваться до конца сценария или события).

-

ПРИМЕЧАНИЕ: Если вы зададите позицию, которая находится за пределами заданного размера списка (т.е. позиция 11 в списке из 10 значений), то действие вернет undefined. Проверить это можно с помощью действия If Undefined.

-

-

Синтаксис действия:

-

Get List Item At Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
ListИндекс (хранится в переменной) списка, из которого нужно удалить список
IndexПозиция индекса в списке, из которого нужно получить элемент
TargetЦелевая переменная для хранения возвращаемого значения
-

-

Пример:

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_List_Item_Count.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_List_Item_Count.htm index 46414a1df..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_List_Item_Count.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_List_Item_Count.htm @@ -1,63 +0,0 @@ - - - - - - Получить количество элементов списка - - - - - - - - - - -

Получить количество элементов списка

-

Вы можете использовать это действие, чтобы узнать, сколько записей содержится в списке. Вы предоставляете переменную, которая содержит индекс списка (возвращенный действием Создать список), и целевую переменную для хранения возвращаемого числа - элементов в списке (которая может быть помечена как временная локальная переменная, которая будет использоваться до конца сценария или события).

-

-

Синтаксис действия:

-

Get List Item Count Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
ListИндекс (хранится в переменной), по которому можно получить количество элементов
TargetЦелевая переменная для хранения возвращаемого количества элементов
-

-

Пример:

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_Map_Value.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_Map_Value.htm index 53d661a7c..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_Map_Value.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Get_Map_Value.htm @@ -1,68 +0,0 @@ - - - - - - Получить значение карты - - - - - - - - - - -

Получить значение карты

-

С помощью этого действия вы можете получить значение, связанное с заданным ключом в структуре данных карты. Вы предоставляете переменную, которая содержит индекс карты (как возвращается действием Create Map), а затем задаете "ключ" (который - это идентификатор значения в карте), а также предоставляете целевую переменную для хранения возвращаемого значения (которая может быть помечена как временная локальная переменная).

-

ПРИМЕЧАНИЕ: Если вы зададите ключ, который не существует в карте, действие вернет undefined. Проверить это можно с помощью действия If Undefined.

-

-

Синтаксис действия:

-

Get Map Value Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
MapИндекс (хранится в переменной) карты, из которой нужно получить значение
KeyКлюч, который нужно получить (вещественный или строковый)
TargetЦелевая переменная для хранения возвращаемого значения карты
-

-

Пример:

-

Приведенный выше код блока действий проверяет наличие столкновения в позиции экземпляра, и если оно - найдено, то выполняется поиск по карте, чтобы получить значение из ключа "damage", и это значение затем используется для изменения вызывающей переменной экземпляра "hp".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/If_Data_Structure_Empty.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/If_Data_Structure_Empty.htm index 337ff61d4..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/If_Data_Structure_Empty.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/If_Data_Structure_Empty.htm @@ -1,67 +0,0 @@ - - - - - - Если структура данных пуста - - - - - - - - - - -

Если структура данных пуста

-

С помощью этого действия вы можете проверить, пуста ли заданная структура данных или нет. Сначала вам нужно выбрать тип структуры данных для проверки (либо список, либо карта, либо стек - никаких сеток, поскольку они не могут быть пустыми), а затем предоставить переменную - переменную, которая содержит индекс структуры данных (как возвращается действиями Create List, Create Map и Create Stack). Действие вернет true, если - если структура данных пуста, и false, если нет. Обратите внимание, что вы можете установить флаг "not" в действии, чтобы проверить, содержит ли структура данных данные, проверив, не пуста ли она.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" оценивается в true, в то время как любые - действия, отброшенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Data Structure Empty Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
StructureТип структуры данных для проверки (список, карта или стек)
VariableПеременная, содержащая индекс структуры данных
-

-

Пример:

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/If_Data_Structure_Exists.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/If_Data_Structure_Exists.htm index be358e522..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/If_Data_Structure_Exists.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/If_Data_Structure_Exists.htm @@ -1,66 +0,0 @@ - - - - - - Если структура данных существует - - - - - - - - - - -

Если структура данных существует

-

С помощью этого действия вы можете проверить переменную, чтобы узнать, индексирует ли она структуру данных или нет. Сначала нужно выбрать тип структуры данных для проверки (список, карта, сетка или стек), а затем указать переменную, которая содержит структуру данных - индекс (как возвращается действиями Create List, Create Map, Create Grid и Create Stack). Действие вернет true, если структура данных существует, и false, если не существует. Обратите внимание, что в действии можно поставить флаг "not", чтобы проверить, не хранит ли переменная индекс структуры данных.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" оценивается в true, в то время как любые - действия, отброшенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Data Structure Exists Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
StructureТип структуры данных для проверки (список, карта, сетка или стек)
VariableПеременная, содержащая индекс структуры данных
-

-

Пример:

-

Приведенный выше код блока действий проверяет, существует ли заданная структура данных - и если она существует, то она освобождается из памяти.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Insert_Into_List.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Insert_Into_List.htm index 856f265e1..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Insert_Into_List.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Insert_Into_List.htm @@ -1,69 +0,0 @@ - - - - - - Вставка в список - - - - - - - - - - -

Вставка в список

-

С помощью этого действия вы можете восстановить индексную позицию элемента в заданном списке. Вы предоставляете переменную, которая хранит индекс списка (возвращенный действием Создать список) и значение, которое вы хотите найти позицию индекса - в списке, а также целевую переменную для хранения возвращенной индексной позиции элемента (которая может быть помечена как временная локальная переменная, которая будет использоваться до конца сценария или события). Когда вы вставляете значение в список, все индексы - выше заданного индекса для вставки будут сдвинуты на один вверх, поэтому если у вас есть список с 4 элементами (индексные позиции от 0 до 3) и вы помещаете новый элемент в индексную позицию 2, предыдущий элемент 2 станет элементом 3, а предыдущий элемент 3 станет элементом 4. - Обратите внимание, что если искомое значение не существует в списке, то не будет возвращаться индексная позиция списка, и возвращаемое значение будет равно -1.

-

-

Синтаксис действия:

-

Insert Into List Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
ListИндекс (хранится в переменной) списка для вставки в
IndexПозиция индекса в списке для вставки значения
ValueЗначение, которое будет сохранено в позиции
-

-

Пример:

-

Приведенный выше код блока действий использует цикл повтора для получения размера списка, а затем генерирует - случайную позицию в списке. Затем он генерирует случайное значение и вставляет его в список в случайную позицию, определенную ранее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Pop_Stack.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Pop_Stack.htm index ff95bc453..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Pop_Stack.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Pop_Stack.htm @@ -1,63 +0,0 @@ - - - - - - Поп-стек - - - - - - - - - - -

Поп-стек

-

С помощью этого действия вы можете извлечь значение из верхней части структуры данных стека. Вы передаете переменную, которая содержит индекс стека (возвращается действием Create Stack), а затем указываете целевую переменную, которая должна содержать - возвращаемую переменную (которая может быть помечена как временная локальная переменная).

-

-

Синтаксис действия:

-

Pop Stack Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
StackИндекс (хранится в переменной) стека для использования
TargetЦелевая переменная для хранения возвращаемого значения
-

-

Пример:

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Push_Onto_Stack.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Push_Onto_Stack.htm index 37578a4e7..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Push_Onto_Stack.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Push_Onto_Stack.htm @@ -1,63 +0,0 @@ - - - - - - Перемещение в стек - - - - - - - - - - -

Перемещение в стек

-

С помощью этого действия вы можете поместить значение в структуру данных стека. Вы предоставляете переменную, которая содержит индекс стека (возвращается действием Create Stack), а затем указываете значение, которое нужно протолкнуть на вершину. При использовании стековых - значения всегда добавляются на "вершину" стека, и никогда в конец или в середину (если вам нужна такая функциональность, используйте структуру данных list).

-

-

Синтаксис действия:

-

Push Onto Stack Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
StackИндекс (хранится в переменной) стека для использования
ValueЗначение для переноса в стек
-

-

Пример:

-

Приведенный выше код блока действий создает переменную экземпляра и новую структуру данных стека. - Индекс стека хранится в новой переменной, а затем выполняется цикл, который создает 10 экземпляров и помещает их уникальные значения ID в стек.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Remove_From_List.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Remove_From_List.htm index 88112ad1d..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Remove_From_List.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Remove_From_List.htm @@ -1,63 +0,0 @@ - - - - - - Удалить из списка - - - - - - - - - - -

Удалить из списка

-

Это действие можно использовать для удаления элемента с индексом из заданного списка. Вы передаете переменную, которая хранит индекс списка (возвращенный действием Создать список) и позицию индекса в списке для удаления, где - индексная позиция находится в диапазоне от 1 до (длина списка -1). Это действие ничего не возвращает, поэтому если вам нужно значение в позиции индекса, то перед удалением индекса следует использовать Get List Item At.

-

-

Синтаксис действия:

-

Remove From List Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
ListИндекс (хранится в переменной) списка, из которого нужно удалить список
IndexИндекс в списке для удаления
-

-

Пример:

-

Приведенный выше код блока действий проверяет наличие коллизии в позиции экземпляра, и если - оно найдено, уникальное значение ID для экземпляра сохраняется во временной переменной, а затем проверяется, существует ли оно в структуре данных списка. Если оно существует, то элемент удаляется из списка, а экземпляр уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Remove_Map_Entry.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Remove_Map_Entry.htm index 164e32960..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Remove_Map_Entry.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Remove_Map_Entry.htm @@ -1,63 +0,0 @@ - - - - - - Удалить запись на карте - - - - - - - - - - -

Удалить запись на карте

-

С помощью этого действия вы можете удалить ключ (и соответствующее ему значение) из структуры данных карты. Вы предоставляете переменную, которая содержит индекс карты (возвращается действием Create Map), а затем указываете "ключ" (это - это идентификатор значения в карте), и действие удалит этот ключ из карты. Обратите внимание, что это действие ничего не возвращает, и если вам нужно значение для данного ключа, то перед его удалением следует воспользоваться действием Get Map Value.

-

-

Синтаксис действия:

-

Remove Map Entry Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
MapИндекс (хранится в переменной) карты, из которой нужно удалить значение
KeyКлюч для использования (вещественный или строковый)
-

-

Пример:

-

Приведенный выше код блока действий извлекает значение определенного ключа из структуры данных map - и затем проверяет, меньше или равно ли это значение 0. Если да, то ключ удаляется из карты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Set_Grid_Value.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Set_Grid_Value.htm index 4249dac8f..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Set_Grid_Value.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Set_Grid_Value.htm @@ -1,71 +0,0 @@ - - - - - - Установить значение сетки - - - - - - - - - - -

Установить значение сетки

-

С помощью этого действия вы можете установить значение для определенной ячейки в структуре данных сетки. Вы передаете переменную, которая содержит индекс сетки (возвращается действием Создать сетку), затем указываете позицию x и y (столбец - и строка) для ячейки, которую нужно установить, и, наконец, значение для этой ячейки. Значение может быть любым допустимым типом данных, но позиции x и y должны быть целыми целыми числами в пределах сетки.

-

-

Синтаксис действия:

-

Set Grid Value Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
GridИндекс (хранится в переменной) сетки для установки
xПозиция ячейки вдоль оси x для установки (столбец)
yПоложение ячейки вдоль оси y для установки (строка)
ValueЗначение, на которое нужно установить ячейку сетки
-

-

Пример:

-

Приведенный выше код блока действий создает новую структуру данных grid и сохраняет значение ее индекса - в глобальной переменной. Затем он перебирает все экземпляры в комнате и добавляет их уникальное значение ID в ячейку, соответствующую их положению.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Set_Map_Value.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Set_Map_Value.htm index 034f89581..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Set_Map_Value.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Structures/Set_Map_Value.htm @@ -1,68 +0,0 @@ - - - - - - Установить значение карты - - - - - - - - - - -

Установить значение карты

-

С помощью этого действия вы можете добавить пару ключ/значение в структуру данных карты. Вы передаете переменную, которая содержит индекс карты (возвращается действием Create Map), затем задаете "ключ" (который является идентификатором - в карте для значения), а затем "значение", которое должно быть связано с этим ключом. Оба ключа могут быть либо целочисленными значениями (например, 0, 200, 36712 и т.д.), либо строками (например, "Name", "Shield" и т.д.), а значение может быть любым - допустимым типом данных.

-

-

Синтаксис действия:

-

Set Map Value Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
MapИндекс (хранится в переменной) карты, которую нужно установить
KeyКлюч для установки (целое число или строка)
ValueЗначение, которое будет храниться с заданным ключом
-

-

Пример:

-

Приведенный выше код блока действий создает новую структуру данных map, а затем устанавливает в ней три записи ключ/значение - в нее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Types/Data_Type_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Types/Data_Type_Actions.htm index a6efa07c7..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Types/Data_Type_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Types/Data_Type_Actions.htm @@ -1,64 +0,0 @@ - - - - - - Действия с типом данных - - - - - - - - - - -

Типы данных Библиотека действий

-

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

-

ПРИМЕЧАНИЕ: вы можете узнать больше о различных типах данных здесь.

-

В библиотеке " Типы" предусмотрены следующие действия:

-

- - - - - - - - - - - - - - - -
Data Types Action LibraryДесятичное в целое
Decimal To Integer IconСтрока в число
String To Number IconЧисло в строку
-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Types/Decimal_To_Integer.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Types/Decimal_To_Integer.htm index b93a0faf5..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Types/Decimal_To_Integer.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Types/Decimal_To_Integer.htm @@ -1,78 +0,0 @@ - - - - - - Десятичное в целое - - - - - - - - - - -

Десятичное в целое

-

Это действие принимает десятичное число и преобразует его в целое число. Вы задаете значение для преобразования, а затем выбираете тип округления, которое должно быть выполнено, чтобы превратить его в целое число. Доступны следующие типы округления:

- -

После выбора типа округления вы должны указать число для округления (это может быть переменная), а затем указать целевую переменную для возврата нового целочисленного значения (которая может быть помечена как временная локальная переменная).

-

-

Синтаксис действия:

-

Decimal To Integer Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
RoundingТип округления, используемый для получения целого числа (см. описание выше)
NumberДесятичное число для округления до целого числа
TargetЦелевая переменная для хранения возвращаемого целого числа
-

-

Пример:

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Types/Number_To_String.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Types/Number_To_String.htm index 7ebdf0350..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Types/Number_To_String.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Types/Number_To_String.htm @@ -1,62 +0,0 @@ - - - - - - Число в строку - - - - - - - - - - -

Число в строку

-

Это действие преобразует вещественное число в строку. Если число не является целым и имеет десятичные знаки, они будут округлены до ближайших двух знаков, поэтому, например, число 123.45678 вернет строку "123.46".

-

-

Синтаксис действия:

-

Number To String Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
ValueВещественное число для преобразования
TargetЦелевая переменная для хранения возвращаемого значения
-

-

Пример:

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Types/String_To_Number.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Types/String_To_Number.htm index c2443c15b..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Types/String_To_Number.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Data_Types/String_To_Number.htm @@ -1,94 +0,0 @@ - - - - - - Строка в число - - - - - - - - - - -

Строка в число

-

Это действие может преобразовать строку в число. Вы предоставляете строку для изменения, а затем указываете целевую переменную для возврата реального числа (эта переменная может быть помечена как временная локальная переменная). Обратите внимание, что если в строке есть символы - кроме цифр и десятичной точки, то она не будет преобразована, хотя если строка начинается с цифры, то она будет преобразована, а остальная часть строки исключена. Важно отметить, что при передаче десятичных дробей в это действие - действие, возвращаемая строка будет округлена только до двух знаков после запятой. Ниже приведена таблица вводимых значений и ожидаемого результата

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
СтрокаВозвращаемое значение
"123"123
"123 Hello World"123
"Hello World"0 (по умолчанию, если строка не может быть преобразована, возвращается 0)
"Hello World 123"0
"123.45678"123.46
-

-

Синтаксис действия:

-

String To Number Icon

-

Аргументы:

-

- - - - - - - - - - - - - - - -
АргументОписание
ValueСтрока для преобразования
TargetЦелевая переменная для хранения возвращаемого значения
-

-

Пример:

-

Приведенный выше код блока действий инициализирует глобальную переменную, а затем загружает файл с - буфером, сохраненным в нем. Две строки считываются из буфера и сохраняются во временных локальных переменных, после чего одна из них преобразуется в вещественное число и сохраняется в другой временной локальной переменной. Затем они присваиваются глобальным переменным, и - буфер удаляется.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/DnD_Reference.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/DnD_Reference.htm index 495e841df..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/DnD_Reference.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/DnD_Reference.htm @@ -1,71 +0,0 @@ - - - - - - справочник {GML_Visual} - - - - - - - - - - -

справочник GML Visual

-

В этом разделе руководства перечислены все различные действия, доступные вам при использовании GML Visual для программирования вашей игры. Ниже вы можете найти каждую из различных библиотек действий, доступных вам из инструментария объекта GML Visual, а в разделе каждой библиотеки объясняются отдельные действия и приводятся примеры их использования.

- -

 

-

Помимо вышеперечисленных библиотек действий, у вас также есть библиотека "Избранное" - это специальный раздел панели инструментов, куда вы можете перетащить действия и держать под рукой те, которые вы используете чаще всего, а также библиотека " Недавно использованные ", в которой хранятся последние 5 действий, которые вы использовали:

-

Favourite and Recent Libraries

-

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Ellipse.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Ellipse.htm index 55aa3cc54..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Ellipse.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Ellipse.htm @@ -1,72 +0,0 @@ - - - - - - Нарисовать эллипс - - - - - - - - - - -

Нарисовать эллипс

-

Это действие нарисует эллипс в заданном месте комнаты. Вы указываете верхнюю левую позицию и нижнюю правую позицию области, в которую должен "вписаться" эллипс, и эллипс будет нарисован между ними. Позиции могут - быть либо абсолютным положением в комнате, либо положением относительно экземпляра, вызывающего действие, а также можно установить, может ли эллипс быть заполнен или очерчен, установив флажок заполнения внизу.

-

ПРИМЕЧАНИЕ: Это действие предназначено только для использования в различных событиях рисования и не будет рисовать ничего, если использовать его в других местах.

-

-

-

Синтаксис действия:

-

Draw Ellipse Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
LeftЛевая позиция, с которой начинается рисование
TopВерхняя позиция, с которой следует начинать рисовать
RightПравильная позиция для завершения рисования
BottomНижняя позиция для завершения рисования
-

-

Пример:

-

Приведенный выше код блока действий рисует серию очерченных концентрических эллипсов в позиции экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Gradient_Ellipse.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Gradient_Ellipse.htm index 5db47dc8e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Gradient_Ellipse.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Gradient_Ellipse.htm @@ -1,82 +0,0 @@ - - - - - - Нарисовать градиентный эллипс - - - - - - - - - - -

Нарисовать градиентный эллипс

-

Это действие нарисует эллипс в заданном месте комнаты, используя набор цветов смешивания для создания градиента. Вы задаете левое верхнее и правое нижнее положение области, в которую должен "вписаться" эллипс, и эллипс - будет нарисован между ними. Положение может быть либо абсолютным положением в комнате, либо положением относительно экземпляра, вызывающего действие, и вы можете задать цвета для смешивания от края эллипса и от его центра. Эллипс - может быть нарисован заполненным или очерченным, установив флажок заполнения в нижней части.

-

ПРИМЕЧАНИЕ: Это действие предназначено только для использования в различных событиях рисования и не будет рисовать ничего, если использовать его в других местах.

-

-

-

Синтаксис действия:

-

Draw Gradient Ellipse Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
LeftЛевая позиция, с которой начинается рисование
TopВерхняя позиция, с которой следует начинать рисовать
RightПравильная позиция для завершения рисования
BottomНижняя позиция для завершения рисования
CenterЦвет смешивается от центра
EdgeЦвет для смешивания с краем
-

-

Пример:

-

Приведенный выше код блока действий рисует градиентный эллипс в позиции - экземпляра "obj_Player".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Gradient_Rectangle.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Gradient_Rectangle.htm index 8892f48c9..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Gradient_Rectangle.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Gradient_Rectangle.htm @@ -1,90 +0,0 @@ - - - - - - Нарисовать градиентный прямоугольник - - - - - - - - - - -

Нарисовать градиентный прямоугольник

-

Это действие нарисует прямоугольник в заданной позиции в комнате, используя набор цветов смешивания для создания градиента. Вы указываете верхнюю левую позицию и нижнюю правую позицию, и прямоугольник будет нарисован между ними, а позиция может быть - либо абсолютной позицией в комнате, либо позицией относительно экземпляра, вызывающего действие. Затем вы задаете цвета, которые будут смешиваться с каждым из углов, а также можете установить, может ли прямоугольник быть заполнен или очерчен, установив флажок - в нижней части.

-

ПРИМЕЧАНИЕ: Это действие предназначено только для использования в различных событиях рисования и не будет рисовать ничего, если использовать его в других местах.

-

-

-

Синтаксис действия:

-

Draw Gradient Rectangle Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
LeftЛевая позиция, с которой начинается рисование
TopВерхняя позиция, с которой следует начинать рисовать
RightПравильная позиция для завершения рисования
BottomНижняя позиция для завершения рисования
Top LeftЦвет для смешивания из левого верхнего угла
Top RightЦвет для смешивания в правом верхнем углу
Bottom LeftЦвет для смешивания в левом нижнем углу
Bottom RightЦвет для смешивания в правом нижнем углу
-

-

Пример:

-

Приведенный выше код блока действий рисует градиентный прямоугольник относительно - относительно позиции экземпляра с некоторым текстом над ним.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Healthbar.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Healthbar.htm index ebd7a2c00..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Healthbar.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Healthbar.htm @@ -1,99 +0,0 @@ - - - - - - Нарисовать панель здоровья - - - - - - - - - - -

Нарисовать панель здоровья

-

С помощью этого действия можно нарисовать цветную полосу для графического представления значения. Отображаемая величина представляет собой процентное значение и должна находиться в диапазоне от 0 до 100, однако вы можете использовать и большие значения с помощью формулы (CURRENT_Value / MAXIMUM_value) * 100, - Так, например, вы можете использовать это для отображения силы, здоровья, маны, времени или чего-либо еще, что может быть полезно для отображения в виде столбика. Помимо значения для рисования, вы можете задать направление для рисования панели здоровья (слева направо или справа налево - и сверху-вниз или снизу-вверх), а также позицию, либо в пределах комнаты, либо относительно экземпляра, вызывающего действие. Помимо позиции, вы также можете задать цвет, который будет смешиваться с каждым из четырех углов панели здоровья, создавая - градиенты от красного к зеленому (например, но вы можете использовать любые цвета). Ниже показано изображение того, как выглядит простая панель здоровья с различными опциями:

-

Draw Healthbar Icon

-

ПРИМЕЧАНИЕ: Это действие предназначено только для использования в различных событиях рисования и не будет рисовать ничего, если использовать его в других местах.

-

-

Синтаксис действия:

-

Different Healthbar Settings

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
DirectionНаправление рисования содержимого панели здоровья
ValueЗначение (от 0 до 100), которое будет использоваться для панели здоровья
LeftПоложение левой части панели здоровья
TopПоложение верхней части панели здоровья
RightПоложение правой части панели здоровья
BottomПоложение нижней части панели здоровья
BackgroundЦвет, который будет использоваться в качестве фона на панели здоровья
OutlineЦвет, используемый для обводки панели здоровья
Min ColourЦвет для смешивания с минимальным значением
Max ColourЦвет для смешивания с максимальным значением
-

-

Пример:

-

Приведенный выше код блока действий рисует синюю и желтую полосу "маны" относительно - экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Instance_Health.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Instance_Health.htm index dd62687c8..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Instance_Health.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Instance_Health.htm @@ -1,95 +0,0 @@ - - - - - - Здоровье экземпляра рисунка - - - - - - - - - - -

Здоровье экземпляра рисунка

-

С помощью этого действия можно нарисовать цветную полосу, чтобы показать графическое представление переменной экземпляра health (когда вы используете любое действие "здоровье" в GameMaker, у экземпляра, который его вызывает, будет добавлена новая переменная области видимости экземпляра - health ). Отображаемая величина - это процентное значение, которое находится в диапазоне от 0 до 100. Вы можете задать привязку направления для отрисовки панели здоровья (слева направо или справа налево, сверху вниз или снизу вверх) - а также позицию, либо в пределах комнаты, либо относительно экземпляра, вызывающего действие. Вы также можете задать цвет, который будет смешиваться с каждым из четырех углов панели здоровья, создавая градиенты от красного к зеленому (например, но вы можете - использовать любые цвета). Ниже показано изображение того, как выглядит простая панель здоровья с различными опциями:

-

Draw Instance Health Icon

-

ПРИМЕЧАНИЕ: Это действие предназначено только для использования в различных событиях рисования и не будет рисовать ничего, если использовать его в других местах.

-

-

-

Синтаксис действия:

-

Different Healthbar Settings

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
DirectionНаправление рисования содержимого панели здоровья
LeftПоложение левой части панели здоровья
TopПоложение верхней части панели здоровья
RightПоложение правой части панели здоровья
BottomПоложение нижней части панели здоровья
BackgroundЦвет, который будет использоваться в качестве фона на панели здоровья
OutlineЦвет, используемый для обводки панели здоровья
Min ColourЦвет для смешивания с минимальным значением
Max ColourЦвет для смешивания с максимальным значением
-

-

Пример:

-

Приведенный выше код блока действий рисует панель здоровья в верхней левой части экрана.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Instance_Lives.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Instance_Lives.htm index 6f3f7ea29..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Instance_Lives.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Instance_Lives.htm @@ -1,77 +0,0 @@ - - - - - - Нарисовать жизнь экземпляра - - - - - - - - - - -

Нарисовать жизнь экземпляра

-

Это действие нарисует sprite, чтобы представить каждую из жизней, которые в настоящее время есть у экземпляра. Число для рисования берется из текущего значения локальной переменной экземпляра lives, которая является специальной переменной, автоматически создаваемой в экземпляре, если вы используете какие-либо действия, требующие ее наличия. - экземпляра, если вы используете любое из действий, требующих ее наличия. Вы указываете sprite для рисования жизней и порядок стека, который может быть либо строкой (горизонтально, слева направо), либо столбцом (вертикально, сверху вниз), а также позицию. - Позиция может быть абсолютной позицией в комнате или относительной позицией экземпляра, выполняющего рисование, а расстояние между изображениями будет основано на ширине или высоте sprite. Обратите внимание, что это просто рисует статическое изображение. - - начальное одиночное изображение (кадр 0) данного sprite - и все последующие кадры будут проигнорированы, как и любые преобразования, которые были добавлены к экземпляру путем изменения переменных экземпляра (например, image_xscale или image_blend). - Текст подписи будет нарисован перед значением lives, и если это текст, то он должен быть обернут символом "", и оба текста будут отформатированы с использованием текущего шрифта, цвета и выравнивания.

-

-

ПРИМЕЧАНИЕ: Это действие предназначено только для использования в различных событиях рисования и не будет рисовать ничего, если использовать его в других местах.

-

-

-

Синтаксис действия:

-

Draw Instance Lives Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
CaptionСтрока, которую нужно нарисовать вместе со значением оценки (предшествует и может быть оставлена пустой)
Stack OrderПорядок рисования (в строке или столбце)
xПозиция x для рисования жизней
yПозиция y для рисования жизней
-

-

Пример:

-

Приведенный выше код блока действий рисует sprites относительно экземпляра для представления - текущее значение lives.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Instance_Score.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Instance_Score.htm index cbafb52f5..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Instance_Score.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Instance_Score.htm @@ -1,69 +0,0 @@ - - - - - - Балл за участие в розыгрыше - - - - - - - - - - -

Балл за участие в розыгрыше

-

С помощью этого действия вы можете нарисовать значение счета экземпляра. При использовании любого действия с оценкой в GameMaker у экземпляра, который его вызывает, будет добавлена новая переменная области видимости экземпляра под названием score. Эту переменную можно проверять - и устанавливать, как и любую другую переменную. В случае с этим действием переменная будет выведена на экран в заданной позиции вместе с любым текстом подписи, который вы хотите предоставить. Текст подписи будет нарисован перед значением оценки, и если - текст должен быть обернут символом "", и оба текста будут отформатированы с использованием текущего шрифта, цвета и выравнивания.

-

ПРИМЕЧАНИЕ: Это действие предназначено только для использования в различных событиях рисования и не будет рисовать ничего, если использовать его в других местах.

-

-

-

Синтаксис действия:

-

Draw Instance Score Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
CaptionСтрока, которую нужно нарисовать вместе со значением оценки (предшествует и может быть оставлена пустой)
xПозиция x, в которой будет нарисован счет
yПозиция y для рисования счета
-

-

Пример:

-

Приведенный выше код блока действий рисует счет, используя заданное форматирование рисования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Line.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Line.htm index 08f30df71..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Line.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Line.htm @@ -1,72 +0,0 @@ - - - - - - Нарисовать линию - - - - - - - - - - -

Нарисовать линию

-

Это действие нарисует линию в заданном положении в комнате. Вы указываете начальную x/y позицию, а затем конечную x/y позицию, и линия будет проведена между ними с использованием текущего цвета рисования. Позиция может быть либо абсолютной позицией - внутри комнаты, либо позицией относительно экземпляра, вызывающего действие.

-

ПРИМЕЧАНИЕ: Это действие предназначено только для использования в различных событиях рисования и не будет рисовать ничего, если использовать его в других местах.

-

-

-

Синтаксис действия:

-

Draw Line Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
xНачальное положение x
yНачальная позиция y
x2Финишное положение x
y2Финишное положение y
-

-

Пример:

-

Приведенный выше код блока действий рисует розовую линию через верхнюю часть комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Rectangle.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Rectangle.htm index 8f1f42465..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Rectangle.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Rectangle.htm @@ -1,73 +0,0 @@ - - - - - - Нарисовать прямоугольник - - - - - - - - - - -

Нарисовать прямоугольник

-

Это действие нарисует прямоугольник в заданной позиции внутри комнаты. Вы указываете верхнюю левую позицию и нижнюю правую позицию, и прямоугольник будет нарисован между ними, причем позиция может быть либо абсолютной позицией внутри комнаты, либо - позицией относительно экземпляра, вызывающего действие. Вы также можете установить, может ли прямоугольник быть заполнен или очерчен, установив флажок заполнения в нижней части.

-

ПРИМЕЧАНИЕ: Это действие предназначено только для использования в различных событиях рисования и не будет рисовать ничего, если использовать его в других местах.

-

-

-

Синтаксис действия:

-

Draw Rectangle Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
LeftЛевая позиция, с которой начинается рисование
TopВерхняя позиция, с которой следует начинать рисовать
RightПравильная позиция для завершения рисования
BottomНижняя позиция для завершения рисования
-

-

Пример:

-

Приведенный выше код блока действий рисует два прямоугольника, один зеленый и заполненный, а другой желтый и - только контур, в позиции относительно экземпляра, вызывающего действия.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Self.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Self.htm index 8ed05aeb5..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Self.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Self.htm @@ -1,48 +0,0 @@ - - - - - - Нарисовать себя - - - - - - - - - - -

Нарисовать себя

-

Когда вы добавляете любое действие или код в событие Draw Event объекта, вы сообщаете GameMaker, что вы берете на себя управление и что вы будете указывать ему, что рисовать в дальнейшем (по умолчанию экземпляр будет рисовать sprite, назначенный ему - в редакторе объектов, когда в основном событии Draw Event нет никаких действий). Это означает, что все назначенные sprite больше не будут рисоваться, пока вы явно не скажете об этом, и тогда вы будете использовать это действие. Это действие просто рисует назначенный sprite для объекта - объекта с любыми преобразованиями, которые могли быть установлены в предыдущих событиях (например, масштабирование, смешивание или изменение альфа-канала) на текущем суб-изображении.

-

ПРИМЕЧАНИЕ: Это действие предназначено только для использования в различных событиях рисования и не будет рисовать ничего, если использовать его в других местах.

-

-

-

Синтаксис действия:

-

Draw Self Icon

-

Пример:

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Sprite.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Sprite.htm index 25a954014..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Sprite.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Sprite.htm @@ -1,75 +0,0 @@ - - - - - - Нарисовать спрайт - - - - - - - - - - -

Нарисовать спрайт

-

Это действие нарисует sprite где-нибудь в комнате. Вы указываете sprite, позицию (либо абсолютную позицию в комнате, либо относительную позицию по отношению к экземпляру, выполняющему рисование) и кадр анимации sprite, если у него несколько кадров (обратите внимание, что кадры изображения нумеруются от 0 и выше). - кадров (обратите внимание, что кадры изображения нумеруются от 0 и выше). Если у вас есть анимированный sprite и вы хотите, чтобы он рисовал кадры, как если бы он был назначен объекту, то используйте -1 для индекса кадра или встроенную переменную экземпляра image_index, - но учтите, что если объекту не назначен sprite, то он не будет анимирован, а если назначенный sprite имеет количество кадров, отличное от рисуемого, то sprite будет рисоваться с лишними или пропущенными кадрами.

-

ВАЖНО: Это действие не нарисует sprite преобразованным, даже если вы изменили наложение или масштаб изображения. Для этого см. действие Рисовать Sprite трансформированным.

-

ПРИМЕЧАНИЕ: Это действие предназначено только для использования в различных событиях рисования и не будет рисовать ничего, если использовать его в других местах.

-

-

-

Синтаксис действия:

-

Draw Sprite Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
Sprite sprite для рисования
xПозиция x для рисования
yПозиция y для рисования
Frame IndexИндекс кадра для рисования
-

-

Пример:

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Sprite_Transformed.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Sprite_Transformed.htm index ee3670c6f..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Sprite_Transformed.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Sprite_Transformed.htm @@ -1,92 +0,0 @@ - - - - - - Нарисовать спрайт трансформированным - - - - - - - - - - -

Нарисовать Sprite Трансформированный

-

Эта функция рисует заданный sprite аналогично действию Draw Sprite, но с дополнительными опциями для изменения масштаба, смешивания, вращения и рамки рисуемого sprite. Изменение этих значений не изменяет - ресурс (только то, как он рисуется), и вы можете использовать любую из доступных переменных свойств спрайта вместо прямых значений для всех аргументов в функции. Изображение ниже иллюстрирует - как различные значения влияют на отрисовку спрайта:

-

Draw Sprite Transformed Icon

-

ПРИМЕЧАНИЕ Смешивание цветов рекомендуется для цели HTML5 только при включенном WebGL, хотя вы все равно можете задать цвет смешивания, если он не включен, и он будет смешивать sprite как обычно. Однако при таком смешивании создается дубликат. - sprite который затем сохраняется в кэше и используется при необходимости. Это далеко не оптимально, и если вы используете многократное изменение цвета, это замедлит производительность вашей игры, если вы не активируете WebGL. если вы не хотите использовать WebGL, то вы можете установить - размер кэша шрифтов, чтобы попытаться ограничить это, если потребуется, используя функцию sprite_set_cache_size().

-

ПРИМЕЧАНИЕ: Это действие предназначено только для использования в различных событиях рисования и не будет рисовать ничего, если использовать его в других местах.

-

-

Синтаксис действия:

-

Transformed Sprite Examples

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
Sprite sprite для рисования
FrameКадр sprite для рисования (используйте встроенную переменную image_index для текущего кадра).
XПозиция x для рисования в пределах комнаты
YПозиция y для рисования в пределах комнаты
Scale XМасштабный коэффициент для оси X (используйте встроенную переменную image_xscale для текущего масштаба X).
Scale YМасштабный коэффициент для оси Y (используйте встроенную переменную image_yscale для текущего масштаба Y).
RotationУгол рисования для sprite (от 0 до 360, вращение против часовой стрелки, где 0 - вправо - используйте встроенную переменную image_angle для текущего вращения).
ColourЦвет для смешивания с sprite (по умолчанию белый, а для текущего цвета можно использовать встроенную переменную image_blend ).
-

-

Пример:

-

Приведенный выше код блока действий проверяет переменную, и если она имеет значение true, то sprite рисуется со случайным масштабированием по осям x и y и смешивается с красным цветом, в противном случае sprite рисуется с использованием преобразований по умолчанию.

-

-

-

- - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Stacked_Sprites.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Stacked_Sprites.htm index 50731575d..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Stacked_Sprites.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Stacked_Sprites.htm @@ -1,78 +0,0 @@ - - - - - - Рисование сложенных спрайтов - - - - - - - - - - -

Рисование сложенных спрайтов

-

Это действие нарисует sprite заданное количество sprites друг за другом в заданном положении в комнате. Вы указываете sprite для рисования и порядок укладки, который может быть либо ряд (горизонтально, слева направо), либо столбец (вертикально, - сверху вниз), а также количество sprites для рисования и позицию. Позиция может быть абсолютной позицией в комнате или относительной позицией экземпляра, выполняющего рисунок, а расстояние между изображениями будет основано на следующих параметрах - sprite Обратите внимание, что при этом рисуется статическое изображение - начальное одиночное изображение (кадр 0) данного sprite - и все последующие кадры будут проигнорированы, как и любые преобразования, добавленные путем изменения переменных экземпляра (например, image_xscale или image_blend).

-

ПРИМЕЧАНИЕ: Это действие предназначено только для использования в различных событиях рисования и не будет рисовать ничего, если использовать его в других местах.

-

-

-

Синтаксис действия:

-

Draw Stacked Sprites Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
Sprite sprite для рисования
Stack OrderПорядок рисования (в строке или столбце)
NumberКоличество sprites для рисования
xПозиция x для рисования
yПоложение по оси y для рисования
-

-

Пример:

-

Приведенный выше код блока действий получает количество экземпляров объекта "obj_Player" - и затем использует его для рисования на экране ряда маркеров sprites.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Transformed_Value.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Transformed_Value.htm index 57bd48e36..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Transformed_Value.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Transformed_Value.htm @@ -1,88 +0,0 @@ - - - - - - Нарисовать преобразованное значение - - - - - - - - - - -

Нарисовать преобразованное значение

-

С помощью этого действия вы можете вывести на экран строковую надпись и/или переменную или значение. Аргумент caption представляет собой строку, которую вы хотите добавить перед значением, и при необходимости может быть оставлен пустым, а значение может быть переменной, фиксированным значением или - другой строкой - в этом случае она должна быть заключена в кавычки и также может быть оставлена пустой, если это необходимо. Затем вы указываете позицию, в которой должна быть нарисована строка, либо как абсолютную позицию, либо как позицию относительно экземпляра, рисующего - текста. Дополнительно можно задать масштаб текста, растягивая его по горизонтальной или вертикальной оси, а также поворот (углы поворота текста задаются против часовой стрелки, поэтому при установке значения 90° текст будет повернут влево, а -90° - вправо). - вправо). Масштабирование осуществляется по заданному коэффициенту, поэтому при масштабе 0,5 ширина текста уменьшится вдвое, при масштабе 2 - вдвое, а значение 1 по умолчанию не изменяет масштаба. Обратите внимание, что внешний вид текста при рисовании зависит от - используемого шрифта, цвета и выравнивания. Все эти параметры можно изменить перед рисованием, как показано в примере ниже.

-

ПРИМЕЧАНИЕ: Это действие предназначено только для использования в различных событиях рисования и не будет рисовать ничего, если использовать его в других местах.

-

-

-

Синтаксис действия:

-

Draw Transformed Value Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
CaptionНадпись для рисования (строка), можно оставить пустой
ValueЗначение для рисования (вещественное, переменное или строка)
xПозиция x для рисования
yПозиция y для рисования
xscaleКоэффициент масштабирования x (горизонтальный), по умолчанию 1
yscaleКоэффициент масштабирования y (вертикальный), по умолчанию 1
RotationУгол поворота для рисования текста
-

-

Пример:

-

Приведенный выше код блока действий устанавливает цвет, шрифт и затем выравнивает текст - для рисования от центра, прежде чем нарисовать значение "current_time" вместе с надписью "TIME: ", увеличенной в два раза и слегка "вибрирующей" из-за случайного изменения угла.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Value.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Value.htm index 5dae573fc..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Value.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Draw_Value.htm @@ -1,74 +0,0 @@ - - - - - - Чертежное значение - - - - - - - - - - -

Чертежное значение

-

С помощью этого действия вы можете вывести на экран строковую надпись и/или переменную или значение. Аргумент caption - это строка, которую вы хотите добавить перед значением, и при необходимости ее можно оставить пустой, но если вы хотите включить текст, его следует заключить в кавычки. - а значение может быть переменной, фиксированным значением или другой строкой - в этом случае его тоже следует заключить в кавычки, но его нельзя оставлять пустым. Затем вы указываете позицию, в которой должна быть нарисована строка, либо как абсолютную позицию - или как позицию относительно экземпляра, рисующего текст. Обратите внимание, что вид текста при рисовании зависит от используемого шрифта, цвета и выравнивания. Все эти параметры можно изменить перед рисованием, как показано в примере ниже.

-

ПРИМЕЧАНИЕ: Это действие предназначено только для использования в различных событиях рисования и не будет рисовать ничего, если использовать его в других местах.

-

-

-

Синтаксис действия:

-

Draw Value Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
CaptionНадпись для рисования (строка), можно оставить пустой
ValueЗначение для рисования (вещественное, переменное или строка)
xПозиция x для рисования
yПоложение по оси y для рисования
-

-

Пример:

-

Приведенный выше код блока действий устанавливает шрифт, цвет шрифта и затем выравнивает текст для рисования от - перед тем, как нарисовать значение "level_num" вместе с надписью "Level: ".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Drawing_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Drawing_Actions.htm index c62688ca9..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Drawing_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Drawing_Actions.htm @@ -1,170 +0,0 @@ - - - - - - Действия при рисовании - - - - - - - - - - -

Библиотека действий при рисовании

-

В библиотеке действий рисования можно найти действия, необходимые для рисования sprites, текста или фигур, а также для установки определенных свойств рисования. - фигуры, а также установить определенные свойства рисования. Большинство из этих действий предназначены только для использования в различных событиях рисования объекта и могут не работать, если используются вне - События рисования. Исключением являются действия Set, которые можно добавить в любое событие, и они будут влиять на все рисование для всех последующих экземпляров.

-

Важно отметить, что если вы добавите какие-либо действия в основное событие Draw Event объекта, то он не будет рисовать sprite, который был назначен данному экземпляру, пока вы явно не прикажете GameMaker нарисовать его, используя действие - например, Draw Self. В принципе, GameMaker будет по умолчанию рисовать любой sprite, назначенный экземпляру, только если в событии Draw Event нет ничего другого.

-

Ниже перечислены доступные действия Draw:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Drawing Action LibraryНарисовать себя
Draw Self IconЧертежное значение
Draw Value IconНарисовать преобразованное значение
Draw Transformed Value IconНарисовать спрайт
Draw Sprite IconНарисовать Sprite Трансформированный
Draw Sprite Transformed IconРисование сложенных спрайтов
Draw Stacked Sprites IconНарисовать прямоугольник
Draw Rectangle IconНарисовать градиентный прямоугольник
Draw Gradient Rectangle IconНарисовать эллипс
Draw Ellipse IconНарисовать градиентный эллипс
Draw Gradient Ellipse IconНарисовать линию
Draw Line IconНарисовать панель здоровья
Draw Healthbar IconБалл за участие в розыгрыше
Draw Instance Score IconЗдоровье экземпляра рисунка
Draw Instance Health IconНарисовать жизнь экземпляра
Draw Instance Lives IconУстановите цвет рисунка
Set Draw Colour IconПолучить цвет рисунка
Get Draw Colour IconУстановить альфа рисунка
Set Draw Alpha IconПолучить альфа-рисунок
Get Draw Alpha IconУстановить шрифт
Set Font IconПолучить рисованный шрифт
Get Font IconУстановить выравнивание текста
Set Text Alignment IconПолучить выравнивание текста
-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Get_Draw_Alpha.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Get_Draw_Alpha.htm index 500aa9887..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Get_Draw_Alpha.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Get_Draw_Alpha.htm @@ -1,45 +0,0 @@ - - - - - - Получить альфа-рисунок - - - - - - - - - - -

Получить альфа-рисунок

-

С помощью этого действия вы можете получить общую альфу, используемую рисунком. Действие вернет текущую альфу в указанную вами целевую переменную, которая может быть создана ранее или может быть новой временной переменной (если вы установите флажок "Temp"). - флажок).

-

-

Синтаксис действия:

-

Get Draw Alpha Icon

-

Пример:

-

Приведенный выше блок действий получает текущую альфу рисунка и, если она не установлена в 1 (полностью непрозрачная) - она устанавливается в это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Get_Draw_Colour.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Get_Draw_Colour.htm index d39bc8f85..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Get_Draw_Colour.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Get_Draw_Colour.htm @@ -1,44 +0,0 @@ - - - - - - Получить цвет рисунка - - - - - - - - - - -

Получить цвет рисунка

-

С помощью этого действия вы можете получить цвет, используемый для любых фигур (прямоугольник/эллипс/линия) или для любого рисуемого текста. Действие вернет цвет в указанную вами целевую переменную, которая может быть создана ранее или может быть - быть новой временной (если вы установите флажок "Temp").

-

-

Синтаксис действия:

-

Get Draw Colour Icon

-

Пример:

-

Приведенный выше блок действий получает текущий цвет рисования и, если он не установлен на $ffffff (белый), то он устанавливается на этот цвет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Get_Draw_Font.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Get_Draw_Font.htm index ce70e8a80..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Get_Draw_Font.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Get_Draw_Font.htm @@ -1,45 +0,0 @@ - - - - - - Получить рисованный шрифт - - - - - - - - - - -

Получить рисованный шрифт

-

С помощью этого действия можно получить значение ID шрифта, назначенного в данный момент для рисования. Возвращаемое значение будет либо -1, если шрифт не назначен, либо значение >= 0, которое представляет собой константу шрифта из браузера активов. Возвращаемое значение будет сохранено - в указанной вами целевой переменной, которая может быть создана ранее или может быть новой временной переменной (если вы установите флажок "Temp").

-

-

Синтаксис действия:

-

Get Font Icon

-

Пример:

-

Приведенный выше код блока действий проверяет текущий шрифт, используемый для рисования, и если он не является - данный актив, то он устанавливается на этот актив.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Get_Text_Alignment.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Get_Text_Alignment.htm index 05b1da079..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Get_Text_Alignment.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Get_Text_Alignment.htm @@ -1,74 +0,0 @@ - - - - - - Получить выравнивание текста - - - - - - - - - - -

Получить выравнивание текста

-

Это действие получит выравнивание шрифта для всех текущих действий рисования текста. Вы можете выбрать, какое выравнивание проверять - горизонтальное или вертикальное, и действие вернет одно из следующих постоянных значений, которые представляют различные - тип горизонтального или вертикального выравнивания:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Get Text Alignment IconТекст выровнен по горизонтали влево
Align LeftТекст выровнен по центру по горизонтали
Align CenterТекст выровнен по горизонтали вправо
Align RightТекст выровнен по вертикали к верху
Align TopТекст вертикально выровнен по центру
Align MiddleТекст выровнен по вертикали к низу
-

Возвращаемая константа будет сохранена в указанной вами целевой переменной, которая может быть создана ранее или может быть новой временной переменной (если вы установите флажок "Temp").

-

-

Синтаксис действия:

-

Align Bottom

-

Пример:

-

Приведенный выше код блока действий проверяет горизонтальное выравнивание текста и - если оно не установлено на fa_left, то оно устанавливается на это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Set_Draw_Alpha.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Set_Draw_Alpha.htm index e893ae22c..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Set_Draw_Alpha.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Set_Draw_Alpha.htm @@ -1,58 +0,0 @@ - - - - - - Установить альфа рисунка - - - - - - - - - - -

Установить альфа рисунка

-

С помощью этого действия вы можете установить альфа-коэффициент, который будет использоваться для любых фигур (прямоугольник/эллипс/линия) или для любого текста, который будет нарисован впоследствии. Обратите внимание, что это действие не обязательно вызывать перед каждым действием рисования, оно может быть установлено только один раз в начале игры. - Alpha - это параметр, который контролирует, насколько "прозрачными" будут нарисованные объекты, и основан на шкале от 0 до 1, где 0 - полностью прозрачный, а 1 - полностью непрозрачный.

-

-

Синтаксис действия:

-

Set Draw Alpha Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
AlphaИспользуемое значение альфа (от 0 до 1, по умолчанию 1)
-

-

Пример:

-

Приведенный выше код блока действий устанавливает альфу рисунка на случайное значение между 0 и 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Set_Draw_Colour.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Set_Draw_Colour.htm index ad157b4b7..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Set_Draw_Colour.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Set_Draw_Colour.htm @@ -1,48 +0,0 @@ - - - - - - Установите цвет рисунка - - - - - - - - - - -

Установите цвет рисунка

-

С помощью этого действия вы можете установить цвет, который будет использоваться для любых фигур (прямоугольник/эллипс/линия) или для любого текста, который будет нарисован впоследствии. Обратите внимание, что это действие не обязательно вызывать перед каждым действием рисования, его можно задать только один раз в начале игры. - Например, если весь ваш текст будет желтым, вы можете вызвать это действие в событии Create Event первой комнаты игры, и с этого момента весь текст (и фигуры) будет рисоваться желтым. Однако если вам нужно использовать несколько разных цветов, - то вам нужно будет вызывать это действие перед каждым текстом или фигурой, для которых требуется другой цвет.

-

В нижней части действия есть флажок Use alpha. Это позволяет использовать альфа-компонент цвета для установки альфы рисунка (так же, как и при использовании Set Draw Alpha. Если вы не хотите включать - альфа-компонент и просто иметь сплошной цвет, этот флажок можно отключить (по умолчанию он включен).

-

-

Синтаксис действия:

-

Set Draw Colour Icon

-

Пример:

-

Приведенный выше код блока действий устанавливает шрифт, цвет рисунка и выравнивание для некоторого текста - который рисуется.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Set_Font.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Set_Font.htm index 5bd22529e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Set_Font.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Set_Font.htm @@ -1,48 +0,0 @@ - - - - - - Установить шрифт - - - - - - - - - - -

Установить шрифт

-

С помощью этого действия можно задать шрифт, который будет использоваться для всех последующих действий по рисованию текста. При нажатии на диалог откроется следующее окно, в котором можно выбрать шрифт, который вы хотите использовать:

-

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

-

-

Синтаксис действия:

-

Set Font Icon

-

-

Пример:

-

Приведенный выше код блока действий устанавливает шрифт, цвет рисунка и выравнивание для некоторого текста. - нарисован.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Set_Text_Alignment.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Set_Text_Alignment.htm index 99efb60ae..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Set_Text_Alignment.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Drawing/Set_Text_Alignment.htm @@ -1,94 +0,0 @@ - - - - - - Установить выравнивание текста - - - - - - - - - - -

Установить выравнивание текста

-

Это действие установит выравнивание шрифта для всех последующих действий рисования текста. Вы можете установить горизонтальное выравнивание слева, по центру или справа, а вертикальное выравнивание - сверху, посередине или снизу, и текст будет выровнен относительно x/y - как показано на рисунках ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Set Text Alignment IconТекст выровнен по горизонтали влево
Align LeftТекст выровнен по центру по горизонтали
Align CenterТекст выровнен по горизонтали вправо
Align RightТекст выровнен по вертикали к верху
Align TopТекст вертикально выровнен по центру
Align MiddleТекст выровнен по вертикали к низу
-

Обратите внимание, что это действие устанавливает выравнивание для всех последующих вызовов рисования текста, поэтому его можно вызвать, например, один раз в начале игры - в любом событии, а не только в событии Draw Event - и все действия с рисованным текстом будут использовать установленное выравнивание. - Однако если вам нужно, чтобы несколько действий с рисующим текстом были выровнены по-разному, то вам придется вызывать это действие перед каждым действием с рисующим текстом, который вы хотите выровнять по-разному.

-

-

-

Синтаксис действия:

-

Align Bottom

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
H.AlignЗначение выравнивания по горизонтали (слева, по центру, справа)
V.AlignЗначение вертикального выравнивания (верхнее, среднее, нижнее)
-

-

Пример:

-

Приведенный выше код блока действий устанавливает шрифт, цвет рисунка и выравнивание для некоторого текста - который рисуется.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Close_Ini_File.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Close_Ini_File.htm index 2e48072c9..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Close_Ini_File.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Close_Ini_File.htm @@ -1,46 +0,0 @@ - - - - - - Закрыть файл Ini - - - - - - - - - - -

Закрыть файл Ini

-

Это действие закроет текущий открытый файл Ini. Это действие следует вызывать в тот момент, когда вы закончили чтение или запись в любой открытый Ini файл (Ini файлы открываются с помощью действия Open Ini File). Если вы не используете это действие после использования действия Write To Ini File, то на диск ничего не будет записано, так как информация о файле хранится в памяти до вызова этого действия, после чего она извлекается из памяти - и записывается в файл на диске. Также обратите внимание, что если вы попытаетесь открыть Ini файл, не закрыв предварительно другой (или тот же самый), вы получите ошибку.

-

-

Синтаксис действия:

-

Close Ini File Icon

-

Пример:

-

Приведенный выше код блока действий откроет ini файл для использования, затем получит значение, связанное с - ключом "name" в заголовке "player". Если возвращаемое имя совпадает со значением имени по умолчанию (т.е. файл, раздел или ключ не существует), то перед закрытием файла в него записывается глобальная переменная (и записываются - новых данных на диск).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Copy_File.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Copy_File.htm index 78c43576c..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Copy_File.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Copy_File.htm @@ -1,64 +0,0 @@ - - - - - - Копирование файла - - - - - - - - - - -

Копирование файла

-

С помощью этого действия вы можете скопировать любой файл, сохраненный вашей игрой или входящий в состав Included Files. Вы указываете имя файла для копирования (в виде строки), а затем имя файла, который нужно создать как копию исходного файла (также - в виде строки и включая расширение файла). Указанный файл будет продублирован и получит новое имя.

-

-

Синтаксис действия:

-

Copy File Icon

-

Аргументы:

-

- - - - - - - - - - - - - - - -
АргументОписание
FilenameИмя (в виде строки) файла для копирования
Copy ToИмя (в виде строки) файла, который будет создан как копия
-

-

Пример:

-

Приведенный выше код блока действий проверяет, не существует ли файл ini, и если не существует - то он создается путем копирования другого файла.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Delete_File.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Delete_File.htm index 761d1b329..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Delete_File.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Delete_File.htm @@ -1,60 +0,0 @@ - - - - - - Удалить файл - - - - - - - - - - -

Удалить файл

-

С помощью этого действия вы можете удалить файл, который был создан ранее. Вы указываете имя файла (в виде строки), который нужно удалить. Обратите внимание, что вы не можете удалить файлы, включенные в пакет игры, а только те, которые были созданы - с помощью действий Close Ini или Save Buffer (подробнее см. раздел " Файловая система ").

-

-

Синтаксис действия:

-

Delete File Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
FilenameИмя (в виде строки) файла для удаления
-

-

Пример:

-

Приведенный выше код блока действий проверяет, существует ли файл "checkpoint.sav", и если существует, то проверяет, существует ли файл "checkpoint_OLD.sav". - он существует, то проверяется, существует ли файл "checkpoint_OLD.sav". Если этот файл также существует, то он удаляется, а затем оригинальный файл "checkpoint.sav" переименовывается в "checkpoint_OLD.sav". Наконец, буфер - сохраняется как "checkpoint.sav" (по сути, мы создаем резервную копию сохраненного файла буфера при каждом сохранении, так что всегда есть "текущее" сохранение и "старый" файл сохранения).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/File_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/File_Actions.htm index cb9ed044a..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/File_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/File_Actions.htm @@ -1,109 +0,0 @@ - - - - - - Действия с файлами - - - - - - - - - - -

Файлы Библиотека действий

-

-

Действия с файлами работают с двумя различными типами файлов - файлами буфера и файлами Ini, а также имеют определенные общие действия с файлами для переименования или копирования существующих файлов.

-

Буферные файлы создаются путем сохранения данных из ранее созданного буфера, которые затем могут быть загружены в буфер в любое время в будущем. Более подробную информацию о буферах вы можете найти здесь: Действия с буфером.

-

Файлы Ini - это маленькие, легкие файлы, совместимые с большинством платформ. Они идеально подходят для хранения небольших фрагментов информации, например, предпочтений интерфейса, локальных высоких результатов, данных об уровне и т.д... и очень просты в использовании. Ini файлы не - для использования этих действий, и вы можете читать из несуществующего Ini файла и просто получите возвращаемое значение default (которое вы укажете), однако мы рекомендуем вам создать хотя бы "базовый" - ini файл для открытия и изменения перед использованием действий. Этот базовый ini файл можно создать, просто вызвав действие Open Ini File, за которым следует Close Ini File, так как закрытие - файл будет записан на диск, или вы можете включить его в Included Files браузера активов. Если в качестве базового Ini вы используете файл, включенный в Браузер активов, вам также следует прочитать - раздел руководства о том, как работает файловая система.

-

ПРИМЕЧАНИЕ: Для игр с локализацией очень важно, чтобы акцентированные буквы могли быть прочитаны из внешних файлов. Это означает, что вам следует сначала создать ini-файл в формате UTF8, а затем добавить его в GameMaker как включенный файл - чтобы он экспортировался при запуске игры и использовался вместо стандартного ini-файла в формате ANSI, который создается функциями ini, если он не был задан ранее. Таким образом, вы сможете читать и писать в нем правильно, со всеми ударениями и нелатинскими буквами. - сохраняются все ударения и нелатинские буквы.

-

Для работы с файлами существуют следующие действия:

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Load Buffer IconБуфер загрузки
Save Buffer IconСохранить буфер
Rename File IconПереименовать файл
Copy File IconКопирование файла
Delete File IconУдалить файл
Open Ini File IconОткрыть файл Ini
Close Ini File IconЗакрыть файл Ini
Write To Ini File IconЗапись в файл Ini
Read Ini File IconЧтение Ini файла
If File Exists IconЕсли файл существует
-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/If_File_Exists.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/If_File_Exists.htm index 0047d39c3..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/If_File_Exists.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/If_File_Exists.htm @@ -1,61 +0,0 @@ - - - - - - Если файл существует - - - - - - - - - - -

Если файл существует

-

С помощью этого действия вы можете проверить, существует ли файл с заданным именем. Вы выбираете файл для проверки (в виде жала и включая расширение), и функция возвращает true, если он существует, и false, если нет. Обратите внимание, что - функция вернет true, если файл существует в пакете игры как Included File или если файл был сохранен во время работы игры (более подробную информацию см. в разделе " Файловая система ").

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

If File Exists Icon

-

-

Синтаксис действия:

-

If File Exists drop actions

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
TypeТип данных для чтения, либо string (заключенный в кавычки ""), либо real number
-

-

Пример:

-

Приведенный выше код блока действий создаст переменную для хранения данных буфера, а затем проверит, не был ли - был ли ранее создан файл сохранения буфера. Если файл существует, то он загружается в созданную нами переменную буфера, если же файла не существует, то он создается, записывается и затем сохраняется, готовый к загрузке в следующий раз.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Load_Buffer.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Load_Buffer.htm index b3c4c0fbc..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Load_Buffer.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Load_Buffer.htm @@ -1,64 +0,0 @@ - - - - - - Буфер загрузки - - - - - - - - - - -

Буфер загрузки

-

С помощью этого действия можно загрузить буфер, который ранее был сохранен с помощью действия Save Buffer. Действие создаст новый буфер, загрузит в него файл данных и вернет уникальное значение ID для идентификации буфера в - переменной. Вы указываете имя файла для загрузки (в виде строки) и переменную для хранения возвращаемого идентификатора буфера. Обратите внимание, что если вы отметили переменную как временную локальную переменную, вам нужно убедиться, что вы удалите буфер, созданный этой функцией, перед - иначе вы потеряете ссылку на него и получите утечку памяти при удалении переменной.

-

-

Синтаксис действия:

-

Load Buffer Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
FilenameИмя (в виде строки) файла, который нужно открыть
TargetЦелевая переменная для хранения уникального значения ID для буфера, созданного при загрузке
-

-

Пример:

-

Приведенный выше код блока действий создаст переменную для хранения данных буфера, а затем проверит, не был ли ранее создан - файл сохранения буфера был создан ранее. Если файл существует, то он загружается в созданную нами переменную буфера, если же файла не существует, то он создается, записывается и затем сохраняется, готовый к загрузке в следующий раз.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Open_Ini_File.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Open_Ini_File.htm index 491fd3942..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Open_Ini_File.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Open_Ini_File.htm @@ -1,62 +0,0 @@ - - - - - - Открыть файл Ini - - - - - - - - - - -

Открыть файл Ini

-

С помощью этого действия вы можете открыть файл Ini для чтения и/или записи. Если файл Ini не существует в проверяемом месте, GameMaker может создать его, но только если вы запишете в него данные. Если вы только считываете информацию из - Ini файла, то будут возвращены значения по умолчанию для функции чтения, но сам Ini файл создан не будет.

-

Обратите внимание, что одновременно у вас может быть открыт только один Ini файл, и не забудьте использовать Close Ini File, как только вы закончите чтение/запись из Ini файла, так как информация не сохраняется на диске до этого момента (она хранится в памяти, пока файл не будет закрыт). - до этого момента (она хранится в памяти до тех пор, пока файл не будет закрыт).

-

-

Синтаксис действия:

-

Open Ini File Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
FilenameИмя - в виде строки и с расширением .ini - файла для открытия
-

-

Пример:

-

Приведенный выше код блока действий откроет ini файл для использования, затем получит значение, связанное с - ключом "name" в заголовке "player". Если возвращаемое имя совпадает со значением имени по умолчанию (т.е. файл, раздел или ключ не существует), то перед закрытием файла в него записывается глобальная переменная (и записываются - новых данных на диск).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Read_Ini_File.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Read_Ini_File.htm index 6a401c83e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Read_Ini_File.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Read_Ini_File.htm @@ -1,84 +0,0 @@ - - - - - - Чтение Ini файла - - - - - - - - - - -

Чтение Ini файла

-

С помощью этого действия вы можете прочитать часть данных из Ini файла. Вы должны предварительно открыть Ini файл для чтения/записи с помощью действия Открыть Ini файл, а затем с помощью этого действия указать тип данных для чтения - (либо вещественное число, либо строка, заключенная в ""), а также заголовок секции и ключ в этой секции, из которого нужно получить данные. Вы также можете указать значение по умолчанию, которое может быть как вещественным числом, так и строкой, а тип должен - совпадать с "Type", установленным в действии. Это значение по умолчанию будет возвращено действием, если произойдет одно из следующих событий:

- -

При любом из вышеперечисленных обстоятельств вы получите возвращенное значение по умолчанию, а не значение из файла Ini. Возвращенное значение будет сохранено в указанной вами целевой переменной, которая также может быть создана в этот момент, если отмечена как - как временная локальная переменная.

-

ВАЖНО! Попытка прочитать данные из Ini файла, который не был открыт ранее с помощью действия Open Ini File, приведет к серьезной ошибке и краху вашей игры.

-

-

Синтаксис действия:

-

Read Ini File Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
TypeТип данных для чтения, либо string (заключенный в кавычки ""), либо real number
SectionРаздел файла Ini для чтения (в виде строки)
KeyКлюч в разделе, из которого нужно читать (в виде строки)
DefaultЗначение по умолчанию, которое возвращается, если файл, раздел или ключ не существует.
TargetЦелевая переменная для хранения возвращаемого значения из действия
-

-

Пример:

-

Приведенный выше код блока действий открывает файл Ini для чтения, затем использует данные, считанные из него, для установки - 3 различных глобальных переменных, после чего снова закроет файл.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Rename_File.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Rename_File.htm index 1d574966b..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Rename_File.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Rename_File.htm @@ -1,64 +0,0 @@ - - - - - - Переименовать файл - - - - - - - - - - -

Переименовать файл

-

С помощью этого действия вы можете переименовать любой файл, сохраненный вашей игрой. Вы указываете имя файла, которое нужно изменить (в виде строки), а затем новое имя (также в виде строки и включая расширение файла), и файл будет переименован. Обратите внимание, что вы не можете переименовать ни один файл, который был включен в игру в качестве включенного файла (более подробную информацию см. в разделе " Файловая система ").

-

-

Синтаксис действия:

-

Rename File Icon

-

Аргументы:

-

- - - - - - - - - - - - - - - -
АргументОписание
FilenameИмя (в виде строки) файла для переименования
New NameНовое имя (в виде строки) для файла
-

-

Пример:

-

Приведенный выше код блока действий проверяет, существует ли файл "checkpoint.sav", и если существует, то проверяет, существует ли файл "checkpoint_OLD.sav". - он существует, то проверяется, существует ли файл "checkpoint_OLD.sav". Если этот файл также существует, то он удаляется, а затем оригинальный файл "checkpoint.sav" переименовывается в "checkpoint_OLD.sav". Наконец, буфер - сохраняется как "checkpoint.sav" (по сути, мы создаем резервную копию сохраненного файла буфера при каждом сохранении, так что всегда есть "текущее" сохранение и "старый" файл сохранения).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Save_Buffer.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Save_Buffer.htm index c78617869..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Save_Buffer.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Save_Buffer.htm @@ -1,63 +0,0 @@ - - - - - - Сохранить буфер - - - - - - - - - - -

Сохранить буфер

-

С помощью этого действия вы можете сохранить файл, содержащий данные из буфера. Вы указываете уникальный идентификатор буфера (полученный при создании буфера с помощью Create Buffer) и задаете имя файла (в виде строки, - с расширением по вашему выбору), и буфер будет записан в этот файл, готовый к повторной загрузке с помощью Load Buffer.

-

-

Синтаксис действия:

-

Save Buffer Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
BufferУникальное значение идентификатора буфера для сохранения
FilenameИмя (в виде строки) файла для сохранения
-

-

Пример:

-

Приведенный выше код блока действий создаст переменную для хранения данных буфера, а затем проверит, не был ли ранее создан - файл сохранения буфера был создан ранее. Если файл существует, то он загружается в созданную нами переменную буфера, если же файла не существует, то он создается, записывается и затем сохраняется, готовый к загрузке в следующий раз.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Write_To_Ini_File.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Write_To_Ini_File.htm index be1bd1d56..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Write_To_Ini_File.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Files/Write_To_Ini_File.htm @@ -1,76 +0,0 @@ - - - - - - Запись в файл Ini - - - - - - - - - - -

Запись в файл Ini

-

С помощью этого действия вы можете записать числовое значение или строку в файл Ini. Вы должны предварительно открыть Ini файл для чтения/записи с помощью действия Открыть Ini файл, а затем с помощью этого действия указать тип данных для записи (либо вещественное число, либо строка, заключенная в ""), а также заголовок секции, ключ в этой секции и тип данных. - данных для записи (вещественное число или строка, заключенная в ""), а также заголовок секции, ключ в этой секции и значение для ключа. Для наглядного представления структуры Ini файла см. это изображение:

-

Как вы можете видеть, файлы Ini разбиваются на секции - где каждая секция имеет свое собственное имя заголовка - и - затем каждая секция разбивается на различные пары ключ/значение (подобно структуре данных Map). Обратите внимание, что вы можете создавать Ini файлы самостоятельно, используя любую программу для обработки текста (например, Notepad на - Windows) и затем включить их в качестве Включенного файла для чтения и записи в вашей игре.

-

ВАЖНО! Попытка прочитать данные из Ini файла, который не был открыт ранее с помощью действия Open Ini File, приведет к серьезной ошибке и краху вашей игры.

-

ВАЖНО! Это только запись данных в память, а чтобы окончательно записать данные в файл на диске, необходимо вызвать Close Ini File, иначе данные не будут сохранены.

-

-

Синтаксис действия:

-

Write To Ini File Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
TypeТип данных для записи, либо string (заключенный в кавычки ""), либо real number
SectionРаздел файла Ini для записи (в виде строки)
KeyКлюч в разделе для записи (в виде строки).
ValueЗначение для записи, либо строка, либо вещественное число в зависимости от аргумента "тип" (см. выше).
-

-

Пример:

-

Приведенный выше код блока действий откроет ini, затем запишет данные в три разных ключа под - (одна строка и два вещественных числа), после чего снова закроет ini файл (тем самым записав данные на диск).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Exit_Game.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Exit_Game.htm index 98f81b662..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Exit_Game.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Exit_Game.htm @@ -1,51 +0,0 @@ - - - - - - Выходная игра - - - - - - - - - - -

Выходная игра

-

С помощью этого действия вы можете завершить игру, вызвав событие Other - Game End Event. Обратите внимание, что это происходит не в момент вызова действия, а в конце текущего - поэтому любые действия, которые вы выполняете после вызова этого действия, будут выполняться до тех пор, пока не будет достигнут конец события или сценария.

-

Обратите внимание, что это действие имеет следующие ограничения:

- -

-

Синтаксис действия:

-

Exit Game Icon

-

Пример:

-

Приведенный выше код блока действий проверит глобальную переменную и, если она вернет значение true, игра будет - завершится.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Game_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Game_Actions.htm index 081acc64d..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Game_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Game_Actions.htm @@ -1,66 +0,0 @@ - - - - - - Игровые действия - - - - - - - - - - -

Библиотека игровых действий

-

Сайт Игра Библиотека действий связана с вещами, которые влияют на основной цикл игры, и имеет следующие действия:

-

- - - - - - - - - - - - - - - - - - - -
Game Action LibraryПерезапустить игру
Restart Game IconВыходная игра
Exit Game IconСохранить игру
Save Game IconЗагрузить игру
-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Load_Game.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Load_Game.htm index 1eb03f046..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Load_Game.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Load_Game.htm @@ -1,59 +0,0 @@ - - - - - - Загрузить игру - - - - - - - - - - -

Загрузить игру

-

Это действие загружает игру, которая ранее была сохранена с помощью действия Save Game. Вы указываете имя файла, который нужно загрузить (в виде строки, включая расширение), и игра будет загружена и продолжит работу - с сохраненной точки. Обратите внимание, что это не универсальная система сохранения/загрузки, и попытка загрузить игру, сохраненную в предыдущем запуске проекта, может привести к ошибкам (особенно если вы использовали такие вещи, как структуры данных или частицы), и поэтому вы должны пытаться загрузить только те игры, которые были сохранены в процессе прохождения одной игры (для таких вещей, как контрольные точки). Также обратите внимание, что файл не будет загружен до окончания текущего события или сценария, поэтому любые действия после вызова действия load все равно будут выполнены. Более подробный подход к загрузке сохраненных данных игры см. в разделе Действия с файлами.

-

-

Синтаксис действия:

-

Load Game Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
TimelineРесурс временной шкалы для назначения экземпляру
-

-

Пример:

-

Приведенный выше код блока действий проверит глобальную переменную и, если она меньше или равна - 0, то будет загружена ранее сохраненная игра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Restart_Game.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Restart_Game.htm index 331366a54..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Restart_Game.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Restart_Game.htm @@ -1,46 +0,0 @@ - - - - - - Перезапустить игру - - - - - - - - - - -

Перезапустить игру

-

С помощью этого действия вы можете перезапустить игру. Это аналогично запуску игры в первый раз, поэтому будет вызвано событие Other - Game Start Event, а также Other - Game End Event. - Однако следует отметить, что глобальные переменные не будут повторно инициализированы, если это не указано в явном виде - это означает, что если вы не определите и не установите их в самой первой комнате игры, они сохранят свои предыдущие значения. - Структуры данных и частицы также не будут освобождены, поэтому это должно быть сделано до вызова действия Restart Game или в событии Game End Event. Также обратите внимание, что игра будет перезапущена не в момент вызова этого действия, а в конце сценария или события, в котором размещено действие, поэтому если после этого действия размещены какие-либо действия, они все равно будут вызваны и игра будет перезапущена в конце блока.

-

-

Синтаксис действия:

-

Restart Game Icon

-

Пример:

-

Приведенный выше код блока действий будет проверять нажатие кнопки геймпада и, если оно будет обнаружено, перезапустит - игру.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Save_Game.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Save_Game.htm index 7b718ac5e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Save_Game.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Game/Save_Game.htm @@ -1,60 +0,0 @@ - - - - - - Сохранить игру - - - - - - - - - - -

Сохранить игру

-

Это действие выполняет базовое сохранение игры в заданный файл. Вы указываете имя файла (в виде строки и включая расширение), и действие выполнит ограниченное сохранение из текущего состояния игры. Важно понимать, что действие - предназначено для создания "моментального снимка" текущего состояния игры и используется скорее как система контрольных точек, чем как универсальная система сохранения, поскольку оно не сохраняет динамические ресурсы (например, структуры данных или частицы). Поэтому использовать это действие следует очень осторожно, чтобы не получить ошибок или утечек памяти. Для более комплексного подхода к сохранению игровых данных см. раздел Действия с файлами.

-

-

Синтаксис действия:

-

Save Game Icon

-

Аргументы:

-

- - - - - - - - - - - -
АргументОписание
FilenameИмя - в виде строки и с расширением - для сохранения файла (если файл уже существует, он будет перезаписан).
-

-

Пример:

-

Приведенный выше код блока действий будет проверять наличие столкновения с другим экземпляром, и если оно найдено, то проверяется - переменную экземпляра. Если переменная возвращает значение true, то игра сохраняется, а переменная устанавливается в значение false.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Gamepad_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Gamepad_Actions.htm index 3db8bb20f..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Gamepad_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Gamepad_Actions.htm @@ -1,200 +0,0 @@ - - - - - - Действия с геймпадом - - - - - - - - - - -

Библиотека действий геймпада

-

ВGameMaker есть ряд специальных действий, которые можно использовать для обнаружения аналоговых и цифровых элементов управления с нескольких подключенных геймпадов. Эти действия требуют указания значения индекса геймпада, который представляет собой число (считая от 0), обозначающее выбранный геймпад. Обратите внимание, что при подключении геймпада к устройству (или его извлечении) срабатывает асинхронное системное событие (однако для решения этой проблемы вам может понадобиться код).

-

Слоты для геймпадов индексируются от 0. Слоты с 0 по 3 включительно предназначены только для геймпадов Xinput, т.е. контроллеров Xbox360 и совместимых с ними. Однако вы также можете проверить слоты с 4 по 11 включительно для геймпадов DirectInput, что означает, что вы можете обнаружить множество других моделей контроллеров при подключении через эти слоты.

-

Входные константы

-

При работе с действиями геймпада ввод может осуществляться через оси, кнопки или шляпы, которые GameMaker присваивает следующим встроенным константам (обратите внимание, что "шляпы" обычно обнаруживаются только на нестандартных контроллерах):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
gp_face1Верхняя кнопка 1 (соответствует кнопке "A" на контроллере Xbox 360 и кресту на контроллере PS)
gp_face2Верхняя кнопка 2 (соответствует кнопке "B" на контроллере Xbox 360 и кругу на контроллере PS)
gp_face3Верхняя кнопка 3 (соответствует "X" на контроллере Xbox 360 и квадрату на контроллере PS)
gp_face4Верхняя кнопка 4 (соответствует букве "Y" на контроллере Xbox 360 и треугольнику на контроллере PS)
gp_shoulderlПуговица на левом плече
gp_shoulderlbСпусковой крючок левого плеча
gp_shoulderrПравая плечевая кнопка
gp_shoulderrbСпусковой крючок правого плеча
gp_selectКнопка выбора (на контроллере DS4 она срабатывает при нажатии сенсорной панели вниз)
gp_startКнопка запуска (это кнопка "опции" на контроллере PS4)
gp_sticklЛевый стик нажат (как кнопка)
gp_stickrПравый стик нажат (как кнопка)
gp_paduD-пад вверх
gp_paddD-пад вниз
gp_padlD-pad влево
gp_padrD-pad вправо
gp_axislhГоризонтальная ось левой рукоятки (аналог)
gp_axislvВертикальная ось левой рукоятки (аналог)
gp_axisrhГоризонтальная ось правого стика (аналог)
gp_axisrvПравый стик вертикальной оси (аналог)
-

Чтобы лучше понять, какую именно часть контроллера представляет каждая константа, вы можете обратиться к следующему изображению стандартного геймпада Xinput:

-

Gamepad Action Library

-

Действия

-

Ниже перечислены все доступные действия с геймпадом:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
XInput Gamepad ConfigurationПолучить ось геймпада
Gamepad Get Axis IconПолучить триггер геймпада
Gamepad Get Trigger IconПолучить счетчик геймпада
Gamepad Get Count IconПодключите геймпад
Gamepad Get Connected IconУстановите мертвую зону оси геймпада
Gamepad Set Axis Deadzone IconНастройка порога нажатия кнопок геймпада
Set Gamepad Button Threshold IconЕсли нажата кнопка геймпада
If Gamepad Button Pressed IconЕсли кнопка геймпада нажата
If Gamepad Button Down IconЕсли кнопка геймпада отпущена
-

-

-

-

-

-

-

-

-

-

-

-

-

В приведенном ниже списке указана текущая совместимость платформ (обратите внимание, что она будет меняться с будущими обновлениями):

- -

sudo apt-get install jstest-gtk
- sudo apt-get install joystick.

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Get_Gamepad_Axis.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Get_Gamepad_Axis.htm index 00327de40..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Get_Gamepad_Axis.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Get_Gamepad_Axis.htm @@ -1,71 +0,0 @@ - - - - - - Получить ось геймпада - - - - - - - - - - -

Получить ось геймпада

-

Вы можете использовать это действие для получения значений различных осей с данного геймпада. Вы указываете индекс геймпада (это номер "слота", который занимает геймпад) и выбираете ось для проверки: левый или правый стик, горизонтальную - или вертикальной. Возвращаемое значение будет от -1 до 1 для каждой из доступных горизонтальных и вертикальных осей: -1 - влево и 1 - вправо для горизонтальной оси, и -1 - вверх и 1 - вниз для вертикальной оси. Это возвращаемое значение будет сохранено в - целевой переменной, которую вы предоставите для дальнейшего использования. Вы можете отметить ее как переменную "Temp", что означает, что действие создаст новую временную (локальную) переменную для хранения возвращаемого значения, как показано в примере ниже.

-

Стоит отметить, что установка мертвой зоны для оси стика не влияет на возвращаемое значение, которое всегда будет между -1 и 1. Например, установка мертвой зоны на 0.2 означает, что нажатие - стика вправо начнет возвращать значение от 0 до 1, только когда необработанное значение оси превысит 0,2 - таким образом, когда необработанное значение равно 0,2, возвращаемое значение будет 0, когда необработанное значение равно 0,5, возвращаемое значение будет 0,375, или если необработанное значение - 0,9, то возвращаемое значение будет 0,875.

-

-

Синтаксис действия:

-

 Gamepad Get Axis Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
GamepadИндекс геймпада.
AxisОсь для проверки (левый стик/правый стик, горизонталь/вертикаль)
TargetЦелевая переменная для хранения возвращаемого значения.
-

-

Пример:

-

Приведенный выше код блока действий создает две локальные (временные) переменные, а затем сохраняет текущие - значения для горизонтальной и вертикальной оси левого стика геймпада. Эти значения затем используются для установки направления движения экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Get_Gamepad_Connected.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Get_Gamepad_Connected.htm index 177eb5c26..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Get_Gamepad_Connected.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Get_Gamepad_Connected.htm @@ -1,63 +0,0 @@ - - - - - - Подключите геймпад - - - - - - - - - - -

Подключите геймпад

-

Вы можете использовать это действие, чтобы проверить, подключен ли к данному "слоту" геймпада геймпад. Вы передаете индекс геймпада (это номер "слота", который занимает геймпад), а возвращаемое значение будет сохранено в целевой переменной - которую вы предоставите для дальнейшего использования (она может быть помечена как временная локальная переменная, которую вы создаете для этого события или сценария).

-

-

Синтаксис действия:

-

Gamepad Get Connected Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
GamepadИндекс геймпада для проверки.
TargetЦелевая переменная для хранения возвращаемого значения.
-

-

Пример:

-

Приведенный выше код блока действий запускает цикл for, чтобы проверить, подключен ли геймпад - подключен к любому из 12 доступных "слотов". Если геймпад обнаружен, глобальная переменная устанавливается на номер текущего слота, и цикл прерывается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Get_Gamepad_Count.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Get_Gamepad_Count.htm index 47f5b1144..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Get_Gamepad_Count.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Get_Gamepad_Count.htm @@ -1,58 +0,0 @@ - - - - - - Получить счетчик геймпада - - - - - - - - - - -

Получить счетчик геймпада

-

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

-

-

Синтаксис действия:

-

Gamepad Get Count Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
TargetЦелевая переменная для хранения возвращаемого значения.
-

-

Пример:

-

Приведенный выше код блока действий получает количество подключенных геймпадов и присваивает это значение - временной локальной переменной. Затем проверяется, больше ли она 0, и соответствующим образом устанавливается глобальная переменная.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Get_Gamepad_Trigger.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Get_Gamepad_Trigger.htm index e219c8c30..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Get_Gamepad_Trigger.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Get_Gamepad_Trigger.htm @@ -1,67 +0,0 @@ - - - - - - Получить триггер геймпада - - - - - - - - - - -

Получить триггер геймпада

-

Вы можете использовать это действие для получения значений различных триггеров с данного геймпада. Вы указываете индекс геймпада (это номер "слота", который занимает геймпад) и выбираете триггер для проверки (левый или правый). Возвращаемое значение - будет от 0 до 1, где 0 - отсутствие давления на триггер, а 1 - полное давление. Это возвращаемое значение будет сохранено в переменной target, которую вы зададите для дальнейшего использования. Обратите внимание, что эта функция не учитывает настройку порога срабатывания.

-

-

Синтаксис действия:

-

Gamepad Get Trigger Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
GamepadИндекс геймпада.
TriggerКурок для проверки (левый/правый)
TargetЦелевая переменная для хранения возвращаемого значения.
-

-

Пример:

-

Приведенный выше код блока действий создает локальную (временную) переменную, а затем использует ее для хранения - текущего значения для левого триггера. Если значение триггера больше 0,5, создается экземпляр в позиции вызывающего экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/If_Gamepad_Button_Down.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/If_Gamepad_Button_Down.htm index d774f8bf6..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/If_Gamepad_Button_Down.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/If_Gamepad_Button_Down.htm @@ -1,72 +0,0 @@ - - - - - - Если кнопка геймпада нажата - - - - - - - - - - -

Если кнопка геймпада нажата

-

С помощью этого действия вы можете опросить геймпад, чтобы узнать, удерживается ли в данный момент заданная кнопка. Действие будет возвращать true на каждом шаге, когда кнопка удерживается, или false в противном случае, хотя если вы нажмете на модификатор not, то сможете проверить, не удерживается ли кнопка. - вы можете проверить, не удерживается ли кнопка, т.е. действие вернет true, если кнопка не удерживается, и false, если удерживается. Если вам нужно проверить нажатие только одной кнопки, используйте действие If Gamepad Button Pressed.

-

Если проверяемая кнопка является аналоговой, то она не будет считаться удерживаемой, пока значение кнопки не превысит порог, установленный с помощью действия Set Gamepad Button Threshold.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" имеет значение true, - в то время как любые действия, отброшенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Gamepad Button Down Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
GamepadИндекс геймпада.
ButtonИмя кнопки для проверки.
NotОтрицание проверки (истина становится ложью и наоборот)
-

-

Пример:

-

Приведенный выше код блока действий опрашивает состояние кнопок геймпада 0 на каждом шаге, и если - кнопка удерживается, он проверяет начальное нажатие кнопки вниз. Если проверка происходит по адресу true при первоначальном нажатии, воспроизводится звук, затем, пока кнопка удерживается, скорость экземпляра устанавливается на 10. Если кнопка не удерживается - вниз, проверка выполняется при отпускании кнопки, чтобы снова сбросить скорость на 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/If_Gamepad_Button_Pressed.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/If_Gamepad_Button_Pressed.htm index 005f007ac..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/If_Gamepad_Button_Pressed.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/If_Gamepad_Button_Pressed.htm @@ -1,73 +0,0 @@ - - - - - - Если нажата кнопка геймпада - - - - - - - - - - -

Если нажата кнопка геймпада

-

С помощью этого действия вы можете опросить геймпад, чтобы узнать, нажата ли в данный момент какая-либо кнопка. Действие будет возвращать true на каждом шаге, когда кнопка геймпада нажата (и удерживается), или false в противном случае, хотя если вы нажмете на модификатор - not вы можете проверить, не нажата ли кнопка, т.е. действие вернет true, если кнопка не нажата, и false, если нажата. Если вам нужно проверить нажатие только одной кнопки, то - используйте действие if gamepad button down.

-

Если проверяемая кнопка является аналоговой, то нажатие не будет обнаружено, пока значение кнопки не превысит порог, установленный с помощью действия Set Gamepad Button Threshold.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если - "if" оценивается в true, в то время как любые действия, отброшенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Gamepad Button Pressed Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
GamepadИндекс геймпада.
ButtonИмя кнопки для проверки.
NotОтрицание проверки (истина становится ложью и наоборот)
-

-

Пример:

-

Приведенный выше код блока действий опрашивает состояние кнопок геймпада 0 на каждом шаге и - если кнопка удерживается, то проверяется наличие начального нажатия кнопки вниз. Если проверка происходит по адресу true при первоначальном нажатии, воспроизводится звук, затем, пока кнопка удерживается, скорость экземпляра устанавливается на 10. Если кнопка не удерживается - удерживается нажатой, проверка выполняется при отпускании кнопки, чтобы снова сбросить скорость на 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/If_Gamepad_Button_Released.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/If_Gamepad_Button_Released.htm index 7e3b2e85b..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/If_Gamepad_Button_Released.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/If_Gamepad_Button_Released.htm @@ -1,72 +0,0 @@ - - - - - - Если кнопка геймпада отпущена - - - - - - - - - - -

Если кнопка геймпада отпущена

-

Это действие проверяет, когда кнопка геймпада была отпущена для заданного индекса геймпада. Оно вернет значение true при единственном игровом тике, когда кнопка была отпущена, и false во всех остальных случаях. Если вы включите модификатор not, - это действие будет обратным и будет проверять, если кнопка не была отпущена, возвращая false на игровом тике, на котором она была отпущена, и true во всех остальных случаях.

-

Если проверяемая кнопка является аналоговой, то отпускание кнопки не будет обнаружено, пока значение кнопки не станет ниже порога, установленного с помощью действия Set Gamepad Button Threshold.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" имеет значение - true, в то время как любые действия, отброшенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Gamepad Button Released Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
GamepadИндекс геймпада.
ButtonИмя кнопки для проверки.
NotОтрицание проверки (истина становится ложью и наоборот)
-

-

Пример:

-

Приведенный выше код блока действий опрашивает состояние кнопок геймпада 0 на каждом шаге и - если кнопка удерживается, то проверяется наличие начального нажатия кнопки вниз. Если проверка происходит по адресу true при первоначальном нажатии, воспроизводится звук, затем, пока кнопка удерживается, скорость экземпляра устанавливается на 10. Если кнопка не удерживается - удерживается нажатой, проверка выполняется при отпускании кнопки, чтобы снова сбросить скорость на 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Set_Gamepad_Axis_Deadzone.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Set_Gamepad_Axis_Deadzone.htm index 8254a1954..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Set_Gamepad_Axis_Deadzone.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Set_Gamepad_Axis_Deadzone.htm @@ -1,66 +0,0 @@ - - - - - - Установите мертвую зону оси геймпада - - - - - - - - - - -

Установите мертвую зону оси геймпада

-

Это действие можно использовать для установки "мертвой зоны" оси стиков геймпада. Вы указываете индекс геймпада для установки, а затем задаете значение от 0 до 1, и если входная величина меньше заданного значения, ось стиков геймпада считается - Обратите внимание, что это глобальная настройка, которая будет влиять на все оси подключенных стиков.

-

Обратите внимание, что это не изменяет вывод действия Get Gamepad Axis, которое всегда будет возвращать значение от -1 и 0, и 0 и 1. Например, установка мертвой зоны на 0,2 означает, что нажатие стика вправо будет - начнет возвращать значение от 0 до 1, только когда необработанное значение оси превысит 0,2 - таким образом, когда необработанное значение равно 0,2, возвращаемое значение будет равно 0, когда необработанное значение равно 0,5, возвращаемое значение будет равно 0,375, или если необработанное значение равно 0,9, возвращаемое значение будет равно 0,875. - значение будет 0,875.

-

-

Синтаксис действия:

-

Gamepad Set Axis Deadzone Icon

-

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
GamepadИндекс геймпада.
DeadzoneЗначение мертвой зоны (0 - 1)
-

-

Пример:

-

Приведенный выше код блока действий устанавливает мертвую зону для всех индексов геймпада на 0,2.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Set_Gamepad_Button_Threshold.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Set_Gamepad_Button_Threshold.htm index bb49b8252..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Set_Gamepad_Button_Threshold.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Gamepad/Set_Gamepad_Button_Threshold.htm @@ -1,64 +0,0 @@ - - - - - - Настройка порога нажатия кнопок геймпада - - - - - - - - - - -

Настройка порога нажатия кнопок геймпада

-

Это действие можно использовать для установки "порога" аналоговых кнопок геймпада. Вы указываете индекс геймпада для установки, а затем задаете значение от 0 до 1, и если входное значение аналоговой кнопки меньше заданного значения, кнопка геймпада - будет считаться равной 0. Обратите внимание, что это глобальная настройка, которая будет влиять на все аналоговые кнопки, подключенные к геймпаду. Это значение будет использоваться во всех проверках нажатия, отжатия и отпускания для данного геймпада, но будет игнорироваться действием Get Gamepad Trigger.

-

-

Синтаксис действия:

-

Set Gamepad Button Threshold Icon

-

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
GamepadИндекс геймпада.
DeadzoneПороговое значение (0 - 1)
-

-

Пример:

-


Приведенный выше код блока действий устанавливает порог кнопки для всех - индексов геймпада на 0,2.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Call_Parent_Event.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Call_Parent_Event.htm index 48037d207..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Call_Parent_Event.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Call_Parent_Event.htm @@ -1,45 +0,0 @@ - - - - - - Мероприятие для родителей по вызову - - - - - - - - - - -

Мероприятие для родителей по вызову

-

Этот блок действий выполнит событие родительского объекта, дочерним объектом которого является данный экземпляр, прежде чем продолжить выполнение действий в реальном экземпляре. Когда вы назначаете родительский объект экземпляру, все события этого объекта "наследуются" - дочерним объектом. Однако если вы затем добавите событие в дочерний объект, оно отменит родительское событие. Используя этот блок действий, вы можете заставить дочерний объект выполнять как родительское событие, так и событие в самом экземпляре. Дополнительные сведения о родителях см. в разделе Редактор объектов.

-

-

Синтаксис действия:

-

Call Event Icon

-

Пример:

-

Приведенный выше код блока действий вызывает родительское событие объекта, дочерним объектом которого является экземпляр - и затем устанавливает сигнал тревоги и изменяет адрес sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Call_User_Event.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Call_User_Event.htm index 15df496ed..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Call_User_Event.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Call_User_Event.htm @@ -1,59 +0,0 @@ - - - - - - Вызов пользовательского события - - - - - - - - - - -

Вызов пользовательского события

-

С помощью этого действия вы можете вызвать любое из 12 доступных Других событий пользователя. Пользовательское событие - это событие, к которому можно добавить сценарии или код действия, а затем вызвать в любое время с помощью этого действия. - действия, что делает их, по сути, событиями пользовательских объектов.

-

-

Синтаксис действия:

-

Call Use Event Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
EventНомер события пользователя для вызова (0 - 11).
-

-

Пример:

-

Приведенный выше код блока действий проверяет переменную и затем вызывает либо событие пользователя [0], либо событие пользователя - [1] в зависимости от того, какое значение имеет проверка: true или false.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Change_Object_Instance.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Change_Object_Instance.htm index 52e4a7e6b..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Change_Object_Instance.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Change_Object_Instance.htm @@ -1,65 +0,0 @@ - - - - - - Изменить экземпляр объекта - - - - - - - - - - -

Изменение экземпляра объекта

-

С помощью этого действия вы можете изменить один экземпляр на другой. Вам нужно указать объект, экземпляр которого изменяется на другой экземпляр, и действие изменит экземпляр, выполнив события Уничтожение и Очистка исходного экземпляра и событие Создание нового экземпляра. - первоначального экземпляра и событие создания нового экземпляра. Обратите внимание, что если вы не укажете направление, скорость и т.д., то новый экземпляр "унаследует" эти значения. Например, если начальный экземпляр имеет image_angle (вращение) - 180, перемещается со скоростью 2px за игровой тик и имеет image_speed (скорость анимации) 0.5, то экземпляр, в который он переходит, сохранит эти значения, если только они не будут явно заданы в событии Create нового экземпляра.

-

Стоит отметить, что изменение экземпляра означает, что вы не можете выполнять никаких дальнейших действий с этим экземпляром до следующего игрового тика, в частности, пытаться получить доступ к переменным и т.д., так как это приведет к ошибке. По сути, вы - изменяете экземпляр, но он фактически недоступен до конца текущего шага, поэтому прямой доступ к переменным, которые он содержит (например, вызов inst_changed.x), не сработает.

-

-

Синтаксис действия:

-

Change Object INstance Icon

-

Аргументы:

-

- - - - - - - - - - - - -
АргументОписание
ObjectИмя объекта, экземпляр которого нужно изменить.
- -

-

Пример:

-

Приведенный выше код блока действий проверяет наличие нажатия мыши и, если оно обнаружено. - то он меняет экземпляр на другой.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Create_Object_Instance.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Create_Object_Instance.htm index fd50b6921..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Create_Object_Instance.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Create_Object_Instance.htm @@ -1,77 +0,0 @@ - - - - - - Создать экземпляр объекта - - - - - - - - - - -

Создать экземпляр объекта

-

С помощью этого действия можно создать экземпляр любого объекта из браузера активов. Вы указываете имя объекта и позицию x/y в помещении, где он должен быть создан, а также имя слоя, на котором будет создан экземпляр (он должен быть - Instance Layer). Вы можете установить флаги "relative", чтобы расположить экземпляр относительно экземпляра, выполняющего блоки кода действия. При создании экземпляра в игре ему присваивается уникальное значение ID, с помощью которого вы можете - Поэтому данное действие позволяет вам определить переменную "target", которая будет хранить это значение ID (как показано в примере ниже). Обратите внимание, что цель может быть помечена как временная (локальная) переменная, которая будет - будет создана для данного действия и может быть использована во всех последующих действиях.

-

-

Синтаксис действия:

-

Create Object INstance Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
ObjectИмя объекта для создания экземпляра.
xПоложение x в комнате для создания экземпляра (может быть относительно вызывающего экземпляра).
yПоложение y в комнате для создания экземпляра (может быть относительно вызывающего экземпляра).
LayerИмя (строка) слоя экземпляра для создания экземпляра.
TargetПеременная, на которую будет нацелено возвращаемое значение.
-

-

Пример:

-

Приведенный выше код блока действий создает новый экземпляр и сохраняет его уникальное значение ID во - временной переменной. Эта переменная затем используется в действии Applies To... для установки некоторых свойств созданного экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Destroy_At_Position.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Destroy_At_Position.htm index 9f6c996dc..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Destroy_At_Position.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Destroy_At_Position.htm @@ -1,63 +0,0 @@ - - - - - - Уничтожить в позиции - - - - - - - - - - -

Уничтожить в позиции

-

Этот блок действий уничтожит все экземпляры, найденные в указанной точке, вызывая событие Destroy, а затем событие Clean Up для всех найденных экземпляров. Обратите внимание, что это действие основано на маске столкновения экземпляров, и если какая-либо часть маски пересекается с целевой точкой, то функция уничтожит этот экземпляр (если у экземпляров нет sprite или примененной маски, - то они не будут уничтожены).

-

-

Синтаксис действия:

-

Destroy At Position Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
xПоложение x в комнате для использования.
yПоложение y в комнате для использования.
-

-

Пример:

-

Приведенный выше код блока действий проверяет наличие нажатия клавиши (клавиша пробела) и, если таковое будет - он уничтожит все экземпляры, найденные в относительной позиции данного экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Destroy_Object_Instance.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Destroy_Object_Instance.htm index a41940634..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Destroy_Object_Instance.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Destroy_Object_Instance.htm @@ -1,46 +0,0 @@ - - - - - - Уничтожить экземпляр объекта - - - - - - - - - - -

Уничтожить экземпляр объекта

-

Вы можете вызывать это действие всякий раз, когда хотите "уничтожить" экземпляр, что приведет к его удалению из комнаты. Обратите внимание, что при уничтожении экземпляра его событие Destroy вызывается сразу после действия, вызывающего уничтожение. Также обратите внимание, что хотя событие Destroy Event выполняется в тот же момент, когда вызывается действие, экземпляр не удаляется из игры немедленно, а продолжает - выполнять код, содержащийся в текущем событии, до конца, и только когда текущее событие закончится, экземпляр будет удален из игры, и тогда будет вызвано событие Clean Up Event.

-

-

Синтаксис действия:

-

Destroy Object Instance Action

-

-

Пример:

-

Приведенный выше код блока действий проверяет наличие столкновения с любым другим экземпляром в позиции - вызывающего экземпляра, и если такой экземпляр найден, он уничтожает себя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Get_Alarm.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Get_Alarm.htm index 85155de4b..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Get_Alarm.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Get_Alarm.htm @@ -1,63 +0,0 @@ - - - - - - Получить сигнал тревоги - - - - - - - - - - -

Получить сигнал тревоги

-

Этот блок действий извлекает значение обратного отсчета сигнала тревоги и сохраняет его в заданной целевой переменной. Если вы отметите целевую переменную как "Temp", то это создаст новую временную (локальную) переменную для хранения возвращаемого значения, как показано в примере ниже - в примере ниже.

-

-

Синтаксис действия:

-

Get ALarm Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
AlarmСигнал тревоги.
TargetЦелевая переменная, используемая для хранения значения сигнала тревоги.
-

-

Пример:

-

Приведенный выше код блока действий создает локальную (временную) переменную и сохраняет в ней текущее значение - тревоги[0]. Затем это значение проверяется, и если оно меньше 0, то сигнал тревоги устанавливается на 60.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Get_Instance_Count.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Get_Instance_Count.htm index 6e7d578b1..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Get_Instance_Count.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Get_Instance_Count.htm @@ -1,64 +0,0 @@ - - - - - - Получить количество экземпляров - - - - - - - - - - -

Получить количество экземпляров

-

С помощью этого действия вы можете узнать количество экземпляров любого объекта, активного в данный момент в комнате. Вы можете выбрать любой объект из списка ресурсов или использовать специальное ключевое слово all для - получить количество всех активных экземпляров. Вам также необходимо указать целевую переменную для возврата значения, чтобы его можно было использовать в дальнейших действиях. Если обозначить целевую переменную как "Temp", то будет создана новая временная - (локальную) переменную для хранения возвращаемого значения, как показано в примере ниже.

-

-

Синтаксис действия:

-

Get INstance Count Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
ObjectИмя объекта для проверки.
TargetПеременная, на которую будет нацелено возвращаемое значение.
-

-

Пример:

-

Приведенный выше код блока действий создает локальную (временную) переменную, а затем присваивает ей количество - экземпляров объекта "obj_Squirrel". Затем это значение проверяется и экземпляр уничтожается, если количество экземпляров больше 100.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Get_Instance_Variable.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Get_Instance_Variable.htm index 228c37aec..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Get_Instance_Variable.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Get_Instance_Variable.htm @@ -1,109 +0,0 @@ - - - - - - Получить переменную экземпляра - - - - - - - - - - -

Получить переменную экземпляра

-

С помощью этого действия вы можете получить любой из перечисленных встроенный переменных. Все экземпляры всех объектов имеют ряд переменных, уже созданных внутри них для хранения важной информации, такой как текущее положение x/y, скорость, направление, видимость и многое другое. Переменные экземпляра, значения которых вы можете получить, следующие:

- -

Выбрав встроенную переменную для получения, вы затем устанавливаете целевую переменную для хранения возвращаемого значения. Если вы отметите эту переменную как временную, то она будет создана для вас в действии и будет доступна только до конца события или сценария действия. - события или сценария действия. Вы также можете получить значения дополнительных переменных в одном и том же действии, нажав на значок плюс рядом с действием, выбрать другую переменную экземпляра и указать сопутствующую переменную для хранения возвращаемого значения.

-

-

Синтаксис действия:

-

Get INstance Variable Icon

-

Аргументы:

-

- - - - - - - - - - - - - - - -
АргументОписание
VariableВстроенная переменная для получения
TargetЦелевая переменная, которая будет использоваться для хранения возвращаемого значения
-

-

Пример:

-

Expand Arguments Icon

-

Приведенный выше код блока действий получает значения для предыдущей позиции x/y, а затем сравнивает их с текущей позицией x/y. Если они не совпадают, то индекс sprite для экземпляра изменяется, а индекс его изображения устанавливается на 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/If_Instance_Exists.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/If_Instance_Exists.htm index cb4c531ef..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/If_Instance_Exists.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/If_Instance_Exists.htm @@ -1,64 +0,0 @@ - - - - - - Если экземпляр существует - - - - - - - - - - -

Если экземпляр существует

-

Это действие можно использовать для проверки, существует ли экземпляр определенного объекта в игровой комнате, или существует ли сам определенный экземпляр. Вы указываете объект из проводника активов, и если в комнате существует какой-либо экземпляр, то действие вернет true, в противном случае оно вернет false. Обратите внимание, что здесь можно использовать переменную с уникальным ID конкретного экземпляра (например, возвращаемым действием Создать экземпляр объекта) или даже ID экземпляра. - значение, возвращенное редактором комнаты при добавлении экземпляра.

-

Если вы отметите аргумент "Not", то действие проверит, не существует ли экземпляр, и если таковых не найдено, то вернет true, а если хотя бы один существует, то вернет false.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

If Instance Exists Icon

-

Теперь эти действия будут выполняться, если "if" имеет значение true, в то время как любые действия, отброшенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

Instance Exists drop example

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
ObjectИмя объекта, экземпляр которого необходимо проверить (или идентификатор экземпляра).
-

-

Пример:

-

Приведенный выше код блока действий проверяет наличие столкновения и возвращает уникальное значение ID экземпляра - с которым произошло столкновение. Это значение сохраняется во временной переменной, а затем проверяется, соответствует ли оно экземпляру, который в данный момент находится в комнате (если столкновение не найдено, то в переменной будет ключевое слово "noone"), - и если соответствует, то переменная устанавливается в экземпляр, с которым произошло столкновение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Instance_Actions_Library.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Instance_Actions_Library.htm index efdcdac8a..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Instance_Actions_Library.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Instance_Actions_Library.htm @@ -1,141 +0,0 @@ - - - - - - Библиотека действий экземпляра - - - - - - - - - - -

Библиотека действий экземпляра

-

Сайт Instance это библиотека действий, в которой можно создавать и уничтожать экземпляры, а также изменять их свойства и использовать их сигналы тревоги. Более подробную информацию об экземплярах (и объектах) можно найти здесь.

-

Все доступные действия перечислены ниже:

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Instance Actions LibraryСоздать экземпляр объекта
Create Object InstanceУничтожить экземпляр объекта
Destroy Object InstanceУничтожить в позиции
Destroy At PositionИзменить экземпляр объекта
Change Object InstanceУстановить сигнал тревоги
Set AlarmПолучить сигнал тревоги
Get AlarmПолучить количество экземпляров
Get Instance CountВызов пользовательского события
Call User EventУстановить переменную экземпляра
Set Instance VariableПолучить переменную экземпляра
Get Instance VariableУстановить спрайт
Set SpriteУстановить вращение экземпляра
Set Instance RotationУстановить скорость анимации
Set Animation SpeedУстановить масштаб экземпляра
Set Instance ScaleУстановить альфу экземпляра
Set Instance AlphaУстановить цвет экземпляра
Set Instance ColourЕсли экземпляр существует
If Instance ExistsМероприятие для родителей по вызову
-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Alarm.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Alarm.htm index c6b324657..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Alarm.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Alarm.htm @@ -1,65 +0,0 @@ - - - - - - Установить сигнал тревоги - - - - - - - - - - -

Установить обратный отсчет времени будильника

-

Этот блок действий устанавливает отсчет времени для данного сигнала тревоги, и когда сигнал тревоги достигнет нуля, сработает соответствующее событие тревоги. Вы вводите номер сигнала тревоги от 0 до 11, а - затем значение, на которое нужно установить сигнал тревоги. Используемое значение - это количество "игровых шагов", которое должно пройти до срабатывания тревожного события, и его можно установить относительно текущего значения тревоги (прибавляя или вычитая к текущему значению). - значению). Обратите внимание, что значение должно быть целым, и вы можете установить его равным -1, чтобы остановить сигнал тревоги. Обратите внимание, что при обратном отсчете сигнала тревоги событие выполняется, когда оно достигает 0, но затем сигнал тревоги отсчитывается до -1, чтобы показать, что он завершился. Установка - на 0 не приведет к запуску события, поскольку на следующем шаге отсчет будет вестись до -1, поэтому для немедленного запуска сигнала тревоги следует установить значение 1. Обратите внимание, что вы можете установить дополнительные сигналы тревоги в одном и том же действии, нажав на значок плюса рядом с действием.

-

-

Синтаксис действия:

-

Set Alarm Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
AlarmТревога, которую нужно установить (соответствующее событие тревоги будет запущено, когда она достигнет 0).
CountdownЗначение обратного отсчета в игровых шагах.
-

-

Пример:

-

Приведенный выше код блока действий создает локальную (временную) переменную и сохраняет в ней текущее значение - тревоги[0]. Затем это значение проверяется, и если оно меньше 0, то сигнал тревоги устанавливается на 60.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Animation_Speed.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Animation_Speed.htm index dd1db4027..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Animation_Speed.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Animation_Speed.htm @@ -1,60 +0,0 @@ - - - - - - Установить скорость анимации - - - - - - - - - - -

Установить скорость анимации

-

Этот блок действий устанавливает image_speed (скорость анимации) для sprite, назначенного данному экземпляру. Вы устанавливаете идеальное количество кадров в секунду в редакторе спрайтов, а затем можете использовать это значение - чтобы изменить его. По умолчанию скорость анимации установлена на 1, что означает, что игра будет пытаться поддерживать количество кадров в секунду, которое вы определили для sprite, но вы можете использовать значения больше 1 для более быстрой анимации (кадры могут быть пропущены), - или десятичные значения для более медленной анимации (кадры будут показываться с разным шагом), или даже отрицательные значения для изменения скорости анимации.

-

-

Синтаксис действия:

-

Set Animation Speed Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
SpeedНовое значение скорости модификатора.
-

-

Пример:

-

Приведенный выше код блока действий устанавливает новый sprite, а также ряд других - свойств для отображения этого sprite, включая настройку его анимации на половину заданной скорости.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Alpha.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Alpha.htm index 2bb0352a3..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Alpha.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Alpha.htm @@ -1,61 +0,0 @@ - - - - - - Установить альфу экземпляра - - - - - - - - - - -

Установить альфу экземпляра

-

Этот блок действий устанавливает значение image_alpha для экземпляра. Альфа изображения - это значение "прозрачности" для рисования любого sprite, назначенного данному экземпляру, и имеет значение от 0 до 1, где 0 будет полностью прозрачным, а 1 - полностью непрозрачным. - полностью прозрачным, а 1 - полностью непрозрачным. Обратите внимание, что если на sprite есть прозрачные или полупрозрачные пиксели, то их прозрачность будет масштабироваться на эту величину, поэтому если на sprite есть несколько 50% прозрачных пикселей, а альфа экземпляра установлена на 0,5, то итоговая альфа для прозрачных пикселей будет равна 25%. - для прозрачных пикселей будет равна 25%. Вы можете установить это значение как относительную величину

-

Обратите внимание, что для того, чтобы изменения в этой переменной были видны, экземпляр должен либо не иметь события рисования (и тогда GameMaker по умолчанию нарисует sprite), либо быть нарисованным с помощью действия Draw Self .

-

-

Синтаксис действия:

-

Set Instance Alpha Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
alphaЗначение альфа, которое необходимо установить (от 0 до 1, по умолчанию 1).
-

-

Пример:

-

Приведенный выше код блока действий устанавливает новый sprite, а также ряд других - свойств для отображения этого sprite, включая установку альфа-канала изображения равным 0,5.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Colour.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Colour.htm index 7d19700de..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Colour.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Colour.htm @@ -1,60 +0,0 @@ - - - - - Установить цвет экземпляра - - - - - - - - - - -

Установить цвет экземпляра

-

Этот блок действий устанавливает цвет image_blend для "смешивания" с экземпляром sprite. Значение по умолчанию - шестнадцатеричный код $FFFFFFFF (который представляет белый цвет в формате ARGB ), и это нарисует sprite без смешивания и с полной альфой. Любое другое значение (включая внутренние константы цвета, такие как c_red, или c_aqua) приведет к смешиванию указанного цвета с исходным sprite, а также установит компонент - image_alpha компонент для данного экземпляра, но только если установлен флажок Использовать альфу. При этом будет перезаписано любое значение альфа, установленное ранее с помощью действия Set Instance Alpha.

-

Обратите внимание, что для того, чтобы изменения в этом действии были видны, экземпляр должен либо не иметь события рисования (и тогда GameMaker по умолчанию нарисует sprite), либо быть нарисованным с помощью действия Draw Self. Важно - важно отметить, что на платформе HTML5 следует ограничить количество смешиваний (если только не используется WebGL), так как каждое смешивание sprite должно кэшироваться отдельно, поэтому наличие большого количества смешиваний sprites может негативно сказаться на производительности.

-

Set Instance Colour Icon

-

Синтаксис действия:

-

Example of sprites being coloured

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
ColourНовый цвет смешивания (щелчок по образцу цвета открывает окно выбора цвета).
-

-

Пример:

-

Приведенный выше код блока действий устанавливает новый sprite, а также ряд других - свойств для отображения этого sprite, включая установку розового цвета наложения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Rotation.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Rotation.htm index 66dfc11bf..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Rotation.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Rotation.htm @@ -1,61 +0,0 @@ - - - - - - Установить вращение экземпляра - - - - - - - - - - -

Установить вращение экземпляра

-

Этот блок действий задает угол image_angle (поворот) экземпляра. Угол измеряется в градусах: вправо - 0°, вверх - 90°, влево - 180° и вниз - 270°. Если установить эту переменную в 0, то экземпляр будет сброшен, то есть он будет - рисовать любой sprite, назначенный в том виде, в котором он был определен в редакторе sprite. Обратите внимание, что для того, чтобы изменения в этом действии были заметны, экземпляр должен либо не иметь события рисования (и тогда GameMaker по умолчанию нарисует sprite), либо быть нарисованным - с помощью действия Draw Self.

-

-

Синтаксис действия:

-

Set Instance Rotation Icon

-

Аргументы:

-

- - - - - - - - - - - -
АргументОписание
AngleНовый угол, который будет использоваться (от 0 до 360).
-

-

Пример:

-

Приведенный выше код блока действий устанавливает новый sprite, а также ряд других - свойств для отображения этого sprite, включая его поворот на 180°.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Scale.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Scale.htm index f04b69bda..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Scale.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Scale.htm @@ -1,67 +0,0 @@ - - - - - - Установить масштаб экземпляра - - - - - - - - - - -

Установить масштаб экземпляра

-

Этот блок действий устанавливает значения image_xscale и image_yscale для экземпляра. Входные значения здесь являются модификаторами, которые будут применены к sprite, назначенному экземпляру, где масштаб 1 (значение по умолчанию) означает отсутствие масштабирования (1:1), меньшие значения будут масштабироваться в меньшую сторону (0,5, например, уменьшит ширину вдвое), а большие значения будут масштабироваться в меньшую сторону (1:1). - масштабирование (1:1), меньшие значения будут масштабироваться вниз (0,5, например, уменьшит ширину sprite в два раза), а большие значения будут масштабироваться вверх. Вы можете использовать отрицательные значения, чтобы перевернуть sprite и масштабировать его, если только используемое значение не равно -1 (в этом случае картинка - sprite просто переворачивается или зеркально отражается относительно своего начала координат без масштабирования). Вы можете установить горизонтальный или вертикальный масштаб относительно текущих значений, в этом случае вы будете добавлять или вычитать новое значение из текущих значений масштаба.

-

Обратите внимание, что изменение этих значений также изменит способ обнаружения столкновений экземпляром, если только вы не задали отдельную mask_index (маску столкновений) в редакторе объектов. Обратите внимание, что - чтобы изменения в этой переменной были видны, экземпляр должен либо не иметь события рисования (и тогда GameMaker по умолчанию нарисует sprite), либо быть нарисованным с помощью действия Draw Self.

-

Set Instance Scale Icon

-

-

Синтаксис действия:

-

Examples of scaled sprites

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
HorizontalИспользуемый коэффициент вертикального масштабирования (по умолчанию 1).
VerticalИспользуемый коэффициент горизонтального масштабирования (по умолчанию 1).
-

-

Пример:

-

Приведенный выше код блока действий устанавливает новый sprite, а также ряд других свойств для отображения этого . - свойств для отображения этого sprite, включая установку его масштаба в три четверти от базового размера по обеим осям.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Variable.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Variable.htm index 14fbeffbc..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Variable.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Instance_Variable.htm @@ -1,108 +0,0 @@ - - - - - - Установить переменную экземпляра - - - - - - - - - - -

Установить переменную экземпляра

-

С помощью этого действия вы можете установить одну из встроенных переменных. Все экземпляры всех объектов имеют ряд переменных, созданных для хранения важной информации, такой как текущая позиция x/y, скорость, направление, видимость - и многое другое. Переменные экземпляра, которые вы можете использовать, следующие:

- -

Выбрав встроенную переменную для использования, вы затем устанавливаете значение для этой переменной. Используемое значение будет зависеть от выбранной переменной (см. список выше для значений по умолчанию и диапазонов), и вы можете отметить значение, чтобы оно было относительно текущего - значение переменной. Вы также можете добавить дополнительные переменные для установки в том же действии, нажав на значок плюса рядом с - и выбрать другую переменную экземпляра и задать ей значение.

-

-

Синтаксис действия:

-

Set Instance Variable Action

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
VariableВстроенная переменная для установки
ValueЗначение, в которое нужно установить переменную
-

-

Пример:

-

Приведенный выше код блока действий получает значения для - предыдущего положения x/y, а затем сравнивает их с текущим положением x/y. Если они не совпадают, то индекс sprite для экземпляра изменяется, а индекс его изображения устанавливается на 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Sprite.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Sprite.htm index 0cabea3f5..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Sprite.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance/Set_Sprite.htm @@ -1,65 +0,0 @@ - - - - - - Установить спрайт - - - - - - - - - - -

Установить спрайт

-

Этот блок действий устанавливает sprite_index экземпляра на другой sprite из браузера активов. Вы выбираете sprite, на который нужно перейти, а затем указываете изображение (кадр анимации), которое нужно показать. Обратите внимание, что если вы не хотите, чтобы sprite анимировался после - установки кадра, вам нужно использовать действие Set Animation Speed и установить его на 0, или если вы хотите, чтобы sprite продолжал анимировать, то установите значение для использования встроенной переменной image_index. - вместо этого.

-

Изменение sprite также изменит маску столкновений экземпляра, если только вы не указали отдельный mask_index в редакторе объектов. Обратите внимание, что для того, чтобы изменения в этом действии - чтобы изменения в этом действии были видимыми, экземпляр должен либо не иметь события рисования (и тогда GameMaker по умолчанию нарисует sprite), либо быть нарисованным с помощью действия Draw Self.

-

-

Синтаксис действия:

-

Set Sprite Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
SpriteНовый sprite для использования (-1, если вы хотите удалить sprite).
FrameКадр анимации, который будет показан изначально (если дополнительные кадры не используются, то используйте 0).
-

-

Пример:

-

Приведенный выше код блока действий устанавливает новый sprite, а также ряд других свойств для отображения этого sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Get_Health.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Get_Health.htm index 131ee2f1e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Get_Health.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Get_Health.htm @@ -1,60 +0,0 @@ - - - - - - Получить здоровье - - - - - - - - - - -

Получить здоровье

-

Вы можете использовать это действие для получения значения переменной экземпляра, созданной для "здоровья" объекта. Вы указываете целевую переменную для хранения возвращаемого значения "здоровья" (которая может быть помечена как временная локальная переменная), - но обратите внимание, что если переменная не была установлена ранее (с помощью Set Health), то переменная будет создана за вас, и действие вернет 0 (в отличие от обычных переменных экземпляра, которые выдадут ошибку, если вы попытаетесь обратиться к ним, не установив их сначала). - получить к ним доступ, не установив их предварительно).

-

-

Синтаксис действия:

-

Get Health Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
TargetЦелевая переменная для хранения возвращаемого значения "здоровье" (может быть помечена как временная локальная переменная)
-

-

Пример:

-

Приведенный выше код блока действий получит значение для "health" и сохранит его во временной - локальной переменной. Затем эта переменная используется для рисования панели здоровья для экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Get_Lives.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Get_Lives.htm index a2cf1cba5..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Get_Lives.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Get_Lives.htm @@ -1,60 +0,0 @@ - - - - - - Получить жизнь - - - - - - - - - - -

Получить жизнь

-

Вы можете использовать это действие для получения значения переменной экземпляра, созданной для "lives". Вы указываете целевую переменную для хранения возвращаемого значения "lives" (которая может быть помечена как временная локальная переменная), но учтите, что - если переменная не была установлена ранее (с помощью Set Lives), то переменная будет создана за вас, и действие вернет 0 (в отличие от обычных переменных экземпляра, которые выдадут ошибку, если вы попытаетесь получить к ним доступ - не установив их предварительно).

-

-

Синтаксис действия:

-

Get Lives Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
TargetЦелевая переменная для хранения возвращаемого значения "lives" (может быть помечена как временная локальная переменная)
-

-

Пример:

-

Приведенный выше код блока действий получит значение для "lives" и сохранит его во временной - локальную переменную. Эта переменная затем используется для принятия решения о том, сколько стопок sprites должно быть нарисовано.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Get_Score.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Get_Score.htm index b97a2a346..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Get_Score.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Get_Score.htm @@ -1,60 +0,0 @@ - - - - - - Получить оценку - - - - - - - - - - -

Получить оценку

-

Вы можете использовать это действие для получения значения переменной экземпляра, созданной для "score". Вы указываете целевую переменную для хранения возвращаемого значения "score" (которая может быть помечена как временная локальная переменная), но учтите, что - если переменная не была установлена ранее (с помощью Set Score), то она будет создана за вас, и действие вернет 0 (в отличие от обычных переменных экземпляра, которые выдадут ошибку, если вы попытаетесь получить к ним доступ - не задав их предварительно).

-

-

Синтаксис действия:

-

Get Score Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
TargetЦелевая переменная для хранения возвращаемого значения "score" (может быть помечена как временная локальная переменная)
-

-

Пример:

-

Приведенный выше код блока действий получит текущее значение счета и сохранит его во временной локальной - переменную. Затем эта переменная преобразуется в строку и сохраняется в другой временной локальной переменной перед выводом на экран.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/If_Health.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/If_Health.htm index 6954bbec2..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/If_Health.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/If_Health.htm @@ -1,80 +0,0 @@ - - - - - - Если здоровье - - - - - - - - - - -

Если здоровье

-

Это действие используется для проверки значения переменной экземпляра health с помощью определенного выражения. Вы указываете тип выражения для проверки и значение для проверки текущего health, и оператор "if" всегда будет - всегда возвращает либо true, либо false в зависимости от используемых выражений и значений. Доступными выражениями являются:

- -

Если вы отметите аргумент Not, то приведенные выше выражения будут отрицаемыми, например, "equals to" станет "not equals to", то есть вы будете проверять, не равно ли значение health заданному значению.

-

ВАЖНОЕ ПРИМЕЧАНИЕ: Из-за проблем точности с плавающей запятой, проверка на то, что два значения точно равны, может вернуть false, так как одно может быть точно 1, в то время как - другое может быть 1.00000000000001. Этого можно избежать, используя действие Decimal to Integer перед проверкой или используя выражения "больше чем" или "меньше чем".

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" оценивается в true, в то время как любые - действия, отброшенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Health Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
NotУстанавливается для проверки, если выражение не имеет значения true.
ExpressionТип выражения, используемый для проверки.
ValueЗначение, по которому проверяется health.
-

-

Пример:

-

Приведенный выше код блока действий добавит 25 к переменной health, а затем проверит, не стала ли переменная больше 100. - переменная теперь больше 100, и если это так, то она будет установлена в 100.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/If_Lives.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/If_Lives.htm index 802fbacba..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/If_Lives.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/If_Lives.htm @@ -1,80 +0,0 @@ - - - - - - Если жизни - - - - - - - - - - -

Если жизни

-

Это действие используется для проверки значения переменной экземпляра lives с помощью определенного выражения. Вы указываете тип выражения для проверки и значение для проверки текущего lives, и оператор "if" всегда будет - всегда возвращает либо true, либо false в зависимости от используемых выражений и значений. Доступными выражениями являются:

- -

Если вы отметите аргумент Not, то вышеприведенные выражения будут отрицательными, например, "equals to" станет "not equals to", таким образом, вы будете проверять, не равно ли значение lives заданному значению.

-

ВАЖНОЕ ПРИМЕЧАНИЕ: Из-за проблем точности с плавающей запятой, проверка на то, что два значения точно равны, может вернуть false, так как одно может быть точно 1, в то время как - другое может быть 1.00000000000001. Этого можно избежать, используя действие Decimal to Integer перед проверкой или используя выражения "больше чем" или "меньше чем".

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" оценивается в true, в то время как любые - действия, отброшенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Lives Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
NotУстанавливается для проверки, если выражение не имеет значения true.
ExpressionТип выражения, используемый для проверки.
ValueЗначение, по которому проверяется lives.
-

-

Пример:

-

Приведенный выше код блока действий проверит значение lives, чтобы узнать, меньше или равно ли оно - 0, и если да, то комната будет перезапущена.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/If_Score.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/If_Score.htm index 60613a200..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/If_Score.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/If_Score.htm @@ -1,80 +0,0 @@ - - - - - - Если оценка - - - - - - - - - - -

Если оценка

-

Это действие используется для проверки значения переменной экземпляра score с помощью определенного выражения. Вы указываете тип выражения для проверки и значение для проверки текущего score, и оператор "if" всегда будет - всегда возвращает либо true, либо false в зависимости от используемых выражений и значений. Доступными выражениями являются:

- -

Если вы отметите аргумент Not, то вышеприведенные выражения будут отрицательными, например, "equals to" станет "not equals to", таким образом, вы будете проверять, не равно ли значение score заданному значению.

-

ВАЖНОЕ ПРИМЕЧАНИЕ: Из-за проблем точности с плавающей запятой, проверка на то, что два значения точно равны, может вернуть false, так как одно может быть точно 1, в то время как - другое может быть 1.00000000000001. Этого можно избежать, используя действие Decimal to Integer перед проверкой или используя выражения "больше чем" или "меньше чем".

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" оценивается в true, в то время как любые - действия, отброшенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Score Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
NotУстанавливается для проверки, если выражение не имеет значения true.
ExpressionТип выражения, используемый для проверки.
ValueЗначение, по которому проверяется score.
-

-

Пример:

-

Приведенный выше код блока действий добавит 1 к значению счета, а затем проверит, равно ли оно - 1000. Если это так, то 1 добавляется к переменной глобальной области видимости "Level".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Instance_Variable_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Instance_Variable_Actions.htm index 05c9c704b..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Instance_Variable_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Instance_Variable_Actions.htm @@ -1,97 +0,0 @@ - - - - - - Действия переменной экземпляра - - - - - - - - - - -

Переменная экземпляра Библиотека действий

-

Instance Variable Action Library

-

Действия с переменными экземпляра предназначены для начала создания игры и используются для создания и поддержания определенных переменных области действия экземпляра score, lives и health (подробнее об области действия переменных можно узнать здесь). - здесь). Эти действия будут создавать эти переменные для вас в любое время, когда они используются, и предназначены скорее для удобства или для новичков, а если вам нужно более - сложный контроль над игровыми значениями, вы должны создавать свои собственные переменные, используя соответствующие действия (см. здесь).

-

Для использования этих переменных экземпляра существуют следующие действия:

-

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Set Score IconУстановить оценку
Get Score IconПолучить оценку
Set Lives IconУстановленные жизни
Get Lives IconПолучить жизнь
Set Health IconУстановить здоровье
Get Health IconПолучить здоровье
If Score IconЕсли оценка
If Lives IconЕсли жизни
If Health IconЕсли здоровье
-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Set_Health.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Set_Health.htm index 6b9d2fea2..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Set_Health.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Set_Health.htm @@ -1,60 +0,0 @@ - - - - - - Установить здоровье - - - - - - - - - - -

Установить здоровье

-

С помощью этого действия вы можете создать или установить переменную экземпляра для здоровья. Вы предоставляете значение, которое нужно либо установить в переменную "здоровье", либо добавить к переменной "здоровье" (если вы отметите флажок " относительно ", то значение будет добавлено к текущему значению - "здоровье"). Обратите внимание, что если вы хотите использовать действие Draw Instance Healthbar, то это значение должно быть от 0 до 100, в противном случае оно может быть любым. Также обратите внимание, что в отличие от - обычных переменных экземпляра имя переменной "здоровье" хранится внутри, поэтому для получения значения показателя необходимо использовать действие Get Health.

-

-

Синтаксис действия:

-

Set Health Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
HealthСумма, на которую нужно установить здоровье (или добавить к здоровью, если отмечено относительное здоровье)
-

-

Пример:

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Set_Lives.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Set_Lives.htm index 9647ca68b..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Set_Lives.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Set_Lives.htm @@ -1,59 +0,0 @@ - - - - - - Установленные жизни - - - - - - - - - - -

Установленные жизни

-

С помощью этого действия вы можете создать или установить переменную экземпляра для lives. Вы предоставляете значение, которое нужно либо установить в переменную lives, либо добавить к переменной lives (если вы отметите флажок relative, то значение будет добавлено к текущему значению "lives"). - значение). Обратите внимание, что в отличие от обычных переменных экземпляра имя переменной "lives" хранится внутри, поэтому для получения значения оценки необходимо использовать действие Get Lives.

-

-

Синтаксис действия:

-

Set Lives Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
LivesСумма, на которую нужно установить жизни (или добавить к жизням, если отмечен параметр relative )
-

-

Пример:

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Set_Score.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Set_Score.htm index 7c9cb26e5..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Set_Score.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Instance_Vars/Set_Score.htm @@ -1,59 +0,0 @@ - - - - - - Установить оценку - - - - - - - - - - -

Установить оценку

-

С помощью этого действия вы можете создать или установить переменную экземпляра для оценки. Вы указываете значение, которое нужно либо установить в переменную score, либо добавить к переменной score (если вы отметите флажок relative, то значение будет добавлено к текущему значению "score"). - значение). Обратите внимание, что в отличие от обычных переменных экземпляра имя переменной "score" хранится внутри, поэтому для получения значения score необходимо использовать действие Get Score.

-

-

Синтаксис действия:

-

Set Score Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
ScoreСумма, на которую нужно установить счет (или прибавить к счету, если отмечен параметр relative )
-

-

Пример:

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/Break.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/Break.htm index f0fe2f4cc..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/Break.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/Break.htm @@ -1,45 +0,0 @@ - - - - - - Перерыв - - - - - - - - - - -

Перерыв

-

Это действие можно использовать только внутри действия цикла (например, Repeat или While), и его вызов приведет к выходу из цикла в этот момент. Обычно цикл выполняется либо фиксированное количество раз, либо до тех пор, пока не будет выполнено определенное условие. - но вы можете использовать действие Break для преждевременного завершения цикла в любой момент (действия в цикле после Break не будут выполнены).

-

-

Синтаксис действия:

-

Break Icon

-

Пример:

-

Приведенный выше код блока действий выполняет цикл Repeat 1000 раз. В цикле проверяется, пуста ли структура данных List. - пуста, и если нет, то удаляет элемент из списка, а если да, то прерывает цикл.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/For.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/For.htm index 7108985f5..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/For.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/For.htm @@ -1,77 +0,0 @@ - - - - - - Для - - - - - - - - - - -

Для

-

Действие For используется для выполнения циклов, которые завершаются только тогда, когда значение достигает заданного условия. Вы задаете начальное значение в качестве переменной (которая может быть помечена как временная локальная переменная - обычно это то, что вам нужно), затем вы задаете - условие для проверки переменной (например, если она меньше определенного значения), и, наконец, сумму для увеличения переменной на каждую итерацию цикла. Итак, общий поток выглядит следующим образом:

- -

При добавлении действий, которые будут выполняться в цикле, они добавляются так же, как если бы вы добавляли действие в "if", т.е. опускаете его сбоку от действия, а не под ним:

-

Все действия, добавленные сбоку, будут включены в For и будут выполнены до того, как событие или сценарий продолжится - с действиями, добавленными ниже. Обратите внимание, что вы можете завершить любой цикл преждевременно, если вызовете действие Break, а при использовании циклов For вам не обязательно инкрементировать, вы можете сделать его и декрементным, если только условие - которое вы используете, является подходящим. Например, установите начальную переменную равной 10, задайте условие проверки на значение меньше 0, а затем установите значение инкремента -1, и цикл выполнит 10 итераций, считая в обратном порядке от 10 до 0.

-

-

Синтаксис действия:

-

For Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
InitialiseИнициализируйте переменную, которая будет использоваться для подсчета, до значения (может быть помечена как временная локальная переменная).
ConditionУсловие, которое нужно проверить, чтобы разорвать цикл
IncrementСумма, на которую будет увеличиваться (или уменьшаться) начальная переменная count на каждой итерации цикла
-

-

Пример:

-

Приведенный выше код блока действий запускает цикл for, чтобы проверить, подключен ли геймпад к любому из 12 доступных - "слотов". Если геймпад обнаружен, глобальная переменная устанавливается на номер текущего слота, и цикл прерывается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/Loop.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/Loop.htm index 15d4b36a6..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/Loop.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/Loop.htm @@ -1,47 +0,0 @@ - - - - - - Петля - - - - - - - - - - -

Петля

-

Действие Loop будет циклически повторяться до тех пор, пока не будет вызвано действие Break. С этим действием следует быть осторожным, чтобы убедиться, что независимо от действий, размещенных внутри цикла, всегда будет вызываться Break, иначе - в противном случае игра вызовет ошибку "не отвечает" на целевой ОС и прекратит работу. Вы добавляете это действие в рабочую область кода действия, а затем добавляете действия, которые должны быть выполнены в цикле, подобно тому, как вы добавили бы действие в "if", - т.е. опускаете его сбоку от действия, а не под ним:

-

Loop Icon

-

-

Синтаксис действия:

-

Loop drop actions

-

Пример:

-

Приведенный выше код блока действий будет циклически повторяться до тех пор, пока переменная экземпляра count не станет больше или равна 10, - в этот момент он прервется, а затем продолжит любые дальнейшие действия вне цикла.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/Loop_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/Loop_Actions.htm index 3f3a442ee..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/Loop_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/Loop_Actions.htm @@ -1,73 +0,0 @@ - - - - - - Действия петли - - - - - - - - - - -

Библиотека действий петли

-

Библиотека действий Loop содержит те действия, которые необходимы для создания циклов в игровых действиях. - код. Цикл - это просто способ итерации одного и того же набора действий 1 или более раз в зависимости от определенных условий, и он удобен в любой ситуации, когда вам нужно повторять одни и те же действия снова и снова.

-

Библиотека Loop имеет следующие действия:

-

- - - - - - - - - - - - - - - - - - - - - - - -
Loop Action LibraryПетля
Loop IconПовторите
Repeat IconВ то время как
While IconДля
For IconПерерыв
-

-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/Repeat.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/Repeat.htm index d5f82f332..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/Repeat.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/Repeat.htm @@ -1,62 +0,0 @@ - - - - - - Повторите - - - - - - - - - - -

Повторите

-

Это действие будет повторять все добавленные к нему действия указанное количество раз. Вы задаете количество повторений действий, а затем добавляете действие в цикл повторения, подобно тому, как вы добавляете действие в "if", т.е. опускаете - т.е. опускаете его сбоку от действия, а не под ним:

-

Все действия, добавленные сбоку, будут включены в повтор и будут выполнены до того, как событие или сценарий - продолжится с действиями, добавленными ниже (как показано в примере ниже). Обратите внимание, что любой цикл можно завершить преждевременно, если вызвать действие Break.

-

-

Синтаксис действия:

-

Repeat Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
TimesКоличество повторений (целое целое значение)
-

-

Пример:

-

Приведенный выше код блока действий получает количество элементов в списке и сохраняет это значение во временной локальной переменной. - Эта переменная затем используется для установки количества повторений цикла, а в цикле повторения элементы из списка считываются в другую временную переменную, которая затем используется для уничтожения экземпляров, на которые они ссылаются. После завершения цикла - структура данных освобождается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/While.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/While.htm index ae19eb912..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/While.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Loops/While.htm @@ -1,73 +0,0 @@ - - - - - - В то время как - - - - - - - - - - -

В то время как

-

Действие While используется для выполнения циклов, которые завершаются только тогда, когда возвращается определенное условие true. Например, вы можете использовать переменную и установить ее в значение false, затем запустить цикл While и заставить его проверять эту переменную, затем в - в какой-то момент цикла вы установите переменную в значение true, и цикл завершится. Обратите внимание, что независимо от того, где вы установите условие в цикле while, все действия в цикле будут выполнены до конца, прежде чем остальная часть сценария или события будет продолжена. - Изменение условия не приведет к мгновенному выходу из цикла.

-

Когда вы добавляете в код действие While, вам нужно указать переменную для проверки, тип проверки (меньше чем, больше чем, равно и т.д.) и значение, с которым нужно проверить переменную (вы также можете отметить, чтобы цикл While не проверял, если условие не истинно). - проверять, не истинно ли условие). Затем вы добавляете действия, которые должны быть выполнены в цикле While, подобно тому, как вы добавляете действие в "if", т.е. опускаете его сбоку от действия, а не под ним:

-

Все действия, добавленные сбоку, будут включены в While и будут выполнены до того, как событие или сценарий - продолжит выполнение действий, добавленных под (как показано в примере ниже). Обратите внимание, что вы можете преждевременно завершить любой цикл, если вызовете действие Break.

-

-

Синтаксис действия:

-

While Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
VariableПеременная для использования в проверке
IsТип оценки для выполнения (меньше, чем, больше, чем, равно, больше или равно и меньше или равно)
ValueЗначение, по которому проверяется переменная
-

-

Пример:

-

Приведенный выше код блока действий создает временную локальную переменную и устанавливает ее в значение false. Эта переменная затем - затем проверяется в действии цикла While, и пока она возвращает false, цикл выполняется. В цикле мы получаем две временные локальные переменные для случайной позиции x/y в комнате, затем мы проверяем эту позицию на столкновение. Если столкновение не найдено, начальная - переменная устанавливается в true, завершая цикл. После завершения цикла создается новый экземпляр в случайной позиции, которая, как мы выяснили, не имеет столкновений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Miscellaneous/Miscellaneous_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Miscellaneous/Miscellaneous_Actions.htm index 49fb56176..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Miscellaneous/Miscellaneous_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Miscellaneous/Miscellaneous_Actions.htm @@ -1,58 +0,0 @@ - - - - - - Различные действия - - - - - - - - - - -

Библиотека разных действий

-

Эта библиотека действий содержит те действия, которые не подходят ни к одной другой категории библиотек. К ним относятся следующие Разное действия:

-

- - - - - - - - - - - -
Miscellaneous Action LibraryПоказать отладочное сообщение
Show Debug Message IconУстановить состояние окна
-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Miscellaneous/Set_Window_State.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Miscellaneous/Set_Window_State.htm index 0dc98ee26..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Miscellaneous/Set_Window_State.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Miscellaneous/Set_Window_State.htm @@ -1,66 +0,0 @@ - - - - - - Установить состояние окна - - - - - - - - - - -

Установить состояние окна

-

С помощью этого действия вы можете установить состояние окна игры в полноэкранный или оконный режим. Здесь есть три варианта:

- -

Обратите внимание, что вид игры в полноэкранном состоянии будет зависеть от настроек Game Options - Graphics для ваших целевых платформ, так как если игра не имеет какого-либо механизма для подстройки - к различным соотношениям сторон и разрешениям, вы можете получить растяжение (если опция игры установлена на Full Scale), или вы можете получить черные полосы (если опция игры установлена на Keep Aspect Ratio). В общем случае, если у вас нет ничего, чтобы - с различными разрешениями, вам следует использовать Keep Aspect Ratio для целевых платформ, на которые вы хотите компилировать.

-

-

Синтаксис действия:

-

Set Window State Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
StateСостояние окна, которое необходимо установить (варианты см. выше)
-

-

Пример:

-

Приведенный выше код блока действий будет переключать состояние окна между полноэкранным и оконным режимом - при каждом нажатии клавиши F4.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Miscellaneous/Show_Debug_Message.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Miscellaneous/Show_Debug_Message.htm index 12c0a3b5e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Miscellaneous/Show_Debug_Message.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Miscellaneous/Show_Debug_Message.htm @@ -1,58 +0,0 @@ - - - - - - Показать отладочное сообщение - - - - - - - - - - -

Показать отладочное сообщение

-

С помощью этого действия вы можете отправить отладочное сообщение на выход компилятора. Это сообщение может быть либо строкой, либо вещественным числом, но если вы хотите использовать оба варианта, то число должно быть преобразовано в строку (см. действие Number To String). Обратите внимание, что вы можете вывести несколько сообщений с помощью этого действия, щелкнув по значку , чтобы развернуть действие с дополнительными полями вывода.

-

-

Синтаксис действия:

-

Show Debug Message Icon

-

Аргументы:

-

- - - - - - - - - - - -
АргументОписание
MessageСообщение для отображения в окне вывода
-

-

Пример:

-

Приведенный выше код блока действий проверит переменную и, если она вернет значение true, то в окне Output будет показана пара отладочных сообщений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/Get_Virtual_Keyboard_Height.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/Get_Virtual_Keyboard_Height.htm index 195749b30..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/Get_Virtual_Keyboard_Height.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/Get_Virtual_Keyboard_Height.htm @@ -1,44 +0,0 @@ - - - - - - Получить высоту виртуальной клавиатуры - - - - - - - - - - -

Получить высоту виртуальной клавиатуры

-

Это действие возвращает текущую высоту в пикселях виртуальной клавиатуры, основанную на размере дисплея. Если клавиатура не видна, будет возвращен 0.

-

-

Синтаксис действия:

-

Get Virtual Keyboard Height Icon

-

Пример:

-

Get Virtual Keyboard Height Action

-

Приведенный выше код блока действий проверяет, видна ли виртуальная клавиатура ОС, и если видна, то получает высоту клавиатуры (в пикселях экрана), а затем рисует над ней текст с клавиатурным вводом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/Hide_Virtual_Keyboard.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/Hide_Virtual_Keyboard.htm index 3dd8366d9..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/Hide_Virtual_Keyboard.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/Hide_Virtual_Keyboard.htm @@ -1,56 +0,0 @@ - - - - - - Скрыть виртуальную клавиатуру - - - - - - - - - - -

Скрыть виртуальную клавиатуру

-

Это действие можно использовать для скрытия виртуальной клавиатуры на устройстве, на котором запущена игра. Вызов этого действия генерирует системное асинхронное событие, в котором карта async_load  DS будет заполнена следующими парами ключ/значение:

- -

-

Синтаксис действия:

-

Hide Virtual Keyboard Icon

-

Пример:

-

Приведенный выше код блока действий проверяет наличие действия нажатия кнопки мыши, и если таковое - обнаружено, то выполняется проверка, отображается ли виртуальная клавиатура ОС. Если нет, то она устанавливается на отображение - с использованием цифрового типа клавиатуры - а если уже отображается, то скрывается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Key_Down.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Key_Down.htm index 5dc3de877..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Key_Down.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Key_Down.htm @@ -1,67 +0,0 @@ - - - - - - Если клавиша нажата - - - - - - - - - - -

Если клавиша нажата

-

С помощью этого действия вы можете опросить клавиатуру, чтобы узнать, удерживается ли в данный момент какая-либо клавиша. Действие будет возвращать true на каждом шаге, когда клавиша удерживается нажатой, или false в противном случае, хотя если вы щелкните модификатор not, то сможете проверить, не удерживается ли клавиша, т.е. действие будет возвращать true, если клавиша не нажата, и false, если нажата. Если вам нужно проверить только одно нажатие клавиши, используйте действие If Key Pressed.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Любые действия, отброшенные в другом месте, будут выполняться после блока "if" - блока.

-

-

Синтаксис действия:

-

If Keyboard Down Icon

-

Аргументы:

-

- - - - - - - - - - - - - - - -
АргументОписание
KeyИмя клавиши клавиатуры для проверки.
NotОтрицание проверки (истина становится ложью и наоборот)
-

-

Пример:

-

Приведенный выше код блока действий опрашивает состояние клавиатуры на каждом шаге, и если клавиша удерживается - он проверяет, не нажата ли клавиша изначально. Если проверка true на первоначальное нажатие, то воспроизводится звук, затем, пока клавиша удерживается, смешивание sprite меняется на красное. Если клавиша не удерживается, проверка выполняется - выполняется при отпускании клавиши для сброса цвета смешивания на белый.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Key_Pressed.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Key_Pressed.htm index 83bae853f..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Key_Pressed.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Key_Pressed.htm @@ -1,68 +0,0 @@ - - - - - - Если нажата клавиша - - - - - - - - - - -

Если нажата клавиша

-

Это действие проверяет первоначальное нажатие на клавишу клавиатуры. Оно возвращает true на одном игровом шаге (кадре), когда клавиша нажата изначально, и false во всех остальных случаях. Если вы включите модификатор not, это действие - будет обратным и будет проверять, не была ли клавиша нажата, возвращая false на игровом шаге (кадре), когда она была нажата, и true во всех остальных случаях. Если вам нужно проверить, удерживается ли клавиша нажатой, а не только - начальное событие нажатия, то используйте действие If Key Down.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Любые действия, отброшенные в других местах, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Keyboard Pressed Icon

-

Аргументы:

-

- - - - - - - - - - - - - - - -
АргументОписание
KeyИмя ключа для проверки.
NotОтрицание проверки (истина становится ложью и наоборот)
-

-

Пример:

-

Приведенный выше код блока действий опрашивает состояние клавиатуры на каждом шаге, и если клавиша - удерживается нажатой, он проверяет наличие начального нажатия клавиши вниз. Если проверка true на первоначальное нажатие, то воспроизводится звук, затем, пока клавиша удерживается, смешивание sprite изменяется на красное. Если клавиша не удерживается, проверка - выполняется при отпускании клавиши, чтобы сбросить цвет смешивания на белый.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Key_Released.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Key_Released.htm index 93960f529..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Key_Released.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Key_Released.htm @@ -1,68 +0,0 @@ - - - - - - Если ключ отпущен - - - - - - - - - - -

Если ключ отпущен

-

Это действие проверяет, была ли отпущена клавиша клавиатуры. Оно возвращает true на одном игровом шаге (кадре), на котором клавиша была отпущена, и false во всех остальных случаях. Если вы включите модификатор not, это действие будет - и проверять, не была ли клавиша отпущена, возвращая false на игровом шаге (кадре), на котором она была отпущена, и true во всех остальных случаях.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" имеет значение true, - в то время как любые действия, отброшенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Keyboard Released Icon

-

Аргументы:

-

- - - - - - - - - - - - - - - -
АргументОписание
KeyИмя ключа для проверки.
NotОтрицание проверки (истина становится ложью и наоборот)
-

-

Пример:

-

Приведенный выше код блока действий опрашивает состояние клавиатуры на каждом шаге и - если клавиша удерживается нажатой, то проверяется наличие начального нажатия клавиши вниз. Если проверка true на первоначальное нажатие, воспроизводится звук, затем, пока клавиша удерживается нажатой, смешивание sprite изменяется на красное. Если клавиша не удерживается - то проверка выполняется при отпускании клавиши для сброса цвета смешивания на белый.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Mouse_Down.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Mouse_Down.htm index 599736452..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Mouse_Down.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Mouse_Down.htm @@ -1,64 +0,0 @@ - - - - - - Если мышь опущена - - - - - - - - - - -

Если мышь опущена

-

С помощью этого действия вы можете опросить мышь, чтобы узнать, удерживается ли выбранная кнопка в данный момент. Действие будет возвращать true каждый шаг, когда кнопка удерживается нажатой, или false в противном случае, хотя если вы щелкните модификатор not, то сможете проверить, не удерживается ли кнопка, т.е. действие будет возвращать true, если кнопка не нажата, и false, если нажата. Если вам нужно проверить только одно нажатие кнопки, используйте действие If Mouse Pressed.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" имеет значение true, в то время как любые действия, отброшенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Mouse Down Icon

-

Аргументы:

-

- - - - - - - - - - - - - - - -
АргументОписание
Mouse ButtonИмя кнопки мыши для проверки (см. эту страницу для получения информации о константах кнопок мыши).
NotОтрицание проверки (истина становится ложью и наоборот)
-

-

Пример:

-

Приведенный выше код блока действий опрашивает состояние кнопки мыши на каждом шаге и, если она удерживается нажатой, проверяет начальное нажатие кнопки вниз. Если проверка выполнена true, то при первоначальном нажатии устанавливается скорость экземпляра, затем, пока кнопка находится в нажатом состоянии, смешивание sprite изменяется на красное. Если мышь не удерживается, проверка выполняется при отпускании мыши, чтобы сбросить цвет смешивания на белый и установить скорость на 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Mouse_Pressed.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Mouse_Pressed.htm index 39e06d23f..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Mouse_Pressed.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Mouse_Pressed.htm @@ -1,63 +0,0 @@ - - - - - - При нажатии кнопки мыши - - - - - - - - - - -

При нажатии кнопки мыши

-

Это действие проверяет первоначальное нажатие на кнопку мыши. Оно возвращает true на одном игровом шаге (кадре), когда кнопка нажата изначально, и false во всех остальных случаях. Если вы включите модификатор not, это действие будет обратным и будет проверять, не была ли кнопка нажата, возвращая false на игровом шаге (кадре), когда она была нажата, и true во всех остальных случаях. Если вам нужно проверить, удерживается ли кнопка, а не только начальное событие нажатия, используйте действие If Mouse Down.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" имеет значение true, в то время как любые действия, отброшенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Mouse Pressed Icon

-

Аргументы:

-

- - - - - - - - - - - - - - - -
АргументОписание
Mouse ButtonИмя кнопки мыши для проверки (см. эту страницу для получения информации о константах кнопок мыши).
NotОтрицание проверки (истина становится ложью и наоборот)
-

-

Пример:

-

Приведенный выше код блока действий опрашивает состояние кнопки мыши на каждом шаге и, если она удерживается нажатой, проверяет начальное нажатие кнопки вниз. Если проверка выполнена true, то при первоначальном нажатии устанавливается скорость экземпляра, затем, пока кнопка находится в нажатом состоянии, смешивание sprite изменяется на красное. Если мышь не удерживается, проверка выполняется при отпускании мыши, чтобы сбросить цвет смешивания на белый и установить скорость на 0.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Mouse_Released.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Mouse_Released.htm index b0a30fdb5..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Mouse_Released.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Mouse_Released.htm @@ -1,65 +0,0 @@ - - - - - - Если мышь отпущена - - - - - - - - - - -

Если мышь отпущена

-

Это действие проверяет, когда кнопка мыши была отпущена. Оно вернет true на одном игровом шаге (кадре), на котором кнопка мыши была отпущена, и false во всех остальных случаях. Если вы включите модификатор not, это действие будет обратным и будет проверять, не была ли отпущена кнопка мыши, возвращая false на игровом шаге (кадре), на котором она была отпущена, и true во всех остальных случаях.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

If Mouse Released Icon

-

Теперь эти действия будут выполняться, если "if" имеет значение true, в то время как любые действия, отброшенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Mouse Released drop actions

-

Аргументы:

-

- - - - - - - - - - - - - - - -
АргументОписание
Mouse ButtonИмя кнопки мыши для проверки (см. эту страницу для получения информации о константах кнопок мыши).
NotОтрицание проверки (истина становится ложью и наоборот)
-

-

Пример:

-

Приведенный выше код блока действий опрашивает состояние кнопки мыши на каждом шаге и, если она удерживается нажатой, проверяет начальное нажатие кнопки вниз. Если проверка выполнена true, то при первоначальном нажатии устанавливается скорость экземпляра, затем, пока кнопка находится в нажатом состоянии, смешивание sprite изменяется на красное. Если мышь не удерживается, проверка выполняется при отпускании мыши, чтобы сбросить цвет смешивания на белый и установить скорость на 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Virtual_Keyboard_Is_Showing.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Virtual_Keyboard_Is_Showing.htm index 068a2558e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Virtual_Keyboard_Is_Showing.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/If_Virtual_Keyboard_Is_Showing.htm @@ -1,47 +0,0 @@ - - - - - - Если отображается виртуальная клавиатура - - - - - - - - - - -

Если отображается виртуальная клавиатура

-

Это действие можно использовать для проверки того, отображается ли виртуальная клавиатура ОС или нет. Действие будет иметь значение true, если клавиатура открыта или открыта, или false, если виртуальная клавиатура закрыта или закрыта. Если вы включите модификатор not, это действие будет обратным, и вы сможете сохранить возвращаемое значение true / false в целевой переменной, которая может быть помечена как temp (локальная).

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" - true , в то время как любые действия, отброшенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Virtual Keyboard Is Showing Icon

-

Пример:

-

Приведенный выше код блока действий проверяет наличие нажатия кнопки мыши, и - если таковое обнаружено, то выполняется проверка, отображается ли виртуальная клавиатура ОС. Если нет, то она устанавливается на отображение - с использованием цифрового типа клавиатуры - а если уже отображается, то скрывается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/Mouse_And_Keyboard_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/Mouse_And_Keyboard_Actions.htm index 36f6fe64c..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/Mouse_And_Keyboard_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/Mouse_And_Keyboard_Actions.htm @@ -1,118 +0,0 @@ - - - - - - Действия мыши и клавиатуры - - - - - - - - - - -

Библиотека действий с мышью и клавиатурой

-

Mouse And Keyboard Action Library

-

Сайт Мышь и клавиатура библиотека действий - это место, где вы можете найти действия, необходимые для опроса и обработки ввода с клавиатуры или мыши. Все доступные действия перечислены ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Mouse Pressed IconПри нажатии кнопки мыши
Mouse Down IconЕсли мышь опущена
Mouse Released IconЕсли мышь отпущена
Keyboard Pressed IconЕсли нажата клавиша
Keyboard Down IconЕсли клавиша нажата
Keyboard Released IconЕсли ключ отпущен
-

-

-

-

-

-

-

-

-

-

Остальные действия здесь относятся к виртуальной клавиатуре. Если вам требуется ввод текста или цифр в игре на устройстве с сенсорным экраном, то вы можете использовать действия виртуальной клавиатуры для использования клавиатуры ОС устройства. Эти действия будут вызывать или скрывать клавиатуру ОС и принимать ввод с нее точно так же, как с физической клавиатуры, поэтому все обычные действия GameMaker с виртуальной клавиатурой должны работать (например, действие "If Key Released"), а любой ввод с виртуальной клавиатуры будет храниться в различных переменных клавиатуры, таких как keyboard_string или keyboard_last_char, и т.д...).

-

Открытие или закрытие виртуальной клавиатуры будет генерировать системные асинхронные события, в которых карта async_load  DS будет заполнена следующими парами ключ/значение:

- -

Доступны следующие действия виртуальной клавиатуры:

- - - - - - - - - - - - - - - - - - - -
Show Virtual Keyboard IconПоказать виртуальную клавиатуру
Hide Virtual Keyboard IconСкрыть виртуальную клавиатуру
Get Virtual Keyboard Height IconПолучить высоту виртуальной клавиатуры
If Virtual Keyboard Is Showing IconЕсли отображается виртуальная клавиатура
-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/Show_Virtual_Keyboard.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/Show_Virtual_Keyboard.htm index 1365ab88e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/Show_Virtual_Keyboard.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Mouse_And_Keyboard/Show_Virtual_Keyboard.htm @@ -1,247 +0,0 @@ - - - - - - Показать виртуальную клавиатуру - - - - - - - - - - -

Показать виртуальную клавиатуру

-

Это действие можно использовать для отображения виртуальной клавиатуры на устройстве, на котором запущена игра. При вызове этого действия вам будет предложено указать одну из следующих констант для каждого из первых трех аргументов:

- -

Последним аргументом является разрешение/запрет предикативного текста, и этот параметр должен иметь значение true, чтобы разрешить его, и false в противном случае, но обратите внимание, что то, что он разрешен, не означает, что он будет использоваться, так как это зависит от предпочтений - пользователя устройства. В режиме предикативного текста виртуальная клавиатура не будет генерировать обычные события нажатия клавиш GameMaker. Вместо этого она будет обновлять только последний нажатый символ и переменные строки клавиатуры. Это связано с тем, что - невозможности определить, произошло ли изменение во внутреннем текстовом поле, используемом для обнаружения нажатия клавиш, от фактической клавиши виртуальной клавиатуры или от текстового предложения. В таких случаях необходимо считывать ввод keyboard_string, а не - чем считывать любой необработанный ввод клавиш.

-

Важно также отметить, что пользователь получит разные клавиатуры с разными возможностями в зависимости от ОС платформы, со следующими оговорками для использования по назначению:

- -

Вызов этой функции сгенерирует системное асинхронное событие, в котором карта async_load  DS будет заполнена следующими парами ключ/значение:

- -

-

Синтаксис действия:

-

Show Virtual Keyboard Icon

-

Аргументы:

-

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
keyboard_typeОпределяет набор клавиш, доступный на виртуальной клавиатуре.
return_key_typeОпределяет, что будет отображаться на клавише возврата/действия виртуальной клавиатуры.
autocapitalization_typeОпределяет, как/если слова, набранные с помощью виртуальной клавиатуры, будут автокапитализированы.
predictive_text_enabledУстановите значение true/false, чтобы включить/выключить предикативный ввод текста.
-

-

Пример:

-

Приведенный выше код блока действий проверяет наличие действия нажатия кнопки мыши, и если таковое - обнаружено, то выполняется проверка, отображается ли виртуальная клавиатура ОС. Если нет, то она устанавливается на отображение - с использованием цифрового типа клавиатуры - а если уже отображается, то скрывается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Jump_To_Point.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Jump_To_Point.htm index 60126e89a..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Jump_To_Point.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Jump_To_Point.htm @@ -1,64 +0,0 @@ - - - - - - Перейти к точке - - - - - - - - - - -

Перейти к точке

-

Это действие используется для перемещения экземпляра из одного места в другое. Экземпляр не будет плавно перемещаться в новое место, а будет "прыгать", чтобы быть помещенным туда, так что если значения достаточно велики, то он "проскочит" все другие - экземпляры по пути. Можно задать абсолютные значения для перемещения экземпляра, а можно установить флаг "relative", чтобы экземпляр перемещался относительно текущей позиции. Например, если вы хотите, чтобы экземпляр переместился только на 10 пикселей влево, - установите значение x равным -10, а значение y равным 0 и отметьте флаг "относительно" для обоих значений. Можно использовать отрицательные значения для абсолютных координат, и тогда экземпляр будет перемещен за пределы области базовой комнаты.

-

-

Синтаксис действия:

-

Jump To Point Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
xПозиция x для перехода
yПоложение по оси y для перехода
-

-

Пример:

-

Приведенный выше код блока действий проверяет, удерживается ли левая кнопка мыши, и если - он перемещает экземпляр в позицию мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Jump_To_Start.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Jump_To_Start.htm index b8e3f45b9..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Jump_To_Start.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Jump_To_Start.htm @@ -1,44 +0,0 @@ - - - - - - Перейти к старту - - - - - - - - - - -

Перейти к старту

-

Это действие используется для перемещения экземпляра из его текущей позиции в позицию, где он был первоначально создан. Исходное положение, в котором был создан экземпляр, хранится в двух переменных экземпляра, называемых xstart и ystart. Эти переменные могут быть использованы в любом другом действии, а также могут быть установлены для изменения записанной начальной позиции.

-

-

Синтаксис действия:

-

Jump To Start Icon

-

Пример:

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Movement_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Movement_Actions.htm index 31c774e55..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Movement_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Movement_Actions.htm @@ -1,116 +0,0 @@ - - - - - - Действия при движении - - - - - - - - - - -

Библиотека действий движения

-

Movement Actions Library

-

В любой игре перемещение и положение имеют первостепенное значение, поэтому в GameMaker имеется полный набор действий для любой ситуации. Два основных способа перемещения экземпляра - это либо задать фактическую позицию (x/y) в пределах комнаты, либо задать вектор скорости/направления. - комнаты, либо задать вектор скорости/направления. Показанные здесь действия охватывают оба способа, и вы можете использовать переменную Common Action Assign Variable для непосредственной установки положения x и y самостоятельно.

-

Доступны следующие действия движения:

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Set Direction Fixed IconУстановить направление Фиксированное
Set Direction Variable IconУстановить переменную направления
Set Point Direction IconНаправление заданного значения
Set Direction Random IconУстановить направление Случайно
Set Speed IconУстановленная скорость
Set Gravity Direction IconУстановить направление гравитации
Set Gravity Force IconУстановить силу гравитации
Reverse IconОбратный
Set Friction IconУстановить трение
Jump To Point IconПерейти к точке
Jump To Start IconПерейти к старту
Snap Position IconПоложение защелки
Wrap Around Room IconОкружающая комната
-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Reverse.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Reverse.htm index 5272a2318..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Reverse.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Reverse.htm @@ -1,62 +0,0 @@ - - - - - - Обратный - - - - - - - - - - -

Обратный

-

Это действие используется для отмены определенных значений, связанных с направлением и движением. Доступны следующие варианты:

-

Изменение направления просто добавит 180° к текущему направлению (при необходимости зацикливаясь на 360°). - например, если изменить направление на 270°, то получится 90°), изменение горизонтальной или вертикальной скорости просто умножит заданный вектор скорости на -1, а выбор гравитации сделает то же самое, что и выбор направления, только для - только для направления гравитации.

-

-

Синтаксис действия:

-

Reverse Icon

-

Аргументы:

-

- - - - - - - - - - - -
АргументОписание
directionНаправление для реверса
-

-

Пример:

-

Приведенный выше код блока действий проверяет столкновение экземпляра с "obj_Wall" - относительно текущей позиции влево и вправо. Если таковое обнаружено, то горизонтальная скорость изменяется на противоположную. Затем то же самое выполняется для экземпляра выше и ниже, при обнаружении столкновения изменяется вертикальная скорость.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Direction_Fixed.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Direction_Fixed.htm index 00dc2d54b..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Direction_Fixed.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Direction_Fixed.htm @@ -1,45 +0,0 @@ - - - - - - Установить направление Фиксированное - - - - - - - - - - -

Установить направление Фиксированное

-

Это действие используется для задания фиксированного направления движения. Доступные направления обозначены различными кнопками в блоке действий, и щелчок на любой из них задает это направление. Обратите внимание, что направления в GameMaker - измеряются в градусах: вправо - 0°, вверх - 90°, влево - 180° и вниз - 270°.

-

-

Синтаксис действия:

-

Set Direction Fixed Icon

-

Пример:

-

Приведенный выше код блока действий проверяет наличие - нажатия левой кнопки мыши на экземпляре, и если таковое обнаружено, он устанавливает направление вниз (270°) и скорость на 5.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Direction_Random.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Direction_Random.htm index 9bdf3918b..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Direction_Random.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Direction_Random.htm @@ -1,44 +0,0 @@ - - - - - - Установить направление Случайно - - - - - - - - - - -

Установить направление Случайно

-

Это действие используется для установки направления движения экземпляра на одно или несколько случайных направлений, выбранных из 8 кардинальных точек. Вы можете щелкнуть одну или несколько из 8 стрелок направления внутри действия, и действие выберет одно из них случайным образом - для использования в качестве направления для экземпляра. Если вы не выберете ни одну из стрелок, действие не повлияет на текущее направление экземпляра.

-

-

Синтаксис действия:

-

Set Direction Random Icon

-

Пример:

-

Приведенный выше код блока действий выбирает либо true, либо false и сохраняет результат во временной (локальной) переменной. Затем эта переменная проверяется, и если это true, то выбирается один набор случайных направлений, а если false, то другой.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Direction_Variable.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Direction_Variable.htm index 030f9cef6..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Direction_Variable.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Direction_Variable.htm @@ -1,59 +0,0 @@ - - - - - - Установить переменную направления - - - - - - - - - - -

Установить переменную направления

-

Это действие используется для задания направления для экземпляра, которое не фиксировано с шагом 45°. Вы задаете значение направления от 0° до 360° - где вправо - 0°, вверх - 90°, влево - 180° и вниз - 270° - а также можете установить флаг relative, чтобы добавить/вычесть значение, которое вы задаете, к текущему направлению.

-

-

Синтаксис действия:

-

Set Direction Variable Icon

-

Аргументы:

-

- - - - - - - - - - - -
АргументОписание
DirectionНаправление от 0° до 360° (значения вне диапазона будут обернуты).
-

-

Пример:

-

Приведенный выше код блока действий проверяет, удерживается ли левая кнопка мыши. - и если она удерживается, то устанавливает направление на случайное значение от 0 до 360 и скорость на 5.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Friction.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Friction.htm index 4f893e33d..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Friction.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Friction.htm @@ -1,59 +0,0 @@ - - - - - - Установить трение - - - - - - - - - - -

Установить трение

-

Это действие используется для установки "трения" для экземпляра. Трение означает, что определенная величина будет вычитаться из вектора скорости каждый игровой кадр, где вы указываете величину вычитания. Обычно лучше всего работают меньшие значения, например - 0.2, но фактическое значение будет зависеть от настроек вашего проекта. Если вы установите флаг relative, то указанная сумма будет добавлена к текущему значению трения вместо того, чтобы установить его.

-

-

Синтаксис действия:

-

Set Friction Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
frictionТрение для применения (только положительные значения)
-

-

Пример:

-

Приведенный выше код блока действий устанавливает различные свойства экземпляра, связанные с движением: - направление силы тяжести установлено вниз (270°), сила тяжести установлена на 0,05, а трение установлено на 0,2.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Gravity_Direction.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Gravity_Direction.htm index f89e24b3e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Gravity_Direction.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Gravity_Direction.htm @@ -1,65 +0,0 @@ - - - - - - Установить направление гравитации - - - - - - - - - - -

Установить направление гравитации

-

Это действие используется для установки направления встроенной переменной gravity. Каждый экземпляр может иметь свой собственный эффект гравитации, и если значение гравитации установлено в значение, отличное от нуля, то экземпляр будет "тянуть" в - направлении, заданном этим действием. Вы можете задать направление от 0° до 360°, где вправо - 0°, вверх - 90°, влево - 180° и вниз - 270°. Обратите внимание, что вы можете задать направление относительно текущего значения гравитации, поэтому все, что вы введете, будет добавлено/вычтено - от этого значения.

-

-

Синтаксис действия:

-

Set Gravity Direction Icon

-

Аргументы:

-

- - - - - - - - - - - -
АргументОписание
directionНаправление от 0° до 360° (значения вне диапазона будут завернуты).
-

-

Пример:

-

Приведенный выше код блока действий устанавливает различные свойства экземпляра, связанные с - движением: направление силы тяжести установлено вниз (270°), сила тяжести установлена на 0,05, а трение установлено на 0,2.

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Gravity_Force.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Gravity_Force.htm index 123232f5e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Gravity_Force.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Gravity_Force.htm @@ -1,60 +0,0 @@ - - - - - - Установить силу гравитации - - - - - - - - - - -

Установить силу гравитации

-

Это действие используется для задания силы гравитации, действующей на экземпляр. Каждый экземпляр может иметь свою силу гравитации (и направление) независимо от всех остальных. Применяемая сила - это значение в пикселях за игровой кадр, и она является кумулятивной, т.е. - добавляется на каждом шаге, поэтому если у вас скорость 2, а сила тяжести 1, скорость будет увеличиваться на 1 на каждом шаге, что означает, что обычно вам нужны очень низкие значения. Обратите внимание, что вы можете ввести отрицательные значения для гравитации, и экземпляр будет "притягиваться" - в направлении, противоположном направлению силы тяжести.

-

-

Синтаксис действия:

-

Set Gravity Force Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
forceСила гравитации, которую нужно применить (может быть отрицательной)
-

-

Пример:

-

Приведенный выше код блока действий устанавливает различные свойства экземпляра, связанные с движением: - направление силы тяжести установлено вниз (270°), сила тяжести установлена на 0,05, а трение установлено на 0,2.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Point_Direction.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Point_Direction.htm index 2919879ec..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Point_Direction.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Point_Direction.htm @@ -1,64 +0,0 @@ - - - - - - Направление заданного значения - - - - - - - - - - -

Направление заданного значения

-

Это действие используется для задания направления из вектора, образованного текущей позицией экземпляра и заданной позицией. Вы указываете позиции x и y, на которые нужно "указать" - они могут быть помечены как относительные по отношению к позиции экземпляра - и - направление от экземпляра к этой точке будет использоваться для экземпляра.

-

-

Синтаксис действия:

-

Set Point Direction Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
xКомпонент x вектора направления.
yКомпонент y вектора направления.
-

-

Пример:

-

Приведенный выше код блока действий проверяет, существует ли экземпляр объекта - "obj_Player" в комнате, и если он существует, то устанавливает направление этого объекта на позицию x/y объекта "obj_Player".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Speed.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Speed.htm index cd3125dd9..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Speed.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Set_Speed.htm @@ -1,62 +0,0 @@ - - - - - - Установленная скорость - - - - - - - - - - -

Установленная скорость

-

Это действие используется для установки скорости перемещения экземпляра. Скорость рассчитывается как количество пикселей, которые экземпляр должен переместить за один игровой кадр (шаг). По умолчанию значение скорости будет добавлено к вектору направления - так что если задать - скорость равна 2, а направление - 45°, экземпляр будет перемещаться вверх и вправо на 2 пикселя каждый игровой кадр - но вы также можете щелкнуть на поле direction и выбрать горизонтальную или вертикальную скорость.

-

При выборе любого из этих вариантов скорость будет задана только для горизонтального или вертикального вектора. Обратите внимание - что вы можете отметить значение как относительное к текущей скорости, что добавит или вычтет значение из фактической скорости экземпляра, а также вы можете указать отрицательные числа, что заставит двигаться в направлении, противоположном текущему значению. - значение направления.

-

-

Синтаксис действия:

-

Set Speed Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
speedЗначение скорости (может быть отрицательным).
-

-

Пример:

-

Приведенный выше код блока действий проверяет наличие нажатия левой кнопки мыши - на экземпляре, и если таковое обнаружено, он устанавливает направление вниз (270°) и скорость на 5.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Snap_Position.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Snap_Position.htm index 5f3ce3cbd..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Snap_Position.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Snap_Position.htm @@ -1,64 +0,0 @@ - - - - - - Положение защелки - - - - - - - - - - -

Положение защелки

-

Это действие используется для "привязки" экземпляра к определенной позиции координатной сетки. Вы задаете размер "ячейки" сетки, и экземпляр будет привязан к этой сетке, например, если вы установите значения привязки сетки для горизонтальной и - 8, и экземпляр находится в точке (4, 6), то он будет привязан к позиции (0, 8) - по сути, текущая позиция округляется до ближайшего значения, кратного настройкам горизонтальной и вертикальной привязки, где ячейки сетки начинаются с левого верхнего угла комнаты (0, 6). - левом верхнем углу комнаты (0, 0). Значения по умолчанию установлены на привязку (32, 32), но вы можете изменить их на любое целое положительное значение, которое вам необходимо.

-

-

Синтаксис действия:

-

Snap Position Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
horizontalЗначение горизонтальной ячейки, к которой нужно привязаться
verticalЗначение вертикальной ячейки, к которой нужно привязаться
-

-

Пример:

-

Приведенный выше код блока действий проверяет, удерживается ли левая кнопка мыши - на экземпляре, и если она удерживается, то экземпляр следует за мышью, а когда кнопка отпускается, экземпляр привязывается к сетке 32 на 32.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Wrap_Around_Room.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Wrap_Around_Room.htm index 12099a846..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Wrap_Around_Room.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Movement/Wrap_Around_Room.htm @@ -1,68 +0,0 @@ - - - - - - Окружающая комната - - - - - - - - - - -

Окружающая комната

-

С помощью этого действия вы можете позволить экземпляру обернуться вокруг комнаты, то есть, когда он покидает одну сторону комнаты, он снова появляется на другой стороне. Это действие обычно используется в событии Other - Outside Room Event или Step Event, и вы можете указать, нужно ли оборачивать только горизонтально, только вертикально или в обоих направлениях, а также задать отступ. Значение отступа - это количество - пикселей за пределами области комнаты, на которое должен переместиться экземпляр, прежде чем он будет обернут на другую сторону. Обратите внимание, что экземпляр должен иметь скорость, чтобы обертывание работало, потому что направление обертывания основано на направлении - движения.

-

-

Синтаксис действия:

-

Wrap Around Room Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
MarginКрай по краю комнаты для проверки
HorizontalВключить горизонтальную обертку (по умолчанию включена)
VerticalВключить вертикальную обертку (по умолчанию включена)
-

-

Пример:

-

Приведенный выше код блока действий, помещенный в событие Step Event, обернет экземпляр вокруг - горизонтальной или вертикальной оси, когда он выходит за пределы области комнаты более чем на 32px.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Burst_Particles.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Burst_Particles.htm index e26b2c376..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Burst_Particles.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Burst_Particles.htm @@ -1,77 +0,0 @@ - - - - - - Взорвавшиеся частицы - - - - - - - - - - -

Взорвавшиеся частицы

-

Это действие позволяет вам в любой момент врывать частицы, не прибегая к помощи эмиттера. Вы предоставляете уникальное значение ID системы для создания частиц (полученное при создании системы действием Create Particle System) - и уникальный ID типа частиц для создания (полученный при создании типа частиц действием Create Particle Type), а также позицию x/y для создания частиц и их количество. - Позиция может быть абсолютной позицией в комнате, или вы можете отметить ее как относительную позицию по отношению к экземпляру, вызывающему действие.

-

Вы можете вызывать это действие каждый игровой кадр, чтобы воспроизвести эффект потока эмиттера, или вызвать его один раз в событии (например, в событии Destroy), чтобы просто разорвать частицы.

-

-

Синтаксис действия:

-

Burst Particles Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
SystemЗначение ID системы частиц для использования
TypeЗначение идентификатора типа частицы, которую необходимо разбить
XПозиция x для разрыва частиц
YОни занимают позицию, чтобы разрывать частицы на
CountКоличество частиц, которые должны быть разбиты
-

-

Пример:

-

Приведенный выше код блока действий проверит, изменил ли экземпляр позицию - с момента обновления последнего игрового кадра, и если изменил, то взорвет частицы в новой позиции.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Clear_Particle_System.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Clear_Particle_System.htm index 50a271dfa..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Clear_Particle_System.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Clear_Particle_System.htm @@ -1,62 +0,0 @@ - - - - - - Система прозрачных частиц - - - - - - - - - - -

Система прозрачных частиц

-

С помощью этого действия вы можете очистить данную систему частиц до состояния по умолчанию, удалив все эмиттеры (также нет необходимости вызывать действие Destroy Particle Emitter, так как это происходит автоматически) - и убрать все частицы с экрана. Вы предоставляете уникальное значение ID системы для очистки, полученное при создании системы действием Create Particle System. Необходимо соблюдать осторожность при использовании - этого действия, так как оно уничтожает все эмиттеры, связанные с системой частиц - это означает, что любой экземпляр в комнате, использующий эмиттер, может выдать ошибку, так как эмиттер больше не существует, поэтому убедитесь, что действие вызывается только тогда, когда - вы не собираетесь создавать новые частицы из этого эмиттера (более подробную информацию об эмиттерах частиц см. в разделе Создать эмиттер частиц).

-

ПРИМЕЧАНИЕ: Это действие очищает только видимые частицы в комнате, но не очищает свойства частиц и не удаляет их из памяти. Для этого следует использовать действие Уничтожить тип частицы.

-

-

Синтаксис действия:

-

Clear Particle System Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
SystemУникальное значение ID для уничтожаемой системы
-

-

Пример:

-

Приведенный выше код блока действий уберет все частицы с экрана - если у игрока 0 или меньше жизней, а затем перезапустит комнату.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Create_Particle_Emitter.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Create_Particle_Emitter.htm index e73b95805..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Create_Particle_Emitter.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Create_Particle_Emitter.htm @@ -1,69 +0,0 @@ - - - - - - Создайте излучатель частиц - - - - - - - - - - -

Создайте излучатель частиц

-

Чтобы иметь возможность видеть свои частицы, необходимо сначала создать систему частиц, затем определить некоторые типы частиц и, наконец, создать эмиттер частиц с помощью этого действия. Чтобы создать эмиттер, вы вызываете это действие и назначаете эмиттер системе частиц, которую вы ранее создали (см. Система частиц), а затем задаете переменную target для хранения его - уникальное значение ID для использования в дальнейших действиях. Вы можете отметить эту переменную как временную локальную переменную, но это будет означать, что она будет удалена в конце сценария действия или события, то есть эмиттер все еще будет существовать, но у вас не будет к нему доступа. - поэтому при его использовании следует соблюдать осторожность (в общем случае эмиттеры никогда не нужно хранить во временной локальной переменной, но для некоторых вещей, таких как притягивание частиц к поверхности, это может потребоваться).

-

ВАЖНО! Если ваша система частиц постоянна, то вы должны либо уничтожить все эмиттеры в конце каждой комнаты с помощью Destroy Particle Emitter и создать их заново в следующей комнате по мере необходимости, - либо хранить их ID значения в глобальных переменных, чтобы к ним можно было получить доступ в любое время в любой комнате, либо создать их в постоянном объекте, чтобы объект сохранился и мог получить к ним доступ через переменные экземпляра. Также обратите внимание, что - если вы вызываете действие " Перезапустить игру ", вам следует предварительно уничтожить систему частиц, чтобы система и назначенные эмиттеры были удалены из памяти перед новым запуском. Если не удалить эмиттеры - из памяти системы, как указано выше, приведет к утечке памяти. Это происходит, когда ресурс добавляется в память, а затем "отсылается", то есть GameMaker больше не имеет возможности взаимодействовать с этим ресурсом. Это приводит к тому, что - к засорению памяти недоступными ресурсами, что, в свою очередь, может привести к проблемам в вашей игре.

-

-

Синтаксис действия:

-

Create Particle Emitter Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
SystemЗначение ID для создаваемого глобального излучателя
TargetЦелевая переменная для хранения идентификатора излучателя
-

-

Пример:

-

Приведенный выше код блока действий создаст излучатель частиц, установит его - регион, а затем настроит его на испускание потока частиц.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Create_Particle_System.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Create_Particle_System.htm index f07aeee94..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Create_Particle_System.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Create_Particle_System.htm @@ -1,74 +0,0 @@ - - - - - - Создать систему частиц - - - - - - - - - - -

Создать систему частиц

-

Это действие инициализирует систему частиц, чтобы вы могли создавать и использовать в ней типы частиц и излучатели. Вы задаете имя слоя в виде строки - например, "Particle Layer" (который должен существовать в редакторе комнат) - и затем отмечаете систему как - систему как постоянную или нет. Если система отмечена как постоянная, то она останется активной во всех комнатах после создания, и ей будет назначен управляемый слой, если исходный слой не существует в последующих комнатах. - Если флаг постоянства не установлен, то система будет автоматически уничтожена в конце комнаты, в которой она была создана, как и все эмиттеры, связанные с ней. Если вы хотите вручную удалить систему из памяти, вам необходимо использовать - действие Уничтожить систему частиц.

-

Вам также необходимо предоставить целевую переменную, которая будет содержать уникальное значение ID системы частиц. Это значение ID будет использоваться в других функциях для установки свойств системы или для указания GameMaker, какую систему использовать при создании частиц. - Вы можете отметить эту переменную как временную локальную переменную, но это будет означать, что она будет отброшена в конце сценария действия или события, то есть система все еще будет существовать, но вы останетесь без средств доступа к ней, поэтому при ее использовании следует соблюдать осторожность. - (в общем случае системы никогда не нужно хранить во временной локальной переменной, но для некоторых вещей, таких как притягивание частиц к поверхности, это может потребоваться).

-

ПРИМЕЧАНИЕ: Постоянная система частиц, будучи созданной, остается в памяти системы на все время игры, поэтому если вам нужно воссоздать ее в любой момент (например, если вы вызовете действие Restart Game ), то сначала необходимо уничтожить текущую систему, иначе произойдет утечка памяти. Утечка памяти происходит, когда ресурс добавляется в память, а затем "отсылается", то есть GameMaker не имеет возможности взаимодействовать с этим ресурсом. - этим ресурсом. Это приводит к засорению памяти недоступными ресурсами, что, в свою очередь, может вызвать проблемы в вашей игре. Чтобы уничтожить постоянную систему частиц, если она больше не нужна, используйте действие Destroy Particle System.

-

-

Синтаксис действия:

-

Create Particle System Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
LayerСлой, в котором будут рисоваться частицы в этой системе
PersistentДолжна ли система частиц оставаться активной после завершения текущей комнаты
TargetЦелевая переменная для хранения уникального значения ID созданной системы
-

-

Пример:

-

Приведенный выше блок действий создает глобальную переменную, - затем создает новую систему частиц и присваивает ее уникальное значение ID глобальной переменной. Созданная система частиц помечена как постоянная, поэтому она останется активной даже после завершения текущей комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Create_Particle_Type.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Create_Particle_Type.htm index 85643ab5a..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Create_Particle_Type.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Create_Particle_Type.htm @@ -1,72 +0,0 @@ - - - - - - Создать тип частицы - - - - - - - - - - -

Создать тип частицы

-

В ваших проектах может быть несколько различных типов частиц, каждый из которых имеет свои свойства, такие как направление, цвет и т.д., которые задаются с помощью действий для различных типов частиц. Однако сначала вам нужно создать тип частиц с помощью этого действия, которое, по сути, выделяет небольшой объем памяти для хранения всех деталей частиц, чтобы вы могли использовать их в любое время в будущем. Вы задаете переменную для хранения уникального значения ID для типа частицы, а затем во - всех будущих действиях, связанных с этой частицей, вы можете обращаться к этой переменной. Вы можете пометить эту переменную как временную локальную переменную, но это будет означать, что она будет удалена в конце сценария действия или события, то есть тип частицы - будет по-прежнему существовать, но вы останетесь без средств доступа к ней, поэтому при ее использовании следует соблюдать осторожность (в целом типы частиц никогда не нужно хранить во временной локальной переменной, но для некоторых вещей, таких как притягивание частиц к поверхности, - это может потребоваться).

-

ПРИМЕЧАНИЕ: Созданный тип частиц остается в системной памяти на все время игры, поэтому, если вам понадобится создать его заново в любой момент (например, если вы вызовете действие Restart Game ), - то вы должны уничтожить текущий тип частиц, иначе произойдет утечка памяти. Это происходит, когда ресурс добавляется в память, а затем "отсылается", то есть GameMaker больше не имеет возможности взаимодействовать с этим ресурсом. - больше. Это приводит к засорению памяти недоступными ресурсами, что, в свою очередь, может вызвать проблемы в вашей игре. Чтобы уничтожить тип частицы, если он больше не нужен, используйте действие Destroy Particle Type.

-

Вы также можете установить режим наложения, который будет использоваться для частиц. По умолчанию они будут рисоваться в "обычном" режиме наложения, поэтому цвета не будут изменяться в зависимости от того, что было нарисовано под частицей, однако, если опция "Наложение" - включена, они будут нарисованы с использованием аддитивного смешивания, что означает, что частицы будут нарисованы с изменением цветов в зависимости от того, что было нарисовано под частицей. Аддитивное смешивание дает очень яркие и "светящиеся" эффекты, и является - идеально подходит для взрывов, лазеров, огня и т.д., в то время как обычное смешивание лучше подходит для таких эффектов, как дождь, дым и обломки. На изображении ниже показан один и тот же эффект с выключенным (слева) и включенным (справа) аддитивным смешиванием:

-

Create Particle Type Icon

-

-

Синтаксис действия:

-

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
TargetЦелевая переменная для хранения возвращаемого значения идентификатора типа
BlendДолжен ли тип частиц использовать аддитивное смешивание
-

-

Пример:

-

Приведенный выше код блока действий создаст новый тип частиц и присвоит его уникальное - ID значение глобальной переменной. Затем он переходит к установке всех свойств для типа частицы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Destroy_Particle_Emitter.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Destroy_Particle_Emitter.htm index 7a48bfac4..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Destroy_Particle_Emitter.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Destroy_Particle_Emitter.htm @@ -1,65 +0,0 @@ - - - - - - Уничтожить излучатель частиц - - - - - - - - - - -

Уничтожить излучатель частиц

-

Это действие "уничтожит" данный эмиттер частиц, то есть освободит память, используемую эмиттером частиц. Вы указываете ID системы частиц, к которой принадлежит эмиттер (возвращается действием Create Particle System) - и затем ID фактического эмиттера (возвращаемый действием Create Particle Emitter). Это действие следует вызывать всякий раз, когда вам больше не нужен эмиттер частиц в вашей игре, или когда вы хотите заново создать - излучатель частиц (например, непосредственно перед вызовом Game Restart). Обратите внимание, что если система частиц, которой был назначен эмиттер, не была отмечена как Persistent, то вызывать это действие не нужно, - так как эмиттер будет автоматически очищен на стороне комнаты вместе с системой частиц.

-

-

Синтаксис действия:

-

Destroy Particle Emitter Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
SystemЗначение идентификатора системы, содержащей излучатель
EmitterЗначение идентификатора излучателя, который нужно уничтожить
-

-

Пример:

-

Приведенный выше код блока действий проверит переменную экземпляра и - если она больше 100, то уничтожит эмиттер, назначенный данному экземпляру, а затем перейдет в следующую комнату.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Destroy_Particle_System.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Destroy_Particle_System.htm index d1069a50d..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Destroy_Particle_System.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Destroy_Particle_System.htm @@ -1,61 +0,0 @@ - - - - - - Уничтожить систему частиц - - - - - - - - - - -

Уничтожить систему частиц

-

Это действие "уничтожит" данную систему частиц (т.е. освободит память, используемую системой частиц). Вы вводите уникальное значение ID системы для уничтожения, полученное при создании системы действием Create Particle System. - Это действие следует вызывать всякий раз, когда вам больше не нужна система частиц в вашей игре, или когда вы хотите заново создать систему частиц (например, непосредственно перед вызовом Restart Game). Обратите внимание, что если - система частиц не была помечена как постоянная, то вам не нужно вызывать это действие, так как система частиц (и все связанные с ней эмиттеры) будет автоматически очищена на стороне комнаты.

-

ВАЖНО! Эта функция также уничтожит и удалит все эмиттеры, которые могли быть созданы и связаны с уничтожаемой системой (см. раздел " Создать эмиттер частиц " для получения дополнительной информации).

-

-

Синтаксис действия:

-

Destroy Particle System Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
SystemУникальное значение ID для уничтожаемой системы
-

-

Пример:

-

Приведенный выше код блока действий проверяет нажатие клавиши "Пробел" - и если она нажата, то удаляет систему частиц и различные типы частиц, определенные в заданных глобальных переменных, а затем перезапускает игру.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Destroy_Particle_Type.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Destroy_Particle_Type.htm index a14eb3c7c..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Destroy_Particle_Type.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Destroy_Particle_Type.htm @@ -1,59 +0,0 @@ - - - - - - Уничтожить тип частиц - - - - - - - - - - -

Уничтожить тип частиц

-

Это действие "уничтожит" данный тип частиц, созданный действием Create Particle Type (т.е. освободит память, используемую типом частиц). Это действие следует вызывать всякий раз, когда вам больше не нужен - тип частиц в вашей игре, или когда вы хотите заново создать тип частиц (например, перед вызовом перезапуска игры).

-

-

Синтаксис действия:

-

Destroy Particle Type Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
TypeЗначение ID для типа, который необходимо уничтожить
-

-

Пример:

-

Приведенный выше код блока действий проверяет нажатие клавиши "Пробел" - и если она нажата, то удаляет систему частиц и различные типы частиц, определенные в заданных глобальных переменных, а затем перезапускает игру.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Do_Effect.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Do_Effect.htm index 78dcc0fd3..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Do_Effect.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Do_Effect.htm @@ -1,80 +0,0 @@ - - - - - - Эффект - - - - - - - - - - -

Эффект

-

Это действие создаст встроенный эффект частиц либо над, либо под слоями, которые рисуются в вашей игровой комнате. Вы выбираете тип создаваемого эффекта из выпадающего списка (показан на рисунке ниже), затем задаете положение (которое может быть относительным - относительно положения экземпляра) и выберите размер - маленький, средний или большой - для эффекта. Вы также можете задать цвет, который будет использоваться - альфа-значение будет игнорироваться - и решить, будет ли эффект создан под всеми слоями в - или над всеми слоями в комнате. Обратите внимание, что если вы решите использовать эффекты дождя или снега, то значения положения и размера не будут учитываться, так как эффект предназначен для отображения на весь экран.

-

Do Effect Icon

-

Синтаксис действия:

-

Built In Effects Examples

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
TypeТип создаваемого эффекта частиц (см. изображение выше)
WhereДолжны ли частицы создаваться над или под слоями помещения
SizeРазмер эффекта (малый, средний или большой)
XПоложение x в помещении для создания эффекта (в пикселях)
YПоложение y в помещении для создания эффекта (в пикселях)
ColourЦвет эффекта (альфа игнорируется)
-

-

Пример:

-

Приведенный выше код блока действий будет проверять наличие щелчка мыши, и если он будет обнаружен, то создаст - небольшой эффект в позиции мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Emit_Particles.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Emit_Particles.htm index 92d78d415..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Emit_Particles.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Emit_Particles.htm @@ -1,78 +0,0 @@ - - - - - - Испускать частицы - - - - - - - - - - -

Испускать частицы

-

Это действие используется для создания частиц из эмиттера. Вы указываете ID системы частиц, к которой принадлежит эмиттер (возвращается действием Create Particle System), затем фактический ID эмиттера (возвращается действием Create Particle Emitter) и, наконец, тип частицы для создания (возвращается действием Create Particle Type). - действием Create Particle Emitter) и, наконец, тип создаваемой частицы (возвращаемый действием Create Particle Type). Затем вы можете выбрать "Burst" - или "Поток" частиц из эмиттера, а также указать их количество, которое вы хотите создать.

-

При выборе потоковой передачи частиц вам не нужно помещать это действие в событие игрового кадра, такое как событие Step или событие Draw, а просто вызвать его один раз в событии Create (например), и эмиттер будет передавать частицы каждый игровой кадр, пока вы не вызовете это действие снова, остановив его на 0. - пока вы не вызовете это действие снова, чтобы остановить его (установив значение count в 0). Если вы решите разрывать частицы, то вы можете вызвать это действие в любом выбранном вами событии, и частицы будут созданы один раз.

-

-

Синтаксис действия:

-

Emit Particles Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
SystemИдентификатор системы, в которой находится излучатель
EmitterИдентификатор эмиттера для использования
TypeИдентификатор типа частицы для создания
EventТип события для частиц, либо "Burst", либо "Stream".
CountКоличество частиц для разрыва или потока
-

-

Пример:

-

Приведенный выше код блока действий создаст излучатель частиц, установит его регион, - а затем настроит его на испускание потока частиц.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Particle_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Particle_Actions.htm index e632c95ed..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Particle_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Particle_Actions.htm @@ -1,202 +0,0 @@ - - - - - - Действия частиц - - - - - - - - - - -

Библиотека действий с частицами

-

Для сложных вещей в GameMaker вы обычно имеете объект, а затем создаете экземпляры этого объекта в комнате. Однако для графических эффектов это может быть дорого, поскольку каждый экземпляр требует "затрат" на обработку из-за переменных, которые он содержит, и кодов, которые он имеет в различных событиях. Вы можете снизить эти затраты, используя плитки для рисования графики или даже слой активов в редакторе комнат, но оба эти способа обычно используются только для рисования простой графики, которая сохраняет одно и то же положение в течение времени и имеет мало специальных эффектов. Однако есть еще один вариант для создания быстрых, но многогранных графических эффектов в ваших играх - это использование частиц.

-

Частицы - это графические ресурсы с определенными свойствами, которые задаются в системе частиц. Этими свойствами нельзя управлять непосредственно для отдельных частиц, но они изменяются с помощью действий, которые используются для определения отдельных типов частиц в системе. Они очень полезны для создания красивых и ярких эффектов (или тонких и незаметных!), таких как взрывы, деколи, дождь, снег, звездные поля и мусор в игре без нагрузок на CPU или GPU, которые возникают при использовании экземпляров и/или плиток и активов.

-

Базовая установка системы частиц состоит из трех этапов:

- -

Более подробное руководство по настройке и использованию частиц вы можете получить на следующей странице руководства:

- -

Хотя частицы являются отличным инструментом для создания эффектов, они имеют определенные ограничения и правила хорошей практики, которые необходимо соблюдать, если вы не хотите, чтобы у вашей игры были проблемы:

- -

В следующих разделах описаны все действия по созданию собственных систем частиц:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Particle Action LibraryСоздать систему частиц
Create Particle System IconУничтожить систему частиц
Destroy Particle System IconСистема прозрачных частиц
Clear Particle System IconСистема частиц паузы
Pause Particle System IconОбновление системы частиц
Update Particle System IconСоздать тип частицы
Create Particle Type IconУничтожить тип частиц
Destroy Particle Type Icon Установить размер частиц
Set Particle Size IconУстановить спрайт частиц
Set Particle Sprite IconУстановить форму частиц
Set Particle Shape IconУстановить цвет частиц
Set Particle Colour IconУстановить альфа частицы
Set Particle Alpha IconУстановить срок службы частиц
Set Particle Life IconУстановить скорость частиц
Set Particle Speed IconУстановить направление частиц
Set Particle Direction IconУстановить ориентацию частиц
Set Particle Orientation IconУстановить гравитацию частиц
Set Particle Gravity IconУстановить вторичные частицы
Set Secondary Particles IconВзорвавшиеся частицы
Burst Particles IconСоздайте излучатель частиц
Create Particle Emitter IconУничтожить излучатель частиц
Destroy Particle Emitter IconИспускать частицы
Emit Particles IconУстановите регион излучателя
Set Emitter Region IconЭффект
-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Pause_Particle_System.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Pause_Particle_System.htm index 21ff38064..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Pause_Particle_System.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Pause_Particle_System.htm @@ -1,66 +0,0 @@ - - - - - - Система частиц паузы - - - - - - - - - - -

Система частиц паузы

-

Это действие приостанавливает работу заданной системы частиц. Вы указываете уникальное значение ID системы, которую нужно приостановить, полученное при создании системы действием Create Particle System. Приостановленная система частиц - будет продолжать рисовать порожденные частицы, но они больше не будут обновлять свой цвет, положение или альфа-спектр, а также завершат свой жизненный цикл и исчезнут, пока вы не возобновите работу системы. Вы можете выбрать приостановку или возобновление работы системы с помощью опции - "Состояние".

-

Обратите внимание, что это не приостанавливает работу эмиттеров, создающих потоки частиц, и не останавливает эмиттер, выбрасывающий частицы - эмиттеры по-прежнему будут создавать частицы при вызове, но когда система приостановлена, частицы ничего не будут делать и будут отрисовываться точно в том месте, где они созданы, пока вы не сбросите состояние паузы. - пока вы не сбросите состояние паузы или не вызовете Update Particle System.

-

-

Синтаксис действия:

-

Pause Particle System Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
SystemУникальное значение ID для системы, которую необходимо приостановить
StateПриостановить или возобновить работу системы частиц
-

-

Пример:

-

Приведенный выше код блока действий проверит глобальную переменную и, если вернет значение - true то данная система частиц будет приостановлена, в противном случае она будет возобновлена.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Emitter_Region.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Emitter_Region.htm index 0fe04417b..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Emitter_Region.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Emitter_Region.htm @@ -1,95 +0,0 @@ - - - - - - Установите регион излучателя - - - - - - - - - - -

Установите регион излучателя

-

Это действие используется для установки области и формы эмиттера в системе частиц. Вы указываете ID системы частиц, к которой принадлежит эмиттер (возвращается действием Создать систему частиц), а затем - ID фактического эмиттера (возвращается действием Create Particle Emitter), а затем задаете форму эмиттера в пределах заданных значений граничной области. Возможными формами эмиттера являются:

-

Для определения фигур задаются координаты "ограничивающей рамки", в которую будет помещена данная - (в случае прямоугольника, эллипса и ромба) или первую и вторую координаты для начальной и конечной точек (в случае линии). Все частицы, которые вырываются или вытекают из эмиттера, будут созданы в пределах - в границах фигуры в пределах этой ограничительной области. Вы также можете задать распределение частиц с помощью опции:

- -

-

Синтаксис действия:

-

Set Emitter Region Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
SystemУникальный идентификатор системы, к которой принадлежит излучатель
EmitterУникальный идентификатор излучателя для установки формы
ShapeФорма частицы, которая будет использоваться
DistributionРаспределение частиц в пределах заданной формы
LeftПоложение левой стороны ограничительной рамки фигуры (в пикселях)
TopПоложение вершины ограничивающей рамки фигуры (в пикселях)
RightПоложение правой стороны ограничительной рамки фигуры (в пикселях)
BottomПоложение нижней части ограничительной рамки фигуры (в пикселях)
-

-

Пример:

-

Приведенный выше код блока действий создаст излучатель частиц, установит его - регион, а затем настроит его на испускание потока частиц.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Alpha.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Alpha.htm index 833e6de9e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Alpha.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Alpha.htm @@ -1,72 +0,0 @@ - - - - - - Установить альфа частицы - - - - - - - - - - -

Установить альфа частицы

-

Это действие устанавливает альфа-фактор на момент создания частицы, а также альфа-фактор на протяжении ее жизни. Сначала вы указываете значение ID типа частицы (оно должно быть таким же, как значение, возвращенное при создании частицы с помощью действия Create Particle Type ), а затем вы можете установить значения альфа, которые будут использоваться.

-

Вы можете выбрать три значения альфа-спектра, и частица будет смешиваться между ними в течение времени жизни частицы. Например, если частица имеет значения альфа 0.5, 1 и 0 и время жизни 60 игровых кадров, то когда она создается (кадр 0) - она будет иметь альфу 0,5, затем она будет исчезать до полной альфы 1 (кадр 30), а затем станет невидимой с альфой 0 (кадр 60).

-

-

Синтаксис действия:

-

Set Particle Alpha Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
TypeУникальное значение ID для типа частиц, для которых нужно установить цвет
StartНачальная альфа для использования
MiddleВ промежутке между альфа-диапазоном использовать
EndОкончательная альфа-версия для использования
-

-

Пример:

-

Приведенный выше код блока действий создаст новый тип частиц и присвоит его уникальное - ID значение глобальной переменной. Затем он переходит к установке всех свойств для типа частицы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Colour.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Colour.htm index 3186a2349..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Colour.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Colour.htm @@ -1,74 +0,0 @@ - - - - - - Установить цвет частиц - - - - - - - - - - -

Установить цвет частиц

-

Это действие задает цвет или цвета, которые будут использоваться при создании частицы sprite и в течение ее жизни. Сначала вы указываете значение ID типа частицы (оно должно совпадать со значением, полученным при создании частицы с помощью действия Create Particle Type ), а затем вы можете задать цвета, которые будут использоваться.

-

Вы можете выбрать три цвета, и sprite будет смешивать их между собой в течение времени жизни частицы. Например, если частица имеет красный, зеленый и желтый цвета, а время ее жизни составляет 60 игровых кадров, то при создании (кадр 0) она будет - красный цвет, затем он будет выцветать в сторону зеленого на половине своего времени жизни (кадр 30), а затем перейдет в желтый в конце своего времени жизни (кадр 60). Если вы используете пользовательский sprite вместо формы частицы, любой цвет, кроме белого, будет смешиваться - с используемым sprite.

-

ПРИМЕЧАНИЕ: Альфа-компонент цвета не используется, только RGB-компоненты из палитры цветов. Для установки альфа-компонента используйте действие Set Particle Alpha.

-

-

Синтаксис действия:

-

Set Particle Colour Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
TypeУникальное значение ID для типа частиц, для которых нужно установить цвет
StartНачальный цвет для использования
Middleпромежуточный цвет для использования
EndОкончательный цвет для использования
-

-

Пример:

-

Приведенный выше код блока действий создаст новый тип частиц и присвоит его уникальное - ID значение глобальной переменной. Затем он переходит к установке всех свойств для типа частицы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Direction.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Direction.htm index ff188b6bd..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Direction.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Direction.htm @@ -1,80 +0,0 @@ - - - - - - Установить направление частиц - - - - - - - - - - -

Установить направление частиц

-

Это действие используется для установки направления частицы, которое может быть статичным или увеличиваться/уменьшаться с течением времени. Вы предоставляете уникальное значение ID типа для установки размера (полученное при создании типа с помощью действия Create Particle Type) - и затем задаете диапазон начальных направлений, затем величину увеличения и, наконец, "вихляние". Направление, в котором создается частица, рассчитывается так: 0 - вправо, 90 - вверх, 180 - влево и 270 - вниз. - -45 и максимальное значение 45 будет создавать частицы, движущиеся, например, только вправо.

-

Опция увеличения направления частицы позволяет ввести значение, которое будет добавляться к базовому значению направления каждый игровой кадр времени жизни частицы. Таким образом, если установить это значение, например, 0,1, то направление будет прибавляться к 0,1 каждый игровой - кадр. Обратите внимание, что здесь можно использовать и отрицательные значения, чтобы заставить частицу двигаться в противоположном направлении вниз, поэтому положительные значения заставят частицу вращаться против часовой стрелки, а отрицательные - по часовой. Обратите внимание, что минимальный принимаемый декремент направления - -0,01, а минимальный инкремент - 0,01.

-

Наконец, вы можете установить параметр "wiggle". Это значение, которое будет генерироваться случайным образом между 0 и заданным вами значением, а затем добавляться или вычитаться к направлению на каждом шаге жизни частиц, заставляя нарисованное изображение колебаться - в направлении. Очевидно, что большие значения более выражены, чем меньшие, и это значение может быть даже отрицательным с максимальным диапазоном от -20 до 20.

-

-

Синтаксис действия:

-

Set Particle Direction Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
TypeУникальное значение ID для типа частицы, чтобы установить направление
Min DirМинимальное направление для типа частиц (от -360 до +360, по умолчанию 0)
Max DirМаксимальное направление для типа частиц (от -360 до +360, по умолчанию 360)
IncreaseЗначение, добавляемое к направлению типа частиц в каждом игровом кадре (может быть отрицательным, минимум +/-0.01).
WiggleМаксимальное значение, которое будет произвольно добавляться или вычитаться из направления частиц за шаг (+/-20).
-

-

Пример:

-

Приведенный выше код блока действий создаст новый тип частиц и присвоит его уникальное - ID значение глобальной переменной. Затем он переходит к установке всех свойств для типа частицы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Gravity.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Gravity.htm index 6b443737f..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Gravity.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Gravity.htm @@ -1,68 +0,0 @@ - - - - - - Установить гравитацию частиц - - - - - - - - - - -

Установить гравитацию частиц

-

Это действие моделирует действие силы тяжести на все частицы заданного типа. Сначала вы указываете значение ID типа частицы (оно должно совпадать со значением, использованным при создании частицы с помощью действия Create Particle Type ), а затем можете задать силу гравитации и направление. Сила является кумулятивным значением и будет добавляться к вектору скорости каждый игровой кадр, поэтому сила гравитации 1 будет добавлять единицу к значению скорости каждый игровой кадр, в то время как значение направления - это просто направление, в котором гравитация должна "тянуть" частицу. Обратите внимание, что и для силы , и для направления можно использовать отрицательные значения, а направление в GameMaker рассчитывается так: 0° вправо, 90° вверх, - 180° влево и 270° вниз.

-

-

Синтаксис действия:

-

Set Particle Gravity Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
TypeЗначение ID для типа частицы, для которой нужно установить гравитацию
ForceСила тяжести (в пикселях на игровой кадр)
DirectionНаправление гравитационного "притяжения"
-

-

Пример:

-

Приведенный выше код блока действий создаст новый тип частиц и присвоит его уникальное - ID значение глобальной переменной. Затем он переходит к установке всех свойств для типа частицы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Life.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Life.htm index 14541ae8c..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Life.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Life.htm @@ -1,70 +0,0 @@ - - - - - - Установить срок службы частиц - - - - - - - - - - -

Установить срок службы частиц

-

Это действие устанавливает продолжительность жизни данного типа частиц. Сначала вы указываете значение ID типа частицы (это значение возвращается при создании частицы с помощью действия Create Particle Type ), а затем - вы можете задать минимальное и максимальное время жизни частицы в игровых кадрах. Например, если в вашей игре частота кадров в секунду равна 60, то установка обоих значений времени жизни 60 будет означать, что частицы продержатся на экране 1 секунду, прежде чем - исчезновением. Если вы используете два разных значения, то каждая порожденная частица будет иметь случайное время жизни в пределах заданного минимума и максимума. Обратите внимание, что все значения должны быть целыми положительными числами.

-

ВАЖНО! Установка очень длительного времени жизни и последующее испускание сотен частиц может вызвать проблемы на менее мощных машинах и мобильных устройствах. Будьте внимательны при установке времени жизни частиц, чтобы максимизировать визуальный эффект, но минимизировать затраты на производительность. - и используйте очень долгоживущие частицы только в редких случаях.

-

-

Синтаксис действия:

-

Set Particle Life Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
TypeЗначение идентификатора глобального типа для установки продолжительности жизни
Min LifeМинимальное время жизни частицы (в игровых кадрах)
Max LifeМаксимальное время жизни частицы (в игровых кадрах)
-

-

Пример:

-

Приведенный выше код блока действий создаст новый тип частиц и присвоит его уникальное - ID значение глобальной переменной. Затем он переходит к установке всех свойств для типа частицы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Orientation.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Orientation.htm index 8bbf6951e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Orientation.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Orientation.htm @@ -1,88 +0,0 @@ - - - - - - Установить ориентацию частиц - - - - - - - - - - -

Установить ориентацию частиц

-

Это действие используется для установки ориентации частиц - угла, под которым будут рисоваться изображения частиц, - которая может быть статичной или увеличиваться/уменьшаться со временем. Вы предоставляете уникальное значение ID типа для установки размера (полученное при - вы создали тип с помощью действия Create Particle Type), затем задаете диапазон начальных ориентаций, затем величину увеличения и, наконец, "вихляние". Ориентация, в которой создается частица - рассчитывается так: 0 - вправо, 90 - вверх, 180 - влево и 270 - вниз, поэтому при минимальном значении 0 и максимальном значении 360 частицы будут испускать частицы, каждая из которых будет повернута на случайную величину вокруг 360° (обратите внимание, что это не влияет на направление частиц).

-

Опция увеличения ориентации частицы позволяет ввести значение, которое будет добавляться к базовому углу ориентации каждый игровой кадр времени жизни частицы. Таким образом, при установке этого значения, например, 0,1, к углу изображения будет добавляться 0,1 каждый - игровой кадр. Обратите внимание, что здесь можно использовать и отрицательные значения, чтобы заставить частицу вращаться в противоположном направлении, поэтому положительные значения заставят частицу вращаться против часовой стрелки, а отрицательные - по часовой. Обратите внимание, что минимальное значение ориентации - -0.01, а минимальное увеличение - 0.01.

-

Вы также можете установить параметр "wiggle" для ориентации частицы. Это значение будет генерироваться случайным образом в диапазоне от 0 до заданного вами значения и затем добавляться или вычитаться к углу изображения частицы на каждом этапе ее жизни, - в результате чего нарисованное изображение будет колебаться при вращении. Очевидно, что большие значения более заметны, чем меньшие, и это значение может быть даже отрицательным с максимальным диапазоном от -20 до 20.

-

Наконец, вы можете выбрать ориентацию относительно направления частицы или нет. Это означает, что пока частица имеет заданное направление (и скорость), изображение частицы будет ориентировано на основе этого вектора. Имейте в виду, что если - скорость частицы установлена на уменьшение и достигает 0 во время жизни частицы, отсутствие скорости устанавливает направление на значение по умолчанию 0°, и поэтому относительная ориентация заставит изображение частицы "перепрыгнуть" на другой - угол ориентации.

-

-

Синтаксис действия:

-

Set Particle Orientation Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
TypeУникальное значение идентификатора типа частицы для установки ориентации
Min AngleМинимальная ориентация для типа частицы (от -360 до +360, по умолчанию 0)
Max AngleМаксимальная ориентация для типа частицы (от -360 до +360, по умолчанию 360)
IncreaseЗначение, добавляемое к ориентации типа частиц в каждом игровом кадре (может быть отрицательным, минимум +/-0.01).
WiggleМаксимальное значение для случайного добавления или вычитания из ориентации частиц за шаг (+/-20).
Relative To DirectionУстанавливать ли угол изображения частицы относительно направления движения частицы (включено) или нет (отключено).
-

-

Пример:

-

Приведенный выше код блока действий создаст новый тип частиц и присвоит его уникальное - ID значение глобальной переменной. Затем он переходит к установке всех свойств для типа частицы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Shape.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Shape.htm index 14eb35b63..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Shape.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Shape.htm @@ -1,65 +0,0 @@ - - - - - - Установить форму частиц - - - - - - - - - - -

Установить форму частиц

-

Это действие можно использовать для установки встроенной формы sprite, которую частица должна использовать при рисовании. Вы предоставляете уникальное значение ID типа, для которого нужно установить форму (полученное при создании типа с помощью действия Create Particle Type) - и форму, которую нужно использовать. Формы частиц - это просто белые sprites, которые были созданы для GameMaker для использования в качестве частиц и состоят из следующих форм:

-

Set Particle Shape Icon

-

ПРИМЕЧАНИЕ: Если вы используете это действие, вы не должны использовать действие Set Particle Sprite, так как вы можете иметь только sprite или форму, но не оба.

-

-

Синтаксис действия:

-

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
TypeЗначение идентификатора типа для установки формы
ShapeФорма, используемая для типа частиц
-

-

Пример:

-

Приведенный выше код блока действий создаст новый тип частиц и присвоит его уникальное - ID значение глобальной переменной. Затем он переходит к установке всех свойств для типа частицы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Size.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Size.htm index 5a89fb13d..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Size.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Size.htm @@ -1,80 +0,0 @@ - - - - - - Установить размер частиц - - - - - - - - - - -

Установить размер частиц

-

Это действие используется для установки размера частиц, который может быть статичным или установлен на увеличение/уменьшение с течением времени. Вы предоставляете уникальное значение ID типа для установки размера (полученное при создании типа с помощью действия Create Particle Type) - и затем задаете диапазон начальных размеров, затем величину увеличения и, наконец, "вихляние". Размер создаваемой частицы - это скалярное значение, где 1 - это тот же размер, что и базовое изображение частицы, 0,5 - половина размера - 0,5 - половина размера базового изображения, а значение 2 - удвоенный размер. Если минимальный и максимальный размеры не совпадают, то начальный размер любой создаваемой частицы будет иметь случайное значение между ними.

-

Опция увеличения размера частицы позволяет ввести значение, которое будет добавляться к базовому скалярному значению каждый игровой кадр времени жизни частицы. Таким образом, если задать это значение, например, 0,1, то каждый игровой кадр к значению масштаба будет добавляться 0,1. - Обратите внимание, что здесь можно использовать и отрицательные значения, чтобы изображение частицы также уменьшалось. Обратите внимание, что минимальное уменьшение масштаба, которое принимается, составляет -0,01, а минимальное увеличение - 0,01.

-

Наконец, вы можете установить параметр "wiggle". Это значение, которое будет генерироваться случайным образом в диапазоне от 0 до заданного вами значения и затем добавляться или вычитаться к размеру на каждом шаге жизни частиц, заставляя нарисованное изображение колебаться по - размер. Очевидно, что большие значения более заметны, чем меньшие, и это значение может быть даже отрицательным с максимальным диапазоном от -20 до 20.

-

-

Синтаксис действия:

-

Set Particle Size Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
TypeУникальное значение ID для типа частиц, для которых необходимо установить размер
Min SizeМинимальный масштаб для типа частиц (по умолчанию 0,1)
Max SizeМаксимальный масштаб для типа частиц (по умолчанию 1)
IncreaseЗначение, добавляемое к размеру типа частицы каждый игровой кадр (может быть отрицательным, минимум +/-0.01).
WiggleМаксимальное значение, которое можно произвольно прибавить или отнять от размера частиц за шаг (+/-20).
-

-

Пример:

-

Приведенный выше код блока действий создаст новый тип частиц и присвоит его уникальное - ID значение глобальной переменной. Затем он переходит к установке всех свойств для типа частицы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Speed.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Speed.htm index 30bde3b81..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Speed.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Speed.htm @@ -1,75 +0,0 @@ - - - - - - Установить скорость частиц - - - - - - - - - - -

Установленная скорость частиц

-

Это действие используется для установки скорости движения частицы, которая может быть статичной или увеличиваться/уменьшаться с течением времени. Вы предоставляете уникальное значение ID типа, для которого нужно задать размер (оно было получено при создании типа действием Create Particle Type), затем задаете диапазон начальных скоростей, затем величину увеличения и, наконец, "вихляние". Скорость, с которой создается частица, рассчитывается как пиксели на игровой кадр, поэтому при минимальном значении 2 и максимальном значении 5 частицы будут двигаться со скоростью от 2 до 5 пикселей на игровой кадр.

-

Опция увеличения скорости частицы позволяет ввести значение, которое будет добавляться к базовому значению скорости каждый игровой кадр времени жизни частицы. Таким образом, если задать значение, например, 0,1, то каждый игровой кадр будет добавлять 0,1 к скорости. Обратите внимание, что здесь можно использовать и отрицательные значения, чтобы заставить частицу замедлиться, хотя скорость никогда не опустится ниже 0. Обратите внимание, что минимальное уменьшение скорости, которое принимается, равно -0,01, а минимальное увеличение - 0,01.

-

Наконец, вы можете установить параметр "wiggle". Это значение, которое будет генерироваться случайным образом в диапазоне от 0 до заданного вами значения и затем прибавляться или вычитаться к скорости на каждом шаге жизни частиц, заставляя нарисованное изображение колебаться в скорости. Очевидно, что большие значения более заметны, чем меньшие, и это значение может быть даже отрицательным с максимальным диапазоном от -20 до 20.

-

-

Синтаксис действия:

-

Set Particle Speed Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
TypeУникальное значение ID для типа частиц, для которых необходимо установить размер
Min SpeedМинимальная скорость для данного типа частиц (по умолчанию 0,1)
Max SpeedМаксимальная скорость для данного типа частиц (по умолчанию 1)
IncreaseЗначение, добавляемое к скорости типа частиц в каждом игровом кадре (может быть отрицательным, минимум +/-0.01).
WiggleМаксимальное значение, которое произвольно добавляется или вычитается из скорости частиц за шаг (+/-20).
-

-

Пример:

-

Приведенный выше код блока действий создаст новый тип частицы и присвоит его уникальное значение ID глобальной переменной. Затем он переходит к установке всех свойств для типа частицы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Sprite.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Sprite.htm index 055952a5d..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Sprite.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Particle_Sprite.htm @@ -1,64 +0,0 @@ - - - - - - Установить спрайт частиц - - - - - - - - - - -

Установить спрайт частиц

-

Это действие можно использовать для установки sprite, который частица может использовать при рисовании. Вы предоставляете уникальное значение ID типа, для которого нужно установить sprite (полученное при создании типа с помощью действия Create Particle Type) - и ресурс sprite для использования. Если sprite имеет вложенные изображения, то частица будет анимировать кадры со скоростью, установленной в редакторе изображений для sprite. Также обратите внимание, что если вы установите значение цвета для частицы (с помощью действия Set Particle Colour ), то этот цвет будет смешиваться с используемым sprite, подобно тому, как установка смешивания изображения для экземпляра приводит к смешиванию цвета с экземпляром sprite (для отсутствия смешивания используйте белый цвет).

-

ПРИМЕЧАНИЕ: Если вы используете это действие, то вы не должны использовать действие Set Particle Shape, так как вы можете иметь только sprite или форму, но не то и другое.

-

-

Синтаксис действия:

-

Set Particle Sprite Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
TypeЗначение идентификатора типа для установки sprite.
Sprite sprite для присвоения типу частицы
-

-

Пример:

-

Приведенный выше код блока действий создаст новый тип частиц и присвоит его уникальное - ID значение глобальной переменной. Затем он переходит к установке всех свойств для типа частицы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Secondary_Particles.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Secondary_Particles.htm index e6006ff8d..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Secondary_Particles.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Set_Secondary_Particles.htm @@ -1,78 +0,0 @@ - - - - - - Установить вторичные частицы - - - - - - - - - - -

Установить вторичные частицы

-

Это действие позволяет вам использовать второй тип частиц вместе с основной частицей. Вы указываете ID-значение типа первичной частицы (которое должно быть таким же, как и значение, использованное при создании частицы с помощью действия Create Particle Type ), а затем вы можете выбрать, чтобы она испускала вторичный тип частиц каждый игровой кадр, в котором она существует, и/или в конце срока жизни каждой первичной частицы. Вы должны указать другое значение ID частицы для "Secondary", а затем число - которое будет создано в "Count".

-

Если выбрано событие "За шаг", то каждый игровой кадр, когда первичная частица существует на экране, она будет испускать заданное количество вторичных частиц - например, у вас может быть ракета с частицами "пламени", и каждая частица пламени испускает вторичную частицу "дым". - испускает вторичную частицу "дым". Если событие установлено на "При смерти", то вторичные частицы будут испускаться только тогда, когда частица первичного типа достигнет конца своего жизненного цикла - например, вы можете - частица "взрыв" испускает частицу "пыль" в конце своего существования.

-

Важно отметить, что вы не можете использовать тот же ID типа частицы, что и для первичной частицы, и что вы можете очень быстро столкнуться с проблемами производительности при использовании этого действия, так как легко создать тысячи частиц очень быстро. - частиц очень быстро - поэтому постарайтесь ограничить время жизни и количество частиц, создаваемых как первичными, так и вторичными типами частиц. Также обратите внимание, что вы можете назначить вторичную частицу любому типу частиц и таким образом создать - "цепочки частиц", где одна частица создает другую на каждом шаге, а затем эта частица создает другую, когда она достигает конца своего срока жизни, и т.д... Хотя, опять же, при таком построении цепочек частиц следует соблюдать осторожность, чтобы убедиться, что - чтобы производительность не пострадала. Вы также можете вызвать это действие дважды для одного типа частиц и заставить их создавать поток на шаге, а также разрываться при смерти.

-

-

Синтаксис действия:

-

Set Secondary Particles Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
Type IDЗначение ID для типа частицы, которой нужно присвоить вторичную частицу
EventКогда создавать вторичную частицу: "За шаг" или "При смерти".
SecondaryЗначение ID для типа частиц, которые будут испускаться в выбранном вторичном Событии
CountКоличество вторичных частиц, которые будут созданы в выбранном вторичном Событии
-

-

Пример:

-

Приведенный выше код блока действий назначит две вторичные частицы на - частице с идентификатором, хранящимся в переменной "p_fire".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Update_Particle_System.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Update_Particle_System.htm index 1b560bb9c..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Update_Particle_System.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Particles/Update_Particle_System.htm @@ -1,60 +0,0 @@ - - - - - - Обновление системы частиц - - - - - - - - - - -

Обновление системы частиц

-

Это действие заставит данную систему частиц обновить позицию, цвет, альфу и т.д.. Вы предоставляете уникальное значение ID системы для обновления (полученное при создании системы с помощью действия Create Particle System), - и каждый раз, когда вы вызываете это действие, данная система будет обновляться на один игровой кадр, что означает, что вы можете, например, вызвать это действие в цикле Repeat и заставить систему частиц обновляться несколько раз за - в одном игровом кадре (полезно, когда вы хотите, чтобы уровень имел какой-либо эффект, требующий присутствия частиц в самом начале, например, снег или дождь). Вы также можете использовать это действие, когда система частиц была приостановлена с помощью Pause Particle System, чтобы вручную обновить частицы в системе.

-

-

Синтаксис действия:

-

Update Particle System Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
SystemУникальное значение ID для обновляемой системы
-

-

Пример:

-

Приведенный выше код блока действий создаст цикл, который затем обновит - систему частиц 200 раз, прежде чем продолжить.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Get_Path_Follow_Speed.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Get_Path_Follow_Speed.htm index 2537a99b1..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Get_Path_Follow_Speed.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Get_Path_Follow_Speed.htm @@ -1,59 +0,0 @@ - - - - - - Получить скорость следования по траектории - - - - - - - - - - -

Получить скорость следования по траектории

-

Это действие получает скорость, в пикселях на игровой кадр, с которой экземпляр настроен следовать по пути (обратите внимание, что вы должны вызвать действие Start Following Path для назначения пути экземпляру, чтобы это действие - вернуть значение, отличное от 0). Возвращаемое значение будет сохранено в указанной вами переменной target, или вы можете отметить переменную как временную локальную переменную, чтобы создать ее и присвоить значение.

-

-

Синтаксис действия:

-

Get Path Follow Speed Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
TargetЦелевая переменная для хранения возвращенной скорости следования по пути
-

-

Пример:

-

Приведенный выше код блока действий получает текущую скорость экземпляра вдоль назначенного - и если она меньше 4, то увеличивает скорость пути на 0.1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Get_Position_Along_Path.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Get_Position_Along_Path.htm index 4e42f4ae2..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Get_Position_Along_Path.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Get_Position_Along_Path.htm @@ -1,59 +0,0 @@ - - - - - - Получить положение вдоль траектории - - - - - - - - - - -

Получить положение вдоль траектории

-

Это действие позволяет получить положение экземпляра вдоль пути. Возвращаемое значение нормируется от 0 до 1, поэтому если вы получите результат, например, 0,5, то экземпляр находится точно посередине пути. Обратите внимание, что вы должны вызвать действие Start Following Path для назначения пути экземпляру, чтобы это действие вернуло значение, отличное от 0. Возвращенное значение будет сохранено в указанной вами целевой переменной, или вы можете отметить переменную как временную локальную переменную, чтобы создать ее и присвоить значение.

-

-

Синтаксис действия:

-

Get Position Along Path Icon

-

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
TargetЦелевая переменная для хранения возвращенной позиции пути
-

-

Пример:

-

Приведенный выше код блока действий получает текущую позицию на назначенном пути - для экземпляра и, если она меньше 0.5, то устанавливается на 0.5.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Path_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Path_Actions.htm index 2541e5f0b..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Path_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Path_Actions.htm @@ -1,77 +0,0 @@ - - - - - - Действия на пути - - - - - - - - - - -

Библиотека действий "Путь

-

Сайт Path Библиотека содержит действия для работы с ресурсом пути, созданным в - Редактор путей (Path Editor):

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Paths Action LibraryНачните следовать по пути
Start Following Path IconПрекратите следовать по пути
Stop Following Path IconУстановить положение вдоль траектории
Set Position Along Path IconПолучить положение вдоль траектории
Get Position Along Path IconУстановите скорость следования по траектории
Set Path Follow Speed IconПолучить скорость следования по траектории
-

-

-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Set_Path_Follow_Speed.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Set_Path_Follow_Speed.htm index 7cb56dff5..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Set_Path_Follow_Speed.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Set_Path_Follow_Speed.htm @@ -1,60 +0,0 @@ - - - - - - Установите скорость следования по траектории - - - - - - - - - - -

Установите скорость следования по траектории

-

Это действие устанавливает скорость, в пикселях на игровой кадр, с которой экземпляр должен следовать по пути (обратите внимание, что для того, чтобы это действие имело эффект, необходимо вызвать действие Start Following Path, чтобы назначить путь экземпляру. - какой-либо эффект). Можно использовать отрицательные значения, чтобы обозначить, что экземпляр должен следовать по пути в обратном направлении, и стоит отметить, что скорость, заданная здесь, может быть изменена модификатором скорости, установленным в редакторе пути для каждой точки пути, поэтому если вы - задана скорость пути 2, а в пути одна из точек имеет модификатор скорости 200%, то фактическая скорость пикселей на игровой кадр в этой точке будет равна 4.

-

-

Синтаксис действия:

-

Set Path Follow Speed Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
SpeedСкорость (в пикселях на игровой кадр), с которой экземпляр должен следовать по траектории
-

-

Пример:

-

Приведенный выше код блока действий запускает экземпляр, следующий по пути, затем генерирует случайное значение - между 2 и 4, а затем использует это значение для установки скорости, с которой экземпляр движется по пути.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Set_Position_Along_Path.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Set_Position_Along_Path.htm index 3626bbdd5..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Set_Position_Along_Path.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Set_Position_Along_Path.htm @@ -1,58 +0,0 @@ - - - - - - Установить положение вдоль траектории - - - - - - - - - - -

Установить положение вдоль траектории

-

Это действие устанавливает положение экземпляра вдоль пути. Значение нормализуется от 0 до 1, поэтому если вы установите его, например, на 0,5, экземпляр будет перемещен точно в середину пути. Обратите внимание, что для того, чтобы действие имело эффект, необходимо вызвать действие Start Following Path для назначения пути экземпляру.

-

-

Синтаксис действия:

-

Set Position Along Path Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
PositionПозиция (от 0 до 1) вдоль пути для размещения экземпляра
-

-

Пример:

-

Приведенный выше код блока действий запускает экземпляр по пути, а затем генерирует - случайное десятичное значение между 0 и 1. Это значение хранится во временной локальной переменной и используется для установки положения экземпляра на пути.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Start_Following_Path.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Start_Following_Path.htm index 1c75086e7..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Start_Following_Path.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Start_Following_Path.htm @@ -1,85 +0,0 @@ - - - - - - Начните следовать по пути - - - - - - - - - - -

Начните следовать по пути

-

Это действие запускает экземпляр, следующий по пути, который был создан в браузере активов. Вы можете использовать это действие, чтобы указать экземпляру, по какому пути следовать, с какой скоростью (измеряется в пикселях на игровой кадр), как вести себя, когда он достигнет конца пути, и следовать ли абсолютной или относительной позиции пути. - вести себя, когда он достигнет конца пути, и следовать ли абсолютному или относительному положению пути. При установке скорости можно использовать отрицательные значения, чтобы указать, что экземпляр должен следовать по пути в обратном направлении, и стоит отметить, что - заданная здесь скорость может быть изменена модификатором скорости, установленным в редакторе пути для каждой точки пути, поэтому если вы установите скорость пути равной 2, а в пути одна из точек имеет модификатор скорости 200%, то фактическая скорость в этой точке будет равна - 4 пикселя на игровой кадр.

-

После установки начальной скорости пути вы можете задать поведение экземпляра при достижении конца пути, выбрав следующие параметры (обратите внимание, что когда экземпляр достигнет конца пути, это также вызовет событие Other - Path Ended Event):

- -

Наконец, вы можете отметить путь как абсолютный или нет. По умолчанию экземпляр начнет следовать по пути с текущей позиции (относительная позиция), но если вы установите флажок Абсолютный, то он начнет следовать по - путь именно так, как вы его спроектировали и разместили в редакторе путей (абсолютная позиция). Это показано на рисунке ниже:

-

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

-

-

Синтаксис действия:

-

Start Following Path Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
PathАктив пути, по которому нужно начать следовать
SpeedСкорость (в пикселях на игровой кадр) следования по траектории
On EndРеакция на достижение конца пути
AbsoluteНачинать ли с абсолютной или относительной позиции
-

-

Пример:

-

Приведенный выше блок действий заставит вызывающий экземпляр следовать по пути (начиная с его абсолютной - позиции и до конца) при нажатии клавиши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Stop_Following_Path.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Stop_Following_Path.htm index b0405f1bc..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Stop_Following_Path.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Paths/Stop_Following_Path.htm @@ -1,44 +0,0 @@ - - - - - - Прекратите следовать по пути - - - - - - - - - - -

Прекратите следовать по пути

-

Это действие завершит движение по текущему пути, по которому движется экземпляр.

-

-

Синтаксис действия:

-

Stop Following Path Icon

-

Пример:

-

Приведенный выше код блока действий проверяет значение сигнала тревоги и, если оно меньше 0, проверяется Switch. - проверяется. В зависимости от строки, хранящейся в переменной экземпляра, которая передается переключателю, экземпляр либо остановит текущий путь, на котором он находится, либо начнет новый путь, прежде чем снова установить сигнал тревоги.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Random/Choose.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Random/Choose.htm index db47c353d..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Random/Choose.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Random/Choose.htm @@ -1,60 +0,0 @@ - - - - - - Выберите - - - - - - - - - - -

Выберите

-

С помощью этого действия вы можете задать несколько различных вариантов (это может быть реальное число, строка, идентификатор ресурса или константа), из которых действие выберет один для возврата. Вы можете добавить дополнительные параметры, нажав на значок плюса рядом с - и указать другое значение, которое может быть возвращено. Возвращенное значение будет сохранено в целевой переменной, которая может быть создана ранее или может быть новой временной локальной переменной (если вы установите флажок "Temp").

-

-

Синтаксис действия:

-

Choose Icon

-

Аргументы:

-

- - - - - - - - - - - -
АргументОписание
OptionОпция, которая может быть возвращена действием select.
-

-

Пример:

-

Приведенный выше код блока действий выбирает один из четырех ресурсов комнаты и сохраняет возвращенный идентификатор во временной - локальной переменной. Затем он используется для изменения комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Random/Get_Random_Number.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Random/Get_Random_Number.htm index 32b56013e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Random/Get_Random_Number.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Random/Get_Random_Number.htm @@ -1,73 +0,0 @@ - - - - - - Получить случайное число - - - - - - - - - - -

Получить случайное число

-

Это действие генерирует случайное число в пределах набора минимальных и максимальных значений. Вы можете выбрать тип генерируемого числа (десятичное или целое), а затем задать диапазон, в котором будет сгенерировано число, указав - минимальное и максимальное значение. Сгенерированное случайное значение будет возвращено в целевую переменную (которая может быть помечена как временная локальная переменная).

-

ПРИМЕЧАНИЕ: При генерации случайного целого числа действие вернет целое значение между минимальным и максимальным значением включительно, поэтому диапазон 5 - 10 может вернуть 5 или 10, а также любое целое число между ними. Однако при генерации случайной десятичной дроби - никогда не вернет максимальное значение, поэтому диапазон от 5 до 10 может вернуть 5, но не вернет 10 (хотя может вернуть 9.999999999999).

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
TypeТип используемых чисел (целое или десятичное)
MinimumМинимальное число для случайного диапазона
MaximumМаксимальное число для случайного диапазона
TargetЦелевая переменная для хранения возвращаемого значения
-

-

Пример:

-

Приведенный выше код блока действий генерирует случайное значение и присваивает его временной - локальной переменной. Затем это значение используется в цикле повтора, в котором выполняются дальнейшие случайные вызовы для создания позиций в комнате. Эти позиции затем используются для создания экземпляров номера.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Random/Random_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Random/Random_Actions.htm index 9388b304a..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Random/Random_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Random/Random_Actions.htm @@ -1,63 +0,0 @@ - - - - - - Случайные действия - - - - - - - - - - -

Библиотека случайных действий

-

Random Action Library

-

Сайт Random имеет следующие действия для работы с генерацией случайных чисел и случайными операциями:

- - - - - - - - - - - - - - - -
Get Random Number IconПолучить случайное число
Randomise IconСлучайно
Choose IconВыберите
-

-

-

-

-

-

-

Стоит отметить, что GameMaker будет использовать одно и то же семя при генерации случайных чисел каждый раз, когда вы запускаете игру с сайта IDE. Это сделано для облегчения отладки и означает, что вы получите одинаковые начальные результаты при генерации случайных значений, но этого не произойдет, когда вы скомпилируете игру в исполняемый файл (при каждом запуске игры будет генерироваться новое семя). Если вы не хотите такого поведения при тестировании, то вам следует вызвать действие Randomise один раз в начале игры, перед генерацией случайных значений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Random/Randomise.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Random/Randomise.htm index 8f256d1f3..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Random/Randomise.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Random/Randomise.htm @@ -1,47 +0,0 @@ - - - - - - Случайно - - - - - - - - - - -

Случайно

-

Это действие устанавливает "затравку" для генератора случайных чисел в случайное значение. При использовании функций случайных чисел в GameMaker начальное зерно всегда одно и то же, так как это значительно облегчает отслеживание ошибок и отладку (в скомпилированных - игры не имеют такого поведения). Если вы хотите проверить истинную случайность, вам следует вызвать это действие один раз в начале игры.

-

-

Синтаксис действия:

-

Randomise Action

-

-

Пример:

-

Приведенный выше код блока действий устанавливает случайное зерно на новое значение, затем генерирует число от 0 - до 9 и присваивает его переменной глобальной области видимости.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Create_Game.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Create_Game.htm index 9523cfcd3..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Create_Game.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Create_Game.htm @@ -1,66 +0,0 @@ - - - - - - Создать игру с откатом - - - - - - - - - - - -

Создать игру с откатом

-

Это действие запускает новую многопользовательскую игру. Оно принимает количество игроков, которые должны быть подключены для начала игры, и по желанию позволяет отключить проверку синхронизации.

-

При вызове с отключенным Sync Test система ждет, пока заданное количество игроков присоединится к игре, прежде чем начать игру. Убедитесь, что не создаете и не изменяете управляемые экземпляры до начала игры.

-

СОВЕТ Вы можете по желанию заставить игру начаться до того, как все игроки присоединятся к ней, выполнив команду Начать игру.

-

В настоящее время в одной игре могут участвовать не более 4 игроков.

-

ПРЕДУПРЕЖДЕНИЕ Не рекомендуется устанавливать регион по умолчанию в этом действии, если только вы не позволяете игроку выбрать его через меню.

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
Count of playersКоличество игроков, которые должны быть подключены для начала игры. Если используется Define Player, это количество экземпляров, которые создаются автоматически.
Sync testОпределяет, должен ли быть включен Sync Test; по умолчанию он включен. При отключении функции онлайн функциональность включена.
RegionУказывает регион, в котором будет создана виртуальная комната. Для получения информации о получении регионов см. rollback_create_game().
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Define_Input.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Define_Input.htm index 143ecbfd8..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Define_Input.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Define_Input.htm @@ -1,64 +0,0 @@ - - - - - - Определить вход (откат) - - - - - - - - - - - -

Определить вход (откат)

-

Эта функция используется для определения пользовательских входов для всех игроков. Она принимает пару Input/Value, где Input - это имя входа, а Value - константа входа, назначенная ему.

-

Чтобы узнать, как назначить пользовательские входы, см. раздел Пользовательские элементы управления.

-

Если используется, эта функция должна выполняться до действия присоединения/создания.

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
InputИмя входа для определения
ValueВходная константа для назначения (см. раздел " Пользовательские элементы управления")
-

-

Пример:

-

Приведенное выше действие определяет входы " огонь", " влево", " вправо", " вверх" и " вниз " для всех игроков.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Define_Input_Frame_Delay.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Define_Input_Frame_Delay.htm index 8eed7bd2e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Define_Input_Frame_Delay.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Define_Input_Frame_Delay.htm @@ -1,58 +0,0 @@ - - - - - - Определить задержку входного кадра (откат) - - - - - - - - - - - -

Определить задержку входного кадра (откат)

-

Это действие определяет фиксированную задержку кадров для локальных входов плеера.

-

По умолчанию ваша игра будет использовать адаптивную задержку ввода, которая основана на задержке между игроками. Это подходит практически для всех игр, однако некоторые специфические типы игр (например, файтинги) могут предпочесть использовать фиксированную задержку ввода вместо адаптивной, которая может меняться в любое время.

-

Не рекомендуется изменять этот параметр, если вы не знаете, что именно вы делаете.

-

Указанное значение задержки должно быть в количестве кадров. Если указать -1, игра вернется к использованию адаптивной задержки. Максимальная задержка, которую можно задать, составляет 10 кадров.

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
DelayЗначение задержки для использования
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Define_Mock_Input.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Define_Mock_Input.htm index 4c15d6fde..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Define_Mock_Input.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Define_Mock_Input.htm @@ -1,66 +0,0 @@ - - - - - - Определите имитационный вход (откат) - - - - - - - - - - - -

Определите имитационный вход (откат)

-

Это действие можно использовать во время Sync Test для назначения временного "имитационного" ввода для указанного игрока. Это отменяет элементы управления, определенные для игрока, и любой случайный ввод из Sync Test.

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
Player IDНомер игрока, который получает этот набор входных данных для подражания
InputИмя входа для определения
ValueВходная константа для назначения (см. раздел " Пользовательские элементы управления")
-

-

Пример:

-

Приведенное выше действие определяет шуточные входы fire, left, right, up и down для игрока 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Define_Player.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Define_Player.htm index 93fde23ff..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Define_Player.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Define_Player.htm @@ -1,63 +0,0 @@ - - - - - - Определить игрока (откат) - - - - - - - - - - - -

Определить игрока (откат)

-

Это действие указывает системе Rollback объект, который должен использоваться для игроков. Это необязательное действие, и при его использовании система будет автоматически создавать экземпляры для игроков, которые подключаются, и уничтожать экземпляры для игроков, которые отсоединяются.

-

Вы можете указать слой, на котором будут созданы экземпляры игроков. Если слой не указан, игроки будут созданы на слое "Instances", который должен существовать в комнате.

-

Информацию о создании игры с этой функцией или без нее см. в разделе Определение объекта игрока.

-

Если используется, эта функция должна выполняться до действия присоединения/запуска.

-

Каждый экземпляр, созданный с помощью этой функции, получает переменные экземпляра, перечисленные на этой странице.

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
ObjectОбъект, используемый для экземпляров игроков
LayerOPTIONAL Имя слоя, в котором будут созданы экземпляры игроков. "Instances" по умолчанию (если значение не указано).
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Display_Events.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Display_Events.htm index 2b98c410b..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Display_Events.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Display_Events.htm @@ -1,56 +0,0 @@ - - - - - - Отображение событий (откат) - - - - - - - - - - - -

Отображение событий отката

-

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

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
EnableВключение или отключение отображения событий
-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Get_Info.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Get_Info.htm index 7531cd512..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Get_Info.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Get_Info.htm @@ -1,59 +0,0 @@ - - - - - - Получить информацию об откате - - - - - - - - - - - -

Получить информацию об откате

-

Эта функция возвращает структуру, содержащую информацию об игроке. Ее следует использовать только при ручном управлении экземплярами игроков. Если вы используете Define Player, то каждый экземпляр игрока будет автоматически получать эту информацию в виде переменных.

-

Информацию о содержимом возвращаемой структуры см. в разделе: rollback_get_info

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
Player IDИдентификатор игрока, для которого необходимо получить информацию
TargetПеременная, в которой должна храниться возвращаемая структура
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Get_Input.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Get_Input.htm index 111923a2c..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Get_Input.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Get_Input.htm @@ -1,63 +0,0 @@ - - - - - - Получить вход (откат) - - - - - - - - - - - -

Получить вход (откат)

-

Это действие возвращает структуру, содержащую входные значения для игрока. Оно принимает необязательный аргумент, указывающий ID игрока, для которого будут возвращены входные данные.

-

Рекомендуется использовать If Key Down (Rollback), If Key Pressed (Rollback) и If Key Up (Rollback) для проверки вводов в многопользовательской игре.

-

При использовании в экземпляре игрока, который был создан с помощью Define Player (Rollback), вам не нужно указывать ID игрока, поэтому вы можете просто указать player_id.

-

При использовании в любых других экземплярах или экземплярах игроков, созданных вручную, необходимо указать ID игрока.

-

Информацию о том, какие входы возвращаются и как их можно изменить, см. в разделе Определение входов.

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
Player IDИдентификатор игрока для получения входных данных
TargetПеременная, в которой должна храниться возвращаемая структура
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Get_Player_Prefs.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Get_Player_Prefs.htm index f303fbaca..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Get_Player_Prefs.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Get_Player_Prefs.htm @@ -1,54 +0,0 @@ - - - - - - Получить настройки игрока (откат) - - - - - - - - - - - -

Получить настройки игрока (откат)

-

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

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
EnabledВключение или отключение случайного ввода для удаленных игроков во время тестирования
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/If_Key_Down_(Rollback).htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/If_Key_Down_(Rollback).htm index f02c0ecd3..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/If_Key_Down_(Rollback).htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/If_Key_Down_(Rollback).htm @@ -1,63 +0,0 @@ - - - - - - Если клавиша нажата (откат) - - - - - - - - - - - -

Если клавиша нажата (откат)

-

Это действие проверяет, удерживается ли заданный вход для текущего игрока.

-

Он позволяет прикреплять справа действия, которые выполняются только при наличии заданного входа.

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
InputИмя входа для проверки
NotВключите эту функцию, чтобы проверить, не удерживается ли вход
-

-

Пример:

-

Вышеуказанные действия перемещают игрока влево или вправо в зависимости от ввода.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/If_Key_Pressed_(Rollback).htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/If_Key_Pressed_(Rollback).htm index 870d21eca..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/If_Key_Pressed_(Rollback).htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/If_Key_Pressed_(Rollback).htm @@ -1,61 +0,0 @@ - - - - - - При нажатии клавиши (откат) - - - - - - - - - - - -

При нажатии клавиши (откат)

-

Это действие проверяет, был ли заданный ввод только что нажат для текущего игрока.

-

Он позволяет прикреплять справа действия, которые выполняются только при наличии заданных входных данных.

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
InputИмя входа для проверки
NotВключите эту функцию, чтобы проверить, не был ли нажат входной сигнал
-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/If_Key_Up_(Rollback).htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/If_Key_Up_(Rollback).htm index bd60a538e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/If_Key_Up_(Rollback).htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/If_Key_Up_(Rollback).htm @@ -1,61 +0,0 @@ - - - - - - Если клавиша вверх (откат) - - - - - - - - - - - -

Если клавиша вверх (откат)

-

Это действие проверяет, был ли данный вход только что освобожден для текущего игрока.

-

Он позволяет прикреплять справа действия, которые выполняются только при наличии заданного входа.

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
InputИмя входа для проверки
NotВключите эту опцию, чтобы проверить, не был ли вход освобожден
-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/If_Rollback_Event_Fired.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/If_Rollback_Event_Fired.htm index 2a2552c73..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/If_Rollback_Event_Fired.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/If_Rollback_Event_Fired.htm @@ -1,60 +0,0 @@ - - - - - - Если произошло событие отката - - - - - - - - - - - -

Если произошло событие отката

-

Это действие используется в событии Rollback Event, чтобы проверить, какой тип события был запущен.

-

Он позволяет прикреплять действия справа, которые запускаются только при наступлении заданного события.

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
EventСобытие отката для проверки
NotВключите эту функцию, чтобы проверить, не было ли запущено данное событие (это означает, что условие будет истинным для всех остальных событий).
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Join_Game.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Join_Game.htm index 264db3019..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Join_Game.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Join_Game.htm @@ -1,56 +0,0 @@ - - - - - - Присоединяйтесь к игре на откат - - - - - - - - - - - -

Присоединяйтесь к игре на откат

-

Это действие пытается присоединиться к игре. Вы должны находиться на URL-адресе, содержащем ID виртуальной комнаты, к которой вы хотите присоединиться.

-

Если комната была присоединена, будут выполнены все действия, связанные с этим действием.

-

Когда новый игрок присоединяется к игре, в которой вы уже присутствуете, срабатывает событие Rollback Event. Дополнительную информацию см. в разделе События отката.

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
NotВключение этого параметра заставит все прикрепленные действия выполняться, если комната не была присоединена. Это можно использовать для создания новой комнаты, если таковая не была найдена.
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Leave_Game.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Leave_Game.htm index ed2e892fd..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Leave_Game.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Leave_Game.htm @@ -1,43 +0,0 @@ - - - - - - Игра на откат - - - - - - - - - - - -

Игра на откат

-

Это действие позволяет покинуть текущую игру.

-

Дополнительную информацию см. в разделе Покинуть комнату.

-

Когда игрок покидает игру, в которой вы присутствуете, срабатывает событие Rollback Event. Дополнительную информацию см. в разделе События отката.

-

-

Синтаксис действия:

-

Get Random Number Icon

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Rollback_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Rollback_Actions.htm index 8ae45ba3d..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Rollback_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Rollback_Actions.htm @@ -1,66 +0,0 @@ - - - - - - Откат многопользовательских действий - - - - - - - - - - - -

Откат многопользовательских действий

-

Действия отката используются для создания многопользовательских игр с помощью системы отката GameMaker.

-

Для ознакомления см: Rollback Multiplayer
-
- Список переменных, используемых в системе Rollback, см: Переменные Rollback -

-

Для многопользовательской игры Rollback предусмотрены следующие действия:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Send_Message.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Send_Message.htm index 818de5da6..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Send_Message.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Send_Message.htm @@ -1,70 +0,0 @@ - - - - - - Отправить сообщение (откат) - - - - - - - - - - - -

Отправить сообщение (откат)

-

Это действие используется для отправки строкового сообщения другим игрокам.

-

Вы указываете строку для отправки, максимальный размер которой составляет 128 байт.

-

Если второй аргумент не указан, сообщение отправляется всем игрокам, включая отправителя.

-

Во втором аргументе можно указать ID игрока, который получит сообщение.

-

Как использовать?

-

Это действие предназначено для использования "локально", и поэтому будет результатом локального ввода, а не отката.

-

См. пример использования внизу. Прослушивайте полученные сообщения в событии Rollback Event.

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
MessageСообщение для отправки в виде строки.
ToOPTIONAL ID игрока, которому будет отправлено сообщение. Если не указывать этот аргумент или указать -1, сообщение будет отправлено всем игрокам.
-

-

Пример:

-

Если клавиша ввода нажата локально, то keyboard_string значение отправляется всем игрокам. Затем эта строка очищается, чтобы можно было набрать новое сообщение.

-

Это вызовет событие Rollback Event, когда сообщение будет получено всеми клиентами (включая отправителя).

-
Get Random Number Action -
Пример события отката для печати полученного сообщения в выходной журнал
-
-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Set_Player_Prefs.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Set_Player_Prefs.htm index 89592abb0..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Set_Player_Prefs.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Set_Player_Prefs.htm @@ -1,54 +0,0 @@ - - - - - - Установить настройки игрока (откат) - - - - - - - - - - - -

Установить настройки игрока (откат)

-

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

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
EnabledВключение или отключение случайного ввода для удаленных игроков во время тестирования
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Start_Game.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Start_Game.htm index c81b59a1b..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Start_Game.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Start_Game.htm @@ -1,44 +0,0 @@ - - - - - - Начать игру на откат - - - - - - - - - - - -

Начать игру на откат

-

Это действие заставляет текущую многопользовательскую игру начаться, пока все игроки не присоединились к ней. Сначала необходимо создать многопользовательскую игру с помощью Create Rollback Game.

-

Обычно система ждет, пока все игроки присоединятся, прежде чем автоматически начать игру. Это действие можно использовать, чтобы начать игру раньше, пока все игроки не присоединились.

-

Вы можете вызвать команду Use Manual Start, чтобы заставить Rollback ждать этого вызова даже после того, как все игроки присоединились.

-

Выполнение этого действия вызовет событие Rollback Start.

-

-

Синтаксис действия:

-

Get Random Number Icon

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Sync_On_Frame.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Sync_On_Frame.htm index c95979f92..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Sync_On_Frame.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Sync_On_Frame.htm @@ -1,63 +0,0 @@ - - - - - - Синхронизация по кадру (откат) - - - - - - - - - - - -

Синхронизация по кадру (откат)

-

Это действие проверяет, синхронизированы ли все игроки на текущем кадре, то есть их состояния основаны не на предсказаниях, а на фактических данных, полученных от них. В этом случае возвращается true.

-

Если игроки не синхронизированы на текущем кадре, возвращается false, и предпринимается попытка синхронизировать всех игроков.

-

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

-

Вместо этого используйте его в качестве переключателя. См. пример внизу страницы.

-

Переменная rollback_confirmed_frame обновляется автоматически при синхронизации всех игроков.

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
TargetПеременная, в которой хранится возвращаемое значение(true или false)
-

-

Пример

-

-

Get Random Number Action

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Use_Manual_Start.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Use_Manual_Start.htm index 46ef4d24e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Use_Manual_Start.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Use_Manual_Start.htm @@ -1,45 +0,0 @@ - - - - - - Использовать ручной запуск (откат) - - - - - - - - - - - -

Использовать ручной запуск (откат)

-

По умолчанию многопользовательская игра автоматически начинается, когда все игроки присоединяются к ней.

-

Вызов этого действия отключает автозапуск, поэтому игра будет ждать, пока вы запустите ее вручную.

-

Если используется, это действие должно выполняться до действия присоединения/создания.

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Пример:

-

Приведенный выше блок включает ручной запуск, а затем присоединяется или создает новую многопользовательскую игру.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Use_Player_Prefs.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Use_Player_Prefs.htm index 590038160..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Use_Player_Prefs.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Use_Player_Prefs.htm @@ -1,54 +0,0 @@ - - - - - - Использовать настройки игрока (откат) - - - - - - - - - - - -

Использовать настройки игрока (откат)

-

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

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
EnabledВключение или отключение случайного ввода для удаленных игроков во время тестирования
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Use_Random_Input.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Use_Random_Input.htm index b99a242ce..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Use_Random_Input.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rollback/Use_Random_Input.htm @@ -1,54 +0,0 @@ - - - - - - Использовать случайный ввод (откат) - - - - - - - - - - - -

Использовать случайный ввод (откат)

-

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

-

-

Синтаксис действия:

-

Get Random Number Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
EnabledВключение или отключение случайного ввода для удаленных игроков во время тестирования
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Get_Current_Room.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Get_Current_Room.htm index 6d3307cfd..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Get_Current_Room.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Get_Current_Room.htm @@ -1,57 +0,0 @@ - - - - - - Получить текущий номер - - - - - - - - - - -

Получить текущий номер

-

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

-

-

Синтаксис действия:

-

Get Current Room Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
TargetЦелевая переменная для хранения возвращаемого индекса комнаты
-

-

Пример:

-

Приведенный выше код блока действий получает текущее значение индекса комнаты, а затем использует действие Switch для проверки комнаты и установки глобальной переменной в зависимости от результата.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Go_To_Next_Room.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Go_To_Next_Room.htm index 97d78977f..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Go_To_Next_Room.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Go_To_Next_Room.htm @@ -1,45 +0,0 @@ - - - - - - Перейти в следующую комнату - - - - - - - - - - -

Перейти в следующую комнату

-

Это действие заставит вашу игру перейти в следующую комнату, указанную в Менеджере комнат на момент компиляции игры. Если такой комнаты не существует, будет выдана ошибка, и игра будет вынуждена - закрыться. Обратите внимание, что комната не изменится до окончания события или сценария, в котором было вызвано действие, поэтому любой код после этого действия будет выполняться.

-

-

Синтаксис действия:

-

Go To Next Room Icon

-

Пример:

-

Приведенный выше код блока действий проверяет наличие столкновения с другим объектом, и если оно обнаружено - переменная в экземпляре проверяется, и игра переходит либо в следующую комнату, либо в предыдущую, как указано в порядке Room Manager.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Go_To_Previous_Room.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Go_To_Previous_Room.htm index 0d4e3582d..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Go_To_Previous_Room.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Go_To_Previous_Room.htm @@ -1,45 +0,0 @@ - - - - - - Перейти в предыдущую комнату - - - - - - - - - - -

Перейти в предыдущую комнату

-

Это действие заставит вашу игру перейти в предыдущую комнату, указанную в Менеджере комнат на момент компиляции игры. Если такой комнаты не существует, будет выдана ошибка, и игра будет вынуждена - закрыться. Обратите внимание, что комната не изменится до окончания события или сценария, в котором было вызвано действие, поэтому любой код после этого действия будет выполняться.

-

-

Синтаксис действия:

-

Go To Previous Room Icon

-

Пример:

-

Приведенный выше код блока действий проверяет наличие столкновения с другим объектом, и если оно обнаружено - переменная в экземпляре проверяется, и игра переходит либо в следующую комнату, либо в предыдущую, как указано в порядке Room Manager.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Go_To_Room.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Go_To_Room.htm index c9cb8347d..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Go_To_Room.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Go_To_Room.htm @@ -1,59 +0,0 @@ - - - - - - Перейти в комнату - - - - - - - - - - -

Перейти в комнату

-

Это действие завершит текущую комнату и перейдет в комнату, указанную входным индексом. Комната должна существовать, иначе будет выдана ошибка, а если вы используете ту же комнату, что и текущая, это будет иметь тот же эффект, что и использование Restart Room. - Обратите внимание, что комната не изменится до окончания события или сценария, в котором было вызвано действие, так что любые действия после этого будут выполняться.

-

-

Синтаксис действия:

-

Go To Room Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
RoomКомната, в которую можно пойти
-

-

Пример:

-

Приведенный выше код блока действий извлекает глобальную переменную, а затем проверяет, меньше или равно ли ее значение - меньше или равно 0. Если да, то игра переходит в другую комнату.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/If_Room_Is_First.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/If_Room_Is_First.htm index e1dcddc1a..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/If_Room_Is_First.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/If_Room_Is_First.htm @@ -1,47 +0,0 @@ - - - - - - Если комната первая - - - - - - - - - - -

Если комната первая

-

Это действие проверяет, является ли текущая комната первой комнатой, указанной в Менеджере комнат. Действие возвращает true, если текущая комната является первой в Менеджере комнат, и false, если это не так. Вы можете установить флажок " Не ", чтобы превратить это действие в "Если комната НЕ первая".

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" имеет значение true, в то время как любые действия - отложенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Room Is First Icon

-

Пример:

-

Приведенный выше код блока действий проверяет, является ли текущая комната первой комнатой в списке - в Room Manager и, если это так, устанавливает ряд глобальных переменных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/If_Room_Is_Last.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/If_Room_Is_Last.htm index 6ca6909c5..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/If_Room_Is_Last.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/If_Room_Is_Last.htm @@ -1,47 +0,0 @@ - - - - - - Если номер последний - - - - - - - - - - -

Если номер последний

-

Это действие проверяет, является ли текущая комната последней комнатой, указанной в Менеджере комнат. Действие вернет true, если текущая комната является последней в Менеджере комнат, и false, если это не так. Вы можете установить флажок " Не ", чтобы превратить это действие в "Если комната НЕ последняя".

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если "if" имеет значение true, в то время как любые действия - отложенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Room Is Last Icon

-

Пример:

-

Приведенный выше код блока действий проверяет, не является ли текущая комната последней в списке - перечисленных в Менеджере комнат. Если это не так, то игра перейдет к следующей комнате в браузере активов, в противном случае она перейдет к определенной комнате.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Restart_Room.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Restart_Room.htm index 2b84a3557..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Restart_Room.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Restart_Room.htm @@ -1,43 +0,0 @@ - - - - - - Комната отдыха - - - - - - - - - - -

Комната отдыха

-

Это действие перезапустит текущую комнату. Обратите внимание, что комната не перезапустится до окончания события или сценария, в котором было вызвано это действие, поэтому любой код после этого действия все равно будет выполняться.

-

-

Синтаксис действия:

-

Restart Room Icon

-

Пример:

-

Приведенный выше код блока действий проверяет наличие нажатия клавиши, и если оно обнаружено, комната перезапускается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Room_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Room_Actions.htm index d440c6e2f..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Room_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Rooms/Room_Actions.htm @@ -1,85 +0,0 @@ - - - - - - Действия в номере - - - - - - - - - - -

Библиотека комнатного действия

-

Сайт Room позволяет вам изменять и проверять игровые комнаты, основываясь на порядке, определенном в Менеджере комнат. Обратите внимание, что все действия, изменяющие комнату, также привод ят к срабатыванию функции - Другое - События комнаты - .

-

Доступны следующие действия:

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Room Action LibraryПерейти в комнату
Go To Room IconПерейти в следующую комнату
Go To Next Room IconПерейти в предыдущую комнату
Go To Previous Room IconКомната отдыха
Restart Room IconЕсли комната первая
If Room Is First IconЕсли номер последний
If Room Is Last IconПолучить текущий номер
-

-

-

-

-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Create_Sequence_Element.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Create_Sequence_Element.htm index 970e1ffce..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Create_Sequence_Element.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Create_Sequence_Element.htm @@ -1,73 +0,0 @@ - - - - - - Создать последовательность - - - - - - - - - - -

Создать последовательность

-

С помощью этого действия можно создать элемент последовательности любой последовательности из браузера активов. Вы задаете имя последовательности и позицию x/y в помещении, где она должна быть создана, а также слой, на котором она должна быть создана (этот слой должен быть слоем актива). Вы можете отметить флаги "relative", чтобы расположить последовательность относительно экземпляра, выполняющего блоки кода действий. Когда вы создаете последовательность в игре таким образом, ей присваивается уникальное значение ID элемента, с помощью которого вы можете идентифицировать последовательность в дальнейших действиях, поэтому данное действие позволяет вам определить переменную "target" для хранения этого значения ID (как показано в примере ниже). Обратите внимание, что цель может быть помечена как временная (локальная) переменная, которая будет создана для данного действия и может быть использована во всех последующих действиях для события, в котором находится действие.

-

-

Синтаксис действия:

-

Create Sequence Element Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
SequenceИмя последовательности для создания элемента.
xПоложение x в комнате для создания последовательности (может быть относительно вызывающего экземпляра).
yПоложение y в комнате для создания последовательности (может быть относительно вызывающего экземпляра).
layerИмя (строка) слоя актива для создания последовательности.
TargetПеременная, на которую будет нацелено возвращаемое значение.
-

-

Пример:

-

Приведенный выше код блока действий создает новую последовательность и сохраняет ее уникальное значение ID элемента в переменной. Затем эта переменная используется для приостановки последовательности с помощью действия Pause Sequence.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Destroy_Sequence_Element.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Destroy_Sequence_Element.htm index 8764a3b20..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Destroy_Sequence_Element.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Destroy_Sequence_Element.htm @@ -1,57 +0,0 @@ - - - - - - Последовательность уничтожения - - - - - - - - - - -

Последовательность уничтожения

-

Вы можете вызывать это действие всякий раз, когда хотите "уничтожить" ранее созданный элемент последовательности. Вы передаете ID элемента, возвращенный действием Create Sequence Element, и это действие уничтожит его, удалив из комнаты.

-

-

Синтаксис действия:

-

Destroy Sequence Element Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
VariableИдентификатор элемента последовательности для уничтожения.
-

-

Пример:

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Get_Sequence_Head.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Get_Sequence_Head.htm index 8ece373c0..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Get_Sequence_Head.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Get_Sequence_Head.htm @@ -1,62 +0,0 @@ - - - - - Получить головку последовательности - - - - - - - - - - -

Получить головку последовательности

-

С помощью этого действия вы можете получить текущее положение головки воспроизведения заданного элемента последовательности в комнате. Вы указываете ID элемента последовательности (возвращенный действием Create Sequence), - и это действие вернет текущий кадр, на котором находится головка воспроизведения последовательности, в переменную target. Информацию о головке воспроизведения см. в разделе Использование листа допинга.

-

Обратите внимание, что целевая переменная может быть помечена как временная (локальная), которая будет создана для данного действия и может использоваться во всех последующих действиях для события, в котором происходит действие.

-

-

Синтаксис действия:

-

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
VariableИдентификатор элемента последовательности для получения позиции головки.
TargetЦелевая переменная для фиксации положения головы.
-

-

Пример:

-

Приведенный выше блок действий извлекает текущую позицию головки идентификатора элемента последовательности, хранящегося в - переменной "seq_id". Затем это значение используется для установки позиции головки того же элемента последовательности, сдвигая его на 4 кадра.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Get_Sequence_Length.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Get_Sequence_Length.htm index 20020039c..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Get_Sequence_Length.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Get_Sequence_Length.htm @@ -1,63 +0,0 @@ - - - - - - Получить длину последовательности - - - - - - - - - - -

Получить длину последовательности

-

С помощью этого действия вы можете получить длину (в кадрах) заданного элемента последовательности в комнате. Вы предоставляете идентификатор элемента последовательности (возвращенный действием Создать последовательность), и это действие вернет - его длину в целевой переменной. Это будет количество кадров, в течение которых выполняется последовательность.

-

Обратите внимание, что целевая переменная может быть помечена как временная (локальная), которая будет создана для действия и может использоваться во всех последующих действиях для события, в котором происходит действие.

-

-

Синтаксис действия:

-

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
VariableID элемента последовательности для получения длины.
TargetЦелевая переменная для хранения длины.
-

-

Пример:

-

-

Приведенный выше блок действий извлекает длину идентификатора элемента последовательности, хранящегося в переменной "seq_id". Это значение затем используется для установки позиции головки того же элемента последовательности на 10 кадров до его конца.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Get_Sequence_Position.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Get_Sequence_Position.htm index 5bcc338b7..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Get_Sequence_Position.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Get_Sequence_Position.htm @@ -1,67 +0,0 @@ - - - - - - Получить позицию последовательности - - - - - - - - - - -

Получить позицию последовательности

-

С помощью этого действия вы можете получить текущую позицию для данного элемента последовательности в комнате. Вы предоставляете ID элемента последовательности (возвращенный действием Создать последовательность), и это действие возвращает - его положение по X и Y в целевых переменных. Обратите внимание, что целевые переменные могут быть помечены как временные (локальные) переменные, которые будут созданы для данного действия и могут быть использованы во всех последующих действиях для события, в котором выполняется действие.

-

-

Синтаксис действия:

-

Get Sequence Position Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
VariableИдентификатор элемента последовательности для получения позиции.
Target XЦелевая переменная для хранения позиции x.
Target YЦелевая переменная для хранения позиции y.
-

-

Пример:

-

Приведенный выше код блока действий извлекает текущую позицию элемента последовательности - ID, хранящийся в переменной "my_seq". Затем эти значения используются для установки позиции последовательности, перемещая ее на 10 пикселей вправо.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/If_Sequence_Exists.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/If_Sequence_Exists.htm index d3d8c8481..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/If_Sequence_Exists.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/If_Sequence_Exists.htm @@ -1,63 +0,0 @@ - - - - - - Если последовательность существует - - - - - - - - - - -

Если последовательность существует

-

Это действие можно использовать для проверки, существует ли заданный элемент последовательности в игровой комнате. Вы указываете ID элемента, возвращаемый действием Создать последовательность, и если элемент последовательности существует в комнате, то - действие вернет true, в противном случае оно вернет false.

-

Если вы отметите аргумент "Not", то действие проверит, не существует ли такого элемента последовательности, и если он не найден, то вернет true.

-

Обратите внимание, что для добавления действий в блок "if", их следует опустить сбоку от действия, как показано на изображении ниже:

-

Теперь эти действия будут выполняться, если блок "if" - оценивается в true, в то время как любые действия, брошенные в другом месте, будут выполняться после блока "if".

-

-

Синтаксис действия:

-

If Sequence Exists Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
SequenceИдентификатор элемента последовательности, который необходимо проверить.
-

-

Пример:

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Pause_Sequence.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Pause_Sequence.htm index 4e5c38a2c..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Pause_Sequence.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Pause_Sequence.htm @@ -1,60 +0,0 @@ - - - - - - Последовательность паузы - - - - - - - - - - -

Последовательность воспроизведения

-

С помощью этого действия можно приостановить воспроизведение последовательности. Вы указываете ID элемента последовательности (возвращенный действием Create Sequence), и действие приостанавливает ее воспроизведение.

-

-

Синтаксис действия:

-

Pause Sequence Icon

-

Аргументы:

- - - - - - - - - - - - -
АргументОписание
VariableИдентификатор элемента последовательности, который нужно приостановить.
- -

-

Пример:

-

Приведенный выше код блока действий проверяет, есть ли в глобальной переменной значение true. - Если это так, то элемент последовательности, на который ссылается переменная "my_seq", приостанавливается, в противном случае он переводится в режим воспроизведения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Play_Sequence.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Play_Sequence.htm index c1aa28193..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Play_Sequence.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Play_Sequence.htm @@ -1,60 +0,0 @@ - - - - - - Последовательность воспроизведения - - - - - - - - - - -

Последовательность воспроизведения

-

С помощью этого действия можно запустить воспроизведение (ранее приостановленной) последовательности. Вы предоставляете ID элемента последовательности (возвращенный действием Create Sequence), и действие запускает его воспроизведение.

-

-

Синтаксис действия:

-

Play Sequence Icon

-

Аргументы:

- - - - - - - - - - - - -
АргументОписание
VariableИдентификатор элемента последовательности для воспроизведения.
- -

-

Пример:

-

Приведенный выше код блока действий проверяет, есть ли в глобальной переменной значение true. - Если это так, то элемент последовательности, на который ссылается переменная "my_seq", приостанавливается, в противном случае он переводится в режим воспроизведения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Sequence_Actions_Library.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Sequence_Actions_Library.htm index 15ad0f76a..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Sequence_Actions_Library.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Sequence_Actions_Library.htm @@ -1,95 +0,0 @@ - - - - - - Библиотека последовательных действий - - - - - - - - - - -

Последовательности Библиотека действий

-

Сайт Последовательность это библиотека действий, где вы можете создавать и уничтожать последовательности в комнате, а также воспроизводить/приостанавливать их и получать/устанавливать информацию о них. Более подробную информацию о последовательностях см. здесь.

-

Все доступные действия перечислены ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sequence Action LibraryСоздать элемент последовательности
Create Sequence Element IconУничтожить элемент последовательности
Destroy Sequence Element IconПолучить позицию последовательности
Get Sequence Position IconУстановить позицию последовательности
Set Sequence Position IconПоследовательность воспроизведения
Play Sequence IconПоследовательность паузы
Pause Sequence IconЕсли последовательность существует
If Sequence Exists IconПолучить длину последовательности
Get Sequence LengthПолучить головку последовательности
Get Sequence HeadУстановить головку последовательности
-

-

-

-

-

-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Set_Sequence_Head.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Set_Sequence_Head.htm index 008d98c03..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Set_Sequence_Head.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Set_Sequence_Head.htm @@ -1,72 +0,0 @@ - - - - - Установить головку последовательности - - - - - - - - - - -

Установить головку последовательности

-

С помощью этого действия вы можете установить положение головки воспроизведения данного элемента последовательности в комнате на указанный кадр. Вы предоставляете идентификатор элемента последовательности (возвращенный действием Создать последовательность) и - новую позицию головки воспроизведения в кадрах. Информацию о головке воспроизведения см. в разделе Использование листа допинга.

-

Обратите внимание, что позиция указывается вкадрах , и если вы зададите значение больше, чем общее количество кадров (или меньше, чем 0), то фактическое конечное положение головки воспроизведения будет зависеть от выбранного типа воспроизведения последовательности, - следуя этим правилам:

- -

Установка положения головки таким образом не остановит воспроизведение, и последовательность просто продолжится с нового положения головки воспроизведения, если она не приостановлена.

-

-

Синтаксис действия:

-

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
VariableИдентификатор элемента последовательности для изменения положения головки.
Head (frames)Новое положение головки (в кадрах) для элемента последовательности.
-

-

Пример:

-

Приведенный выше блок действий извлекает текущую позицию головки идентификатора элемента последовательности, хранящегося в - переменной "seq_id". Затем это значение используется для установки позиции головки того же элемента последовательности, сдвигая его на 4 кадра.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Set_Sequence_Position.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Set_Sequence_Position.htm index 9a388d7a3..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Set_Sequence_Position.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Sequences/Set_Sequence_Position.htm @@ -1,67 +0,0 @@ - - - - - - Установить позицию последовательности - - - - - - - - - - -

Установить позицию последовательности

-

С помощью этого действия вы можете установить положение данного элемента последовательности в комнате. Вы указываете ID элемента последовательности (возвращенный действием Создать последовательность), а затем новое положение по X и Y. Если вы - установить флажок "относительная", то значения, указанные для X и Y, будут добавлены к текущей позиции последовательности, в противном случае они будут абсолютной позицией.

-

-

Синтаксис действия:

-

Set Sequence Position Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
VariableИдентификатор элемента последовательности для установки позиции.
XНовая позиция x в комнате для последовательности.
YНовое положение y в комнате для последовательности.
-

-

Пример:

-

Приведенный выше код блока действий извлекает текущую позицию элемента последовательности - ID, хранящийся в переменной "my_seq". Затем эти значения используются для установки позиции последовательности, перемещая ее на 10 пикселей вправо.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Switch/Case.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Switch/Case.htm index 2bb09136e..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Switch/Case.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Switch/Case.htm @@ -1,63 +0,0 @@ - - - - - - Дело - - - - - - - - - - -

Дело

-

Это действие создаст новый случай в переключателе. Вы указываете значение для случая, и оно сравнивается с входным значением для Switch, и если они совпадают, то выполняются действия, добавленные в этот случай. - Действия, которые добавляются в Случай, чтобы выполняться только в этом Случае, должны быть отброшены в сторону действия, подобно тому, как вы добавляете действие в "если":

-

Обратите внимание, что значение Case должно быть константой, которая может быть любым типом данных (вещественным, строковым и т.д...), - при условии, что при компиляции оно оценивается в одно значение - поэтому вы не можете использовать выражения, зависящие от переменных. Также обратите внимание, что Case нельзя использовать вне Switch, и попытка сделать это приведет к ошибке.

-

-

Синтаксис действия:

-

Case Icon

-

Аргументы:

- - - - - - - - - - - - -
АргументОписание
ConstantПостоянное значение, которое должно быть оценено по отношению к входному значению Switch.
- -

-

Пример:

-

Приведенный выше код блока действий получает значение, хранящееся в переменной, а затем сравнивает его с - различными возможными случаями. Если хоть один из случаев совпадает со значением, то выполняется действие, соответствующее этому случаю, в противном случае оценивается следующий случай. После работы переключателя подается сигнал тревоги на 30.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Switch/Default.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Switch/Default.htm index 449c3a7ab..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Switch/Default.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Switch/Default.htm @@ -1,46 +0,0 @@ - - - - - - По умолчанию - - - - - - - - - - -

По умолчанию

-

Это действие создаст новый случай по умолчанию в переключателе. Случай по умолчанию - это случай, который будет выполнен, если входное значение не соответствует никаким другим константам случая. Действия, добавляемые к регистру по умолчанию, должны быть - добавляться сбоку от действия, подобно тому, как вы добавляете действие в "если":

-

Default Icon

-

-

Синтаксис действия:

-

Default drop actions

-

Пример:

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Switch/Switch.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Switch/Switch.htm index c49743083..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Switch/Switch.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Switch/Switch.htm @@ -1,61 +0,0 @@ - - - - - - Переключатель - - - - - - - - - - -

Переключатель

-

Это действие создаст новый отчет Switch, в который затем можно добавить другие случаи для оценки. Вы задаете значение, которое будет использоваться для сравнения со случаями в Switch, а затем добавляете различные действия Case, подобно тому, как вы добавляете действие в "если". - как если бы вы добавили действие к "if", т.е. опустив его сбоку от действия, а не под ним:

-

Обратите внимание, что вы не можете добавить любой другой тип действия в переключатель, не добавив предварительно хотя бы один - Case для его содержания.

-

-

Синтаксис действия:

-

Switch Icon

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
ValueЗначение, которое будет использоваться переключателем для оценки
-

-

Пример:

-

Приведенный выше код блока действий получает значение, хранящееся в переменной, а затем сравнивает его с различными возможными - случаями. Если хоть один из случаев совпадает со значением, то выполняется действие, соответствующее этому случаю, в противном случае оценивается следующий случай. После работы переключателя подается сигнал тревоги на 30.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Switch/Switch_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Switch/Switch_Actions.htm index 9ebd0ab47..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Switch/Switch_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Switch/Switch_Actions.htm @@ -1,72 +0,0 @@ - - - - - - Переключение действий - - - - - - - - - - -

Библиотека действий переключателя

-

Библиотека действий Switches содержит те действия, которые необходимы для - создания операторов переключения в коде игровых действий. В ряде ситуаций вы хотите позволить своим экземплярам завершить действие в зависимости от определенного значения, и хотя вы можете сделать это с помощью нескольких последовательных операторов "if", это - когда число возможных вариантов становится больше двух или трех. В таких случаях лучше использовать действие "switch". Действие switch работает следующим образом:

- -

Библиотека Switches имеет следующие действия:

-


-

- - - - - - - - - - - - - - - -
Switch Action LibraryПереключатель
Switch IconДело
Case IconПо умолчанию
-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Data_At_Pixel.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Data_At_Pixel.htm index 94058dee2..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Data_At_Pixel.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Data_At_Pixel.htm @@ -1,71 +0,0 @@ - - - - - - Получение данных о плитке на пикселе - - - - - - - - - - -

Получение данных о плитке на пикселе

-

С помощью этого действия можно получить данные плитки для ячейки на слое карты плитки из позиции. Данные плитки - это просто значение, отражающее индекс плитки вместе со значениями флипа, зеркала и поворота, а также любыми пользовательскими масками плитки, которые - которые вы использовали. В этом действии сначала указывается слой, на который нужно нацелиться, используя имя слоя (строку), определенное в редакторе помещения, а затем оси x и y в помещении, для которых нужно получить данные плитки. Возвращаемое значение данных тайла будет совпадать с - любой ячейкой карты тайлов, находящейся в данной точке. Например, если ваш набор плиток имеет размер 16x16, то слой карты плиток будет содержать плитки в ячейках размером 16x16 пикселей, поэтому, если вы используете это действие для нацеливания на позицию комнаты (8, 8), вы получите - данные плитки для ячейки (0, 0) карты плитки.

-

ПРИМЕЧАНИЕ: Выбранный слой должен быть определен как слой карты плиток в редакторе помещений, иначе могут возникнуть ошибки.

-

Возвращенное значение будет сохранено в целевой переменной, которая может быть создана ранее или может быть новой временной переменной (если вы установите флажок "Temp"). Более подробную информацию о данных тайлов можно найти в разделе GML, посвященном функциям карты тайлов.

-

-

Синтаксис действия:

-

Get Tile Data At Pixel Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
LayerСлой с картой плиток, на который нужно нацелиться
XПоложение вдоль горизонтальной оси (X) для установки данных плитки
YПоложение по вертикальной оси (Y) для установки данных плитки
-

-

Пример:

-

Приведенный выше код блока действий проверяет наличие щелчка мыши и при его получении - он извлекает данные плитки для ячейки, совпадающей с позицией мыши. Затем эти данные изменяются и возвращаются в слой карты плиток, поворачивая плитку в этой ячейке.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Data_In_Cell.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Data_In_Cell.htm index 309af78f2..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Data_In_Cell.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Data_In_Cell.htm @@ -1,65 +0,0 @@ - - - - - Получить данные о плитке в ячейке - - - - - - - - - - -

Получить данные о плитке в ячейке

-

С помощью этого действия можно получить данные плитки для ячейки ячейки на слое карты плитки. Данные плитки - это просто значение, отражающее индекс плитки, а также значения флипа, зеркала и поворота, - а также любые пользовательские маски плитки, которые вы использовали. В этом действии сначала указывается слой, на который нужно нацелиться, используя имя слоя (строку), определенное в редакторе помещений, а затем столбец и строку слоя карты плитки, для которых нужно получить данные плитки. - для. Ячейка" - это область на сетке карты плиток, в которой находится плитка, данные которой вы хотите получить, поэтому, если ваши плитки имеют размер 16x16, например, а комната 1024x768, карта плиток будет иметь 64 столбца и 48 строк.

-

ПРИМЕЧАНИЕ: Выбранный слой должен быть определен как слой карты плиток в редакторе помещений, иначе могут возникнуть ошибки.

-

Возвращенное значение будет сохранено в целевой переменной, которая может быть создана ранее или может быть новой временной переменной (если вы установите флажок "Temp"). Более подробную информацию о данных тайлов можно найти в разделе GML, посвященном функциям карты тайлов.

-

-

Синтаксис действия:

-

Get Tile Data In Cell Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
LayerСлой, из которого нужно получить плитку
ColumnСтолбец (слева направо) ячейки
-

-

Пример:

-

Приведенный выше код блока действий перебирает все ячейки плитки в комнате, извлекает - данные плитки для ячейки, отражает их, затем снова устанавливает ячейку.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Data_Transform.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Data_Transform.htm index 177d3aa01..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Data_Transform.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Data_Transform.htm @@ -1,66 +0,0 @@ - - - - - - Получить преобразование данных о плитке - - - - - - - - - - -

Получить преобразование данных о плитке

-

С помощью этого действия вы можете узнать, были ли данные плитки преобразованы одним из трех способов: перевернуты, зеркально отображены или повернуты. Данные плитки - это просто значение, отражающее индекс плитки вместе с примененными преобразованиями. - обычно перед использованием этого действия необходимо сначала получить данные плитки с помощью Get Tile Data In Cell или Get Tile Data At Pixel. Действие возвращает true, если - выбранное преобразование было применено к данным плитки, или false в противном случае, а возвращаемое значение будет сохранено в целевой переменной, которая может быть создана ранее или может быть новой временной переменной (если вы установите флажок "Temp"). - флажок). Более подробную информацию о тайловых данных можно найти в разделе GML, посвященном функциям тайловой карты.

-

-

Синтаксис действия:

-

Get Tile Data Transform

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
TileДанные плитки для получения преобразования из плитки
TransformПреобразование для проверки
-

-

Пример:

-

-

Приведенный выше код блока действий получает данные плитки в позиции мыши, а затем - проверяет, не было ли к плитке применено преобразование вращения. Если это так, то преобразование сбрасывается, и данные плитки снова устанавливают плитку в указанное положение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Index_At_Pixel.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Index_At_Pixel.htm index 7c3cff5df..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Index_At_Pixel.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Index_At_Pixel.htm @@ -1,74 +0,0 @@ - - - - - - Получить индекс плитки в пикселе - - - - - - - - - - -

Получить индекс плитки в пикселе

-

Это действие используется для получения индекса плитки на заданном слое. Слой задается из имени слоя (строка, используемая для названия слоя в редакторе комнат), а затем задается позиция x и y для поиска плитки, индекс которой нужно получить. Плитка - будет та, в которую попадает заданная позиция в комнате, а индекс будет возвращен в переменную target, где 0 - нет плитки, а целое положительное число - индекс плитки. Позиции x и y могут быть помечены как относительные к - позиции вызывающего экземпляра, а переменная target может быть помечена как временная (локальная) переменная, которая может использоваться до конца события.

-

-

Синтаксис действия:

-

Get Tile Index At Pixel Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
LayerСлой, на котором будет установлена плитка
xПозиция x для проверки
yПозиция y для проверки
TargetЦелевая переменная для хранения индекса плитки
- -

-

Пример:

-

Приведенный выше код блока действий проверяет наличие нажатия левой кнопки мыши - и если таковая обнаружена, он получает индекс ячейки плитки, в которую попадает позиция мыши. Затем проверяется индекс плитки, и если он не равен 0, то он устанавливается в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Index_In_Cell.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Index_In_Cell.htm index 25fdb960b..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Index_In_Cell.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tile_Index_In_Cell.htm @@ -1,75 +0,0 @@ - - - - - - Получить индекс плитки в ячейке - - - - - - - - - - -

Получить индекс плитки в ячейке

-

С помощью этого действия можно получить индекс плитки на заданном слое. Слой задается из имени слоя (строка, как используется для названия слоя в редакторе комнат), а затем указывается строка и столбец ячейки в слое для получения индекса плитки. - индекс плитки. Наконец, вы задаете переменную target для хранения индекса плитки, где 0 - отсутствие плитки, а целое положительное число - индекс плитки. Обратите внимание, что переменная target может быть помечена как временная (локальная) переменная, которая может использоваться - до окончания события.

-

-

Синтаксис действия:

-

Get Tile Index In Cell Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
LayerСлой, из которого нужно получить плитку
ColumnСтолбец (слева направо) ячейки
RowСтрока (сверху вниз) ячейки
TargetЦелевая переменная для возвращаемого значения
- -

-

Пример:

-

Приведенный выше код блока действий создает цикл для прохождения по - верхнюю строку заданного слоя помещения и при этом проверяет, установлена ли плитка, индексированная в ячейке столбца, в 0. Если нет, то индекс плитки для этой ячейки устанавливается в 0 и временная (локальная) переменная увеличивается, прежде чем цикл выполнит еще один набор проверок - выполняет еще один набор проверок.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tilemap_Variable.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tilemap_Variable.htm index b7971dbfd..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tilemap_Variable.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Get_Tilemap_Variable.htm @@ -1,76 +0,0 @@ - - - - - Получить переменную карты плитки - - - - - - - - - - -

Получить переменную карты плитки

-

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

- -

При использовании этого действия вы указываете имя слоя (строка, как определено в редакторе помещений), из которого нужно получить данные элемента карты плитки, затем тип данных, которые вы хотите получить (как показано в списке выше). Возвращенное значение будет сохранено в - целевой переменной, которая может быть создана ранее или может быть новой временной переменной (если вы установите флажок "Temp"). Обратите внимание, что вы можете получить дополнительные значения, нажав на значок плюса рядом с - и выбрать другую переменную и указать другую переменную для хранения возвращаемого значения.

-

-

Синтаксис действия:

-

Get Timemap Variable Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
LayerУровень, из которого будут получены данные
VariableПеременная для получения значения (как указано выше)
-

-

Пример:

-

Приведенный выше код блока действий проверяет, используют ли плитки на слое "Floor_Tiles" - использует набор плиток "tl_PalaceRuins", и если нет, то он будет установлен для использования этого набора.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Data_At_Pixel.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Data_At_Pixel.htm index 5af3f885b..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Data_At_Pixel.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Data_At_Pixel.htm @@ -1,74 +0,0 @@ - - - - - Установка данных плитки на пиксель - - - - - - - - - - -

Установка данных плитки на пиксель

-

С помощью этого действия можно установить данные плитки для ячейки плитки, находящейся в определенном положении на слое карты плитки. Данные плитки - это просто значение, отражающее индекс плитки вместе со значениями - flip, mirror, rotate, а также любые пользовательские маски плитки, которые вы использовали. В этом действии сначала указывается слой, на который нужно нацелиться, используя имя слоя (строка), заданное в редакторе помещения, а затем оси x и y в помещении. - для которых нужно установить данные плитки. Обратите внимание, что данные плитки будут установлены для "ячейки" карты плитки, в которой находится заданная позиция. Например, если набор плиток имеет размер 16x16, то слой карты плиток будет содержать плитки в ячейках размером 16x16 пикселей, поэтому - если вы используете это действие для указания позиции комнаты (8, 8), вы измените плитку в ячейке (0, 0) карты плиток.

-

ПРИМЕЧАНИЕ: Выбранный слой должен быть определен как слой карты плиток в редакторе помещений, иначе могут возникнуть ошибки.

-

Последним аргументом действия являются сами данные плитки. Обычно данные плитки для ячейки карты плитки получают с помощью действия Get Tile Data At Pixel, а затем манипулируют ими с помощью действия Set Tile Data Transform, прежде чем снова задать их с помощью этого действия. Более подробную информацию о данных тайла см. в разделе GML " Функции карты тайла".

-

-

Синтаксис действия:

-

Set Tile Data At Pixel Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
LayerСлой с картой плиток, на который нужно нацелиться
XПоложение вдоль горизонтальной оси (X) для установки данных плитки
YПоложение по вертикальной оси (Y) для установки данных плитки
DataДанные плитки, используемые для установки ячейки в позицию
-

-

Пример:

-

Приведенный выше код блока действий проверяет наличие щелчка мыши и при его получении - он извлекает данные плитки для ячейки, совпадающей с позицией мыши. Затем эти данные изменяются и возвращаются в слой карты плиток, поворачивая плитку в этой ячейке.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Data_In_Cell.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Data_In_Cell.htm index 7d1a44b72..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Data_In_Cell.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Data_In_Cell.htm @@ -1,73 +0,0 @@ - - - - - Установить данные плитки в ячейку - - - - - - - - - - -

Установить данные плитки в ячейку

-

С помощью этого действия можно установить данные плитки для ячейки плитки на слое карты плитки. Данные плитки - это просто значение, отражающее индекс плитки, а также значения флипа, зеркала и поворота, - а также любые пользовательские маски плитки, которые вы использовали. В этом действии сначала указывается целевой слой с помощью имени слоя (строки), определенного в редакторе помещений, а затем столбец и строка слоя карты плитки, для которых нужно установить данные плитки. - для. Ячейка" - это область на сетке карты плиток, которая содержит плитку, для которой вы хотите установить данные, поэтому, например, если ваши плитки 16x16, а комната 1024x768, карта плиток будет иметь 64 столбца и 48 строк.

-

ПРИМЕЧАНИЕ: Выбранный слой должен быть определен как слой карты плиток в редакторе помещений, иначе могут возникнуть ошибки.

-

Последним аргументом действия являются сами данные плитки. Обычно вы получаете данные тайла для ячейки карты тайла с помощью действия Получить данные тайла в ячейке, а затем манипулируете ими с помощью действия Установить преобразование данных тайла, прежде чем снова установить их с помощью этого действия. Более подробную информацию о данных тайла см. в разделе GML " Функции карты тайла".

-

-

Синтаксис действия:

-

Set Tile Data In Cell Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
LayerСлой с картой плиток, на который нужно нацелиться
ColumnsПоложение столбца ячейки вдоль горизонтальной оси для установки данных плитки
RowПоложение ряда ячеек вдоль вертикальной оси для установки данных плитки
DataДанные плитки, используемые для установки ячейки
-

-

Пример:

-

Приведенный выше код блока действий перебирает все ячейки плитки в комнате, извлекает - данные плитки для ячейки, отражает их, затем снова устанавливает ячейку.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Data_Transform.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Data_Transform.htm index 0e42b4c88..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Data_Transform.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Data_Transform.htm @@ -1,66 +0,0 @@ - - - - - - Установить преобразование данных плитки - - - - - - - - - - -

Установить преобразование данных плитки

-

С помощью этого действия вы можете изменить одно из трех преобразований плитки в данных плитки. Вы указываете переменную, в которой хранятся данные плитки, а затем выбираете преобразование, которое нужно изменить. Нажав на флажок "Применить", вы примените это преобразование и - снятие флажка приведет к его удалению. Данные плитки - это просто значение, которое отражает индекс плитки вместе с примененными преобразованиями, а также любые пользовательские маски плитки, которые вы использовали, и это действие позволяет вам изменить три из этих значений: - Перевернуть, отразить и повернуть. Обратите внимание, что обычно сначала необходимо получить данные плитки с помощью Get Tile Data In Cell или Get Tile Data At Pixel, затем применить требуемые - преобразования, а затем снова установить плитку в карту плиток с помощью Set Tile Data In Cell или Set Tile Data At Pixel, поскольку это действие только устанавливает значение, но не применяет его к плитке, из которой оно было взято. - Для получения дополнительной информации о данных тайла см. раздел GML, посвященный функциям карты тайла.

-

-

Синтаксис действия:

-

Set Tile Data Transform Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
TileДанные плитки для изменения
TransformПреобразование для применения/удаления
-

-

Пример:

-

Приведенный выше код блока действий получает данные плитки в позиции мыши, а затем - проверяет, не было ли к плитке применено преобразование вращения. Если это так, то преобразование сбрасывается, и данные плитки снова устанавливают плитку в указанное положение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Index_At_Pixel.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Index_At_Pixel.htm index d1aea450c..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Index_At_Pixel.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Index_At_Pixel.htm @@ -1,77 +0,0 @@ - - - - - - Установить индекс плитки в пикселе - - - - - - - - - - -

Установить индекс плитки в пикселе

-

- -

С помощью этого действия вы можете установить плитку на заданном слое на новый индекс. Слой задается из имени слоя (строка, используемая для названия слоя в редакторе комнат), а затем задается позиция x и y, чтобы получить плитку для установки. Позиции x и - y могут быть помечены как относительные к позиции вызывающего экземпляра, а устанавливаемая плитка будет той, в которую попадает данная позиция в помещении, а используемый набор плиток будет тем, который назначен слою в редакторе помещения. - редактор. Наконец, вы указываете индекс плитки, на которую нужно установить плитку (плитки индексируются слева направо сверху вниз, с 0 в левом верхнем углу). Обратите внимание, что вы всегда можете установить индекс плитки на 0, чтобы очистить плитку.

- -

-

Синтаксис действия:

-

Set Tile Index At Pixel Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
LayerСлой, на котором будет установлена плитка
xПозиция x для проверки
yПозиция y для проверки
TileНовый индекс плитки для использования
- -

-

Пример:

-

Приведенный выше код блока действий проверяет нажатие левой кнопки мыши и - если таковое обнаружено, он получает индекс ячейки плитки, в которую попадает позиция мыши. Затем проверяется индекс плитки, и если он не равен 0, то он устанавливается в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Index_In_Cell.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Index_In_Cell.htm index 3085160c5..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Index_In_Cell.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Index_In_Cell.htm @@ -1,74 +0,0 @@ - - - - - - Установить индекс плитки в ячейке - - - - - - - - - - -

Установить индекс плитки в ячейке

-

С помощью этого действия можно установить плитку на заданном слое на новый индекс. Слой задается из имени слоя (строка, как используется для названия слоя в редакторе помещений), затем указывается строка и столбец ячейки в слое, чтобы получить - плитку для установки. Наконец, задается индекс плитки, на которую нужно установить плитку (плитки индексируются слева направо сверху вниз, с 0 в левом верхнем углу). Обратите внимание, что вы всегда можете установить индекс плитки на 0, чтобы очистить плитку.

-

-

Синтаксис действия:

-

Set Tile Index In Cell Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
LayerСлой, на котором будет установлена плитка
ColumnСтолбец (слева направо) ячейки
RowСтрока (сверху вниз) ячейки
TileИндекс плитки для установки ячейки
- -

-

Пример:

-

Приведенный выше код блока действий создает цикл для прохождения по верхней строке - заданного слоя помещения, и по мере его выполнения проверяется, установлена ли плитка, индексированная в ячейке столбца, на 0. Если нет, то индекс плитки для этой ячейки устанавливается на 0, и временная (локальная) переменная увеличивается, прежде чем цикл выполнит еще одну проверку - набор проверок.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Set.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Set.htm index a68f8f193..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Set.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Set_Tile_Set.htm @@ -1,62 +0,0 @@ - - - - - Комплект плитки - - - - - - - - - - -

Комплект плитки

-

С помощью этого действия вы можете задать слою использование наборов плиток, отличных от тех, что созданы в браузере активов. Вы задаете имя слоя (строка, как определено в редакторе помещений), а затем - ресурс набора плиток для использования, и все плитки в помещении на этом слое будут нарисованы с новым набором плиток.

-

-

Синтаксис действия:

-

Set Tile Set Icon

-

Аргументы:

- - - - - - - - - - - - - - - -
АргументОписание
LayerСлой, на котором будет установлен новый набор плиток.
TilesetНабор плиток, используемый для слоя.
-

-

Пример:

-

Приведенный выше код блока действий проверяет, используют ли плитки на слое "Floor_Tiles" - набор плиток "tl_PalaceRuins", и если нет, то они будут установлены для его использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Tile_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Tile_Actions.htm index d96b575aa..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Tile_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Tiles/Tile_Actions.htm @@ -1,112 +0,0 @@ - - - - - Действия с плиткой - - - - - - - - - - -

Библиотека действий с плиткой

-

Tiles Action Library

-

Сайт Плитка это библиотека действий, в которой вы можете найти действия, необходимые для получения или установки индексов плиток в комнате, а также для изменения их отображения, среди прочего (для получения дополнительной информации о плитках, - см. раздел окартах плиток здесь): -

-


-
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Set Tile Index At Pixel IconУстановить индекс плитки в пикселе
Get Tile Index At Pixel IconПолучить индекс плитки в пикселе
Set Tile Index In Cell IconУстановить индекс плитки в ячейке
Get Tile Index In Cell IconПолучить индекс плитки в ячейке
Set Tile Set IconКомплект плитки
Get Timemap Variable IconПолучить переменную карты плитки
Set Tile Data At Pixel IconУстановка данных плитки на пиксель
Get Tile Data At Pixel IconПолучение данных о плитке на пикселе
Set Tile Data In Cell IconУстановить данные плитки в ячейку
Get Tile Data In Cell IconПолучить данные о плитке в ячейке
Set Tile Data Transform IconУстановить преобразование данных плитки
Get Tile Data TransformПолучить преобразование данных о плитке
-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Set_Instance_Timeline.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Set_Instance_Timeline.htm index 54e6200ad..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Set_Instance_Timeline.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Set_Instance_Timeline.htm @@ -1,68 +0,0 @@ - - - - - - Установить временную шкалу экземпляра - - - - - - - - - - -

Установить временную шкалу экземпляра

-

Это действие назначает экземпляру временную шкалу из браузера ассетов. Вы указываете временную шкалу для назначения, а затем можете выбрать зацикливание временной шкалы при достижении последнего момента (следующий кадр после запуска последнего момента будет зациклен на - к первому моменту временной шкалы), а также запустить временную шкалу немедленно или нет. Если вы не запускаете временную шкалу сразу, вы можете использовать действие Set Timeline State, чтобы запустить ее позже в другом - событии или сценарии.

-

-

Синтаксис действия:

-

Set Instance Timeline Icon

-

Аргументы:

- - - - - - - - - - - - - - - - - - - -
АргументОписание
TimelineРесурс временной шкалы для назначения экземпляру
LoopФлаг, чтобы временная шкала зацикливалась после последнего момента (по умолчанию установлен флаг)
Start TimelineФлаг, чтобы временная шкала начиналась немедленно или нет (по умолчанию флаг установлен).
-

-

Пример:

-

Приведенный выше код блока действий назначит временную шкалу экземпляру, вызывающему - действия, а также установит начальный момент на 10, а затем скорость временной шкалы на 2.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Set_Timeline_Moment.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Set_Timeline_Moment.htm index 94d0f7a3a..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Set_Timeline_Moment.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Set_Timeline_Moment.htm @@ -1,63 +0,0 @@ - - - - - - Установите временной момент - - - - - - - - - - -

Установите временной момент

-

Это действие используется для перехода от текущего момента временной шкалы к новому. Временные линии движутся вперед через различные "моменты", и каждый момент обычно занимает один игровой кадр (как событие шага объекта). После запуска временной линии - она будет двигаться вперед через моменты, пока не достигнет конца, в этот момент она либо вернется к первому моменту временной шкалы, либо остановится совсем. Однако этот линейный подход к временной шкале может быть изменен с помощью этого действия, чтобы установить другой момент в любое время. - момент в любое время, что позволяет создавать собственные временные циклы, пропускать участки временной шкалы при определенных обстоятельствах и т.д.. С помощью этого действия вы просто задаете момент для перехода на временную шкалу, и следующий игровой кадр будет выполняться в этот момент. - (обратите внимание, что вы должны назначить временную шкалу экземпляру с помощью действия Set Instance Timeline).

-

-

Синтаксис действия:

-

Set Timeline Moment Icon

-

Аргументы:

- - - - - - - - - - - - -
АргументОписание
MomentМомент, на который нужно установить назначенную временную шкалу
- -

-

Пример:

-

Приведенный выше код блока действий назначит временную шкалу - экземпляру, вызывающему действия, а также установит начальный момент на 10, а затем скорость временной шкалы на 2.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Set_Timeline_Speed.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Set_Timeline_Speed.htm index c41eb2b18..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Set_Timeline_Speed.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Set_Timeline_Speed.htm @@ -1,65 +0,0 @@ - - - - - - Установите скорость временной шкалы - - - - - - - - - - -

Установите скорость временной шкалы

-

Это действие можно использовать для установки скорости, с которой временная шкала будет перемещаться по содержащимся в ней моментам. Обычно в каждом игровом кадре вы хотите, чтобы позиция на временной шкале увеличивалась на 1, однако вы можете изменить это значение, установив это - действие на другое значение. Выбранное значение будет рассматриваться как множитель, поэтому, например, значение 2 заставит временную шкалу работать с удвоенной скоростью, а значение 0,5 заставит ее работать с вдвое меньшей скоростью. - Для моментов это означает, что если значение больше единицы, то в одном игровом кадре может произойти несколько моментов (моменты никогда не пропускаются), а если скорость меньше единицы, то после того, как момент пробежал, будут кадры, в которых ничего не происходит до следующего момента. - где ничего не происходит, пока не запустится следующий момент - если вы установите скорость временной шкалы на 0.1, например, вы получите момент на одном игровом кадре, затем 9 игровых кадров без моментов, а на десятом игровом кадре будет запущен следующий момент.

-

Если вы установили временную шкалу для запуска с помощью действий Set Instance Timeline или Set Timeline State, но не установили - скорость, то временная шкала по умолчанию будет иметь значение 1 момент на игровой кадр.

-

-

Синтаксис действия:

-

Set Timeline Speed Icon

-

Аргументы:

- - - - - - - - - - - - -
АргументОписание
SpeedСкорость - в виде множителя - для временной шкалы (по умолчанию 1).
- -

-

Пример:

-

Приведенный выше код блока действий назначит временную шкалу - экземпляру, вызывающему действия, а также установит начальный момент на 10, а затем скорость временной шкалы на 2.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Set_Timeline_State.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Set_Timeline_State.htm index ee53b78af..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Set_Timeline_State.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Set_Timeline_State.htm @@ -1,83 +0,0 @@ - - - - - - Установить состояние временной шкалы - - - - - - - - - - -

Установить состояние временной шкалы

-

Это действие можно использовать для запуска, остановки, приостановки или возобновления временной шкалы. Временная шкала должна быть сначала установлена для экземпляра с помощью действия Set Instance Timeline, а затем вы можете использовать это действие в любое время, чтобы - изменить ее состояние из следующих вариантов

- - - - - - - - - - - - - - - - - - - - - - - -
ВариантОписание
НачалоЗапустите временную шкалу, назначенную данному экземпляру (если временная шкала была приостановлена, это снова установит начальную позицию в момент 0).
РезюмеВозобновить приостановленную временную шкалу (если временная шкала была остановлена, но не приостановлена, это ничего не даст).
ПриостановленоПриостановить временную шкалу, назначенную данному экземпляру (во время приостановки моменты временной шкалы не будут продвигаться вместе с кадрами игры).
ОстановитьОстановите временную шкалу, назначенную данному экземпляру.
-

-

Синтаксис:

-

Set Timeline State Icon

-

-

Аргументы:

- - - - - - - - - - - -
АргументОписание
StateСостояние, в которое нужно поместить временную шкалу (см. таблицу выше)
-

-

Приведенный выше код блока действий проверит значение, хранящееся в глобальной переменной и - если оно равно true, то временная шкала будет приостановлена, а если оно равно false, то временная шкала будет возобновлена.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Timeline_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Timeline_Actions.htm index b503cb80a..e69de29bb 100644 --- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Timeline_Actions.htm +++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Timelines/Timeline_Actions.htm @@ -1,70 +0,0 @@ - - - - - - Действия по графику - - - - - - - - - - -

Временная библиотека действий

-

Временные шкалы - это мощный механизм управления событиями в вашей игре, основанный на - "моментах", где "момент" - это просто один игровой шаг. Эти временные линии обычно создаются в браузере активов аналогично объектам, т.е. вы создаете временную линию в редакторе временных линий, - затем в каждый момент, когда вам нужно, чтобы она выполнила действие, вы добавляете некоторый код или визуальное действие GML, которое она должна выполнить.

-

После создания ресурса временной шкалы его можно останавливать, запускать и манипулировать им с помощью следующих действий:

-

-

- - - - - - - - - - - - - - - - - - - -
Timeline Action LibraryУстановить временную шкалу экземпляра
Set Instance Timeline IconУстановите временной момент
Set Timeline Moment IconУстановите скорость временной шкалы
Set Timeline Speed IconУстановить состояние временной шкалы
-

-

-

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Accessors.htm b/Manual/contents/GameMaker_Language/GML_Overview/Accessors.htm index 72d4589dd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Accessors.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Accessors.htm @@ -1,200 +0,0 @@ - - - - - - Аксессоры - - - - - - - - - - -

Аксессоры

-

Сайт GameMaker Language (GML) также позволяет вам получать доступ к определенным структурам данных и массивам с помощью логических выражений, называемых аксессорами. Это построено так же, как и при обычной работе с массивом, только перед первым аргументом мы используем символ идентификатора, чтобы сообщить GameMaker, что вы работаете с (ранее созданной) структурой данных или литералом массива.

-

-

Списки DS [| ]

-
-

Синтаксис для списков DS следующий:

-

list_index[| index]

-

Поэтому, когда вы используете ds_list_create() для создания списка, вы используете индекс списка (который вы сохранили в переменной) для ссылки на него, при этом значение "индекс" является позицией в списке для установки или добавления. Например, следующий код создает список, а затем добавляет 10 записей, устанавливая для каждой записи случайное число от 0 до 9:

-

ds = ds_list_create();
- var _index = 0;
- repeat(10)
- {
-     ds[| _index++] = irandom(9);
- }

-

Обратите внимание, что если вы используете выражение для добавления ссылки на индекс, который уже имеет значение, предыдущее значение будет заменено, а не добавлен новый индекс в список. Чтобы добавить дополнительные записи, необходимо знать размер списка ds_list и добавить их в конец. Также стоит отметить, что вы можете задать индекс списка, который больше размера списка, на который ссылаются, и в этом случае будет установлено это значение, одновременно расширяя список и инициализируя все позиции в списке до данного индекса как 0.

-

После того как вы создали структуру списка и заполнили ее данными, для получения значений из списка вам потребуется что-то вроде:

-

value = ds[| 5];

-

Вышеприведенная функция получит значение из позиции 5 (шестой индекс, так как списки начинаются с 0) и сохранит его в переменной. Если вы зададите позицию, которая находится за пределами размера списка, то будет возвращено значение undefined, что можно проверить с помощью функции is_undefined().

-

-
-

Карты DS [?]

-
-

Синтаксис для карт DS следующий:

-

map_index[? key]

-

После создания карты с помощью ds_map_create(), вы будете использовать индекс карты, который вы сохранили в переменной, чтобы ссылаться на нее, при этом значение "key" будет ключом карты, который нужно установить или получить. Например, следующий код создает карту, а затем добавляет в нее несколько записей, используя этот синтаксис:

-

ds = ds_map_create();
- ds[? "Name"] = "Hamish";
- ds[? "Company"] = "MacSeweeny Games";
- ds[? "Game"] = "Catch The Haggis";

-

Обратите внимание, что если карта уже содержит то же значение ключа, которое вы пытаетесь добавить, она не создаст дубликат ключа с новым значением, а заменит предыдущее значение.

-

После того как вы создали структуру карты и заполнили ее данными, для получения значений по определенному ключу карты вы должны сделать следующее:

-

value = ds[? "Name"];

-

Приведенное выше действие позволит получить значение из ключа "Name" и сохранить его в переменной, но следует помнить, что если данный ключ не существует в карте DS, то возвращаемое значение будет undefined. Это можно проверить с помощью функции is_undefined().

-

-
-

DS Grids [# ]

-
-

Синтаксис для DS grid следующий:

-

grid_index[# xpos, ypos]

-

После создания сетки с помощью функции ds_grid_create(), вы будете использовать индекс сетки, который вы сохранили в переменной, чтобы ссылаться на нее, а "xpos" и "ypos" будут позицией в сетке для получения или установки значения. Например, следующий код создает сетку, очищает ее до 0, затем добавляет в нее несколько записей:

-

ds = ds_grid_create();
- ds_grid_clear(ds, 0);
- var _gw = ds_grid_width(ds) - 1;
- var _gh = ds_grid_height(ds) - 1;
- repeat(10)
- {
-     var _xx = irandom(_gw);
-     var _yy = irandom(_gh);
-     if (ds[# _xx, _yy] == 0)
-     {
-         ds[# _xx, _yy] = 1;
-     }
- }

-

После того как вы создали структуру сетки и заполнили ее данными, для получения значений из определенной позиции сетки вы должны сделать следующее:

-

value = ds[# mouse_x div 16, mouse_y div 16];

-

Вышеприведенное значение будет получено из заданной ds_grid на основе позиции мыши (разделенной на ширину "ячейки" в комнате, чтобы получить правильное местоположение). Если вы зададите позицию, которая находится вне границ сетки, то будет возвращено значение undefined, которое можно проверить с помощью функции is_undefined().

-

-
-

Массивы [@ ]

-
-

Этот аксессор используется только в том случае, если включена опция Copy on Write.

-

Массивы также имеют свои собственные аксессоры, которые работают аналогично перечисленным выше для структур данных. Однако аксессоры массивов обладают интересным свойством, которое позволяет изменять массив из функции скрипта или method без необходимости его копирования. Когда вы передаете массив в функцию, он передается по ссылке, то есть сам массив не передается в скрипт, а на него просто ссылаются, чтобы получить данные. Обычно, если вам нужно изменить массив, он копируется в скрипт, а затем вам нужно передать обратно (вернуть) скопированный массив, чтобы исходный массив был обновлен. Это может привести к значительным накладным расходам на обработку, поэтому вместо этого можно использовать аксессор, который изменит исходный массив напрямую , без необходимости его копирования. Вы можете увидеть, как это работает, в примерах ниже.

-

Синтаксис для массивов, использующий аксессор @, следующий:

-

array[@ i]

-

После того как вы создали массив в экземпляре, вы можете передать его в сценарий по ссылке и использовать аксессор @ для его непосредственного изменения. Например, вы создадите массив и вызовете функцию следующим образом:

-

array[99] = 0;
- array_populate(array);

-

Сама функция будет выглядеть примерно так:

-

function array_populate(_array)
- {
-     var a = _array; var i = 0;
-     repeat(25)
-     {
-         i = irandom(99);
-         while (a[i] != 0)
-         {
-             i = irandom(99);
-         }
-         a[@ i] = 100;
-     }
- }

-

Все, что делает эта функция, это выбирает 25 случайных позиций в массиве и устанавливает значение выбранной позиции массива равным 100.

-

Конечно, аксессор @ не требуется, если функция Copy on Write отключена.

-

ПРИМЕЧАНИЕ Нельзя использовать аксессор массива @ при работе с массивом argument[n] в функциях сценария.

-

-

-
-

Структуры [$ ]

-
-

Синтаксис для структур следующий

-

struct[$ "name"]

-

Этот аксессор, по сути, является оберткой для функций variable_struct_get() и variable_struct_set(), и вы будете использовать его так же, как аксессор для DS map. Например, если вы создали структуру и хотите получить значение из переменной под названием "my_health", вы должны сделать следующее:

-

var _hp = struct[$ "my_health"];

-

Как видите, вы передаете не саму переменную, а строку с ее именем. Обратите внимание, что если в структуре нет переменной с заданным именем, то аксессор вернет undefined в качестве значения.

-

Чтобы задать переменную в структуре, нужно сделать следующее

-

struct[$ "my_score"] = 100;

-

Как и в случае с получением значения, вы указываете имя переменной для установки в виде строки, и она будет установлена в заданное значение. Если используемое имя переменной не существует в структуре, то она будет создана и установлена в заданное значение.

-

-
-

-

Важной особенностью аксессоров является то, что их можно объединять в цепочки. Это означает, что если у вас есть несколько вложенных структур данных и/или массивов, больше нет необходимости использовать множество функций для получения доступа к значению, которое находится глубоко во вложенной структуре. Например, у вас есть массив, и каждый элемент в массиве представляет собой список DS, например, так:

-

array = array_create(3);
- for (var i = 0; i < 3; ++i)
- {
-     array[i] = ds_list_create();
-     switch(i)
-     {
-         case 0:
-             with (obj_Wall) ds_list_add(array[i], id);
-         break;
-
-         case 1:
-             with (obj_Door) ds_list_add(array[i], id);
-         break;
-
-         case 2:
-             with (obj_Chest) ds_list_add(array[i], id);
-         break;
-     }
- } -

-

В приведенном выше коде мы создали массив из 3 элементов и назначили каждому из них список DS, а затем заполнили различные списки идентификаторами экземпляров различных объектов в игре. Теперь, чтобы получить доступ к ID в одном из списков, мы можем сделать следующее:

-

var _list = array[0];
- var _id = ds_list_find_value(_list, 0);

-

Однако вы можете сделать то же самое, используя цепочку аксессоров, гораздо более чистым способом, который использует меньше кода:

-

var _id = array[0][| 0];

-

Таким образом можно объединить в цепочку несколько аксессоров, причем они могут быть разных типов, чтобы получить доступ к информации, хранящейся в каждой части вложенной структуры. Вот еще несколько примеров:

-

// Access a grid that has been added to a list that is part of a map:
- var _a = data[? "lists"][| 0][# 0, 0];
-
- // Access an array nested in a list from a script and modify it:
- data[| 0][10] = 100;
-
- // Access a map nested in a grid nested in a list nested in an array:
- data[0][| 10][# 3, 4][? "key"] = "hello world"; -

-

Использование цепочек аксессоров для вещей не только означает, что вы сможете писать более компактный код, но и позволит вам использовать итерацию (например, с помощью for цикл) и другие техники для доступа к данным более чистым и интуитивно понятным способом.

-

Стоит отметить, что при использовании аксессоров таким образом всегда следует использовать аксессор @ для массивов, так как в противном случае вы будете добавлять дополнительные накладные расходы на любые выполняемые действия. Как упоминалось выше, по умолчанию массивы передаются в функции по ссылке и при изменении используют поведение "копирование при записи". Однако если массив является частью цепочки, то предыдущий элемент в цепочке будет обновлен скопированным массивом, а "оригинал" будет удален. Например, если сделать примерно следующее:

-

// In an object event
- data[| 0][0] = 100;
-
- // In a function
- data[| 0][0] = 200; -

-

достигает тех же результатов, что и при выполнении этого действия:

-

// In an object event
- data[| 0][0] = 100;
-
- // In a function
- data[| 0][@ 0] = 200; -

-

Однако второй пример лучше, поскольку он работает без лишних затрат на копирование всего массива.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Addressing_Variables_In_Other_Instances.htm b/Manual/contents/GameMaker_Language/GML_Overview/Addressing_Variables_In_Other_Instances.htm index b498ddd22..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Addressing_Variables_In_Other_Instances.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Addressing_Variables_In_Other_Instances.htm @@ -1,96 +0,0 @@ - - - - - - Обращение к переменным в других случаях - - - - - - - - - - -

Обращение к переменным в других случаях

-

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

-

Один из наиболее распространенных методов доступа к переменной или ее изменения в другом экземпляре заключается в использовании имени объекта в качестве идентификатора, а затем с помощью точки "." указать программе GameMaker, что переменная, на которую делается ссылка, должна быть назначена или изменена в данном конкретном экземпляре объекта. Это известно как "точечная нотация", и ее синтаксис выглядит следующим образом:

-

<object_id>.<variable> = <value>; 

-

На практике это будет выглядеть следующим образом:

-

obj_ball.speed = 0;

-

С помощью приведенного выше кода вы устанавливаете скорость экземпляра "obj_ball". Однако если у вас в комнате более одного экземпляра данного объекта, то этот код будет применяться ко всем им одинаково - если только вы не используете HTML5, в этом случае он будет влиять только на один, но у вас нет возможности узнать, на какой именно - поэтому, если вам нужно получить доступ ко всем экземплярам объекта, вы должны использовать with()так как он на 100% совместим с кроссплатформенным форматом. В общем, этот формат следует использовать только тогда, когда у вас есть единственный экземпляр объекта в комнате, или (как вы увидите в следующей части) когда у вас есть определенный ID экземпляра.

-

Вы также можете получить доступ к одному экземпляру объекта, если в комнате имеется несколько экземпляров, используя уникальное имя экземпляра, чтобы сообщить GameMaker, к какому именно экземпляру мы хотим обратиться. Константа имени экземпляра - это уникальная идентификационная константа, которая присваивается каждому экземпляру, добавленному в комнату в вашей игре. Вы можете найти эту константу, дважды щелкнув на экземпляре в редакторе комнат:

-

Обратите внимание, что это имя можно отредактировать и дать ему более описательное название - хотя оно должно быть уникальным для всей игры - и использовать его в качестве левой части точки:

-

inst_4DB70D2.speed = 0;

-

Однако наиболее распространенным и практичным методом является использование переменной слева от точки, при условии, что данная переменная хранит действительный идентификатор экземпляра. Следующие примеры иллюстрируют это.

-

// Example 1
- var _inst = instance_position(mouse_x, mouse_y, all);
- if (instance_exists(_inst))
- {
-     _inst.speed = 0;
- }
-
- // Example 2
- var _inst = instance_create_layer(mouse_x, mouse_y, "Enemies", obj_E_Parent);
- _inst.direction = point_direction(_inst.x, _inst.y, x, y);
- _inst.target = id; -

-

В приведенном выше коде для примера 1 имеется instance_exists() в блоке кода. Это связано с тем, что использование метода point для доступа или изменения значения другого экземпляра приведет к ошибке и аварийному завершению игры, если экземпляр не существует, а в данном примере есть вероятность, что так и есть. Однако в примерах 2 и 3 проверка не нужна, поскольку мы знаем, что экземпляр существует, так как в примере 2 мы его создали, а в примере 3 - это другой экземпляр в событии столкновения. Однако, если существует вероятность того, что экземпляр может быть уничтожен, деактивирован или иным образом удален из комнаты при использовании этого метода, всегда следует предварительно проверить его с помощью функции instance_exists() или функции instance_number() функция.

-

Обратите внимание, что вы не можете использовать специальное ключевое слово "all" с этим методом, чтобы нацелить все экземпляры (например, all.val = 10 даст ошибку), но вы можете использовать ключевые слова "other" и "self" без проблем. Например, использование other в событии столкновения:

-

// Example 3 other.hp -= 10;
- if (other.hp <= 0)
- {
-     other.sprite_index = spr_E_Dead;
- }

-

Также важно отметить, что нельзя использовать любую функцию саму по себе в качестве левой части присваивания. Например, следующий код приведет к ошибке:

-

instance_nearest(x, y, obj).speed = 0;

-

Возвращаемое значение для выражения в этом примере кода является целым числом (уникальное значение ID для ближайшего экземпляра), поэтому оно должно быть заключено в скобки (), чтобы использоваться таким образом и правильно обращаться к требуемому экземпляру. Приведенный выше код будет правильно записать как:

-

(instance_nearest(x, y, obj)).speed = 0;
-
- //or
-
- var _inst = instance_nearest(x, y, obj);
- _inst.speed = 0; -

-

Все эти способы чтения, изменения и установки переменных в других экземплярах являются вполне допустимыми и работают потому, что точка на самом деле является оператором. Он принимает значение в качестве левого операнда, переменную в качестве правого операнда и возвращает адрес этой конкретной переменной в указанном объекте или экземпляре. Все имена объектов, константы, идентификаторы и т.д... просто представляют значения, и с ними можно работать как с любыми другими значениями.

-

Другой способ ссылаться на переменные в другом экземпляре - использовать функцию GameMaker Language with() , которая подробно рассматривается здесь:

-

// This will affect all instances of the object "obj_Enemy"
- with (obj_Enemy)
- {
-     target = other.parent;
- }
-
- // This will affect one instance of the object "obj_Enemy"
- var _enemy = instance_nearest(x, y, obj_Enemy);
- if (instance_exists(_enemy))
- {
-     with (_enemy)
-     {
-         target.x = mouse_x;
-         target.y = mouse_y;
-     }
- } -

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Arrays.htm b/Manual/contents/GameMaker_Language/GML_Overview/Arrays.htm index af30d21bb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Arrays.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Arrays.htm @@ -1,243 +0,0 @@ - - - - - - Массивы - - - - - - - - - - -

Массивы

-

Массивы могут быть чрезвычайно полезны и являются неотъемлемой частью создания игр. По сути, это тип переменной, которая может хранить несколько значений в виде "списка" - рассмотрим следующий код:

-

numbers = [ 0, 1, 2, 3, 4, 5 ];
-
- fruits = [ "Apples", "Oranges", "Mangoes" ]; -

-

Используя синтаксис [item, item, item], мы создаем массив, который хранится в переменной. К элементам, хранящимся в массиве, в дальнейшем можно обращаться через эту переменную, используя целое число, начиная с 0, которое помещается в скобки []:

-

first_fruit = fruits[ 0 ];
- second_fruit = fruits[ 1 ];
- // ...and so on.

-

-

Одномерные массивы

-
-

Прежде чем двигаться дальше, давайте уточним, что такое массив и как он устроен. Массив - это просто тип данных, который присваивается переменной, и он может содержать не только одно, но и несколько значений. На рисунке ниже показана схема базового массива:

-

-

Это называется 1D (одномерный) массив, и, как вы видите, массив хранится в переменной "a" и содержит несколько значений. Чтобы получить доступ к массиву, нужно сделать примерно следующее:

-

var _val = a[0];
- show_debug_message(_val);

-

Приведенный выше код получает значение из позиции 0 массива "a", затем выводит его на консоль, которая, исходя из содержимого массива, показанного на рисунке выше, выведет 125. Если бы вы сделали следующее:

-

var _val = a[3];
- show_debug_message(_val);

-

На выходе будет показано "Привет!".

-

Как вы видите, вы задаете массиву имя переменной, а затем значение в квадратных скобках [], где значение - это позиция в массиве, из которой нужно получить данные. По сути, массив - это контейнер с определенным количеством слотов для хранения значений, и каждая позиция в контейнере имеет определенный номер для идентификации, который мы и поместили в []. Стоит отметить, что содержимое массива всегда начинается с 0 и никогда неможет быть отрицательным!

-

Создание массивов

-

Мы показали, как проверить массив на наличие данных, но как создать массив для начала? Сначала его нужно инициализировать, прежде чем мы сможем его использовать, иначе GameMaker выдаст нам ошибку. Инициализация массива означает, что мы присваиваем каждому слоту массива начальное значение, чтобы подготовить его к использованию в других местах кода проекта. Это важно помнить, так как это означает, что перед использованием массивов необходимо провести определенное планирование, но инициализировать массив достаточно просто, используя цикл повтора, как показано ниже:

-

var i = 9;

- repeat(10)
- {
-     array[i] = 0;
-     i -= 1;
- }

-

Этот простой код инициализирует массив из десяти слотов (от 0 до 9) для хранения 0, т.е. каждый слот в массиве содержит значение 0. Вы заметите, что массив был инициализирован в обратном порядке, причем последнее значение было определено первым. Это не является строго необходимым, но это оптимальный способ, так как он резервирует место в памяти, которое точно соответствует размеру массива, в то время как если вы инициализируете массив от 0 вверх, память должна быть выделена заново для каждого дополнительного значения (таким образом, для массива с десятью слотами инициализация в цикле изменит распределение памяти десять раз). Разница в скорости незначительна для небольших массивов, но большие массивы должны быть максимально оптимизированы таким образом.

-

ПРИМЕЧАНИЕ: Экспорт HTML5 является исключением из вышеуказанного правила, и при нацеливании на него следует инициализировать массивы в последовательном порядке от 0 вверх.

-

Вы также можете использовать функцию GML array_create() для инициализации массива с фиксированным размером, и вы даже можете создавать "пустые" массивы без значений, например:

-

my_array = [];

-

Это сообщает GameMaker, что переменная "my_array" является массивом, и вы можете добавлять в нее значения в любое время в будущем. Однако если вы попытаетесь получить доступ к значению в пустом массиве, то получите ошибку.

-

Если вы уже знаете, какие элементы вы хотите поместить в массив, вы можете добавить значения, разделенные запятыми, между скобками при объявлении массива:

-

my_array = ["Steve", 36, "ST-3V3 - Steve Street"];

-

Границы массива

-

Вы всегда должны следить за тем, чтобы обращаться только к действительным позициям массива, так как попытка получить доступ к значению вне массива также приведет к ошибке. Например, это приведет к аварийному завершению проекта при запуске:

-

my_array = array_create(5, 0);
- var _val = my_array[6];

-

Массив был инициализирован только с 5 позициями, но мы пытались получить позицию 7 - поскольку массивы нумеруются от 0, array[6] является позицией 7 - поэтому игра выдает ошибку и терпит крах.

-

Использование массивов

-

Как же практически использовать массив? Точно так же, как мы используем обычную переменную, как показано в следующих примерах:

-

// Add two array values together
- total = array[0] + array[5];
-
- // Check an array value
- if (array[9] == 10)
- {
-     // Do something
- }
-
- // Draw an array value
- draw_text(32, 32, array[3]); -

-

Поскольку массивы нумеруются последовательно, это означает, что вы можете просмотреть их в цикле, чтобы выполнить дополнительные действия, точно так же, как мы это сделали для инициализации:

-

var total = 0;
-
- for (var i = 0; i < 10; ++i)
- {
-     _total += array[i];
-     draw_text(32, 32 + (i * 32), array[i]);
- }
-
- draw_text(32, 32 + (i * 32), _total); -

-

Приведенный выше код сложит все значения в нашем массиве, отрисует каждое из них и в конце выведет общее значение.

-

Удаление массивов

-

Последнее, что следует упомянуть о массивах, это то, что вы можете удалить массив, просто "переназначив" переменную, определяющую его, на одно значение. Это освободит память, связанную со всеми позициями и значениями для этого массива. Например:

-

// Create an array
for (var i = 9; i > -1; --i)
- {
-     a[i] = i;
- }
-
- // Delete the array
- a = undefined; -

-

Если массив имеет несколько измерений (см. ниже), все они также будут очищены. Обратите внимание, что при создании массивов в экземплярах их не нужно очищать при удалении экземпляра из игры, поскольку они будут автоматически удалены сборщиком мусора при уничтожении или завершении комнаты. Однако если какие-либо позиции массива содержат ссылки на динамические активы, такие как системы частиц, буферы или структуры данных, то их необходимо уничтожить перед удалением массива, уничтожением экземпляра или завершением комнаты.

-

-
-

Многомерные массивы

-
-

Мы знаем, что такое одномерный массив, но в GameMaker вы можете иметь массивы с несколькими измерениями, которые, по сути, структурированы как массив внутри массива внутри массива... Например, следующий массив является двумерным (двухмерным):

-

array[0][0] = 5;

-

Это, по сути, говорит GameMaker, что массив на самом деле состоит из различных одномерных массивов. Вот расширенный пример:

-

array[0][0] = 0;
- array[0][1] = 1;
- array[0][2] = 2;
-
- array[1][0] = 3;
- array[1][1] = 4;
- array[1][2] = 5; -

-

В приведенном выше коде array[0] содержит другой массив, как и array[1].

-

Многомерный массив должен быть инициализирован перед использованием, как и одиночный одномерный массив, и может содержать вещественные числа, строки и любые другие типы данных, как и любая переменная, что делает их идеальными кандидатами для любой игры, в которой необходимо хранить большие объемы данных в легкодоступном виде (помните, что вы можете легко циклически просматривать массив).

-

Вы также можете инициализировать многомерный массив в одном операторе путем вложения одномерных массивов:

-

two_dimensional_array = 
- [
-     ["Apple", 10, 2],
-     ["Orange", 5, 2],
-     ["Mango", 15, 4],
-     // ...and so on.
- ]

-

Многомерные массивы также не ограничиваются только двумя измерениями, и вы можете иметь 3, 4 или более измерений массива, как это требуется в вашем коде, просто добавив [n] дополнительные аргументы, например:

-

array[0][0][0] = 1;     // A three dimensional array
- array[0][0][0][0] = 1;  // A four dimensional array
- // etc...

-

Следует также отметить, что длина каждого измерения в массиве может быть разной, поэтому вы можете иметь начальное измерение массива длиной 3, но второй элемент измерения может быть разной длины для каждого слота в первом измерении; например:

-

array[2][2] = "3";
- array[2][1] = "2";
- array[2][0] = "1";
-
- array[1][3] = "four";
- array[1][2] = "three";
- array[1][1] = "two";
- array[1][0] = "one";
-
- array[0][1] = 2;
- array[0][0] = 1; -

-

В приведенном выше коде array[0] имеет 2 слота, array[1] - 4 слота и array[2] - 3 слота.

-

Расширенный пример

-

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

-

Сначала нам следует инициализировать массив, который мы будем использовать в событии Create нашего объекта "controller" (обратите внимание на использование комментариев, чтобы напомнить вам, что делает каждый элемент массива):

-

enemy[3][2] = 448;       //y position
- enemy[3][1] = 32;        //x position
- enemy[3][0] = obj_Slime; //Object
- enemy[2][2] = 448;
- enemy[2][1] = 608;
- enemy[2][0] = obj_Skeleton;
- enemy[1][2] = 32;
- enemy[1][1] = 608;
- enemy[1][0] = obj_Knight;
- enemy[0][2] = 32;
- enemy[0][1] = 32;
- enemy[0][0] = obj_Ogre;

-

Теперь у нас есть объекты для порождения экземпляров и соответствующие им координаты порождения x и y в комнате, сохраненные в нашем массиве. Теперь это можно использовать следующим образом в другом событии объекта контроллера (например, сигнал тревоги или событие нажатия клавиши):

-

//get a random number from 0 to 3, inclusive
- var i = irandom(3);
-
- //Use the array to create the object
- instance_create_layer(enemy[i][1], enemy[i][2], "Enemy_Layer", enemy[i][0]); -

-

Этот короткий код теперь будет порождать случайного врага в игровой комнате, и он использует гораздо меньше кода, чем структура "if / then / else" или даже "switch", а поскольку массив инициализируется в событии create, то редактировать и изменять любые из этих значений гораздо проще, поскольку они не закодированы в остальном коде проекта.

-
-

-

Массивы как аргументы функций

-

Вы можете передавать массивы в функции сценария и переменные метода в качестве аргументов и изменять эти массивы в любом месте внутри функции. При этом будут изменены и исходные массивы.

-

Например, эта функция просто изменяет первые три элемента переданного в нее массива:

-

modify_array = function (array)
- {
-     array[0] = 2;
-     array[1] = 4;
-     array[2] = 6;
- }

-

Теперь вы можете создать массив и передать его в эту функцию, которая изменит массив:

-

my_array = [100, 4, 214];
-
- modify_array(my_array);
-
- show_debug_message(my_array); // Prints [2, 4, 6]; -

-

В предыдущих версиях GameMaker это было не так, поскольку при изменении массива внутри функции создавалась копия. При желании это устаревшее поведение можно включить: для получения дополнительной информации читайте раздел "Копирование при записи" ниже.

-

Копирование на запись

-

Поведение "Копировать при записи" устарело и используется только в том случае, если в общих параметрах игры включена опция "Включить поведение "Копировать при записи" для массивов". В этом разделе описывается поведение массивов при включении этой опции.

-

Как было описано в предыдущем разделе, массивы можно передавать в функции в качестве аргументов. Для этого нужно просто указать переменную массива (не нужно указывать каждую из отдельных позиций, а также скобки [] ), и весь массив будет передан в функцию по ссылке:

-

my_array = [1, 2, 4, 8, 16];
-
- do_something(my_array); -

-

Однако, когда функция Copy on Write включена, изменение любого значения массива внутри функции создает временную копию с вашими изменениями. Исходный массив не изменяется. Такое поведение называется Copy on Write.

-

Чтобы действительно изменить исходный массив, который был передан в функцию, вы должны либо вернуть его обратно, либо использовать аксессор @.

-

Например, вызванная выше функция, do_something(), может делать что-то простое вроде этого:

-

do_something = function(array)
- {
-     array[1] = 200;
- }

-

Теперь вы ожидаете, что my_array будет содержать значения 1, 200, 4 и т.д., что обычно правильно - но когда включена функция Copy on Write, исходный массив остается незатронутым.

-

Чтобы обойти эту проблему, можно сделать так, чтобы функция возвращала измененную копию массива, а затем применяла ее обратно к исходной переменной:

-

my_array = [1, 2, 4, 8, 16];
-
- my_array = do_something(my_array); -

-

Сама функция будет возвращать измененный массив обратно:

-

do_something = function(array)
- {
-     array[1] = 200;
-
-     return array;
- } -

-

ПРИМЕЧАНИЕ Приведенный выше код не нужен, если вы не изменяете значения массива, а только ссылаетесь на них. При ссылке на массив он не копируется и разбирается быстрее.

-

Второе решение - использовать аксессор @ для изменения значений массива напрямую, что экономит затраты процессора на создание временной копии. Это означает, что вам не нужно возвращать массив из функции и вы можете редактировать его напрямую:

-

do_something = function(array)
- {
-     array[@ 1] = 200;
- }

-

Использование этого аксессора обходит поведение Copy on Write и напрямую изменяет массив, на который ссылается. Это можно использовать для выборочного отключения Copy on Write для определенных операторов, сохраняя опцию включенной.

-

Опять же, все это не нужно, если функция Copy on Write отключена (что является стандартным и рекомендуемым вариантом).

-

Более подробную информацию об аксессорах и их работе, а также пример для массивов можно найти на следующей странице:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Basic_Code_Structure.htm b/Manual/contents/GameMaker_Language/GML_Overview/Basic_Code_Structure.htm index 025b8fd1e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Basic_Code_Structure.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Basic_Code_Structure.htm @@ -1,64 +0,0 @@ - - - - - - Основная структура кода - - - - - - - - - - -

Основная структура кода

-

Код записывается блоками, и типичный блок кода состоит из набора инструкций, называемыхоператорами, которые затем интерпретируются GameMaker и используются для того, чтобы что-то произошло в вашей игре. Это "что-то" может быть простым, как сложение 2 и 2 для получения 4, или сложным, как заставить врага убежать, когда его здоровье становится ниже определенного значения. Фактическая структура программы может сильно варьироваться в зависимости от функций, которые она использует, но в общих чертах она выглядит следующим образом:

-

<statement>;
- <statement>;
- ...

-

Утверждения должны разделяться символом ';' для предотвращения ошибок при объявлении переменных и поддержания чистоты и порядка в коде. Они могут состоять из объявлений переменных, выраженийи вызовов определенных функций. Вы также можете "сгруппировать" утверждения в блок с помощью фигурных скобок {}, чтобы они шли вместе, как в следующем условном примере:

-

if (<conditional>)
- {
-     <statement>;
-     <statement>;
-     ...
- }

-

ПРИМЕЧАНИЕ GameMaker Language также принимает begin и end вместо фигурных скобок {}, хотя это, как правило, не самый распространенный способ:

-

if (<conditional>)
- begin
-     <statement>;
-     <statement>;
-     ...
- end

-

Вот более наглядное представление того, как может выглядеть блок кода, на этот раз созданный как сценарий в редакторе сценариев GameMaker:

-

Program Example

-

Существует несколько различных типов операторов, выражений, условий и функций, все они подробно рассматриваются в последующих разделах руководства.

-

ПРИМЕЧАНИЕ Если вы новичок в программировании, то перед продолжением ознакомьтесь с кратким руководством по началу работы.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Commenting_Code.htm b/Manual/contents/GameMaker_Language/GML_Overview/Commenting_Code.htm index e18f5954c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Commenting_Code.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Commenting_Code.htm @@ -1,71 +0,0 @@ - - - - - - Код комментирования - - - - - - - - - - -

Код комментирования

-

При совместной работе с другими людьми, при работе с большим проектом или даже просто для собственного ознакомления и отладки очень важно оставлять комментарии в коде событий и скриптах. В GameMaker есть различные механизмы, позволяющие оставлять заметки и комментарии к участкам кода и даже целым блокам кода, которые можно увидеть в списке событий объекта, который вы в данный момент редактируете. Таким образом, вы можете оставлять заметки для себя и своих коллег, объяснять особенно сложный кусок кода или даже просто оставлять напоминания о том, что что-то делает или что вы хотите, чтобы что-то делалось в будущем.

-

Чтобы оставить простой однострочный комментарий, первое, что вы можете сделать, это использовать // перед текстом. Например:

-

//initialize variables
- sr = 10;
- hp = 100;

-

Вы также можете оставлять многострочные комментарии, чтобы отдать должное, опустить целый раздел кода для отладки или даже оставить заметки о том, как вы хотите изменить код в будущем. Для этого вы можете использовать /* ... */ например:

-

/*
- Setup GIF Variables to initial values (these can be edited so you don't need to use the setter functions all the time if you are always using the same values)
-
- IMPORTANT! Please see the individual "set" scripts for more extensive information about each of the different variables.
- */
-
- frame_num = 30;
- frame_steps = 5;
- frame_width = 256;
- frame_height = 256;
- frame_quality = gifcam_quality_high; -

-

Помимо комментариев вы также можете использовать специальные теги #region, чтобы отметить участок кода для сворачивания кода, и каждый участок может содержать комментарий. Это работает следующим образом: вы добавляете тег #region - вместе с любым текстом комментария - в верхнюю часть раздела кода, а затем добавляете соответствующий тег #endregion в нижнюю часть раздела, после чего вы можете "свернуть" код, то есть спрятать его, чтобы сократить количество строк кода, видимых в редакторе в любой момент времени:

-

Фактический код выглядит примерно так:

-

#region This is an example region
-
- width = sprite_get_width(sprite);
- height = sprite_get_height(sprite);
- xoff = sprite_get_xoffset(sprite);
- yoff = sprite_get_yoffset(sprite);
-
- #endregion Further comment here if required -

-

Наконец, стоит упомянуть, что при работе с событиями в редакторе объектов вы можете использовать специальный комментарий "description" в начале события, чтобы сказать, каково общее содержание события, и это будет показано в окне событий редактора объектов. Этот комментарий должен располагаться в самой первой строке редактора кода и оформляется следующим образом:

-

/// @description <This Is An Event Description>

-

Теперь это будет показано в окне событий, например:

-

Обратите внимание, что вы можете определить комментарий по умолчанию, который будет создаваться для всех событий, в настройках редактора объектов.

-

Наконец, если вы пишете скриптовые функции и хотите иметь некоторый контроль над тем, как они обрабатываются IDE (например, иметь автозаполнение или показывать параметры скрипта), то вам следует писать комментарии, используя нотацию JSDoc, как описано здесь.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Data_Types.htm b/Manual/contents/GameMaker_Language/GML_Overview/Data_Types.htm index 4247f43af..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Data_Types.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Data_Types.htm @@ -1,208 +0,0 @@ - - - - - - Типы данных - - - - - - - - - - -

Типы данных

-

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

-

Прежде чем продолжить, давайте вкратце объясним, что мы подразумеваем под "типами данных". Когда вы создаете переменную, она может использоваться для хранения информации, а когда вы вызываете функцию, она также может хранить возвращаемую информацию. Однако эта информация может иметь различные "вкусы" - например, это может быть вещественное число или строка. Эти различные типы используемых значений называются типами данных, и при использовании GameMaker Language они могут быть любыми из следующих:

-

-

Реальные цифры

-
-

Вещественные числа - это любое значение, которое не является ни строкой, ни одним из других возможных типов данных. Так, 124, 45639.566546456, 0, -45.5 и т.д... - все это примеры вещественных чисел. Все вещественные числа хранятся как 64-битные значения с плавающей точкой двойной точности (или целочисленные значения), и компилятор оптимизирует их, где это возможно (например, 0.0 будет оптимизировано до целочисленного значения 0).

-

При работе с любым значением, которое не является целым числом, могут возникать небольшие ошибки округления из-за особенностей математики с плавающей запятой. Более подробную информацию об этой и других функциях, связанных с числами, см: GML Reference - Number Functions.

-

ПРИМЕЧАНИЕ В цели HTML5 все действительные числа являются двойными.

-

Обратите внимание, что хотя все созданные переменные в GameMaker хранятся как числа с плавающей точкой двойной точности или целые числа, вы можете использовать другие форматы при работе с расширениями. Их можно передать в GameMaker из расширения и затем проверить с помощью соответствующей функции is_*(), список которых можно найти здесь.

-

-
-

Булево

-
-

Булево число - это просто значение, которое может быть либо true, либо false. Обратите внимание, что в настоящее время GameMaker интерпретирует вещественное число, равное или меньше 0,5, как значение false, а любое вещественное число больше 0,5 - как true. - Однако это не означает, что вы должны проверять 1 и 0 (или любое другое вещественное число) на истинность и ложность, поскольку вам также предоставляются константы true и false, которые всегда должны использоваться в вашем коде, чтобы - предотвратить любые проблемы в случае добавления реальных булевых типов данных в будущем обновлении.

-

Вы можете преобразовать любое вещественное число в неявное булево значение с помощью следующей функции:

- -

-
-

Струны

-
-

-

-
-

Массивы

-
-

-

-
-

Структуры

-
-

-

-
-

Переменные метода

-
-

-

-
-

int64

-
-

int64" - это 64-битное целое число, которое может быть создано с помощью int64() (путем передачи не 64-битного вещественного числа) или при чтении значения buffer_u64 из буфера.

-

Это может быть использовано там, где строго требуется 64-битное целое число, или когда вы хотите работать со сдвигом битов и вам нужны эти 64-битные позиции.

-

Любые побитовые операции, даже при выполнении над не 64-битными значениями, всегда будут возвращать 64-битное целое число.

-

Деление на значения int64 также возвращает целые числа (например: int64(5) / int64(2) = 2).

-
-

Шестнадцатеричные значения

-
-

GameMaker принимает шестнадцатеричные литералы в качестве законных значений. Шестнадцатеричные значения особенно часто встречаются при работе с цветами, но могут использоваться везде, где требуется положительное целочисленное значение. Шестнадцатеричные значения могут быть отформатированы следующими двумя способами, где abcd - это фактическое шестнадцатеричное значение:

-

$abcd
- 0xabcd -

-

Например, следующие десятичные значения могут быть выражены в шестнадцатеричном виде, как показано на рисунке:

-

11406 -> $2c8e, 0x2c8e
- 16777215 -> $ffffff, 0xffffff -

-
-

Шестнадцатеричное значение также может начинаться с хэш/фунтового символа(#), однако при такой записи его значение не будет равно аналогичному шестнадцатеричному значению, записанному с использованием ранее показанного формата($ или 0x). Это связано со способом интерпретации цветов в GML, который потребовал изменения формата хэш/фунт шестнадцатеричных значений, чтобы цвета CSS можно было записывать в формате #RRGGBB. Для получения дополнительной информации прочтите статью Цвета в шестнадцатеричном формате.

-

Например, следующие два не равны:

-

$2c8edd != #2c8edd

-

Чтобы они ссылались на одно и то же десятичное значение, нужно поменять местами два первых и два последних символа:

-

$2c8edd == #dd8e2c

-

-
-

Указатель

-
-

Указатель - это тип данных, который "указывает" на область памяти. Вы не можете выполнять операции с указателем, и он используется только для некоторых очень специфических функций, таких как получение адреса текстуры или буфера из памяти для другой функции. Примеры функций, которые возвращают указатель, вы можете посмотреть здесь buffer_get_address() или sprite_get_texture().

-

Существует также функция для проверки того, является ли значение указателем (см. раздел "Проверка типов данных", ниже), и функция для преобразования значения в указатель:

- -

Вы также можете использовать (и получать обратно) следующие встроенные константы при использовании указателей:

- - - - - - - - - - - - - - - -
ПостояннаяОписание
pointer_nullЭта константа указывает на то, что указатель не указывает ни на что значимое (то же самое, что NULL в C++ или null в C#). Это значение является ложным.
pointer_invalidЭта константа просто означает, что значение не является действительным указателем
-

-
-

Enum

-
-

Перечисление - это "перечислитель", и оно позволяет создать собственный ограниченный тип данных со списком постоянных значений. Перечисления подробно описаны на странице Константы.

-

-
-

Неопределенный

-
-

-


-


-
-

NaN

-
-

-

Обратите внимание, что поскольку NaN не является числом, его нельзя сравнивать с самим собой, поэтому сравнение типа NaN == NaN вернет false. То же самое касается сравнения массивов, например, такого:

-

show_debug_message(array_equals([NaN], [NaN]));
-
- // Output: 0 (false) -

-

-
-

Бесконечность

-
-

Константа infinity обозначает число, которое считается бесконечным, например, результат, который вы получите при делении любого значения с плавающей запятой на ноль, например: 1.0/0.

-

Обратите внимание, что константа infinity равна самой себе, поэтому infinity == infinity вернет true.

-
-

Любой

-
-

Тип данных "Any" можно встретить на многих страницах руководства, например, в аргументах или в качестве возвращаемого значения. Он указывает на то, что значение любого типа принимается или может быть возвращено.

-
-

-

Вы можете проверить тип данных любой переменной с помощью функций, перечисленных на следующей странице:

- -

Здесь вы также можете найти таблицы арифметических типов, которые показывают результаты различных операций с использованием смешанных типов данных переменных:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Evaluation_Order.htm b/Manual/contents/GameMaker_Language/GML_Overview/Evaluation_Order.htm index e3d2e5b4c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Evaluation_Order.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Evaluation_Order.htm @@ -1,49 +0,0 @@ - - - - - - Порядок оценки - - - - - - - - - - -

Порядок оценки

-

При программировании игры с использованием сайта GameMaker Language следует помнить, что аргументы вызова функций не гарантируют порядок оценки. Это означает, что порядок выполнения функций, размещенных в вашем коде, будет меняться от платформы к платформе, поэтому их следует кодировать в явном виде. Это связано с различиями в оптимизации между разными целевыми платформами, например, на целевой платформе Windows аргументы функции могут оцениваться справа налево, а на целевой платформе HTML5 - слева направо. Поэтому во избежание проблем лучше не вызывать несколько функций в аргументах одного вызова функции, так как вы можете заложить зависимость от порядка оценки.

-

Чтобы увидеть пример того, что это значит, рассмотрим следующий код, в котором есть функция сценария "buffer_get_info", которая вызывает несколько функций времени выполнения и использует их в качестве аргументов:

-

buffer_seek(buff, buffer_seek_start, 0);
- buffer_get_info(buffer_read(buff, buffer_s8), buffer_read(buff, buffer_s16),buffer_read(buff, buffer_s16));

-

Проблема заключается в том, что на некоторых платформах последний buffer_read() будет вызван первым, поэтому все аргументы скрипта будут неправильными, так как данные считываются из буфера в "обратном" порядке, как вы бы это восприняли. Это влияет на все последующие значения для функции buffer_read(), поэтому все аргументы, передаваемые этой функции скрипта, будут неверными!

-

Чтобы обойти это, следует явно вызывать функции в нужном порядке и хранить возвращаемые значения в переменных, например, так:

-

var val[0] = buffer_read(buff, buffer_s8);
- var val[1] = buffer_read(buff, buffer_s16);
- var val[2] = buffer_read(buff, buffer_s16);
- buffer_get_info(val[0], val[1], val[2]);

-

Хотя этот метод может показаться более многословным, он сохраняет ясность и позволяет избежать возможных проблем с порядком оценки.

-

Вы также должны быть осторожны при использовании выражений, поскольку порядок их вычисления будет меняться в зависимости от того, для какой цели вы компилируете. Поэтому, используя выражения в коде, убедитесь, что вы используете скобки (), чтобы правильно контролировать порядок операций. Это очень важно для обеспечения корректного поведения ваших игр на всех целевых платформах и очень важно для платформы HTML5. Более подробно это объясняется на странице, посвященной выражениям.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Expressions_And_Operators.htm b/Manual/contents/GameMaker_Language/GML_Overview/Expressions_And_Operators.htm index 71e940081..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Expressions_And_Operators.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Expressions_And_Operators.htm @@ -1,208 +0,0 @@ - - - - - - Выражения и операторы - - - - - - - - - - -

Выражения и операторы

-

Выражения

-

Выражение - это математическая фраза, которая может содержать обычные числа, переменные, строки или функции, а также один или несколько операторов (таких как сложение, вычитание, умножение и т.д...). Значения, используемые в выражении, могут быть вещественными числами (например, 3.4 * 6), шестнадцатеричными числами, начинающимися со знака $ (например, $00FFAA | $88FFAA), строками между двойными кавычками (например, "hello" + "world") или более сложными выражениями, использующими несколько операторов и значений.

-

Операторы

-

Для использования в выражениях предусмотрены следующие операторы:

-

Присвоение (=)

-
-

= используется для присвоения значения переменной. Обратите внимание, что этот оператор также может использоваться для сравнения переменных в GameMaker, и вы можете видеть это в примерах и кодах других пользователей. Однако это наследие старых версий GameMaker, и для сравнения следует использовать операторы ==, а для присвоения - =, как показано в этих примерах:

-

a = 12;
- speed = 5;
- val = (old_val + 5);

-

-
-

Комбинирование (&&, ||, ^^)

-
-

&&, ||, ^^ (and, or и xor ) используются для объединения булевых значений, чтобы получить либо true, либо false. Если любой из следующих примеров разрешается в true, то код будет запущен:

-

if (a == b && c == d) { do something... }  // and
- if (a == b || c == d) { do something... }  // or
- if (a == b ^^ c == d) { do something... }  // xor

-

-
-

Nullish (??, ??=)

-
-

ПРИМЕЧАНИЕ "Nullish" означает просто значение, равное undefined или pointer_null.

-

?? - это оператор коалесценции nullish, который возвращает заданное выражение, если заданное значение не определено или указатель_null. Этот оператор имеет следующий синтаксис:

-

(input ?? null_output)

-

Если входное значение не определено или указатель_null, выражение вернет значение null_output; однако во всех остальных случаях оно просто вернет входное значение. Это может быть использовано для определения значения "по умолчанию" для переменной в случае, если сама переменная не имеет допустимого значения.

-

Рассмотрим следующий пример:

-

имя пользователя = data.username ?? "INVALID USERNAME";

-

Здесь переменная username получит значение, хранящееся в data.username, однако если data.username окажется неопределенным или указателем_null, то вместо него переменная получит строку "INVALID USERNAME". Этот пример гарантирует, что любые вызовы функций, использующих переменную username, не приведут к ошибке из-за того, что ей было присвоено значение nullish, и что пользователь будет знать, когда его имя пользователя не было возвращено.

-

ПРИМЕЧАНИЕ Выражение в правой части оператора коалесценции nullish выполняется только тогда, когда входное значение равно nullish, что означает, что любые вызовы функций, включенные в выражение RHS, будут выполняться только в том случае, если входное значение равно nullish.

-
-

??= похож на описанный выше оператор nullish coalescing, но используется специально для присвоения переменных. Этот оператор имеет следующий синтаксис:

-

variable ??= null_value

-

Если переменная не определена или указатель_null, ей будет присвоено значение null_value; в противном случае переменная останется неизменной. Это можно использовать для присвоения пользовательского значения "по умолчанию" переменной, когда она содержит нулевое значение.

-

-
-

Сравнение (<, <=, ==, !=, >, >=)

-
-

<, <=, ==, !=, >, >= являются сравнениями и могут давать только результат true или false (где true можно также интерпретировать как 1, а false как 0). Примеры использования:

-

if (a < b) {do something...}
- if (a != b) {do something...}

-

-
-

Побитовые (|, &, ^, <<, >>)

-
-

|, &, ^, <<, >> используются для выполнения побитовых операций, где | = побитовое или, & = побитовое и, ^ = побитовое xor, << = сдвиг влево, >> = сдвиг вправо. Примеры использования:

-

x = (x & $ffffffe0) + 32;
- if (y ^ $1f) > 0 {do something...};

-

Дополнительную информацию о том, как использовать побитовые операторы и что они делают, можно найти в разделе: Побитовые операторы.

-

-
-

Арифметические (+, -, *, /)

-
-

+, -, *, / - это сложение, вычитание, умножение и деление соответственно. Примеры использования:

-

c = a * b;
- str = a + "world";

-

ПРИМЕЧАНИЕ Числа с плавающей запятой не останавливаются на делении на ноль, так как в качестве ответа они получат бесконечность. Если A и B - целые числа (либо int32, либо int64), то деление будет выполнено как целое число (и деление на 0 будет проверено и выдаст ошибку. В противном случае оно будет выполнено как деление с плавающей запятой (без проверки деления на 0).

-

-
-

Увеличение/уменьшение (++, --)

-
-

++, -- используются для прибавления или вычитания единицы(1) из значения. Стоит отметить, что размещение этого символа до или после значения, к которому нужно прибавить или из которого нужно вычесть, приводит к несколько иным результатам. Например:

-
    -
  • ++a увеличит переменную и вернет увеличенное значение.
  • -
  • a++ увеличит переменную, но вернет значение, которое было до ее увеличения.
  • -
-

Поэтому, если у вас есть что-то подобное:

-

var a = 1;
- show_debug_message(string(a++));
- show_debug_message(string(++a));

-

Отладочный вывод будет иметь значения 1 и 3. Вот несколько примеров использования:

-

for (var i = 0; i < 10; i++;)
- {
-     do something...
- }

-

if (hit == true)
- {
-     --score;
- }

-

ПРИМЕЧАНИЕ: На целевых платформах YoYo Compiler (отмеченных (YYC)) эти выражения оцениваются слева направо, в то время как на всех других целевых платформах они оцениваются справа налево, что означает, что это:

-

val = max(num, ++num, num++);

-

даст разные результаты в зависимости от платформы.

-

-
-

Деление и модуль (div, %, mod)

-
-

div, mod (% ) - это деление и модуляция, где div дает сумму, на которую можно разделить значение, получая только целочисленный коэффициент, а mod дает только остаток от деления. Обратите внимание, что div или mod можно использовать только с целыми значениями. Примеры использования:

-

secs = time mod 60;
- secs = time % 60;    // Identical to the above line
- time_str = string(time div 60);

-

-
-

Унарные (!, -, ~)

-
-

Предусмотрены следующие унарные операторы:

-
    -
  • !: булево "не", поэтому !true == false
  • -
  • -: отрицает следующее вещественное или целочисленное значение (не действует для строк или булевых чисел)
  • -
  • ~: отрицает следующее значение побитово
  • -
-

-
-

Группировка выражений

-

В качестве значений во всех выражениях можно использовать числа, переменные или функции, возвращающие значение, а подвыражения можно заключать в скобки. Все операторы работают для значений вещественных чисел, но сравнение также работает для строк, а оператор "+" можно использовать для объединения строк.

-

При выполнении нескольких операций в одном выражении очень важно использовать скобки () для разделения порядка операций, так как разные платформы могут выполнять их по-разному, если это не указано явно. Например, рассмотрим следующий код:

-

a = b == c || d;

-

Различные целевые компиляторы будут выполнять операции в разном порядке, поскольку они не показаны явно, что приведет к "странным" результатам, которые вы можете не ожидать, играя в свою игру. чтобы избежать этого, используйте () для разделения частей, например, так:

-

a = (b == c || d);   //better
- a = ((b == c) || d); //best

-

Группировка заявлений

-

При использовании различных операций и выражений в одном блоке кода их тоже следует разделять. Например, следующий код выглядит как правильный:

-

if my_var == your_var ++their_var;

-

Однако компилятор может интерпретировать это одним из двух способов:

-

if my_var == your_var++ then their_var;
-
- // or
-
- if my_var == your_var then ++their_var; -

-

Теперь, глядя на код, можно сказать, что один из них немного глуповат, но это потому, что мы знаем, чего хотим добиться и что должно произойти, а компилятор - нет. Он видит только две переменные с оператором ++ между ними, и ему приходится выбирать, к какой из них его применить. Поэтому всегда следует явно заключать в скобки выражения, операции и утверждения. Правильная версия приведенного выше кода должна быть следующей:

-

if (my_var == your_var)
- {
-     ++their_var;
- }

-

Это может показаться более многословным, но нет никакой двусмысленности в отношении выполняемых операций, и это будет компилироваться и вести себя последовательно на всех платформах. Также обратите внимание, что хотя в настоящее время вы можете строить цепочки выражений и утверждений без использования скобок, это унаследованная функция, и в будущем она может быть устаревшей и удалена из GML, поэтому использование скобок сейчас позволит "защитить" ваш код от будущего (и в любом случае является хорошей практикой).

-

Вот несколько последних примеров различных выражений:

-

{
-     x = 23 div 2;
-     colour = $FFAA00 + $00BB12;
-     str = "hello" + "world";
-     y += 5;
-     x *= y;
-     x = y << 2;
-     x = 23 * ((2 + 4) / sin(y));
-     b = (x < 5) && !((x == 2) || (x == 4));
- }

-

И последнее, что следует отметить, - это то, что для использования с определенными структурами данных и массивами существуют "короткие пути" выражения, называемые аксессорами. Они позволяют быстро и легко добавлять или заменять данные в этих форматах без использования каких-либо вызовов функций. Более подробную информацию можно найти на следующей странице

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Functions/Static_Variables.htm b/Manual/contents/GameMaker_Language/GML_Overview/Functions/Static_Variables.htm index 7846afea3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Functions/Static_Variables.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Functions/Static_Variables.htm @@ -1,101 +0,0 @@ - - - - - - Статические переменные - - - - - - - - - - -

Статические переменные

-

Интересной особенностью функций сценария и переменных методов является то, что они могут иметь статические переменные. Статическая переменная - это переменная, которая определяется при первом вызове функции и сохраняет свое значение в дальнейшем. Чтобы создать статическую переменную, необходимо определить ее с помощью ключевого слова static, как показано в этом простом примере:

-

counter = function()
- {
-     static num = 0;
-     return num++;
- }

-

В приведенном выше примере переменная num является статической переменной, поэтому при первом вызове функции она будет определена как 0, но при каждом последующем вызове функции инициализация переменной будет игнорироваться. Поэтому, если вы вызовете эту функцию следующим образом:

-

for (var i = 0; i < 10; ++i;)
- {
-     show_debug_message(counter());
- }

-

Выходные данные будут такими:

-

0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9

-

Если бы вы не использовали здесь ключевое слово static, то на выходе получился бы просто 0 для каждой итерации цикла, поскольку переменная num будет определяться как 0 при каждом вызове функции перед возвратом. Обратите внимание, что статическая переменная может быть изменена только внутри исходной функции, и возврат ее просто даст вам копию ее значения - по сути, общая статическая переменная может быть изменена только содержащей ее функцией.

-

Статическая переменная всегда инициализируется в верхней части функции, поэтому независимо от того, где вы определяете статическую переменную в функции, она всегда будет доступна для чтения и изменения на протяжении всей функции (даже если она используется до того, как была определена). См. следующий пример:

-

function add_health()
- {
-     my_health++;
-     show_debug_message(my_health);
-     static my_health = 1;
- }

-

Здесь статическая переменная "my_health" изменяется и выводится в вывод компилятора до инициализации. Хотя это выглядит неправильно, это совершенно нормально, потому что статические переменные инициализируются до выполнения кода функции. Обратите внимание, что если в функции несколько статических переменных, то при их инициализации сверху сохраняется порядок, в котором они были определены.

-

Вы также можете использовать ключевое слово static внутри функции для создания статической функции, что - как и в случае с переменными - просто означает, что функция будет определена только один раз, то есть, например, при первом вызове функции:

-

function(_x, _y) Vector2 constructor
- {
-     x = _x;
-     y = _y;
-
-     static Add = function( _other )
-     {
-         x += _other.x;
-         y += _other.y;
-     }
- } -

-

В приведенном выше примере функция-конструктор Vector2 может быть использована для создания структуры, и эта структура будет иметь несколько переменных, одной из которых является переменная метода Add. Поскольку эта переменная была определена как статическая, функция, которую она содержит, будет инициализирована только один раз при первом вызове функции Vector2, и все последующие структуры, созданные с помощью этого конструктора, будут ссылаться на функцию Add, которая была создана изначально, вместо того, чтобы создавать новую функцию для каждой структуры (более подробную информацию о структурах и ключевом слове constructor можно найти здесь).

-

При использовании наследования с конструкторами любые статические переменные в дочернем конструкторе будут инициализированы только после выполнения родительского конструктора, поэтому статические переменные дочернего конструктора не будут переопределять статические переменные родительского. Смотрите следующий пример:

-

function Parent() constructor
- {
-     show_debug_message(value);
-     static value = 10;
- }
-
- function Child() : Parent() constructor
- {
-     show_debug_message(value);
-     static value = 20;
- }
-
- var _child = new Child(); -

-

Вызов конструктора Child() выводит это в выходной журнал:

-

10
- 20

-

Первое значение - из родительского конструктора, а второе - из дочернего конструктора. Это показывает, что дочерняя статическая переменная value не была инициализирована до завершения работы родительского конструктора, и что в каждом конструкторе статическая переменная была инициализирована до вызова show_debug_message().

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/GML_Overview.htm b/Manual/contents/GameMaker_Language/GML_Overview/GML_Overview.htm index 2eecdcee3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/GML_Overview.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/GML_Overview.htm @@ -1,78 +0,0 @@ - - - - - - Обзор {GML_Code} - - - - - - - - - - -

Обзор GML Code

-

Этот раздел руководства содержит всю информацию, необходимую для понимания и использования GML Code. Функции выполнения на этом языке могут быть использованы для создания ваших игр и добавляются в объекты из программы Редактор объектовхотя он также может быть использован вместе с Визуальный GML. Ниже показано типичное изображение объекта с открытым редактором кода на событии:

-

Каждое событие имеет свою собственную вкладку в редакторе, и вы можете добавлять, редактировать или удалять код из них в любое время (для получения дополнительной информации о событиях см. События объекта). Сам код должен иметь базовую структуру и может содержать индексы ресурсов, переменные, функции, выражения, ключевые слова и т.д., о которых рассказывается в следующих разделах. Если вы новичок в программировании или переходите с Визуальный GML, рекомендуется начать со страницы Базовая структура кода а затем прочитать все остальные страницы этого раздела, проверяя код каждой из них в рамках GameMaker в самом GameMaker.

-

Вы можете использовать Feather для интеллектуального завершения кода и сообщения об ошибках в ваших сценариях GML Code.

-

 

-

Основы кода GML

- -

 

-

Переменные и условия

- -

 

-

Создание функций

- -

 

-

Важные типы данных

- -

 

-

Подробнее о GML Код

- -

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Instance_Keywords.htm b/Manual/contents/GameMaker_Language/GML_Overview/Instance_Keywords.htm index d223e8f68..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Instance_Keywords.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Instance_Keywords.htm @@ -1,240 +0,0 @@ - - - - - - Ключевые слова экземпляра - - - - - - - - - -

Ключевые слова экземпляра

-

Чтобы упростить некоторые вещи в GameMaker, вы можете использовать одно из нескольких ключевых слов instance в своем коде (будь то GML или GML Visual). Эти ключевые слова используются в основном для идентификации экземпляров - а в некоторых случаях и структур - в различных ситуациях, и каждое из них объясняется в тексте ниже.

-

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

-

self

-
- - - - - - - - - - - - - -
Ключевое словоОписаниезначение
selfЭкземпляр/структура, выполняющая текущий блок кода.   -1
-

self можно использовать для идентификации текущей структуры или экземпляра, который находится в области видимости в текущем блоке кода. Например:

-

var val = 100; -
- with (instance_create_layer(x, y, "Instances", obj_Fire)) -
- { -
- self.val = val; -
- }

-

В этом примере видно, что у нас есть локальная переменная val, и мы хотим, чтобы она установила переменную экземпляра с тем же именем во вновь созданном экземпляре объекта. Чтобы правильно определить переменную экземпляра и указать GameMaker установить ее в экземпляре, вызывающем блок кода, мы используем ключевое слово self. В большинстве случаев вместо self можно также использовать встроенную переменную экземпляра id, но self имеет определенные преимущества. Во-первых, компилятор быстрее определяет экземпляр (или структуру), используя self, а не id, так как значение id проходит через таблицу поиска экземпляра, а self - нет. Во-вторых, для тех, кто создает расширения, очень полезно обеспечить правильную привязку переменных, поскольку возможно, что проект, использующий расширение, может иметь переменную глобальной области видимости или что-то с тем же именем, что и переменная в расширении.

-

ПРИМЕЧАНИЕ: Ключевое слово self не является сокращением для фактического значения ID экземпляра или структуры и должно использоваться только в контексте, описанном выше. Если вам требуется значение ID для экземпляра, то необходимо использовать self.id, например:

-

var myID = id; -
- with (all) -
- { -
- if self.id == myID -
- { -
- // do something -
- } -
- }

-

Стоит также отметить, что self может также использоваться внутри структур - при очень специфических обстоятельствах - для ссылки на переменные-члены структуры.

-

-
-

other

-
- - - - - - - - - - - - - -
Ключевое словоОписаниезначение
otherДругой экземпляр, участвующий в событии столкновения, в функции with или в функции.   -2
-

Специальное ключевое слово other имеет несколько способов использования для ссылки на конкретный экземпляр (а в некоторых случаях и на структуру): оно может быть использовано в операторе with (объясняется здесь), в событии столкновения или в функции. В этом разделе мы объясним два последних случая использования.

-

Обратите внимание, что в событиях, отличных от события столкновения, вне любых вызовов функций и блоков with(), other просто возвращает struct для текущего экземпляра.

-

Событие столкновения

-

Событие столкновения может произойти только между двумя экземплярами. Вы можете иметь несколько столкновений между несколькими экземплярами, но все они решаются GameMaker по принципу "один на один", с экземпляром "себя", у которого произошло событие столкновения, и экземпляром "другого", который с ним столкнулся.

-

Представьте, что у вас есть экземпляр игрока, несколько экземпляров врагов и несколько экземпляров пуль, которыми враги могут стрелять в вас. Вы можете назначить каждому врагу один экземпляр пули, но с другой переменной урона, случайно назначаемой ему при создании, например:

-

var bullet; -
- bullet = instance_create_layer(x, y, "Bullets", obj_Bullet); -
- bullet.damage = 5 + irandom(5); -
- bullet.speed = 8; -
- bullet.direction = point_direction(x, y, obj_Player.x, obj_Player.y);

-

Вы можете видеть, как мы задаем его переменные, используя точечную нотацию, как описано в разделе " Обращение к переменным в других экземплярах". Это даст каждому экземпляру пули свое значение урона, но как игрок определит урон, который он должен получить при попадании в него пули?

-

Для этого игроку нужно будет создать событие столкновения с obj_Bullet, а внутри этого события использовать other для чтения переменных из экземпляра столкнувшейся пули:

-

hp -= other.damage; -
- if hp <= 0 instance_destroy();

-

Приведенный выше код вычитает из переменной "hp" игрока сумму, хранящуюся в переменной "damage" другого экземпляра, затем проверяет, меньше ли "hp" или равно 0. Если да, то уничтожает экземпляр игрока. Обратите внимание, что у другого экземпляра должна быть проверяемая переменная, иначе будет выдана ошибка.

-

ПРИМЕЧАНИЕ: Событие "Столкновение" - единственное событие, в котором ключевое слово other имеет особое значение. Во всех остальных событиях и сценариях поведение other определяется контекстом, в котором оно используется (например, блок with() , функция, объявление структуры и т.д.).

-

Вы можете присваивать значения переменным или даже создавать новые, используя other в событии столкновения, как показано ниже:

-

// add ten to the other instance "mana" variable -
- other.mana += 10; -
- // set the other instance variable "hit" to true, creating the variable if it doesn't already exist -
- other.hit = true;

-

Декларация структуры

-

При использовании внутри объявления struct, other относится к экземпляру, который инициализирует struct:

-

var _struct = -
- { -
- parent_instance : other -
- } -
-
- show_debug_message(_struct.parent_instance == self); -
- // This prints '1' (true) meaning that both sides refer to the same instance

-

Однако вам не нужно использовать other для чтения переменных из экземпляра, поскольку любые переменные, на которые вы ссылаетесь напрямую, будут прочитаны из области видимости этого экземпляра, как описано в этом разделе руководства. Это необходимо только в том случае, если вы хотите сохранить ссылку на struct этого экземпляра.

-

Метод экземпляра

-

Использование other внутри метода другого экземпляра method относится к экземпляру, который вызвал этот метод.

-

Например, допустим, на сайте Object2 есть метод, который ссылается на self и other. Затем этот метод вызывается в Object1. Поскольку метод был создан в Object2, он привязан к нему и всегда будет использовать экземпляр Object2 в качестве "себя", независимо от того, какой экземпляр его вызывает. В этом случае вызывающий экземпляр становится other.

-

// In Object2 -
- my_method = function() -
- { -
- show_debug_message(object_get_name(self.object_index)); -
- show_debug_message(object_get_name(other.object_index)); -
- } -
-
- // In Object1 -
- Object2.my_method();

-

Это приведет к тому, что экземпляр сначала выведет свое собственное имя объекта ("Object2"), а затем имя объекта вызывающего экземпляра ("Object1").

-

То же самое относится и к методу, привязанному к struct.

-

Функция конструктора

-

При использовании в функции конструктора other будет ссылаться на экземпляр, вызывающий эту функцию, однако это не рекомендуется для общего использования, поскольку любые внешние данные, которые конструктор должен использовать, должны быть переданы в качестве аргументов.

-

-
-

all

-
- - - - - - - - - - - - - -
Ключевое словоОписаниезначение
allВсе экземпляры, активные в данный момент в комнате.   -3
-

-

Это ключевое слово используется для указания GameMaker, что функция должна быть применена или проверена ко всем активным экземплярам в комнате (деактивированные экземпляры не будут проверяться или к ним не будет доступа). Вы не можете использовать all для доступа или установки переменных в других экземплярах с помощью метода point (см. здесь), но вы можете использовать его при вызове функции. with()например:

-

with (all) -
- { -
- speed = 0; -
- }

-

Приведенный выше код установит скорость всех экземпляров в комнате на 0. Вы также можете использовать all внутри функций, чтобы, например, нацелить или проверить все экземпляры в комнате:

-

// Check a point for any active instance in the room -
- inst = instance_position(mouse_x, mouse_y, all); -
-
- // Check all instances for a collision along a line -
- if collision_line(x, y, mouse_x, mouse_y, all, false, true) {} -
-
- // Add all instances in the room into a motion planning grid -
- mp_grid_add_instances(grid, all, false);

-

all является очень полезным ключевым словом и может использоваться во многих ситуациях в коде и действиях, часто сокращая объем кода, который необходимо написать для достижения желаемого эффекта.

-

-
-

noone

-
- - - - - - - - - - - - - -
Ключевое словоОписаниезначение
nooneНи одного экземпляра.   -4
-

Это может показаться странным, но много раз при программировании игр вы столкнетесь с необходимостью проверить, нет ли экземпляров, найденных в определенном месте, или в столкновении и т.д.. В этих случаях вы можете использовать это ключевое слово, чтобы проверить, что ничего нет, примерно так:

-

if instance_nearest(x, y, obj_enemy) != noone -
- { -
- //do something as there is an enemy instance near -
- }

-

В этом примере функция instance_nearest() вернет либо noone, либо уникальный ID ближайшего найденного экземпляра. В принципе, в любой момент, когда вам нужно проверить наличие экземпляра, вы можете ожидать возврата либо noone, либо уникального идентификатора экземпляра.

-

-
-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features.htm b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features.htm index 987019f31..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features.htm @@ -1,55 +0,0 @@ - - - - - - Особенности языка - - - - - - - - - - -

Особенности языка

-

Язык GameMaker Language (GML) имеет ряд особенностей, которые являются частью основной структуры всех программ, написанных на этом языке. Каждая из них будет использоваться в любом написанном вами коде многократно, поэтому вы должны знать, что это такое и как они работают, прежде чем приступать к программированию проекта.

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/If_Else_and_Conditional_Operators.htm b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/If_Else_and_Conditional_Operators.htm index b5873070d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/If_Else_and_Conditional_Operators.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/If_Else_and_Conditional_Operators.htm @@ -1,129 +0,0 @@ - - - - - - if / else и условные операторы - - - - - - - - - - -

if / else и условные операторы

-

Фундаментальной особенностью большинства языков программирования является возможность задать простой вопрос, который дает булев true или false ответ, и в GML это достигается с помощью ключевого слова if. Простое условие if берет выражение и выполняет один или несколькооператоров, если выражение разрешается как true, со следующей основной формой:

-

if (<expression>)
- {
-     <statement>;
-     <statement>;
-     ...
- }

-


- Здесь вы говорите, что если выражение разрешается как true, то сделайте то-то. Обратите внимание, что часть условия "then" является неявной, но существует ключевое слово then, которое можно использовать (хотя оно почти всегда опускается), поэтому вы также можете создавать подобные условия:

-

if (<expression>) then
- {
-     <statement>;
-     <statement>;
-     ...
- }

-

Кроме if и then, вы можете использовать ключевое слово else, чтобы сделать что-то еще, если проверяемое выражение оценивается как false. Эта форма "if... then... else..." выглядит следующим образом:

-

if (<expression>)
- {
-     <statement>;
- }
- else
- {
-     <statement>;
- }

-

В этом случае выражение будет оценено, и если оно оценивается как false, то выполняется оператор после else, в противном случае выполняется начальный оператор (это true).

-

ПРИМЕЧАНИЕ В языке GameMaker любое значение, которое меньше или равно 0, будет оцениваться как false, а любое значение, которое больше 0, будет оцениваться как true.

-

Хорошей привычкой является всегда ставить скобки вокруг выражений и фигурные скобки {} вокруг утверждений в if (иначе будет выполнено только первое утверждение), и занимать новую строку в блоке для каждого утверждения, например:

-

// This will work
- if <expression> <statement>;
-
- // Example:
- if test == true variable = false else variable = true; -

-

// This is better
- if (<expression>)
- {
-     <statement>;
- }
- else
- {
-     <statement>;
- }
-
- // Example
- if (test == true)
- {
-     variable = false;
- }
- else
- {
-     variable = true;
- } -

-

Обратите внимание, что хотя этот вариант немного более многословен, он означает, что в коде нет двусмысленности и что он всегда будет правильно компилироваться на всех платформах. Однако в исходном примере это может быть не так, как объясняется в разделе на странице " Выражения и операторы ".

-

ПРИМЕЧАНИЕ: При сравнении двух значений для проверки их равенства следует использовать оператор "==", а для присваивания - только оператор "=". В настоящее время GameMaker рассматривает их как взаимозаменяемые, но это может измениться в будущем, и ваш код будет чище и нагляднее при использовании правильных операторов для сравнения и присваивания.

-

Чтобы привести пример использования if, рассмотрим следующий код, который будет перемещать экземпляр к позиции x=200 в комнате, когда он помещен в событие Step:

-

if (x < 200)
- {
-     x += 4;
- }
- else
- {
-     x = 200;
- }

-

Обратите внимание, что в if можно также выполнять составные проверки, то есть проверять различные значения или выражения в одном операторе. В этих проверках можно использовать различные комбинированные операторы (&& and, || or и ^^ xor). Когда вы это сделаете, GameMaker будет оценивать каждое из них по очереди, и в зависимости от того, как они оценены, остальные могут быть пропущены. Например:

-

if (keyboard_check_pressed(vk_enter)) && (instance_exists(obj_Player))
- {
-     go = false;
-     alarm[0] = room_speed;
- }

-

Здесь мы проверяем с помощью оператора && "and", поэтому он проверяет, если оба условия в if оцениваются как true, а если первое из них false, то второе даже не проверяется. Это называется "замыканием" кода, поэтому при комбинировании выражений для проверки нужно следить за тем, чтобы самое "дешевое" по производительности выражение всегда было первым, чтобы избежать оценки более дорогих выражений, если первое оценивается в false. Аналогично, если условие может быть оценено как true или false во время компиляции, то все условие будет удалено из кода, например, у вас есть макрос DEBUG_ON для отладки, и он может быть либо true, либо false - если он установлен в false, то следующий блок кода будет удален из игры при компиляции:

-

if DEBUG_ON == true
- {
-     show_debug_message("Instances = " + string(instance_count));
- }

-

Вы также можете выполнять условные операции (также известные как тернарные операции), которые по сути являются "коротким" способом выполнения базовых операций if. Он имеет следующий синтаксис:

-

variable = <condition> ? <statement1 (if true)> : <statement2 (if false)>

-

Условный оператор "?" вернет одно из двух заданных значений в зависимости от того, оценивается ли выражение условия в true или false, например:

-

var temp_x = (x < (room_width / 2)) ? 32 : (room_width - 32);

-

Приведенный выше код проверит значение "x" на соответствие значению половины ширины комнаты, и если оно меньше, то установит значение "temp_x" равным 32, иначе "temp_x" будет равно ширине комнаты - 32. Вот еще несколько примеров использования:

-

draw_text(x, y, "The fee is " + (global.Member ? "$2.00" : "$10.00"));
- path_start(((global.level > 10) ? path_hard : path_easy;), 2, path_action_reverse, true);
- (--hp <= 0) ? instance_destroy() : score += 10;

-

Стоит также отметить, что вы можете вложить условные операции, но в этом случае каждая операция должна быть заключена в скобки, например:

-

var c = a ? "foo" : (b ? "bar" : "whee"); // Correct
- var c = a ? "foo" : b ? "bar" : "whee";   // Will cause an error

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/begin_end.htm b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/begin_end.htm index 21a8b2038..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/begin_end.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/begin_end.htm @@ -1,47 +0,0 @@ - - - - - - начало / конец - - - - - - - - - - -

начало / конец

-

GameMaker Language позволяет использовать ключевые слова begin и end вместо более привычных фигурных скобок {} при создании блоков кода. Пример кода ниже показывает, как это работает:

-

if (!visible)
    begin -
    exit; -
    end -
while (place_meeting(x, y))
    begin -
    x -= lengthdir_x(1, direction - 180);
    y -= lengthdir_y(1, direction - 180);
    end -

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/break.htm b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/break.htm index abe76a71d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/break.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/break.htm @@ -1,129 +0,0 @@ - - - - - - перерыв - - - - - - - - - - -

перерыв

-

Оператор break используется для преждевременного завершения a for, repeat, while или do / until цикла, или чтобы указать switch или для того, чтобы сообщить оператору, что он должен завершиться в этой точке, или для преждевременного завершения with вызов. Пожалуйста, обратитесь к отдельным страницам, посвященным этим различным функциям, чтобы получить более подробное объяснение того, как их можно использовать в каждом конкретном случае. Обратите внимание, что если break используется вне какого-либо из этих контекстов, это приведет к ошибке.

-

Ниже приведено несколько основных примеров использования break, синтаксис которого прост:

-

break;

-

break в цикле for:

-

for (var i = 0; i < 10; i += 1)
- {
-     if (array[i] == 234)
-     {
-         break;
-     }
- }
-
- num = i; -

-

break в цикле repeat:

-

var i = 0;
- var temp = 0;
- repeat (10)
- {
-     temp += array[i];
-     if (temp > max_total)
-     {
-         break;
-     }
-     else
-     {
-         i += 1;
-     }
- }

-

break в цикле while:

-

var i = 0;
- while (!place_free(x, y))
- {
-     x = random(room_width);
-     y = random(room_height);
-     if (i > 50)
-     {
-         break;
-     }
-     else
-     {
-         i+=1;
-     }
- }

-

break в цикле do / until:

-

var _id = noone;
- do
- {
-     _id = list[| 0];
-     if (instance_exists(_id))
-     {
-         break;
-     }
-     ds_list_delete(list, 0);
- }
- until (ds_list_empty(list));
- target = _id;

-

break при использовании with:

-

var count = 0;
- with (obj_Enemy)
- {
-     count++;
-     if (count > 10)
-     {
-         break;
-     }
-     hp = 100;
- }

-

break в switch:

-

switch (keyboard_key)
- {
-     case vk_left:
-     case ord("A"):
-         x -= 4;
-     break;
-
-     case vk_right:
-     case ord("D"):
-         x += 4;
-     break;
-
-     case vk_up:
-     case ord("W"):
-         y -= 4;
-     break;
-
-     case vk_down:
-     case ord("S"):
-         y += 4;
-     break;
- } -

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/continue.htm b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/continue.htm index 78c8054e4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/continue.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/continue.htm @@ -1,115 +0,0 @@ - - - - - - продолжить - - - - - - - - - - -

продолжить

-

Оператор continue имеет следующий основной синтаксис:

-

continue;

-

Если используется внутри оператора, который формирует цикл (for, repeat, while или do / until), он немедленно завершит текущую итерацию и перейдет в начало цикла, начиная новую итерацию и опуская любой код, следующий за continue внутри цикла. Его также можно использовать внутри with где он заставит код перейти к следующему экземпляру и запуститься снова. Обратите внимание, что если continue используется вне любого из этих контекстов, это приведет к ошибке.

-

Ниже приведен пример использования в цикле for:

-

var _val = 0;
-
- for (var i = 0; i < 10; i += 1)
- {
-     if (val_array[i] <= 0)
-     {
-         continue;
-     }
-     _val += val_array[i];
- }
-
- draw_text(32, 32, "Positive Values Total = " + string(_val)); -

-

Ниже приведен пример использования в цикле while:

-

var file = file_text_open_read("Game_Data.txt");
- var _num = 0;
-
- while (!file_text_eof(file))
- {
-     var _s = file_text_readln(file);
-     if (_s == "")
-     {
-         continue;
-     }
-     str[num++] = _s;
- }
-
- file_text_close(file); -

-

Ниже приведен пример использования в цикле do / until:

-

do
- {
-     var _x = random(room_width);
-     var _y = random(room_height);
-
-     if (instance_position(_x, y, obj_Enemy)
-     {
-         continue;
-     }
-
-     instance_create_layer(_x, _y, "Instances", obj_Enemy);
- }
- until (instance_count(obj_Enemy) >= 10); -

-

Ниже приведен пример использования в цикле repeat:

-

repeat(10)
- {   
-     var _x = random(room_width);
-     var _y = random(room_height);
-
-     if (instance_position(_x, y, obj_Enemy)
-     {
-         continue;
-     }
-
-     instance_create_layer(_x, _y, "Instances", obj_Enemy);
- } -

-

Наконец, пример использования в заявлении with:

-

with (obj_Enemy_Parent)
- {
-     if (object_index == obj_Enemy_InDestructible)
-     {
-         continue;
-     }
-
-     hp -= 100;
-
-     if (hp <= 0)
-     {
-         instance_destroy();
-     }
- } -

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/delete.htm b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/delete.htm index 0931efdd1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/delete.htm @@ -1,50 +0,0 @@ - - - - - удалить - - - - - - - - - - -

удалить

-

Оператор delete используется для отмены ссылки на структуру и имеет следующий синтаксис:

-

delete <variable>;

-

Это означает, что вы вызываете оператор delete вместе с переменной, содержащей struct, и он удалит конкретную ссылку на struct, хранящуюся в данной переменной (ссылка - это просто значение, указывающее на область памяти. - в которой хранится структура и ее содержимое). Если эта ссылка была последней ссылкой на struct в вашей игре, то сборщик мусора удалит struct из памяти в - следующей итерации, обычно в самом начале следующего шага.

-

ПРИМЕЧАНИЕ: delete можно использовать только вместе с переменными, но не с выражениями.

-

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

-

В следующем примере показано создание структуры - например, в событии Create Event экземпляра:

-

mystruct =
{ -
    a : 0,
    b : 100,
    c : "Hello World"
} -

-

Затем эта структура будет использоваться в событиях экземпляра как обычно, а затем, наконец, будет помечена для сбора мусора в событии Clean Up, как показано ниже:

-

delete mystruct;

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/do___until.htm b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/do___until.htm index ae2e2b207..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/do___until.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/do___until.htm @@ -1,89 +0,0 @@ - - - - - - делать / пока - - - - - - - - - - -

делать / пока

-

Функция do - это еще один способ многократного перебора одного или несколькихутверждений, и на самом деле это "do... until" утверждение, поскольку одно без другого невозможно, так как вы говорите GameMaker 'у делать что-то, пока определенное выражение не вернется true. Она имеет следующую форму:

-

do
- {
-     <statement>;
-     <statement>;
-     ...
- }
- until (<expression>);

-

Выражение (которое может быть блоком кода из нескольких выражений в фигурных скобках {}) выполняется до тех пор, пока не будет найдено выражение true, а начальное выражение всегда выполняется хотя бы один раз. Ниже приведен пример типичного способа использования do... until:

-

do
- {
-     x = random(room_width);
-     y = random(room_height);
- }
- until (place_free(x, y));

-

Приведенный выше код пытается поместить текущий объект в свободную позицию и устанавливает переменные x/y по крайней мере один раз, а затем выполняет столько итераций, сколько необходимо, пока выражение place_free() не вернет true.

-

Когда следует использовать цикл do / until? Его следует использовать в любом случае, когда вы хотите повторить одно или несколько утверждений, но не знаете, сколько раз оно должно повториться, и хотите убедиться, что утверждения будут выполнены хотя бы один раз до окончания цикла.

-

Вы также можете использовать break и continue в циклах do. Использование break немедленно завершит цикл и перейдет к любому коду, который находится в событии или функции после завершения цикла, например:

-

var _id = noone;
- do
- {
-     _id = list[| 0];
-     if (instance_exists(_id))
-     {
-         break;
-     }
-     ds_list_delete(list, 0);
- }
- until (ds_list_empty(list));
-
- target = _id; -

-

В приведенном выше коде мы создаем локальную переменную и устанавливаем ее для хранения ключевого слова noone. Затем мы выполняем цикл do / until, проверяя первую позицию списка DS на предмет того, содержит ли она действительный идентификатор экземпляра, и если да, то мы break цикл, иначе значение для позиции списка удаляется. После завершения цикла (либо по команде break, либо потому, что список пуст) значение локальной переменной присваивается переменной экземпляра target.

-

Примером использования continue в цикле do / until может быть:

-

do
- {
-     var _x = random(room_width);
-     var _y = random(room_height);
-
-     if (instance_position(_x, _y, obj_Enemy))
-     {
-         continue;
-     }
-
-     instance_create_layer(_x, _y, "Instances", obj_Enemy);
- }
- until (instance_count(obj_Enemy) >= 10);

-

Этот код генерирует случайную позицию комнаты и проверяет, существует ли экземпляр объекта obj_Enemy в этой позиции. Если да, то текущая итерация цикла завершается с помощью continue и начинается новая итерация, а если нет, то в случайной позиции создается экземпляр объекта obj_Enemy. Цикл завершится только тогда, когда в комнате будет 10 или более экземпляров объекта.

-

И последнее замечание: будьте осторожны с циклами do, так как вы можете легко сделать их вечными, и тогда ваша игра зависнет и не будет больше реагировать на ввод пользователя, и ему придется принудительно закрыть ее.

-

Другие примеры ключевых слов цикла см. в разделах repeat, while, и for.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/exit.htm b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/exit.htm index 77ca221a4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/exit.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/exit.htm @@ -1,57 +0,0 @@ - - - - - - выход - - - - - - - - - - -

выход

-

Оператор exit имеет следующий синтаксис:

-

exit;

-

exit просто завершает выполнение текущей функции сценария, method, или event. Обратите внимание, что здесь есть небольшая разница в использовании в зависимости от области видимости:

- -

При использовании в событии exit обычно используется для того, чтобы избежать выполнения дальнейшего кода экземпляра, когда определенное условие было выполнено (или нет). Приведенный ниже код описывает пример его использования, в данном случае в событии столкновения, хотя он может быть использован в любом событии.

-

if (!visible)
- {
-     exit;
- }
-
- other.hp -= attack;
- other.coins -= 4;
- coins += 4; -

-

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

-

ПРИМЕЧАНИЕ: Это не завершает выполнение игры. Для этого необходимо использовать функцию game_end().

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/for.htm b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/for.htm index d76c3425d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/for.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/for.htm @@ -1,89 +0,0 @@ - - - - - - для - - - - - - - - - - -

для

-

Одним из наиболее часто используемых способов многократной итерации оператора (или операторов) является использование цикла for, который имеет следующий вид:

-

for (<assignment>; <expression>; <operation>;)
- {
-     <statement>;
-     <statement>;
-     ...
- }

-

Это работает следующим образом - Сначала выполняется присваивание, которое присваивает значение переменной, затем оценивается выражение и, если оно true, выполняются утверждения в фигурных скобках{}. Далее выполняется операция над присвоенной переменной, после чего выражение снова оценивается. Этот цикл будет продолжаться до тех пор, пока не будет установлено, что выражение равно false.

-

В таком виде это может показаться сложным, но вы должны понимать это так:

-
    -
  1. Первое присваивание инициализирует цикл for
  2. -
  3. Выражение проверяет, следует ли завершить цикл
  4. -
  5. Заявление выполняется
  6. -
  7. Операция выполняется
  8. -
  9. Вернитесь к шагу 2, выполните выражение еще раз и продолжите или выйдите из цикла
  10. -
-

Это чрезвычайно полезно для выполнения повторяющихся задач, которые в любом другом случае потребовали бы много строк кода, и обычно используется в качестве счетчика для оценки массивов, рисования, установки инкрементных значений и т.д.. Следующий пример кода иллюстрирует типичное использование этого типа оператора:

-

for (var i = 0; i < 10; i += 1)
- {
-     draw_text(32, 32 + (i * 32), string(i) + ". "+ string(scr[i]));
- }

-

Приведенный выше код инициализирует цикл for, начинающийся с 0 и считающий до (включительно) 9, а затем использует значение цикла i для рисования на экране значений, хранящихся в массиве. Обратите внимание, как переменная цикла for i используется не только для прохода по массиву, но и для рисования числа, а также для указания GameMaker места рисования значений в комнате. Такая гибкость является одной из основных причин, почему циклы for так важны в программировании.

-

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

-

ПРИМЕЧАНИЕ: При работе с другими людьми вы увидите множество примеров использования переменных "i" и "j" для переменной счетчика циклов. Это не обязательные имена переменных, и вы можете использовать что угодно, например, "a" или "foo" или что-то еще. Использование "i" и "j" - это просто стандартная конвенция в программировании.

-

Стоит отметить, что внутри цикла for можно использовать специальные операторы break и continue. Использование break приведет к немедленному выходу из цикла и переходу к любому коду, который находится в событии или функции после того, как цикл должен был завершиться, например:

-

var _inst = noone;
- for (var i = 0; i < 10; i += 1)
- {
-     _inst = instance_find(obj_Enemy_Parent, i);
-     if (instance_exists(_inst))
-     {
-         if (_inst.object_index == obj_Enemy_Melee)
-         {
-             break;
-         }
-     }
- }
- target = _inst;

-

Приведенный выше код перебирает 10 ближайших экземпляров заданного "родительского" объекта, и если экземпляр найден, то проверяется ID объекта, и если это экземпляр obj_Enemy_Melee, то цикл завершается с использованием break, а значение ID присваивается переменной (если экземпляр не найден, то в переменную будет добавлено ключевое слово noone ).

-

Примером использования continue в цикле for может быть:

-

var _val = 0;
- for (var i = 0; i < 10; i += 1)
- {
-     if (val_array[i] <= 0)
-     {
-         continue;
-     }
-     _val += val_array[i];
- }
- draw_text(32, 32, "Positive Values Total = " + string(_val));

-

Этот код проверяет значение, хранящееся в каждой позиции массива 1D длины 10, и если любое из них меньше или равно 0, то цикл continue завершается, то есть текущая итерация заканчивается, i увеличивается, и начинается следующая итерация цикла. Если значение больше 0, то оно добавляется к локальной переменной _val, а после завершения цикла итоговое значение выводится на экран.

-

Другие примеры ключевых слов цикла см. в разделах repeat, while, и do / until.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/new.htm b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/new.htm index 267db12bb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/new.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/new.htm @@ -1,51 +0,0 @@ - - - - - - новый - - - - - - - - - - -

новый

-

Оператор new можно использовать для создания структуры с помощью функции, которая вызывается с заданными аргументами. Затем функция может заполнить struct переменными из аргументов - подобно тому, как событие create экземпляра устанавливает начальные переменные для экземпляра - и затем оператор new возвращает struct. Перед использованием этого оператора важно отметить, что заданная функция должна быть помечена как функция constructor , иначе оператор new не создаст структуру (пример кода ниже показывает это, а более подробную информацию можно найти на странице Структуры).

-

ПРИМЕЧАНИЕ Вы можете проверить структуру, чтобы узнать, какая функция была использована для ее создания, с помощью функции времени выполнения instanceof().

-

Этот оператор имеет следующий синтаксис:

-

<variable> = new <function> (<argument>, <argument>, ...);

-

Когда вы используете оператор new вместе с функцией, он возвращает ссылку на struct, которая хранится в данной переменной, позволяя вам получить доступ к struct и любым переменным, которые были созданы в ней функцией.

-

В следующем примере показана функция, которая была определена для использования в качестве конструктора:

-

function init_struct(_a, _b, _c) constructor
- {
-     a = _a;
-     b = _b;
-     c = _c;
- }

-

Затем эту функцию можно использовать вместе с оператором new для создания структуры и заполнения ее переменными, установленными на значения аргументов, используемых в функции, как это сделано здесь:

-

mystruct = new init_struct(10, 100, "Hello World");

-

Важно отметить, что вызов new на любой функции, которая не была отмечена как конструктор, вызовет исключение во время выполнения.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/repeat.htm b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/repeat.htm index d134a4bde..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/repeat.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/repeat.htm @@ -1,87 +0,0 @@ - - - - - - повторить - - - - - - - - - - -

повторить

-

На сайте GameMaker Language есть несколько способов выполнения циклов, т.е. чтобы оператор или операторы повторяли друг друга определенное количество раз. Самым простым из них является оператор repeat, который имеет вид:

-

repeat (<expression>)
- {
-     <statement>;
-     <statement>;
-     ...
- }

-

При использовании repeat данное утверждение повторяется столько раз, сколько указано в округленном значении выражения. Например, следующее выражение создает пять шариков в случайных позициях:

-

repeat (5)
- {
-     instance_create_layer(random(400), random(400), "Instances", obj_ball);
- }

-

Это может быть очень полезно, чтобы не набирать один и тот же код несколько раз, или для использования массивов, или для подсчета количества операций и т.д.. Вы также не ограничены использованием одного оператора, и можете повторять несколько операторов, заключив их в фигурные скобки {}. Например:

-

var _x = 32;
- repeat (global.p_lives)
- {
-     draw_sprite(spr_heart, 0, _x, 32);
-     _x += sprite_get_width(spr_heart);
- }

-

Приведенный выше пример повторяет утверждения в фигурных скобках столько итераций, сколько итерацийимеет глобальная переменная "lives", и на каждой итерации рисует сердце sprite в позиции _x, затем перемещает позицию на бит в зависимости от ширины сердца sprite.

-

Когда следует использовать цикл repeat? В любое время, когда вы хотите повторить одно или несколько утверждений фиксированное количество раз без необходимости вести подсчет итераций.

-

Стоит отметить, что внутри цикла можно использовать специальные операторы break и continue. повторить цикла. Использование break приведет к немедленному выходу из цикла и переходу к любому коду, который находится в событии или функции после того, как цикл должен был завершиться, например

-

var i = 0;
- var temp = 0;
- repeat (10)
- {
-     temp += array[i];
-     if (temp > max_total)
-     {
-         break;
-     }
-     else
-     {
-         i += 1;
-     }
- }

-

Приведенный выше код перебирает 10 значений массива и добавляет их в локальную переменную. Если сумма локальной переменной больше, чем заданное значение для max_total, то цикл завершается с помощью break, в противном случае цикл продолжается.

-

Примером использования continue в цикле repeat может быть:

-

repeat(10)
- {   
-     var _x = random(room_width);
-     var _y = random(room_height);
-     if (instance_position(_x, y, obj_Enemy)
-     {
-         continue;
-     }
-     instance_create_layer(_x, _y, "Instances", obj_Enemy);
- }

-

Этот код повторится 10 раз, генерируя случайную позицию комнаты и проверяя, существует ли экземпляр объекта obj_Enemy в этой позиции. Если да, то текущая итерация цикла завершается с помощью continue и начинается новая итерация, а если нет, то в случайной позиции создается экземпляр объекта obj_Enemy.

-

Другие примеры функций цикла см. в разделах while, do... until, и for.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/return.htm b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/return.htm index 8e4c8bfe4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/return.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/return.htm @@ -1,62 +0,0 @@ - - - - - - возврат - - - - - - - - - - -

возврат

-

Оператор return имеет следующий синтаксис:

-

return (<expression>)

-

Оператор return используется только в функциях и методах сценария, он используется для возврата значения из функции, которое будет использоваться в дальнейшем коде или вызовах функций. Следует отметить, что выполнение функции заканчивается на операторе return , а это значит, что любой код, который появится после вызова return, не будет выполнен. Вот небольшой пример скрипта под названием sqr_calc, который вычисляет квадрат любого переданного ему значения и включает в себя отлов ошибок в случае, если переданный ему параметр не является действительным числом:

-

/// @function            sqr_calc(val);
- /// @param {real}  val   The value to calculate the square of
- /// @description         Calculate the square of the given value
-
- function sqr_calc(value)
- {
-     if (!is_real(value))
-     {
-         return 0;
-     }
-     else
-     {
-         return (value * value);
-     }
- } -

-

Чтобы вызвать функцию из кода, просто используйте ее так же, как и при вызове функций времени выполнения - то есть напишите имя функции со значениями параметров в круглых скобках. Таким образом, приведенная выше функция будет вызвана следующим образом:

-

if keyboard_check_pressed(vk_enter)
- {
-     val = scr_sqr(amount);
- }

-

Здесь переменная val будет либо равна 0 (поскольку переменная amount не является действительным числом), либо суммарному значению для value * value.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/switch.htm b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/switch.htm index db0c04f4f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/switch.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/switch.htm @@ -1,109 +0,0 @@ - - - - - - переключатель - - - - - - - - - - -

переключатель

-

В ряде ситуаций вы хотите, чтобы ваши экземпляры выполняли различные действия в зависимости от конкретного значения. Вы можете сделать это с помощью нескольких последовательных if / else но когда количество возможных вариантов становится больше двух или трех, обычно проще использовать оператор switch.

-

Заявление switch имеет следующий синтаксис:

-

switch (<expression>)
- {
-     case <constant1>:
-         <code>
-     break;
-
-     case <constant2>:
-         <code>
-     break;
-     
-     // more cases (with breaks)
-
-     default:
-         <code>;
- } -

-

Это работает следующим образом:

- -

ПРИМЕЧАНИЕ Оператор switch будет продолжать выполнять код в пределах case, пока не встретится break. Если вы не используете breaks в конце примеров, это приведет к тому, что переключатель "перетечет" на следующий case, и даже в секцию default, если на пути не будет breaks. Это может привести к нежелательному поведению, так как выполнение одного case может привести к выполнению нескольких case, поэтому используйте break там, где это необходимо.

-

Простой пример использования оператора switch будет выглядеть следующим образом:

-

switch (player_lives)
- {
-     case 3:
-         draw_sprite(20, 20, spr_face_healthy);
-     break;
-
-     case 2:
-         draw_sprite(20, 20, spr_face_hurt);
-     break;
-
-     case 1:
-         draw_sprite(20, 20, spr_face_fatal);
-     break;
-
-     default:
-         draw_sprite(20, 20, spr_face_fainted);
-     break;
- } -

-

Обратите внимание, что для выполнения одного и того же оператора можно использовать несколько операторов case, так как оператор break не всегда требуется для каждого case. Если для конкретного case оператора break не существует, выполнение просто продолжается с кода для следующего случая, например:

-

switch (keyboard_key)
- {
-     case vk_left:
-     case ord("A"):
-         x -= 4;
-     break;
-
-     case vk_right:
-     case ord("D"):
-         x += 4;
-     break;
-
-     case vk_up:
-     case ord("W"):
-         y -= 4;
-     break;
-
-     case vk_down:
-     case ord("S"):
-         y += 4;
-     break;
- } -

-

Приведенный выше код использует switch для проверки наличия события клавиатуры, а затем сравнивает его с каждым из перечисленных case. Если оно соответствует любому из требуемых значений, то выполняется соответствующий код. Обратите внимание, как switch может проверять несколько cases и выполнять код до следующего break, чтобы позволить использовать различные клавиши для получения одного и того же результата.

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/throw.htm b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/throw.htm index 3a6e4397c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/throw.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/throw.htm @@ -1,44 +0,0 @@ - - - - - - бросок - - - - - - - - - - -

бросок

-

Оператор throw позволяет генерировать собственные исключения во время выполнения, завершая игру и выводя сообщение об ошибке, используя следующий синтаксис:

-

throw (<expression>);

-

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

-

throw ("Hello World!");

-

приведет к появлению следующей ошибки не обработанного исключения:

-

Вы можете, однако, взять на себя это сообщение об ошибке и использовать свой собственный код обработчика, вызвав функцию - функцию exception_unhandled_handler(). Эта функция времени выполнения позволяет вам предоставить пользовательскую функцию method которая будет вызываться всякий раз, когда в вашей игре возникают необработанные исключения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/try_catch_finally.htm b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/try_catch_finally.htm index 4d6211a89..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/try_catch_finally.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/try_catch_finally.htm @@ -1,122 +0,0 @@ - - - - - - try / catch / finally - - - - - - - - - - -

try / catch / finally

-

Операторы try, catch и finally могут быть использованы в вашей игре для проверки ошибок и позволяют вам тестировать блоки кода и контролировать, что произойдет, если возникнут какие-либо исключения во время выполнения. Их использование предотвратит завершение игры и показ стандартного сообщения об ошибке пользователю, но это означает, что вам придется позаботиться о том, что произойдет дальше в этом случае, например, сохранить файлы журнала и завершить игру изящно (обратите внимание, что если вы ничего не сделаете, ваша игра может стать нестабильной и работать некорректно).

-

В самом простом виде синтаксис try выглядит следующим образом:

-

try
- {
-     <statement1>;
-     <statement2>;
-     ...
- }

-

Однако наличие try без чего-либо, что на самом деле обрабатывает любые исключения, которые может произвести код, будет не очень полезным, поэтому мы обычно используем его в паре с catch, используя следующий синтаксис:

-

try
- {
-     <statement1>;
-     <statement2>;
-     ...
- }
- catch(<variable>)
- {
-     <statement1>;
-     <statement2>;
-     ...
- }

-

Что делает catch, так это позволяет выполнить дополнительный код, представленный в следующем блоке, если было поймано исключение из предыдущего try. Если это исключение времени выполнения, то предоставленная переменная может быть использована для доступа к структуре, которая будет содержать следующую информацию:

-

{
- message : "",               // a string that is a short message for this exception
- longMessage : "",           // a string that is a longer message for this exception
- script : "",                // a string that describes where the exception came from
- stacktrace : [ "", "" ],    // an array of strings that is the stack frame the exception was generated
- }

-

Простой пример использования показан ниже:

-

var a = 0, b = 0, c = 0;
- try
- {
-     c = a div b;
- }
- catch( _exception)
- {
-     show_debug_message(_exception.message);
-     show_debug_message(_exception.longMessage);
-     show_debug_message(_exception.script);
-     show_debug_message(_exception.stacktrace);
- }

-

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

-

finally
- {
-     <statement1>;
-     <statement2>;
-     etc...
- }

-

Стоит отметить, что вы можете иметь любую комбинацию из них вместе, т.е:

- -

Обратите внимание, что внутри блока finally вы не можете использовать break, continue, exit или return поскольку они не имеют никакого значения в данном контексте, и компилятор выдаст ошибку, если они будут использованы.

-

Наконец, вы также можете вложить различные try / catch / finally друг в друга, например:

-

var a = 0, b = 0, c = 0;
- try
- {
-     try
-     {
-         c = a div b;
-     }
-     finally
-     {
-         ++a;
-     }
- }
- catch(_exception)
- {
-     ++a;
-     show_debug_message(_exception.message);
-     show_debug_message(_exception.longMessage);
-     show_debug_message(_exception.script);
-     show_debug_message(_exception.stacktrace);
- }
- finally
- {
-     show_debug_message("a = " + string(a));
- }

-

Стоит отметить, что вы можете заменить стандартное сообщение об ошибке GML и использовать свой собственный код обработчика, вызвав функцию exception_unhandled_handler(). Эта функция времени выполнения позволяет вам предоставить пользовательскую функцию method который будет вызываться каждый раз, когда в вашей игре возникают необработанные исключения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/while.htm b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/while.htm index 34db5d61f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/while.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/while.htm @@ -1,99 +0,0 @@ - - - - - - в то время как - - - - - - - - - - -

в то время как

-

На сайте GameMaker Language есть несколько способов выполнения циклов, один из самых важных - цикл while. Эта функция цикла имеет вид:

-

while (<expression>)
- {
-     <statement>;
-     <statement>;
-     ...
- }

-

Здесь у вас есть утверждение, которое повторяется снова и снова на основе результатов оценки выражения, т.е.: с циклом while, пока выражение оценивается как true, утверждение (которое также может быть блоком кода из нескольких утверждений с фигурными скобками {}) выполняется. Ниже приведен пример типичного использования "while":

-

while (place_meeting(x, y, obj_Wall))
- {
-     x -= 1;
- }

-

Приведенный выше код проверяет столкновение между вызывающим экземпляром и экземпляром "стены", и он будет выполнять несколько итераций, пока происходит столкновение - перемещение экземпляра влево на один пиксель - пока экземпляр больше не столкнется.

-

Когда следует использовать цикл while? Его следует использовать в любом случае, когда вы хотите повторить одно или несколько утверждений, но не знаете - или не заботитесь - сколько раз оно должно повториться, помня, что если начальная оценка false, то утверждения могут даже не выполняться.

-

Обратите внимание, что с циклами while следует быть очень осторожным! Вы можете легко сделать бесконечные циклы, и в этом случае ваша игра зависнет и больше не будет реагировать ни на какой пользовательский ввод, и ее придется принудительно закрыть. Например:

-

while (!place_free(x, y))
- {
-     x = random(room_width);
-     y = random(room_height);
- }

-

Теперь, приведенный выше код может работать нормально, но он также может вызвать бесконечный цикл, если экземпляр не сможет найти пустую позицию для перемещения, что приведет к зависанию игры. Если вы окажетесь в ситуации, когда такое возможно, то вам следует либо использовать другой вид неблокирующего цикла, либо использовать дополнительную проверку переменной в выражении (для проверки можно использовать несколько выражений вместе соператорами and (&&), or (||) и xor (^^) ):

-

var _check = 0;
- while ((!place_free(x, y)) && (_check < 100))
- {
-     x = random(room_width);
-     y = random(room_height);
-     _check += 1;
- }
- if (_check >= 100)
- {
-     // code failed, so deal with it
- }

-

В качестве альтернативы можно использовать оператор break для выхода из цикла, например, следующий код будет генерировать 100 случайных чисел, а затем продолжит, несмотря на то, что оценка while всегда будет true:

-

var i = 0;
- while (true)
- {
-     x[i] = random(room_width);
-     y[i] = random(room_height);
-     if ((i++) >= 100)
-     {
-         break;
-     }
- }

-

Вы также можете использовать continue в цикле while. При его использовании текущая итерация цикла завершится, и цикл будет запущен заново на новой итерации, например:

-

var file = file_text_open_read("Game_Data.txt");
- var _num = 0;
- while (!file_text_eof(file))
- {
-     var _s = file_text_readln(file);
-
-     if (_s == "")
-     {
-         continue;
-     }
-
-     str[num++] = _s;
- }
-
- file_text_close(file); -

-

Приведенный выше код открывает файл и читает из него строку в каждом цикле до тех пор, пока не будет достигнут конец содержимого файла. Если прочитанная строка является пустой строкой, то текущая итерация цикла завершается с помощью оператора continue и начинается новая итерация, в противном случае строка добавляется в массив и позиция массива увеличивается.

-

Другие примеры функций цикла см. в разделах repeat, do... until, и for.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/with.htm b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/with.htm index 8ba4dc631..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/with.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Language_Features/with.htm @@ -1,125 +0,0 @@ - - - - - - с - - - - - - - - - - -

с

-

Как указано в разделе Обращение к переменным в других экземплярах, можно читать и изменять значение переменных в экземплярах и структурах, отличных от того, в котором в данный момент выполняется любой данный код. Однако в ряде случаев вы хотите сделать гораздо больше, чем просто изменить одну переменную в этих других экземплярах, и можете захотеть выполнить более сложные действия, требующие нескольких функций и строк кода. Например, представьте, что вы хотите переместить все экземпляры объекта ball в вашей игре на 8 пикселей вниз. Вы можете подумать, что это достигается простым выполнением следующего фрагмента кода:

-

obj_ball.y = obj_ball.y + 8;

-

Но это неверно, поскольку правая часть присваивания получает значение координаты y первого шарика и прибавляет к нему 8. Затем это новое значение устанавливается как координата y всех шариков, в результате все шарики получают одинаковую координату y, и даже если вы используете следующее:

-

obj_ball.y += 8;

-

будет иметь точно такой же эффект, потому что это просто сокращение первого утверждения. Как же добиться чего-то подобного? Вот почему утверждение with существует в GML. Утверждение with имеет следующий синтаксис:

-

with (<expression>)
- {
-     <statement>;
-     <statement>;
-     ...
- }

-

Для выражения можно указать один или несколько экземпляров (или struct) для выполнения кода, используя ID экземпляра, ID объекта (который указывает, что все экземпляры в комнате этого объекта должны выполнить блок кода), ID struct или одно из специальных ключевых слов (all или other). В результате область видимости кода в фигурных скобках {} изменится с экземпляра, структуры или функции, в которой фактически находится код, на экземпляр (или экземпляры, или структуру), указанный в выражении.

-

Как только выражение установит область видимости with, оператор будет выполнен для каждого из указанных экземпляров, как если бы этот экземпляр был текущим ( self). Итак, возвращаясь к нашей исходной задаче, чтобы переместить все экземпляры объекта ball на 8 пикселей вниз, нужно ввести:

-

with (obj_ball)
- {
-     y += 8;
- }

-

По сути, это цикл, и на каждой итерации цикла код будет выполняться на одном экземпляре объекта obj_ball.

-

Если вы хотите выполнить несколько операторов, просто заключите их в фигурные скобки, как и любой другой блок кода. Например, чтобы переместить все шарики в нашем примере в случайное положение и придать им случайную скорость и направление, вы можете использовать:

-

with (obj_ball)
- {
-     x = random(room_width);
-     y = random(room_height);
-     speed = 1 + random(2);
-     direction = random(360);
- }

-

Как упоминалось выше, в операторе (операторах) указанный экземпляр или структура стал целевым (self) экземпляром, который выполняет блок кода, что означает, что исходный экземпляр (который содержит with и весь блок кода) стал экземпляром. other экземпляром. Так, например, чтобы переместить все шарики в позицию текущего экземпляра, который фактически содержит код, вы можете напечатать следующее:

-

with (obj_ball)
- {
-     x = other.x;
-     y = other.y;
- }

-

Заявление with является чрезвычайно мощным инструментом и может быть полезно во многих и многих обстоятельствах, поэтому важно, чтобы вы полностью понимали, как его можно использовать. В помощь вам ниже приведено несколько примеров его использования:

-

with (instance_create_layer(x, y, "Instances", obj_Ball))
- {
-     speed = other.speed;
-     direction = other.direction;
- }

-

Приведенный выше код создаст экземпляр obj_Ball и присвоит ему скорость и направление движения экземпляра, который выполняет весь блок кода.

-

with (instance_nearest(x, y, obj_Ball))
- {
-     instance_destroy();
- }

-

Приведенный выше код уничтожит экземпляр obj_Ball, ближайший к экземпляру, выполняющему код.

-

with(clone_struct)
- {
-     xx = other.x;
-     yy = other.y;
-     spd = other.speed;
-     dir = other.direction;
- }

-

Приведенный выше код использует with для нацеливания на struct и установки переменных-членов struct в значения, хранящиеся в переменных экземпляра из экземпляра, вызывающего код.

-

var _inst = noone;
- with (obj_ball)
- {
-     if (str > other.str)
-     {
-         _inst = id;
-     }
- }
-
- if (_inst != noone)
- {
-     target = _inst;
- }

-

Приведенный выше код немного сложнее предыдущих, поскольку в нем используется локальная переменная. Эта переменная является локальной для события илифункции скрипта , а не для экземпляра или структуры, и поэтому может использоваться и быть доступной для всех экземпляров, на которые есть ссылки в блоке кода. Так, в приведенном выше коде мы установили локальную переменную на специальное ключевое слово noone, а затем использовали конструкцию with, чтобы каждый экземпляр obj_Ball проверил свою переменную str на соответствие переменной экземпляра, выполняющего блок кода. Если значение переменной больше, то они сохраняют свой уникальный идентификатор в локальной переменной inst, что означает, что в конце кода в локальной переменной _inst будет сохранен только экземпляр со значением больше, чем у вызывающего экземпляра (или ключевого слова noone, если ни один из них не больше).

-

Стоит отметить, что внутри вызова можно использовать специальные операторы break и continue. с вызова. Использование break немедленно завершит блок кода with и перейдет к любому коду, который находится в событии или функции после того, как with должен был завершиться, например:

-

var count = 0;
- with (obj_Enemy)
- {
-     if (++count > 10)
-     {
-         break;
-     }
-     hp = 100;
- }

-

Приведенный выше код перебирает все экземпляры объекта obj_Enemy в комнате и устанавливает переменную hp в значение 100 для первых 10 найденных экземпляров. Если найдено более 10 экземпляров, код с вызовет break и завершится.

-

Примером использования continue в цикле with может быть:

-

with (obj_Enemy_Parent)
- {
-     if (invulnerable == true)
-     {
-         continue;
-     }
-     hp -= 25;
- }

-

Этот код перебирает все экземпляры с родителем obj_Enemy_Parent, затем проверяет каждый экземпляр на то, является ли переменная экземпляра invulnerable переменной true или нет. Если да, то ключевое слово continue завершает текущую итерацию цикла и переходит к следующему доступному экземпляру, иначе удаляет 25 из переменной hp. Так повторяется до тех пор, пока не будут проверены все экземпляры с этим родителем.

-
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Method_Variables.htm b/Manual/contents/GameMaker_Language/GML_Overview/Method_Variables.htm index 79bc6b248..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Method_Variables.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Method_Variables.htm @@ -1,109 +0,0 @@ - - - - - - Переменные метода - - - - - - - - - - -

Переменные метода

-

Переменная метода - это, по сути, переменная, которой назначена функция, "привязывающая" функцию к экземпляру и позволяющая использовать переменную для ссылки на функцию - так же, как вы используете имя функции во время выполнения для ссылки на встроенную функцию GML. Используемая переменная может быть локальной, экземпляром или глобальной (более подробную информацию об области видимости переменных см. здесь ).

-

Также см: Функции сценария в сравнении с методами

-

Создание методов

-

Синтаксис для создания переменной метода следующий:

-

name = function( parameter1, parameter2, ... )
- {
-     statement1;
-     statement2;
-     ...
- } -

-

или

-

function name( parameter1, parameter2, ... )
- {

-     statement1;
-     statement2;
-     ...
- } -

-

Чтобы создать функцию в GML Visual, используйте Declare A New Function. Включите опцию "Temp" для создания переменной метода (первый синтаксис показан выше).

-

В общем случае, однако, вы будете использовать первую форму для методов, а вторую - для определения скриптовых функций, поскольку вторая форма будет также присваивать индекс скрипта имени функции, в то время как первая форма будет "истинным" методом (и потребует использования префикса global если она используется для определения скриптовой функции).

-

ПРИМЕЧАНИЕ Вы можете проверить это, используя обе формы в проекте, а затем вызвав функцию выполнения typeof() для каждой из них. Одна из них будет классифицирована как "число" - поскольку она возвращает идентификатор индекса сценария - а другая будет классифицирована как "метод".

-

Поэтому имейте в виду, что в общем случае, говоря о методах и переменных методов, мы всегда будем ссылаться на функции, которые не были определены с помощью индекса сценария.

-

Ниже приведены три простых примера создания переменной метода с использованием различных диапазонов:

-

// Local
- var _debug = function(message)
- {
-     show_debug_message(message);
- }
-
- // Instance
- do_maths = function(val1, val2, val3)
- {
-     return (val1 * val2) - val3;
- }
-
- // Global
- global.pd = function(_x1, _y1, _x2, _y2)
- {
-     return point_distance(_x1, _y1, _x2, _y2);
- } -

-

Обратите внимание, что в приведенном выше коде различные параметры, заданные в качестве входных данных для функции, имеют имена, и именно эти имена должны использоваться в функции для обозначения различных входных данных. Также обратите внимание, что вы можете использовать оператор return для возврата значения из функции для использования в других частях кода, и что функция, для которой не определено возвращаемое значение, по умолчанию возвращает undefined.

-

ПРИМЕЧАНИЕ Хотя переменная будет находиться в выбранной области видимости, фактическая функция будет привязана к области видимости, в которой она была изначально определена. Например, функции сценария имеют глобальную область видимости и "не привязаны" (т.е. они не связаны ни с какими экземплярами), но если у вас есть функция сценария, которая создает другую функцию как переменную метода внутри нее, а затем вы вызываете эту функцию сценария из экземпляра, функция, используемая в сценарии, будет привязана к переменной экземпляра как метод. В общем случае об этом не нужно задумываться, но для более сложных операций с переменными метода это стоит принять во внимание. Это также применимо при использовании других конструкций, таких как with - когда вы создаете переменную метода внутри функции with, функция будет привязана к экземпляру, который в данный момент находится в области видимости.

-

После создания переменную метода можно использовать так же, как, например, функцию времени выполнения или функцию сценария:

-

create_vec = function(_x1, _y1, _x2, _y2);
- {
-     var _array;
-     _array[0] = point_distance(_x1, _y1, _x2, _y2);
-     _array[1] = point_direction(_x1, _y1, _x2, _y2);
-     return _array;
- }
-
- vec = create_vec(x, y, mouse_x, mouse_y); -

-

Переменные, созданные внутри функции, подчиняются тем же правилам, что и обычные, и имеют локальную область видимости в соответствии с используемым ключевым словом или областью видимости вызова функции. В приведенном выше примере мы используем var, поэтому переменная массива находится в локальной области видимости функции. Если бы мы не использовали ключевое слово, то переменная была бы создана в области видимости экземпляра, вызвавшего функцию.

-

Методы, как и функции сценария, могут принимать необязательные аргументы, которые имеют значения по умолчанию, когда они не переданы:

-

create_attachment = function(_attachment, _x = x, _y = y)
- {
-     return instance_create_layer(_x, _y, layer, _attachment);
- }

-

Приведенная выше функция принимает три аргумента, причем два последних являются необязательными. Если они не переданы при вызове функции, то по умолчанию будут использоваться координаты экземпляра x и y.

-

Обратите внимание, что если аргумент не передан, и у него нет значения по умолчанию, то он будет равен undefined.

-

Методы также могут использовать статические переменные, которые сохраняют свои значения при каждом вызове функции. Для получения дополнительной информации прочтите эту страницу.

-

Ниже мы перечислим несколько вспомогательных функций, связанных с переменными метода:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Runtime_Functions.htm b/Manual/contents/GameMaker_Language/GML_Overview/Runtime_Functions.htm index 431b5d363..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Runtime_Functions.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Runtime_Functions.htm @@ -1,67 +0,0 @@ - - - - - - Функции времени выполнения - - - - - - - - - - -

Функции времени выполнения

-

Общее определение функции выглядит примерно так:

-

Функция имеет вход и выход, и выход связан с входом.

-

В GameMaker это означает две разные вещи, но обе они работают одинаково:

- -

В обоих вышеперечисленных случаях функция имеет вид имени функции, за которым следуют входные аргументы, заключенные в скобки () и разделенные запятыми (если функция не имеет входных аргументов, то используются просто скобки). Эта страница посвящена функциям времени выполнения (т.е. тем, которые встроены в GameMaker для формирования GameMaker Language), но общие правила, приведенные ниже, применимы ко всем типам функций.

-

Вот примерная структура функции:

-

<function>(<arg0>, <arg1> ,... <argN>);

-

Некоторые функции могут возвращать значения и использоваться в выражениях, в то время как другие просто выполняют команды, как показано в следующих двух примерах функций времени выполнения:

-

// Destroy the calling instance
- // This requires no arguments and returns nothing
- instance_destroy();
-
- // Get the distance from the current instance position to the mouse position
- // This takes four arguments and returns a real value
- dist = point_distance(x, y, mouse_x, mouse_y); -

-

ПРИМЕЧАНИЕ Везде, где в руководстве в качестве возвращаемого значения функции указано "N/A", это означает, что функция не предназначена для возврата какого-либо значения в рамках своей работы. Если вы попытаетесь проверить возвращаемое значение из этих функций, то получите значение undefined.

-

Иногда возвращаемое значение функции может быть значением, которое вы хотите использовать в присваивании, но вы должны заметить, что невозможно использовать любую функцию непосредственно в качестве левой части присваивания. Например, следующий код для установки скорости на экземпляре выдаст ошибку:

-

instance_nearest(x, y, obj).speed = 0;

-

Возвращаемое значение для выражения в этом примере кода является целым числом (уникальное значение ID для ближайшего экземпляра), поэтому для его использования таким образом и правильного обращения к требуемому экземпляру оно должно быть заключено в скобки (более подробная информация приведена в разделе Обращение к переменным в других экземплярах ). Приведенный выше код будет правильно записать как:

-

(instance_nearest(x, y, obj)).speed = 0;
-
- //or more correctly still
-
- var _inst = instance_nearest(x, y, obj);
- _inst.speed = 0; -

-

В разделе " Справочник по языку " руководства перечислены все доступные вам функции времени выполнения и приведены примеры их использования, а также другая важная информация о том, что они могут возвращать, какие события они могут вызывать и т.д.. Для получения дополнительной информации о функциях и методах сценария, определяемых пользователем, см. раздел " Функции сценария " и раздел " Переменные метода".

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Script_Functions.htm b/Manual/contents/GameMaker_Language/GML_Overview/Script_Functions.htm index 5c63a4d54..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Script_Functions.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Script_Functions.htm @@ -1,226 +0,0 @@ - - - - - - Функции и переменные сценария - - - - - - - - - - -

Функции и переменные сценария

-

Активы сценария - это, по сути, набор одной или нескольких функций или переменных, определенных пользователем, которые вы сами записываете в виде фрагментов кода в редакторе сценариев. Функции, которые вы определяете в сценарии, могут разрешать выражения, возвращать значения или делать все остальное, что разрешено на сайте GameMaker Language, как и встроенные функции времени выполнения.

-

Функции сценариев обычно используются, если у вас есть блок кода, который вы используете в нескольких местах или объектах, или когда вы хотите, чтобы блок кода использовался в нескольких объектах модульно. Использование скриптов для определения функций означает, что при необходимости вы можете изменить функцию всего один раз, и это изменение будет "подхвачено" каждым объектом, в котором есть вызов функции.

-

Скрипты также могут быть очень удобны с организационной точки зрения, поскольку они позволяют создавать группы функций, относящихся к определенной категории - например, у вас может быть несколько функций, связанных со столкновениями между объектами в вашей игре, поэтому вы создадите скрипт "Collision_Functions" и будете хранить в нем все эти функции вместе.

-

Также см: Функции сценария в сравнении с методами

-

Создание функций

-

При создании сценария с функциями в нем, функции должны быть созданы с использованием следующих форматов:

-

function name( parameter1, parameter2, ... )
- {

-     statement1;
-     statement2;
-     ...
- } -

-

или:

-

name = function( parameter1, parameter2, ... )
- {
-     statement1;
-     statement2;
-     ...
- } -

-

Чтобы создать функцию в GML Visual, используйте Declare A New Function. Включите опцию "Temp" для создания переменной метода (второй синтаксис показан выше).

-

В целом, однако, для скриптовых функций следует использовать первую форму, так как она определяет функцию именно как скриптовую, то есть она будет глобальной по области видимости, ей будет присвоен индекс скрипта и не потребуется префикс global для ее идентификации, так как компилятор распознает ее как скриптовую функцию.

-

При использовании второй формы вместо этого будет создана переменная метода глобальной области видимости, и как таковая она не будет распознана IDE как функция сценария и потребует использования префикса global при ссылках в вашем коде.

-

ПРИМЕЧАНИЕ Вы можете проверить это, используя обе формы в сценарии, а затем вызвав функцию выполнения typeof() для каждой из них. Одна из них будет классифицирована как "число" - поскольку она возвращает идентификатор индекса сценария - а другая будет классифицирована как "метод".

-

Параметры/Аргументы

-

Вы можете определить свои собственные параметры/аргументы для функции, которые будут доступны функции как локальные переменные и могут быть использованы для любых целей внутри этой функции:

-

function move(spd, dir)
- {
-     speed = spd;
-     direction = dir;
- }

-

Эта функция принимает два аргумента и применяет их значения к переменным экземпляра speed и direction. Теперь ее можно вызывать как любую функцию времени выполнения и передавать в нее аргументы:

-

var _mouse_dir = point_direction(x, y, mouse_x, mouse_y);
-
- move(4, _mouse_dir); -

-

Необязательные аргументы

-

Если аргумент не передан функции, его значением будет undefined. Вы можете использовать это для определения необязательных аргументов и проверять, передан аргумент или нет, проверяя, равен ли он undefined. Однако вы также можете явно определить значение по умолчанию для аргумента, которое будет использоваться вместо undefined, когда он не передан.

-

Вы можете присвоить такое значение по умолчанию параметру с помощью знака равенства (=), сделав его необязательной переменной:

-

function move(spd, dir = 90)
- {
-     speed = spd;
-     direction = dir;
- }

-

Если аргумент dir не передан при вызове вышеуказанной функции, то его значение по умолчанию будет равно 90, перемещая экземпляр в направлении вверх.

-

СОВЕТ Вы можете опустить аргументы в вызовах функций, и они будут иметь значение по умолчанию undefined (или значение по умолчанию для этого аргумента, определенное функцией).
-
- Например, написать my_func(0,,,1) - это то же самое, что написать my_func(0, undefined, undefined, 1). -

-
-

Значением по умолчанию необязательной переменной может быть выражение, поэтому, например, при определении необязательной переменной можно использовать переменные и вызывать функции. Обратите внимание, что такое выражение будет выполнено только в том случае, если его необязательный аргумент не указан в вызове функции. См. следующий пример функции протоколирования:

-

function log(text = "Log", object = object_index, time = date_datetime_string(date_current_datetime()))
- {
-     var _string = "[" + string(time) + "] ";
-     _string += object_get_name(object) + ": ";
-     _string += text;
-     
-     show_debug_message(_string);
- }

-

Эта функция принимает три аргумента, где первый аргумент по умолчанию является строковой константой, второй аргумент по умолчанию является переменной экземпляра (в области видимости вызывающего экземпляра), а третий аргумент по умолчанию является выражением, вызывающим функцию для получения текущей даты и времени. Теперь эта функция может быть вызвана с тремя аргументами, как показано в следующем примере:

-

log();
- // Prints: [09-Jun-21 12:34:37 PM] Object1: Log
-
- log("Player Shot", obj_player, 10);
- // Prints: [10] obj_player: Player Shot -

-

JSDoc

-

Мы также рекомендуем добавить комментарии для определения свойств функции (подробнее см. раздел " Комментарии JSDoc" ), чтобы простой сценарий выглядел следующим образом:

-

/// @function                 log(message);
- /// @param {string}  message  The message to show
- /// @description              Show a message whenever the function is called.
-
- function log(message)
- {
-     show_debug_message(message);
- } -

-

Дополнительные функции для скрипта могут быть добавлены в том же формате, как показано выше, одна за другой внутри актива скрипта.

-

Multiple Functions In One Script

-

Возвращаемое значение

-

Функции в сценариях также могут возвращать значение, как и функции времени выполнения, и поэтому их можно использовать в выражениях. Для этого вы можете использовать return выражение:

-

return <expression>

-

Следует заметить, что оператор return выполнение функции заканчивается на операторе возвратаозначает, что любой код, пришедший после вызова return , не будет выполнен. Вот короткий пример функции под названием "sqr_calc", которая вычисляет квадрат любого переданного ей значения, и в случае, если данное значение не является действительным числом, она использует return для досрочного завершения функции, так что фактическое вычисление никогда не выполняется:

-

/// @function           sqr_calc(val);
- /// @param {real}  val  The value to calculate the square of
- /// @description        Calculate the square of the given value
-
- function sqr_calc(val)
- {
-     if (!is_real(val))
-     {
-         return 0;
-     }
-
-     return (val * val);
- } -

-

Обратите внимание, что если вы создадите функцию скрипта без возвращаемого значения, а затем в своем коде проверите его наличие, то по умолчанию вы получите значение undefined.

-

Чтобы вызвать функцию скрипта из кода, просто используйте ее так же, как и при вызове любой функции времени выполнения - то есть напишите имя функции со значениями параметров в круглых скобках. Таким образом, приведенный выше сценарий будет вызываться следующим образом:

-

if keyboard_check_pressed(vk_enter)
- {
-     val = sqr_calc(amount);
- }

-

ПРИМЕЧАНИЕ: При использовании собственных функций из скриптов в редакторе кода можно нажать кнопку или нажать среднюю кнопку мыши на имени функции, чтобы открыть содержащий ее сценарий для редактирования.

-

Имена сценариев в сравнении с именами функций

-

Важно понимать, что имена скриптов не зависят от функций, которые они содержат, поэтому вы можете называть свои скрипты более "здравым" образом, т.е. все ваши функции AI могут быть помещены в скрипт "Enemy_AI" (следуя стандартным соглашениям об именовании активов, состоящим только из буквенно-цифровых символов и нижнего символа "_"). Однако вы все равно можете вызывать скрипты в своей игре - и вы можете называть скрипты так же, как и функции, которые вы в них определяете - что может привести к проблемам из-за способа, которым GameMaker хранит ссылки на активы. В качестве примера рассмотрим этот код, вызываемый из экземпляра:

-

function indirectCall(func, arg)
- {
-     func(arg);
- }
-
- indirectCall(myscript, arg); -

-

Приведенный выше код пытается вызвать скрипт под названием "myscript" внутри метода, что в данном случае приведет к неудаче. Это происходит потому, что встроенная функция фактически использует индекс актива скрипта, а не вызывает функцию скрипта - например: если индекс скрипта разрешается в "4", то функция вызывает 4(arg);, что не имеет смысла. Вместо этого код должен быть структурирован одним из следующих двух способов:

-

function indirectCall(func, arg)
- {
-     func(arg);
- }
-
- indirectCall(method(undefined, myscript), arg);
-
- // OR
-
- function indirectCall(func, arg)
- {
-     script_execute(func, arg);
- }
-
- indirectCall(myscript, arg); -

-

Это важно отметить, особенно при работе со старыми проектами, где скрипты содержат одну единственную функцию, и функция называется так же, как и скрипт. Однако на самом деле так делать никогда не следует, и ваши скрипты должны называться независимо от функций, которые они содержат.

-
-

Объем сценария

-

Это подводит нас к последней и самой важной вещи, которую необходимо знать о скриптах и функциях, которые они содержат: скрипты анализируются на глобальном уровне и компилируются в самом начале игры. Это означает, что технически все функции в скрипте являются "несвязанными" переменными метода, а любые переменные, объявленные вне функции в скрипте, будут считаться глобальными переменными. Например, рассмотрим этот скрипт:

-

function Foo()
- {
-     // Do something
- }
- blah = 10;
- function Bar()
- {
-     // Do something else
- }

-

В приведенном выше случае мы определили не только функции Foo и Bar, но и переменную blah, и все они считаются созданными в глобальной области видимости. Для распознавания функций не требуется ключевое слово global, так как компилятор понимает, что эти функции являются частью сценария, но если бы вы захотели получить доступ к blah, то вам пришлось бы это сделать:

-

val = global.blah;

-

Тем не менее, мы рекомендуем всегда явно указывать глобальные переменные при их создании в скриптах, чтобы избежать проблем в дальнейшем. Скрипты также являются идеальным местом для определения любых макросов или Enums(констант), поскольку добавление их в скрипт вне функции означает, что они будут созданы для использования до того, как код игры начнет выполняться. Ниже приведен пример скрипта, который создает различные значения глобальной области видимости для игры:

-

/// Initialise All Global Scope Values And Constants
- global.player_score = 0;
- global.player_hp = 100;
- global.pause = false;
- global.music = true;
- global.sound = true;
-
- enum rainbowcolors
- {
-     red,
-     orange,
-     yellow,
-     green,
-     blue,
-     indigo,
-     violet
- }
-
- #macro weapon_num 3
- #macro weapon_gun 0
- #macro weapon_bomb 1
- #macro weapon_knife 2 -

-

Обратите внимание, что все эти константы устанавливаются вне вызова любой функции, то есть они инициализируются до всего остального и в глобальной области видимости. Это означает, что если вы хотите использовать скрипт для инициализации переменных в области видимости экземпляра , вы должны обернуть их в функцию, например:

-

/// @function                init_enemy();
- /// @description             Initialise enemy instance vars
-
- function init_enemy()
- {
-     hp = 100;
-     dmg = 5;
-     mana = 50;
- } -

-

Так, скрипты можно использовать для создания макросов, перечислений и глобальных переменных до запуска игры, чтобы они были готовы к использованию в любое время, а также для создания "несвязанных" методов (пользовательских функций), которые можно использовать в вашей игре подобно функциям времени выполнения GML.

-

И последнее, что следует отметить о функциях скрипта: если вы разрабатываете для Web (т.е. ориентируетесь на HTML5), то существует дополнительный протокол функций, который вы можете использовать при добавлении функций в скрипты, который заключается в префиксе имени функции с gmcallback_, например:

-

gmcallback_create_button

-

Использование приведенного выше имени функции означает, что функция gmcallback_create_button() не будет обфусцирована и поэтому может быть использована в расширениях JavaScript и других областях вашей игры, например, при использовании clickable_* функции.

-

Статические переменные

-

Функции также могут использовать статические переменные, которые сохраняют свои значения при каждом вызове функции. Для получения дополнительной информации прочтите эту страницу.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Script_Functions_vs_Methods.htm b/Manual/contents/GameMaker_Language/GML_Overview/Script_Functions_vs_Methods.htm index bcb5f0b22..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Script_Functions_vs_Methods.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Script_Functions_vs_Methods.htm @@ -1,103 +0,0 @@ - - - - - - - Функции сценария в сравнении с методами - - - - - - - - - - -

Функции сценария в сравнении с методами

-

На этой странице представлена важная информация об использовании функций сценария в сравнении с методами.

-

Основное различие

-

Функция сценария создается с помощью этого синтаксиса:

-

function name()
- {
-     code;
- }

-

Переменная метода создается с помощью этого синтаксиса:

-

name = function()
- {
-     code;
- }

-

Первый синтаксис следует использовать в скриптах для создания глобальных функций, которые можно вызывать из любой области видимости в вашей игре.

-

Второй синтаксис следует использовать при создании функций в структурах/конструкторах и объектах. Этот синтаксис создает переменную, содержащую метод.

-

Прямые звонки

-

Вы можете вызывать функции и методы сценария напрямую, используя круглые скобки (), как и функции времени выполнения:

-

// Create the function
- function reset_x()
- {
-     x = xstart;
- }
-
- // Call the function
- reset_x(); -

-

Вы также можете использовать функцию script_execute() для запуска функции сценария, хотя сейчас это устаревшая функция и не рекомендуется к использованию.

-

Косвенные вызовы: Методы

-

Вы можете хранить ссылку на метод в другой переменной, чтобы позже вызвать его через эту переменную:

-

// Create method
- reset_alpha = function()
- {
-     image_alpha = 1;
- }
-
- // Pass reference and call
- temp_1 = reset_alpha;
- temp_1(); -

-

ПРИМЕЧАНИЕ Посмотрите, как в коде не ставится () после reset_alpha. Это потому, что мы читаем ссылку на метод, а не вызываем его.

-

В этом примере вызов temp_1 вызовет reset_alpha, так как в нем хранится ссылка на этот метод.

-

Вы можете передавать ссылку на метод таким образом. Однако при использовании функций сценария есть оговорка.

-

Косвенные вызовы: Функции сценария

-

Вы также можете хранить ссылку на функцию сценария в другой переменной:

-

// Create function
- function reset_x()
- {
-     x = xstart;
- }
-
- // Store reference
- temp_1 = reset_x; -

-

Теперь вы можете вызвать temp_1, сделав следующее:

-

temp_1();

-

Однако, поскольку эта переменная ссылается на функцию скрипта, сначала нужно преобразовать ее в метод, а затем вызвать его.

-

Это может легко привести к увеличению использования памяти, особенно если вы вызываете его каждый кадр, потому что движок теперь должен создавать новый метод каждый кадр для этого вызова.

-

Итак, каково же решение?

- -

Чтобы реализовать второе решение, ваш код будет выглядеть следующим образом:

-

temp_1 = method(undefined, reset_x);

-

Это создание нового метода из функции сценария reset_x, используя method().

-

Вызов temp_1() теперь с использованием круглых скобок не увеличит использование памяти, так как метод уже создан для вас.

-

Опять же, это применимо только в том случае, если вы вызываете функцию скрипта косвенно, через ссылку, хранящуюся в переменной. Вызов функции напрямую не вызывает таких проблем.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Struct_Forbidden_Variables.htm b/Manual/contents/GameMaker_Language/GML_Overview/Struct_Forbidden_Variables.htm index a445f6343..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Struct_Forbidden_Variables.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Struct_Forbidden_Variables.htm @@ -1,169 +0,0 @@ - - - - - - Структура Запрещенные переменные - - - - - - - - - - -

Структура Запрещенные переменные

-

При создании struct можно использовать определенные встроенные переменные в качестве имен переменных-членов, например:

-

mystruct =
- {
-     object_index : obj_Player,
-     speed : 3,
-     image_blend : c_red
- }

-

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

-

Следующие встроенные глобальные переменные доступны для использования в ваших проектах, но не могут быть использованы в качестве переменных-членов struct:

- -

-

Помимо этих глобальных переменных, существует также ряд устаревших встроенных глобальных переменных, которые недоступны из-за того, что они могут быть включены в импортируемые старые продукты(GameMaker должен зарезервировать эти переменные, чтобы распознать их при импорте и отметить их для обновления/удаления):

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Structs.htm b/Manual/contents/GameMaker_Language/GML_Overview/Structs.htm index a4f31428a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Structs.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Structs.htm @@ -1,256 +0,0 @@ - - - - - - Структуры и конструкторы - - - - - - - - - - -

Структуры и конструкторы

-

Структура - это переменная, которая содержит коллекцию других переменных. Переменные, которые хранит struct, могут быть любого ранее упомянутого типа данных, и эти переменные можно читать и записывать после первоначального объявления struct, а также можно добавлять дополнительные переменные в struct после его объявления.

-

Переменные, используемые в struct, должны соответствовать обычной схеме именования переменных, то есть: они не могут начинаться с цифры и должны состоять только из буквенно-цифровых символов и символа подчеркивания "_", а также обратите внимание, что содержимое struct не зависит от экземпляра или функции, которая его создала, и поэтому вы можете - если хотите - использовать встроенные имена переменных, такие как image_index или x и y.

-

После первоначального создания структуры не требуют никаких затрат на обработку, пока они существуют, хотя и занимают место в памяти. Синтаксис struct выглядит следующим образом:

-

<variable> =
- {
-     <variable> : <value>,
-     <variable> : <value>,
-     etc...
- }; -

-

Так, примером этого на практике может быть:

-

mystruct =
- {
-     a : 20,
-     b : "Hello World"
- };

-

Приведенный выше код создает struct в переменной mystruct и заполняет ее некоторыми значениями (struct могут быть созданы в локальном, экземпляровом и глобальном масштабах, как и любая другая переменная - более подробную информацию см. в разделе " Переменные и масштабы переменных "). Обратите внимание, что вам не обязательно заполнять содержимое структуры при ее первоначальном создании, и вы можете создать пустую структуру, просто сделав это:

-

mystruct = {};

-

Переменные могут быть добавлены в эту структуру позднее в коде игры. Для их последующего добавления используется оператор dot (так же, как в разделе " Обращение к переменным в других экземплярах"):

-

mystruct.newItem = "Some Text";

-

Это дает тот же результат, что и инициализация struct следующим образом:

-

mystruct =
- {
-     newItem : "Some Text"
- };

-

Вот пример структуры с различными переменными и типами данных:

-

var _xx = 100;
- mystruct =
- {
-     a : 10,
-     b : "Hello World",
-     c : int64(5),
-     d : _xx + 50,
-     e : function(a, b)
-         {
-             return a + b;
-         },
-     f : [ 10, 20, 30, 40, 50 ],
-     g : image_index
- };

-

В приведенном выше коде вы заметите, что в структурах можно определять методы и использовать функции времени выполнения, а также использовать локальные переменные и переменные экземпляра в объявлении структуры.

-

Переменные экземпляра в объявлении структуры?

-

Например, в приведенном выше примере вы заметите, что переменная struct "g" устанавливается в значение image_index, которое является переменной экземпляра. Вы можете подумать, что в этом случае вам нужно использовать ключевое слово other, чтобы получить переменную экземпляра, но это не обязательно. По сути, когда вы определяете struct, все переменные-члены, расположенные слева от двоеточия ":", являются переменными struct, а значения и переменные, расположенные справа, используют область видимости того, что определяет struct (в данном случае, экземпляра).

-

Давайте рассмотрим простой пример, чтобы проиллюстрировать это. Допустим, вы хотите определить структуру с переменными "x" и "y" и установить их на "x" и "y" экземпляра, определяющего структуру. На практике код будет выглядеть следующим образом:

-

mystruct =
- {
-     x : x,
-     y : y
- };

-

В приведенном выше коде переменные-члены struct x и y устанавливаются в значения, хранящиеся в переменных экземпляра x и y, поскольку правая часть двоеточия ":" относится к экземпляру, определяющему struct. Стоит отметить, что это означает, что вы не можете использовать переменные-члены struct для определения последующих переменных внутри объявления struct. Например, в следующем случае вы получите ошибку:

-

mystruct =
- {
-     a : 10,
-     b : 10,
-     c : a + b
- }

-

Ошибка возникает потому, что переменные a и b на самом деле оцениваются в области видимости того, что определяет структуру (они находятся справа от двоеточия ":"), а не определяются в самой структуре.

-

ВАЖНО! Вы не можете использовать какие-либо встроенные глобальный в качестве имен членов структуры, например: game_id или fps. Полный список этих глобальных переменных вы можете найти на следующей странице:

- -

После того, как структура определена, вы можете получить доступ к данным в ней, используя нотацию "точка", как показано ниже:

-

mystruct =
- {
-     a : 20,
-     b : "Hello World"
- }
-
- mystring = mystruct.b + string(mystruct.a); -

-

Вы также можете выполнять операции над переменными внутри struct или использовать их в функциях, как и любые другие переменные. Например:

-

mystruct.a += 1;
- mystruct.b = mystruct.a + 20;
- mydir = point_direction(mouse_x, mouse_y, mystruct.xx, mystruct.yy);

-

Наконец, структуры могут иметь другие структуры, вложенные в них, например, так:

-

mystruct =
- {
-     a :
-     {
-         aa : "This is an example"
-     },
-     b :
-     {
-         bb : "And another one"
-     },
- };

-

Для доступа к таким вложенным структурам по-прежнему используется точечная нотация, например, так:

-

var _str = mystuct.a.aa + " " + mystruct.b.bb;
- show_debug_message(_str);

-

Другим способом доступа к данным в структуре является использование функции with() функцию. Так, например, вы можете сделать следующее:

-

with(mystruct)
- {
-     a += other.x;
- }

-

Использование with() изменяет область видимости кода на данную структуру, где вы можете манипулировать переменными-членами в области видимости структуры. Обратите внимание, что в примере мы также используем ключевое словоother . Это работает так же, как и в экземпляре при использовании with(), и будет ссылаться на экземпляр (или struct), который фактически выполняет блок кода.

-

Когда структура больше не нужна, она может быть удалена из памяти с помощью оператора delete оператор, который помечает, что структура может быть собрана. Это не является строго обязательным, поскольку сборщик мусора может сделать это автоматически, если на struct больше не ссылаются в вашем коде, но это хорошая практика, и мы рекомендуем это делать (например, вызвать delete в событии Clean Up экземпляра, чтобы явно сообщить сборщику мусора, что struct в области видимости экземпляра должна быть удалена). Вот пример:

-

// Create event
- mystruct =
- {
-     pos_x : x,
-     pos_y : y,
-     count : 1000
- };
-
- // Clean Up event
- delete mystruct; -

-

Функции конструктора

-

Вы также можете использовать функции или методы сценария для создания функций, которые могут быть использованы для генерации новых структур, что требует использования ключевого слова constructor для функции и оператора new при создании структуры из такой функции. См. следующую функцию:

-

function Vector2(_x, _y) constructor
- {
-     x = _x;
-     y = _y;
-
-     static Add = function(_vec2)
-     {
-         x += _vec2.x;
-         y += _vec2.y;
-     }
- } -

-

Или, используя синтаксис переменной метода:

-

Vector2 = function(_x, _y) constructor
- {
-     x = _x;
-     y = _y;
-
-     static Add = function(_vec2)
-     {
-         x += _vec2.x;
-         y += _vec2.y;
-     }
- } -

-

Здесь мы создаем функцию под названием Vector2 и сообщаем GameMaker, что это функция, используемая для создания структур, добавляя ключевое слово constructor после ее определения. Затем вы можете вызвать эту функцию-конструктор следующим образом:

-

v2 = new Vector2(10, 10);

-

Переменная v2 теперь будет содержать структуру с переменными x и y и static переменная метода Add.

-

Вы также можете использовать необязательные аргументы в функциях конструктора:

-

function Vector2(_x = 0, _y = 0) constructor
- {
-     x = _x;
-     y = _y;
- }

-

Теперь этот конструктор будет использовать 0 для аргументов _x и _y, если они не указаны при вызове функции. Это означает, что вы можете создать новую структуру Vector2 без необходимости указывать какие-либо аргументы:

-

empty_vector = new Vector2();

-

Наследование

-

Функции, созданные таким образом, также будут поддерживать одиночное наследование, то есть: вы можете создать функцию-конструктор, которая наследует данные от другой функции-конструктора.

-

ПРИМЕЧАНИЕ: При работе с наследованием вы не можете использовать переменные метода для определения функции конструктора, только функции сценария.

-

Например, выше мы создали функцию-конструктор Vector2, поэтому мы можем использовать ее в качестве "родителя" для другой функции-конструктора, которую мы назовем Vector3:

-

function Vector3(_x, _y, _z) : Vector2(_x, _y) constructor
- {
-     z = _z;
-
-     static Add = function( _vec3 )
-     {
-         x += _vec3.x;
-         y += _vec3.y;
-         z += _vec3.z;
-     }
- } -

-

Как вы видите, при определении функции мы используем двоеточие ":", чтобы отделить новый конструктор от родительского конструктора, от которого он наследуется. Дочерний конструктор (Vector3) передает аргументы _x и _y в родительский конструктор (Vector2), которые используются для запуска сначала родительского конструктора, после чего выполняется дочерний конструктор. Таким образом, дочерний конструктор получает родительские переменные (x и y), а также может определять свои собственные (z).

-

Вы также можете передавать постоянные значения в родительский конструктор, чтобы определенный дочерний конструктор всегда предоставлял одни и те же значения своему родительскому конструктору:

-

function Item(damage) constructor
- {
-     my_damage = damage;
- }
-
- function BasicSword() : Item(10) constructor
- {}
-
- var _basic_sword = new BasicSword();
- show_debug_message(_basic_sword.my_damage); // Prints 10 -

-

Это означает, что урон базового меча всегда будет равен 10, поскольку он передает это значение своему родительскому конструктору независимо от того, какими могут быть его собственные аргументы.

-

Обратите внимание, что присвоение значения по умолчанию аргументу в дочернем конструкторе отменяет значение по умолчанию для этого аргумента в родительском. Смотрите следующий пример:

-

function Parent(value = 10) constructor
- {
-     show_debug_message(value);
- }
-
- function Child(value = 20) : Parent(value) constructor
- {
-     show_debug_message(value);
- }
-
- var _child = new Child(); -

-

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

-

Более подробную информацию об операторах new и delete см. на следующих страницах:

- -

Строковый вывод

-

И последнее, что следует упомянуть о структурах, это то, что вы можете изменить то, что выводится на консоль из них для отладки. По умолчанию вызов функции show_debug_message() на struct выводит содержимое struct (как показано выше). Однако можно настроить это сообщение, добавив в struct специально названный метод toString:

-

mystruct =
- {
-     a : 20,
-     b : "Hello World",
-
-     toString : function()
-     {
-         return "This stuct says " + b + ", " + string(a) + " times!";
-     }
- }
- show_debug_message(mystruct); -

-

Теперь, когда вызывается функция show_debug_message(), для генерации вывода будет использоваться метод toString, и - в приведенном выше примере - вы получите:

-

This struct says Hello World, 20 times!

-

Обратите внимание, что вы также можете вызвать функцию string() для ссылки на struct и использовать ее для вывода содержимого - или метода toString - на экран, или сохранить его в файл, или что угодно, например:

-

var _str = string(mystruct);
- draw_text(32, 32, _str);

-

Наконец, существует ряд функций времени выполнения, которые вы можете использовать для структур, чтобы получить переменные, которые они содержат, а также несколько других вещей. Вы можете найти их в следующем разделе:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/argument.htm b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/argument.htm index bd1faf291..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/argument.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/argument.htm @@ -1,68 +0,0 @@ - - - - - - argument - - - - - - - - - - -

argument

-

Эта переменная содержит массив, который используется вместе с переменной только для чтения argument_count в функциях или методах сценария. Каждая позиция массива содержит входное значение для функции и специально предназначена для использования в функциях с переменным аргументом.

-

Обратите внимание, что существует также ряд независимых переменных глобальной области видимости, которые также могут быть использованы в пользовательских функциях для ссылки на различные входные аргументы: argument0, argument1, argument2, и т.д... вплоть до argument15.

-

ПРИМЕЧАНИЕ: Это больше не является строго обязательным и предоставляется больше для поддержки наследия, чем для чего-либо еще. Все определяемые пользователем функции будут принимать переменные аргументы, и любой аргумент, передаваемый в функцию, который не является частью именованных входов, по умолчанию инициализируется как undefined, что можно проверить с помощью функции is_undefined().

-

-

Синтаксис:

-

argument[n]
- argument1
- argument2
- ...
- argument15

-

-

Возвращается:

-

Variable (can be of any data type supplied to the function)

-

-

Пример:

-

function my_array()
- {
-     var i, arg;
-     for (i = 0; i < 5; i += 1;)
-     {
-         if argument_count > i
-         {
-             arg[i] = argument[i]
-         }
-         else
-         {
-             arg[i] = -1;
-         }
-     }
- }

-

Приведенный выше код использует переменную argument_count вместе с массивом argument для инициализации переменных и является примером того, как разрешить пользовательской функции принимать переменное количество аргументов.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/argument_count.htm b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/argument_count.htm index eea3f1a8b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/argument_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/argument_count.htm @@ -1,63 +0,0 @@ - - - - - - argument_count - - - - - - - - - - -

argument_count

-

Эта переменная, доступная только для чтения, возвращает количество "аргументов", передаваемых функции сценария или функции method. Обычно используется в сочетании с массивом аргументов (argument[0...15]), чтобы позволить варьировать входные аргументы для данной функции.

-

ПРИМЕЧАНИЕ: Это больше не является строго обязательным и предоставляется больше для поддержки наследия, чем для чего-либо еще. Все определяемые пользователем функции будут принимать переменные аргументы, и любой аргумент, передаваемый в функцию, который не является частью именованных входов, по умолчанию инициализируется как undefined, что можно проверить с помощью функции is_undefined().

-

-

Синтаксис:

-

argument_count

-

-

Возвращается:

-

-

-

Пример:

-

function my_array()
- {
-     var i, arg;
-     for (i = 0; i < 5; i += 1;)
-     {
-         if argument_count > i
-         {
-             arg[i] = argument[i]
-         }
-         else
-         {
-             arg[i] = -1;
-         }
-     }
- }

-

Приведенный выше код использует переменную argument_count вместе с массивом argument для инициализации переменных и является примером того, как разрешить пользовательской функции принимать переменное количество аргументов.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/async_load.htm b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/async_load.htm index 3f6046ecf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/async_load.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/async_load.htm @@ -1,56 +0,0 @@ - - - - - - async_load - - - - - - - - - - -

async_load

-

Эта переменная является глобальной и используется для хранения карты DS при использовании в асинхронных событиях, и -1 во всех остальных случаях. Фактическое содержимое карты DS будет зависеть от типа обратного вызова асинхронного события, а также от функции, которая была использована для запуска события, поэтому обратитесь к отдельным страницам этих событий для получения полной информации о возможном содержимом карты DS.

-

-

Синтаксис:

-

async_load

-

-

Возвращается:

-

DS Map ID

-

-

Расширенный пример:

-

sprite =  sprite_add("site.com/path/image.png", 16, true, true, 0, 0);

-

Приведенный выше код будет вызван в событии загрузки sprite с внешнего URL. Это затем вызовет асинхронное событие Image Loaded Asynchronous Event, в котором вы разберете карту async_load:

-

if ds_map_find_value(async_load, "id") == sprite
- {
-     if (ds_map_find_value(async_load, "status") >= 0)
-     {
-         sprite_index = sprite;
-     }
- }

-

Приведенный выше код сначала проверит идентификатор карты async_load, затем проверит статус обратного вызова. Если значение больше или равно 0 (сигнализирует об успехе), то результат обратного вызова будет использован для установки индекса sprite экземпляра на только что загруженное изображение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/health.htm b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/health.htm index c962f5970..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/health.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/health.htm @@ -1,52 +0,0 @@ - - - - - - health - - - - - - - - - - -

health

-

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

-

-

Синтаксис:

-

health

-

-

Возвращается:

-

Real (single precision floating point value)

-

-

Пример

-

if (health <= 0)
- {
-     global.state = "Game Over";
-     instance_destroy();
- }

-

Приведенный выше код проверяет переменную health, и если она меньше или равна 0, устанавливается глобальная переменная и экземпляр уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/lives.htm b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/lives.htm index dc89bc1ca..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/lives.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/lives.htm @@ -1,51 +0,0 @@ - - - - - - lives - - - - - - - - - - -

lives

-

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

-

-

Синтаксис:

-

lives

-

-

Возвращается:

-

Real (single precision floating point value)

-

-

Пример

-

if (lives < 5)
- {
-     lives += 1;
- }

-

Приведенный выше код проверяет переменную lives, и если она меньше 5, к ней прибавляется 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/score.htm b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/score.htm index d1b70f806..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/score.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Builtin_Global_Variables/score.htm @@ -1,63 +0,0 @@ - - - - - - score - - - - - - - - - - -

score

-

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

-

-

Синтаксис:

-

score

-

-

Возвращается:

-

Real (single precision floating point value)

-

-

Пример

-

switch (object_index)
- {
-     case obj_Enemy_Fighter:
-         score += 10;
-     break;
-
-     case obj_Enemy_Mage:
-         score += 25;
-     break;
-
-     case obj_Enemy_Boss:
-         score += 100;
-     break;
- }
- instance_destroy(); -

-

Приведенный выше код проверяет индекс объекта экземпляра, выполняющего код, с помощью a switchи затем добавляет различные суммы в переменную score в зависимости от того, какой это объект.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Constants.htm b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Constants.htm index 909c35d22..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Constants.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Constants.htm @@ -1,181 +0,0 @@ - - - - - - Константы - - - - - - - - - - -

Константы

-

Константа - это тип переменной, которая устанавливается один раз в начале игры и затем никогда не изменяется. На самом деле, значения констант нельзя изменить после того, как они были объявлены. Это делает их идеальными для хранения значений, которые используются на протяжении всей игры для идентификации специальных данных.

-

На сайте GameMaker Language существует два типа пользовательских констант: макросы и перечисления, оба из которых описаны ниже. Также обратите внимание, что любое значение, которое всегда одинаково, классифицируется как константа, независимо от типа данных, например, строка или число 3.

-

ПРИМЕЧАНИЕ На сайте GameMaker Language также имеется ряд встроенных постоянных значений, которые используются для идентификации конкретных вещей. Они описаны на соответствующих страницах для функций времени выполнения, которым они требуются, в разделе GML Reference.

-

Макросы

-

Хотя макросы не совсем переменные, они похожи на них по способу использования, т.е. это именованные значения, которые вы можете использовать в коде для замены жестко закодированных значений. По сути, макрос - это именованная переменная, содержащая выражение. Вы можете определить свои собственные макросы с помощью редактора сценариев и затем использовать их в коде и действиях, как обычные переменные, с той лишь разницей, что они не могут быть изменены в игре.

-

Синтаксическая структура макроса выглядит следующим образом:

-

#macro <variable> <expression>

-

Например, определите следующий макрос "total_weapons":

-

#macro total_weapons 10

-

Синтаксис макроса...

-

Для определения макросов необходимо правильно использовать приведенный выше синтаксис. Вы не можете использовать знак равенства (как в переменных) или ставить точку с запятой в конце (как в обычном операторе). Это приведет к тому, что определение макроса станет недействительным.
-
- Например, это неправильный способ определения макроса:
-
- #macro total_weapons = 10;
-
- Если убрать знак равенства и двоеточие, это будет правильное определение макроса. -

-

Затем вы можете использовать это в своем коде следующим образом:

-

pos++;
-
- if (pos >= TOTAL_WEAPONS)
- {
-     pos = 0;
- } -

-

Обратите внимание, что вы не сможете изменить значение константы, поэтому подобный код приведет к аварийному завершению игры:

-

total_weapons = 11;

-

Вы можете определить макрос в любом месте вашего кода или в сценарии, и он будет предварительно скомпилирован и включен в вашу игру, как если бы он был там с самого начала, но мы рекомендуем вам создать специальный актив сценария и определить все ваши макросы в нем. Это будет проще организовать и отладить в дальнейшем!

-

Если вам нужно, чтобы значение макроса изменялось во время выполнения, то, вероятно, вам следует сделать его глобальной переменной, так как они могут быть изменены из кода во время игры, если только вы не установите макрос как время выполнения function. Установка макроса в функцию означает, что эта функция будет вызываться каждый раз, когда вы используете макрос. Например:

-

#macro col make_colour_hsv(irandom(255), 255, 255)

-

Затем вы вызовете этот макрос следующим образом:

-

image_blend = col;

-

При использовании этого кода изображение будет окрашиваться в разные цвета каждый раз, когда используется макрос. Стоит отметить, что макросы можно также разделить на несколько строк с помощью символа \, чтобы показать место разрыва строки. В качестве примера можно привести следующее:

-

#macro hello show_debug_message("Hello" + \
- string(player_name) + \
- ", how are you today?");

-

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

-

Очень важной особенностью макросов является то, что они могут быть определены для использования с определенными конфигурациями (конфигами), то есть вы можете иметь одно и то же имя макроса, но давать ему разные значения в зависимости от выбранного в данный момент конфига. Например, если у вас есть конфигурация для Android Ads и другая для iOS Ads, то вы можете определить один макрос для хранения требуемого значения ID приложения:

-

#macro ad_id "";
- #macro Android:ad_id "com.yoyogames.googlegame"
- #macro iOS:ad_id "com.yoyogames.appstoregame"

-

Как видно, сначала указывается имя конфигурации, затем двоеточие :, а затем имя и значение макроса. Обратите внимание, что между двоеточием : и именем конфигурации или именем макроса не должно быть пробелов, иначе вы получите ошибку.

-

Enums

-

Перечисление - это "перечислитель", и оно, по сути, позволяет вам создать свой собственный ограниченный тип данных со списком постоянных значений, и они имеют следующую структуру:

-

enum <variable>
- {
-     <MEMBER> [= <VALUE>],
-     <MEMBER> [= <VALUE>],
-     // etc...
- } -

-

В следующем примере мы создаем перечисление для цветов радуги и присваиваем ему различные константы и значения по умолчанию:

-

enum rainbowcolours
- {
-     RED,
-     ORANGE,
-     YELLOW,
-     GREEN,
-     BLUE,
-     INDIGO,
-     VIOLET
- }

-

Элементы перечисления могут быть только целыми числами или выражениями с предыдущими перечислениями, которые оцениваются в целое число, и по умолчанию нумеруются от 0 и выше, поэтому в нашем примере, приведенном выше, по умолчанию будут red = 0, orange = 1, yellow = 2 и т.д..

-

Вы также можете присвоить значения переменным enum во время создания:

-

enum enum_test
- {
-     VAL = 10
- }
-
- enum RAINBOW
- {
-     RED = 5,
-     ORANGE = 5 * 2,
-     YELLOW = 15,
-     GREEN = 20,
-     BLUE = 25,
-     INDIGO = 30,
-     VIOLET = 35 * ENUM_TEST.VAL
- } -

-

Обратите внимание, что в приведенном выше примере мы используем другое перечисление для создания выражения для "violet". Это работает, только если перечисление, на которое ссылаются, было создано до перечисления, которое используется в выражении, но это не будет работать для переменных или функций, поскольку значение перечисления должно быть способно оцениваться как константа при компиляции проекта. Также обратите внимание, что все значения перечисления оцениваются в целые числа, и когда вы создаете свои собственные, вы должны знать, что для работы перечислений допускаются только целые значения. Это значение может быть любым целым числом, которое может быть представлено числом с плавающей точкой двойной точности, включая отрицательные значения.

-

Для последующего доступа к значению внутри данного типа перечисления можно использовать метод point ".", как показано ниже:

-

variable = <enum_name>.<enum_variable>;

-

В качестве примера давайте воспользуемся перечислением "rainbowcolours", которое мы создали в приведенном выше коде:

-

colour_value = rainbowcolours.green * rainbowcolours.red;

-

Теперь переменная colour_value будет содержать значение 100 (20 * 5).

-

Обратите внимание, что вы не можете изменять значения для любой константы перечисления после ее создания, точно так же, как вы не можете изменять макросы после их создания.

-

ПРИМЕЧАНИЕ: Значения Enum хранятся как int64s, поэтому выполнение is_real() для них вернет false.

-

-

Встроенные константы

-

В следующей таблице приведен список встроенных констант, которые могут быть возвращены некоторыми функциями и операциями в ваших проектах:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
pointer_nullЭта константа указывает на то, что указатель не указывает ни на что значимое (то же самое, что NULL в C++ или null в C#).
- Это значение является ложным.
pointer_invalidЭта константа просто означает, что значение не является действительным указателем
undefinedЭта константа возвращается, когда функция должна что-то вернуть, но не имеет подходящего или "правильного" значения для возврата.
- Это значение является ложным.
NaNЭто константа, которая может быть возвращена, когда компилятор не может оценить результаты операции как число - например, 0 / 0 не может быть определено как действительное число, и поэтому представляется как NaN
infinity - This constant  - относится к числу, которое считается бесконечным, например, результат, который вы получите при делении любого значения с плавающей запятой на ноль, например: 1.0/0.
trueЭта константа представляет значение 1, которое GameMaker будет оценивать как булево значение "true" (обратите внимание, что любое значение, равное или большее 1, будет оцениваться как true).
falseЭта константа представляет значение 0, которое GameMaker будет оценивать как булево значение "false" (обратите внимание, что любое значение меньше или равно 0 будет оцениваться как false).
piЭта константа представляет собой значение числа Пи: 3,141592653589793280 и т.д... хотя точное значение будет зависеть от различных факторов, таких как ОС или целевая платформа.
-

Информацию о сравнении равенств для некоторых из перечисленных выше констант см. в Таблице равенств.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Global_Variables.htm b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Global_Variables.htm index 9ae648f43..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Global_Variables.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Global_Variables.htm @@ -1,77 +0,0 @@ - - - - - - Глобальные переменные - - - - - - - - - - -

Глобальные переменные

-

Основное описание глобальной переменной - это переменная, которая, будучи объявленной, не принадлежит ни одному конкретному экземпляру, но к ней могут обращаться все. Как и локальные переменные, глобальные переменные должны быть объявлены с использованием идентификатора, но в отличие от локальной переменной, глобальная переменная остается в памяти до конца игры. Таким образом, вы можете создать глобальную переменную для отслеживания (например) количества патронов, которые есть у игрока, а затем просто обновлять эту переменную в разные моменты игры, формировать любой экземпляр или функцию и в любое время. По сути, глобальная переменная не принадлежит какому-либо конкретному экземпляру и может быть доступна, изменена и использована всеми экземплярами, а любые изменения, внесенные в переменную, являются "глобальными", так как все экземпляры, использующие переменную, будут затронуты этим изменением. Давайте рассмотрим пример:

-

global.food = 5;

-

Мы объявляем переменную "food", написав сначала "global", а затем ".", чтобы сообщить GameMaker, что эта переменная теперь имеет глобальную область применения. С этого момента мы должны будем использовать эту форму каждый раз, когда нам потребуется получить доступ к этой переменной или изменить ее каким-либо образом. Итак, мы создали новую переменную под названием "food" и объявили ее глобальной. Теперь любой экземпляр или функция может использовать и изменять эту переменную любым способом, и все остальные экземпляры будут "видеть" это. Например, у нас может быть другой объект еды, с которым сталкивается игрок, и в событии столкновения мы имеем:

-

global.food +=1;

-

У нас также есть другой объект, который рисует это значение следующим образом:

-

draw_text(32, 32, "food = " + string(global.food));

-

С помощью глобальных переменных мы можем изменять значения и видеть, как эти изменения отражаются во всех экземплярах объектов, которые ссылаются на эту переменную. Как и в случае с локальными переменными, вы должны следить за тем, чтобы ваши глобальные переменные не назывались так же, как и все переменные экземпляра, поскольку это может вызвать проблемы и привести к появлению ошибок в ваших играх из-за дублирования переменных, что иногда бывает трудно отладить. Как правило, в самом начале игры у вас должен быть один объект, объявляющий все ваши глобальные переменные (например, в событии Room Start Event первого объекта, помещенного в первую комнату игры), или одна функция скрипта, объявляющая их все вместе, так как это дает вам удобное место для возврата и ссылки на все сразу, если вам нужно проверить имя переменной или изменить значение.

-

ВGameMaker есть коллекция "встроенных" глобальных переменных, и вам следует знать о них, поскольку вы можете назвать одну из своих переменных экземпляра таким же именем или захотеть иметь свою собственную глобальную переменную с таким же именем и удивляться, почему у вас возникают ошибки! Однако их легко обнаружить, поскольку в редакторе кода они отображаются другим цветом, а также появляются в строке автозаполнения внизу. Большинство встроенных глобальных переменных имеют очень специфическое применение и перечислены в соответствующих разделах руководства, однако есть две важные переменные, которые используются часто и не перечислены в других разделах:

- -

Есть также три устаревшие встроенные глобальные переменные, о которых вы должны знать (эти переменные предназначены только для поддержки старых проектов из предыдущих версий GameMaker и должны использоваться в следующих случаях не использовать в новых проектах):

- -

Наконец, есть две переменные, которые можно использовать для функций и методов сценария:

- -

Следующая форма также может быть использована для объявления глобальных переменных, но она является включено только для обратной совместимостии не рекомендуется использовать эту форму в новых проектах, так как будущие версии GameMaker могут ее не поддерживать.

-

Вторая форма создания глобальных переменных - это объявление их как таковых с помощью объявления globalvar, точно так же, как вы объявляете локальную переменную с помощью объявления var.

-

ВАЖНО! Объявление globalvar устарело и поддерживается только для старых целей. Вы всегда должны использовать идентификатор global. для обозначения глобальных переменных.

-

Это (устаревшее) объявление будет использоваться следующим образом:

-

globalvar food;
- food = 5;

-

Объявленная таким образом переменная "food" теперь считается глобальной и не требует префикса global. - это также означает, что в коде гораздо сложнее идентифицировать глобальные переменные, а также гораздо проще получить дублирование переменных, поскольку вы используете одно и то же имя переменной в различных объектах или установленных расширениях. После объявления глобальной переменной доступ к ней осуществляется следующим образом:

-

food += 2;

-

или:

-

draw_text(32, 32, "food = " + string(food));

-

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

-

Существует несколько функций, призванных помочь вам при работе с глобальными переменными, которые вы можете найти на следующей странице:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Instance_Variables.htm b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Instance_Variables.htm index cab832183..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Instance_Variables.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Instance_Variables.htm @@ -1,53 +0,0 @@ - - - - - Переменные экземпляра - - - - - - - - - - -

Переменные экземпляра

-

Переменная экземпляра создается внутри экземпляра объекта и считается уникальной для этого экземпляра - т.е. многие экземпляры одного и того же объекта могут иметь одну и ту же переменную, но каждая переменная может иметь разное значение, поскольку она уникальна для каждого экземпляра. - каждого экземпляра. Но как создается переменная экземпляра? Ну, вы создаете новые переменные, просто присваивая им значение, как показано в этом небольшом примере (это называется объявлением переменной):

-

potions = 12;
life = 100;
name = "Jock MacSweeney";
strength = 5.5;
armour = -2;

-

Как вы видите, вам нужно только задать имя, а затем значение (значение может быть любым типом данных), чтобы установить переменную и получить ее готовой к использованию в экземпляре объекта, для которого вы кодируете (обратите внимание, что значение может быть - быть возвращенным значением функции или результатом операции между другими переменными и т.д...). Затем эти переменные можно использовать и изменять различными способами внутри экземпляра, например, этот код можно использовать в событии столкновения - и использоваться для снятия суммы с переменной "life":

-

life -= 5 + armour;

-

Если "life" находится на уровне 100, то теперь его значение будет равно 97 (100 - (5 + -2) = 97). Это простой пример, и вы можете заменить "armour" на фактическое значение -2, - но что произойдет, если это значение жестко закодировано в нескольких местах, а затем вы решите его изменить? Вам придется пройтись по всему коду и изменить все -2 на новое значение. - что отнимает много времени и чревато ошибками! Но если вы используете переменную, все, что вам нужно сделать, это переназначить ей новое значение, и код будет автоматически использовать это новое значение с тех пор, что делает вещи гораздо более гибкими и гораздо легче исправить, если возникнет проблема. - если возникнет проблема. Следует также отметить, что даже если значение не будет меняться, гораздо легче запомнить, что означает переменная под названием "life", чем просто смотреть на число.

-

ВGameMaker есть коллекция "встроенных" переменных экземпляров, поэтому вам следует знать о них, поскольку вы можете назвать одну из своих переменных экземпляров таким же именем или захотеть иметь свою глобальную переменную с таким же именем и удивляться, почему у вас возникают ошибки. - вы получаете ошибки. Однако их легко обнаружить, поскольку они отображаются другим цветом в редакторе кода, а также появляются в автозаполнении и отображаются в виде полоски в нижней части редактора кода.

-

Существует довольно много функций времени выполнения, призванных помочь вам при работе с переменными экземпляра, все они перечислены в следующем разделе:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Local_Variables.htm b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Local_Variables.htm index d9db22157..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Variables/Local_Variables.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Variables/Local_Variables.htm @@ -1,82 +0,0 @@ - - - - - - Местные переменные - - - - - - - - - - -

Местные переменные

-

Локальная переменная - это переменная, которую мы создаем только для определенного события или функции, а затем отбрасываем по завершении события или функции. Если она создается в пользовательской функции, то локальная переменная доступна только для функции, а затем отбрасывается по ее завершении. Зачем они нам нужны? Переменные занимают место в памяти, и может оказаться, что мы будем использовать их только для одной операции или функции, и тогда нам нужно, чтобы они находились в памяти только в течение того короткого времени, когда они используются. Это позволяет поддерживать чистоту и порядок в кодовой базе, а также оптимизировать пространство памяти для тех вещей, которые действительно в ней нуждаются. Чтобы объявить локальную переменную, мы используем оператор var следующим образом:

-

var _i, _num, _str;
- _i = 0;
- _num = 24.5;
- _str = "Hello World";
-
- // or
-
- var _i = 0, _num = 24.5, _str = "Hello World";
-
- // or
-
- var _i = 0;
- var _num = 24.5;
- var _str = "Hello World"; -

-

Все переменные, созданные таким образом, будут "забыты" (т.е. удалены из памяти) по завершении события (или функции), в котором они были созданы. Вы должны быть внимательны, чтобы имя, которое вы даете всем объявленным переменным var, не совпадало с именем другой переменной экземпляра в объекте, выполняющем код, а также убедиться, что у вас нет намерения использовать значение, хранящееся в этой переменной, за пределами события или функции, в которой вы ее объявили (в приведенных выше примерах все объявленные переменные var были определены с подчеркиванием "_" перед именем переменной, но это не обязательно и сделано просто для того, чтобы сделать более очевидным в коде, что мы имеем дело с локальной переменной). Тем не менее, если вы окажетесь в ситуации, когда локальная переменная должна быть такой же, как и переменная экземпляра, то вы можете использовать ключевое слово self, чтобы определить переменную экземпляра как отдельную, например:

-

var hp = 10;
- with (obj_Enemy)
- {
-     self.hp -= hp;
- }

-

Локальные переменные часто используются в программах, особенно в циклах для подсчета итераций, или когда значение используется несколько раз в одной операции, которая не будет повторяться снова. Вот еще пара примеров:

-

var _i = 0;
- repeat (10)
- {
-     inventory[_i] = 0;
-     _i += 1;
- }

-

Приведенный выше код создает локальную переменную под названием "_i" и устанавливает ее в 0, и все это в одной строке. Обратите внимание, что в предыдущих версиях GameMaker нужно было сначала объявлять локальные переменные, а затем присваивать им значения, но в этой версии вы можете объявить и присвоить им значение одновременно. В приведенном выше коде эта переменная используется для инициализации массива. Поскольку переменная "_i" не будет использоваться ни в каких других функциях экземпляра, кроме этой, она может быть локальной по области видимости. Приведем еще один пример:

-

var _x, _y;
- _x = x - 32 + irandom(64);
- _y = y - 32 + irandom(64);
- instance_create_layer(_x, _y, "Effects", obj_blood);

-

Здесь мы использовали локальные переменные "_x" и "_y" для хранения некоторых случайных координат, которые мы затем используем для создания экземпляра. В этом примере видно, что использование этих переменных не является строго необходимым, но для удобства чтения и простоты использования мы их используем. Намного понятнее и очевиднее, что мы делаем, чем если бы мы использовали этот код:

-

instance_create_layer(x - 32 + irandom(64), y - 32 + irandom(64), "Effects", obj_guts);

-

Следует отметить еще один момент, касающийся объявленных локальных переменных var... Поскольку они уникальны для события или функции, которая их запускает, они могут быть использованы в любых других экземплярах через код! Это означает, что мы можем использовать эти переменные для установки и изменения в других экземплярах с помощью конструкции "with()" (см. раздел об области видимости переменных для получения дополнительной информации). Сам код будет выглядеть примерно так:

-

var num = instance_number(obj_Enemy);
- with (obj_Enemy)
- {
-     if (num > 10) instance_destroy();
- }

-

Приведенный выше код работает, потому что объявленная переменная var является локальной для события (или функции), в котором она содержится, а не для экземпляра или игрового мира, и поэтому может быть использована в любой функции в любом объекте, если она находится в том же блоке кода.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Variables_And_Variable_Scope.htm b/Manual/contents/GameMaker_Language/GML_Overview/Variables_And_Variable_Scope.htm index 28447a896..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Variables_And_Variable_Scope.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Variables_And_Variable_Scope.htm @@ -1,94 +0,0 @@ - - - - - - Переменные и область применения переменных - - - - - - - - - - -

Переменные и область применения переменных

-

Как и любой другой язык программирования, GML использует переменные в качестве основной единицы для большинства операций программирования. Переменные используются для хранения информации в памяти устройства для последующего (или мгновенного) использования, и им присваивается имя, чтобы вы могли ссылаться на них во время выполнения и в функциях сценария. Переменная в GML может хранить множество различных типы данныхНапример, вещественное число (например: 100, 2.456575, -56 и т.д.), строка (например: "Hello world!"), целое число (например: 1, 556, -7), булево число (true или false), а также другие вещи:

-

var _num = 126.4545;
- var _str = "Hello World";
- new_num = _num * 100;
- global.my_string = _str + " I said";

-

Вы также можете использовать переменные для хранения значений, возвращаемых функциями, например:

-

var _id = instance_nearest(x, y, obj_Tree);
- root = sqrt(1000);
- global.str = string_upper("Hello World");

-

Итак, переменная - это то, что мы можем назвать и использовать для хранения значения с целью последующего использования в одной или нескольких операциях. Отличным примером переменной в реальном мире является pi 𝜋 . .. это переменная, которую знают все, и она хранит значение 3.14159265 (и т.д...). Почему мы используем ее в нашем языке? Ну, гораздо проще сказать кому-то "пи", чем "три точки один четыре один пять девять два шесть пять"! Именование вещей подобным образом делает жизнь намного проще, а также означает, что если значение переменной изменится, нам не придется менять число везде, так как имя переменной останется прежним.

-

При формировании переменных в GML они должны иметь имя, которое начинается с буквы или символа подчеркивания "_" и может содержать только буквы, цифры и символ подчеркивания '_' с максимальной длиной 64 символа. Таким образом, допустимыми переменными являются такие, как fish, foo_bar, num1 или _str, а недопустимыми - 6fish, foo bar или *num.

-

Во многих языках программирования необходимо создать переменную "присвоением", прежде чем вы сможете ее использовать. В основном это означает, что вы сообщаете компьютеру имя, которое хотите использовать для переменной, и присваиваете ей начальное значение. Затем переменной отводится место в памяти для хранения значения или выполнения операций над ним. Присвоение переменной имеет вид:

-

<variable> = <expression>;

-

Выражение может быть простым значением, но может быть и более сложным, поэтому вместо присвоения значения переменной можно также добавить значение к текущему значению переменной, например, с помощью +=:

-

a = 100;   // Assigning a simple value
- b = 200;
- c = 300;
- a += b;    // Assigning with operation
- a = b + c; // Assigning with expression

-

ПРИМЕЧАНИЕ GameMaker Language также может принимать ":=" для назначений, хотя это, как правило, не самый распространенный способ:

-

<variable> := <expression>;

-

Аналогично можно вычитать с помощью -=, умножать с помощью *=, делить с помощью /=, или использовать побитовые операторы с помощью |=, &= или ^=. Вы также можете прибавить или отнять единицу от значения с помощью ++, --. Дополнительную информацию см. в разделе " Выражения и операторы".

-

Обратите внимание, что вы не можете сделать следующее (или любую другую вариацию):

-

a = b = c = 4;

-

Вместо этого следует сделать так:

-

a = 4;
- b = 4;
- c = 4;

-

Все переменные, показанные выше, являются переменными экземпляра , однако в программировании с помощью GameMaker существуют еще три основные категории переменных, и каждая из них имеет свою область применения (которую можно рассматривать как область действия, или область охвата). Различные виды переменных и их область действия описаны на следующих страницах:

- -

На сайте GameMaker Language также имеется несколько различных встроенных переменных, которые могут иметь любую из перечисленных выше областей видимости (кроме локальной). Эти переменные являются особенными, поскольку они включены по умолчанию в состав объектов и комнат в игровом мире. Некоторые встроенные глобальные переменные перечислены в упомянутом выше разделе, а в различных частях руководства для sprites, комнат, объектов и т.д... также описаны встроенные переменные, доступные в каждом случае. Примерами таких встроенных переменных экземпляра могут быть:

- -

Примерами встроенных глобальных переменных могут быть:

- -

Большинство встроенных переменных можно изменять и устанавливать, как и другие переменные, а некоторые даже могут быть массивами, только для их создания не нужно устанавливать их, как обычные переменные, поскольку они уже будут инициализированы значением по умолчанию.

-

Наконец, существует ряд функций, предназначенных для установки, получения или проверки переменных тем или иным способом, доступных со следующей страницы:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/Animation_Curves.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/Animation_Curves.htm index eb9046cb2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/Animation_Curves.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/Animation_Curves.htm @@ -1,50 +0,0 @@ - - - - - - Анимационные кривые - - - - - - - - - - -

Анимационные кривые

-

Анимационные кривые можно настроить в браузере ассетов как активы с помощью редактора анимационных кривых, а затем использовать их в редакторе последовательностей для управления дорожками в последовательности. Однако их также можно использовать в коде для изменения значений во времени в ваших играх - от эффектов переключения кнопок, до движения, изменения цвета и т.д. Вы также можете создавать свои собственные кривые анимации во время выполнения, используя перечисленные здесь функции, что делает их очень гибким инструментом для ваших игр.

-

Ниже перечислены доступные функции для анимационных кривых:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_channel_evaluate.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_channel_evaluate.htm index 9c770ceeb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_channel_evaluate.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_channel_evaluate.htm @@ -1,71 +0,0 @@ - - - - - - animcurve_channel_evaluate - - - - - - - - - - - -

animcurve_channel_evaluate

-

Эта функция может быть использована для получения значения в определенный момент времени из структуры канала. Вы передаете указатель struct для канала (как возвращается функцией animcurve_get_channel()или как возвращено в структуре анимационной кривой из функции animcurve_get()) и позицию "x" (время) вдоль канала кривой для оценки. Эта позиция должна быть между 0 и 1, и функция вернет значение кривой в этой позиции, или вернет 0, если предоставленная структура канала недействительна.

-

-

-

Синтаксис:

-

animcurve_channel_evaluate(channel_struct, posx);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
channel_structСтруктура канала анимационной кривойThe struct pointer for the channel to evaluate.
posxРеальноThe position in time to check (from 0 to 1).
-

-

Возвращается:

-

Real

-

-

Пример:

-

var _channel = animcurve_get_channel(ac_AlphaCurve, 0);
- var _val = animcurve_channel_evaluate(_channel, sin(current_time/1000));
- image_alpha = _val;

-

Приведенный выше код получает структуру канала для актива кривой анимации "ac_AlphaCurve". Затем он использует возвращаемое значение оценки для установки альфа-канала изображения для данного экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_channel_new.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_channel_new.htm index 3eb4cc9bb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_channel_new.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_channel_new.htm @@ -1,136 +0,0 @@ - - - - - - animcurve_channel_new - - - - - - - - - - - -

animcurve_channel_new

-

Эта функция может быть использована для создания новой структуры канала анимационной кривой. Структура канала имеет следующие переменные:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Структура канала анимационной кривой
Имя переменнойТип данныхОписание
имястрокаЭто название канала.
типТип интерполяции кривой анимации ПостояннаяЭто будет одна из констант, приведенных в таблице ниже.
итерацийцелое числоЕсли канал использует интерполяцию катмул-ром ("гладкую"), это значение показывает, сколько точек было сгенерировано для каждого сегмента кривой (обратите внимание, что эти дополнительные точки являются внутренними для функции и используются только для расчетов во время выполнения). Если канал использует линейную интерполяцию, это значение будет существовать, но его можно игнорировать, так как оно не влияет на то, как интерполируется кривая.
пунктымассивЭто массив, где каждый элемент в массиве является элементом Структура точек кривой анимации.
-

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип интерполяции кривой анимации Постоянная
ПостояннаяОписание
animcurvetype_linearИспользуется для линейной интерполяции между точками.
animcurvetype_catmullromИспользуется для плавной интерполяции между точками с помощью интерполяции катмул-ром.
animcurvetype_bezierИспользуется для интерполяции Безье между точками.
-


- По умолчанию при создании новой структуры канала переменная "name" будет пустой строкой, "type" - animcurvetype_linear, а "iterations" - 16. Все эти переменные могут быть установлены в нужные вам значения (обратите внимание, что значение "итерации" не влияет на линейные типы кривых). После создания кривой необходимо добавить точки к ней, что делается путем добавления различных структур точек в массив"points". Эти структуры точек могут быть созданы с помощью функции animcurve_point_new().

-

-

Синтаксис:

-

animcurve_channel_new();

-

-

Возвращается:

-

Animation Curve Channel Struct

-

-

Пример:

-

my_curve = animcurve_create();
- my_curve.name = "My_Curve";
- var _channels = array_create(1);
- _channels[0] = animcurve_channel_new();
- _channels[0].name = "alpha";
- _channels[0].type = animcurvetype_catmullrom;
- _channels[0].iterations = 8;
- var _points = array_create(3);
- _points[0] = animcurve_point_new();
- _points[0].posx = 0;
- _points[0].value = 0;
- _points[1] = animcurve_point_new();
- _points[1].posx = 0.5;
- _points[1].value = 1;
- _points[2] = animcurve_point_new();
- _points[2].posx = 1;
- _points[2].value = 0;
- _channels[0].points = _points;
- my_curve.channels = _channels;

-

Приведенный выше код создает новую структуру анимационной кривой и сохраняет ее в переменной "my_curve". Затем эта структура заполняется именем и массивом каналов. Массив каналов содержит один канал с тремя точками.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_create.htm index b282a53c2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_create.htm @@ -1,70 +0,0 @@ - - - - - - animcurve_create - - - - - - - - - - - -

animcurve_create

-

Эта функция создает пустую структуру кривой анимации, готовую к заполнению данными каналов. Функция возвращает указатель на struct, который затем используется для добавления каналов и других данных в кривую анимации. Вы также можете передать его таким функциям, как animcurve_get() для последующего получения данных из кривой.

-

Когда вы используете эту функцию, созданная структура не будет содержать данных, и для ее использования необходимо добавить хотя бы один канал, а в канал должны быть добавлены точки. Чтобы добавить канал, см. функцию animcurve_channel_new(), а чтобы добавить точки в канал, см. функцию animcurve_point_new(). Кроме того, вы можете дать структуре анимационной кривой имя, задав переменную "name" (как показано в примере кода ниже). Каналы, добавленные в новую кривую анимации, должны быть добавлены в виде массива, где каждый элемент массива ссылается на структуру канала, а точки в канале также должны быть добавлены в виде массива, где каждый элемент массива ссылается на структуру точки.

-

Обратите внимание, что созданные таким образом кривые анимации должны быть удалены, если они больше не нужны, так как в противном случае они будут занимать место в памяти, что может привести к утечке памяти, замедлению и, в конечном счете, краху вашей игры. Вы можете удалить кривую анимации, если она больше не нужна, с помощью функции animcurve_destroy(). Вам не нужно очищать данные канала или точки внутри кривой, так как это будет сделано сборщиком мусора автоматически при уничтожении самой кривой.

-

-

-

Синтаксис:

-

animcurve_create();

-

-

Возвращается:

-

Animation Curve Struct

-

-

Пример:

-

my_curve = animcurve_create();
- my_curve.name = "My_Curve";
- var _channels = array_create(1);
- _channels[0] = animcurve_channel_new();
- _channels[0].name = "alpha";
- _channels[0].type = animcurvetype_catmullrom;
- _channels[0].iterations = 8;
- var _points = array_create(3);
- _points[0] = animcurve_point_new();
- _points[0].posx = 0;
- _points[0].value = 0;
- _points[1] = animcurve_point_new();
- _points[1].posx = 0.5;
- _points[1].value = 1;
- _points[2] = animcurve_point_new();
- _points[2].posx = 1;
- _points[2].value = 0;
- _channels[0].points = _points;
- my_curve.channels = _channels;

-

Приведенный выше код создает новую структуру анимационной кривой и сохраняет ее в переменной "my_curve". Затем эта структура заполняется именем и массивом каналов. Массив каналов содержит один канал с тремя точками.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_destroy.htm index 12ae31a38..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_destroy.htm @@ -1,62 +0,0 @@ - - - - - - animcurve_destroy - - - - - - - - - - -

animcurve_destroy

-

Эта функция может быть использована для уничтожения любых анимационных кривых, которые были ранее созданы с помощью функции animcurve_create(). Вызов этой функции удалит анимационную кривую из памяти и очистит все каналы или точки, которые она содержит (их никогда не нужно очищать вручную). Обратите внимание, что нельзя уничтожить анимационные кривые, созданные в браузере активов, только те, которые были созданы во время выполнения.

-

-

Синтаксис:

-

animcurve_destroy(curve_struct);

- - - - - - - - - - - - - -
АргументТипОписание
curve_structСтруктура анимационной кривойThe pointer to the curve struct to destroy.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

animcurve_destroy(my_curve);

-

Приведенный выше код уничтожит (ранее созданную) структуру кривой анимации, индексированную в переменной "my_curve".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_exists.htm index 117991322..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_exists.htm @@ -1,66 +0,0 @@ - - - - - - animcurve_exists - - - - - - - - - - - -

animcurve_exists

-

Эта функция возвращает true, если заданный Ассистент анимационной кривой или Структура кривой анимации существует и является действительной кривой анимации, или false, если не существует.

-

-

Синтаксис:

-

animcurve_exists(curve_struct_or_id);

- - - - - - - - - - - - - -
АргументТипОписание
curve_struct_or_idСтруктура анимационной кривой или Ассет анимационной кривойThe Animation Curve that will be checked.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if (animcurve_exists(spring_curve))
- {
-     apply_spring_animation(sprite_curve);
- }

-

Приведенный выше код проверяет, существует ли кривая анимации, сохраненная в пользовательской переменной spring_curve. Если существует, то запускается пользовательский метод для использования этой кривой анимации.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_get.htm index 009939666..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_get.htm @@ -1,99 +0,0 @@ - - - - - - animcurve_get - - - - - - - - - - - -

animcurve_get

-

Эта функция возвращает структуру, содержащую все данные для заданной кривой анимации. Вы передаете идентификатор актива кривой анимации (как определено в браузере активов), и функция возвращает структуру со следующими переменными:

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Структура анимационной кривой
Имя переменнойТип данныхОписание
nameСтрокаЭто имя кривой анимации.
channelsМассив из Структура канала кривой анимацииsЭто массив, где каждый элемент массива является структурой канала.
-


- Переменная channels в структуре представляет собой массив, где каждый элемент массива является элементом Структура канала анимационной кривой с данными, относящимися к каналу в кривой. Структура канала объясняется на этой странице.

-

Как и в случае с каналами, точки одного канала хранятся как структуры в массиве, где каждый элемент в массиве является структурой одной точки. Структура точки объясняется на этой странице.

-

Обратите внимание, что если функция не сработает (например, заданный актив Animation Curve не существует), то функция вернет -1.

-

-

Синтаксис:

-

animcurve_get(curve_id);

- - - - - - - - - - - - - -
АргументТипОписание
curve_idАссет анимационной кривойThe asset browser ID (index) of the animation curve to get.
-

-

Возвращается:

-

Animation Curve Struct or -1

-

-

Пример:

-

var _curve = animcurve_get(ac_ButtonTween);
- var _channel = _curve.channels[0];
- if (_channel.type != animcurvetype_linear)
- {
-     _channel.type = animcurvetype_linear;
- }

-

Приведенный выше код извлекает структуру кривой анимации для актива кривой "ac_ButtonTween", затем проверяет тип кривой для первого канала, и если он не является линейным, то устанавливает его на линейный.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_get_channel.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_get_channel.htm index 64a69615c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_get_channel.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_get_channel.htm @@ -1,130 +0,0 @@ - - - - - - animcurve_get_channel - - - - - - - - - - - -

animcurve_get_channel

-

Эта функция возвращает структуру, содержащую данные канала для канала, указанного в активе кривой анимации. Вы передаете идентификатор или структуру анимационной кривой, а также имя или индекс канала, и функция возвращает структуру со следующим форматом:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Имя переменнойТип данныхОписание
nameстрокаЭто название канала.
typeТип интерполяции кривой анимации ПостояннаяЭто будет одна из констант animcurvetype_linear для линейной интерполяции между точками, animcurvetype_catmullrom для "гладкой" интерполяции между точками с помощью интерполяции катмул-ром или animcurvetype_bezier для интерполяции Безье.
iterationsцелое числоЕсли канал использует интерполяцию катмул-ром ("гладкую"), это значение показывает, сколько точек было сгенерировано для каждого сегмента кривой (обратите внимание, что эти дополнительные точки являются внутренними для функции и используются только для расчетов во время выполнения). Если канал использует линейную интерполяцию, это значение все равно будет существовать, но его можно игнорировать, так как оно не влияет на то, как интерполируется кривая.
pointsуказатель массиваЭто массив, где каждый элемент массива является структурой точки.
-


- ID кривой анимации - это имя кривой анимации, определенное в браузере активов, или указатель struct, возвращаемый функцией animcurve_create(). Имя канала - это строка, которая ссылается на канал, как он был определен в активе кривой анимации, или вы можете передать значение индекса, которое составляет от 0 до n, где n - последний канал в активе кривой (например: если кривая анимации имеет 4 канала, они будут проиндексированы от 0 до 3). Обратите внимание, что передача значения индекса требует меньше обработки, чем передача имени канала. Если функция не сработает (т.е. не существует канала с заданным именем или индексом), то вы получите ошибку.

-

Точки одного канала хранятся в виде структур в массиве, где каждый элемент массива является структурой одной точки. Структура точки имеет следующие переменные:

- - - - - - - - - - - - - - - - - - -
Имя переменнойТип данныхОписание
posxнастоящийПоложение во времени (нормированное от 0 до 1) точки.
valueнастоящийЗначение точки.
-

-

-

Синтаксис:

-

animcurve_get_channel(curve_struct_or_id, channel_name_or_index);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
curve_struct_or_idСтруктура анимационной кривойThe ID or struct pointer of the animation curve to target
channel_name_or_indexСтрока или РеальныйThe channel name (a string) or the channel index (an integer).
-

-

Возвращается:

-

Animation Curve Channel Struct

-

-

Пример:

-

var _channeldata = animcurve_get_channel(ac_ButtonTween, 0);
- var _points = _channeldata.points;
- for (var i = 0; i < array_length(_points); ++i)
- {
-     _points[i].value += 1;
- }

-

Приведенный выше код извлекает структуру канала для канала 0 в активе кривой "ac_ButtonTween", затем проходит по точкам кривой канала и добавляет единицу к их значению.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_get_channel_index.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_get_channel_index.htm index 2a2f256d7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_get_channel_index.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_get_channel_index.htm @@ -1,74 +0,0 @@ - - - - - - animcurve_get_channel_index - - - - - - - - - - - -

animcurve_get_channel_index

-

Эта функция возвращает значение индекса для любого заданного канала кривой анимации. Вы передаете ID кривой анимации или struct, где ID кривой - это имя кривой анимации, как она была определена в Asset Browser, или указатель struct, возвращенный функцией animcurve_create(). Затем введите имя канала в виде строки, и функция вернет значение индекса, связанное с этим каналом. Обратите внимание, что если кривая или канал не существуют, то вы получите ошибку.

-

-

Синтаксис:

-

animcurve_get_channel_index(curve_struct_or_id, channel_name);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
curve_struct_or_idСтруктура анимационной кривойThe ID or struct pointer of the animation curve to target
channel_nameСтрокаThe channel name (a string).
-

-

Возвращается:

-

Real

-

-

Пример:

-

var _channelindex = animcurve_get_channel_index(ac_ButtonTween, "x_pos")
- var _channeldata = animcurve_get_channel(ac_ButtonTween, _channelindex);
- var _points = _channeldata.points;
- for (var i = 0; i < array_length(_points); ++i)
- {
-     _points[i].value += 1;
- }

-

Приведенный выше код извлекает структуру канала для канала с именем "x_pos" в активе кривой "ac_ButtonTween", затем перебирает точки на кривой канала и добавляет единицу к их значению.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_point_new.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_point_new.htm index 39e014732..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_point_new.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Animation_Curves/animcurve_point_new.htm @@ -1,95 +0,0 @@ - - - - - - animcurve_point_new - - - - - - - - - - - -

animcurve_point_new

-

Эта функция может быть использована для создания новой структуры точек, которая будет добавлена в канал кривой анимации. При создании структура точек пуста, и вам необходимо установить следующие переменные для создания данных точек:

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Структура точки кривой анимации
Имя переменнойТип данныхОписание
posxнастоящийПоложение во времени (нормированное от 0 до 1) точки.
valueнастоящийЗначение точки.
-

Каждый созданный вами point struct должен быть добавлен в массив, и именно этот массив добавляется в переменную "channels" структуры канала кривой анимации (как показано в примере ниже).

-

-

Синтаксис:

-

animcurve_point_new();

-

-

Возвращается:

-

Animation Curve Point Struct

-

-

Пример:

-

my_curve = animcurve_create();
- my_curve.name = "My_Curve";
- var _channels = array_create(1);
- _channels[0] = animcurve_channel_new();
- _channels[0].name = "alpha";
- _channels[0].type = animcurvetype_catmullrom;
- _channels[0].iterations = 8;
- var _points = array_create(3);
- _points[0] = animcurve_point_new();
- _points[0].posx = 0;
- _points[0].value = 0;
- _points[1] = animcurve_point_new();
- _points[1].posx = 0.5;
- _points[1].value = 1;
- _points[2] = animcurve_point_new();
- _points[2].posx = 1;
- _points[2].value = 0;
- _channels[0].points = _points;
- my_curve.channels = _channels;

-

Приведенный выше код создает новую структуру анимационной кривой и сохраняет ее в переменной "my_curve". Затем эта структура заполняется именем и массивом каналов. Массив каналов содержит один канал с тремя точками.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Asset_Management.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Asset_Management.htm index ee304b08f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Asset_Management.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Asset_Management.htm @@ -1,59 +0,0 @@ - - - - - - Управление активами - - - - - - - - - - -

Управление активами

-

В следующих разделах описаны доступные вам функции и переменные для работы с различными активами, используемыми в вашем проекте, включая создание новых динамических активов или редактирование и изменение тех, которые были добавлены в игру через браузер активов в редакторе комнат или редакторе последовательностей.

- -

-

Существуют также дополнительные функции, связанные с обработкой игровых активов и тегов, добавленных из браузера активов. Эти функции можно найти в следующем разделе:

- -

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/Assets_And_Tags.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/Assets_And_Tags.htm index 2fd5fb58e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/Assets_And_Tags.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/Assets_And_Tags.htm @@ -1,55 +0,0 @@ - - - - - - Активы и метки - - - - - - - - - - -

Активы и метки

-

Перечисленные здесь функции специально разработаны для получения информации от любого из активов, определенных в браузере активов, а также тегов, которые были им присвоены. Теги - это очень мощный инструмент как в браузере активов, так и в коде игры, поскольку их можно считывать и создавать во время выполнения, что дает дополнительные возможности для фильтрации активов во время работы игры и создания условных проверок или систем типа "родитель" вне объектно-ориентированной системы.

-

Для активов в целом у нас есть следующие функции:

- -

-

Для работы с системой "тегов" браузера Asset у нас есть следующие функции:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_add_tags.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_add_tags.htm index ec3153e5d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_add_tags.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_add_tags.htm @@ -1,145 +0,0 @@ - - - - - - asset_add_tags - - - - - - - - - - -

asset_add_tags

-

С помощью этой функции вы можете добавить одну или несколько строк тегов к любому активу из браузера активов. Вы передаете либо имя актива (в виде строки), либо его индекс, а также либо одну строку тегов, либо массив, каждый элемент которого является одной строкой тегов. Если вы указываете значение индекса актива, то вам необходимо указать дополнительный аргумент тип актива (константа), так как активы разных типов могут иметь одинаковый индекс, хотя они не могут иметь одинаковое имя. Доступные типы активов перечислены в таблице ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
asset_objectДанное имя относится к объекту.
asset_spriteДанное имя относится к спрайту.
asset_soundДанное имя обозначает звук.
asset_roomДанное имя относится к room.
asset_tilesДанное название относится к набору плиток.
asset_pathДанное имя относится к пути.
asset_scriptДанное имя относится к script.
asset_fontДанное название относится к шрифту.
asset_timelineДанное имя относится к временной линии.
asset_shaderДанное имя относится к шейдеру.
asset_animationcurveДанное название относится к кривой анимации.
asset_sequenceДанное имя относится к последовательности.
-

Если функция успешно добавляет метку(и), она возвращает true, в противном случае возвращает false.

-

-

Синтаксис:

-

asset_add_tags(name_or_index, tags, [asset_type]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
name_or_indexСтрока или активThe name of the asset (a string) or its index value (an integer).
tagsСтрока или массив строкA single asset tag string or an array with various asset tags.
[asset_type]Тип актива ПостояннаяOPTIONAL Тип актива для установки тегов, используется только при указании индекса для первого аргумента.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var _a = array_create(3);
- _a[0] = "enemy";
- _a[1] = "all_levels";
- _a[2] = "boss";
- asset_add_tags(obj_Enemy_Boss_Parent, _a, asset_object);

-

Приведенный выше код создаст массив тегов, а затем добавит их к заданному объекту.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_clear_tags.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_clear_tags.htm index b4d674145..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_clear_tags.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_clear_tags.htm @@ -1,139 +0,0 @@ - - - - - - asset_clear_tags - - - - - - - - - - -

asset_clear_tags

-

С помощью этой функции вы можете очистить все теги, присутствующие на любом активе, из браузера активов. Вы указываете либо имя актива (в виде строки), либо его индекс, а если вы указываете значение индекса актива, то вам необходимо указать дополнительный аргумент типа актива (константа), так как активы разных типов могут иметь одинаковый индекс, хотя они не могут иметь одинаковое имя. Доступные типы активов перечислены в таблице ниже:

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
asset_objectДанное имя относится к объекту.
asset_spriteДанное имя относится к спрайту.
asset_soundДанное имя обозначает звук.
asset_roomДанное имя относится к room.
asset_tilesДанное название относится к набору плиток.
asset_pathДанное имя относится к пути.
asset_scriptДанное имя относится к script.
asset_fontДанное название относится к шрифту.
asset_timelineДанное имя относится к временной линии.
asset_shaderДанное имя относится к шейдеру.
asset_animationcurveДанное имя относится к кривой анимации.
asset_sequenceДанное имя относится к последовательности.
-

-

Если функция успешно очистит метки, она вернет true, в противном случае она вернет false.

-

-

-

Синтаксис:

-

asset_clear_tags(name,[asset_type]);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
name_or_indexСтрока или активThe name of the asset (a string) or its index value (an integer).
[asset_type]Тип актива ПостояннаяOPTIONAL! The type of asset to clear the tags from, only used when supplying an index for the first argument.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

asset_clear_tags(obj_Enemy_Parent, asset_object);

-

Приведенный выше код очистит все теги из заданного объекта-актива.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_get_index.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_get_index.htm index 62db0f3b0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_get_index.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_get_index.htm @@ -1,66 +0,0 @@ - - - - - - asset_get_index - - - - - - - - - - - -

asset_get_index

-

Вы можете использовать эту функцию для получения уникального идентификационного индекса игрового актива из его названия. Если актив не найден, функция вернет значение -1, в противном случае она вернет уникальный индекс id для проверяемого актива. Этот идентификатор можно использовать в других функциях, как и любое другое значение индекса, например, функцию sprite_index или path_indexнапример. Обратите внимание, что хотя эта функция может использоваться для ссылки на активы из строк (см. пример ниже), вы всегда должны убедиться, что актив существует, прежде чем использовать его, иначе вы можете получить ошибки, которые приведут к краху вашей игры.

-

-

Синтаксис:

-

asset_get_index(name);

- - - - - - - - - - - -
АргументТипОписание
nameThe name of the game asset to get the index of (a string).
-

-

Возвращается:

-

Asset (any asset type)

-

-

Пример:

-

var obj = asset_get_index("obj_Enemy_" + string(global.Level));
-
- if (object_exists(_obj))
- {
-     instance_create_layer(random(room_width), random(room_height), obj, "Enemy_Layer");
- }

-

Приведенный выше код получит индекс объекта из строки, и если этот индекс существует, создаст экземпляр объекта в игре.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_get_tags.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_get_tags.htm index c49ae81f4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_get_tags.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_get_tags.htm @@ -1,136 +0,0 @@ - - - - - - asset_get_tags - - - - - - - - - - - -

asset_get_tags

-

С помощью этой функции вы можете получить все теги, присвоенные активу, из браузера активов. Вы указываете либо имя актива (в виде строки), либо его индекс, и функция возвращает массив тегов для этого актива. Если теги не найдены или произошла ошибка (т.е. указанная строка имени не существует), то возвращаемый массив будет пуст. Если вы указываете значение индекса актива, то вам необходимо указать дополнительный аргумент тип актива (константа), так как активы разных типов могут иметь одинаковый индекс, хотя они не могут иметь одинаковое имя. Доступные типы активов перечислены в таблице ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
asset_objectДанное имя относится к объекту.
asset_spriteДанное имя относится к спрайту.
asset_soundДанное имя обозначает звук.
asset_roomДанное имя относится к room.
asset_tilesДанное название относится к набору плиток.
asset_pathДанное имя относится к пути.
asset_scriptДанное имя относится к script.
asset_fontДанное название относится к шрифту.
asset_timelineДанное имя относится к временной линии.
asset_shaderДанное имя относится к шейдеру.
asset_animationcurveДанное название относится к кривой анимации.
asset_sequenceДанное имя относится к последовательности.
-

-

Синтаксис:

-

asset_get_tags(name_or_index, [asset_type]);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
name_or_indexСтрока или активThe name of the asset (a string) or its index.
[asset_type]Тип актива ПостояннаяOPTIONAL! The type of asset to get the tags for, only used when supplying an index for the first argument.
-

-

Возвращается:

-

Array

-

-

Пример:

-

my_tags = asset_get_tags(object_get_name(object_index));

-

Приведенный выше код получит все теги, назначенные объекту, на основе которого был создан экземпляр, выполняющий этот код.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_get_type.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_get_type.htm index 2188fced3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_get_type.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_get_type.htm @@ -1,145 +0,0 @@ - - - - - - asset_get_type - - - - - - - - - - - -

asset_get_type

-

С помощью этой функции вы можете получить тип актива, на который ссылаются, из его имени (строки). При этом будет возвращена одна из перечисленных ниже констант.

-

-

Синтаксис:

-

asset_get_type(name);

- - - - - - - - - - - - - -
АргументТипОписание
nameСтрокаThe name of the game asset to get the type of (a string).
-

-

Возвращается:

-

Asset Type Constant

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
asset_objectДанное имя относится к объекту.
asset_spriteДанное имя относится к спрайту.
asset_soundДанное имя обозначает звук.
asset_roomДанное имя относится к room.
asset_tilesДанное название относится к набору плиток.
asset_pathДанное имя относится к пути.
asset_scriptДанное имя относится к script.
asset_fontДанное название относится к шрифту.
asset_timelineДанное имя относится к временной линии.
asset_shaderДанное имя относится к шейдеру.
asset_animationcurveДанное название относится к кривой анимации.
asset_sequenceДанное имя относится к последовательности.
asset_unknownДанное имя относится к активу, который либо не существует, либо не является одним из перечисленных выше.
-
-

-

Пример:

-

if asset_get_type("pth_Path_" + string(global.Game)) == asset_unknown
- {
-     show_debug_message("Path doesn't exist!!!");
- }
- else
- {
-     path_index = asset_get_index("pth_Path_" + string(global.Game));
- }

-

Приведенный выше код проверяет динамически созданное имя актива, чтобы убедиться, что актив имеет правильный тип. Если это не так, то будет показано отладочное сообщение, в противном случае имя актива используется для назначения актива экземпляру.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_has_any_tag.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_has_any_tag.htm index 80ec1db36..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_has_any_tag.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_has_any_tag.htm @@ -1,152 +0,0 @@ - - - - - - asset_has_any_tag - - - - - - - - - - - -

asset_has_any_tag

-

С помощью этой функции вы можете проверить, присвоена ли одна или несколько строк тегов любому активу из браузера активов. Вы передаете либо имя актива (в виде строки), либо его индекс актива, а также либо одну строку тега, либо массив, каждый элемент которого является одной строкой тега. Если вы указываете значение индекса актива, то вам необходимо указать дополнительный аргумент тип актива (константа), так как активы разных типов могут иметь одинаковый индекс, хотя они не могут иметь одинаковое имя. Доступные типы активов перечислены в таблице ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
asset_objectДанное имя относится к объекту.
asset_spriteДанное имя относится к спрайту.
asset_soundДанное имя обозначает звук.
asset_roomДанное имя относится к room.
asset_tilesДанное название относится к набору плиток.
asset_pathДанное имя относится к пути.
asset_scriptДанное имя относится к script.
asset_fontДанное название относится к шрифту.
asset_timelineДанное имя относится к временной линии.
asset_shaderДанное имя относится к шейдеру.
asset_animationcurveДанное имя относится к кривой анимации.
asset_sequenceДанное имя относится к последовательности.
-

Если функция работает успешно и один или несколько тегов присутствуют для актива, то возвращается true, в противном случае возвращается false. Если вам нужно проверить точное соответствие какому-либо тегу или набору тегов, то используйте функцию asset_has_tags().

-

-

-

Синтаксис:

-

asset_has_any_tag(name_or_index, tags, [asset_type]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
name_or_indexСтрока или АктивThe name of the asset (a string) or its index value (an integer).
tagsСтрока или Массив строкA single asset tag string or an array with various asset tags.
[asset_type]Тип актива ПостояннаяOPTIONAL! The type of asset to check the tags for, only used when supplying an index for the first argument.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var _a = array_create(3);
- _a[0] = "boss";
- _a[1] = "main_boss";
- _a[2] = "final_boss";
-
- if asset_has_any_tag(object_index, _a, asset_object)
- {
-     instance_create_layer(0, 0, "Overlay", obj_Boss_Text);
- } -

-

Приведенный выше код создаст массив тегов, затем проверит, применяются ли какие-либо из них к данному объекту, и если да, то создаст экземпляр другого объекта.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_has_tags.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_has_tags.htm index 6e1ad0c66..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_has_tags.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_has_tags.htm @@ -1,152 +0,0 @@ - - - - - - asset_has_tags - - - - - - - - - - - -

asset_has_tags

-

С помощью этой функции вы можете проверить, присвоена ли одна или несколько строк тегов любому активу из браузера активов. Вы передаете либо имя актива (в виде строки), либо его индекс актива, а также либо одну строку тега, либо массив, каждый элемент которого является одной строкой тега. Если вы указываете значение индекса актива, то вам необходимо указать дополнительный аргумент тип актива (константа), так как активы разных типов могут иметь одинаковый индекс, хотя они не могут иметь одинаковое имя. Доступные типы активов перечислены в таблице ниже:

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
asset_objectДанное имя относится к объекту.
asset_spriteДанное имя относится к спрайту.
asset_soundДанное имя обозначает звук.
asset_roomДанное имя относится к room.
asset_tilesДанное название относится к набору плиток.
asset_pathДанное имя относится к пути.
asset_scriptДанное имя относится к script.
asset_fontДанное название относится к шрифту.
asset_timelineДанное имя относится к временной линии.
asset_shaderДанное имя относится к шейдеру.
asset_animationcurveДанное название относится к кривой анимации.
asset_sequenceДанное имя относится к последовательности.
-

-

Если функция работает успешно и для актива присутствуют все заданные теги, то она возвращает true, в противном случае возвращает false. Если вам нужно проверить не все теги, а любой из выбранных, используйте функцию asset_has_any_tag().

-

-

-

Синтаксис:

-

asset_has_tags(name_or_index, tags, [asset_type]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
name_or_indexСтрока или активThe name of the asset (a string) or its index value (an integer).
tagsСтрока или массив строкA single asset tag string or an array with various asset tags.
[asset_type]Тип актива ПостояннаяOPTIONAL! The type of asset to check the tags for, only used when supplying an index for the first argument.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var _a = array_create(3);
- _a[0] = "enemy";
- _a[1] = "level_" + string(global.Level);
- _a[2] = "boss";
- if asset_has_tags(object_index, _a, asset_object)
- {
-     instance_create_layer(0, 0, "Overlay", obj_Boss_Text);
- }

-

Приведенный выше код создаст массив тегов, затем проверит, все ли из них применены к данному объекту, и если да, то создаст экземпляр другого объекта.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_remove_tags.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_remove_tags.htm index 675c0ad1b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_remove_tags.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/asset_remove_tags.htm @@ -1,146 +0,0 @@ - - - - - - asset_remove_tags - - - - - - - - - - -

asset_remove_tags

-

С помощью этой функции вы можете удалить одну или несколько строк тегов для любого актива из браузера активов. Вы передаете либо имя актива (в виде строки), либо его индекс, а также либо одну строку тегов, либо массив, каждый элемент которого является одной строкой тегов. Если вы указываете значение индекса актива, то вам необходимо указать дополнительный аргумент тип актива (константа), так как активы разных типов могут иметь одинаковый индекс, хотя они не могут иметь одинаковое имя. Доступные типы активов перечислены в таблице ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
asset_objectДанное имя относится к объекту.
asset_spriteДанное имя относится к спрайту.
asset_soundДанное имя обозначает звук.
asset_roomДанное имя относится к room.
asset_tilesДанное название относится к набору плиток.
asset_pathДанное имя относится к пути.
asset_scriptДанное имя относится к script.
asset_fontДанное название относится к шрифту.
asset_timelineДанное имя относится к временной линии.
asset_shaderДанное имя относится к шейдеру.
asset_animationcurveДанное имя относится к кривой анимации.
asset_sequenceДанное имя относится к последовательности.
-

Если функция успешно удаляет метку (метки), она возвращает true, в противном случае возвращает false.

-

-

-

Синтаксис:

-

asset_remove_tags(name_or_index, tags, [asset_type]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
name_or_indexСтрока или активThe name of the asset (a string) or its index value (an integer).
tagsСтрока или массив строкA single asset tag string or an array with various asset tags.
[asset_type]Тип актива ПостояннаяOPTIONAL! The type of asset to remove the tags from, only used when supplying an index for the first argument.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var _a = array_create(3);
- _a[0] = "enemy";
- _a[1] = "all_levels";
- _a[2] = "boss";
- asset_remove_tags(obj_Enemy_Boss_Parent, _a, asset_object);

-

Приведенный выше код создаст массив тегов, а затем удалит их из заданного объекта.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/tag_get_asset_ids.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/tag_get_asset_ids.htm index 05d77bedf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/tag_get_asset_ids.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/tag_get_asset_ids.htm @@ -1,140 +0,0 @@ - - - - - - tag_get_asset_ids - - - - - - - - - - - -

tag_get_asset_ids

-

С помощью этой функции вы можете получить все активы заданного типа, которым присвоены заданные теги. Вы предоставляете либо один тег (в виде строки), либо массив, где каждый элемент массива является тегом (в виде строки), а также тип актива для проверки. тип актива должен быть одной из следующих констант:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
asset_objectДанное имя относится к объекту.
asset_spriteДанное имя относится к спрайту.
asset_soundДанное имя обозначает звук.
asset_roomДанное имя относится к room.
asset_tilesДанное название относится к набору плиток.
asset_pathДанное имя относится к пути.
asset_scriptДанное имя относится к script.
asset_fontДанное название относится к шрифту.
asset_timelineДанное имя относится к временной линии.
asset_shaderДанное имя относится к шейдеру.
asset_animationcurveДанное имя относится к кривой анимации.
asset_sequenceДанное имя относится к последовательности.
-

-

Функция вернет массив, где каждый элемент массива будет одним значением индекса актива. Если не существует активов данного типа, имеющих заданный тег(ы), будет возвращен пустой массив.

-

-

Синтаксис:

-

tag_get_asset_ids(tags, asset_type);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
tagsСтрока или массив строкA single asset tag string or an array with various asset tags.
asset_typeТип актива ПостояннаяAn asset type constant (listed above)
-

-

Возвращается:

-

Array

-

-

Пример:

-

var _paths = tag_get_asset_ids("enemy", asset_path);
- var _num = irandom(array_length(_paths) - 1);
- path_start(_paths[_num], 1, path_action_reverse, false);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/tag_get_assets.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/tag_get_assets.htm index 0dfa7e496..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/tag_get_assets.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Assets_And_Tags/tag_get_assets.htm @@ -1,71 +0,0 @@ - - - - - - tag_get_assets - - - - - - - - - - - -

tag_get_assets

-

С помощью этой функции можно получить имена всех активов, которым был присвоен заданный тег или теги. Вы передаете либо одну строку тега, либо массив, где каждый элемент массива - это строка тега. Функция вернет массив, каждый элемент которого является именем (в виде строки) актива с заданным тегом. Если вам нужен уникальный индекс актива, то вы можете использовать функцию asset_get_index() вместе с возвращаемым именем. Если активов с заданным тегом (тегами) нет, или если произошла ошибка (например, заданные теги не существуют), то будет возвращен пустой массив.

-

-

Синтаксис:

-

tag_get_assets(tags);

- - - - - - - - - - - - - -
АргументТипОписание
tagsСтрока или массив строкA single asset tag string or an array with various asset tags.
-

-

Возвращается:

-

Array

-

-

Пример:

-

backgrounds = ds_list_create();
- var _assets = tag_get_assets("background");
- for (var i = 0; i< array_length(_assets); ++i)
- {
-     if asset_get_type(_assets[i]) == asset_sprite
-     {
-         ds_list_add(backgrounds, asset_get_index(_assets[i]));
-     }
- }

-

Приведенный выше код создает список, затем извлекает имена всех активов с тегом "background". Он циклически просматривает массив возвращенных имен, проверяя, являются ли какие-либо из них активами sprite, и если да, то уникальное значение индекса для актива добавляется в список для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio.htm index 7c7d34b8c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio.htm @@ -1,98 +0,0 @@ - - - - - - Аудио - - - - - - - - - - -

Аудио

-

GameMaker имеет полноценный звуковой движок, основанный на звуковых форматах *.ogg, *.mp3 и *.wav. Звуки этих типов, добавленные в IDE, могут быть использованы в вашей игре с помощью базовых аудиофункций, показанных ниже. Для более сложных вещей, чем базовые звуковые эффекты или воспроизведение одного музыкального фрагмента, вы можете обратиться к расширенным аудиофункциям, которые позволяют изменить способ воспроизведения звука. Есть также ряд более специализированных функций, предназначенных для потоковой передачи звука, позиционирования звука - для создания 3D-звука - и группировки звука.

-

ВАЖНО! При использовании звука в HTML5-цели следует помнить, что не все браузеры поддерживают Web Audio, поэтому при запуске ваш проект может не воспроизводить звук. Вы можете получить общее представление о поддержке Web Audio по следующей ссылке: Могу ли я использовать Web Audio?

-

Следующие функции предназначены для работы со звуком наиболее простым и понятным способом, избегая использования эмиттеров и позволяя пользователю легко генерировать звуки и воспроизводить музыку, поскольку эти звуки всегда генерируются в позиции слушателя (более подробную информацию о слушателе см. в разделе по ссылке ниже) и поэтому, как правило, не зависят от каких-либо изменений в слушателе:

- -

-

Следующие функции предназначены для обеспечения большего контроля над работой звукового движка и над тем, как воспроизводимые через него звуки будут "слышны" слушателю. Поэтому рекомендуется, чтобы вы хорошо знали, как работает остальная часть звукового движка GameMaker, прежде чем использовать любую из следующих функций:

- -

-

Дополнительные расширенные функции, такие как настройка слушателей, запись звука или синхронизация нескольких аудиодорожек во времени, можно найти в подразделах, перечисленных ниже:

- -

-

Веб-аудио

-

При создании игр для целевой платформы HTML5 звуковой движок требует поддержки Web Audio, а это, в свою очередь, означает, что иногда звук не будет воспроизводиться, когда или как вы ожидаете. Это происходит потому, что контекст Web Audio может не работать или перестать работать во время воспроизведения игры. Причины этого сильно различаются в разных браузерах и даже в разных версиях одного и того же браузера, поэтому обнаружение изменения состояния контекста веб-аудио очень важно, например: для обнаружения изменения контекста и приостановки/запуска зацикленного аудио, например фоновой музыки.

-

Чтобы решить эту проблему, GameMaker предлагает два разных способа обнаружения изменения состояния контекста Web Audio, либо с помощью следующей функции:

- -

-

Вы также можете использовать асинхронное системное событие, которое будет срабатывать всякий раз при изменении состояния Web Audio. В этом событии вы получите встроенную async_load DS map, заполненная ключом "event_type", который, в свою очередь, будет содержать строку "audio_system_status", если это аудиособытие. Когда этот ключ существует, также будет существовать дополнительный ключ "status", который будет либо "available", либо "unavailable". Обратите внимание, что это событие будет срабатывать на всех платформах, но на всех, кроме HTML5, оно будет срабатывать только один раз при запуске игры, когда аудиодвижок впервые инициализируется. Для получения дополнительной информации см. раздел:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/Audio_Buffers.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/Audio_Buffers.htm index c14868715..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/Audio_Buffers.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/Audio_Buffers.htm @@ -1,64 +0,0 @@ - - - - - - Аудио буферы - - - - - - - - - - -

Аудио буферы

-

Вы можете использовать звуковые буферы для загрузки, сохранения и манипулирования аудиофайлами в ваших играх. Эти буферы создаются заранее с помощью соответствующих функций буферов, а затем вы можете использовать следующие функции для создания звука, который будет использоваться в вашем проекте:

- -

-

Обратите внимание, что после создания звука из звукового буфера вы не создаете новый звук в памяти, а указываете на позицию в буфере, где хранится звук. Вы не должны изменять этот буфер после того, как с ним был связан звук, иначе вы получите неожиданные результаты, и вы не можете удалить буфер, пока с ним связан звук. Вместо этого сначала освободите звук (или звуки), а затем удалите буфер. После создания нового аудиоресурса из буфера вы можете использовать его индексное значение в любой из обычных аудиофункций для его воспроизведения, изменения усиления или высоты тона, приостановки и т.д.. Обратите внимание, что буфер, используемый для загрузки аудио, может поддерживать только звуки PCM, поэтому такие форматы, как OGG, не будут поддерживаться.

-

Еще одна особенность буферизованного аудио заключается в том, что вы можете использовать буфер для создания очереди аудио, которая затем может быть передана на устройство, на котором запущен ваш проект. Очередь аудио берет обычный буфер, который вы предварительно заполнили аудиоданными, и позволяет вам "указать" на его части и сказать GameMaker, чтобы он передавал аудио в заданном порядке из этого буфера. Для аудиоочереди доступны следующие функции:

- -

-

После создания очереди вы можете использовать возвращенный индекс очереди так же, как и индекс звука для любого обычного звука, чтобы воспроизвести его, поставить на паузу, перезапустить, изменить усиление и высоту тона. Единственное, что вы не можете сделать, это получить длину дорожки или установить ее положение, но в остальном звуковую очередь можно использовать так же, как и любой другой звук. Следует также отметить, что некоторые функции аудиоочереди также вызывают асинхронное событие Audio Playback Asynchronous Event.

-

Аудиобуферы также позволяют записывать звук из любого доступного источника (например, микрофона или ОС), который затем может быть поставлен в очередь и передан с помощью вышеупомянутых функций (например). Запись звука вызовет асинхронное событие Audio Recording Asynchronous Event, которое будет содержать конкретную информацию о том, что записывается.
-
- Для записи аудио доступны следующие функции: -

- -

-

ПРИМЕЧАНИЕ Большинство платформ , кроме HTML5, поддерживают запись звука в той или иной форме, но это не означает, что все устройства позволят это сделать, даже если платформа позволяет, поэтому всегда следует проверять, что функция audio_get_recorder_count() возвращает значение больше 0, чтобы убедиться, что записывающие устройства доступны, прежде чем использовать остальные функции записи.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_create_buffer_sound.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_create_buffer_sound.htm index 1bd6e13ae..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_create_buffer_sound.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_create_buffer_sound.htm @@ -1,140 +0,0 @@ - - - - - - audio_create_buffer_sound - - - - - - - - - - - -

audio_create_buffer_sound

-

С помощью этой функции вы можете создать новый звук из содержимого буфера. Буфер будет создан ранее (см. функции буфера для получения подробной информации о том, как это сделать), и в него будут добавлены или загружены данные. Затем вы передаете этой функции формат данных (в настоящее время поддерживаются только buffer_u8 или buffer_s16 ), частоту дискретизации (которая может быть от 1000 Гц до 48000 Гц) и смещение в буфере для получения данных. Также необходимо указать количество сэмплов в буфере и каналы, которые требуются звуку. Эти каналы определяются одной из следующих констант:

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип аудиоканала
ПостояннаяОписание
audio_monoМонофонический (одноканальный) звук.
audio_stereoСтерео (двухканальный) звук.
audio_3D3D (5.1) аудио.
-

Обратите внимание, что после создания звука необходимо освободить связанный с ним индекс указателя, когда он больше не нужен, используя функцию audio_free_buffer_sound(). Если этого не сделать, а затем переназначить переменную или изменить комнату и т.д., идентификатор звука будет потерян и произойдет утечка памяти. Также обратите внимание, что вы не можете удалить буфер, если из него был создан какой-либо звук, и звук не был сначала освобожден. Поэтому сначала нужно освободить звук (или звуки), а затем удалить буфер. Также стоит отметить, что добавление чего-либо в буфер или изменение размера буфера после того, как из него был создан звук, приведет к неожиданным результатам, и это не рекомендуется - как только вы начали создавать звуки из любого буфера, вы не должны манипулировать им каким-либо другим образом.

-

-

Синтаксис:

-

audio_create_buffer_sound(bufferId, bufferFormat, bufferRate, bufferOffset, bufferLength, bufferChannels);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferIdИдентификатор буфераThe ID of the buffer to use.
bufferFormatТип данных буфера КонстантаThe format of the data in the buffer (buffer_u8 или buffer_s16).
bufferRateРеальноThe sample rate of the data in the buffer.
bufferOffsetРеальноThe offset into the buffer to read the sample data from (in bytes).
bufferLengthРеальноThe length of the buffer (the number of bytes of audio data, excluding the header).
bufferChannelsТип аудиоканалаThe channels to use from one of the constants listed above.
-

-

Возвращается:

-

Sound Asset

-

-

Пример:

-

var rate = 44100;
- var hertz = irandom_range(220, 880);
- var samples = 44100;
-
- var bufferId = buffer_create(rate, buffer_fast, 1);
- buffer_seek(bufferId, buffer_seek_start, 0);
-
- var num_to_write = rate / hertz;
- var length = buffer_get_size(bufferId);
- var val_to_write = 1;
-
- for (var i = 0; i < (samples / num_to_write) + 1; i++)
- {
-     for (var j = 0; j < num_to_write; j++)
-     {
-         buffer_write(bufferId, buffer_u8, val_to_write * 255);
-     }
-     val_to_write = (1 - val_to_write);
- }
-
- soundId = audio_create_buffer_sound(bufferId, buffer_u8, rate, 0, length, audio_stereo); -

-

Вышеописанное создает буфер, а затем процедурно заполняет его данными. Эти данные затем используются для создания нового звука, который хранится в переменной "soundId".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_create_play_queue.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_create_play_queue.htm index 45f5a5f07..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_create_play_queue.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_create_play_queue.htm @@ -1,104 +0,0 @@ - - - - - - audio_create_play_queue - - - - - - - - - - - -

audio_create_play_queue

-

Эта функция подготавливает буферную очередь для аудио. Вы передаете формат данных (в настоящее время поддерживаются только buffer_u8 или buffer_s16 ), частоту дискретизации (которая может быть от 1000гц до 48000гц), и каналы, которые требует аудио из одной из перечисленных ниже констант:

- - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
audio_monoМонофонический (одноканальный) звук.
audio_stereoСтерео (двухканальный) звук.
audio_3D3D (5.1) аудио.
-


- Обратите внимание, что вы должны освободить все очереди аудио, созданные с помощью этой функции, когда они больше не нужны, чтобы предотвратить утечку памяти при использовании функции audio_free_play_queue().

-

Эта функция вызовет асинхронное событие воспроизведения аудио, когда очередь достигнет конца, и в этом событии будет создана специальная карта DS в переменной async_load со следующими парами ключ/значение:

-
    -
  • "queue_id" - очередь, которая закончила воспроизведение данных
  • -
  • "buffer_id" - буфер, воспроизведение из которого прекращено
  • -
  • "queue_shutdown" - устанавливается в 0 при нормальном воспроизведении и в 1 при получении события, потому что audio_free_play_queue() было вызвано. Когда этот параметр установлен в 1, вы не хотите ставить в очередь дальнейшие данные.
  • -
-

-

Синтаксис:

-

audio_create_play_queue(queueFormat, queueRate, queueChannels);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
queueFormatТип данных буфера КонстантаThe format of the buffer data to use (buffer_u8 или buffer_s16).
queueRateРеальноThe sample rate of the data in the buffer queue.
queueChannelsТип аудиоканалаThe channels to use from one of the constants listed above.
-

-

Возвращается:

-

Audio Queue ID

-

-

Пример:

-

audio_queue = audio_create_play_queue(buffer_s16, 11052, audio_mono);

-

Приведенный выше код создает новую очередь аудио и присваивает ее ID переменной для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_free_buffer_sound.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_free_buffer_sound.htm index 86de07010..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_free_buffer_sound.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_free_buffer_sound.htm @@ -1,62 +0,0 @@ - - - - - - audio_free_buffer_sound - - - - - - - - - - -

audio_free_buffer_sound

-

С помощью этой функции можно освободить значение индекса указателя, связанное с идентификатором звука. Освобожденные звуки будут недоступны для воспроизведения, а если воспроизводится несколько экземпляров звука, то все они будут остановлены. Обратите внимание, что перед удалением - сам буфер, необходимо сначала освободить все связанные с ним идентификаторы звуков.

-

-

Синтаксис:

-

audio_free_buffer_sound(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the buffered sound to free.
-

-

Возвращается:

-

-

-

Пример:

-

audio_free_buffer_sound(soundID);

-

Приведенный выше код освобождает буферизованный звук, индексированный в переменной "soundID".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_free_play_queue.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_free_play_queue.htm index 062d1f321..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_free_play_queue.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_free_play_queue.htm @@ -1,72 +0,0 @@ - - - - - - audio_free_play_queue - - - - - - - - - - -

audio_free_play_queue

-

Эта функция используется для освобождения памяти, связанной с заданной аудиоочередью. Индекс очереди - это значение, возвращенное при создании очереди с помощью функции audio_create_play_queue()и эта функция должна вызываться, когда очередь больше не нужна, чтобы предотвратить утечку памяти. Освобождение очереди остановит любой воспроизводимый звук, и вы не сможете удалить буфер, из которого передается звук, пока не будет освобождена очередь, которой он назначен. Эта функция вызовет асинхронное событие воспроизведения звука, и в этом событии в переменной будет создана специальная DS карта async_load со следующими парами ключ/значение:

-
    -
  • "queue_id" - очередь, которая закончила воспроизведение данных
  • -
  • "buffer_id" - буфер, воспроизведение из которого прекращено
  • -
  • "queue_shutdown" - устанавливается в 0 при обычном воспроизведении и в 1 при получении события, поскольку вы освободили очередь с помощью этой функции. Когда это значение равно 1, вы не хотите больше ставить данные в очередь.
  • -
-

-

Синтаксис:

-

audio_free_play_queue(queueIndex);

- - - - - - - - - - - - - -
АргументТипОписание
queueIndexИдентификатор очереди аудиоThe index of the queue to free.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var q_id = async_load[? "queue_id"];
- if (q_id == audio_queue)
- {
-     audio_free_play_queue(audio_queue);
-     buffer_delete(audio_buffer);
- }

-

Приведенный выше код будет входить в событие асинхронного воспроизведения аудио и проверять, не находится ли аудио, которое закончило воспроизводиться, в "audio_queue", и если да, то освобождает очередь и связанный с ней буфер.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_get_recorder_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_get_recorder_count.htm index 40bbe76cc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_get_recorder_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_get_recorder_count.htm @@ -1,53 +0,0 @@ - - - - - - audio_get_recorder_count - - - - - - - - - - - -

audio_get_recorder_count

-

Эта функция возвращает количество источников записи звука (таких как микрофоны и т.д.), доступных в настоящее время для вашей игры. Так, если возвращаемое значение равно, например, четырем, то у вас будет аудио вход на источниках 0, 1, 2 и 3, причем одно из этих значений будет тем, с которого вы начнете запись с помощью функции audio_start_recording(). Это значение может меняться в любое время по мере того, как люди подключают/отключают микрофоны или другие источники входного сигнала к устройству. Обратите внимание, что вы можете использовать функцию audio_get_recorder_info() для получения информации о каждом подключенном устройстве.

-

ВАЖНО Эта функция всегда будет возвращать 1 на цели Opera GX.

-

-

Синтаксис:

-

audio_get_recorder_count();

-

-

Возвращается:

-

Real

-

-

Пример:

-

if audio_get_recorder_count() > 0
- {
-     channel_index = audio_start_recording(0);
- }

-

Приведенный выше код проверяет доступные аудиорекордеры и, если их 1 или более, начинает запись с первого из них (источник 0).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_get_recorder_info.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_get_recorder_info.htm index aa4d3442f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_get_recorder_info.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_get_recorder_info.htm @@ -1,76 +0,0 @@ - - - - - - audio_get_recorder_info - - - - - - - - - - - -

audio_get_recorder_info

-

Эта функция возвращает DS Map с информацией о заданном индексе источника диктофона. Вы можете узнать, сколько источников диктофонов доступно, используя функцию audio_get_recorder_count(), а возвращаемая карта будет содержать следующие пары ключ/значение:

-
    -
  • "имя" - имя для описания устройства
  • -
  • "индекс" - индекс, который будет использоваться для записи
  • -
  • "data_format" - формат, в котором будут возвращаться данные (в настоящее время это всегда buffer_s16, но в будущем могут поддерживаться и другие форматы).
  • -
  • "sample_rate" - частота дискретизации (в Гц) возвращаемых данных (в настоящее время она ограничена 16000 Гц, но в будущем может измениться).
  • -
  • "channels" - константа audio_mono (в будущем могут поддерживаться дополнительные константы для стерео и 3D)
  • -
-

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

-

ПРИМЕЧАНИЕ Большинство платформ поддерживают запись звука в той или иной форме, но это не означает, что все устройства позволят это сделать, даже если платформа это делает, поэтому всегда следует проверять, что функция audio_get_recorder_count() возвращает значение больше 0, чтобы убедиться, что устройства записи доступны, прежде чем использовать остальные функции записи.

-

-

Синтаксис:

-

audio_get_recorder_info(recorder_index);

- - - - - - - - - - - - - -
АргументТипОписание
recorder_indexРеальноThe index of the recorder source to get the information from.
-

-

Возвращается:

-

DS Map ID

-

-

Пример:

-

len = async_load[? "data_len"];
- audio_buff = buffer_create(len, buffer_fast, 1);
- buffer_copy(async_load[? "buffer_id"], 0, len, buff, 0);
- audio_queue_sound(audio_queue, audio_buff, 0, len);
- audio_play_sound(audio_queue, 10, 0);

-

Приведенный выше код будет вызван в асинхронном событии Audio Recording и присвоит некоторые записанные данные буферу, который затем будет добавлен в очередь аудио. Затем происходит воспроизведение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_queue_sound.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_queue_sound.htm index 5a89f173c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_queue_sound.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_queue_sound.htm @@ -1,81 +0,0 @@ - - - - - - audio_queue_sound - - - - - - - - - - -

audio_queue_sound

-

Эта функция добавит данные из буфера в очередь аудио, которую вы ранее создали с помощью функции audio_create_play_queue(). Вы указываете индекс очереди для добавления, ID буфера для получения данных, а также позицию (смещение) в буфере и количество байт для добавления. После добавления звука из буфера в очередь, буфер не может быть удален до тех пор, пока вы не освободите очередь с помощью функции audio_free_play_queue(), а свойства буфера должны соответствовать свойствам очереди, в которую вы добавляете звук.

-

-

Синтаксис:

-

audio_queue_sound(queueIndex, bufferId, bufferOffset, bufferLength);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
queueIndexИдентификатор очереди аудиоThe index of the queue to add to.
bufferIdИдентификатор буфераThe buffer to add to the queue.
bufferOffsetРеальноThe offset within the source buffer to start from.
bufferLengthРеальноThe length of the buffer (the number of the bytes in the buffer).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

len = async_load[? "data_len"];
- audio_buff = buffer_create(len, buffer_fast, 1);
- buffer_copy(async_load[? "buffer_id"], 0, len, buff, 0);
- audio_queue_sound(audio_queue, audio_buff, 0, len);
- audio_play_sound(audio_queue, 10, 0);

-

Приведенный выше код будет вызван в асинхронном событии Audio Recording и присвоит некоторые записанные данные буферу, который затем будет добавлен в очередь аудио. Затем происходит воспроизведение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_start_recording.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_start_recording.htm index 99872f818..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_start_recording.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_start_recording.htm @@ -1,70 +0,0 @@ - - - - - - audio_start_recording - - - - - - - - - - - -

audio_start_recording

-

Эта функция начнет запись звука с проиндексированного источника рекордера. Количество источников рекордера можно получить с помощью функции audio_get_recorder_count(), и как только вы начнете запись, аудио будет сохранено во временном буфере и начнет вызывать асинхронное событие Audio Recording Asynchronous Event. Это событие будет срабатывать на каждом шаге, когда происходит запись, и создаст специальную карту DS в переменной async_load со следующими парами ключ/значение:

-
    -
  • "buffer_id" - идентификатор временного буфера, который можно использовать для получения аудиоданных
  • -
  • "channel_index" - индекс канала записи (как возвращено функцией), с которого поступили данные
  • -
  • "data_len" - длина полученных данных (в байтах)
  • -
-

Обратите внимание, что после срабатывания асинхронного события звук во временном буфере будет стерт, поэтому вам следует скопировать его данные в пользовательский буфер, который вы создали ранее.

-

ПРИМЕЧАНИЕ Большинство платформ поддерживают запись звука в той или иной форме, но это не означает, что все устройства позволят это сделать, даже если платформа это делает, поэтому всегда следует проверять, что функция audio_get_recorder_count() возвращает значение больше 0, чтобы убедиться, что записывающие устройства доступны, прежде чем использовать остальные функции записи.

-

-

Синтаксис:

-

audio_start_recording(recorder_index);

- - - - - - - - - - - - - -
АргументТипОписание
recorder_indexРеальноThe index of the recorder source to use.
-

-

Возвращается:

-

Buffer ID

-

-

Пример:

-

audio_record = audio_start_recording(0);

-

Приведенный выше код начинает запись с источника 0 рекордера, сохраняя индекс канала записи в переменной "audio_record" для использования в асинхронном событии Audio Recording.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_stop_recording.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_stop_recording.htm index 886e9c115..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_stop_recording.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Buffers/audio_stop_recording.htm @@ -1,64 +0,0 @@ - - - - - - audio_stop_recording - - - - - - - - - - - -

audio_stop_recording

-

Эта функция остановит запись на заданном канале рекордера (индекс канала возвращается при вызове функции audio_start_recording()). Когда вы остановите запись, для данного канала рекордера не будет инициировано никаких дальнейших асинхронных событий аудиозаписи, поэтому обычно вы используете эту функцию в реальном асинхронном событии, чтобы убедиться, что вы захватили все данные.

-

ПРИМЕЧАНИЕ Большинство платформ поддерживают запись звука в той или иной форме, но это не означает, что все устройства позволят это сделать, даже если платформа это делает, поэтому всегда следует проверять, что функция audio_get_recorder_count() возвращает значение больше 0, чтобы убедиться, что записывающие устройства доступны, прежде чем использовать остальные функции записи.

-

-

Синтаксис:

-

audio_stop_recording(channel_index);

- - - - - - - - - - - - - -
АргументТипОписание
channel_indexРеальноThe index of the recorder channel to stop.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

audio_stop_recording(audio_channel);

-

Приведенный выше код сообщает GameMaker о необходимости остановить запись на заданном индексе аудиоканала.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/Audio_Emitters.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/Audio_Emitters.htm index dd622c363..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/Audio_Emitters.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/Audio_Emitters.htm @@ -1,120 +0,0 @@ - - - - - - Аудиоизлучатели - - - - - - - - - - -

Аудиоизлучатели

-

Аудиоэмиттеры предоставляются для повышения гибкости звукового движка GameMaker, они позволяют добавлять к аудиоматериалам эффекты реального времени, такие как изменение высоты тона и допплеровские изменения, а также возможность позиционировать звуки в трехмерном аудиопространстве и придавать им реалистичные эффекты движения. Все эти функции зависят от положения слушателя в звуковой среде, поэтому для изменения положения, скорости и ориентации слушателя необходимо использовать предусмотренные функции (см. - Аудиослушатели).

-

Использование аудиоизлучателей и слушателей

-

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

-

Установка модели падения

-

Первое, что необходимо сделать при работе с аудиоэмиттерами (и со звуками, воспроизводимыми с использованием audio_play_sound_at в позиции, отличной от (0, 0, 0), - это установка модели падения с помощью audio_falloff_set_model(). Модель falloff определяет, как изменяется громкость воспроизводимого звука в зависимости от расстояния от слушателя до излучателя.

-

Установка этого параметра не является обязательной, но если вы не вызовете эту функцию, то будет использоваться модель по умолчанию audio_falloff_none. Это означает, что коэффициент усиления установлен на 1, и поэтому громкость звука не меняется в зависимости от расстояния от слушателя до излучателя.

-

Если вы хотите, чтобы звуки больше не были слышны на максимальном расстоянии, вам следует установить одну из моделей падения, которые заканчиваются на _scaled.

-

Обновление слушателя

-

Слушатель звука по умолчанию находится в позиции (0, 0, 0). audio_play_sound воспроизводит звук в позиции слушателя. Поэтому по умолчанию звуки, воспроизводимые таким образом, будут слышны через оба динамика, правый и левый.

-

С момента изменения относительного положения слушателя по отношению к звуку или излучателю (путем изменения положения слушателя или излучателя) это уже не так.

-

Он имеет не только положение, но и ориентацию, которую можно изменить с помощью audio_listener_orientation. Однако по умолчанию эта ориентация перевернута! По умолчанию вектор вверх имеет значение (0, 1, 0), но поскольку ось y в GameMaker направлена вниз, это означает, что слушатель стоит в комнате вверх ногами.

-

Все, что вы ожидаете услышать в левом динамике, на самом деле будет слышно в правом динамике, и наоборот (см. стр. audio_listener_orientation изображение того, как это выглядит). Поэтому, когда вы начнете перемещать излучатели и слушателя, убедитесь, что ориентация слушателя задана следующим образом:

-

audio_listener_orientation(0, 0, 1, 0, -1, 0);

-

Приведенная выше строка кода установит ориентацию слушателя по умолчанию так, чтобы он смотрел на экран и был обращен вверх. Это соответствует слушателю, стоящему или сидящему за компьютером и смотрящему на экран.

-

При создании игры сверху вниз может быть интереснее сделать так, чтобы ориентация слушателя соответствовала направлению, в котором находится игрок (или любой другой "слушатель"). Это можно сделать с помощью следующей строки кода:

-

audio_listener_orientation(0, 0, 1, lengthdir_x(1, direction), lengthdir_y(1, direction), 0);

-

В этой строке кода вместо того, чтобы иметь вектор вверх, который вообще не меняется (y = -1 все время), вы изменяете его в зависимости от направления игрока. Самый простой способ сделать это - использовать функции lengthdir_x и lengthdir_y функции. Вектор look at может оставаться неизменным, поскольку слушатель по-прежнему смотрит на экран.

-

Воспроизведение звуков

-

После установки модели падения и проверки правильности обновления положения и ориентации слушателя можно начать воспроизведение звуков в трехмерном аудиопространстве с помощью функции audio_play_sound_at:

-

sound_instance = audio_play_sound_at(snd_Explosion, x, y, 0, 100, 300, 1, true, 1);

-

Приведенная выше строка кода воспроизводит звук "snd_Explosion" в позиции (x, y, 0) с опорным расстоянием падения 100, максимальным расстоянием падения 300 и коэффициентом падения 1.

-

Обратите внимание, что вы можете изменить некоторые свойства звука, поскольку доступ к нему можно получить через вышеуказанную переменную sound_instance. Однако это только свойства самого звука, такие как усиление, смещение и высота тона. Невозможно изменить положение или скорость звука, воспроизводимого с помощью переменной audio_play_sound_at.

-

В целом, audio_play_sound_at это хороший способ воспроизведения простых звуков в трехмерном аудиопространстве, но он ограничен. Он не позволяет изменять позицию, скорость или параметры падения после воспроизведения звука. Параметры положения и падения передаются в функцию, но не могут быть изменены после этого.

-

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

-

Добавление эмиттера

-

Звуковые излучатели добавляются с помощью audio_emitter_create. Они размещаются в точке (0, 0, 0), имеют скорость 0 и настройки падения по умолчанию.

-

emitter = audio_emitter_create();

-

Обновление эмиттера

-

Аудиоизлучатель "излучает" звук. Его можно сравнить с динамиком в реальном мире.

-

По сравнению с audio_play_sound_at, у эмиттера можно изменить положение, скорость, маску слушателя и параметры падения после того, как вы начнете воспроизводить на нем звук с помощью функции audio_play_sound_on.

-

Положение эмиттера можно обновить с помощью функции audio_emitter_position. Это может быть установлено в позицию экземпляра:

-

audio_emitter_position(emitter, x, y, 0);

-

Скорость эмиттера обновляется с помощью функции audio_emitter_velocity. Самый простой способ задать скорость - это установить ее на hspeed и vspeed экземпляра, например, так:

-

audio_emitter_velocity(emitter, hspeed, vspeed, 0);

-

Скорость звукового излучателя выражается в пикселях за шаг.

-

Звуковые излучатели, созданные в GameMaker

-

При работе с последовательностями GameMaker добавляет аудиоэмиттер для каждой звуковой дорожки(seqtracktype_audio ) в последовательности. ID этих эмиттеров можно найти в свойстве activeTracks[i].emitterIndex экземпляра последовательности.

-

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

-

Воспроизведение звуков на эмиттере

-

Звуки можно воспроизводить на эмиттере с помощью. audio_play_sound_on:

-

sound_instance = audio_play_sound_on(snd_Explosion, x, y, 0, 100, 300, 1, true, 1);
- -

-

Отслеживание воспроизведения экземпляров звука

-

Каждый раз, когда вы вызываете один из audio_play_sound, audio_play_sound_at или audio_play_sound_on вы создаете новый экземпляр звука.

-

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

-

Если вы хотите изменить свойства экземпляра звука, вы должны присвоить возвращаемое значение переменной, например, так:

-

sound_instance = audio_play_sound_at(snd_Explosion, x, y, 0, 100, 300, 1, true, 1);

-

В какой-то момент времени у вас может воспроизводиться довольно много экземпляров звука. В этом случае вы можете хранить их в массиве следующим образом:

-

var _x = random(room_width);
- var _y = random(room_height);
- var _new_sound_instance = audio_play_sound_at(snd_Bird, _x, _y, 0, 200, 400, true, 10);
- array_push(bird_sounds, _new_sound_instance);

-

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

-

Таким образом, вы можете отслеживать все воспроизводимые экземпляры звука ( snd_Bird в приведенном выше примере).

-

То, что звук "воспроизводится", не обязательно означает, что он будет услышан слушателем. Звуки, которые перестали воспроизводиться, находятся слишком далеко от слушателя или имеют слишком низкий коэффициент усиления (или воспроизводятся на излучателе, имеющем слишком низкий коэффициент усиления), не будут слышны.

-

Дополнительные слушатели

-

Если вы хотите использовать дополнительные слушатели, вам следует сначала проверить, поддерживает ли система несколько слушателей, используя audio_get_listener_count.

-

Если существует более одного слушателя, audio_get_listener_info можно использовать для получения имени, маски слушателя и индекса каждого слушателя.

-

Если вы знаете индекс слушателя, вы можете изменить его настройки (положение, скорость и ориентацию), используя функции, начинающиеся с audio_listener_set_ вместо audio_listener_.

-

Функции

-

Для работы с аудиоизлучателями существуют следующие функции:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_create.htm index d12e87224..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_create.htm @@ -1,56 +0,0 @@ - - - - - - audio_emitter_create - - - - - - - - - - - -

audio_emitter_create

-

Эта функция создает новый звуковой эмиттер и возвращает его индекс. Этот индекс должен храниться в переменной для всех последующих функций, связанных с этим эмиттером, а затем, когда он больше не нужен, его следует удалить из памяти с помощью функции audio_emitter_free() чтобы предотвратить утечку памяти, которая может привести к краху вашей игры.

-

Аудиоизлучатель создается со следующими настройками по умолчанию:

-
    -
  • Коэффициент усиления и шаг 1
  • -
  • Маска слушателя, установленная только для слушателя по умолчанию (1)
  • -
  • Положение (0, 0, 0)
  • -
  • Скорость равна 0 (vx = 0, vy = 0, vz = 0)
  • -
-

-

Синтаксис:

-

audio_emitter_create();

-

-

Возвращается:

-

Audio Emitter ID

-

-

Пример:

-

s_emit = audio_emitter_create();

-

Приведенный выше код создает новый аудиоэмиттер и присваивает его индекс переменной "s_emit".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_exists.htm index 05957b9e9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_exists.htm @@ -1,71 +0,0 @@ - - - - - - audio_emitter_exists - - - - - - - - - - - -

audio_emitter_exists

-

Эта функция возвращает, существует ли аудиоизлучатель (true) или нет (false). Обратите внимание, что если искомый индекс не был инициализирован ранее, эта функция выдаст ошибку, так как она ищет несуществующие индексы.

-

-

Синтаксис:

-

audio_emitter_exists(index);

- - - - - - - - - - - - - -
АргументТипОписание
indexИдентификатор аудиоизлучателяThe index of the emitter to check the existence of.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if audio_emitter_exists(s_emit)
- {
-     audio_play_sound_on(s_emit, snd_Explode, false, 1);
- }
- else
- {
-     s_emit = audio_emitter_create();
-     audio_play_sound_on(s_emit, snd_Explode, false, 1);
- }

-

Приведенный выше код проверяет, существует ли эмиттер, индексированный в (предварительно инициализированной) переменной "s_emit". Если он существует, то через него воспроизводится звук, если же нет, то он создается, а затем воспроизводится звук.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_falloff.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_falloff.htm index fcae34a76..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_falloff.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_falloff.htm @@ -1,81 +0,0 @@ - - - - - - audio_emitter_falloff - - - - - - - - - - -

audio_emitter_falloff

-

С помощью этой функции вы можете установить расстояние спада для излучателя. Это расстояние, на котором излучатель должен находиться от слушателя, чтобы звук "упал" до громкости 0. По умолчанию это значение равно 100, но остерегайтесь устанавливать значение меньше 1, так как в этом случае любой звук, воспроизводимый через этот излучатель, будет неслышен слушателю, однако любое другое значение приведет к затуханию звука, чем дальше излучатель находится от слушателя.

-

То, как будет слышен сам звук, зависит от опорного значения спада (это расстояние, на котором громкость источника обычно уменьшается вдвое) и коэффициента спада (который влияет на звук только после опорного расстояния спада). Коэффициент по умолчанию обычно равен 1, а влияние различных значений коэффициента спада зависит от выбранной модели.

-

Для получения полного руководства по различным моделям падения и использованию этих значений, пожалуйста, обратитесь к функции audio_falloff_set_model().

-

-

Синтаксис:

-

audio_emitter_falloff(emitter, falloff_ref, falloff_max, falloff_factor);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
emitterИдентификатор аудиоизлучателяThe index of the emitter to change.
falloff_refРеальноThe falloff reference relative to the listener (clamp).
falloff_maxРеальноThe maximum falloff distance relative to the listener.
falloff_factorРеальноThe falloff factor (default 1).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

s_emit = audio_emitter_create();
- audio_emitter_position(s_emit, x, y, 0);
- audio_emitter_falloff(s_emit, 100, 300, 1);

-

Приведенный выше код создает звуковой эмиттер и присваивает его индекс переменной "s_emit". Затем этот эмиттер помещается в позицию создающего его экземпляра, и ему присваивается расстояние падения 300, что означает, что когда эмиттер находится дальше 300 пикселей от позиции слушателя, он будет молчать. Его коэффициент падения по умолчанию равен 1, а ссылка на падение - 100, поэтому в 100 пикселях от слушателя начнется падение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_free.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_free.htm index d1d6f0630..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_free.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_free.htm @@ -1,66 +0,0 @@ - - - - - - audio_emitter_free - - - - - - - - - - -

audio_emitter_free

-

С помощью этой функции вы можете удалить заданный эмиттер из памяти. Это всегда следует делать, когда эмиттер не будет использоваться далее в комнате или игре, т.е. в событии Destroy Event экземпляра или в событии Room End Event, иначе вы можете получить утечку памяти, которая замедлит и в конечном итоге приведет к краху вашей игры.

-

-

Синтаксис:

-

audio_emitter_free(emitter);

- - - - - - - - - - - - - -
АргументТипОписание
emitterИдентификатор аудиоизлучателяThe index of the emitter to free.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if lives = 0
- {
-     audio_emitter_free(s_emit);
-     room_goto(rm_menu);
- }

-

Приведенный выше код проверяет значение глобальной переменной "lives" и если возвращает 0, то уничтожает эмиттер, указанный в переменной "s_emit", а затем переходит в комнату, указанную в переменной "rm_Menu".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_gain.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_gain.htm index 845bed6f8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_gain.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_gain.htm @@ -1,86 +0,0 @@ - - - - - - audio_emitter_gain - - - - - - - - - - -

audio_emitter_gain

-

Эта функция устанавливает максимальное усиление (громкость) для звука. Воспринимаемая громкость звука может меняться в зависимости от величины спада и его положения относительно слушателя, но при установке усиления с помощью этой функции полная громкость никогда не превысит указанного значения усиления. На изображении ниже показано, как усиление влияет на громкость излучателя, когда значение fall-off больше 0:

-

Эта функция изменит громкость звука во время его воспроизведения, а также всех последующих звуков, воспроизводимых через данный излучатель. Обратите внимание, что на некоторых платформах коэффициент усиления может быть больше 1, хотя значение 1 считается "полной громкостью", а большее значение может привести к клиппированию или искажению звука.

-

ПРИМЕЧАНИЕ на конечную громкость также влияет глобальное усиление звука, которое было установлено функцией audio_master_gain().

-

-

Синтаксис:

-

audio_emitter_gain(emitter, gain);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
emitterИдентификатор аудиоизлучателяThe index of the emitter to change.
gainРеальноThe maximum gain (default 1).
timeReal  The length of the change in gain in milliseconds. Defaults to 0 (instantaneous change) if not passed.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if up
- {
-     gain += 0.05;
-     if (gain >= 1) up = false;
- }
- else
- {
-     gain -= 0.05;
-     if (gain <= 0) up = true;
- }
-
- audio_emitter_gain(s_emit, gain); -

-

Приведенный выше код устанавливает переменную "gain" в различные значения, а затем использует эту же переменную для установки усиления эмиттера, индексированного в переменной "s_emit".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_gain.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_gain.htm index 0b44a5f06..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_gain.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_gain.htm @@ -1,66 +0,0 @@ - - - - - - audio_emitter_get_gain - - - - - - - - - - - -

audio_emitter_get_gain

-

Эта функция возвращает текущее значение усиления (громкости), установленное для данного аудиоизлучателя, обычно в диапазоне от 0 до 1, где 0 - тишина, а 1 - полная громкость. Обратите внимание, что на некоторых платформах коэффициент усиления может быть больше 1, хотя значение 1 считается "полной громкостью", а большее значение может привести к обрыву звука.

-

-

Синтаксис:

-

audio_emitter_get_gain(emitter);

- - - - - - - - - - - - - -
АргументТипОписание
emitterИдентификатор аудиоизлучателяThe index of the emitter to use.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if audio_emitter_get_gain(emitter_player) < 1
- {
-     audio_emitter_gain(emitter_player, 1);
- }

-

Приведенный выше код проверяет текущее усиление данного эмиттера, и если оно меньше 1, то устанавливается в 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_listener_mask.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_listener_mask.htm index b7c36578a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_listener_mask.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_listener_mask.htm @@ -1,67 +0,0 @@ - - - - - - audio_emitter_get_listener_mask - - - - - - - - - - - -

audio_emitter_get_listener_mask

-

Эта функция возвращает данные битовой маски, определяющие, с каких аудиослушателей эмиттер должен воспроизводить звуки. Для получения дополнительной информации см. раздел " Аудиопрослушиватели".

-

-

Синтаксис:

-

audio_emitter_get_listener_mask(emitterID);

- - - - - - - - - - - - - -
АргументТипОписание
emitterIDИдентификатор аудиоизлучателяThe unique ID of the emitter to get the mask of
-

-

Возвращается:

-

Real

-

-

Пример:

-

s_emit = audio_emitter_create();
- if (audio_emitter_get_listener_mask(s_emit) != global.PlayerMask)
- {
-     audio_emitter_set_listener_mask(snd, global.PlayerMask);
- }

-

Приведенный выше код создает эмиттер, затем проверяет данные маски слушателя для него, и если они не совпадают с данными, хранящимися в глобальной переменной, то устанавливает слушателя(ей) для воспроизведения, используя данные маски, хранящиеся в глобальной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_pitch.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_pitch.htm index f56eaef6a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_pitch.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_pitch.htm @@ -1,66 +0,0 @@ - - - - - - audio_emitter_get_pitch - - - - - - - - - - - -

audio_emitter_get_pitch

-

Эта функция возвращает текущее значение высоты тона, установленное для данного звукового излучателя.

-

-

Синтаксис:

-

audio_emitter_get_pitch(emitter);

- - - - - - - - - - - - - -
АргументТипОписание
emitterИдентификатор аудиоизлучателяThe index of the emitter to use.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if audio_emitter_get_pitch(emitter_player) != 1
- {
-     audio_emitter_pitch(emitter_player, 1);
- }

-

Приведенный выше код проверяет текущий шаг данного эмиттера, и если он не равен 1, то он устанавливается в 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_vx.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_vx.htm index 5ff19ae92..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_vx.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_vx.htm @@ -1,66 +0,0 @@ - - - - - - audio_emitter_get_vx - - - - - - - - - - - -

audio_emitter_get_vx

-

Эта функция возвращает текущую скорость вдоль оси x для данного звукового излучателя.

-

-

Синтаксис:

-

audio_emitter_get_vx(emitter);

- - - - - - - - - - - - - -
АргументТипОписание
emitterИдентификатор аудиоизлучателяThe index of the emitter to use.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if audio_emitter_get_vx(emitter_player) != 0
- {
-     audio_emitter_velocity(emitter_player, 0, 0, 0);
- }

-

Приведенный выше код проверяет текущую x-скорость данного эмиттера, и если она не равна 0, то она устанавливается равной 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_vy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_vy.htm index 56c3a58bf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_vy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_vy.htm @@ -1,66 +0,0 @@ - - - - - - audio_emitter_get_vy - - - - - - - - - - - -

audio_emitter_get_vy

-

Эта функция возвращает текущую скорость вдоль оси y для данного звукового излучателя.

-

-

Синтаксис:

-

audio_emitter_get_vy(emitter);

- - - - - - - - - - - - - -
АргументТипОписание
emitterИдентификатор аудиоизлучателяThe index of the emitter to use.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if audio_emitter_get_vy(emitter_player) != 0
- {
-     audio_emitter_velocity(emitter_player, 0, 0, 0);
- }

-

Приведенный выше код проверяет текущую скорость y данного эмиттера, и если она не равна 0, то она устанавливается равной 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_vz.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_vz.htm index fe08c0dca..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_vz.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_vz.htm @@ -1,66 +0,0 @@ - - - - - - audio_emitter_get_vz - - - - - - - - - - - -

audio_emitter_get_vz

-

Эта функция возвращает текущую скорость вдоль оси z для данного звукового излучателя.

-

-

Синтаксис:

-

audio_emitter_get_vz(emitter);

- - - - - - - - - - - - - -
АргументТипОписание
emitterИдентификатор аудиоизлучателяThe index of the emitter to use.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if audio_emitter_get_vz(emitter_player) != 0
- {
-     audio_emitter_velocity(emitter_player, 0, 0, 0);
- }

-

Приведенный выше код проверяет текущую скорость z данного эмиттера, и если она не равна 0, то она устанавливается равной 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_x.htm index d8ce70f44..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_x.htm @@ -1,66 +0,0 @@ - - - - - - audio_emitter_get_x - - - - - - - - - - - -

audio_emitter_get_x

-

Эта функция возвращает текущее положение x заданного звукового излучателя.

-

-

Синтаксис:

-

audio_emitter_get_x(emitter);

- - - - - - - - - - - - - -
АргументТипОписание
emitterИдентификатор аудиоизлучателяThe index of the emitter to use.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if audio_emitter_get_x(emitter_player) != x
- {
-     audio_emitter_position(emitter_player, x, y, 0);
- }

-

Приведенный выше код проверяет текущее положение x данного эмиттера, и если оно не равно положению x экземпляра, то оно устанавливается в положение экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_y.htm index fb8eb3b4a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_y.htm @@ -1,66 +0,0 @@ - - - - - - audio_emitter_get_y - - - - - - - - - - - -

audio_emitter_get_y

-

Эта функция возвращает текущее положение y заданного звукового излучателя.

-

-

Синтаксис:

-

audio_emitter_get_y(emitter);

- - - - - - - - - - - - - -
АргументТипОписание
emitterИдентификатор аудиоизлучателяThe index of the emitter to use.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if audio_emitter_get_y(emitter_player) != x
- {
-     audio_emitter_position(emitter_player, x, y, 0);
- }

-

Приведенный выше код проверяет текущую позицию y данного эмиттера, и если она не равна позиции y экземпляра, то она устанавливается в позицию экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_z.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_z.htm index 70f8c9790..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_z.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_get_z.htm @@ -1,68 +0,0 @@ - - - - - - audio_emitter_get_z - - - - - - - - - - - -

audio_emitter_get_z

-

Эта функция возвращает текущее положение z заданного звукового излучателя.

-

-

Синтаксис:

-

audio_emitter_get_z(emitter);

- - - - - - - - - - - - - -
АргументТипОписание
emitterИдентификатор аудиоизлучателяThe index of the emitter to use.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if audio_emitter_get_z(emitter_player) != 0
- {
-     var ex = audio_emitter_get_x(emitter_player);
-     var ey = audio_emitter_get_y(emitter_player);
-     audio_emitter_position(emitter_player, ex, ey, 0);
- }

-

Приведенный выше код проверяет текущую позицию z данного эмиттера и, если она не равна 0, то она устанавливается в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_pitch.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_pitch.htm index d7d5ae938..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_pitch.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_pitch.htm @@ -1,75 +0,0 @@ - - - - - - audio_emitter_pitch - - - - - - - - - - -

audio_emitter_pitch

-

Эта функция может быть использована для изменения высоты тона всех звуков, издаваемых данным излучателем. Это множитель высоты тона, то есть вводимое значение умножает текущую высоту тона на данное значение, поэтому значение по умолчанию 1 не изменяет высоту тона, а значение меньше 1 понижает высоту тона, а больше 1 повышает высоту тона. Для этой функции лучше всего использовать небольшие приращения, поскольку любое значение меньше 0 или больше 5 может быть не слышно.

-

Звуки, уже воспроизводимые на аудиоизлучателе, не нужно перезапускать, чтобы изменение высоты тона стало слышимым. Изменение высоты тона применяется немедленно.

-
-

Синтаксис:

-

audio_emitter_pitch(emitter, pitch);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
emitterИдентификатор аудиоизлучателяThe index of the emitter to change.
pitchРеальноThe pitch multiplier (default 1).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

switch (gear)
- {
-     case 1: audio_emitter_pitch(s_emit, 0.8); break;
-     case 2: audio_emitter_pitch(s_emit, 0.9); break;
-     case 3: audio_emitter_pitch(s_emit, 0.95); break;
-     case 4: audio_emitter_pitch(s_emit, 1); break;
-     case 5: audio_emitter_pitch(s_emit, 1.2); break;
- }

-

Приведенный выше код будет изменять высоту тона звука, воспроизводимого эмиттером, индексированным в переменной "s_emit", в зависимости от значения переменной "gear".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_position.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_position.htm index 87273ce40..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_position.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_position.htm @@ -1,80 +0,0 @@ - - - - - - audio_emitter_position - - - - - - - - - - -

audio_emitter_position

-

С помощью этой функции вы можете изменить положение аудиоизлучателя в трехмерном аудиопространстве. Положение будет по-разному влиять на звук в зависимости от того, где находится слушатель в аудиопространстве (положение по умолчанию - (0, 0, 0). См. audio_listener_position() например, если позиция эмиттера установлена на (100, 0, 0), а текущий слушатель находится на (200, 0, 0), то звук, передаваемый от эмиттера, окажется слева от звукового поля. На рисунке ниже показано визуальное представление эмиттеров и их относительных позиций по отношению к слушателю:

-

Audio Position Diagram

-

Синтаксис:

-

audio_emitter_position(emitter, x, y, z);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
emitterИдентификатор аудиоизлучателяThe index of the emitter to change.
xРеальноThe x position.
yРеальноThe y position.
zРеальноThe z position.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if speed > 0
- {
-     audio_emitter_position(s_emit, x, y, 0);
- }

-

Приведенный выше код проверяет, превышает ли скорость экземпляра 0, и если да, то обновляет звуковой эмиттер, индексированный в переменной "s_emit", до текущей позиции x/y.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_set_listener_mask.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_set_listener_mask.htm index 6b1e8a5aa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_set_listener_mask.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_set_listener_mask.htm @@ -1,68 +0,0 @@ - - - - - - audio_emitter_set_listener_mask - - - - - - - - - - -

audio_emitter_set_listener_mask

-

Эта функция может быть использована для установки битовой маски для эмиттера, чтобы все звуки, воспроизводимые через эмиттер, воспроизводились только от указанных слушателей. Вы можете создать битовую маску с помощью функции audio_get_listener_info() а затем с помощью побитового or ("|") создать пользовательскую маску с теми слушателями, от которых требуется воспроизведение звука, а затем применить эту маску к эмиттеру. Эта маска отменяет маску по умолчанию или ту, которую вы задали с помощью функции audio_set_listener_mask().

-

-

Синтаксис:

-

audio_emitter_set_listener_mask(emitterID, mask);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
emitterIDИдентификатор аудиоизлучателяThe unique ID of the emitter to set the mask of
maskРеальноThe bitmask data to set for the sound
-

-

Возвращается:

-

N/A

-

-

Пример:

-

s_emit = audio_emitter_create();
- audio_emitter_set_listener_mask(snd, global.PlayerMask);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_velocity.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_velocity.htm index 89c86b169..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_velocity.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_emitter_velocity.htm @@ -1,79 +0,0 @@ - - - - - - audio_emitter_velocity - - - - - - - - - - -

audio_emitter_velocity

-

Эта функция может быть использована для придания излучателю эффекта Доплера и имитации движения звука на основе вектора, который определяется из заданных относительных положений x, y и z. Если эмиттер сам по себе никогда не будет двигаться, вам обычно не нужно задавать эти значения, но, например, если вы создаете скроллинговую игру-стрелялку, где враги появляются справа и прокручиваются влево, вы должны установить скорость (hspeed, 0, 0) в событии создания врагов (и обновить эмиттер каждого экземпляра в событии шага с помощью параметра audio_emitter_position()), чтобы придать любым звукам, издаваемым вражескими экземплярами, правильный доплер, когда они проходят мимо экземпляра игрока (который, в свою очередь, будет использовать функцию audio_listener_position() для установки слушателя в правильное положение).

-

-

Синтаксис:

-

audio_emitter_velocity(emitter, vx, vy, vz);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
emitterИдентификатор аудиоизлучателяThe index of the emitter to change.
vxРеальноThe x vector value (default 0).
vyРеальноThe y vector value (default 0).
vzРеальноThe z vector value (default 0).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

s_emit = audio_emitter_create();
- audio_emitter_position(s_emit, room_width, 0, 0);
- audio_emitter_velocity(s_emit, -5, 0, 0);

-

Приведенный выше код создает звуковой излучатель и присваивает его индекс переменной "s_emit". Затем этот излучатель помещается в определенное место в комнате и ему присваивается скорость 5 пикселей за шаг вдоль оси x (он будет правильно доплеровски перемещаться относительно слушателя, как если бы он имел горизонтальную скорость 5 пикселей за шаг).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_play_sound_on.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_play_sound_on.htm index 7baae746b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_play_sound_on.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Emitters/audio_play_sound_on.htm @@ -1,106 +0,0 @@ - - - - - - audio_play_sound_on - - - - - - - - - - -

audio_play_sound_on

-

С помощью этой функции вы можете воспроизводить любой звуковой ресурс через эмиттер, при этом любые изменения усиления, положения, высоты тона или скорости эмиттера влияют на то, как пользователь слышит конечный воспроизводимый звук. Вы указываете индекс эмиттера для использования, индекс звука, который будет воспроизводиться, а затем указываете, должен ли звук зацикливаться или нет. Далее вы можете назначить приоритет, который затем используется для определения того, как звуки будут обработаны, когда количество воспроизводимых звуков превысит предел, установленный функцией audio_channel_num(). Звуки с более низким приоритетом будут остановлены в пользу звуков с более высоким приоритетом, а значение приоритета может быть любым реальным числом (фактическое значение произвольно и может быть от 0 до 1 или от 0 до 100, поскольку GameMaker будет определять их приоритет одинаково). Обратите внимание, что при работе с приоритетами чем больше число, тем выше приоритет, так что звуку с приоритетом 100 будет отдано предпочтение перед звуком с приоритетом 1.

-
-

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

-

-

Синтаксис:

-

audio_play_sound_on(emitter, sound, loop, priority, [gain], [offset], [pitch], [listener_mask]);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
emitterИдентификатор аудиоизлучателяThe index of the emitter to use.
soundЗвуковой активThe index of the sound to use.
loopБулевоFlags the sound as looping or not.
priorityРеальноSet the channel priority for the sound.
gainРеальноOPTIONAL Ценность выигрыша.
offsetРеальноOPTIONAL Время (в секундах), на которое нужно установить начальную точку. Значения, превышающие длину заданного звука, игнорируются.
pitchРеальноOPTIONAL Множитель шага (по умолчанию 1).
listener_maskРеальноOPTIONAL Данные битовой маски, которые нужно установить для звука. Для цели HTML5 это не будет иметь никакого эффекта, поскольку цель не поддерживает более одного слушателя.
-

-

Возвращается:

-

Sound Instance ID

-

-

Пример 1:

-

if global.SFX
- {
-     audio_play_sound_on(s_emit, snd_Explode, false, 1);
- }

-

Приведенный выше код проверяет глобальную переменную "SFX", и если она возвращает значение true, то звук, указанный в переменной "snd_Explode", будет воспроизведен через эмиттер, указанный в переменной "s_emit", с низким приоритетом и без зацикливания.

-

Пример 2:

-

if hit == true
- {
-     audio_play_sound_on(s_emit, snd_Hit, false, 1, 1.3);
- }

-

Приведенный выше код проверяет, ударили ли экземпляр, выполняющий код. Если true, он воспроизводит звук "snd_Hit" через эмиттер "s_emit" с немного большим усилением 1.3. Установленное здесь усиление умножается на усиление эмиттера, чтобы получить окончательное усиление, при котором воспроизводится звук.

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/Audio_Groups.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/Audio_Groups.htm index 4e4f1f386..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/Audio_Groups.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/Audio_Groups.htm @@ -1,48 +0,0 @@ - - - - - - Аудиогруппы - - - - - - - - - - -

Аудиогруппы

-

Ваши аудиоактивы могут быть сгруппированы на сайте IDE, чтобы их можно было загружать и выгружать в память по мере необходимости в игре. Вы можете создать эти аудиогруппы в окне " Аудиогруппы", которое можно открыть из меню в верхней части экрана . Инструменты меню в верхней части IDE - и вы можете назначить ваши звуковые активы определенной группе в окне свойств звука.

-

Для работы с аудиогруппами существуют следующие функции:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_is_loaded.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_is_loaded.htm index 20d1b21c9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_is_loaded.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_is_loaded.htm @@ -1,66 +0,0 @@ - - - - - - audio_group_is_loaded - - - - - - - - - - - -

audio_group_is_loaded

-

Эта функция проверяет конкретную аудиогруппу на предмет того, загружена ли она в память и готова ли к использованию.

-

-

Синтаксис:

-

audio_group_is_loaded(groupID);

- - - - - - - - - - - - - -
АргументТипОписание
groupIDИдентификатор аудиогруппыThe index of the audio group to check (as defined in the Audio Groups Window)
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if audio_group_is_loaded(audiogroup_level1)
- {
-     audio_group_unload(audiogroup_level1);
- }

-

Приведенный выше код проверяет, была ли загружена аудиогруппа, и если была, то выгружает ее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_load.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_load.htm index 9c57d4dc5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_load.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_load.htm @@ -1,65 +0,0 @@ - - - - - - audio_group_load - - - - - - - - - - -

audio_group_load

-

Эта функция загружает в память все звуки, отмеченные как принадлежащие заданной аудиогруппе. Функция вернет true, если загрузка начата, и false, если идентификатор группы недействителен или она уже была помечена для загрузки. Функция является асинхронной, поэтому ваша игра будет продолжать работать, пока аудио загружается в фоновом режиме. Это означает, что она также вызовет событие Asynchronous Load/Save Event, чтобы сообщить вам, что вся группа была загружена в память и звуки теперь можно использовать.

-

-

Синтаксис:

-

audio_group_load(groupID);

- - - - - - - - - - - - - -
АргументТипОписание
groupIDИдентификатор аудиогруппыThe index of the audio group to load (as defined in the Audio Groups Window)
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !audio_group_is_loaded(audiogroup_level1)
- {
-     audio_group_load(audiogroup_level1);
- }

-

Приведенный выше код проверяет, была ли загружена аудиогруппа, и если нет, то загружает ее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_load_progress.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_load_progress.htm index 326f00323..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_load_progress.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_load_progress.htm @@ -1,67 +0,0 @@ - - - - - - audio_group_load_progress - - - - - - - - - - - -

audio_group_load_progress

-

Эта функция проверяет прогресс загрузки для аудиогруппы и возвращает (приблизительное) значение от 0 до 100.

-

-

Синтаксис:

-

audio_group_load_progress(groupID);

- - - - - - - - - - - - - -
АргументТипОписание
groupIDИдентификатор аудиогруппыThe index of the audio group to check (as defined in the Audio Groups Window)
-

-

Возвращается:

-

Real

-

-

Пример:

-

if load
- {
-     var pc = audio_group_load_progress(audiogroup_level1);
-     draw_text(32, 32, "Loading: " + string(pc));
- }

-

Приведенный выше код проверяет переменную, и если она возвращает значение true, то будет нарисован текст, показывающий прогресс загрузки аудио.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_name.htm index f00f26bdf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_name.htm @@ -1,65 +0,0 @@ - - - - - - audio_group_name - - - - - - - - - - - -

audio_group_name

-

Эта функция возвращает строку, содержащую имя заданной аудиогруппы для отображения или проверки. Когда вы определяете аудиогруппу в Опциях игры, вы даете ей уникальное "имя", которое на самом деле является константой, используемой в качестве значенияID для группы. Все, что делает эта функция, это принимает ID и возвращает строку с именем ID, которое вы дали.

-

-

-

Синтаксис:

-

audio_group_name(groupID);

- - - - - - - - - - - - - -
АргументТипОписание
groupIDИдентификатор аудиогруппыThe index value constant of the audio group to check (as defined in the Audio Groups Window)
-

-

Возвращается:

-

String

-

-

Пример:

-

var name = audio_group_name(audiogroup_level1);
- draw_text(32, 32, "Now Playing Group: " + name);

-

Приведенный выше код извлекает имя заданной константы аудиогруппы и выводит его на экран.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_set_gain.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_set_gain.htm index 37522b5ea..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_set_gain.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_set_gain.htm @@ -1,76 +0,0 @@ - - - - - - audio_group_set_gain - - - - - - - - - - -

audio_group_set_gain

-

С помощью этой функции можно приглушить или затушить группу звуков на определенный промежуток времени, а также мгновенно установить усиление группы.

-

Время измеряется в миллисекундах, и функция требует, чтобы вы ввели конечный уровень усиления, которого группа должна достичь к концу этого времени. Этот уровень усиления может быть от 0 (тишина) до 1 (полная громкость), а шкала линейна, так что значение 0,5 будет равняться половине громкости. Чтобы мгновенно изменить усиление, просто установите аргумент time в 0. Обратите внимание, что на некоторых платформах усиление может быть больше 1, хотя значение 1 считается "полной громкостью", а большее значение может привести к обрыву звука.

-

-

Синтаксис:

-

audio_group_set_gain(groupID, volume, time);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
groupIDИдентификатор аудиогруппыThe index of the audio group to stop (as defined in the Audio Groups Window)
volumeРеальноThe final value for the group volume.
timeРеальноThe length of the change in gain in milliseconds.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if keyboard_check_pressed(vk_space)
- {
-     audio_group_set_gain(audiogroup1, 0, 5000);
- }

-

Приведенный выше код проверяет наличие клавиши "пробел" и затем затухает все аудио для "audiogroup1" до 0 в течение 5 секунд.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_stop_all.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_stop_all.htm index 62fd8c307..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_stop_all.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_stop_all.htm @@ -1,65 +0,0 @@ - - - - - - audio_group_stop_all - - - - - - - - - - -

audio_group_stop_all

-

Эта функция остановит все воспроизводимые в данный момент звуки из заданной аудиогруппы.

-

-

Синтаксис:

-

audio_group_stop_all(groupID);

- - - - - - - - - - - - - -
АргументТипОписание
groupIDИдентификатор аудиогруппыThe index of the audio group to stop (as defined in the Audio Groups Window)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if keyboard_check_pressed(vk_space)
- {
-     audio_group_stop_all(audiogroup_level1);
- }

-

Приведенный выше код проверяет наличие клавиши "пробел", а затем останавливает воспроизведение всех аудиофайлов из заданной группы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_unload.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_unload.htm index 01ab6da39..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_unload.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Groups/audio_group_unload.htm @@ -1,65 +0,0 @@ - - - - - - audio_group_unload - - - - - - - - - - -

audio_group_unload

-

Эта функция выгружает в память все звуки, отмеченные как принадлежащие данной аудиогруппе. Функция вернет true, если выгрузка инициирована, и false, если идентификатор группы недействителен, или она уже была помечена для выгрузки. Обратите внимание, что все звуки, воспроизводимые в данный момент при вызове этой функции, будут остановлены.

-

-

Синтаксис:

-

audio_group_unload(groupID);

- - - - - - - - - - - - - -
АргументТипОписание
groupIDИдентификатор аудиогруппыThe index of the audio group to unload (as defined in the Audio Groups Window)
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if audio_group_is_loaded(audiogroup_level1)
- {
-     audio_group_unload(audiogroup_level1);
- }

-

Приведенный выше код проверяет, была ли загружена аудиогруппа, и если была, то выгружает ее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/Audio_Listeners.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/Audio_Listeners.htm index ae746aa4a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/Audio_Listeners.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/Audio_Listeners.htm @@ -1,71 +0,0 @@ - - - - - - Слушатели аудио - - - - - - - - - - -

Слушатели аудио

-

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

-

По умолчанию в игре автоматически создается один слушатель, который использует идентификатор 0 (для ссылки в функциях слушателя).
-
- GameMaker предоставляет следующие функции слушателей: -

- -

-

Некоторые целевые платформы могут допускать более одного слушателя, причем каждый из них соответствует отдельному устройству вывода, т.е. ваша целевая платформа может допускать два слушателя, один для наушников, другой для монитора. Поэтому GameMaker предоставляет вам ряд дополнительных функций, с помощью которых вы можете найти доступные слушатели, а также установить их для воспроизводимых звуков:

- -

-

Также есть функции для получения и установки данных маски для отдельных звуков:

- -

-

А также для получения и установки данных маски для эмиттеров:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_get_listener_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_get_listener_count.htm index 603f9e4b6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_get_listener_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_get_listener_count.htm @@ -1,50 +0,0 @@ - - - - - - audio_get_listener_count - - - - - - - - - - - -

audio_get_listener_count

-

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

-

-

Синтаксис:

-

audio_get_listener_count();

-

-

Возвращается:

-

-

-

Пример:

-

global.listener_num = audio_get_listener_count();

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_get_listener_info.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_get_listener_info.htm index 416adf129..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_get_listener_info.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_get_listener_info.htm @@ -1,79 +0,0 @@ - - - - - - audio_get_listener_info - - - - - - - - - - - -

audio_get_listener_info

-

Эта функция создаст карту DS и заполнит ее информацией для заданного слушателя.

-

ПРИМЕЧАНИЕ Вы несете ответственность за уничтожение возвращенного DS Map с помощью соответствующей функции.

-

Карта DS будет содержать следующие ключи:

-
    -
  • "name" - Имя слушателя в виде строки, причем "default" является стандартным именем слушателя на большинстве целевых платформ.
  • -
  • "mask" - Битовая маска для слушателя
  • -
  • "index" - Уникальное значение индекса слушателя
  • -
-

Значение маски можно использовать для настройки звука или излучателя на воспроизведение от нескольких слушателей одновременно, просто используя побитовое or "|" для создания маски для звука (см. пример кода ниже), в то время как индекс используется для установки свойств, таких как позиция или скорость для данного слушателя, используя функции типа audio_listener_set_position().

-

-

Синтаксис:

-

audio_get_listener_info(num);

- - - - - - - - - - - - - -
АргументТипОписание
num Идентификаторреального или аудиослушателяThe listener number to get the data for.
-

-

Возвращается:

-

DS Map ID

-

-

Пример:

-

var num = audio_get_listener_count();
- var mask = 0; for(var i = 0; i < num; ++i)
- {
-     var info = audio_get_listener_info(i);
-     var m = audio_listener_get_data(info[? "mask"]);
-     mask = mask | m;
-     ds_map_destroy(info);
- }
- audio_set_listener_mask(mask);

-

Приведенный выше код проверяет количество доступных слушателей, затем перебирает их и получает биты их масок, которые затем объединяются для создания однобитовой маски, применяемой к глобальному слушателю.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_get_listener_mask.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_get_listener_mask.htm index a6374340f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_get_listener_mask.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_get_listener_mask.htm @@ -1,65 +0,0 @@ - - - - - - audio_get_listener_mask - - - - - - - - - - - -

audio_get_listener_mask

-

Эта функция возвращает данные битовой маски, определяющей текущую маску по умолчанию (глобальную) для аудиослушателей.

-

-

Синтаксис:

-

audio_get_listener_mask();

-

-

Возвращается:

-

-

-

Пример:

-

var g_mask = audio_get_listener_mask();
- if g_mask != global.Audio_Mask
- {
-     var num = audio_get_listener_count();
-     global.Audio_Mask = 0;
-
-     for(var i = 0; i < num; ++i;)
-     {
-         var info = audio_get_listener_info(i);
-         var m = audio_listener_get_data(info[? "mask"]);
-         global.Audio_Mask = global.Audio_Mask | m;
-         ds_map_destroy(info);
-     }
-     audio_set_listener_mask(mask);
- } -

-

Приведенный выше код получает данные маски текущего слушателя и сравнивает их с данными, хранящимися в глобальной переменной. Если они не совпадают, код проверяет количество доступных слушателей, затем перебирает их и получает биты их масок, которые затем объединяются для создания единой маски, которая применяется к аудиосистеме для определения глобальных слушателей.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_get_data.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_get_data.htm index ad4dfff56..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_get_data.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_get_data.htm @@ -1,90 +0,0 @@ - - - - - - audio_listener_get_data - - - - - - - - - - - -

audio_listener_get_data

-

Эта функция создаст карту DS и заполнит ее значениями положения, скорости и ориентации для заданного слушателя. Индекс слушателя по умолчанию равен 0, но вы можете использовать функцию audio_get_listener_info() для получения различных индексов, доступных для целевой платформы. Если вы укажете неправильный индекс слушателя, функция вернет -1.

-

ПРИМЕЧАНИЕ Вы несете ответственность за уничтожение возвращенной карты DS с помощью соответствующей функции.

-

Карта DS будет содержать следующие ключи:

-
    -
  • "x" - Позиция x слушателя
  • -
  • "y" - Положение слушателя по оси y
  • -
  • "z" - Положение слушателя по оси z
  • -
  • "vx" - скорость слушателя по оси x
  • -
  • "vy" - скорость слушателя по оси y
  • -
  • "vz" - скорость слушателя по оси z
  • -
  • "lookat_x" - x-компонент вектора взгляда слушателя
  • -
  • "lookat_y" - Компонент y вектора взгляда слушателя.
  • -
  • "lookat_z" - Компонент z вектора взгляда слушателя.
  • -
  • "up_x" - Компонент x вектора вверх слушателя
  • -
  • "up_y" - компонент y вектора вверх слушателя
  • -
  • "up_z" - компонент z вектора вверх слушателя
  • -
-

-

Синтаксис:

-

audio_listener_get_data(index);

- - - - - - - - - - - - - -
АргументТипОписание
index Идентификаторреального или аудиослушателяThe listener to get the data for (default is 0).
-

-

Возвращается:

-

DS Map ID

-

-

Пример:

-

var num = audio_get_listener_count();
- for(var i = 0; i < num; ++i)
- {
-     var info = audio_get_listener_info(i);
-     var data = audio_listener_get_data(info[? "index"]);
-     if data[? "x"] != 0
-     {
-         audio_listener_set_position(info[? "index"], 0, 0, 0);
-     }
-     ds_map_destroy(info);
-     ds_map_destroy(data);
- }

-

Приведенный выше код проверяет количество доступных слушателей, затем перебирает их и, если их положение x не равно 0, устанавливает их положение в 0, 0, 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_orientation.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_orientation.htm index 5d67af4a7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_orientation.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_orientation.htm @@ -1,94 +0,0 @@ - - - - - - audio_listener_orientation - - - - - - - - - - -

audio_listener_orientation

-

С помощью этой функции можно изменить ориентацию слушателя в трехмерном аудиопространстве. Направление взгляда и направление вверх основаны на векторах, которые определяются из заданных относительных положений x, y и z, и по умолчанию имеют значения (0, 0, 1) для направления взгляда и (0, 1, 0) для направления вверх, как показано на рисунке ниже:

-

Listener Orientation Diagram

-

ПРИМЕЧАНИЕ если у вас несколько слушателей, вы должны использовать функцию audio_listener_set_orientation().

-

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

-

Listener Orientation Example

-

Синтаксис:

-

audio_listener_orientation(lookat_x, lookat_y, lookat_z, up_x, up_y, up_z);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
lookat_xРеальноThe x look vector (default 0).
lookat_yРеальноThe y look vector (default 0).
lookat_zРеальноThe z look vector (default 1).
up_xРеальноThe x up vector (default 0).
up_yРеальноThe y up vector (default 1).
up_zРеальноThe z up vector (default 0).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

dx = dcos(direction);
- dy = - dsin(direction);
- dz = - dsin(zdirection);
- audio_listener_position(x, y, z);
- audio_listener_orientation(dx, dy, dz, 0, 0, 1);

-

Приведенный выше код устанавливает положение 3D аудиослушателя в переменные x и y экземпляра и дополнительную переменную z. Затем он устанавливает ориентацию аудиослушателя на три переменные, вычисляемые из переменной экземпляра direction и дополнительной переменной zdirection.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_position.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_position.htm index 5b906c83e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_position.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_position.htm @@ -1,78 +0,0 @@ - - - - - - audio_listener_position - - - - - - - - - - -

audio_listener_position

-

С помощью этой функции можно изменить положение слушателя в трехмерном аудиопространстве. На рисунке ниже показано положение слушателя в аудиопространстве по умолчанию:

-

Audio Listener Spacial Position Diagram

-

ПРИМЕЧАНИЕЕсли у вас несколько слушателей, используйте функцию audio_listener_set_position().

-

Как вы можете видеть, положение по умолчанию - (0, 0, 0), но обычно вы используете эту функцию для перемещения слушателя вместе с объектом игрока в вашей игре и, таким образом, для изменения того, как звук, созданный эмиттерами, слышен игроку. Например, на изображении игры сверху вниз, экземпляр игрока устанавливает слушатель, который заставит звук от различных эмиттеров "меняться", когда игрок перемещается по уровню:

-

Audio Listener Game Example

-

Синтаксис:

-

audio_listener_position(x, y, z);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x position of the listener (default 0).
yРеальноThe y position of the listener (default 0).
zРеальноThe z position of the listener (default 0).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if speed > 0
- {
-     audio_listener_position(x, y, 0);
- }

-

Приведенный выше код проверяет, превышает ли скорость экземпляра плеера 0, и если да, то обновляет аудиослушатель до текущей позиции x/y.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_set_orientation.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_set_orientation.htm index 7a16f7015..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_set_orientation.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_set_orientation.htm @@ -1,98 +0,0 @@ - - - - - - audio_listener_set_orientation - - - - - - - - - - -

audio_listener_set_orientation

-

С помощью этой функции вы можете изменить ориентацию данного слушателя в трехмерном аудиопространстве. По умолчанию индекс слушателя равен 0, но вы можете использовать функцию audio_get_listener_info() для получения различных индексов, доступных для целевой платформы.

-

Вектор взгляда и вектор вверх основаны на значениях, которые определяются из заданных относительных положений x, y и z, и по умолчанию имеют значения (0, 0, 1) для вектора взгляда и (0, 1, 0) для вектора вверх, как показано на рисунке ниже:

-

Listener Orientation Diagram

-

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

-

Listener Orientation Example

-

-

Синтаксис:

-

audio_listener_set_orientation(index, lookat_x, lookat_y, lookat_z, up_x, up_y, up_z);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexРеальный или Идентификатор аудиослушателяThe listener to set the orientation of.
lookat_xРеальноThe x look vector (default 0).
lookat_yРеальноThe y look vector (default 0).
lookat_zРеальноThe z look vector (default 1).
up_xРеальноThe x up vector (default 0).
up_yРеальноThe y up vector (default 1).
up_zРеальноThe z up vector (default 0).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _m = camera_get_view_mat(view_camera[0]);
- audio_listener_set_position(global.Player_Listener, _m[0], _m[1], _m[2]);
- audio_listener_set_orientation(info[? "index"], _m[3], _m[4], _m[5], _m[6], _m[7], _m[8]);

-

Приведенный выше код извлекает матрицу вида для вида камеры [0], а затем использует ее для установки положения и ориентации аудиослушателя с идентификатором, хранящимся в глобальной переменной "Player_Listener".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_set_position.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_set_position.htm index 796871697..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_set_position.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_set_position.htm @@ -1,81 +0,0 @@ - - - - - - audio_listener_set_position - - - - - - - - - - -

audio_listener_set_position

-

С помощью этой функции вы можете изменить положение данного слушателя в трехмерном аудиопространстве. По умолчанию индекс слушателя равен 0, но вы можете использовать функцию audio_get_listener_info() для получения различных индексов, доступных для целевой платформы. Пример изображения ниже показывает положение слушателя по умолчанию в аудиопространстве:

-

Как вы можете видеть, положение по умолчанию - (0, 0, 0), но обычно вы используете эту функцию для перемещения слушателя вместе с объектом игрока в вашей игре и, таким образом, для изменения того, как звук, созданный эмиттерами, слышен игроку. Например, на изображении игры сверху вниз, экземпляр игрока устанавливает слушатель, который заставит звук от различных эмиттеров "меняться", когда игрок перемещается по уровню:

-

Audio Listener Spacial Position Diagram

-

-

Синтаксис:

-

audio_listener_set_position(index, x, y, z);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
index Идентификаторреального или аудиослушателяThe listener to set the position of (default 0).
xРеальноThe x position of the listener (default 0).
yРеальноThe y position of the listener (default 0).
zРеальноThe z position of the listener (default 0).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _vmat = camera_get_view_mat(view_camera[0]);
- audio_listener_set_position(global.Player_Listener, _vmat[0], _vmat[1], _vmat[2]);
- audio_listener_set_orientation(info[? "index"], _vmat[3], _vmat[4], _vmat[5], _vmat[6], _vmat[7], _vmat[8]);

-

Приведенный выше код извлекает матрицу вида для вида камеры [0], а затем использует ее для установки положения и ориентации аудиослушателя с идентификатором, хранящимся в глобальной переменной "Player_Listener".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_set_velocity.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_set_velocity.htm index de9afa529..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_set_velocity.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_set_velocity.htm @@ -1,90 +0,0 @@ - - - - - - audio_listener_set_velocity - - - - - - - - - - -

audio_listener_set_velocity

-

Эта функция может быть использована для придания заданному слушателю эффекта Доплера и имитации движения звука на основе вектора, который определяется из заданных относительных положений x, y и z. Индекс слушателя по умолчанию равен 0, но вы можете использовать функцию audio_get_listener_info() для получения различных индексов, доступных для целевой платформы.

-

Если данный слушатель никогда не будет двигаться, или движение не является постоянным, вам обычно не нужно устанавливать эти значения, но, например, если вы делаете скроллинговую игру, где игрок имеет постоянное движение снизу вверх, а враги - сверху вниз, вы должны установить скорости слушателя и эмиттера (для эмиттеров вы должны использовать audio_emitter_velocity()) соответствующим векторам, чтобы смоделировать правильный эффект Доплера при движении мимо экземпляра игрока.

-

На рисунке ниже показано, как это можно настроить для приведенного выше примера игры:

-

Audio Listener Set Velocity Example

-

Синтаксис:

-

audio_listener_set_velocity(index, x, y, z);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
index Идентификаторреального или аудиослушателяThe listener to change the velocity of (default 0).
xРеальноThe x velocity of the listener (default 0).
yРеальноThe y velocity of the listener (default 0).
zРеальноThe z velocity of the listener (default 0).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var num = audio_get_listener_count();
- for(var i = 0; i < num; ++i)
- {
-     var info = audio_get_listener_info(i);
-     var data = audio_listener_get_data(info[? "index"]);
-     if data[? "vx"] != 0
-     {
-         audio_listener_set_velocity(info[? "index"], 0, 0, 0);
-     }
-     ds_map_destroy(info);
-     ds_map_destroy(data);
- }

-

Приведенный выше код проверяет количество доступных слушателей, затем перебирает их и, если их x-скорость не равна 0, устанавливает их значения скорости на 0, 0, 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_velocity.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_velocity.htm index baa23477b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_velocity.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_listener_velocity.htm @@ -1,78 +0,0 @@ - - - - - - audio_listener_velocity - - - - - - - - - - -

audio_listener_velocity

-

Эта функция может быть использована для придания слушателю эффекта Доплера и имитации движения звука на основе вектора, который определяется из заданных относительных положений x, y и z. Если сам слушатель никогда не будет двигаться, или движение не будет постоянным, вам обычно не нужно задавать эти значения, но, например, если вы делаете скроллинговую игру, где игрок имеет постоянное движение снизу вверх, а враги - сверху вниз, вы должны установить скорости слушателя и эмиттера (для эмиттеров вы будете использовать audio_emitter_velocity()) на соответствующие векторы, чтобы смоделировать правильный эффект Доплера при движении мимо экземпляра игрока.

-

ПРИМЕЧАНИЕ если у вас несколько слушателей, вы должны использовать функцию audio_listener_set_velocity().

-

На рисунке ниже показано, как это можно настроить для приведенного выше примера игры:

-

Audio Listener Velocity Example

-

-

Синтаксис:

-

audio_listener_velocity(vx, vy, vz);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
vxРеальноThe x velocity component of the listener (default 0).
vyРеальноThe y velocity component of the listener (default 0).
vzРеальноThe z velocity component of the listener (default 0).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if speed > 0
- {
-     audio_listener_velocity(abs(hspeed), abs(vspeed), 0);
- }

-

Приведенный выше код проверяет, не превышает ли скорость экземпляра игрока 0, и если да, то использует соответствующие абсолютные компоненты hspeed и vspeed для установки скорости слушателя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_set_listener_mask.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_set_listener_mask.htm index 7fdca004e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_set_listener_mask.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Listeners/audio_set_listener_mask.htm @@ -1,70 +0,0 @@ - - - - - - audio_set_listener_mask - - - - - - - - - - -

audio_set_listener_mask

-

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

-

-

Синтаксис:

-

audio_set_listener_mask(mask);

- - - - - - - - - - - - - -
АргументТипОписание
maskРеальноThe bit-mask data to set for the listeners
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var num = audio_get_listener_count();
- var mask = 0; for(var i = 0; i < num; ++i)
- {
-     var info = audio_get_listener_info(i);
-     var m = audio_listener_get_data(info[? "mask"]);
-     mask = mask | m;
-     ds_map_destroy(info);
- }
- audio_set_listener_mask(mask);

-

Приведенный выше код проверяет количество доступных слушателей, затем перебирает их и получает биты их масок, которые затем объединяются для создания однобитовой маски, применяемой к глобальному слушателю.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/Audio_Synchronisation.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/Audio_Synchronisation.htm index f0f8465a8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/Audio_Synchronisation.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/Audio_Synchronisation.htm @@ -1,52 +0,0 @@ - - - - - - Синхронизация звука - - - - - - - - - - -

Синхронизация звука

-

Функции группы синхронизации звука позволяют воспроизводить несколько звуков, которые начинаются в одно и то же время и остаются синхронизированными (на уровне каждого сэмпла). Это позволяет, например, добавлять различные дорожки для одной песни и затем включать и выключать секции, не беспокоясь о том, будет ли между ними задержка. Обратите внимание, что в настоящее время эти функции работают только со сжатым аудио, т.е. с файлами формата *.ogg и *.mp3.

-

ПРИМЕЧАНИЕ: Эта функциональность недоступна для целевой платформы HTML5.

-

Для синхронизации звуковых дорожек существуют следующие функции:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_create_sync_group.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_create_sync_group.htm index 0a1a5d946..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_create_sync_group.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_create_sync_group.htm @@ -1,72 +0,0 @@ - - - - - - audio_create_sync_group - - - - - - - - - - - -

audio_create_sync_group

-

Создает группу синхронизации и возвращает для нее уникальное значение ID, которое затем должно использоваться во всех дальнейших вызовах аудиофункций для этой группы. Если вы хотите, чтобы группа зацикливалась, передайте true, в противном случае передайте false, но учтите, что если вы хотите, чтобы они зацикливались, все дорожки, добавленные позже, должны быть одинаковой длины. Обратите внимание, что при создании группы синхронизации необходимо освободить память и звуки, связанные с ней, если они не используются, с помощью функции audio_destroy_sync_group() например, в событиях Room End или Destroy.

-

ПРИМЕЧАНИЕ: Эта функциональность недоступна для целевой платформы HTML5.

-

-

Синтаксис:

-

audio_create_sync_group(loop);

- - - - - - - - - - - - - -
АргументТипОписание
loopБулевоWhether the tracks in the group should loop (true) или нет (false).
-

-

Возвращается:

-

Audio Sync Group ID

-

-

Пример:

-

sg = audio_create_sync_group(true);
- audio_play_in_sync_group(sg, sound1);
- audio_play_in_sync_group(sg, sound2);
- audio_sound_gain(sound2, 0, 0);
- audio_play_in_sync_group(sg, sound3);
- audio_sound_gain(sound3, 0, 0);
- audio_play_in_sync_group(sg, sound4);
- audio_sound_gain(sound4, 0, 0);
- audio_start_sync_group(sg);

-

Вышеописанное создает новую группу синхронизации и присваивает индекс группы переменной "sg". Затем в группу добавляются четыре звука, причем усиление для трех из них устанавливается на 0. Наконец, группа синхронизации воспроизводится.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_destroy_sync_group.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_destroy_sync_group.htm index 52c35be56..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_destroy_sync_group.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_destroy_sync_group.htm @@ -1,63 +0,0 @@ - - - - - - audio_destroy_sync_group - - - - - - - - - - -

audio_destroy_sync_group

-

Группы синхронизации звука должны быть уничтожены, если они не используются, чтобы освободить память и звуковые ресурсы, связанные с ними, с помощью этой функции. Для этого берется индекс группы, полученный при ее создании с помощью функции audio_create_sync_group()и освобождает все ресурсы, используемые группой.

-

ПРИМЕЧАНИЕ: Эта функциональность недоступна для целевой платформы HTML5.

-

-

Синтаксис:

-

audio_destroy_sync_group(group_index);

- - - - - - - - - - - - - -
АргументТипОписание
group_indexИдентификатор группы аудиосинхронизацииThe group index to be destroyed.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

audio_destroy_sync_group(sg);

-

Приведенный выше код уничтожает группу синхронизации, индексированную в переменной "sg", и, вероятно, будет использоваться в событиях destroy или Room End.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_pause_sync_group.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_pause_sync_group.htm index 722156f84..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_pause_sync_group.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_pause_sync_group.htm @@ -1,74 +0,0 @@ - - - - - - audio_pause_sync_group - - - - - - - - - - -

audio_pause_sync_group

-

его функция приостановит заданную группу синхронизации, если она играет, при этом индекс группы будет значением, возвращенным при создании группы с помощью функции audio_create_sync_group(). Это не останавливает звук, и вызов audio_resume_sync_group(). начнет его воспроизведение с той же позиции, на которой он был приостановлен.

-

ПРИМЕЧАНИЕ: Эта функциональность недоступна для целевой платформы HTML5.

-

-

Синтаксис:

-

audio_pause_sync_group(group_index);

- - - - - - - - - - - - - -
АргументТипОписание
group_indexИдентификатор группы аудиосинхронизацииThe group index to pause.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (keyboard_check_pressed((ord)"P"))
- {
-     global.Pause = !global.Pause
-     if (global.Pause)
-     {
-         audio_pause_sync_group(sg);
-     }
-     else
-     {
-         audio_resume_sync_group(sg);
-     }
- }

-

Приведенный выше код проверяет нажатие клавиши "P", и если оно обнаружено, то переключает переменную "global.Pause", затем проверяет ее на приостановку или возобновление группы синхронизации, индексированной в переменной "sg".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_play_in_sync_group.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_play_in_sync_group.htm index 8bf4a7d24..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_play_in_sync_group.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_play_in_sync_group.htm @@ -1,73 +0,0 @@ - - - - - - audio_play_in_sync_group - - - - - - - - - - -

audio_play_in_sync_group

-

С помощью этой функции можно назначить звук на ранее созданную группу синхронизации. Индекс группы - это значение, возвращенное при создании группы с помощью функции audio_create_sync_group(), а индекс звука - это индекс любого сжатого звука (*.ogg или *.mp3) из браузера активов. Эта функция только добавляет звук в группу, но не воспроизводит его. Возвращаемое значение будет >= 0 в случае успеха и -1 в случае неудачи, где успешное значение указывает порядок звука в группе синхронизации (таким образом, 0 будет первым добавленным звуком, 1 - вторым и т.д.).

-

ПРИМЕЧАНИЕ: Эта функциональность недоступна для целевой платформы HTML5.

-

-

Синтаксис:

-

audio_play_in_sync_group(group_index, sound_index);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
group_indexИдентификатор группы аудиосинхронизацииThe group index to assign the sound to.
sound_indexЗвуковой активThe sound index to be assigned to the group.
-

-

Возвращается:

-

Real

-

-

Пример:

-

sg = audio_create_sync_group(true);
- audio_play_in_sync_group(sg, sound1);
- audio_play_in_sync_group(sg, sound2);
- audio_play_in_sync_group(sg, sound3);
- audio_play_in_sync_group(sg, sound4);
- audio_start_sync_group(sg);

-

Выше приведено создание новой группы синхронизации и присвоение индекса группы переменной "sg". Затем в группу добавляются четыре звука, причем усиление для трех из них устанавливается на 0. Наконец, группа синхронизации воспроизводится.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_resume_sync_group.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_resume_sync_group.htm index ab3595526..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_resume_sync_group.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_resume_sync_group.htm @@ -1,74 +0,0 @@ - - - - - - audio_resume_sync_group - - - - - - - - - - -

audio_resume_sync_group

-

Эта функция возобновит данную группу синхронизации, если она воспроизводится и ранее была приостановлена (с помощью функции audio_pause_sync_group). Индекс группы - это значение, возвращенное при создании группы с помощью функции audio_create_sync_group().

-

ПРИМЕЧАНИЕ: Эта функциональность недоступна для целевой платформы HTML5.

-

-

Синтаксис:

-

audio_resume_sync_group(group_index);

- - - - - - - - - - - - - -
АргументТипОписание
group_indexИдентификатор группы аудиосинхронизацииThe group index to resume.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (keyboard_check_pressed((ord)"P"))
- {
-     global.Pause = !global.Pause
-     if (global.Pause)
-     {
-         audio_pause_sync_group(sg);
-     }
-     else
-     {
-         audio_resume_sync_group(sg);
-     }
- }

-

Приведенный выше код проверяет нажатие клавиши "P", и если оно обнаружено, то переключает переменную "global.Pause", затем проверяет ее на приостановку или возобновление группы синхронизации, индексированной в переменной "sg".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_start_sync_group.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_start_sync_group.htm index 5d40131c7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_start_sync_group.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_start_sync_group.htm @@ -1,71 +0,0 @@ - - - - - - audio_start_sync_group - - - - - - - - - - -

audio_start_sync_group

-

С помощью этой функции вы можете начать воспроизведение ранее созданной группы синхронизации. Вам необходимо предоставить индекс группы, который является значением, возвращенным при создании группы с помощью функции audio_create_sync_group().

-

ПРИМЕЧАНИЕ: Эта функциональность недоступна для целевой платформы HTML5.

-

-

Синтаксис:

-

audio_start_sync_group(group_index);

- - - - - - - - - - - - - -
АргументТипОписание
group_indexИдентификатор группы аудиосинхронизацииThe group index to play.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

sg = audio_create_sync_group(true);
- audio_play_in_sync_group(sg, sound1);
- audio_play_in_sync_group(sg, sound2);
- audio_sound_gain(sound2, 0, 0);
- audio_play_in_sync_group(sg, sound3);
- audio_sound_gain(sound3, 0, 0);
- audio_play_in_sync_group(sg, sound4);
- audio_sound_gain(sound4, 0, 0);
- audio_start_sync_group(sg);

-

Вышеописанное создает новую группу синхронизации и присваивает индекс группы переменной "sg". Затем в группу добавляются четыре звука, причем усиление для трех из них устанавливается на 0. Наконец, группа синхронизации воспроизводится.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_stop_sync_group.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_stop_sync_group.htm index 12b4dd609..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_stop_sync_group.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_stop_sync_group.htm @@ -1,66 +0,0 @@ - - - - - - audio_stop_sync_group - - - - - - - - - - -

audio_stop_sync_group

-

Эта функция остановит заданную группу синхронизации, если она играет, при этом индекс группы будет значением, возвращенным при создании группы с помощью функции audio_create_sync_group().

-

ПРИМЕЧАНИЕ: Эта функциональность недоступна для целевой платформы HTML5.

-

-

Синтаксис:

-

audio_stop_sync_group(group_index);

- - - - - - - - - - - - - -
АргументТипОписание
group_indexИдентификатор группы аудиосинхронизацииThe group index to stop playing.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if mouse_check_button_pressed(mb_left)
- {
-     audio_stop_sync_group(sg);
- }

-

Приведенный выше код проверяет наличие щелчка мыши, и если он обнаружен, то останавливает группу синхронизации, проиндексированную в переменной "sg".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_sync_group_debug.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_sync_group_debug.htm index af20d262d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_sync_group_debug.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_sync_group_debug.htm @@ -1,93 +0,0 @@ - - - - - - audio_sync_group_debug - - - - - - - - - - -

audio_sync_group_debug

-

его функцию можно использовать для отображения отладочной информации о любой заданной группе синхронизации (индекс группы - это значение, возвращаемое при создании группы с помощью функции audio_create_sync_group()). Вы можете вызвать функцию со значением -1, чтобы отключить наложение.

-

При отладке групп синхронизации звука будет отображаться накладка:

-
    -
  • Какая группа синхронизации отлаживается
  • -
  • Сколько каналов в нем
  • -
  • Сколько раз группа синхронизации терпела неудачу (это означает, что она пыталась выполнить слишком большой объем работы)
  • -
  • Список каналов -
      -
    • Красный цвет означает, что данный канал в настоящее время не выполняет никакой работы
    • -
    • Желтый означает, что канал находится в начальном состоянии (еще не декодирует и не играет)
    • -
    • Зеленый означает, что канал в настоящее время ищет/декодирует
    • -
    • Фиолетовый означает, что на канале закончились данные.
    • -
    -
  • -
  • Полоса профилирования, показывающая, какую работу выполняет поток декодирования -
      -
    • синий цвет означает, что файл читается в первый раз
    • -
    • красный означает, что поток читает файл, чтобы узнать, откуда читать данные
    • -
    • зеленый означает, что поток декодирует данные
    • -
    • фиолетовый означает, что поток находится в состоянии сна до тех пор, пока ему не понадобится работа.
    • -
    -
  • -
-

Обратите внимание, что для общей отладки аудио у вас также есть функция audio_debug().

-

ПРИМЕЧАНИЕ: Эта функциональность недоступна для целевой платформы HTML5.

-

-

Синтаксис:

-

audio_sync_group_debug(group_index);

- - - - - - - - - - - - - -
АргументТипОписание
group_indexИдентификатор группы аудиосинхронизацииThe group index to debug, or -1 to switch off the debugging.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (debug_mode)
- {
-     audio_sync_group_debug(sg);
- }
- else
- {
-     audio_sync_group_debug(-1);
- }

-

Приведенный выше код будет включать или выключать отладочное наложение группы синхронизации звука, показывающее группу синхронизации, индексированную в переменной "sg", в зависимости от того, запущена игра в режиме отладки или нет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_sync_group_get_track_pos.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_sync_group_get_track_pos.htm index a112b4d14..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_sync_group_get_track_pos.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_sync_group_get_track_pos.htm @@ -1,77 +0,0 @@ - - - - - - audio_sync_group_get_track_pos - - - - - - - - - - - -

audio_sync_group_get_track_pos

-

Эта функция возвращает текущую позицию воспроизведения заданной группы синхронизации. Индекс группы - это значение, возвращенное при создании группы с помощью функции audio_create_sync_group(), а возвращаемое значение - время в секундах, в течение которого воспроизводятся дорожки.

-

ПРИМЕЧАНИЕ: Эта функциональность недоступна для целевой платформы HTML5.

-

-

Синтаксис:

-

audio_sync_group_get_track_pos(group_index);

- - - - - - - - - - - - - -
АргументТипОписание
group_indexИдентификатор группы аудиосинхронизацииThe group index to get the position of.
-

-

Возвращается:

-

Real

-

-

Пример:

-

var real_secs = audio_sync_group_get_track_pos(sg);
- var secs = real_secs mod 60;
- var mins = string(real_secs div 60);
- if (secs > 9)
- {
-     secs = string(secs);
- }
- else
- {
-     secs = "0" + string(secs);
- }
-
- draw_text(32, 32, "Time = " + mins + ":" + secs); -

-

Приведенный выше код получает позицию времени для группы синхронизации, проиндексированной в переменной "sg", затем использует это значение для рисования воспроизводимого времени на экране.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_sync_group_is_playing.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_sync_group_is_playing.htm index f4a0e9738..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_sync_group_is_playing.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/Audio_Synchronisation/audio_sync_group_is_playing.htm @@ -1,67 +0,0 @@ - - - - - - audio_sync_group_is_playing - - - - - - - - - - - -

audio_sync_group_is_playing

-

Эта функция может использоваться для проверки того, воспроизводится ли какой-либо звук в синхронизированной группе. Вам необходимо предоставить идентификатор группы синхронизации, возвращаемый функцией audio_create_sync_group().

-

Эта функциональность недоступна для целевой платформы HTML5.

-

-

Синтаксис:

-

audio_sync_group_is_playing(group_index);

- - - - - - - - - - - - - -
АргументТипОписание
group_indexИдентификатор группы аудиосинхронизацииThe group index to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if audio_sync_group_is_playing(group_one)
- {
-     audio_stop_sync_group(group_one);
- }

-

Приведенный выше код проверяет, воспроизводится ли в данный момент группа синхронизации group_one, и если да, то группа останавливается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_channel_num.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_channel_num.htm index ed7cbed53..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_channel_num.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_channel_num.htm @@ -1,82 +0,0 @@ - - - - - - audio_channel_num - - - - - - - - - - - -

audio_channel_num

-

С помощью этой функции вы можете установить, сколько аудиоканалов доступно для воспроизведения звука в GameMaker. В основном это означает, что вы задаете количество одновременных звуков, которые могут воспроизводиться в любой момент времени, и если это количество превышает указанное, то звуки с более низким приоритетом останавливаются, чтобы освободить канал для звуков с более высоким приоритетом. Вы можете использовать эту функцию для оптимизации игры для устройств, так как чем меньше каналов для звука, тем лучше производительность, но имейте в виду, что это может привести к заметному обрезанию некоторых звуков, если многие из них воспроизводятся одновременно.

-

-

Синтаксис:

-

audio_channel_num(num);

- - - - - - - - - - - -
АргументТипОписание
numNumber of available audio channels (default is 128).
-

-

Возвращается:

-

-

-

Пример:

-

switch (os_browser)
- {
-     case browser_not_a_browser:
-         switch (os_type)
-         {
-             case os_windows:
-             case os_macos:
-                 audio_channel_num(200);
-             break;
-
-             default:
-                 audio_channel_num(64);
-             break;
-         }
-     break;
-
-     default:
-         audio_channel_num(16);
-     break;
- } -

-

Приведенный выше код проверяет платформу, на которой запущена игра, и изменяет количество доступных звуковых каналов для увеличения производительности.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_create_stream.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_create_stream.htm index 58da151cb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_create_stream.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_create_stream.htm @@ -1,65 +0,0 @@ - - - - - - audio_create_stream - - - - - - - - - - - -

audio_create_stream

-

С помощью этой функции вы можете создать новый звуковой индекс, который затем можно использовать в обычных аудиофункциях для потоковой передачи звука непосредственно из внешнего источника файла OGG. Функция требует имя файла (которое может быть, например, включенным файлом) и возвращает новый звуковой индекс для использования. Обратите внимание, что после того, как звук больше не нужен, необходимо вызвать функцию audio_destroy_stream() с индексом звука, чтобы удалить его из памяти, иначе вы можете получить утечку памяти, что приведет к замедлению и, в конечном счете, к краху вашей игры.

-

ПРИМЕЧАНИЕ: Эта функциональность недоступна для целевой платформы HTML5.

-

-

Синтаксис:

-

audio_create_stream(filename);

- - - - - - - - - - - - - -
АргументТипОписание
filenameСтрокаPath to the file (OGG only) to stream the audio from.
-

-

Возвращается:

-

Sound Asset

-

-

Пример:

-

snd = audio_create_stream("Music/Track1.ogg");
- audio_play_sound(snd, 0, true);

-

Приведенный выше код создает новый индекс звука в переменной "snd" из заданного файла, затем воспроизводит этот звук.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_debug.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_debug.htm index 659d72d9c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_debug.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_debug.htm @@ -1,80 +0,0 @@ - - - - - - audio_debug - - - - - - - - - - -

audio_debug

-

Эта функция может использоваться для отображения отладочной информации об аудиосистеме, при этом true включает ее, а false - выключает. При отладке аудио таким образом на оверлее будет отображаться следующая информация:

-

Audio Debug Overview

-
    -
  • Handle - хэндл источника OpenAL (уникальный для каждого воспроизводимого звука)
  • -
  • Data Handle - Ручка буфера OpenAL (показывает одно и то же значение для нескольких звуков с одинаковой ручкой источника).
  • -
  • Обработанные буферы - сколько буферов было воспроизведено
  • -
  • Очередь буферов - сколько буферов было поставлено в очередь (и все еще ожидает воспроизведения).
  • -
  • Усиление - Значение усиления для аудио (0 - 65536).
  • -
  • Play Offset - позиция сэмпла (текущая позиция воспроизведения) в текущем буфере
  • -
  • Бары буферов в очереди - небольшая диаграмма обработанных/очередных буферов с смещением воспроизведения (текущая позиция), нарисованная синей линией.
  • -
-

Для синхронизированных групп аудио также имеется функция audio_sync_group_debug().

-

ПРИМЕЧАНИЕ Эта функция не работает на целевой платформе HTML5.

-

-

Синтаксис:

-

audio_debug(enable);

- - - - - - - - - - - -
АргументТипОписание
enableEnable (set to true) или отключить (false) отладку звука.
-

-

Возвращается:

-

-

-

Пример:

-

if (debug_mode)
- {
-     audio_debug(true);
- }
- else
- {
-     audio_debug(false);
- }

-

Приведенный выше код будет включать или выключать наложение отладки звука в зависимости от того, запущена игра в режиме отладки или нет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_destroy_stream.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_destroy_stream.htm index 85ce9b45a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_destroy_stream.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_destroy_stream.htm @@ -1,63 +0,0 @@ - - - - - - audio_destroy_stream - - - - - - - - - - -

audio_destroy_stream

-

Если вы ранее создали звуковой поток из файла с помощью функции audio_create_stream() и этот звук больше не нужен, вы можете вызвать эту функцию, чтобы удалить его из памяти. Любые дальнейшие обращения к индексу звука после его уничтожения приведут к ошибке. Следует отметить, что это освободит поток, но на целевой платформе это может не отобразиться в менеджере памяти. Это происходит потому, что GameMaker объединяет ресурсы памяти для предотвращения накладных расходов на выделение памяти, и поэтому память будет оставаться выделенной до тех пор, пока не понадобится для чего-то другого или не будет повторно использована для нового потока.

-

ПРИМЕЧАНИЕ: Эта функциональность недоступна для целевой платформы HTML5.

-

-

Синтаксис:

-

audio_destroy_stream(filename);

- - - - - - - - - - - - - -
АргументТипОписание
filenameСтрокаPath to the audio file that was streamed.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

audio_destroy_stream(snd);

-

Приведенный выше код удаляет из памяти звук, индексированный в переменной "snd".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_exists.htm index a082c3665..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_exists.htm @@ -1,66 +0,0 @@ - - - - - - audio_exists - - - - - - - - - - - -

audio_exists

-

Эта функция возвращает, существует ли звук (true) или нет (false). Обратите внимание, что если искомый индекс не был инициализирован ранее, эта функция выдаст ошибку, так как она ищет несуществующие индексы активов. Проверяемый звук может быть либо единичным экземпляром звука (индекс для отдельных воспроизводимых звуков может быть сохранен в переменной при использовании функции audio_play_sound() или audio_play_sound_at() ) или звуковой актив.

-

-

Синтаксис:

-

audio_exists(index);

- - - - - - - - - - - - - -
АргументТипОписание
indexАктивыThe index of the sound to check the existence of.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if audio_exists(global.Music)
- {
-     audio_play_sound(global.Music, 0, true);
- }

-

Приведенный выше код проверяет, существует ли звук. Если он существует, он устанавливается для воспроизведения в цикле.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_falloff_set_model.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_falloff_set_model.htm index d68887972..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_falloff_set_model.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_falloff_set_model.htm @@ -1,150 +0,0 @@ - - - - - - audio_falloff_set_model - - - - - - - - - - -

audio_falloff_set_model

-

Чтобы придать звуковому движку еще большую универсальность, GameMaker позволяет вам выбрать модель падения звука, которая подходит для вашей игры. Эта модель будет использоваться для всех аудиофункций в игре или приложении, поэтому вы должны убедиться, что выбранная вами модель является правильной, поскольку каждая из них влияет на восприятие слушателем звуков, которые вы воспроизводите через эмиттеры или с помощью функции audio_play_sound_at().

-

Модель падения по умолчанию - audio_falloff_none, что означает отсутствие падения при использовании излучателей или позиционированного звука, если вы не измените модель падения.

-

Модели падения

-

При воспроизведении звука через audio_play_sound_at() или настройке falloff для излучателя необходимо задать три аргумента, каждый из которых подходит для конкретной модели и влияет на то, как конечный звук будет слышен игроку в зависимости от расстояния, на котором слушатель находится от источника. Эти три аргумента следующие:

-
    -
  • Контрольное расстояние: это расстояние от слушателя, на котором громкость воспроизводимого звука обычно уменьшается вдвое, прежде чем на нее повлияет коэффициент отката или указанное максимальное расстояние.
  • -
  • Максимальное расстояние: задает расстояние, на котором больше не будет происходить ослабление звука источника. Это может быть точка, в которой звук больше не слышен , или точка, в которой громкость звука больше не уменьшается ниже минимального порога, определенного выбранной моделью.
  • -
  • Коэффициент спада: Коэффициент падения используется при ослаблении расстояния на основе модели обратного расстояния и устанавливает окончательный минимальный порог для звука с падением.
  • -
-

Модели падения, на которые влияют эти аргументы, представлены в GameMaker следующими константами (в таблице приведены точные расчеты):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Постоянная звукового спада
ПостояннаяРасчет коэффициента усиления
audio_falloff_exponent_distance
- gain = (listener_distance / reference_distance) ^ (-falloff_factor)
audio_falloff_exponent_distance_clamped
- distance = clamp(listener_distance, reference_distance, maximum_distance)
- gain = (distance / reference_distance) ^ (-falloff_factor)
audio_falloff_exponent_distance_scaled
- distance = clamp(listener_distance, reference_distance, maximum_distance)
-
- gain = ((distance / reference_distance) ^ (-falloff_factor)) * (((maximum_distance - distance) / (maximum_distance - reference_distance)) ^ (distance / maximum_distance))
audio_falloff_inverse_distance
- gain = reference_distance / (reference_distance + falloff_factor * (listener_distance - reference_distance))
audio_falloff_inverse_distance_clamped
- distance = clamp(listener_distance, reference_distance, maximum_distance)
- gain = reference_distance / (reference_distance + falloff_factor * (distance - reference_distance))
audio_falloff_inverse_distance_scaled
- distance = clamp(listener_distance, reference_distance, maximum_distance)
-
- gain = (reference_distance / (reference_distance + falloff_factor * (distance - reference_distance))) * (((maximum_distance - distance) / (maximum_distance - reference_distance)) ^ (distance / maximum_distance))
audio_falloff_linear_distance
- distance = min(distance, maximum_distance)
- gain = (1 - falloff_factor * (distance - reference_distance) / (maximum_distance - reference_distance))
audio_falloff_linear_distance_clamped
- distance = clamp(listener_distance, reference_distance, maximum_distance)
- gain = (1 - falloff_factor * (distance - reference_distance) / (maximum_distance - reference_distance))
audio_falloff_none
- gain = 1
-

Модели "_scaled" масштабируются таким образом, что звуки гарантированно полностью пропадают на максимальном расстоянии.

-

Следующие графики являются визуальным представлением того, как некоторые из вышеперечисленных констант работают и влияют на воспроизводимый звук:

-

Distance Model Examples

-

-

Синтаксис:

-

audio_falloff_set_model(model);

- - - - - - - - - - - - - -
АргументТипОписание
modelПостоянная звукового спадаThe constant used to set the falloff model.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

audio_falloff_set_model(audio_falloff_exponent_distance_clamped);
- audio_play_sound_at(snd_Waterfall, x, y, 0, 100, 300, 1, true, 1);

-

Приведенный выше код устанавливает модель падения, а затем воспроизводит звук, индексированный в переменной "snd_Waterfall", который будет зациклен на позиции комнаты, с эталоном падения 100, расстоянием падения 300, коэффициентом падения 1 и низким приоритетом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_get_master_gain.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_get_master_gain.htm index bfd06d4c1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_get_master_gain.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_get_master_gain.htm @@ -1,73 +0,0 @@ - - - - - - audio_get_master_gain - - - - - - - - - - - -

audio_get_master_gain

-

С помощью этой функции вы можете получить абсолютное значение глобальной громкости всех звуков и музыки для определенного слушателя. Индекс слушателя по умолчанию равен 0, но вы можете использовать функцию audio_get_listener_info() для получения различных индексов, доступных для целевой платформы. Возвращаемое значение усиления основано на линейной шкале от 0 (тишина) до 1 (полная громкость). Обратите внимание, что на некоторых платформах коэффициент усиления может быть больше 1, хотя значение 1 считается "полной громкостью", а большее значение может привести к обрыву звука.

-

-

Синтаксис:

-

audio_get_master_gain(listenerIndex);

- - - - - - - - - - - - - -
АргументТипОписание
listenerIndex Идентификаторреального или аудиослушателяThe index of the listener to get the gain of.
-

-

Возвращается:

-

Real

-

-

Пример:

-

var num = audio_get_listener_count();
- for(var i = 0; i < num; ++i)
- {
-     var info = audio_get_listener_info(i);
-     var ind = info[? "index"];
-     if audio_get_master_gain(ind) != 1
-     {
-         audio_set_master_gain(info[? "index"], 1);
-     }
-     ds_map_destroy(info);
- }

-

Приведенный выше код перебирает доступные слушатели, проверяя, равно ли их усиление 1 или нет, и если нет, то устанавливает его в 1 для каждого из них.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_get_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_get_name.htm index 6d3ecb05c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_get_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_get_name.htm @@ -1,63 +0,0 @@ - - - - - - audio_get_name - - - - - - - - - - - -

audio_get_name

-

Эта функция возвращает имя заданного аудиоресурса в виде строки. Значение "index" может быть значением самого ресурса (как видно в Asset Browser) или уникальным значением ID, которое выдается, например, при воспроизведении звука, - audio_play_sound(). Обратите внимание, что возвращаемая строка не совпадает с идентификатором ресурса и не может быть использована для доступа к самому ресурсу, поэтому должна использоваться только для отображения или проверки ошибок.

-

-

Синтаксис:

-

audio_get_name(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the sound to check.
-

-

Возвращается:

-

-

-

Пример:

-

var snd = audio_play_sound(choose(snd_One, snd_Two, snd_Three), 0, false);
var name = audio_get_name(snd);
show_debug_message("Sound = " + name);

-

Приведенный выше код воспроизводит случайный звук, выбранный из трех различных звуковых ресурсов, а затем показывает отладочное сообщение с его названием.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_get_type.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_get_type.htm index 0aaf4cb62..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_get_type.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_get_type.htm @@ -1,63 +0,0 @@ - - - - - - audio_get_type - - - - - - - - - - - -

audio_get_type

-

При добавлении звука в GameMaker он может быть либо потоковым, либо находиться в памяти. Если вам нужно узнать, является ли данный индекс звука потоковым или нет, вы можете использовать эту функцию, которая вернет 1 для потокового звука или 0 для звука в памяти. - использовать эту функцию, которая вернет 1 для потокового звука, 0 для звука в памяти и -1, если произошла ошибка или индекс не указывает на правильный звуковой ресурс.

-

-

Синтаксис:

-

audio_get_type(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the sound to check.
-

-

Возвращается:

-

-

-

Пример:

-

type = audio_get_type(snd_Music_1);

-

Приведенный выше код проверяет тип аудио, индексированный в переменной "snd_Music_1", и сохраняет возвращаемое значение в переменной "type".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_is_paused.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_is_paused.htm index 126146c53..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_is_paused.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_is_paused.htm @@ -1,66 +0,0 @@ - - - - - - audio_is_paused - - - - - - - - - - - -

audio_is_paused

-

Эта функция проверяет заданный звук на предмет того, не приостановлен ли он в данный момент. Звук может быть либо одним экземпляром звука (индекс для отдельных воспроизводимых звуков может быть сохранен в переменной при использовании функции audio_play_sound() или audio_play_sound_at() или звуковой актив, в этом случае будут проверены все экземпляры данного звука, и если какой-либо из них находится в состоянии паузы, функция вернет true, в противном случае она вернет false.

-

-

Синтаксис:

-

audio_is_paused(index);

- - - - - - - - - - - - - -
АргументТипОписание
index Идентификаторзвукового актива или звукового экземпляраThe index of the sound to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if audio_is_paused(snd_Waterfall)
- {
-     audio_resume_sound(snd_Waterfall);
- }

-

Приведенный выше код проверяет, не приостановлен ли в данный момент звук, индексированный в переменной "snd_Waterfall", и если он возвращает true, то воспроизведение звука будет возобновлено.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_is_playing.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_is_playing.htm index 2b45e9983..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_is_playing.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_is_playing.htm @@ -1,66 +0,0 @@ - - - - - - audio_is_playing - - - - - - - - - - - -

audio_is_playing

-

Эта функция проверяет заданный звук на предмет того, воспроизводится ли он в данный момент. Звук может быть либо одним экземпляром звука (индекс для отдельных воспроизводимых звуков может быть сохранен в переменной при использовании функции audio_play_sound() или audio_play_sound_at() или звуковой актив, в этом случае будут проверены все экземпляры заданного звука, и если какой-либо из них воспроизводится, функция вернет true, в противном случае она вернет false. Обратите внимание, что эта функция вернет true, если проверяемый звук был ранее приостановлен с помощью функции audio_pause_sound() функция.

-

-

Синтаксис:

-

audio_is_playing(index);

- - - - - - - - - - - - - -
АргументТипОписание
index Идентификаторзвукового актива или звукового экземпляраThe index of the sound to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !audio_is_playing(snd_Waterfall)
- {
-     audio_play_sound_at(snd_Waterfall, x, y, 0, 300, true, 1);
- }

-

Приведенный выше код проверяет, играет ли в данный момент звук, индексированный в переменной "snd_Waterfall", и если он возвращает false, то звук будет зациклен в позиции комнаты, с расстоянием падения 300 и низким приоритетом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_master_gain.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_master_gain.htm index a6e3f1ac8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_master_gain.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_master_gain.htm @@ -1,71 +0,0 @@ - - - - - - audio_master_gain - - - - - - - - - - -

audio_master_gain

-

С помощью этой функции можно установить абсолютное значение глобальной громкости всех звуков и музыки. Она основана на линейной шкале от 0 (тишина) до любого значения больше 0, хотя обычно максимальная громкость считается равной 1. Все, что больше 1, можно использовать, но в зависимости от используемого звука и платформы, под которую он компилируется, при воспроизведении звука могут возникнуть искажения или обрывы. Эта функция влияет на относительную громкость всех звуков и музыки, воспроизводимых в игре.

-

-

Синтаксис:

-

audio_master_gain(gain);

- - - - - - - - - - - - - -
АргументТипОписание
gainРеальноValue for the global volume (0 to 1).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if keyboard_check(vk_up)
- {
-     if vol < 1 vol += 0.05;
-     audio_master_gain(vol);
- }
- if (keyboard_check(vk_down))
- {
-     if vol > 0 vol -= 0.05;
-     audio_master_gain(vol);
- }

-

Приведенный выше код проверяет нажатия клавиш со стрелками вверх и вниз, которые увеличивают или уменьшают переменную "vol". Эта переменная затем используется для установки глобального усиления всех звуков и музыки в игре.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_pause_all.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_pause_all.htm index bbc1219e5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_pause_all.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_pause_all.htm @@ -1,60 +0,0 @@ - - - - - - audio_pause_all - - - - - - - - - - -

audio_pause_all

-

С помощью этой функции вы можете приостановить все воспроизводимые в данный момент звуки.

-

-

Синтаксис:

-

audio_pause_all();

-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check_pressed(ord("P"))
- {
-     global.Pause = !global.Pause;
-     if (global.Pause)
-     {
-         audio_pause_all();
-     }
-     else
-     {
-         audio_resume_all();
-     }
- }

-

Приведенный выше код проверяет нажатие клавиши "P" и, если обнаруживает ее, устанавливает глобальную переменную "Pause" в значение true или false, а затем либо приостанавливает все звуки, либо перезапускает все ранее приостановленные звуки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_pause_sound.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_pause_sound.htm index 0fdc05c58..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_pause_sound.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_pause_sound.htm @@ -1,73 +0,0 @@ - - - - - - audio_pause_sound - - - - - - - - - - -

audio_pause_sound

-

С помощью этой функции можно приостановить любой воспроизводимый в данный момент звук. Звук может быть либо одним экземпляром звука (индекс для отдельных воспроизводимых звуков может быть сохранен в переменной при использовании функции audio_play_sound() или audio_play_sound_at() или звуковой актив, в этом случае все экземпляры данного звука будут поставлены на паузу.

-

-

Синтаксис:

-

audio_pause_sound(index);

- - - - - - - - - - - - - -
АргументТипОписание
index Идентификаторзвукового актива или звукового экземпляраThe index of the sound to pause.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if keyboard_check_pressed(ord("P"))
- {
-     global.pause = !global.pause;
-     if (global.pause)
-     {
-         audio_pause_sound(snd_Waterfall);
-     }
-     else
-     {
-         audio_resume_sound(snd_waterfall);
-     }
- }

-

Приведенный выше код проверяет нажатие клавиши "P" и, если обнаруживает ее, устанавливает глобальную переменную "Pause" в значение true или false, а затем либо приостанавливает звук, индексированный в переменной "snd_Waterfall", либо возобновляет его из состояния паузы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_play_sound.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_play_sound.htm index 1339faaca..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_play_sound.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_play_sound.htm @@ -1,103 +0,0 @@ - - - - - - audio_play_sound - - - - - - - - - - -

audio_play_sound

-

С помощью этой функции вы можете воспроизводить любой звуковой ресурс в вашей игре. Вы предоставляете индекс звука и присваиваете ему приоритет, который затем используется для определения того, как звуки будут обрабатываться, когда количество воспроизводимых звуков превысит предел, установленный функцией audio_channel_num(). Звуки с более низким приоритетом будут остановлены в пользу звуков с более высоким приоритетом, а значение приоритета может быть любым реальным числом (фактическое значение произвольно и может быть от 0 до 1 или от 0 до 100, поскольку GameMaker будет определять их приоритет одинаково). Обратите внимание, что при работе с приоритетами, чем выше число, тем выше приоритет, так что звук с приоритетом 100 будет предпочтительнее звука с приоритетом 1. Третий аргумент предназначен для зацикливания звука, и если установить его в true, то звук будет повторяться до тех пор, пока его не остановят, а если установить его в false, то звук будет воспроизводиться только один раз.

-
-

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

-

-

Синтаксис:

-

audio_play_sound(index, priority, loop, [gain], [offset], [pitch], [listener_mask]);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexЗвуковой активThe index of the sound to play.
priorityРеальноSet the channel priority for the sound.
loopБулевоSets the sound to loop or not.
gainРеальноOPTIONAL Ценность выигрыша.
offsetРеальноOPTIONAL Время (в секундах), на которое нужно установить начальную точку. Значения, превышающие длину заданного звука, игнорируются.
pitchРеальноOPTIONAL Множитель шага (по умолчанию 1).
listener_maskРеальноOPTIONAL Данные битовой маски, которые нужно установить для звука. Для цели HTML5 это не будет иметь никакого эффекта, поскольку цель не поддерживает более одного слушателя.
-

-

Возвращается:

-

Sound Instance ID

-

-

Пример 1:

-

if health <= 0
- {
-     lives -= 1;
-     audio_play_sound(snd_PlayerDead, 10, false);
- }

-

Приведенный выше код проверяет глобальную переменную "health", и если она меньше или равна 0, то удаляет 1 из глобальной переменной "lives" и воспроизводит звук.

-

Пример 2:

-

if bbox_left > room_width
- {
-     audio_play_sound(snd_Goodbye, 10, false, 1.1, 0, 2);
- }

-

Приведенный выше код проверяет, находится ли экземпляр за правой границей комнаты, и воспроизводит звук с коэффициентом усиления 1,1 и высотой тона 2 (в два раза выше обычного).

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_play_sound_at.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_play_sound_at.htm index e217adc61..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_play_sound_at.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_play_sound_at.htm @@ -1,133 +0,0 @@ - - - - - - audio_play_sound_at - - - - - - - - - - -

audio_play_sound_at

-

С помощью этой функции вы можете воспроизвести любой звуковой ресурс в заданной позиции в аудиопространстве. Вы указываете индекс звука, а затем назначаете ему позицию в трехмерном пространстве. Позиция слушателя по умолчанию равна (0, 0, 0), это означает, что если слушатель не был перемещен и вы хотите, чтобы звук шел слева (например), вы должны установить позицию x на отрицательное значение (для получения дополнительной информации о настройке позиции слушателя см. audio_listener_position()).

-

Вы также можете задать расстояние падения (0 - звук будет тихим, по умолчанию 100), которое заставит звук затухать по мере удаления от места слушателя. То, как будет слышно само затухание, зависит от эталона спада (это расстояние, на котором громкость источника обычно уменьшается вдвое) и коэффициента спада (он влияет на звук только после эталона спада). Коэффициент по умолчанию обычно равен 1, а эффект от различных значений коэффициента спада зависит от выбранной модели (полное руководство по различным моделям коэффициента спада и использованию этих значений см. в функции audio_falloff_set_model()).

-

Следующие два аргумента служат для установки того, должен ли звук зацикливаться или нет, и для присвоения приоритета звуку. Этот приоритет затем используется для определения того, как звуки будут обработаны, когда количество воспроизводимых звуков превысит предел, установленный функцией audio_channel_num(). Звуки с более низким приоритетом будут остановлены в пользу звуков с более высоким приоритетом, а значение приоритета может быть любым действительным числом (фактическое значение произвольно и может быть от 0 до 1 или от 0 до 100, поскольку GameMaker будет определять их приоритет одинаково). Обратите внимание, что при работе с приоритетами, чем выше число, тем выше приоритет, так что звук с приоритетом 100 будет предпочтительнее звука с приоритетом 1.

-
-

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

-

-

Синтаксис:

-

audio_play_sound_at(index, x, y, z, falloff_ref, falloff_max, falloff_factor, loop, priority, [gain], [offset], [pitch], [listener_mask]);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexЗвуковой активThe index of the sound to play.
xРеальноThe x position.
yРеальноThe y position.
zРеальноThe z position.
falloff_refРеальноThe falloff reference relative to the listener (clamp).
falloff_maxРеальноThe maximum falloff distance relative to the listener.
falloff_factorРеальноThe falloff factor (default 1).
loopБулевоFlags the sound as looping or not.
priorityРеальноSet the channel priority for the sound.
gainРеальноOPTIONAL Ценность выигрыша.
offsetРеальноOPTIONAL Время (в секундах), на которое нужно установить начальную точку. Значения, превышающие длину заданного звука, игнорируются.
pitchРеальноOPTIONAL Множитель шага (по умолчанию 1).
listener_maskРеальноOPTIONAL Данные битовой маски, которые нужно установить для звука. Для цели HTML5 это не будет иметь никакого эффекта, поскольку цель не поддерживает более одного слушателя.
-

-

Возвращается:

-

Sound Instance ID

-

-

Пример 1:

-

if global.SFX
- {
-     audio_play_sound_at(snd_Waterfall, x, y, 0, 100, 300, 1, true, 1);
- }

-

Приведенный выше код проверяет глобальную переменную "SFX", и если она возвращает значение true, то звук, индексированный в переменной "snd_Waterfall", будет зациклен в позиции комнаты, с эталоном падения 100, расстоянием падения 300, коэффициентом падения 1 и низким приоритетом.

-

Пример 2:

-

if global.SFX
- {
-     audio_play_sound_at(snd_Waterfall, x, y, 0, 100, 300, 1, true, 1, 1, 2);
- }

-

Приведенный выше код проверяет глобальную переменную "SFX", и если она возвращает значение true, то звук, индексированный в переменной "snd_Waterfall", будет зациклен в позиции комнаты с использованием заданных настроек падения и без изменения усиления. Звук немедленно начнет воспроизводиться со второй секунды 2.

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_resume_all.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_resume_all.htm index df0c075bc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_resume_all.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_resume_all.htm @@ -1,60 +0,0 @@ - - - - - - audio_resume_all - - - - - - - - - - -

audio_resume_all

-

С помощью этой функции можно возобновить все звуки, которые были приостановлены ранее.

-

-

Синтаксис:

-

audio_resume_all();

-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check_pressed(ord("P"))
- {
-     global.Pause = !global.Pause;
-     if (global.Pause)
-     {
-         audio_pause_all();
-     }
-     else
-     {
-         audio_resume_all();
-     }
- }

-

Приведенный выше код проверяет нажатие клавиши "P" и, если обнаруживает ее, устанавливает глобальную переменную "Pause" в значение true или false, а затем либо приостанавливает все звуки, либо перезапускает все ранее приостановленные звуки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_resume_sound.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_resume_sound.htm index d1742f444..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_resume_sound.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_resume_sound.htm @@ -1,73 +0,0 @@ - - - - - - audio_resume_sound - - - - - - - - - - -

audio_resume_sound

-

С помощью этой функции можно возобновить любой звук, который в данный момент приостановлен (после использования функции audio_pause_sound()). Звук может быть либо одним экземпляром звука (индекс для отдельных воспроизводимых звуков может быть сохранен в переменной при использовании функции audio_play_sound() или audio_play_sound_at() ) или звуковой актив, в этом случае все экземпляры данного звука будут запущены заново.

-

-

Синтаксис:

-

audio_resume_sound(index);

- - - - - - - - - - - - - -
АргументТипОписание
index Идентификаторзвукового актива или звукового экземпляраThe index of the sound to resume.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if keyboard_check_pressed(ord("P"))
- {
-     global.Pause = !global.Pause;
-     if (global.Pause)
-     {
-         audio_pause_sound(snd_Waterfall);
-     }
-     else
-     {
-         audio_resume_sound(snd_Waterfall);
-     }
- }

-

Приведенный выше код проверяет нажатие клавиши "P" и, если обнаруживает ее, устанавливает глобальную переменную "Pause" в значение true или false, а затем либо приостанавливает звук, индексированный в переменной "snd_Waterfall", либо возобновляет его из состояния паузы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_set_master_gain.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_set_master_gain.htm index bc04e24c8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_set_master_gain.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_set_master_gain.htm @@ -1,73 +0,0 @@ - - - - - - audio_set_master_gain - - - - - - - - - - -

audio_set_master_gain

-

С помощью этой функции вы можете установить абсолютное значение глобальной громкости всех звуков и музыки для определенного слушателя. Индекс слушателя по умолчанию равен 0, но вы можете использовать функцию audio_get_listener_info(), чтобы получить различные индексы, доступные для целевой платформы. Значение усиления основано на линейной шкале от 0 (тишина) до 1 (полная громкость) и влияет на относительную громкость всех звуков и музыки, воспроизводимых из вашей игры через данный слушатель.

-

-

Синтаксис:

-

audio_set_master_gain(listenerIndex, gain);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
listenerIndex Идентификаторреального или аудиослушателяThe index of the listener to set the gain on.
gainРеальноValue for the global volume (0 to 1).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var num = audio_get_listener_count();
- for (var i = 0; i < num; i++)
- {
-     var info = audio_get_listener_info(i);
-     audio_set_master_gain(info[? "index"], 0.75);
-     ds_map_destroy(info);
- }

-

Приведенный выше код перебирает доступные слушатели, а затем устанавливает их главный коэффициент усиления на 0,75.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_gain.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_gain.htm index f5efb7b4a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_gain.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_gain.htm @@ -1,79 +0,0 @@ - - - - - - audio_sound_gain - - - - - - - - - - -

audio_sound_gain

-

С помощью этой функции можно приглушить или затушить звук на определенный промежуток времени, а также мгновенно настроить усиление звука.

-

Время измеряется в миллисекундах, и функция требует, чтобы вы ввели конечный уровень усиления звука, которого он должен достичь к концу этого времени. Это усиление может быть от 0 (без звука) до любого значения больше 0, хотя обычно максимальная громкость считается равной 1. Все, что больше 1, можно использовать, но в зависимости от используемого звука и платформы, на которую он компилируется, вы можете получить искажения или клиппинг при воспроизведении звука. Обратите внимание, что шкала усиления линейна, и чтобы мгновенно изменить усиление, просто установите аргумент времени равным 0.

-

Эта функция повлияет на все экземпляры звука, воспроизводимые в данный момент в комнате, если индекс является звуковым ресурсом, а конечная громкость будет громкостью, на которой будут воспроизводиться все последующие экземпляры звука. Однако если вы использовали индекс, возвращенный из функции типа audio_play_sound() это повлияет только на один экземпляр звука.

-

-

Синтаксис:

-

audio_sound_gain(index, volume, time);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
index Идентификаторзвукового актива или звукового экземпляраThe index of the sound to set the gain for.
volumeРеальноValue for the music volume.
timeРеальноThe length for the change in gain in milliseconds.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if val
- {
-     var snd = audio_play_sound(snd_fountain);
-     audio_sound_gain(snd, 0, 0);
-     audio_sound_gain(snd, 1, 5000);
- }

-

Приведенный выше код проверяет переменную и, если он возвращает true, то присваивает индекс воспроизводимого звука локальной переменной "snd". Затем эта переменная используется для уменьшения громкости конкретного звука до 0 и увеличения до полной громкости в течение 5 секунд.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_get_gain.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_get_gain.htm index c95e438c9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_get_gain.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_get_gain.htm @@ -1,66 +0,0 @@ - - - - - - audio_sound_get_gain - - - - - - - - - - - -

audio_sound_get_gain

-

Эта функция возвращает текущее значение усиления для заданного звука. Звук может быть либо одним, ссылающимся на индекс отдельного воспроизводимого звука, который был сохранен в переменной при использовании функции audio_play_sound() или audio_play_sound_at() или фактический звуковой актив из браузера активов. Усиление обычно рассчитывается как значение от 0 до 1, но на некоторых платформах вы можете иметь усиление больше 1, хотя значение 1 считается "полной громкостью" и большее значение может привести к обрыву звука.

-

-

Синтаксис:

-

audio_sound_get_gain(index);

- - - - - - - - - - - - - -
АргументТипОписание
index Идентификаторзвукового актива или звукового экземпляраThe index of the sound to get the gain of.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if audio_sound_get_gain(snd_Music) != 1
- {
-     audio_sound_gain(snd_Music, 1, 0);
- }

-

Приведенный выше код изменит усиление звука, воспроизводимого из звука, проиндексированного как "snd_Music", если его усиление не равно 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_get_listener_mask.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_get_listener_mask.htm index a5b032f60..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_get_listener_mask.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_get_listener_mask.htm @@ -1,67 +0,0 @@ - - - - - - audio_sound_get_listener_mask - - - - - - - - - - - -

audio_sound_get_listener_mask

-

Эта функция возвращает данные битовой маски, определяющие, с каких аудиопрослушивателей должен воспроизводиться звук. Дополнительную информацию см. в разделе " Слушатели звука ".

-

-

Синтаксис:

-

audio_sound_get_listener_mask(soundID);

- - - - - - - - - - - - - -
АргументТипОписание
soundIDИдентификатор звукового экземпляраThe unique ID of the sound to get the mask of
-

-

Возвращается:

-

Real

-

-

Пример:

-

var snd = audio_play_sound(snd_PlayerDead, 10, false);
- if audio_sound_get_listener_mask(snd) != global.PlayerMask
- {
-     audio_sound_set_listener_mask(snd, global.PlayerMask);
- }

-

Приведенный выше код воспроизводит звук, затем проверяет данные маски слушателя для этого звука, и если они не совпадают с данными, хранящимися в глобальной переменной, то устанавливает слушателя(ей) для воспроизведения, используя данные маски, хранящиеся в глобальной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_get_pitch.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_get_pitch.htm index 904f73b9f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_get_pitch.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_get_pitch.htm @@ -1,66 +0,0 @@ - - - - - - audio_sound_get_pitch - - - - - - - - - - - -

audio_sound_get_pitch

-

Эта функция может быть использована для получения высоты тона заданного звука. Звук может быть либо ссылкой на индекс отдельного воспроизводимого звука, который был сохранен в переменной при использовании функции audio_play_sound() или audio_play_sound_at() или фактический звуковой актив из браузера активов.

-

-

Синтаксис:

-

audio_sound_get_pitch(index);

- - - - - - - - - - - - - -
АргументТипОписание
index Идентификаторзвукового актива или звукового экземпляраThe index of the sound to get the pitch of.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if audio_sound_get_pitch(snd_Explode) != 1
- {
-     audio_sound_pitch(snd_Explode, 1);
- }

-

Приведенный выше код изменит высоту тона звука, воспроизводимого из звука, проиндексированного как "snd_Explode", если его высота тона не равна 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_get_track_position.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_get_track_position.htm index e9a3e9dc2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_get_track_position.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_get_track_position.htm @@ -1,66 +0,0 @@ - - - - - - audio_sound_get_track_position - - - - - - - - - - - -

audio_sound_get_track_position

-

Эта функция получает позицию (в секундах) в звуковом файле для звука, который будет воспроизводиться. Звук может быть только одним экземпляром звука (индекс для отдельных воспроизводимых звуков может быть сохранен в переменной при использовании функции audio_play_sound() или audio_play_sound_at() функции).

-

-

Синтаксис:

-

audio_sound_get_track_position(index);

- - - - - - - - - - - - - -
АргументТипОписание
indexИдентификатор звукового экземпляраThe index of the sound to get the play position of.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if audio_sound_get_track_position(global.Music) != 0
- {
-     audio_sound_set_track_position(global.Music, 0);
- }

-

Приведенный выше код проверяет трек, чтобы получить его начальную позицию, и если она не 0 секунд, то устанавливает ее на 0 секунд.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_is_playable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_is_playable.htm index 7b4abbb0c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_is_playable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_is_playable.htm @@ -1,66 +0,0 @@ - - - - - - audio_sound_is_playable - - - - - - - - - - - -

audio_sound_is_playable

-

Эта функция может быть использована для проверки возможности воспроизведения заданного звукового индекса. Это необходимо из-за различий в способах воспроизведения потокового и непотокового звука на целевой платформе HTML5. Функция возвращает true, если звук может быть воспроизведен, и false, если не может. Обратите внимание, что на всех других платформах, кроме HTML5, функция всегда будет возвращать true.

-

-

Синтаксис:

-

audio_sound_is_playable(index);

- - - - - - - - - - - - - -
АргументТипОписание
indexЗвуковой активThe index of the sound to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if audio_sound_is_playable(snd_Shot)
- {
-     audio_play_sound(snd_Shot, 10, false);
- }

-

Приведенный выше код воспроизведет звук "snd_Shot", если он воспроизводим.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_length.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_length.htm index 2b039f887..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_length.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_length.htm @@ -1,66 +0,0 @@ - - - - - - audio_sound_length - - - - - - - - - - - -

audio_sound_length

-

Эта функция возвращает длительность заданного звука в секундах. Звук может быть либо ссылкой на индекс отдельного воспроизводимого звука, который был сохранен в переменной при использовании функции audio_play_sound() или audio_play_sound_at() или фактический звуковой актив из браузера активов.

-

-

Синтаксис:

-

audio_sound_length(index);

- - - - - - - - - - - - - -
АргументТипОписание
index Идентификаторзвукового актива или звукового экземпляраThe index of the sound to check.
-

-

Возвращается:

-

Real

-

-

Пример:

-

var len;
- len = audio_sound_length(snd_Beam);
- audio_play_sound(snd_Beam, 1, false);
- alarm[0] = room_speed * len;

-

Приведенный выше код получает длительность (в секундах) звука, индексированного в переменной "snd_Beam", затем воспроизводит звук и устанавливает сигнал тревоги, когда звук закончит воспроизведение, используя длительность звука для расчета времени, необходимого для сигнала тревоги.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_pitch.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_pitch.htm index 04bf9865b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_pitch.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_pitch.htm @@ -1,77 +0,0 @@ - - - - - - audio_sound_pitch - - - - - - - - - - -

audio_sound_pitch

-

Эта функция может быть использована для изменения высоты тона заданного звука. Звук может быть либо одним из индексов отдельного воспроизводимого звука, который был сохранен в переменной при использовании функции audio_play_sound() или audio_play_sound_at() или фактический звуковой актив из браузера активов. Если это индекс воспроизводимого звука, то будет изменен только его экземпляр, однако при использовании звукового актива из браузера активов будут изменены все экземпляры воспроизводимого звукового актива.

-

Аргумент pitch является множителем высоты тона, то есть вводимое значение умножает текущую высоту тона на данное значение, поэтому значение по умолчанию 1 не изменяет высоту тона, а значение меньше 1 понижает высоту тона, а больше 1 повышает высоту тона. Для этой функции лучше использовать небольшие приращения, так как значение меньше 0 или больше 5 может быть не слышно. Стоит отметить, что общее допустимое изменение высоты тона ограничено (1/256) - 256 октавами, поэтому любое значение больше или меньше этого не будет зарегистрировано.

-

Приведенное выше значение зажатого диапазона - это то, к чему GameMaker пытается привязать диапазон, но это значение не гарантируется на всех целевых платформах. iOS Например, для (1/256) - 8, поэтому вам может понадобиться экспериментировать на каждой целевой платформе и иметь разные версии звукового ресурса, каждая из которых предварительно сдвинута, если вам нужны более высокие или более низкие значения октавы.

-
-

Синтаксис:

-

audio_sound_pitch(index, pitch);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexЗвуковой актив или Идентификатор звукового экземпляраThe index of the sound to change.
pitchРеальноThe pitch multiplier (default 1).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var s_engine = audio_play_sound(snd_CarEngine, 10, false);
- switch (gear)
- {
-     case 1: audio_sound_pitch(s_engine, 0.8); break;
-     case 2: audio_sound_pitch(s_engine, 0.9); break;
-     case 3: audio_sound_pitch(s_engine, 0.95); break;
-     case 4: audio_sound_pitch(s_engine, 1); break;
-     case 5: audio_sound_pitch(s_engine, 1.2); break;
- }

-

Приведенный выше код изменит высоту тона звука, воспроизводимого из звука, индексированного в переменной "s_engine", в зависимости от значения переменной "gear".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_set_listener_mask.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_set_listener_mask.htm index 7b6d186d4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_set_listener_mask.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_set_listener_mask.htm @@ -1,69 +0,0 @@ - - - - - - audio_sound_set_listener_mask - - - - - - - - - - -

audio_sound_set_listener_mask

-

Эта функция может быть использована для установки битовой маски для звука, чтобы он воспроизводился только от указанных слушателей. Вы можете создать битовую маску с помощью функции audio_get_listener_info() а затем с помощью побитового or ("|") создать пользовательскую маску с теми слушателями, от которых вы хотите, чтобы звук воспроизводился, а затем применить эту маску к звуку после его воспроизведения. Эта маска отменяет маску по умолчанию или ту, которую вы задали с помощью функции audio_set_listener_mask().

-

Эта функция может быть использована только для звука после его установки на воспроизведение и требует идентификатор звука, возвращенный функцией, используемой для воспроизведения звука.

-

-

Синтаксис:

-

audio_sound_set_listener_mask(soundID, mask);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
soundIDИдентификатор звукового экземпляраThe unique ID of the sound to set the mask of
maskРеальноThe bitmask data to set for the sound
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var snd = audio_play_sound(snd_PlayerDead, 10, false);
- audio_sound_set_listener_mask(snd, global.PlayerMask);

-

Приведенный выше код воспроизводит звук, затем устанавливает слушателя (слушателей) для воспроизведения, используя данные маски, хранящиеся в глобальной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_set_track_position.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_set_track_position.htm index 6dce49d3f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_set_track_position.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_sound_set_track_position.htm @@ -1,74 +0,0 @@ - - - - - - audio_sound_set_track_position - - - - - - - - - - -

audio_sound_set_track_position

-

Эта функция устанавливает позицию (в секундах) для заданного звукового идентификатора или актива.

-

Указанный "индекс" может быть либо единственным экземпляром звука (как возвращено из функции audio_play_sound()) или звуковым активом (например, добавленным через Asset Browser). Поведение этой функции будет отличаться в зависимости от типа указанного вами индекса:

-
    -
  • Если это уникальный идентификатор звука, который вы используете и который уже играет, то его позиция немедленно изменится на заданное время.
  • -
  • Если это звуковой актив, то все последующие воспроизведения данного звукового актива начнутся в новое время.
  • -
-

Эта функция изменяет позицию дорожки только для воспроизводимого в данный момент звука или для его следующего воспроизведения (в случае, если предоставлен звуковой актив). Если звук воспроизводится с включенным циклом, последующие воспроизведения всегда будут начинаться с начала (0,0 секунды), а не с позиции дорожки, определенной с помощью этой функции. Например, если запустить звуковую петлю на 5,7 секунды, то первый звук будет воспроизводиться с этой точки, однако после этого будет повторяться весь трек, от начала до конца.

-

-

Синтаксис:

-

audio_sound_set_track_position(index, time);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
index Идентификаторзвукового актива или звукового экземпляраThe index of the sound to change.
timeРеальноThe time (in seconds) to set the start point to. Values longer than the length of the given sound are ignored.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var snd = audio_play_sound(snd_MainTrack, 0, false);
- audio_sound_set_track_position(snd, 32);

-

Приведенный выше код воспроизводит звук, а затем использует возвращаемое значение ID для установки начальной позиции звука на 32 секунды.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_stop_all.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_stop_all.htm index 72093b8b9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_stop_all.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_stop_all.htm @@ -1,52 +0,0 @@ - - - - - - audio_stop_all - - - - - - - - - - -

audio_stop_all

-

Эта функция остановит все воспроизводимые в данный момент звуки.

-

-

Синтаксис:

-

audio_stop_all();

-

-

Возвращается:

-

-

-

Пример:

-

if !global.SFX
- {
-     audio_stop_all();
- }

-

Приведенный выше код проверяет глобальную переменную "SFX" и, если она возвращает значение false, то останавливает все воспроизводимые в данный момент звуки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_stop_sound.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_stop_sound.htm index da9709db6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_stop_sound.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_stop_sound.htm @@ -1,69 +0,0 @@ - - - - - - audio_stop_sound - - - - - - - - - - -

audio_stop_sound

-

Эта функция остановит заданный звук, если он воспроизводится в данный момент. Звук может быть либо одним экземпляром звука (индекс для отдельных воспроизводимых звуков может быть сохранен в переменной при использовании функции audio_play_sound() или audio_play_sound_at() или звуковой актив, в этом случае все экземпляры данного звука будут остановлены.

-

-

Синтаксис:

-

audio_stop_sound(index);

- - - - - - - - - - - - - -
АргументТипОписание
index Идентификаторзвукового актива или звукового экземпляраThe index of the sound to stop.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if !global.SFX
- {
-     audio_stop_sound(snd_Waterfall);
- }
- else
- {
-     audio_play_sound_at(snd_Waterfall, x, y, 0, 100, 300, 1, true, 1);
- }

-

Приведенный выше код проверяет глобальную переменную "SFX" и если возвращает значение false, то останавливает звук, индексированный в переменной "snd_Waterfall", который играет в данный момент, а если возвращает значение true, то зацикливает звук.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_system_is_available.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_system_is_available.htm index 77f07cfe8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_system_is_available.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Audio/audio_system_is_available.htm @@ -1,70 +0,0 @@ - - - - - - audio_system_is_available - - - - - - - - - - - -

audio_system_is_available

-

Эта функция может использоваться для проверки и определения того, была ли инициализирована аудиосистема, или запущен ли аудиоконтекст. На всех платформах эта функция вернет true сразу после запуска игры, когда аудиосистема будет инициализирована, за исключением HTML5. На HTML5 статус аудиоконтекста может измениться в любой момент в зависимости от пользовательского ввода, используемого браузера и его версии, поэтому эту функцию можно использовать для проверки того, может ли воспроизводиться звук или нет. Если функция возвращает false (т.е. статус аудиоконтекста не запущен), то могут воспроизводиться только непотоковые звуки (но это не гарантировано, и вы должны считать, что ни один звук не может быть воспроизведен), в то время как если она возвращает true, то будут воспроизводиться все звуки.

-

-

Синтаксис:

-

audio_system_is_available();

-

-

Возвращается:

-

-

-

Пример:

-

if audio_system_is_available()
- {
-     if audio_is_paused(global.Music)
-     {
-         audio_resume_sound(global.Music)
-     }
-     else
-     {
-         if !audio_is_playing(global.Music)
-         {
-             global.Music = audio_play_sound(snd_Music, 0, true);
-         }
-     }
- }
- else
- {
-     if audio_is_playing(global.Music)
-     {
-         audio_pause_sound(global.Music);
-     }
- }

-

Приведенный выше код будет приостанавливать/отключать аудиодорожку в зависимости от того, инициализирована и доступна аудиосистема или нет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/Extensions.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/Extensions.htm index 3548c7dd3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/Extensions.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/Extensions.htm @@ -1,44 +0,0 @@ - - - - - - Расширения - - - - - - - - - - -

Расширения

-

Для работы с параметрами расширения предусмотрены следующие функции (см. раздел Создание параметров расширения):

- -

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_exists.htm index 90cb2fd76..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_exists.htm @@ -1,65 +0,0 @@ - - - - - - extension_exists - - - - - - - - - - -

extension_exists

-

Эта функция определяет, существует ли расширение с заданным именем(true) или нет(false).

-

-

Синтаксис:

-

extension_exists(extension_name);

- - - - - - - - - - - - - -
АргументТипОписание
extension_nameСтрокаThe name of your extension asset as a string
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if (extension_exists("MyExtension"))
- {
-     var _options = extension_get_options("MyExtension");
-     var _enabled = _options.enabled;
- }

-

Этот код проверяет, существует ли расширение MyExtension, и если существует, получает его параметры как struct и считывает из него значение.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_get_option_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_get_option_count.htm index 217f1283a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_get_option_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_get_option_count.htm @@ -1,73 +0,0 @@ - - - - - - extension_get_option_count - - - - - - - - - - -

extension_get_option_count

-

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

-

Функция вернет неопределенное значение, если предоставленное имя расширения недействительно.

-

-

Синтаксис:

-

extension_get_option_count(extension_name);

- - - - - - - - - - - - - -
АргументТипОписание
extension_nameСтрокаThe name of your extension asset as a string
-

-

Возвращается:

-

Real

-

-

Пример:

-

var _names = extension_get_option_names("MyExtension");
- var _count = extension_get_option_count("MyExtension");
-
- for (var i = 0; i < _count; i ++)
- {
-     var _option_name = _names[i];
-
-     show_debug_message(_option_name + ": ");
-     show_debug_message(extension_get_option_value("MyExtension", _option_name));
- } -

-

Этот код получает имена всех опций и количество опций в расширении MyExtension.

-

Он перебирает все имена опций и печатает имя и значение каждой опции в выходной журнал.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_get_option_names.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_get_option_names.htm index 0e1796b4b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_get_option_names.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_get_option_names.htm @@ -1,73 +0,0 @@ - - - - - - extension_get_option_names - - - - - - - - - - -

extension_get_option_names

-

Эта функция возвращает массив, содержащий имена всех опций, существующих в расширении с заданным именем.

-

Функция вернет неопределенное значение, если предоставленное имя расширения недействительно.

-

-

Синтаксис:

-

extension_get_option_names(extension_name);

- - - - - - - - - - - - - -
АргументТипОписание
extension_nameСтрокаThe name of your extension asset as a string
-

-

Возвращается:

-

Array of Strings

-

-

Пример:

-

var _names = extension_get_option_names("MyExtension");
- var _count = extension_get_option_count("MyExtension");
-
- for (var i = 0; i < _count; i ++)
- {
-     var _option_name = _names[i];
-
-     show_debug_message(_option_name + ": ");
-     show_debug_message(extension_get_option_value("MyExtension", _option_name));
- } -

-

Этот код получает имена всех опций и количество опций в расширении MyExtension.

-

Он перебирает все имена опций и печатает имя и значение каждой опции в журнал вывода.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_get_option_value.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_get_option_value.htm index 5b7c82a42..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_get_option_value.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_get_option_value.htm @@ -1,67 +0,0 @@ - - - - - - extension_get_option_value - - - - - - - - - - -

extension_get_option_value

-

Эта функция возвращает значение заданной опции в расширении с заданным именем.

-

Функция вернет неопределенное значение, если предоставленное имя расширения недействительно.

-

-

Синтаксис:

-

extension_get_option_value(extension_name, option_name);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
extension_nameСтрокаThe name of your extension asset as a string
option_nameСтрокаThe name of the option to read
-

-

Возвращается:

-

Any

-

-

Пример:

-

var _enabled = extension_get_option_value("MyExtension", "enabled");

-

Этот код получает значение опции enabled в расширении MyExtension.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_get_options.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_get_options.htm index d65c26fec..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_get_options.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Extensions/extension_get_options.htm @@ -1,63 +0,0 @@ - - - - - - extension_get_options - - - - - - - - - - -

extension_get_options

-

Эта функция возвращает структуру, содержащую все опции и их значения для расширения с заданным именем.

-

Функция вернет неопределенное значение, если предоставленное имя расширения недействительно.

-

-

Синтаксис:

-

extension_get_options(extension_name);

- - - - - - - - - - - - - -
АргументТипОписание
extension_nameСтрокаThe name of your extension asset as a string
-

-

Возвращается:

-

Struct

-

-

Пример:

-

var _options = extension_get_options("MyExtension");
- var _enabled = _options.enabled;

-

Этот код получает структуру options для расширения и считывает из нее значение.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/Fonts.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/Fonts.htm index d71d785f0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/Fonts.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/Fonts.htm @@ -1,68 +0,0 @@ - - - - - - Шрифты - - - - - - - - - - -

Шрифты

-

GameMaker имеет ряд функций, которые можно использовать для получения информации о включенных шрифтовых активах, а также дополнительный набор функций, которые можно использовать для изменения, добавления или удаления шрифтов из вашей игры во время выполнения. В частности, функция font_add() может быть использована для добавления нестандартных шрифтов, например азиатских глифов, из файла *.ttf или *.otf.

-

Стоит отметить, что если вы добавите в игру шрифт, в котором нет глифов, необходимых для текста, который вы хотите написать, то символ Unicode 9647 (▯) используется для замены недостающих глифов при рендеринге в событии draw. Таким образом, если в вашем шрифте нет, например, символа º, то при написании 90º получится 90▯.

-

Для получения информации о ресурсах шрифта можно использовать следующие функции:

- -

-

Следующие функции можно использовать для изменения и манипулирования шрифтами во время игры:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add.htm index 11c2044bc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add.htm @@ -1,93 +0,0 @@ - - - - - - font_add - - - - - - - - - - -

font_add

-

Эта функция может быть использована для добавления шрифта в вашу игру из файла шрифта, присутствующего в Included Files. Вы можете определить размер шрифта (в пунктах), а также то, должен ли шрифт быть жирным или курсивным, а также определить диапазон символов для включения. Функция возвращает значение индекса, которое следует сохранить в переменной, так как оно будет необходимо во всем дальнейшем коде, который будет ссылаться на этот шрифт, или вернет -1, если функция не выполнится по какой-либо причине.

-

Обратите внимание, что файл шрифта должен быть либо *.ttf, либо *.otf, что также может быть полезно для добавления нестандартных шрифтов, таких как азиатские или арабские шрифты.

-

ВНИМАНИЕ!!! Если вы включите такой шрифт в Included Files, он должен быть лицензирован для распространения вместе с игрой.

-

Для целевого модуля HTML5 эта функция может использоваться только для добавления веб-шрифтов и будет работать только в том случае, если WebGL не включен - если WebGL включен, необходимо использовать общий ресурс шрифта (т.е.: использование draw_set_font() вместе со шрифтом из Asset Browser) или растровые шрифты (см. font_add_sprite()).

-

ВАЖНО! При использовании HTML5 курсив и полужирный текст поддерживаются только в том случае, если в активе шрифта или в самом веб-шрифте есть эти символы. Они не будут синтезированы из базового шрифта.

-

При загрузке шрифта из файла размер шрифта указывается в пикселях, а первое и последнее значения игнорируются, то есть все глифы шрифта будут добавлены. Шрифты, добавленные таким образом, назначаются на свою собственную страницу текстуры, поэтому при использовании этой функции следует соблюдать осторожность, так как она увеличивает количество смен текстуры при рисовании. Также стоит отметить, что шрифты могут выглядеть немного больше при отрисовке, так как глифы могут иметь части, которые рисуются за пределами ограничительной рамки, определенной для шрифта. Также следует помнить, что существует ограничение на 200 глифов, которые могут быть отрисованы в одном кадре для определенного шрифта.

-

По умолчанию в добавленных шрифтах включено сглаживание. Однако вы можете проверить состояние AA в любое время с помощью функции font_add_get_enable_aa() и вы можете включить/выключить AA с помощью функции font_add_enable_aa().

-

ПРИМЕЧАНИЕ Когда вы загружаете шрифт в GameMaker, вы должны не забыть удалить его снова (с помощью кнопки font_delete()), если он больше не нужен, иначе существует риск утечки памяти, что приведет к замедлению и, в конечном итоге, к краху вашей игры.

-

-

Синтаксис:

-

font_add(name, size, bold, italic, first, last);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
nameСтрокаThe path of the font file in the Included Files (*.ttf или *.otf).
sizeРеальноThe size of the font - points for Web Fonts, pixels for file fonts.
boldБулевоWhether the font is bold (true) или нет (false).
italicБулевоWhether the font is italic (true) или нет (false).
firstРеальноThe first character to include (if you're unsure, go for 32).
lastРеальноThe last character to include (if you're unsure, go for 128).
-

-

Возвращается:

-

Font Asset

-

-

Пример:

-

new_font = font_add("gamefont.ttf", 24, true, true, 32, 128);

-

Это загрузит файл "gamefont.ttf" , находящийся в папке Included Files игры, с размером 24pt. Шрифт будет жирным и курсивным, а диапазон шрифта будет включать заглавные и строчные буквы, цифры и всю обычную пунктуацию. После загрузки шрифта его ID будет сохранен в переменной new_font.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add_enable_aa.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add_enable_aa.htm index 06202d571..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add_enable_aa.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add_enable_aa.htm @@ -1,63 +0,0 @@ - - - - - - font_add_enable_aa - - - - - - - - - - -

font_add_enable_aa

-

Эту функцию можно использовать для включения или отключения сглаживания (AA) для шрифтов, добавленных с помощью функции font_add(). Эта функция должна быть вызвана до добавления шрифтов, и установка ее в true включит AA, а установка в false отключит его. По умолчанию AA включен. Обратите внимание, что это не влияет на шрифты, которые были добавлены до вызова этой функции, и функция должна вызываться только один раз при добавлении шрифта, а не на каждом отрисовке/шаге, когда шрифт используется.

-

-

Синтаксис:

-

font_add_enable_aa(enable);

- - - - - - - - - - - -
АргументТипОписание
enableWhether to enable (true) или отключить (false) AA для добавленных шрифтов.
-

-

Возвращается:

-

-

-

Пример:

-

if !font_add_get_enable_aa()
- {
-     font_add_enable_aa(true);
- }

-

Приведенный выше код проверяет состояние сглаживания для добавленных шрифтов, и если оно не включено, то мы включаем его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add_get_enable_aa.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add_get_enable_aa.htm index 652239ec2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add_get_enable_aa.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add_get_enable_aa.htm @@ -1,51 +0,0 @@ - - - - - - font_add_get_enable_aa - - - - - - - - - - -

font_add_get_enable_aa

-

Эту функцию можно использовать для проверки того, включено ли сглаживание (AA) для шрифтов, добавленных с помощью функции font_add(). Функция возвращает true, если AA включено, и false, если нет. Обратите внимание, что AA включено по умолчанию, но вы можете изменить состояние AA для добавленных шрифтов с помощью функции font_add_enable_aa(). при условии, что она вызывается до добавления шрифта.

-

-

Синтаксис:

-

font_add_get_enable_aa();

-

-

Возвращается:

-

-

-

Пример:

-

if !font_add_get_enable_aa()
- {
-     font_add_enable_aa(true);
- }

-

Приведенный выше код проверяет состояние сглаживания для добавленных шрифтов, и если оно не включено, то мы включаем его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add_sprite.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add_sprite.htm index cdd0b9000..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add_sprite.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add_sprite.htm @@ -1,82 +0,0 @@ - - - - - - font_add_sprite - - - - - - - - - - -

font_add_sprite

-

С помощью этой функции вы можете использовать "спрайтовую полосу" для создания нового актива шрифта, где каждое подизображение будет отдельным символом или буквой. Индекс - это номер карты UTF8 для первого используемого символа, а диапазоны для использования такие же, как и для обычного шрифта, начиная с "!", но помните, что вы должны включать только то, что вам нужно, и что вы должны использовать функцию ord() для получения правильного значения UTF8 для начальной буквы. Созданный шрифт sprite будет иметь суб-изображения, установленные на отдельные глифы шрифта, где "первый" глиф будет иметь image_index равный 0. Вы можете определить "пробел" как любой символ, например, одну строку такого размера, какого вы хотите, чтобы был пробел, и все пробелы в тексте будут отображаться с такой шириной (но выбранное изображение никогда не будет отображаться), или, если вы не указали sprite для пробела, то вместо него будет использоваться ширина самого широкого символа в шрифте sprite.

-

Вы также можете задать пропорциональный (true) или непропорциональный (false) интервал для шрифта, при этом пропорциональный шрифт использует фактическую ширину букв (например, буква "i" занимает меньше места, чем буква "w"), а непропорциональный - ширину подрисуночного изображения, как моноширинный шрифт. Наконец, вы можете определить пространство, которое нужно оставить между каждой буквой при написании, и это может быть любое целое значение, при этом 0 означает отсутствие пространства (при пропорциональном шрифте буквы будут "соприкасаться").

-

Функция возвращает значение индекса, которое следует сохранить в переменной, так как оно будет необходимо во всех дальнейших кодах, которые будут ссылаться на этот шрифт, или возвращает -1, если функция не работает по какой-либо причине.

-

Стоит также отметить, что в карте символов не может быть пробелов, поэтому если вы, например, используете '.' и '0', но не '/', вам нужно либо включить '/' в любом случае, либо оставить пустой подобраз между двумя используемыми символами.

-

Сам sprite может быть активом sprite из браузера активов или загруженным из файла, используя сначала sprite_add, чтобы получить индекс загруженного sprite (который затем используется в функции). Важно отметить, что для того, чтобы функции выравнивания шрифтов (такие как draw_set_halign()) работают как положено при использовании шрифта sprite, начало шрифта sprite должно быть установлено в левом верхнем углу. Если вы используете другие значения, то вам придется учитывать смещение начала координат при рисовании текста этим шрифтом.

-

ПРИМЕЧАНИЕ Когда вы загружаете шрифт в GameMaker, вы должны не забыть удалить его снова (с помощью кнопки font_delete()), если он больше не нужен, иначе существует риск утечки памяти, что приведет к замедлению и, в конечном итоге, к краху вашей игры.

-

-

Синтаксис:

-

font_add_sprite(spr, first, prop, sep);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
sprАктив спрайтаThe sprite to add a font based on.
firstРеальноThe index of the first available character.
propБулевоSet as proportional font or not.
sepРеальноThe space to leave between each letter.
-

-

Возвращается:

-

Font Asset

-

-

Пример:

-

global.Font = font_add_sprite(spr_HUD_Font, ord("!"), true, 2);

-

Приведенный выше код создаст новый актив шрифта из актива sprite и сохранит индекс нового шрифта в переменной "global.Font" для последующего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add_sprite_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add_sprite_ext.htm index 91f1a6750..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add_sprite_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_add_sprite_ext.htm @@ -1,81 +0,0 @@ - - - - - - font_add_sprite_ext - - - - - - - - - - -

font_add_sprite_ext

-

С помощью этой функции вы можете использовать "спрайтовую полосу" (сам sprite должен быть активом sprite из браузера активов или sprite, который вы добавили в игровые ресурсы с помощью sprite_add) для создания нового актива шрифта, где каждое подизображение будет отдельным символом или буквой. В отличие от обычного шрифта font_add_sprite() которая имеет определенный порядок для субизображений sprite, эта функция отображает субизображения sprite на основе аргумента "string_map" функции. Этот аргумент представляет собой строку, которую вы можете использовать, чтобы сообщить GameMaker, в каком порядке расположены подрисунки шрифта sprite, и он будет автоматически отображать их при написании текста. Например, если вы задали строку "AaBbCcDdEeFfGgHh", то ваш шрифт sprite должен иметь именно такой порядок расположения субизображений. Вы можете определить "пробел" как любой символ, например, одну строку такого размера, каким вы хотите видеть пробел, и все пробелы в тексте будут отображаться с такой шириной (но выбранное изображение никогда не будет отображаться), или, если вы не указали sprite для пробела, вместо него будет использоваться ширина самого широкого символа в шрифте sprite.

-

Вы также можете задать пропорциональный (true) или непропорциональный (false) интервал для шрифта. При пропорциональном шрифте интервал определяется фактической шириной букв (например, буква "i" занимает меньше места, чем буква "w"), а при непропорциональном - шириной подрисуночного изображения, как при моноширинном шрифте. Наконец, вы можете определить пространство, которое нужно оставить между каждой буквой при написании, и это может быть любое целое значение, при этом 0 означает отсутствие пространства (при пропорциональном шрифте буквы будут "соприкасаться").

-

Функция возвращает значение индекса, которое должно быть сохранено в переменной, так как оно будет необходимо во всех дальнейших кодах, которые будут ссылаться на этот шрифт, или возвращает -1, если функция не работает по какой-либо причине.

-

Стоит отметить, что для работы функций выравнивания шрифтов (например, таких как draw_set_halign()), у шрифта sprite начало координат должно быть установлено в левом верхнем углу. Если вы используете другие значения, то при рисовании текста с помощью этого шрифта вам придется учитывать смещение начала координат.

-

ПРИМЕЧАНИЕ Когда вы загружаете шрифт в GameMaker, вы должны не забыть удалить его снова (с помощью кнопки font_delete()), если он больше не нужен, иначе существует риск утечки памяти, что приведет к замедлению и, в конечном итоге, к краху вашей игры.

-

-

Синтаксис:

-

font_add_sprite_ext(spr, string_map, prop, sep);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
sprАктив спрайтаThe sprite to add a font based on.
string_mapСтрокаString from which sprite sub-image order is taken.
propБулевоSet as proportional font or not.
sepРеальноThe space to leave between each letter.
-

-

Возвращается:

-

Font Asset

-

-

Пример:

-

global.Font = font_add_sprite_ext(spr_CalcFont, "0123456789+-*/=", true, 2);

-

Приведенный выше код создаст новый актив шрифта из sprite, индексированного в переменной "spr_CalcFont", и сохранит индекс нового шрифта в переменной "global.Font". Подобразы шрифта sprite будут отображены на указанную строку.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_delete.htm index dc6bd83f6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_delete.htm @@ -1,61 +0,0 @@ - - - - - - font_delete - - - - - - - - - - -

font_delete

-

С помощью этой функции вы можете удалить актив шрифта из игры. Это постоянное удаление, и смена комнаты или перезапуск игры не вернут удаленный шрифт обратно. Для этого игроку придется выйти из игры - и перезапустить игру, поэтому будьте осторожны при использовании этой функции. В целом, она нужна только для освобождения памяти, которая использовалась шрифтом, добавленным в игру с помощью функций font_add() или font_add_sprite().

-

-

Синтаксис:

-

font_delete(ind);

- - - - - - - - - - - -
АргументТипОписание
indThe index of the font to delete.
-

-

Возвращается:

-

-

-

Пример:

-

font_delete(global.Font);

-

Приведенный выше код удалит шрифт, индексированный в глобальной переменной "Font".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_exists.htm index dcf080d8e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_exists.htm @@ -1,64 +0,0 @@ - - - - - - font_exists - - - - - - - - - - - -

font_exists

-

Эта функция возвращает, существует ли шрифт с указанным индексом или нет. Вы можете проверить индексы шрифтов, определенные в браузере активов, или шрифты, которые были добавлены с помощью функций типа font_add().

-

-

Синтаксис:

-

font_exists(ind);

- - - - - - - - - - - -
АргументТипОписание
indIndex of the font to check.
-

-

Возвращается:

-

-

-

Пример:

-

if font_exists(fnt_Main)
- {
-     draw_set_font(fnt_Main);
- }

-

При этом активный шрифт для рисования будет установлен на fnt_Main, если он существует.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_bold.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_bold.htm index c1da0f53a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_bold.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_bold.htm @@ -1,64 +0,0 @@ - - - - - - font_get_bold - - - - - - - - - - - -

font_get_bold

-

С помощью этой функции можно проверить любой актив шрифта на наличие или отсутствие в нем флага полужирного начертания. Если да, то функция вернет true, в противном случае она вернет false.

-

-

Синтаксис:

-

font_get_bold(ind);

- - - - - - - - - - - -
АргументТипОписание
indIndex of the font to check.
-

-

Возвращается:

-

-

-

Пример:

-

if font_get_bold(fnt_Main)
- {
-     draw_set_font(fnt_Main);
- }

-

Это позволит установить активный шрифт рисунка на fnt_Main, если в свойствах шрифта он установлен как полужирный.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_first.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_first.htm index ba993bf91..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_first.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_first.htm @@ -1,65 +0,0 @@ - - - - - - font_get_first - - - - - - - - - - -

font_get_first

-

При определении шрифта в GameMaker вы можете задать диапазон символов, которые будут включены в него. Это связано с тем, что сам шрифт не включается в игру (по юридическим причинам), но его изображение - шрифта включено в страницу текстуры, и именно его будет использовать ваша игра (как и любой другой графический ресурс). Это означает, что вы захотите свести количество символов, которые вы используете, к минимуму и указать только тот диапазон символов, который - чтобы максимально оптимизировать память текстур. Эта функция может быть использована для поиска начального символа (в виде значения ASCII), который использовался, когда ваш шрифтовой актив был добавлен в игру.

-

ПРИМЕЧАНИЕ В связи с изменениями в работе со шрифтами эта функция всегда будет возвращать 32, поскольку GameMaker принудительно вводит в шрифт символ пробела (32) и не - позволяет использовать символы с кодами ниже 32. Новые функции для выполнения аналогичных задач будут добавлены в одном из будущих обновлений.

-

-

Синтаксис:

-

font_get_first(ind);

-

- - - - - - - - - - - -
АргументТипОписание
indIndex of the font to check.
-

-

Возвращается:

-

-

-

Пример:

-

num = font_get_first(fnt_Main);

-

Приведенный выше код сохранит значение ASCII первой буквы диапазона шрифта для шрифта, индексированного в "fnt_Main".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_fontname.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_fontname.htm index 09e06c306..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_fontname.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_fontname.htm @@ -1,62 +0,0 @@ - - - - - - font_get_fontname - - - - - - - - - - - -

font_get_fontname

-

С помощью этой функции можно получить фактическое системное имя заданного актива шрифта. Эта функция возвращает строку, а не индекс, и возвращаемое имя будет зависеть от используемого шрифта. Например, у вас может быть актив шрифта под названием "fnt_Main" в браузере активов, а сам шрифт может быть системным шрифтом Arial Windows. В этом случае функция вернет "Arial", так как это системное имя шрифта. Если вам нужно имя, которое отображается в браузере активов, используйте функцию font_get_name().

-

Описанное выше поведение применимо только к шрифтовым активам, добавленным с помощью IDE. При использовании для шрифта, загруженного во время выполнения (с помощью font_add()), функция вернет полный путь к файлу шрифта вместо его имени.

-

-

Синтаксис:

-

font_get_fontname(ind);

- - - - - - - - - - - -
АргументТипОписание
indIndex of the font to check.
-

-

Возвращается:

-

String

-

-

Пример:

-

fnt_Name = font_get_fontname(font0);

-

Приведенный выше код получит системное имя ресурса шрифта и сохранит его в виде строки в переменной "fnt_Name".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_info.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_info.htm index 645aed120..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_info.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_info.htm @@ -1,217 +0,0 @@ - - - - - - font_get_info - - - - - - - - - - - -

font_get_info

-

Эта функция используется для получения информации о заданном шрифте. Вы задаете индекс шрифта (это может быть актив, добавленный через Asset Browser, или шрифт, добавленный во время выполнения), и функция возвращает структуру со следующими переменными:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Информационная структура шрифта
Имя переменнойТип данныхОписание
ascenderOffsetРеальноМаксимальное смещение от базовой линии к вершине шрифта (в пикселях).
sizeРеальноПриблизительный размер шрифта (в пикселях)
spriteIndexАктив спрайтаИндекс sprite для шрифта, если он был создан из спрайта, иначе -1
textureУказатель-1, если шрифт был создан из sprite, иначе - идентификатор текстуры шрифта
nameСтрокаНазвание шрифта
boldБулевоtrue если шрифт жирный, в противном случае false (см. ПРИМЕЧАНИЕ ниже)
italicБулевоtrue если шрифт курсивный, в противном случае false (см. ПРИМЕЧАНИЕ ниже)
glyphsСтруктура глифа шрифтаСтруктура, содержащая информацию о каждом глифе в шрифте (более подробная информация приведена ниже)
-

ПРИМЕЧАНИЕ Переменные bold и italic отражают только настройки пользователя для шрифта, поэтому они могут быть неточными для шрифтов, которые по умолчанию отображаются жирным или курсивным шрифтом.

-

Если указанный шрифт не существует, функция вернет undefined.

-

Также обратите внимание, что изменение значений любой из этих переменных или любых переменных, содержащихся в структуре glyphs, не изменит отображение шрифта, поэтому эту информацию следует считать доступной только для чтения.

-

Структура глифов

-

Переменная glyphs в возвращаемой структуре будет самостоятельной структурой, содержащей информацию о каждом глифе, включенном в шрифт. Каждая переменная в этой структуре будет именем символа глифа, который будет содержать структуру, содержащую информацию для этого глифа. Вы можете представить эти вложенные структуры в следующем формате (начиная с главной структуры):

-

{
-     glyphs:
-     {
-         A: {},
-         B: {},
-         C: {},
-         // ...other glyphs
-     },
-     // ...other font info
- }

-

Вы можете использовать имя символа глифа для получения информации о нем из структуры, как, например, в следующем коде:

-

var _font_info = font_get_info(Font1);
-
- var _info_A = _font_info.glyphs[$ "A"]; // $ is a struct accessor
-
- show_debug_message(_info_A); -

-

Приведенный выше код получает глиф-структуру для символа "A" и печатает ее в выходной журнал. Вы также можете заменить строку ("A") переменной, содержащей строку, что позволит вам получать информацию о любом глифе через эту переменную во время выполнения.

-

Структура, возвращаемая для глифа, будет содержать следующие переменные:

-

ПРИМЕЧАНИЕ В HTML5 структура glyphs будет пустой для любых загруженных файловых шрифтов (таких как *.ttf или *.otf), поскольку среда выполнения не будет иметь информации об этих глифах.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Структура глифа шрифта
Имя переменнойТип данныхОписание
charнастоящийЕсли шрифт был создан из sprite, это будет индекс изображения глифа из этого sprite, в противном случае это будет номер символа Unicode.
-
- Примечание: Все переменные ниже этой не будут присутствовать в структуре, если шрифт был создан из спрайта. -
xнастоящийX позиция глифа на странице текстуры (в текселях).
yнастоящийПоложение глифа по оси Y на странице текстуры (в текселях)
wнастоящийШирина глифа на странице текстуры (в текселях).
hнастоящийВысота глифа на странице текстуры (в текселях)
shiftнастоящийКоличество пикселей для сдвига вправо при переходе к следующему символу (может быть отрицательным для сдвига влево).
offsetнастоящийКоличество пикселей для горизонтального смещения рендеринга этого глифа (может быть положительным или отрицательным).
yoffsetRealThe number of pixels to vertically offset the rendering of this glyph without affecting the shift position (can be positive or negative)
kerningмассивМассив целых чисел, содержащий информацию о кернинге в парах (или группах по 2). Первое целое число в паре - это значение Unicode для символа, а второе целое число - сумма, которую нужно добавить к значению сдвига этого символа (может быть положительным или отрицательным), если он предшествует символу данного глифа.
-

ПРИМЕЧАНИЕ Для файловых шрифтов, загружаемых во время выполнения, значения x и y для глифа могут быть равны -1, если он еще не был отрисован, поскольку у него не будет позиции на странице текстуры, используемой для кэширования.

-

-

Синтаксис:

-

font_get_info(font);

- - - - - - - - - - - - - -
АргументТипОписание
fontШрифтовой активThe font for which information should be retrieved.
-

-

Возвращается:

-

Font Info Struct (or undefined)

-

-

Пример:

-

var _info = font_get_info(my_font);
-
- if (_info != undefined && _info.bold)
- {
-     image_xscale *= 2;
-     image_yscale *= 2;
- } -

-

Этот код извлекает информацию о шрифте, хранящемся в переменной my_font. Если возвращаемое значение не undefined и заданный шрифт является полужирным, масштаб экземпляра удваивается.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_italic.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_italic.htm index f163d2d0d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_italic.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_italic.htm @@ -1,64 +0,0 @@ - - - - - - font_get_italic - - - - - - - - - - - -

font_get_italic

-

С помощью этой функции можно проверить любой актив шрифта на наличие или отсутствие в нем флага курсива. Если да, то функция вернет true, в противном случае - false.

-

-

Синтаксис:

-

font_get_italic(ind);

- - - - - - - - - - - -
АргументТипОписание
indIndex of the font to check.
-

-

Возвращается:

-

-

-

Пример:

-

if font_get_italic(fnt_Main)
- {
-     draw_set_font(fnt_Main);
- }

-

Это позволит установить активный шрифт рисунка на fnt_Main, если в свойствах шрифта он установлен как курсив.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_last.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_last.htm index e41d8151a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_last.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_last.htm @@ -1,63 +0,0 @@ - - - - - - font_get_last - - - - - - - - - - - -

font_get_last

-

При определении шрифта в GameMaker вы можете задать диапазон символов, которые будут включены в него. Это связано с тем, что сам шрифт не включается в игру (по юридическим причинам), но его изображение - шрифта включено в страницу текстуры, и именно его будет использовать ваша игра (как и любой другой графический ресурс). Это означает, что вы захотите свести количество символов, которые вы используете, к минимуму и указать только тот диапазон символов, который - чтобы максимально оптимизировать память текстуры. Эта функция может быть использована для поиска последнего символа (в виде значения UTF8), который был использован при добавлении актива шрифта в игру.

-

-

Синтаксис:

-

font_get_last(ind);

- - - - - - - - - - - -
АргументТипОписание
indIndex of the font to check.
-

-

Возвращается:

-

-

-

Пример:

-

num = font_get_last(fnt_Main);

-

Приведенный выше код сохранит значение ASCII последней буквы диапазона шрифта для шрифта, индексированного в "fnt_Main".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_name.htm index 01c86f2f1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_name.htm @@ -1,63 +0,0 @@ - - - - - - font_get_name - - - - - - - - - - - -

font_get_name

-

С помощью этой функции можно получить имя (в виде строки), которое было присвоено шрифту при его добавлении в качестве актива в GameMaker Asset Browser. Обратите внимание, что это только - и не может быть использовано для прямого обращения к шрифту - для этого вам понадобится индекс шрифта. Однако вы можете использовать эту строку для получения индекса шрифта, используя возвращаемую строку вместе с функцией - функция asset_get_index().

-

-

Синтаксис:

-

font_get_name(ind);

- - - - - - - - - - - -
АргументТипОписание
indIndex of the font to check.
-

-

Возвращается:

-

-

-

Пример:

-

fnt_Name = font_get_name(font0);

-

Приведенный выше код получит имя ресурса шрифта, как оно отображается в Asset Browser, и сохранит его в виде строки в переменной "fnt_Name".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_size.htm index 51d3a792e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_size.htm @@ -1,61 +0,0 @@ - - - - - - font_get_size - - - - - - - - - - - -

font_get_size

-

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

-

-

Синтаксис:

-

font_get_size(ind);

- - - - - - - - - - - -
АргументТипОписание
indIndex of the font to get the size of.
-

-

Возвращается:

-

-

-

Пример:

-

sz = font_get_size(font0);

-

Это позволит получить размер шрифта, индексируемого переменной "font0", и сохранить его в переменной "sz".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_texture.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_texture.htm index 5228fc926..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_texture.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_texture.htm @@ -1,65 +0,0 @@ - - - - - - font_get_texture - - - - - - - - - - - -

font_get_texture

-

Эта функция возвращает специальный указатель на страницу текстуры шрифта. Это значение может быть использовано в других функциях рисования, в частности, в общем рисовании при использовании примитивов, а также в функциях шейдера. Более подробную информацию о возвращаемой странице текстуры можно получить с помощью различных функций texture_, найденных здесь.

-
-

-

Синтаксис:

-

font_get_texture(font);

-

- - - - - - - - - - - - - -
АргументТипОписание
fontШрифтовой активThe index of the font to use.
-

-

Возвращается:

-

Texture

-

-

Пример:

-

tex = font_get_texture(fnt_Main);

-

Приведенный выше код получит указатель текстуры для шрифта, индексированного как "fnt_Main".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_uvs.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_uvs.htm index 66c94f8e9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_uvs.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_get_uvs.htm @@ -1,68 +0,0 @@ - - - - - - font_get_uvs - - - - - - - - - - - -

font_get_uvs

-

Эта функция возвращает массив с UV-координатами для текстуры шрифта на странице текстуры, заполняя массив следующими значениями:

-
    -
  • [0] = левый
  • -
  • [1] = верх
  • -
  • [2] = право
  • -
  • [3] = низ
  • -
-

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

-

-

Синтаксис:

-

font_get_uvs(font);

- - - - - - - - - - - -
АргументТипОписание
fontThe index of the font to use.
-

-

Возвращается:

-

-

-

Пример:

-

var tex = font_get_uvs(fnt_Main);
tex_left = tex[0];
tex_top = tex[1];
tex_right = tex[2];
tex_left = tex[3];

-

Приведенный выше код будет хранить УФ-координаты для заданного фона в локальном массиве, а затем присваивать значения переменным экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_replace.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_replace.htm index fa5c701a2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_replace.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_replace.htm @@ -1,204 +0,0 @@ - - - - - - font_replace - - - - - - - - - - -

font_replace

-

Эта функция может быть использована для замены шрифта в вашей игре из тех шрифтов, которые установлены на системе, на которой она запущена. Обратите внимание, что заменяемый шрифт не может быть шрифтом из браузера активов, а должен быть шрифтом, который был добавлен ранее с помощью функции font_add().

-

При замене шрифта таким образом можно задать размер шрифта (в пунктах), а также то, должен ли шрифт быть полужирным или курсивным, а также определить диапазон символов, которые необходимо включить. Если функция не сработает, то она завершится молча, и заданный шрифт не будет заменен.

-

Для целевого модуля HTML5 эта функция может использоваться только для замены веб-шрифтов и будет работать только в том случае, если WebGL не включен - если WebGL включен, необходимо использовать общий ресурс шрифта (т.е. использовать draw_set_font() вместе со шрифтом из Asset Browser) или растровые шрифты (см. font_add_sprite()).

-

ВАЖНО При использовании HTML5 курсив и полужирный текст поддерживаются только в том случае, если в шрифтовой актив или сам веб-шрифт включены эти символы. Они не будут синтезированы из базового шрифта.

-

В следующей таблице приведены шрифты, которые являются стандартными для всех браузеров и должны быть доступны для использования без проблем. Любой другой шрифт может существовать или не существовать на компьютере или устройстве, на котором запущена ваша игра, поэтому использование этой функции должно быть ограничено этими стандартными шрифтами:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Имя шрифта WindowsИмя шрифта MacСемейство шрифтов
ArialArial / Helveticasans-serif
Arial BlackArial Black / Gadgetsans-serif
Comic Sans MSComic Sans MSскоропись
Курьерская новинкаКурьерская новинкамоношрифт
ГрузияГрузиязасечка
ВлияниеУдар / Древесный угольsans-serif
Консоль LucidaМонакомоношрифт
Lucida Sans UnicodeLucida Grandesans-serif
Palatino Linotype / Book AntiquaПалатинозасечка
TahomaЖеневаsans-serif
Times New RomanTimes New Roman / Timesзасечка
Требушет МСТребушет МСsans-serif
VerdanaВердана / Женеваsans-serif
ГрузияГрузиязасечка
СимволСимволН/Д
WebdingsWebdingsН/Д
WingdingsZapf DingbatsН/Д
MS Sans SerifЖеневаsans-serif
MS SerifНью-Йоркsans-serif
-

На всех других (не веб-) объектах вы можете использовать эту функцию для замены шрифта из файла. Файл должен быть включен в пакет игры с помощью функции Included Files программы GameMaker и должен представлять собой файл шрифта формата *.ttf или *.otf, что удобно для добавления нестандартных шрифтов, например, азиатских или арабских.

-

СОВЕТ Если вы включаете такой файл шрифта в игру, убедитесь, что он должным образом лицензирован для распространения вместе с игрой.

-

При загрузке шрифта из файла таким способом размер шрифта указывается в пикселях, а первое и последнее значения игнорируются, то есть все глифы шрифта будут добавлены. Шрифты, добавленные таким образом, назначаются на свою собственную страницу текстуры, поэтому при использовании этой функции следует соблюдать осторожность, так как это увеличит количество смен текстуры при рисовании. Также стоит отметить, что шрифты могут выглядеть немного больше при отрисовке, так как глифы могут иметь части, которые рисуются за пределами ограничительной рамки, определенной для шрифта. Также следует помнить, что существует ограничение на 200 глифов, которые могут быть отрисованы в одном кадре для определенного шрифта.

-

ПРИМЕЧАНИЕ Когда вы загружаете шрифт в GameMaker, вы должны не забыть удалить его снова (с помощью кнопки font_delete()), если он больше не нужен, иначе есть риск утечки памяти, что приведет к замедлению и, в конечном итоге, к краху вашей игры.

-

-

Синтаксис:

-

font_replace(ind, name, size, bold, italic, first, last);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indШрифтовой активThe index of the (previously added) font to be replaced.
nameСтрокаThe name of the font to be used (eg 'Arial'), or the file path if the font is an included *.ttf или *.otf файл.
sizeРеальноThe size of the font - points for Web Fonts, pixels for file fonts.
boldБулевоWhether the font is bold (true) or not (false).
italicsБулевоWhether the font is italic (true) or not (false).
firstРеальноThe first character to include (if you're unsure, go for 32).
lastРеальноThe last character to include (if you're unsure, go for 128).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

font_replace(myfont, "Arial", 24, true, true, 32, 128);

-

Это заменит шрифт, указанный в переменной "myfont", на новый шрифт размером 24pt, использующий шрифт "Arial", полужирный и курсивный. Шрифт включает заглавные и строчные буквы, цифры и всю обычную пунктуацию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_replace_sprite.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_replace_sprite.htm index 32a7686bc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_replace_sprite.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_replace_sprite.htm @@ -1,85 +0,0 @@ - - - - - - font_replace_sprite - - - - - - - - - - -

font_replace_sprite

-

С помощью этой функции вы можете использовать "спрайтовую полосу" для замены ранее созданного актива шрифта sprite, где каждое подизображение будет отдельным символом или буквой. Индекс - это номер карты UTF8 для первого используемого символа, а диапазоны для использования такие же, как и для обычного шрифта, начиная с "!", но помните, что вы должны включать только то, что вам нужно, и что вы должны использовать функцию ord() для получения правильного значения UTF8 для начальной буквы.

-

Вы также можете задать пропорциональный (true) или непропорциональный (false) интервал для шрифта, при этом пропорциональный шрифт использует фактическую ширину букв (например, буква "i" занимает меньше места, чем буква "w"), а непропорциональный - ширину подрисуночного изображения, как моноширинный шрифт. Наконец, вы можете определить пространство, которое нужно оставить между каждой буквой при написании, и это может быть любое целое значение, при этом 0 означает отсутствие пространства (при пропорциональном шрифте буквы будут "соприкасаться").

-

Если функция завершится неудачно, то она завершится молча, не заменив заданный шрифт sprite.

-

Следует также отметить, что в карте символов не может быть пробелов, поэтому, если вы, например, используете '.' и '0', но не '/', вам необходимо либо включить '/' в любом случае, либо оставить пустое подизображение между двумя используемыми символами. На рисунке ниже показана типичная схема шрифта sprite:

-

-

Синтаксис:

-

font_replace_sprite(ind, spr, first, prop, sep);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indШрифтовой активThe index of the font that shall be replaced (ie all references to this resource past this function will refer to the new font, not the original).
sprАктив спрайтаThe sprite to add a font based on.
firstРеальноThe index of the first available character.
propБулевоWhether white space around each letter should be removed (if false, the created font will be monospaced, otherwise it'll be like most regular fonts).
sepРеальноThe space between each letter, 0 meaning the right of one letter just touches the left of the next one.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

font_replace_sprite(global.Font, working_directory + "Sprites\spr_Font.png", ord("!"), true, 2);

-

Приведенный выше код заменит актив шрифта, указанный в глобальной переменной "Font", на новый актив шрифта из внешнего файла изображения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_replace_sprite_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_replace_sprite_ext.htm index 14755e112..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_replace_sprite_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_replace_sprite_ext.htm @@ -1,85 +0,0 @@ - - - - - - font_replace_sprite_ext - - - - - - - - - - -

font_replace_sprite_ext

-

Эта функция заменит шрифт sprite, который вы создали ранее с помощью функции font_add_sprite_ext(). Она использует "спрайтовую полосу", где каждое подизображение является отдельным символом или буквой, а изображения отображаются на буквы на основе аргумента "string_map" функции. Этот аргумент представляет собой строку, с помощью которой вы можете указать GameMaker, в каком порядке расположены суб-изображения шрифта sprite, и он будет автоматически сопоставлять их при написании текста. Так, например, если у вас есть string-map "AaBbCcDdEeFfGgHh", то ваш шрифт sprite должен иметь суб-изображения, упорядоченные таким образом.

-

Вы также можете задать пропорциональный (true) или непропорциональный (false) интервал для шрифта, при этом пропорциональный шрифт использует фактическую ширину букв (например, буква "i" занимает меньше места, чем буква "w"), а непропорциональный - ширину подрисуночного изображения, как моноширинный шрифт. Наконец, вы можете определить пространство, которое нужно оставить между каждой буквой при написании, и это может быть любое целое значение, при этом 0 означает отсутствие пространства (буквы будут "соприкасаться", если шрифт пропорциональный). Функция возвращает значение индекса, которое следует сохранить в переменной, так как оно понадобится во всех дальнейших кодах, которые будут ссылаться на этот шрифт.

-

Если функция завершится неудачно, то она завершится молча, не заменив заданный шрифт sprite.

-

ПРИМЕЧАНИЕ Эта функция требует, чтобы вы предварительно добавили шрифт sprite с помощью функции font_add_sprite(), так как она заменит его и не может быть использована для шрифтов, включенных в ресурсы игры.

-

-

Синтаксис:

-

font_replace_sprite_ext(font, spr, string_map, prop, sep);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
fontШрифтовой активThe font to replace.
sprАктив спрайтаThe sprite to add a font based on.
string_mapСтрокаString from which sprite sub-image order is taken.
propБулевоSet as proportional font or not.
sepРеальноThe space to leave between each letter.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

font_replace_sprite_ext(global.Font, spr_CalcFont, "0123456789+-*/=", true, 2);

-

Приведенный выше код заменит актив шрифта sprite, который индексируется в переменной "global.Font", на изображения sprite, индексируемые в переменной "spr_CalcFont".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_set_cache_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_set_cache_size.htm index 0305081d8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_set_cache_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_set_cache_size.htm @@ -1,67 +0,0 @@ - - - - - - font_set_cache_size - - - - - - - - - - -

font_set_cache_size

-

При выполнении смешивания и раскрашивания изображений HTML5 не может делать это динамически так же, как это может делать исполняемый файл. Поэтому GameMaker должен временно сохранять копию смешивания изображений и загружать ее при необходимости. - и загружать их, когда это необходимо. Эта функция устанавливает, сколько смешанных копий данного шрифта можно кэшировать, прежде чем старые копии будут перезаписаны. Значение по умолчанию равно 4.

-

ПРИМЕЧАНИЕ для шрифтов sprite следует использовать эквивалентную функцию для sprites, sprite_set_cache_size().

-

-

Синтаксис:

-

font_set_cache_size(ind, max);

-

- - - - - - - - - - - - - - - -
АргументТипОписание
indThe index of the font to change the cache size of.
maxThe maximum number of cached copies of the font that can be stored.
-

-

Возвращается:

-

-

-

Пример:

-

font_set_cache_size(fnt_MainMenu, 2);

-

Это установит кэш шрифта, индексированного в переменной "fnt_MainMenu", в 2 копии.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_texture_page_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_texture_page_size.htm index b7cce24c6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_texture_page_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Fonts/font_texture_page_size.htm @@ -1,55 +0,0 @@ - - - - - - font_texture_page_size - - - - - - - - - - -

font_texture_page_size

-

Эта встроенная переменная может быть использована для получения или установки размера страницы текстуры при использовании функции font_add(). При добавлении шрифта с помощью этой функции GameMaker создаст кэш текстурной страницы с необходимыми глифами до размера, определенного этой переменной. Процесс происходит следующим образом:

-
    -
  • Каждый используемый символ кэшируется из шрифта в текстурную страницу.
  • -
  • Когда страница текстур заполнена (потому что вы используете больших персонажей или много разных персонажей), GameMaker будет удалять персонажей из кэша и заменять их новыми, нужными вам.
  • -
  • GameMaker старается не делать текстуру слишком большой, потому что не все устройства могут справиться с большими текстурами, и не делать текстуру слишком маленькой, потому что удаление и повторное добавление символов в текстуру занимает процессорное время и приводит к медленному запуску игры.
  • -
-

Если вы считаете, что вам нужен больший или меньший размер текстурной страницы, чем 1024px, используемый GameMaker по умолчанию, вы можете установить значение с помощью этой встроенной переменной. Если вы не используете функцию font_add(), то установка этого значения не повлияет на производительность вашей игры, так как шрифты, добавленные в IDE, кэшируются на обычных текстурных страницах (что можно контролировать в редакторе шрифтов и в опциях игры для целевой платформы).

-

-

Синтаксис:

-

font_texture_page_size

-

-

Возвращается:

-

Real (maximum width/height in pixels)

-

-

Пример:

-

font_texture_page_size = 512;
- newfont = font_add("Arial", 24, true, true, 32, 128);

-

Приведенный выше код устанавливает для страницы текстуры кэша шрифтов максимальный размер 512px, а затем добавляет новый шрифт в игру.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/Deactivating_Instances.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/Deactivating_Instances.htm index afb79601f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/Deactivating_Instances.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/Deactivating_Instances.htm @@ -1,55 +0,0 @@ - - - - - - Деактивация экземпляров - - - - - - - - - - -

Деактивация экземпляров

-

GameMaker предлагает вам возможность "отключать" экземпляры, чтобы они больше не обрабатывались никаким образом. Технически они больше не существуют, кроме как в качестве указателя в самом процессе деактивации, что означает, что деактивированным экземпляром нельзя манипулировать или изменять каким-либо образом, пока он не будет снова активирован. Поэтому эти функции следует использовать с большой осторожностью, так как при неправильном использовании они могут вызвать проблемы, особенно с постоянными объектами, поскольку постоянный объект, который был деактивирован, не будет перемещен в следующую комнату, пока его не активируют снова (фактически удаляя его из игры). Обратите внимание, что активация и деактивация не являются мгновенными, и экземпляр, состояние которого было изменено таким образом, не будет считаться активным/неактивным до окончания события, в котором была вызвана функция.

-

Обычно нет необходимости деактивировать экземпляры на каждом шаге игры, это может привести к проблемам с производительностью. Вместо этого рекомендуется запускать эти функции только каждые несколько шагов в тревоге (например, если вид камеры изменил положение), и особенно важно не использовать эти функции в событии рисования, так как это может привести к серьезным ошибкам в игре.

-

Деактивированный экземпляр фактически перестает существовать в игре, но отдельные экземпляры все еще могут иметь доступ к своим переменным. Однако вы не можете использовать with(object) или with(instance), а должны обращаться к экземпляру напрямую, используя его уникальный ID в следующей форме:

-

val = inst.variable;

-

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

-

ПРИМЕЧАНИЕ Если вы деактивируете экземпляр при запуске комнаты (т.е. из кода создания комнаты или из события создания экземпляра в комнате), все экземпляры, размещенные в комнате из редактора комнат, будут выполнять свое событие создания до деактивации.

-

ПРЕДУПРЕЖДЕНИЕ: Деактивация экземпляров с включенной физикой НЕ остановит взаимодействие их светильников в рамках физической симуляции. Для этого необходимо установить переменную phy_active на true или false при активации/деактивации экземпляров.

-

Для деактивации экземпляров существуют следующие функции:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_activate_all.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_activate_all.htm index c0178b653..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_activate_all.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_activate_all.htm @@ -1,51 +0,0 @@ - - - - - - instance_activate_all - - - - - - - - - - - -

instance_activate_all

-

С помощью этой функции вы можете указать программе GameMaker активировать все экземпляры, которые ранее были деактивированы в комнате. Обратите внимание, что активация не является мгновенной, и экземпляр, активированный таким образом, не будет считаться - активным до окончания события, в котором была вызвана функция.

-

-

Синтаксис:

-

instance_activate_all();

-

-

Возвращается:

-

-

-

Пример:

-

instance_activate_all();
var _vx = camera_get_view_x(view_camera[0]);
var _vy = camera_get_view_y(view_camera[0]);
var _vw = camera_get_view_width(view_camera[0]);
var _vh = camera_get_view_height(view_camera[0]);
instance_deactivate_region(_vx - - 64, _vy - 64, _vw + 128, _vh + 128, false, false);

-

Приведенный выше код активирует все экземпляры в пределах комнаты, а затем деактивирует те, которые на 64px выходят за пределы текущего обзора камеры.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_activate_layer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_activate_layer.htm index d79f8c5d3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_activate_layer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_activate_layer.htm @@ -1,66 +0,0 @@ - - - - - - instance_activate_layer - - - - - - - - - - - -

instance_activate_layer

-

С помощью этой функции можно активировать слой, который ранее был деактивирован. Вам необходимо указать ID слоя, который может быть либо именем слоя, записанным в редакторе кода (в виде строки), либо фактическим значением ID слоя, возвращаемым функцией layer_create() и все деактивированные экземпляры на этом слое снова активируются. Обратите внимание, что если вы деактивировали слой, в котором есть постоянные экземпляры, то перед сменой комнаты вам нужно будет снова активировать слой с помощью этой функции, иначе все постоянные экземпляры не будут перенесены и будут отброшены. Обратите также внимание, что активация не является мгновенной, и экземпляр, активированный таким образом, не будет считаться активным до окончания события, в котором была вызвана функция.

-

-

Синтаксис:

-

instance_activate_layer(layer_id);

- - - - - - - - - - - - - -
АргументТипОписание
layer_idИдентификатор слоя или строкаThe layer name string (or ID value) to be used
-

-

Возвращается:

-

N/A

-

-

Пример:

-

instance_activate_all();
- var _vx = camera_get_view_x(view_camera[0]);
- var _vy = camera_get_view_y(view_camera[0]);
- instance_deactivate_region(view_xview[0] - 64, view_yview - 64, _vx + 128, _vy + 128, false, false);
- instance_activate_layer("Player_Layer");

-

Приведенный выше код активирует все экземпляры в пределах комнаты, а затем деактивирует те, которые находятся за пределами текущего обзора камеры, за исключением экземпляров на слое "Player_Layer", которые снова активируются в конце.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_activate_object.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_activate_object.htm index 2dc1db00d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_activate_object.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_activate_object.htm @@ -1,65 +0,0 @@ - - - - - - instance_activate_object - - - - - - - - - - - -

instance_activate_object

-

С помощью этой функции вы можете активировать один экземпляр или все экземпляры определенного объекта из тех, которые были деактивированы ранее. Обратите внимание, что если вы деактивировали экземпляр или объект, который был помечен как постоянный, то - вам нужно будет снова активировать его с помощью этой функции перед сменой комнаты, иначе он не будет перенесен и будет отброшен. Обратите внимание, что активация не является мгновенной, и экземпляр, который был активирован таким образом, не будет считаться активным. - не будет считаться активным до окончания события, в котором была вызвана эта функция.

-

-

Синтаксис:

-

instance_activate_object(obj);

- - - - - - - - - - - -
АргументТипОписание
objThe object or instance to activate (the keyword all can also be used).
-

-

Возвращается:

-

-

-

Пример:

-

instance_activate_all();
var _vx = camera_get_view_x(view_camera[0]);
var _vy = camera_get_view_y(view_camera[0]);
var _vw = camera_get_view_width(view_camera[0]);
var _vh = camera_get_view_height(view_camera[0]);
instance_deactivate_region(_vx - - 64, _vy - 64, _vw + 128, _vh + 128, false, false);
instance_activate_object(obj_Lights); -

-

Приведенный выше код активирует все объекты в пределах комнаты, а затем деактивирует те, которые находятся за пределами текущего обзора камеры, за исключением объекта "obj_Lights", который снова активируется в конце.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_activate_region.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_activate_region.htm index 3044c1823..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_activate_region.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_activate_region.htm @@ -1,94 +0,0 @@ - - - - - - instance_activate_region - - - - - - - - - - - -

instance_activate_region

-

С помощью этой функции можно определить область в помещении для активации экземпляров, которые ранее были деактивированы. Эта область может быть помечена как "внутри" или "снаружи", как показано на следующем изображении:

-

На изображении выше видно, что экземпляр "яблоко" всегда активен, потому что, даже если сам sprite не перекрывает регион, ограничивающая рамка перекрывает его. Таким образом, экземпляры считаются находящимися в указанном регионе, когда их ограничительная область перекрывает его, а состояние маски столкновений (точное или нет) не учитывается. Обратите внимание, что активация не является мгновенной, и экземпляр, активированный таким образом, не будет считаться активным до окончания события, в котором была вызвана функция.

-

-

Синтаксис:

-

instance_activate_region(left, top, width, height, inside);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
leftРеальноThe x coordinate of the left of the rectangular region to activate.
topРеальноThe y coordinate of the top of the rectangular region to activate.
widthРеальноThe width of the region to activate.
heightРеальноThe height of the region to activate.
insideБулевоWhether to activate instances on the inside of the region (true) or the outside (false).
collision_spaceCollision Space  The collision space where instances will be activated
-

-

Возвращается:

-

N/A

-

-

Пример:

-

instance_deactivate_all(true);
- var _vx = camera_get_view_x(view_camera[0]);
- var _vy = camera_get_view_y(view_camera[0]);
- var _vw = camera_get_view_width(view_camera[0]);
- var _vh = camera_get_view_height(view_camera[0]);
- instance_activate_region(_vx - 64, _vy - 64, _vw + 128, _vh + 128, false);

-

Приведенный выше код деактивирует все экземпляры, кроме того, который выполняет код, а затем активирует регион в комнате.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_deactivate_all.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_deactivate_all.htm index 6d8c16ef3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_deactivate_all.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_deactivate_all.htm @@ -1,75 +0,0 @@ - - - - - - instance_deactivate_all - - - - - - - - - - - -

instance_deactivate_all

-

Эта функция деактивирует все экземпляры, находящиеся в комнате в момент выполнения кода. Это может включать экземпляр, выполняющий код, если флаг "notme" установлен в false, но обычно вы хотите, чтобы этот экземпляр был активен, в этом случае флаг "notme" должен быть установлен в true. Обратите внимание, что деактивация не является мгновенной, и экземпляр, деактивированный таким образом, не будет считаться неактивным до окончания события, в котором была вызвана функция.

-

ПРИМЕЧАНИЕ: Если вы деактивируете экземпляр при запуске комнаты (т.е. из кода создания комнаты или из события создания экземпляра в комнате), то все экземпляры, размещенные в комнате из редактора комнат, будут выполнять свое событие создания до деактивации.

-

ПРЕДУПРЕЖДЕНИЕ: Деактивация экземпляров, у которых включена физика, НЕ остановит взаимодействие их светильников в рамках физической симуляции. Для этого необходимо установить их phy_active true или false при активации/деактивации экземпляров.

-

-

Синтаксис:

-

instance_deactivate_all(notme);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
notmeБулевоWhether to keep the calling instance activated (true) or not (false).
collision_spaceCollision Space  The collision space where instances will be deactivated
-

-

Возвращается:

-

N/A

-

-

Пример:

-

instance_deactivate_all(true);
- var _vx = camera_get_view_x(view_camera[0]);
- var _vy = camera_get_view_y(view_camera[0]);
- var _vw = camera_get_view_width(view_camera[0]);
- var _vh = camera_get_view_height(view_camera[0]);
- instance_activate_region(_vx - 64, _vy - 64, _vw + 128, _vh + 128, false);

-

Приведенный выше код деактивирует все экземпляры, кроме того, который выполняет код, а затем активирует регион в комнате.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_deactivate_layer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_deactivate_layer.htm index c6156c4db..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_deactivate_layer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_deactivate_layer.htm @@ -1,70 +0,0 @@ - - - - - - instance_deactivate_layer - - - - - - - - - - - -

instance_deactivate_layer

-

С помощью этой функции можно деактивировать все экземпляры, назначенные определенному слою. Вам необходимо указать ID слоя, который может быть либо именем слоя, записанным в редакторе кода (в виде строки), либо фактическим значением ID слоя, возвращаемым функцией layer_create(), и обратите внимание, что с помощью этой функции можно деактивировать только слои экземпляра. Обратите внимание, что если вы деактивировали слой, экземпляры объектов которого помечены как постоянные, то вам необходимо снова активировать слой с помощью функции instance_activate_layer() перед сменой комнаты, иначе все постоянные экземпляры на слое не будут перенесены и будут отброшены. Обратите внимание, что деактивация не является мгновенной, и экземпляр, деактивированный таким образом, не будет считаться неактивным до окончания события, в котором была вызвана функция.

-

ПРИМЕЧАНИЕ: Если вы деактивируете экземпляр при запуске комнаты (т.е. из кода создания комнаты или из события создания экземпляра в комнате), то все экземпляры, размещенные в комнате из редактора комнат, будут выполнять свое событие создания до деактивации.

-

ПРЕДУПРЕЖДЕНИЕ: Деактивация экземпляров, у которых включена физика, НЕ остановит взаимодействие их светильников в рамках физической симуляции. Для этого необходимо установить их phy_active true или false при активации/деактивации экземпляров.

-

-

Синтаксис:

-

instance_deactivate_layer(obj);

- - - - - - - - - - - - - -
АргументТипОписание
layerИдентификатор слоя или строкаThe layer name string (or ID value) to be used
-

-

Возвращается:

-

N/A

-

-

Пример:

-

instance_deactivate_layer("Enemy Layer");
- var _vx = camera_get_view_x(view_camera[0]);
- var _vy = camera_get_view_y(view_camera[0]);
- var _vw = camera_get_view_width(view_camera[0]);
- var _vh = camera_get_view_height(view_camera[0]);
- instance_activate_region(_vx - 64, _vy - 64, _vw + 128, _vh + 128, false);

-

Приведенный выше код деактивирует все экземпляры, назначенные слою "Enemy_Layer", а затем активирует регион в комнате.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_deactivate_object.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_deactivate_object.htm index 907580552..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_deactivate_object.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_deactivate_object.htm @@ -1,66 +0,0 @@ - - - - - - instance_deactivate_object - - - - - - - - - - - -

instance_deactivate_object

-

С помощью этой функции вы можете деактивировать один экземпляр или все экземпляры определенного объекта из всех тех, которые были активированы ранее. Обратите внимание, что если вы деактивировали экземпляр или объект, который был помечен как постоянный, то - вам нужно будет снова активировать его с помощью функции instance_activate_object() перед сменой комнаты, иначе он не будет перенесен и будет отброшен. Обратите внимание, что деактивация - не является мгновенной, и экземпляр, деактивированный таким образом, не будет считаться неактивным до окончания события, в котором была вызвана функция.

-

ПРИМЕЧАНИЕ: Если вы деактивируете экземпляр при запуске комнаты (т.е. из кода создания комнаты или из события создания экземпляра в комнате), то все экземпляры, размещенные в комнате из редактора комнат, будут выполнять свое событие создания до деактивации.

-

ПРЕДУПРЕЖДЕНИЕ: Деактивация экземпляров, у которых включена физика, НЕ остановит взаимодействие их светильников в рамках физической симуляции. Для этого необходимо установить их phy_active переменная - true или false при активации/деактивации экземпляров.

-

-

Синтаксис:

-

instance_deactivate_object(obj);

- - - - - - - - - - - -
АргументТипОписание
objThe object or instance to deactivate (the keyword all can also be used).
-

-

Возвращается:

-

-

-

Пример:

-

instance_deactivate_object(obj_Enemy);
var _vx = camera_get_view_x(view_camera[0]);
var _vy = camera_get_view_y(view_camera[0]);
var _vw = camera_get_view_width(view_camera[0]);
var _vh = camera_get_view_height(view_camera[0]);
instance_activate_region(_vx - 64, _vy - 64, _vw + 128, _vh + 128, false);

-

Приведенный выше код деактивирует все экземпляры объекта "obj_Enemy", а затем активирует регион в комнате.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_deactivate_region.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_deactivate_region.htm index c791dba51..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_deactivate_region.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Deactivating_Instances/instance_deactivate_region.htm @@ -1,101 +0,0 @@ - - - - - - instance_deactivate_region - - - - - - - - - - - -

instance_deactivate_region

-

С помощью этой функции можно определить область в помещении для деактивации экземпляров, которые были ранее активированы. Эта область может быть помечена как "внутри" или "снаружи", как показано на следующем изображении:

-

На изображении выше видно, что экземпляр "яблоко" всегда неактивен, потому что, даже если сам sprite не перекрывает регион, ограничивающая рамка перекрывает. Таким образом, экземпляры считаются находящимися в указанном регионе, когда их ограничительная область перекрывает его, а состояние маски столкновений (точное или нет) не учитывается. Обратите внимание, что деактивация не является мгновенной, и экземпляр, деактивированный таким образом, не будет считаться неактивным до окончания события, в котором была вызвана функция.

-

ПРИМЕЧАНИЕ: Если вы деактивируете экземпляр при запуске комнаты (т.е. из кода создания комнаты или из события создания экземпляра в комнате), то все экземпляры, размещенные в комнате из редактора комнат, будут выполнять свое событие создания до деактивации.

-

ПРЕДУПРЕЖДЕНИЕ: Деактивация экземпляров, у которых включена физика, НЕ остановит взаимодействие их светильников в рамках физической симуляции. Для этого необходимо установить их phy_active true или false при активации/деактивации экземпляров.

-

-

Синтаксис:

-

instance_deactivate_region(left, top, width, height, inside, notme);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
leftРеальноThe x coordinate of the left of the rectangular region to deactivate.
topРеальноThe y coordinate of the top of the rectangular region to deactivate.
widthРеальноThe width of the region to deactivate.
heightРеальноThe height of the region to deactivate.
insideБулевоWhether to deactivate instances on the inside of the region (true) or the outside (false).
notmeБулевоWhether to exclude the calling instance from deactivation (true) or not (false).
collision_spaceCollision Space  The collision space where instances will be deactivated
-

-

Возвращается:

-

N/A

-

-

Пример:

-

instance_activate_all();
- var _vx = camera_get_view_x(view_camera[0]);
- var _vy = camera_get_view_y(view_camera[0]);
- var _vw = camera_get_view_width(view_camera[0]);
- var _vh = camera_get_view_height(view_camera[0]);
- instance_deactivate_region(_vx - 64, _vy - 64, _vw + 128, _vh + 128, false, false);

-

Приведенный выше код активирует все экземпляры, а затем деактивирует область внутри комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/Instance_Variables.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/Instance_Variables.htm index f862da66e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/Instance_Variables.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/Instance_Variables.htm @@ -1,139 +0,0 @@ - - - - - - Переменные экземпляра - - - - - - - - - - -

Переменные экземпляра

-

Когда вы создаете новый объект, он будет поставляться с определенными переменными, уже инициализированными значениями по умолчанию. Эти переменные мы называем переменными экземпляра, поскольку они будут создаваться для каждого экземпляра объекта, который вы размещаете в игровых комнатах, и после создания экземпляра значения этих переменных уникальны для этого и только этого экземпляра. Некоторые из этих переменных вы будете использовать часто, например, x и y, в то время как другие нужны меньше, в зависимости от того, что вы хотите сделать, но в целом они очень полезны, и по возможности вы должны использовать их, а не создавать свои собственные переменные.

-

Большинство переменных экземпляра можно как устанавливать, так и считывать, что позволяет изменять свойства и поведение экземпляра, просто изменяя значение определенной переменной. Например, вы можете запретить экземпляру рисовать, просто установив встроенную переменную visible в значение false. Ниже приведены различные переменные, которые инициализируются для всех экземпляров всех объектов в вашей игре.

-

ВАЖНО Если экземпляр находится в sequence то некоторые из этих переменных - например, image_xscale / image_yscale / image_angle / x / y - будут перезаписаны при обновлении последовательности на каждом шаге после начала воспроизведения.

-

-

-

Эти переменные относятся к общим свойствам экземпляра:

- -

-

-

Эти переменные связаны с положением и перемещением экземпляра:

- -

-

Свойства объекта

-

Следующая переменная содержит уникальный индексный идентификатор объекта, на основе которого был создан экземпляр:

- -

-

-

Все эти переменные связаны с sprite, назначенным экземпляру, и могут быть использованы для изменения того, что и как рисуется:

- -

-

-

Эти переменные относятся к маске столкновений:

- -

-

-

Эти переменные связаны с путями и тем, как экземпляр взаимодействует с одним из них, если он назначен:

- -

-

-

Эти переменные предназначены для настройки экземпляра на использование временной шкалы:

- -

-

Последовательности

-

Следующие переменные хранят информацию о Последовательности, которая может управлять экземпляром в любой момент времени:

- -

-

-

Существует огромное количество встроенных переменных для использования с физическими функциями GameMaker, и чтобы было понятнее, их можно найти в разделе руководства, где рассматривается все, что связано с физическим моделированием:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/alarm.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/alarm.htm index 0d5c60e20..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/alarm.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/alarm.htm @@ -1,60 +0,0 @@ - - - - - - alarm - - - - - - - - - - -

alarm

-

Этот одномерный массив используется для получения текущего значения для всех сигналов тревоги, которые могут быть у экземпляра, или для установки этих сигналов. В каждый экземпляр объекта встроено двенадцать сигналов тревоги, и у каждого из них есть свой собственный event которая сработает, когда эта переменная достигнет 0.

-

Сигналы тревоги отсчитываются в начале каждого шага, после события Begin Step, но до события Main Step, и до того, как что-либо будет отрисовано для данного кадра. Это означает, что если вы установите сигнал тревоги на 1 в событии Begin Step, его событие будет запущено в том же кадре (поскольку сигнал тревоги будет отсчитан до 0 после завершения Begin Step), но если вы установите сигнал тревоги на 1 в событии Step, он будет запущен в следующем кадре.

-

Следует отметить, что тревога не завершена, когда она достигает 0 (хотя событие сработало), так как на следующем шаге она снизится до -1, поэтому если вам нужно остановить тревогу по какой-либо причине, вы должны установить значение массива на -1 , а не на 0. Время тревоги рассчитывается в игровых шагах, при этом значение 30 - это 30 шагов, 60 - 60 шагов и т.д..

-

ПРИМЕЧАНИЕ Сигнал тревоги, в котором нет никаких действий или кода, не будет запущен. Однако даже при наличии только комментария и отсутствии кода сигнал тревоги будет отсчитывать время.

-

Вы можете установить массив сигналов тревоги напрямую (и получить текущее значение сигнала тревоги также напрямую, используя массив), но при некоторых обстоятельствах это не самый подходящий метод, поэтому вы также можете использовать функцию alarm_set() для установки сигнала тревоги и функцию alarm_get() для получения значения сигнала тревоги.

-

-

Синтаксис:

-

alarm[val];

-

-

Возвращается:

-

(-1 if the alarm isn't running)

-

-

Пример:

-

if canshoot
- {
-     if (keyboard_check_pressed(vk_space))
-     {
-         canshoot = false;
-         alarm[0] = room_speed;
-         instance_create_layer(x, y, "Bullets", obj_Bullet);
-     }
- }

-

Приведенный выше код проверяет переменную, затем, если она истинна, проверяет нажатие клавиши, и если она истинна, то в конце устанавливает переменную в false, устанавливает тревогу (где она снова будет установлена в true) и создает экземпляр.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/depth.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/depth.htm index 777a9cde3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/depth.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/depth.htm @@ -1,56 +0,0 @@ - - - - - - depth - - - - - - - - - - -

depth

-

При создании объекта вы можете присвоить ему начальную глубину, которая определяет, как экземпляры этого объекта будут отрисовываться в комнате во время игры. Эта переменная может использоваться для получения и изменения значения глубины во время игры. Обычно вам не нужно использовать эту переменную, так как вы должны устанавливать экземпляры для добавления в отдельные слои, которые в свою очередь устанавливаются на определенную глубину, но может случиться так, что вы захотите изменить глубину экземпляра с помощью этого значения, в этом случае будет создан "временный слой" специально для этого экземпляра на заданной глубине. Обратите внимание, что если ни один экземпляр не находится на той же глубине, то этот временный слой будет удален из памяти (в отличие от обычных слоев, которые остаются, даже если на них ничего нет).

-

ВАЖНО! Когда вы изменяете переменную depth и GameMaker управляет слоями, встроенная layer переменная вернет -1, а не идентификатор слоя, поскольку управляемыми слоями нельзя манипулировать с помощью кода.

-

В GameMaker чем меньше значение глубины для экземпляра, тем "ближе к камере" будет нарисован этот экземпляр, в то время как большее значение глубины означает, что экземпляр будет нарисован "дальше от камеры", то есть: -1000 рисуется поверх -100, который рисуется поверх 0, и так далее.

-

Обратите внимание, что экземпляры объекта, имеющие одинаковую глубину, могут быть нарисованы выше или ниже друг друга, даже если в редакторе помещений они расположены один на другом. Если вы хотите гарантировать, что что-то будет нарисовано над или под всем остальным, всегда задавайте глубину (или слой) явным образом. Также обратите внимание, что существует минимальное (-16000) и максимальное (+16000) значение глубины, за пределами которого экземпляры не будут отрисовываться, хотя они будут существовать и обрабатывать события.

-

ПРИМЕЧАНИЕ Вы не можете задать глубину экземпляра в событии Draw (все остальные события подходят).

-

Помните, что изменение глубины экземпляра может изменить применяемые к нему фильтры и эффекты, поскольку при изменении глубины на меньшую, чем глубина слоя FX, эффект больше не будет применяться к экземпляру.

-

-

Синтаксис:

-

depth

-

-

Возвращается:

-

Real (single precision floating point value)

-

-

Пример:

-

if y != yprevious
- {
-     depth = -y;
- }

-

Приведенный выше код проверит, изменилась ли позиция y, и если изменилась, то глубина также будет установлена в соответствии с ней.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/direction.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/direction.htm index fe0b9ee2f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/direction.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/direction.htm @@ -1,50 +0,0 @@ - - - - - - direction - - - - - - - - - - -

direction

-

Все экземпляры в GameMaker имеют определенные "встроенные" свойства, которые можно использовать и устанавливать для управления их внешним видом и поведением. Direction является одним из таких свойств и может быть использовано для установки направления движения экземпляра. - когда экземпляр имеет значение speed Обратите внимание, что направления в GameMaker обычно рассчитываются как 0° - вправо, 90° - вверх, 180° - влево и 270° - вниз. gravity и - gravity_direction могут изменять значение direction, когда они используются в ваших играх.

-

-

Синтаксис:

-

direction

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if keyboard_check(vk_left) direction += 5;
if keyboard_check(vk_right) direction -= 5;

-

Приведенный выше код будет изменять направление движения экземпляра в зависимости от того, какая клавиша (левая или правая) нажата.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/friction.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/friction.htm index dd8afe49b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/friction.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/friction.htm @@ -1,55 +0,0 @@ - - - - - - friction - - - - - - - - - - -

friction

-

Friction является одним из "встроенных" свойств, которые могут иметь экземпляры, и может использоваться для замедления работы экземпляра с течением времени, если параметр speed отлична от нуля. Оно работает просто, вычитая определенную величину из скорости на каждом шаге, пока скорость объекта не станет равной 0. Так, если трение установлено, например, на 0,1, а скорость экземпляра равна 1 (1 пиксель за шаг), он замедлится и остановится после 10 шагов. Обратите также внимание, что трение применяется к положительным и отрицательным скоростям одинаково, и в итоге через определенное время скорость объекта всегда будет равна 0.

-

-

Синтаксис:

-

friction

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if abs(speed) > 0
- {
-     friction = 0.05;
- }
- else
- {
-     friction = 0;
- }

-

Приведенный выше код будет применять трение, только если абсолютная скорость экземпляра больше 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/gravity.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/gravity.htm index 3386d85c1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/gravity.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/gravity.htm @@ -1,55 +0,0 @@ - - - - - - gravity - - - - - - - - - - -

gravity

-

gravity является одной из "встроенных" переменных, которые есть у всех экземпляров и, когда они установлены, прикладывают постоянную силу в gravity_direction экземпляра, влияя как на экземпляр speed , так и на direction. Обратите внимание, что гравитация является кумулятивной силой и будет ускорять объект, если вы решите не ограничивать конечную скорость, и обычно вы устанавливаете эту переменную на небольшие десятичные значения, например 0.01. Если вы установите gravity в 0, то гравитация не будет применяться к экземпляру (это значение по умолчанию).

-

-

Синтаксис:

-

gravity

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if !place_meeting(x, y + 1, obj_Ground)
- {
-     gravity = 0.01;
- }
- else
- {
-     gravity = 0;
- }

-

Приведенный выше код будет применять гравитацию, только если экземпляр не найдет под собой ни одного экземпляра "obj_Ground".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/gravity_direction.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/gravity_direction.htm index 6a170f98f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/gravity_direction.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/gravity_direction.htm @@ -1,51 +0,0 @@ - - - - - - gravity_direction - - - - - - - - - - -

gravity_direction

-

gravity_direction является одним из "встроенных" свойств всех экземпляров и может использоваться для задания направления движения, если значение экземпляра gravity Обратите внимание, что в GameMaker направления обычно рассчитываются как 0° - вправо, 90° - вверх, 180° - влево и 270° - вниз.

-

-

Синтаксис:

-

gravity_direction

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if place_meeting(x, y, obj_switch)
- {
-     gravity_direction += 180;
- }

-

Приведенный выше код изменит направление гравитации, если объект игрока встретит экземпляр "obj_switch".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/hspeed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/hspeed.htm index 71d9c083d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/hspeed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/hspeed.htm @@ -1,52 +0,0 @@ - - - - - - hspeed - - - - - - - - - - -

hspeed

-

hspeed - это одно из "встроенных" свойств, которым обладают все экземпляры. Оно определяет скорость горизонтального перемещения (вдоль оси x) экземпляра в пикселях за шаг. Так, hspeed, равный 3, означает движение на 3 пикселя вправо - (+x) на каждый шаг, а hspeed, равное -3, означает движение на 3 пикселя влево (-x) на каждый шаг.

-

Обратите внимание, что если вы установите переменные speed и/или direction, то значение hspeed будет обновлено автоматически, чтобы - и аналогично, изменение значения hspeed также повлияет на значения speed и direction. Также обратите внимание, что gravity, - gravity_direction и friction могут изменять значение этой переменной, когда они используются в ваших играх.

-

-

Синтаксис:

-

hspeed

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if keyboard_check(vk_left) hspeed = -5;
if keyboard_check(vk_right) hspeed = 5;

-

Приведенный выше код будет изменять горизонтальную скорость в зависимости от того, какие клавиши нажаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/id.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/id.htm index f6b61be49..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/id.htm @@ -1,56 +0,0 @@ - - - - - - id - - - - - - - - - - -

id

-

Эта переменная, доступная только для чтения, содержит уникальный идентификационный номер экземпляра. Каждому экземпляру, который вы создаете - будь то с помощью кода или путем добавления в комнату в редакторе комнат - присваивается номер, который используется для внутренней идентификации этого экземпляра, а переменная id - это то, что вы можете использовать для ссылки на него. Номер id также возвращается (и может быть сохранен в переменной) при создании экземпляра с помощью instance_create_layer() или instance_create_depth(), а также других функций экземпляра.

-

Теперь эта переменная является ссылкой на экземпляр, а не просто вещественным числом. Вы можете получить идентификационный номер экземпляра, вызвав real() или int64() на этой переменной.

-

ПРИМЕЧАНИЕ Значение этой переменной не совпадает с идентификатором, который присваивается экземпляру в редакторе помещений, а также отличается от массива instance_id массив, который содержит все идентификаторы всех активных в данный момент экземпляров.

-

-

Синтаксис:

-

id

-

-

Возвращается:

-

Instance ID

-

-

Пример:

-

for (var i = 0; i < instance_count; i++;)
- {
-     if (instance_id[i] != id)
-     {
-         instance_id[i].scr += 5;
-     }
- }

-

Приведенный выше код добавляет 5 к переменной "scr" для каждого активного экземпляра в комнате, кроме того, который выполняет код. Это происходит путем перебора ВСЕХ активных экземпляров (используя массив "instance_id" для возврата ID каждого активного экземпляра) и сравнения их с встроенной переменной "id", которая является ID исходного экземпляра, выполняющего код.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/layer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/layer.htm index a3ab9c2c9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/layer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/layer.htm @@ -1,49 +0,0 @@ - - - - - - layer - - - - - - - - - - -

layer

-

Эта встроенная переменная создается для каждого экземпляра в комнате и содержит значение ID слоя, к которому приписан данный экземпляр. Это значение затем может быть использовано в других функциях, таких как layer_get_depth() или его можно изменить, чтобы переместить экземпляр на другой слой, но учтите, что если назначаемый слой не существует в текущей комнате, то вы получите ошибку, которая заставит вашу игру закрыться. При назначении слоя вы должны указать уникальный идентификатор слоя, возвращаемый функцией layer_get_id() (при использовании именованных слоев комнаты), или как возвращается функцией layer_create() (когда вы создаете свои собственные слои во время выполнения).

-

ВАЖНО Если вы создали экземпляр с помощью функции instance_create_depth() или вручную изменили depth переменную, слой, назначенный данному экземпляру, становится "управляемым" слоем, то есть таким, который GameMaker контролирует и управляет автоматически. В этих случаях переменная layer вернет значение -1.

-

-

Синтаксис:

-

layer

-

-

Возвращается:

-

Layer ID

-

-

Пример:

-

layer = layer_create(-1000);

-

Приведенный выше код создаст новый слой с глубиной -1000, а затем установит переменную экземпляра layer в возвращаемый ID слоя, перемещая экземпляр со слоя, на котором он сейчас находится, на новый создаваемый слой.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/persistent.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/persistent.htm index 8f10e99a8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/persistent.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/persistent.htm @@ -1,53 +0,0 @@ - - - - - - persistent - - - - - - - - - - -

persistent

-

Эту переменную можно прочитать, чтобы узнать, помечен ли экземпляр как persistent или нет, или использовать ее для установки постоянства true (постоянный) или false (не постоянный) для данного экземпляра. Постоянный экземпляр - это экземпляр, который будет "переноситься" из комнаты в комнату, то есть (например) его нужно создать только один раз в начале игры, и он будет присутствовать во всех последующих комнатах. С постоянными экземплярами следует быть осторожными, так как их легко потерять, что может привести к проблемам на более поздних этапах разработки игры.

-

Когда вы создаете экземпляр с включенной персистентностью в комнате, эта переменная будет установлена в true, и ему будет назначен слой или глубина (в зависимости от того, какую функцию вы использовали для создания экземпляра объекта). При смене комнаты, если в следующей комнате нет слоя с тем же именем или глубиной, что и назначенный, то для экземпляра будет создан новый слой, сохраняющийся во всех комнатах. Если при создании экземпляра вы присвоили слою имя, то новый слой также будет называться так же, как и исходный слой, а если вы присвоили экземпляру глубину, то новый слой будет называться "_layer_XXX", где "XXX" - шестнадцатеричное значение, используемое для присвоения слою уникального имени. Эти слои будут удалены из комнаты при завершении работы комнаты. Еще один момент, связанный со слоями и постоянными экземплярами: если при создании экземпляра вы назначили ему слой с именем, а в следующих комнатах есть другой слой с тем же именем, то постоянный экземпляр будет назначен слою с тем же именем, независимо от глубины слоя. Наконец, если сохраняемый экземпляр перемещается в комнату со слоем на той же глубине, на которой он был создан, он не будет назначен этому слою, а вместо него будет создан новый слой на той же глубине (в соответствии с соглашением об именовании, описанным ранее).

-

У постоянного объекта по-прежнему будут срабатывать события Game Start, Game End, Room Start и Room End, однако если вы перезапустите игру (например, с помощью функции game_restart() ), все постоянные объекты будут удалены и будут существовать только тогда, когда будут созданы игрой заново. Также обратите внимание, что если вы деактивируете постоянный объект, он больше не будет переходить из одной комнаты в другую, если не будет повторно активирован до срабатывания события Room End.

-

-

Синтаксис:

-

persistent

-

-

Возвращается:

-

-

-

Пример:

-

if !persistent
- {
-     persistent = true;
- }

-

Приведенный выше код проверит экземпляр, чтобы убедиться, что постоянство отмечено как false, и если экземпляр НЕ постоянный, то флаг постоянства будет установлен в true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/solid.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/solid.htm index b51d6f346..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/solid.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/solid.htm @@ -1,52 +0,0 @@ - - - - - - solid - - - - - - - - - - -

solid

-

Экземпляр может быть помечен как твердый через свойства объекта в редакторе объектов или путем изменения значения этой встроенной переменной. Если solid имеет значение true, то при обнаружении столкновения столкнувшийся экземпляр автоматически возвращается в положение, в котором он находился на шаге, предшествующем столкновению (а затем любой код или действия выполняются в событии столкновения). Если установлено значение false, то все позиционирование должно выполняться через событие столкновения.

-

-

Синтаксис:

-

solid

-

-

Возвращается:

-

-

-

Пример:

-

if other.solid = true
- {
-     x = xprevious;
-     y = yprevious;
- }

-

Приведенный выше код проверит флаг solid у "другого" экземпляра при столкновении и, если он установлен на true, переместит этот экземпляр обратно в его предыдущую позицию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/speed.htm index 1fc2ccc70..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/speed.htm @@ -1,51 +0,0 @@ - - - - - - speed - - - - - - - - - - -

speed

-

Все экземпляры в GameMaker имеют определенные "встроенные" свойства, которые можно использовать и устанавливать для управления их внешним видом и поведением. speed является одним из таких свойств и определяет, на сколько пикселей экземпляр будет перемещаться каждый шаг. - В отличие от hspeed и vspeed, speed не имеет связанного с ним направления, так как это определяется direction значение экземпляра, но оно - может иметь отрицательное значение, в этом случае экземпляр будет перемещаться в направлении, противоположном тому, которое задано функцией direction (т.е.: direction - 180°). Обратите внимание, что установка speed и/или direction, - также изменит значения переменных hspeed и vspeed, и что gravity, gravity_direction и friction могут изменять значение этой переменной, когда они используются в ваших играх.

-

-

Синтаксис:

-

speed

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if keyboard_check(vk_up) speed = 2;
if keyboard_check(vk_left) direction += 5;
if keyboard_check(vk_right) direction -= 5;

-

Приведенный выше код будет использовать клавиши со стрелками для установки скорости и направления движения экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/visible.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/visible.htm index ac4b7056b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/visible.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/visible.htm @@ -1,52 +0,0 @@ - - - - - - visible - - - - - - - - - - -

visible

-

Экземпляр можно пометить как visible или нет, установив эту переменную в значение true (видимый) или false (невидимый). При этом GameMaker пропускает событие рисования для данного экземпляра, поэтому при использовании этого параметра следует соблюдать осторожность, так как это означает, что никакой код, помещенный в событие рисования, не будет выполнен, пока экземпляр не виден. Также обратите внимание, что если layer которому назначен экземпляр, помечен как невидимый, установка этой переменной в true не будет иметь никакого эффекта, пока сам слой не будет помечен как видимый.

-

-

Синтаксис:

-

visible

-

-

Возвращается:

-

-

-

Пример:

-

if other.visible = true
- {
-     x = xprevious;
-     y = yprevious;
- }

-

Приведенный выше код проверит флаг видимости экземпляра "другого" в событии столкновения и, если он установлен на true, переместит этот экземпляр на прежнее место.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/vspeed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/vspeed.htm index 6ac93c82a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/vspeed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/vspeed.htm @@ -1,52 +0,0 @@ - - - - - - vspeed - - - - - - - - - - -

vspeed

-

vspeed - это одно из "встроенных" свойств, которым обладают все экземпляры, и определяет скорость вертикального перемещения (вдоль оси y) экземпляра в пикселях за шаг. Так, значение vspeed, равное 3, означает движение на 3 пикселя вниз - (+y) каждый шаг, а vspeed -3 означает движение на 3 пикселя вверх (-y) каждый шаг.

-

Обратите внимание, что если вы установите переменные speed и/или direction, то значение vspeed будет обновлено автоматически, чтобы - и аналогично, изменение значения vspeed также повлияет на значения speed и direction. Также обратите внимание, что gravity, - gravity_direction и friction могут изменять значение этой переменной, когда они используются в ваших играх.

-

-

Синтаксис:

-

vspeed

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if keyboard_check(vk_up) vspeed = -5;
if keyboard_check(vk_down) vspeed = 5;

-

Приведенный выше код будет изменять вертикальную скорость в зависимости от того, какие клавиши нажаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/x.htm index a0c0ad466..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/x.htm @@ -1,51 +0,0 @@ - - - - - - x - - - - - - - - - - -

x

-

Значение x экземпляра - это горизонтальное положение в текущей комнате, измеряемое в пикселях. Это значение может быть 0, положительным или отрицательным, где 0 - это левая сторона комнаты, движение вправо увеличивает x, движение влево уменьшает x (отрицательное значение x означает, что экземпляр вышел за пределы левой стороны комнаты). - означает, что экземпляр вышел за пределы левой стороны комнаты). Можно даже задать x реальное значение, например 12,345, но поскольку вы не можете получить .345 пикселя, может оказаться, что экземпляр не переместился, хотя эти значения будут сохранены - и использоваться внутри GameMaker и являются совершенно правильными.

-

Задавая значения x (и y), вы можете заставить объект прыгать по комнате в нужную вам позицию, или вы можете прибавлять и отнимать к ним меньшие значения, чтобы создать иллюзию движения без использования встроенных функций speed и direction функции. Это следует учитывать при создании игр, так как часто один тип движения больше подходит для определенного стиля игры, чем другой.

-

-

Синтаксис:

-

x

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if keyboard_check(vk_left) x += 5;
if keyboard_check(vk_right) x -= 5;

-

Приведенный выше код будет использовать клавиши со стрелками для добавления или вычитания к позиции x и таким образом создавать иллюзию движения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/xprevious.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/xprevious.htm index 4020b82b6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/xprevious.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/xprevious.htm @@ -1,51 +0,0 @@ - - - - - - xprevious - - - - - - - - - - -

xprevious

-

Эта встроенная переменная возвращает предыдущую позицию x для данного экземпляра. Эта переменная будет установлена непосредственно перед началом события begin step, но она также может быть установлена через код в любое время, что означает, что вы можете дать ей свое собственное значение, если это необходимо.

-

-

Синтаксис:

-

xprevious

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if x != xprevious || y != yprevious
- {
-     moved = true;
- }

-

Приведенный выше код проверяет, есть ли разница между значениями xprevious и yprevious и текущими значениями x и y. Если есть, то устанавливается переменная true. Если есть, то переменная устанавливается в true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/xstart.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/xstart.htm index 3c490b1f1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/xstart.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/xstart.htm @@ -1,53 +0,0 @@ - - - - - - xstart - - - - - - - - - - -

xstart

-

Эта переменная хранит начальную x-позицию экземпляра при его первом создании в комнате. Это не переменная только для чтения, и ее можно как установить, так и прочитать.

-

-

Синтаксис:

-

xstart

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if place_meeting(x, y, obj_spike)
- {
-     score -= 100;
-     x = xstart;
-     y = ystart;
- }

-

Приведенный выше код проверит столкновение с экземпляром "obj_spike", и если оно есть, то вычтет 100 из счета и переместит экземпляр обратно в начальную позицию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/y.htm index 4da58e394..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/y.htm @@ -1,51 +0,0 @@ - - - - - - y - - - - - - - - - - -

y

-

Значение y экземпляра - это вертикальное положение в текущей комнате, измеряемое в пикселях. Это значение может быть либо 0, либо положительным, либо отрицательным, где 0 - это верхняя часть комнаты, движение вниз увеличивает y, движение вверх уменьшает y (отрицательное значение y означает, что - что экземпляр вышел за пределы верхней части комнаты). Вы можете даже задать y реальное значение, например 12,345, но поскольку вы не можете получить 0,345 пикселя, может показаться, что объект не переместился, хотя эти значения будут поддерживаться и использоваться внутри программы GameMaker и будут совершенно правильными. - GameMaker и являются вполне допустимыми.

-

Задавая значения y (и x), вы можете заставить объект прыгать по комнате в нужную вам позицию, или вы можете прибавлять и отнимать к ним меньшие значения, чтобы создать иллюзию движения без использования встроенных функций speed и direction функции. Это следует учитывать при создании игр, так как часто один тип движения больше подходит для определенного стиля игры, чем другой.

-

-

Синтаксис:

-

y

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if keyboard_check(vk_down) y += 5;
if keyboard_check(vk_up) y -= 5;

-

Приведенный выше код будет использовать клавиши со стрелками для добавления или вычитания к позиции y и таким образом создавать иллюзию движения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/yprevious.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/yprevious.htm index 0abee4bab..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/yprevious.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/yprevious.htm @@ -1,51 +0,0 @@ - - - - - - yprevious - - - - - - - - - - -

yprevious

-

Эта встроенная переменная возвращает предыдущую позицию y для данного экземпляра. Эта переменная будет установлена в текущее положение x непосредственно перед началом события begin step, но она также может быть установлена через код в любое время, что означает, что вы можете дать ей собственное значение, если это необходимо.

-

-

Синтаксис:

-

yprevious

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if x != xprevious || y != yprevious
- {
-     moved = true;
- }

-

Приведенный выше код проверяет, есть ли разница между значениями xprevious и yprevious и текущими значениями x и y. Если есть, то устанавливается переменная true. Если есть, то переменная устанавливается в true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/ystart.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/ystart.htm index 207354604..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/ystart.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instance_Variables/ystart.htm @@ -1,53 +0,0 @@ - - - - - - ystart - - - - - - - - - - -

ystart

-

Эта переменная хранит начальное положение y экземпляра при его первом создании в комнате. Это не переменная только для чтения, и ее можно как установить, так и прочитать.

-

-

Синтаксис:

-

ystart

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if place_meeting(x, y, obj_spike)
- {
-     score -= 100;
-     x = xstart;
-     y = ystart;
- }

-

Приведенный выше код проверит столкновение с экземпляром "obj_spike", и если оно есть, то вычтет 100 из счета и переместит экземпляр обратно в начальную позицию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instances.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instances.htm index c8e3110d1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instances.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/Instances.htm @@ -1,77 +0,0 @@ - - - - - - Экземпляры - - - - - - - - - - -

Экземпляры

-

Экземпляры создаются из объектов, и после создания их можно изменять и манипулировать ими с помощью кода GML и визуальных действий GML. Основными доступными и наиболее часто используемыми функциями, связанными с экземплярами, являются:

- -

-

Обратите внимание, что есть две дополнительные встроенные переменные (это переменные глобальной области видимости ) и одна функция, связанная с использованием экземпляров, которая может быть полезна для получения определенных деталей:

- -

-

Существует ряд встроенных переменных, доступных в каждом экземпляре объекта, которые можно использовать для управления различными аспектами отображения объекта, использования других активов, реакции на столкновения и т.д., которые перечислены здесь:

- -

-

Экземпляры имеют переменную массива, которая может быть использована для получения или установки значений тревожного события, но есть также две функции, которые могут быть использованы для того же самого:

- -

-

Наконец, у вас также есть возможность деактивировать экземпляры, что означает, что они не будут обрабатывать никаких своих событий, хотя они по-прежнему будут существовать в игре. Функции, связанные с этим, доступны на следующей странице:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/alarm_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/alarm_get.htm index 853c99698..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/alarm_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/alarm_get.htm @@ -1,66 +0,0 @@ - - - - - - alarm_get - - - - - - - - - - - -

alarm_get

-

Эта функция может быть использована для получения текущего значения заданного сигнала тревоги. Вы вводите номер сигнала тревоги от 0 до 11, и эта функция возвращает значение, на котором находится сигнал тревоги в данный момент. Это альтернативный метод прямого получения значения массива сигналов тревоги.

-

-

Синтаксис:

-

alarm_get(index);

- - - - - - - - - - - - - -
АргументТипОписание
indexРеальноThe alarm index to get, from 0 to 11.
-

-

Возвращается:

-

Real (integer)

-

-

Пример:

-

for (var i = 0; i < 12; i++)
- {
-     if alarm_get(i) > 0 alarm_set(i, -1);
- }

-

Приведенный выше код проверяет все сигналы тревоги в вызывающем экземпляре и, если они больше 0, устанавливает их в -1, останавливая дальнейший отсчет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/alarm_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/alarm_set.htm index 0ae744680..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/alarm_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/alarm_set.htm @@ -1,70 +0,0 @@ - - - - - - alarm_set - - - - - - - - - - -

alarm_set

-

Эта функция может использоваться для установки сигнала тревоги. Вы вводите номер сигнала тревоги от 0 до 11, а затем значение, на которое нужно установить сигнал тревоги. Значение должно быть целым, и вы можете установить его на -1, чтобы остановить сигнал тревоги (нецелые значения будут округлены до ближайшего целого числа). Это альтернативный метод непосредственной установки массива сигналов тревоги.

-

-

Синтаксис:

-

alarm_set(index, value);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexРеальноThe alarm index to set, from 0 to 11.
valueРеальноThe value (an integer) to set the alarm to.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

for (var i = 0; i < 12; i++)
- {
-     if alarm_get(i) > 0 alarm_set(i, -1);
- }

-

Приведенный выше код проверяет все сигналы тревоги в вызывающем экземпляре и, если они больше 0, устанавливает их в -1, останавливая дальнейший отсчет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_change.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_change.htm index 7e5a26fca..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_change.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_change.htm @@ -1,74 +0,0 @@ - - - - - - instance_change - - - - - - - - - - - -

instance_change

-

Вы можете использовать эту функцию для изменения одного экземпляра объекта на другой экземпляр другого объекта, и при этом решить, нужно ли выполнять события уничтожения и очистки исходного экземпляра и событие создания нового экземпляра. Таким образом, вы можете, например, изменить бомбу на взрыв - в этом случае аргумент "perf" будет истинным, так как вы хотите, чтобы бомба выполнила события уничтожения и очистки, а взрыв - событие создания. Или вы можете изменить персонажа игрока на другого персонажа - в этом случае аргумент "perf" будет ложным, так как вы не хотите, чтобы экземпляры выполняли свои события создания и уничтожения/очистки.

-

Стоит отметить, что изменение экземпляра означает, что вы не должны выполнять никаких дальнейших действий с этим экземпляром до следующего шага, в частности, пытаться получить доступ к переменным и т.д., так как это приведет к ошибке. По сути, вы изменяете экземпляр, но он фактически недоступен до конца текущего шага, поэтому обращение к любой из содержащихся в нем переменных напрямую (например, вызов obj_Changed.x) не сработает.

-

ВНИМАНИЕ! При изменении экземпляра с включенной физикой физические свойства не будут перенес ены на новый экземпляр. Поэтому вы должны иметь код для "передачи" физического состояния текущего экземпляра новому экземпляру, либо определить физические свойства нового экземпляра в событии Create Event или в редакторе объектов. По этой причине рекомендуется не использовать эту функцию с экземплярами с включенной физикой, а использовать комбинацию функций instance_destroy() и instance_create_layer().

-

-

Синтаксис:

-

instance_change(obj, perf);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
objОбъект АктивыThe new object the calling object will change into.
perfБулевоWhether to perform that new object's Create and Destroy events (true) or not (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if keyboard_check(vk_enter)
- {
-     instance_change(obj_Player_Swimming, false);
-     exit;
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_copy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_copy.htm index cb939dd23..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_copy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_copy.htm @@ -1,68 +0,0 @@ - - - - - - instance_copy - - - - - - - - - - - -

instance_copy

-

С помощью этой функции вы можете "клонировать" экземпляр, так как при этом будет создана новая версия экземпляра, выполняющая код на той же позиции. Аргумент "perf" используется для указания новому экземпляру выполнить событие create или нет. Эта функция возвращает значение id нового экземпляра, который затем может быть сохранен в переменной или использован для доступа к этому экземпляру.

-

ПРИМЕЧАНИЕ: Если вы решите не выполнять событие create, вы можете столкнуться с ошибками, если экземпляр зависит от каких-либо переменных, инициализированных в этом событии.

-

-

Синтаксис:

-

instance_copy(perf);

- - - - - - - - - - - - - -
АргументТипОписание
perfБулевоWhether to perform the new instance's Create event (true) or not (false).
-

-

Возвращается:

-

Instance ID

-

-

Пример:

-

var inst = instance_number(object_index);
- if (inst < 10)
- {
-     instance_copy(true);
- }

-

Приведенный выше код создает локальную переменную и использует ее для хранения количества экземпляров объекта, выполняющего код в комнате. Если число меньше 10, экземпляр создает копию самого себя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_count.htm index 3e85e0dc5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_count.htm @@ -1,55 +0,0 @@ - - - - - - instance_count - - - - - - - - - - -

instance_count

-

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

-

-

Синтаксис:

-

instance_count

-

-

Возвращается:

-

-

-

Пример:

-

if (instance_count < 100)
- {
-     var dif = 100 - instance_count;
-     while (--dif > 0)
-     {
-         instance_create_layer(random(room_width), random(room_height), "Effects", obj_Star);
-     }
- }

-

Приведенный выше код будет создавать несколько экземпляров объекта "obj_Star", пока общее количество экземпляров не достигнет 100.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_create_depth.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_create_depth.htm index c82f5c7e6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_create_depth.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_create_depth.htm @@ -1,108 +0,0 @@ - - - - - - instance_create_depth - - - - - - - - - - -

instance_create_depth

-

С помощью этой функции вы можете создать новый экземпляр указанного объекта в любой заданной точке комнаты и на указанной глубине. Глубина может быть любым значением, где чем меньше глубина, тем "ближе" к камере будут нарисованы объекты, а чем больше глубина, тем дальше, так что экземпляр с глубиной -200 будет нарисован поверх экземпляра с глубиной +300 (например).

-

Обратите внимание, что эта функция фактически создает слой комнаты для экземпляра, поскольку все экземпляры должны находиться на слое в комнате, но поскольку это управляемый слой (т.е. не тот, который вы создали с помощью кода или в комнате, а тот, который GameMaker создал автоматически). Вы не сможете получить доступ к этому слою, и layer переменная экземпляра вернет значение -1.

-

ВАЖНО Существует минимальная и максимальная глубина слоя от -16000 до 16000. Все, что размещено на глубине вне этого диапазона, не будет нарисовано, хотя все события будут проходить в обычном режиме.

-

Эта функция возвращает id нового экземпляра, который затем может быть сохранен в переменной и использован для доступа к этому экземпляру. Обратите внимание, что эта функция также вызовет событие Create Event создаваемого экземпляра, прежде чем продолжить код или действия для события, вызвавшего функцию.

-

Необязательная структура

-

Последний аргумент, var_struct, является необязательным и принимает структуру, содержащую дополнительные переменные для нового экземпляра.

-

Переменные из этой структуры применяются к новому экземпляру до запуска события Create, но после установки его Variable Definitions.

-

Это означает, что значения из этой структуры доступны для чтения в событии Create нового экземпляра. См. пример 2 внизу.

-

Значения, применяемые к новому экземпляру через эту структуру, могут быть любого типа, включая method переменные. Встроенные переменные также могут быть изменены.

-

ПРИМЕЧАНИЕ Переменные из структуры "неглубоко копируются" в новый экземпляр, то есть любые массивы, структуры и другие ресурсы копируются по ссылке, а не дублируются.

-

-

Синтаксис:

-

instance_create_depth(x, y, depth, obj);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x position the object will be created at
yРеальноThe y position the object will be created at
depthРеальноThe depth to assign the created instance to
objОбъект АктивыThe object index of the object to create an instance of
var_structСтруктураOPTIONAL Структура с переменными для присвоения новому экземпляру
-

-

Возвращается:

-

Instance ID

-

-

Пример 1:

-

var inst = instance_create_depth(x, y, -100, obj_Bullet);
- with (inst)
- {
-     speed = other.shoot_speed;
-     direction = other.image_angle;
- }

-

Приведенный выше код создает новый экземпляр объекта obj_bullet на глубине -100 и сохраняет ID экземпляра в переменной. Затем эта переменная используется для присвоения speed и direction новому экземпляру.

-

Сначала будет создан экземпляр, запущено событие Create, а затем присвоены значения его переменным.

-

Если вы хотите назначить некоторые переменные до запуска события Create, смотрите пример ниже.

-

-

Пример 2:

-

var inst = instance_create_depth(x, y, -100, obj_bullet,
- {
-     speed : shoot_speed,
-     direction : image_angle
- });

-

Приведенный выше код создает экземпляр obj_bullet, а в качестве последнего аргумента передает struct.

-

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

-

Эти переменные применяются к новому экземпляру до запуска события Create.

-

Вы не ограничены литералом struct, так как вы также можете передать переменную, которая хранит существующую struct, или создать struct new структуру из constructor.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_create_layer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_create_layer.htm index 5b1ee880e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_create_layer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_create_layer.htm @@ -1,107 +0,0 @@ - - - - - - instance_create_layer - - - - - - - - - - -

instance_create_layer

-

С помощью этой функции можно создать новый экземпляр указанного объекта в любой заданной точке помещения и на указанном слое. Слой может быть определен с помощью значения идентификатора слоя (возвращаемого функцией layer_create()) или по имени слоя (в виде строки, например, "instance_layer"), заданному в редакторе помещения.

-

Эта функция возвращает id нового экземпляра, который затем может быть сохранен в переменной и использован для доступа к этому экземпляру. Обратите внимание, что эта функция также вызовет событие Create Event создаваемого экземпляра, прежде чем продолжить код или действия для события, вызвавшего функцию.

-

ВАЖНО Существует минимальная и максимальная глубина слоя от -16000 до 16000. Все, что размещено на слое вне этого диапазона, не будет нарисовано, хотя все события будут проходить в обычном режиме.

-

Необязательная структура

-

Последний аргумент, var_struct, является необязательным и принимает структуру, содержащую дополнительные переменные для нового экземпляра.

-

Переменные из этой структуры применяются к новому экземпляру до запуска события Create, но после установки его Variable Definitions.

-

Это означает, что значения из этой структуры доступны для чтения в событии Create нового экземпляра. См. пример 2 внизу.

-

Значения, применяемые к новому экземпляру через эту структуру, могут быть любого типа, включая method переменные. Встроенные переменные также могут быть изменены.

-

ПРИМЕЧАНИЕ Переменные из структуры "неглубоко копируются" в новый экземпляр, то есть любые массивы, структуры и другие ресурсы копируются по ссылке, а не дублируются.

-

-

Синтаксис:

-

instance_create_layer(x, y, layer_id, obj);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x position the object will be created at
yРеальноThe y position the object will be created at
layer_idИдентификатор слоя или СтрокаThe layer ID (or name) to assign the created instance to
objОбъект АктивыThe object index of the object to create an instance of
var_structСтруктураOPTIONAL Структура с переменными для присвоения новому экземпляру
-

-

Возвращается:

-

Instance ID

-

-

Пример 1:

-

var inst = instance_create_layer(x, y, "Instances", obj_bullet);
- with (inst)
- {
-     speed = other.shoot_speed;
-     direction = other.image_angle;
- }

-

Приведенный выше код создает новый экземпляр объекта obj_bullet в слое "Instances" и сохраняет ID экземпляра в переменной. Эта переменная затем используется для присвоения speed и direction новому экземпляру.

-

Сначала будет создан экземпляр, запущено событие Create, а затем присвоены значения его переменным.

-

Если вы хотите назначить некоторые переменные до запуска события Create, смотрите пример ниже.

-

-

Пример 2:

-

var inst = instance_create_layer(x, y, "Instances", obj_bullet,
- {
-     speed : shoot_speed,
-     direction : image_angle
- });

-

Приведенный выше код создает экземпляр obj_bullet, а в качестве последнего аргумента передает struct.

-

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

-

Эти переменные применяются к новому экземпляру до запуска события Create.

-

Вы не ограничены литералом struct, так как вы также можете передать переменную, которая хранит существующую struct, или создать struct new структуру из constructor.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_destroy.htm index 02a223765..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_destroy.htm @@ -1,80 +0,0 @@ - - - - - - instance_destroy - - - - - - - - - - - -

instance_destroy

-

Вы вызываете эту функцию всякий раз, когда хотите "уничтожить" экземпляр, обычно вызывая событие Destroy, а также событие Clean Up. Это удалит его из комнаты, пока комната не будет перезапущена (если только комната не является постоянной). Вызов функции без аргументов просто уничтожит экземпляр, который в данный момент находится в области видимости и выполняет код, но вы можете указать необязательный аргумент "id" и нацелиться на конкретный экземпляр, используя значение экземпляра id, или нацелиться на все экземпляры конкретного объекта, используя аргумент object_index. Например:

-

instance_destroy(other);      // destroy the "other" instance in a Collision Event
- instance_destroy(obj_Bullet); // destroy ALL instances of the object "obj_Bullet"

-

Второй необязательный флаг позволяет "отключить" событие Destroy Event для уничтожаемого экземпляра. По умолчанию событие Destroy Event будет выполняться всегда, но если вы установите этот флаг в false, то сможете заставить экземпляр уничтожить себя и пропустить выполнение этого события.

-

ВАЖНО! При этом событие Уничтожение будет пропущено, но событие Очистка все равно будет вызвано.

-

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

-

Итак, если у вас есть, например, такой код:

-

if (hp <= 0) instance_destroy();
- score += 10;

-

Переменная "score" будет увеличиваться, даже если была вызвана функция instance_destroy , и экземпляр будет окончательно удален из игры в конце события. Будьте внимательны, так как если вы (например) создали динамический ресурс для экземпляра, например структуру данных, а затем уничтожили этот ресурс в событии destroy, то если после выполнения функции или действия destroy на него будут ссылки, вы получите ошибку "неизвестный ресурс", так как событие destroy удалило его из игры.

-

-

Синтаксис:

-

instance_destroy([id, execute_event_flag]);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор экземпляра или актив объектаOPTIONAL ID экземпляра для уничтожения, или актив объекта для уничтожения экземпляров (необязательно, по умолчанию - вызывающий экземпляр).
execute_event_flagБулевоOPTIONAL Установите значение true или false для выполнения события Destroy или нет (необязательно, по умолчанию true).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (bbox_right < 0 || bbox_left > room_width || bbox_bottom < 0 || bbox_top > room_height)
- {
-     instance_destroy(id, false);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_exists.htm index 3888853c9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_exists.htm @@ -1,68 +0,0 @@ - - - - - - instance_exists - - - - - - - - - - - -

instance_exists

-

Эта функция может быть использована двумя способами в зависимости от того, что вы хотите проверить. Вы можете передать ей object_index для проверки, в этом случае функция вернет true, если в текущей комнате есть активные экземпляры указанного объекта, или вы можете передать ей id экземпляра, в этом случае функция вернет true, если этот конкретный экземпляр существует и активен в текущей комнате.

-

Обратите внимание, что эта функция не учитывает те экземпляры, которые были деактивированы с помощью функций деактивации экземпляров.

-

-

Синтаксис:

-

instance_exists(obj);

- - - - - - - - - - - - - -
АргументТипОписание
objИдентификатор экземпляра или актив объектаThe object or instance to check for the existence of.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !instance_exists(obj_Enemy)
- {
-     score += 200;
-     room_goto(rm_hiscores);
- }

-

Приведенный выше код проверяет, существуют ли экземпляры объекта "obj_Enemy", и если нет, то добавляет к переменной "score" и меняет комнату.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_find.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_find.htm index 805a74482..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_find.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_find.htm @@ -1,76 +0,0 @@ - - - - - - instance_find - - - - - - - - - - - -

instance_find

-

Все экземпляры имеют уникальный идентификатор (id), который можно использовать для изменения и манипулирования ими во время игры, но вы не всегда можете знать идентификатор конкретного экземпляра, поэтому эта функция может помочь, так как с ее помощью вы можете перебрать все экземпляры, чтобы найти то, что вам нужно. Вы указываете объект, экземпляр которого хотите найти, и число, и если в списке экземпляров есть экземпляр на этой позиции, то функция возвращает id этого экземпляра, а если нет, то возвращает специальное ключевое слово noone. Вы также можете использовать ключевое слово all для перебора всех экземпляров в комнате, а также родительский объект для перебора всех экземпляров, которые являются частью иерархии родитель/ребенок, и вы даже можете указать экземпляр (если у вас есть его id) в качестве проверки, существует ли он в текущей комнате. Обратите внимание, что поскольку экземпляры сортируются произвольным образом, нет определенного порядка проверки экземпляров этой функцией, и любой экземпляр может находиться в любой позиции.

-

Максимальное значение для "n" в этой функции будет равно

- -

-

Синтаксис:

-

instance_find(obj, n);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
objОбъект АктивыThe object to find the nth instance of
nРеальноThe number of the instance to find.
-

-

Возвращается:

-

Instance ID or noone

-

-

Пример:

-

for (var i = 0; i < instance_number(obj_Enemy); ++i;)
- {
-     enemy[i] = instance_find(obj_Enemy,i);
- }

-

Приведенный выше код будет использовать цикл for для перебора всех экземпляров "obj_Enemy" и сохранения их id в массиве "enemy[]".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_furthest.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_furthest.htm index 59a0be045..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_furthest.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_furthest.htm @@ -1,74 +0,0 @@ - - - - - - instance_furthest - - - - - - - - - - - -

instance_furthest

-

Эта функция проверяет все экземпляры заданного объекта, чтобы определить, какой из них находится дальше всего от заданной точки x/y. Все проверки будут проводиться от заданной точки x/y до начала координат (точки x/y) экземпляров указанного объекта. Если экземпляров объекта не существует, функция вернет ключевое слово noone, но если экземпляры существуют, то функция вернет значение id найденного экземпляра. Обратите внимание, что если экземпляр, выполняющий код, имеет тот же индекс объекта, что и проверяемый объект, то он будет включен в проверку (это включает проверку родительских объектов, если вызывающий экземпляр также является дочерним по отношению к родительскому).

-

-

Синтаксис:

-

instance_furthest(x, y, obj);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xThe x position to check for instances far from.
yThe y position to check for instances far from.
objThe object to check for instances of.
-

-

Возвращается:

-

Instance ID or noone

-

-

Пример:

-

var inst;
- inst = instance_furthest(x, y, object_index);
- if (inst != id)
- {
-     draw_line(x, y, inst.x, inst.y);
- }

-

Приведенный выше код найдет самый удаленный экземпляр, который имеет тот же индекс объекта, что и экземпляр, выполняющий код, и сохранит его id в переменной. Затем эта переменная проверяется, совпадает ли она с id вызывающего экземпляра, и если нет, то между двумя экземплярами проводится линия.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_id.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_id.htm index 14e399927..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_id.htm @@ -1,51 +0,0 @@ - - - - - - instance_id - - - - - - - - - - -

instance_id

-

В этом массиве, доступном только для чтения, хранятся все idвсех активных экземпляров в комнате. Это означает, что если вы использовали любую из функций Instance Deactivate, те экземпляры, которые были деактивированы, не будут включены в этот массив (если вы использовали значение из этого массива ранее, теперь оно вернет ключевое слово noone).

-

-

Синтаксис:

-

instance_id[num];

-

-

Возвращается:

-

Instance ID

-

-

Пример:

-

for (var i = 0; i < instance_count; i ++;)
- {
-     with (instance_id[i]) speed += 0.1;
- }

-

Приведенный выше код пройдется по всем экземплярам в комнате и добавит 0,1 к их скорости.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_id_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_id_get.htm index bb1491577..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_id_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_id_get.htm @@ -1,70 +0,0 @@ - - - - - - instance_id_get - - - - - - - - - - - -

instance_id_get

-

С помощью этой функции вы можете получить уникальное значение ID любого экземпляра из активного в данный момент списка экземпляров. Вы указываете индекс в списке экземпляров, по которому нужно получить ID, и функция возвращает значение для хранения в переменной.

-

-

Синтаксис:

-

instance_id_get(index);

- - - - - - - - - - - - - -
АргументТипОписание
indexРеальноThe index within the instance list from 0 до количества экземпляров - 1.
-

-

Возвращается:

-

Instance ID

-

-

Пример:

-

for (var i = 0; i < instance_count; ++i;)
- {
-     var temp_id = instance_id_get(i);
-     with (temp_id)
-     {
-         speed += 0.1;
-     }
- }

-

Приведенный выше код пройдется по всем экземплярам в комнате и добавит 0,1 к их скорости.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_nearest.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_nearest.htm index edb871e40..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_nearest.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_nearest.htm @@ -1,77 +0,0 @@ - - - - - - instance_nearest - - - - - - - - - - - -

instance_nearest

-

Эта функция проверяет все экземпляры заданного объекта, чтобы узнать, какой из них находится ближе всего к заданной точке x/y. Все проверки будут проводиться от заданной точки x/y до начала координат (точки x/y) экземпляров указанного объекта. Если экземпляров объекта не существует, функция вернет ключевое слово noone, но если экземпляры существуют, то функция вернет значение id найденного экземпляра. Обратите внимание, что если экземпляр, выполняющий код, имеет тот же индекс объекта, что и проверяемый объект, то он будет включен в проверку (это включает проверку родительских объектов, если вызывающий экземпляр также является дочерним по отношению к родительскому).

-

-

Синтаксис:

-

instance_nearest(x, y, obj);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xThe x position to check from.
yThe y position to check from.
objThe object to check for instances of.
-

-

Возвращается:

-

Instance ID or noone

-

-

Пример:

-

var inst, xx;
- xx = x;
- x -= 10000;
- inst = instance_nearest(xx, y, object_index);
- if (inst != id)
- {
-     draw_line(x, y, inst.x, inst.y);
- }
- x += 10000;

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_number.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_number.htm index e67807220..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_number.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_number.htm @@ -1,64 +0,0 @@ - - - - - - instance_number - - - - - - - - - - - -

instance_number

-

С помощью этой функции можно узнать, сколько активных экземпляров указанного объекта существует в комнате. При проверке с помощью этой функции, если объект является родительским, то все дочерние объекты также будут включены в возвращаемое значение, а также обратите внимание, что те экземпляры, которые были деактивированы с помощью функций instance deactivate, не будут включены в эту проверку.

-

-

Синтаксис:

-

instance_number(obj);

- - - - - - - - - - - -
АргументТипОписание
objThe object to total the number of instances of.
-

-

Возвращается:

-

-

-

Пример:

-

if instance_number(object_index) < 50
- {
-     instance_create_layer(random(room_width), random(room_height), "Instances", object_index);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_place.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_place.htm index 8ce2e2e7a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_place.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_place.htm @@ -1,80 +0,0 @@ - - - - - - instance_place - - - - - - - - - - - -

instance_place

-

С помощью этой функции вы можете проверить позицию на столкновение с другим экземпляром или со всеми экземплярами объекта, используя маску столкновения того экземпляра, который выполняет код проверки. При использовании этой функции вы фактически просите GameMaker переместить экземпляр в новую позицию, проверить наличие столкновения, вернуться назад и сообщить вам, было ли обнаружено столкновение или нет.

-

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

-

Эта функция вернет уникальный экземпляр id сталкиваемого объекта, но если в этом нет необходимости, то немного быстрее использовать функцию place_meeting(). Эта функция также принимает специальные ключевые слова all и other и вернет ключевое слово noone, если столкновения не произошло, или уникальное значение ID найденного экземпляра, если столкновение все же произошло.

-

-

Синтаксис:

-

instance_place(x, y, obj);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x position to check for instances.
yРеальноThe y position to check for instances.
obj Идентификаторактива или экземпляраобъекта The object to check for instances of.
-

-

Возвращается:

-

Instance ID or noone

-

-

Пример:

-

var _inst = instance_place(x, y, obj_Enemy);
- if (_inst != noone)
- {
-     hp -= _inst.dmg;
-     instance_destroy(_inst);
- }

-

Приведенный выше код проверит наличие столкновения с экземплярами "obj_Enemy" и, если таковое произойдет, уменьшит переменную "hp" на величину, хранящуюся в переменной "dmg" столкнувшегося экземпляра, а затем уничтожит столкнувшийся экземпляр.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_place_list.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_place_list.htm index 4ec1bc9f9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_place_list.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_place_list.htm @@ -1,97 +0,0 @@ - - - - - - instance_place_list - - - - - - - - - - - -

instance_place_list

-

С помощью этой функции вы можете проверить позицию на столкновение со всеми экземплярами объекта, используя маску столкновения того экземпляра, который выполняет код проверки. При использовании этой функции вы фактически просите GameMaker переместить экземпляр в новую позицию, проверить наличие столкновения, затем вернуться назад и сообщить вам, было ли обнаружено столкновение или нет. Это будет работать для точных столкновений, но только если и у экземпляра, и у экземпляров проверяемого объекта выбраны маски точных столкновений, в противном случае применяются только столкновения с ограничивающей рамкой.

-

Вы также предоставляете список DS, поэтому id значения всех экземпляров, которые сталкиваются с вызывающим экземпляром, будут добавлены в конец данного списка. Вы можете очистить список перед вызовом этой функции, чтобы он содержал только результаты этого вызова функции. Также есть возможность упорядочить список по расстоянию от начала координат экземпляра, выполняющего проверку, до начала координат экземпляров, с которыми произошло столкновение.

-

Обратите внимание, что функция также принимает специальное ключевое слово allв этом случае будут перечислены все найденные экземпляры, с которыми произошла коллизия. Функция возвращает количество найденных экземпляров или 0, если не найдено ни одного.

-

-

Синтаксис:

-

instance_place_list(x, y, obj, list, ordered);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x position to check for instances.
yРеальноThe y position to check for instances.
obj Идентификаторактива или экземпляраобъекта The object to check for instances of.
listИдентификатор списка DSThe DS list to use to store the IDs of colliding instances.
orderedБулевоWhether the list should be ordered by distance (true) или нет (false).
-

-

Возвращается:

-

Real (The number of instances found to be in collision)

-

-

Пример:

-

var _list = ds_list_create();
- var _num = instance_place_list(x, y, obj_Enemy, _list, false);
-
- if (_num > 0)
- {
-     for (var i = 0; i < _num; ++i)
-     {
-         instance_destroy(_list[| i]);
-     }
- }
-
- ds_list_destroy(_list); -

-

Приведенный выше код проверит на столкновение все экземпляры, найденные в позиции вызывающего экземпляра. Они будут добавлены в список DS, который затем будет пройден по циклу для уничтожения каждого из столкнувшихся экземпляров.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_position.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_position.htm index cc2293ab5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_position.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_position.htm @@ -1,82 +0,0 @@ - - - - - - instance_position - - - - - - - - - - - -

instance_position

-

С помощью этой функции можно проверить позицию на столкновение с другим экземпляром или всеми экземплярами объекта. При использовании этой функции вы проверяете одну точку в комнате на наличие экземпляра или объекта. Проверка будет выполнена по граничной области экземпляра или по маске экземпляра, если у этого экземпляра есть точная проверка столкновений, и вернет уникальный экземпляр. id. Если вам не нужен идентификатор столкнувшегося экземпляра, то вместо этого следует использовать position_meeting() вместо этого. Эта функция также принимает специальные ключевые слова all и other и возвращает ключевое слово noone, если столкновения не произошло, или уникальное значение ID найденного экземпляра, если столкновение произошло.

-

-

Синтаксис:

-

instance_position( x, y, obj );

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x position to check for instances.
yРеальноThe y position to check for instances.
obj Идентификаторактива или экземпляраобъекта The object to check for instances of.
-

-

Возвращается:

-

Instance ID or noone

-

-

Пример:

-

var inst;
- inst = instance_position(mouse_x, mouse_y, obj_Pause_Button);
- if (inst != noone)
- {
-     with (inst)
-     {
-         image_index = 1;
-     }
-     instance_create_layer(room_width / 2, 0, "Controllers", obj_Menu);
- }

-

Приведенный выше код проверит наличие столкновения с экземпляром "obj_Pause_Button" в позиции мыши, и если оно есть, то будет использовать возвращенный id для установки его image_index на новое значение перед созданием нового экземпляра объекта "obj_Menu".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_position_list.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_position_list.htm index e702b270e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_position_list.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Instances/instance_position_list.htm @@ -1,94 +0,0 @@ - - - - - - instance_position_list - - - - - - - - - - - -

instance_position_list

-

С помощью этой функции можно проверить позицию на столкновение со всеми экземплярами другого объекта. При использовании этой функции вы проверяете одну точку в комнате на наличие всех экземпляров объекта, и проверка будет выполняться по ограничивающей рамке экземпляров или по маске экземпляров, если у этого объекта отмечены точные столкновения.

-

Вы также предоставляете список DS, поэтому id значения всех экземпляров, которые сталкиваются с вызывающим экземпляром, будут добавлены в конец данного списка. Вы можете очистить список перед вызовом этой функции, чтобы он содержал только результаты этого вызова функции. Также есть возможность упорядочить список на основе расстояния от проверяемой позиции до начала координат экземпляров, с которыми произошло столкновение.

-

Обратите внимание, что функция также принимает специальное ключевое слово allв этом случае будут перечислены все найденные экземпляры, с которыми произошла коллизия. Функция возвращает количество найденных экземпляров или 0, если не найдено ни одного.

-

-

Синтаксис:

-

instance_position_list(x, y, obj, list, ordered);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x position to check for instances.
yРеальноThe y position to check for instances.
obj Идентификаторактива или экземпляраобъекта The object to check for instances of.
listИдентификатор списка DSThe DS list to use to store the IDs of colliding instances.
orderedБулевоWhether the list should be ordered by distance (true) или нет (false).
-

-

Возвращается:

-

Real (The number of instances found to be in collision)

-

-

Пример:

-

var _list = ds_list_create();
- var _num = instance_position_list(mouse_x, mouse_y, all, _list, false);
- if (_num > 0)
- {
-     for (var i = 0; i < _num; ++i)
-     {
-         instance_destroy(_list[| i]);
-     }
- }
- ds_list_destroy(_list);

-

Приведенный выше код проверит на столкновение все экземпляры, найденные в позиции мыши. Они будут добавлены в список DS, который затем будет пройден по циклу для уничтожения каждого из столкнувшихся экземпляров.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/Generating_Object_Events.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/Generating_Object_Events.htm index 0d460103a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/Generating_Object_Events.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/Generating_Object_Events.htm @@ -1,55 +0,0 @@ - - - - - - Генерирование событий объектов - - - - - - - - - - -

Генерирование событий объектов

-

GameMaker полностью ориентирован на события, то есть все действия происходят в результате определенных событий, которые запускаются в определенном порядке или в результате определенного события в игре. Существует целый ряд различных событий, каждое из которых имеет определенную задачу или время, а некоторые из них даже разделены на отдельные "под" события. Обычно эти события запускаются GameMaker, когда он обнаруживает внутриигровой триггер, или каждый игровой тик (как в случае с событиями step и draw), но вы также можете применить событие к экземпляру в текущей комнате из части кода.

-

Существуют следующие функции, работающие с генерацией событий:

- -

-

Существует также ряд переменных только для чтения, которые можно использовать с перечисленными выше функциями и которые особенно полезны для отладки:

- -

-

Более подробную информацию о событиях можно найти в разделе События объекта.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_action.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_action.htm index 090c8791c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_action.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_action.htm @@ -1,48 +0,0 @@ - - - - - - event_action - - - - - - - - - - -

event_action

-

Эта переменная, доступная только для чтения, возвращает индекс выполняемого в данный момент действия, начиная с 0 в предыдущих версиях GameMaker. Однако в GameMaker эта переменная уже устарела . Она была оставлена только для поддержки наследия и всегда будет возвращать 0, поскольку все действия объединяются вместе для повышения скорости выполнения.

-

-

Синтаксис:

-

event_action

-

-

Возвращается:

-

Real

-

-

Пример:

-

num = event_action;

-

Приведенный выше код сохраняет номер текущего действия в переменной "num".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_inherited.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_inherited.htm index f7bed707e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_inherited.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_inherited.htm @@ -1,54 +0,0 @@ - - - - - - event_inherited - - - - - - - - - - -

event_inherited

-

Эта функция вызывает текущее событие родительского объекта экземпляра. Обычно, когда у экземпляра есть родительский объект, он автоматически наследует все те же события, что и родитель, но если (например) у родительского объекта есть событие create, а вы добавляете его в дочерний объект, все экземпляры дочернего объекта будут выполнять новое событие create, которое вы добавили, а не то, которое было в родительском объекте. Если вам нужно использовать и событие родительского объекта, и событие дочернего объекта одного и того же типа, используйте эту функцию, поскольку она запустит событие родительского объекта, прежде чем продолжить выполнение остального кода или действий, которые содержит дочернее событие.

-

-

Синтаксис:

-

event_inherited();

-

-

Возвращается:

-

-

-

Пример:

-

event_inherited();
- switch (sprite_index)
- {
-     case spr_Enemy_1: dmg += 2; break;
-     case spr_Enemy_4: dmg -= 1; break;
-     case spr_Enemy_10: dmg +=10; break;
- }

-

Приведенный выше код вызывает событие унаследованного родителя (в котором мы инициализируем переменную "dmg"), а затем переходит к изменению переменной "dmg". Если для экземпляра, выполняющего этот код, не указан родитель, мы получим ошибку "неизвестная переменная", поскольку dmg не была определена.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_number.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_number.htm index 84be680ff..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_number.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_number.htm @@ -1,53 +0,0 @@ - - - - - - event_number - - - - - - - - - - -

event_number

-

Эта переменная, доступная только для чтения, возвращает номер вызываемого в данный момент события, где номер фактически относится к "под-событию" события, то есть: для события step номер события может быть любой из констант ev_step_normal, ev_step_begin или ev_step_end. Полный список констант, которые доступны для конкретных подсобытий, см. event_perform(), а если вам нужно узнать само основное событие, вы должны проверить константу event_type.

-

-

Синтаксис:

-

event_number

-

-

Возвращается:

-

Event Number Constant

-

-

Пример:

-

switch (event_number)
- {
-     case ev_step_normal: show_debug_message("Step event!"); break;
-     case ev_game_start: show_debug_message("Game Start""); break;
-     case ev_room_start: show_debug_message("Room Start!"); break;
- }

-

Приведенный выше код можно вызвать из сценария и использовать для отображения отладочных сообщений, информирующих о том, какое событие в данный момент запущено.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_object.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_object.htm index a93497d69..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_object.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_object.htm @@ -1,48 +0,0 @@ - - - - - - event_object - - - - - - - - - - -

event_object

-

Эта переменная, доступная только для чтения, возвращает индекс объекта экземпляра, в котором выполняется проверяемое событие.

-

-

Синтаксис:

-

event_object

-

-

Возвращается:

-

Object Asset

-

-

Пример:

-

global.obj = event_object;

-

Приведенный выше код хранит индекс объекта экземпляра, выполняющего событие, в глобальной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_perform.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_perform.htm index 9368a27bb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_perform.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_perform.htm @@ -1,537 +0,0 @@ - - - - - - event_perform - - - - - - - - - - -

event_perform

-

Эта функция выполнит указанное событие с заданным аргументом для экземпляра, выполняющего код. Здесь есть множество опций, позволяющих полностью смоделировать все возможные события, но имейте в виду, что эта функция буквально просто выполняет весь код события, и игра не будет ничего изменять, чтобы заставить его сработать вручную, например, если вы решите выполнить событие нажатия на клавиатуру, событие сработает, но соответствующая клавиша не будет распознана как нажатая. Или если вы выполните событие тревоги, счетчик тревоги не будет установлен на -1, а продолжит отсчет.

-

Асинхронные события можно вызывать с помощью event_perform_async().

-

В таблице ниже приведены все константы, которые включены в GameMaker для ссылок на типы событий, а также их числовое значение. Сами события выделены жирным шриф том и совпадают с возвращаемыми значениями переменной event_type (передается в первый аргумент этой функции), а их числовые значения выделены курсивом и совпадают с возвращаемыми значениями переменной event_number (передаются во второй аргумент этой функции):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип события Постоянная & Номер события Константа
ПостояннаяОписание
ev_createСоздать событие
ev_destroyУничтожить событие
ev_cleanupМероприятие по уборке территории
ev_stepШаговое мероприятие
---- ev_step_normalШаг
---- ev_step_beginНачальный этап
---- ev_step_endКонечный этап
ev_alarmТревожное событие
---- 0 ... 11Номер, относящийся к тому, какой из 12 сигналов тревоги вы хотите включить
ev_keyboard, ev_keypress, ev_keyreleaseКлавиатура/клавиатура нажата/клавиатура отпущена
---- любой код ключанапример, vk_space или ord("W").
ev_mouseСобытие мыши
---- ev_left_buttonЛевая кнопка удерживается на объекте
---- ev_right_buttonПравая кнопка удерживается на объекте
---- ev_middle_buttonСредняя кнопка (или колесико) удерживается нажатой на объекте
---- ev_no_buttonНе удерживайте кнопки
---- ev_left_pressЛевая кнопка только что нажата на объекте
---- ev_right_pressПравая кнопка только что нажата на объекте
---- ev_middle_pressСредняя кнопка (или кликабельное колесо) только что нажата на объекте
---- ev_left_releaseЛевая кнопка только что отпущена на объекте
---- ev_right_releaseПравая кнопка только что была отпущена на объекте
---- ev_middle_releaseСредняя кнопка только что отпущена на объекте
---- ev_mouse_enterМышь только что вошла в ограничительную область объекта
---- ev_mouse_leaveМышь только что покинула ограничивающую рамку объекта
---- ev_mouse_wheel_upКолесо мыши прокручивается вверх
---- ev_mouse_wheel_downКолесо мыши прокручивается вниз
---- ev_global_left_buttonЛевая кнопка удерживается в любом месте
---- ev_global_right_buttonПравая кнопка удерживается в любом месте
---- ev_global_middle_buttonСредняя кнопка (или колесико) удерживается нажатой в любом месте
---- ev_global_left_pressЛевая кнопка просто нажата в любом месте
---- ev_global_right_pressПравая кнопка нажимается в любом месте
---- ev_global_middle_pressСредняя кнопка (или кликабельное колесо) просто нажимается в любом месте
---- ev_global_left_releaseЛевая кнопка отпускается в любом месте
---- ev_global_right_releaseПравая кнопка только что была отпущена в любом месте
---- ev_global_middle_releaseСредняя кнопка только что освободилась в любом месте
ev_gestureСобытие жеста (касание, перетаскивание, щелчок, щипок или поворот)
---- ev_gesture_tapОднократное нажатие/прикосновение и отпускание было обнаружено для экземпляра
---- ev_gesture_double_tapДва быстрых прикосновения/щелчка и освобождения были обнаружены для экземпляра
---- ev_gesture_drag_startНачало жеста перетаскивания было обнаружено для экземпляра
---- ev_gesture_draggingПрикосновение/щелчок удерживается и перемещается в течение экземпляра
---- ev_gesture_drag_endОтпускание касания/щелчка от перетаскивания было обнаружено для экземпляра
---- ev_gesture_flickОсвобождение касания/щелчка от перетаскивания имело достаточно движения для обнаружения события щелчка для экземпляра
---- ev_gesture_pinch_startДля экземплярабыли обнаружены два касания и прямолинейное движение
---- ev_gesture_pinch_inДвижение между двумя касаниями для экземпляра было определено как движение внутрь
---- ev_gesture_pinch_outДвижение между двумя касаниями для экземпляра было определено как движение наружу
---- ev_gesture_pinch_endОтпускание одного (или обоих) касаний для защемления было обнаружено для экземпляра
---- ev_gesture_rotate_startДвижение между двумя касаниями для экземпляра было определено как вращение
---- ev_gesture_rotatingДвижение между двумя касаниями для экземпляра было определено как вращение
---- ev_gesture_rotate_endОтпускание одного (или обоих) касаний для поворота было обнаружено для экземпляра
---- ev_global_gesture_tapОднократное нажатие/прикосновение и отпускание было обнаружено в любой точке помещения
---- ev_global_gesture_double_tapДва быстрых прикосновения/щелчка и отпускания были обнаружены в любой точке комнаты
---- ev_global_gesture_drag_startНачало жеста перетаскивания было обнаружено в любой точке комнаты
---- ev_global_gesture_draggingПрикосновение/нажатие удерживается и перемещается в любую точку комнаты
---- ev_global_gesture_drag_endОтпускание касания/щелчка от перетаскивания было обнаружено в любой точке помещения
---- ev_global_gesture_flickОсвобождение прикосновения/щелчка от перетаскивания имело достаточно движения, чтобы событие щелчка было обнаружено в любой точке комнаты
---- ev_global_gesture_pinch_startДва прикосновения и прямолинейное движение были обнаружены в любой точке комнаты
---- ev_global_gesture_pinch_inДвижение между двумя прикосновениями в любой точке комнаты было зафиксировано как внутреннее
---- ev_global_gesture_pinch_outДвижение между двумя прикосновениями в любой точке комнаты было зафиксировано как движение наружу
---- ev_global_gesture_pinch_endВ любой точке помещения обнаружено отпускание одного (или обоих) прикосновений для защемления
---- ev_global_gesture_rotate_startДвижение между двумя прикосновениями в любой точке комнаты было зарегистрировано как вращение
---- ev_global_gesture_rotatingДвижение между двумя прикосновениями в любой точке комнаты было зафиксировано как вращательное
---- ev_global_gesture_rotate_endВ любой точке помещения обнаружено отпускание одного (или обоих) прикосновений для поворота
ev_collisionСтолкновение с объектом
---- Индекс объекта для проверки.obj_enemy например.
ev_otherОдно из действий, перечисленных в разделе "Другое
---- ev_outsideНаходится ли экземпляр за пределами помещения
---- ev_boundaryПересекается ли экземпляр с границей
---- ev_outside_view0...7Находится ли данный экземпляр за пределами заданного представления (от 0 до 7)
---- ev_boundary_view0...7Пересекается ли данный экземпляр с границей данного вида (от 0 до 7)
---- ev_game_startСрабатывает только в начале игры
---- ev_game_endСрабатывает только в конце игры
---- ev_room_startСрабатывает только в начале комнаты
---- ev_room_endСрабатывает только в конце комнаты
---- ev_animation_endЕсли объект sprite достиг конца своей анимации.
---- ev_animation_updateСобытие анимации, которое выполняется на каждом шаге для объектов, использующих скелетную анимацию
---- ev_animation_eventСобытие анимации, которое выполняется для скелетной анимации, назначенной в инструменте скелетной анимации
---- ev_end_of_pathЕсли объект достиг конца пути, по которому он следует
---- ev_user0... ev_user15Одно из 16 доступных пользовательских событий.
---- ev_broadcast_messageСобытие широковещательного сообщения, используемое для sprites и последовательностей.
ev_drawСобытие рисования. ПРИМЕЧАНИЕ Это событие не может быть принудительным вне события рисования, и константы предназначены только для идентификации события при выполнении в этих случаях.
---- ev_draw_beginСобытие начала жеребьевки.
---- ev_draw_endСобытие окончания розыгрыша.
---- ev_draw_preМероприятие перед жеребьевкой.
---- ev_draw_postСобытие после жеребьевки.
---- ev_guiСобытие рисования.
---- ev_gui_beginСобытие начала рисования.
---- ev_gui_endСобытие окончания рисования.
-

-

Синтаксис:

-

event_perform(type, numb);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
typeТип события ПостояннаяThe type of event to perform (see the table above).
numbРеальный или Номер события ПостояннаяThe specific event constant or value, if one is necessary (otherwise, just use 0).
-

-

Возвращается:

-

N/A

-

-

Расширенный пример

-

Чтобы понять, как можно использовать эту функцию, рассмотрите несколько следующих примеров:

-

event_perform(ev_keypress, ord("W"));

-

Это приведет к выполнению события, связанного с проверкой клавиатуры Нажата клавиша "W" (без фактического создания нажатия клавиши).

-

event_perform(ev_step, ev_step_begin);

-

Это выполнит событие Begin Step (если его вызвать из любого события шага, то код события begin step будет выполнен дважды).

-

event_perform(ev_create, 0);

-

Это приведет к выполнению событияCreate экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_perform_async.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_perform_async.htm index 3f7c07b85..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_perform_async.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_perform_async.htm @@ -1,157 +0,0 @@ - - - - - - event_perform_async - - - - - - - - - - -

event_perform_async

-

Эта функция используется для выполнения любого из асинхронных событий, предусмотренных в GameMaker. Вы передаете константу события Async (показана в таблице ниже) и карту DS, которая будет доступна в вызываемом событии Async, в переменной async_load.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип события Async Постоянная
ПостояннаяОписание
ev_async_web_image_loadСобытие "Изображение загружено
ev_async_webHTTP-событие
ev_async_dialogСобытие диалога
ev_async_web_iapСобытие "Покупка внутри приложения
ev_async_web_cloudОблачное мероприятие
ev_async_web_networkingСетевое мероприятие
ev_async_web_steamПаровое мероприятие
ev_async_socialСоциальное мероприятие
ev_async_push_notificationСобытие Push-уведомления
ev_async_save_loadСохранить/загрузить событие
ev_async_audio_recordingСобытие записи звука
ev_async_audio_playbackСобытие воспроизведения звука
ev_async_system_eventСистемное событие
-

Неасинхронные события могут быть вызваны с помощью event_perform().

-

Обратите внимание, что карту DS, указанную во втором аргументе, не нужно уничтожать вручную, так как она будет автоматически уничтожена функцией после выполнения события Async.

-

-

Синтаксис:

-

event_perform_async(type, ds_map);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
typeТип события Async ПостояннаяThe type of event to perform (see the table above).
ds_mapИдентификатор карты DSThe DS map to use as async_load в вызываемом событии.
-

-

Возвращается:

-

N/A

-

Пример:

-

var _map = ds_map_create();
-
- _map[? "id"] = "custom_async_event";
- _map[? "result"] = true;
- _map[? "data"] = { a: 13, b: 16 };
-
- event_perform_async(ev_async_social, _map); -

-

Приведенный выше код создает карту DS и заполняет ее пользовательскими записями для чтения в событии Async. Затем выполняется событие Async Social с только что созданной картой, переданной в качестве async_load для вызываемого события.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_perform_object.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_perform_object.htm index 14b8ac62e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_perform_object.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_perform_object.htm @@ -1,74 +0,0 @@ - - - - - - event_perform_object - - - - - - - - - - -

event_perform_object

-

Эта функция работает так же, как и event_perform() только на этот раз вы можете указать события от другого объекта. Здесь есть множество опций, которые позволяют полностью смоделировать все возможные события, но обратите внимание, что это буквально просто выполняет весь код в событии, и игра не будет ничего изменять, чтобы заставить его сработать вручную, например, если вы выберете событие нажатия на клавиатуру, событие сработает, но соответствующая клавиша не будет распознана как нажатая. Или если вы выполните событие тревоги, счетчик тревоги не будет установлен на -1, а продолжит отсчет. Полный список доступных констант, необходимых этой функции, можно найти на странице функции event_perform().

-

ПРИМЕЧАНИЕ Действия в событии, вызванном с помощью этой функции, применяются к текущему экземпляру, а не к экземплярам данного объекта.

-

-

Синтаксис:

-

event_perform_object(obj, type, numb);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
objОбъект АктивыThe object that should have its event triggered.
typeТип события ПостояннаяThe type of event to perform.
numbРеальный или событийный номер КонстантаThe specific event, if one is necessary (otherwise, just use 0).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

event_perform_object(obj_Player, ev_keypress, ord("W"));

-

Это выполнит событие, связанное с Keyboard Check Pressed > W key от объекта "obj_Player" в текущем экземпляре.

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_type.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_type.htm index c904ece36..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_type.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_type.htm @@ -1,76 +0,0 @@ - - - - - - event_type - - - - - - - - - - -

event_type

-

Эта переменная, доступная только для чтения, возвращает тип события, выполняемого в данный момент, который может быть одной из следующих констант:

-
    -
  • ev_create
  • -
  • ev_destroy
  • -
  • ev_step
  • -
  • ev_alarm
  • -
  • ev_keyboard
  • -
  • ev_keypress
  • -
  • ev_keyrelease
  • -
  • ev_mouse
  • -
  • ev_collision
  • -
  • ev_other
  • -
  • ev_gesture
  • -
  • ev_draw
  • -
-


- Полный список констант, относящихся к различным событиям, см. event_perform(), а если вам нужен номер события (т.е. под-событие), то вы должны проверить константу event_number.

-

-

Синтаксис:

-

event_type

-

-

Возвращается:

-

Event Type Constant

-

-

Пример:

-

show_debug_message("Current Event = " + string(event_type));

-

Приведенный выше код покажет отладочное сообщение с типом события, которое выполняется в данный момент.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_user.htm index 67bf351a6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Object_Events/event_user.htm @@ -1,62 +0,0 @@ - - - - - - event_user - - - - - - - - - - -

event_user

-

С помощью этой функции вы указываете экземпляру выполнить действия или код, который был помещен в одно из 16 событий, определенных пользователем. Эти события могут быть вызваны только таким образом или с помощью функции event_perform функция.

-

-

Синтаксис:

-

event_user(numb);

- - - - - - - - - - - - - -
АргументТипОписание
numbРеальноThe number of User Event to call, between 0 and 15.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

event_user(4);

-

Это вызовет определяемое пользователем событие 4.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Objects.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Objects.htm index d69e0b822..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Objects.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/Objects.htm @@ -1,75 +0,0 @@ - - - - - - Объекты - - - - - - - - - - -

Объекты

-

В GameMaker есть объекты и есть экземпляры. Объекты, по сути, являются базовым шаблоном для экземпляра, и поэтому никогда не присутствуют в комнате непосредственно... в комнате размещаются только экземпляры объекта. Это - это означает, что если вы хотите изменить что-то для всех экземпляров, которые вы собираетесь создать, то вы можете сделать это, изменив объект.

-

ВАЖНО! Изменение чего-либо в объекте не изменит ни одного экземпляра, присутствующего в комнате в данный момент, только те, которые будут созданы после изменения.

-

Вы также можете получить доступ к информации о базовом объекте и использовать ее, чтобы диктовать поведение или изменения в игре. Например, вы можете проверить ID родительского объекта, и в следующем коде, если экземпляр с таким родителем найден, вы можете проверить - его object_index, чтобы решить, что следует делать.

-

GameMaker предоставляет вам ряд функций, позволяющих получить различные сведения об объекте. Обратите внимание, что объект не является экземпляром (внутриигровой сущностью), это всего лишь ресурс, из которого создаются все экземпляры. Это означает - что возвращаемые значения этих функций могут отличаться от реальных значений, показываемых экземплярами в комнате, так как после создания экземпляра его можно изменить с помощью кода и визуальных действий GML.

-

- -

-

Существует также ряд функций, позволяющих задать свойства объекта. Следует отметить, что все экземпляры этого объекта, которые уже существуют в комнате , могут быть не затронуты этими функциями, но все новые экземпляры этого объекта, созданные в комнате, будут затронуты. - поэтому рекомендуется никогда не изменять свойства объектов, если они присутствуют в текущей комнате.

-

- -

-

Вы также можете использовать определенные функции для генерации событий из кода внутри определенного экземпляра или объекта. Эти функции могут быть очень полезны, особенно при работе с родителями и детьми, - и описаны в следующем разделе:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_exists.htm index 1e9dacac3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_exists.htm @@ -1,69 +0,0 @@ - - - - - - object_exists - - - - - - - - - - - -

object_exists

-

Эта функция возвращает, является ли указанное значение активом объекта (true) или нет (false). Обратите внимание, что эта функция проверяет, присутствует ли объект в браузере активов, а не в игровой комнате. Для этого следует использовать функцию instance_exists().

-

-

Синтаксис:

-

object_exists(obj);

- - - - - - - - - - - -
АргументТипОписание
objThe index of the object to check.
-

-

Возвращается:

-

-

-

Пример:

-

var object_id = buffer_read(net_buffer, buffer_u16);
- var pos_x = buffer_read(net_buffer, buffer_u16);
- var pos_y = buffer_read(net_buffer, buffer_u16);
-
- if (object_exists(object_id))
- {
-     instance_create_layer(pos_x, pos_y, "Instances", object_id);
- } -

-

Приведенный выше код считывает данные из буфера, полученного по сети. Поскольку он содержит идентификатор объекта (используемый для порождения экземпляров), нам сначала нужно убедиться, что значение не является недействительным и что объект действительно существует. Для этого мы вызываем object_exists() в условии, и если оно истинно, мы создаем экземпляр этого объекта в полученной позиции.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_mask.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_mask.htm index afe823ec4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_mask.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_mask.htm @@ -1,64 +0,0 @@ - - - - - - object_get_mask - - - - - - - - - - - -

object_get_mask

-

Эта функция сообщит вам, имеет ли проверяемый объект индекс маски или нет, и если имеет, то вернет индекс этой маски (который является активом sprite ), или -1, если не имеет. Обратите внимание, что это не функция экземпляра! Вы можете иметь объект без маски, а экземпляр этого же объекта может иметь маску, и наоборот, или даже иметь разные маски. Вы можете установить индекс маски отдельного экземпляра с помощью переменной mask_index переменной instance.

-

-

Синтаксис:

-

object_get_mask(obj);

- - - - - - - - - - - -
АргументТипОписание
objThe index of the object to check
-

-

Возвращается:

-

Sprite Asset

-

-

Пример:

-

if (mask_index != object_get_mask(object_index))
- {
-     mask_index = object_get_mask(object_index);
- }

-

В приведенном выше примере индекс маски экземпляра сверяется с маской индекса object_index экземпляра. Если они не совпадают, то экземпляру будет присвоена та же маска, что и у индекса объекта.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_name.htm index 81af52638..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_name.htm @@ -1,62 +0,0 @@ - - - - - - object_get_name - - - - - - - - - - - -

object_get_name

-

Эта функция возвращает имя в виде строки указанного объекта. Это имя - то, которое было указано для объекта в Asset Browser главного окна GameMaker. Обратите внимание, что это только строка - и не может быть использована для прямой ссылки на объект - для этого вам понадобится индекс объекта. Однако вы можете использовать эту строку для получения индекса объекта, используя возвращаемую строку вместе с функцией asset_get_index().

-

-

Синтаксис:

-

object_get_name(obj);

- - - - - - - - - - - -
АргументТипОписание
objThe index of the object to check.
-

-

Возвращается:

-

-

-

Пример:

-

str = object_get_name(object_index);

-

Приведенный выше код получит имя индекса объекта для экземпляра, выполняющего код, и сохранит возвращаемое значение в переменной "str".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_parent.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_parent.htm index 9bba70d0d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_parent.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_parent.htm @@ -1,61 +0,0 @@ - - - - - - object_get_parent - - - - - - - - - - - -

object_get_parent

-

Эта функция получит индекс объекта любого родителя, который был назначен указанному объекту, или вернет -100, чтобы показать, что у объекта нет родителя, или -1, если проверяемый объект не существует. Более подробную информацию о родителях см. в разделе Редактор объектов.

-

-

Синтаксис:

-

object_get_parent(obj);

- - - - - - - - - - - -
АргументТипОписание
objThe index of the object to check
-

-

Возвращается:

-

Object Asset

-

-

Пример:

-

par = object_get_parent(object_index);

-

Приведенный выше код получит родительский индекс объекта для экземпляра, выполняющего код, и сохранит возвращаемое значение в переменной "par".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_persistent.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_persistent.htm index b5ca5c6c1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_persistent.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_persistent.htm @@ -1,64 +0,0 @@ - - - - - - object_get_persistent - - - - - - - - - - - -

object_get_persistent

-

Эта функция сообщит вам, был ли проверяемый объект помечен как "постоянный" или нет. Постоянный объект - это такой объект, все экземпляры которого будут переноситься из комнаты в комнату до тех пор, пока они не будут явно уничтожены. Обратите внимание, что это не функция экземпляра! Таким образом, у вас может быть постоянный объект и непостоянный экземпляр одного и того же объекта, и наоборот. Вы можете установить флаг персистентности отдельного экземпляра с помощью переменной persistent переменной instance.

-

-

Синтаксис:

-

object_get_persistent(obj);

- - - - - - - - - - - -
АргументТипОписание
objThe index of the object to check.
-

-

Возвращается:

-

-

-

Пример:

-

if (!persistent) && (object_get_persistent(object_index))
- {
-     persistent = true;
- }

-

Приведенный выше код проверит запущенный экземпляр на предмет того, является ли он постоянным или нет, а также проверит индекс объекта экземпляра на предмет того, помечен ли он как постоянный или нет. Если экземпляр не является постоянным, но индекс объекта помечен как постоянный, то для этого экземпляра будет установлено значение "persistent" равное true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_physics.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_physics.htm index 7a95987ab..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_physics.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_physics.htm @@ -1,64 +0,0 @@ - - - - - - object_get_physics - - - - - - - - - - - -

object_get_physics

-

Эта функция сообщит вам, был ли проверяемый объект помечен как "физика включена" - в этом случае она вернет true, - или нет - в этом случае она вернет false.

-

-

Синтаксис:

-

object_get_physics(obj);

- - - - - - - - - - - -
АргументТипОписание
objThe index of the object to check.
-

-

Возвращается:

-

-

-

Пример:

-

if object_get_physics(object_index)
- {
-     phy_active = true;
- }

-

Приведенный выше код проверит запущенный экземпляр на предмет того, включен ли в объект, из которого он создан, физический режим, и если включен, то активирует симуляцию физики для данного экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_solid.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_solid.htm index 3f6fb7e8a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_solid.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_solid.htm @@ -1,64 +0,0 @@ - - - - - - object_get_solid - - - - - - - - - - - -

object_get_solid

-

Эта функция сообщит вам, был ли проверяемый объект помечен как "твердый" или нет. Твердый объект генерирует специальное событие столкновения при использовании традиционной системы столкновений (т.е. мир физики отключен). Обратите внимание, что это не функция экземпляра! Таким образом, вы можете иметь твердый объект и обычный экземпляр одного и того же объекта, и наоборот. Флаг твердости отдельного экземпляра можно установить с помощью переменной solid переменной instance.

-

-

Синтаксис:

-

object_get_solid(obj);

- - - - - - - - - - - -
АргументТипОписание
objThe index of the object to check.
-

-

Возвращается:

-

-

-

Пример:

-

if (!solid) && (object_get_solid(object_index))
- {
-     solid = true;
- }

-

Приведенный выше код проверит запущенный экземпляр на предмет того, является ли он цельным или нет, а также проверит индекс объекта экземпляра на предмет того, помечен ли он как цельный или нет. Если экземпляр не является сплошным, но индекс объекта помечен как сплошной, то для этого экземпляра будет установлено значение "solid" равное true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_sprite.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_sprite.htm index 56f988ce4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_sprite.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_sprite.htm @@ -1,65 +0,0 @@ - - - - - - object_get_sprite - - - - - - - - - - - -

object_get_sprite

-

Эта функция сообщит вам, есть ли у проверяемого объекта sprite или нет, и если есть, то вернет индекс этого sprite, или -1, если нет. Обратите внимание, что это не функция экземпляра! Вы можете иметь объект без sprite, в то время как экземпляр этого же объекта может иметь его и наоборот, или даже иметь разные sprites. Вы можете установить индивидуальный экземпляр sprite с помощью sprite_index переменную instance.

-

-

Синтаксис:

-

object_get_sprite(obj);

- - - - - - - - - - - -
АргументТипОписание
objThe index of the object to check
-

-

Возвращается:

-

Sprite Asset

-

-

Пример:

-

var _spr = object_get_sprite(object_index);
- if (sprite_index != _spr)
- {
-     sprite_index = _spr;
- }

-

В приведенном выше примере sprite_index экземпляра будет сверен с sprite экземпляра object_index. Если они не совпадают, то экземпляру будет присвоен тот же sprite, что и индексу объекта.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_visible.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_visible.htm index 3e69d9d63..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_visible.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_get_visible.htm @@ -1,64 +0,0 @@ - - - - - - object_get_visible - - - - - - - - - - - -

object_get_visible

-

Эта функция сообщит вам, был ли проверяемый объект отмечен как "видимый" (запускает событие рисования) или нет (не запускает событие рисования). Обратите внимание, что это не функция экземпляра! Таким образом, у вас может быть видимый объект и невидимый экземпляр одного и того же объекта, и наоборот. Вы можете установить видимость отдельного экземпляра с помощью переменной visible переменной instance.

-

-

Синтаксис:

-

object_get_visible(obj);

- - - - - - - - - - - -
АргументТипОписание
objThe index of the object to check.
-

-

Возвращается:

-

-

-

Пример:

-

if (!visible) && (object_get_visible(object_index))
- {
-     visible = true;
- }

-

Приведенный выше код проверит запущенный экземпляр на предмет того, виден он или нет, а также проверит индекс объекта экземпляра на предмет того, отмечен ли он как видимый или нет. Если экземпляр не виден, но индекс объекта отмечен как включенный, то для этого экземпляра будет установлено значение "visible" равное true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_index.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_index.htm index 539d45e8e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_index.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_index.htm @@ -1,48 +0,0 @@ - - - - - - object_index - - - - - - - - - - -

object_index

-

Эта переменная, доступная только для чтения, возвращает индекс объекта, на основе которого был создан данный экземпляр. Это не то же самое, что имя объекта, которое является строкой и может быть найдено с помощью функции object_get_name(), поскольку эта функция возвращает номер индекса, который является уникальным значением, присваиваемым GameMaker каждому объекту в момент создания.

-

-

Синтаксис:

-

object_index

-

-

Возвращается:

-

Object Asset

-

-

Пример:

-

obj_name = object_get_name(object_index);

-

Приведенный выше код будет использовать object_index для поиска имени объекта, из которого был создан текущий экземпляр.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_is_ancestor.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_is_ancestor.htm index f56016e3f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_is_ancestor.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_is_ancestor.htm @@ -1,71 +0,0 @@ - - - - - - object_is_ancestor - - - - - - - - - - - -

object_is_ancestor

-

Эта функция может быть использована для проверки объекта и выяснения, является ли он предком или нет другого объекта. Таким образом, оба аргумента должны быть индексами объектов, а не идентификаторами экземпляров, и первый аргумент всегда является объектом, который вы хотите выяснить, является ли он дочерним для второго аргумента, который всегда является объектом, который вы хотите проверить как предка (родителя).

-

-

Синтаксис:

-

object_is_ancestor(obj, par);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
objОбъект АктивыThe object that is being checked as the child.
parОбъект АктивыThe object that is being checked as the ancestor (parent).
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if object_is_ancestor(object_index, obj_Enemy)
- {
-     instance_destroy();
- }

-

Приведенный выше код проверяет, является ли экземпляр, выполняющий код, дочерним объектом объекта "obj_Enemy", и если да, то он уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_mask.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_mask.htm index c519463bd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_mask.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_mask.htm @@ -1,71 +0,0 @@ - - - - - - object_set_mask - - - - - - - - - - -

object_set_mask

-

С помощью этой функции вы можете установить mask_index определенного объекта (более подробную информацию о масках см. в разделе Редактор объектов). Это означает, что все экземпляры этого объекта, созданные после изменения маски, будут созданы с этой новой маской, в то время как экземпляры, уже находящиеся в комнате, могут быть не затронуты. Вы можете установить значение -1, чтобы удалить маску sprite и по умолчанию использовать маску, определенную для sprite объекта (или без маски, если не было выбрано sprite ).

-

Обратите внимание, что это не функция экземпляра! Вы можете установить индекс маски отдельных экземпляров с помощью переменной mask_index и таким образом иметь десять экземпляров с маской, отличной от маски объекта, из которого они созданы, и даже если вы измените индекс маски объекта с помощью этой функции, все экземпляры, находящиеся в комнате в данный момент, останутся такими, какими они были, и только экземпляры, созданные после вызова функции, начнут работать с новой маской.

-

-

Синтаксис:

-

object_set_mask(index, spr);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexОбъект АктивыThe index of the object to change.
sprАктив спрайтаThe new sprite to use as the object's mask.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (global.level == 10)
- {
-     object_set_mask(obj_platform, spr_mask_10);
- }

-

Приведенный выше код проверяет значение глобальной переменной и затем изменяет индекс маски объекта "obj_Platform", если он равен десяти.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_persistent.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_persistent.htm index 7a4472d9a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_persistent.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_persistent.htm @@ -1,73 +0,0 @@ - - - - - - object_set_persistent - - - - - - - - - - -

object_set_persistent

-

С помощью этой функции вы можете установить постоянство определенного объекта. Постоянный объект "переносится" из комнаты в комнату и сохраняет свои свойства в любое время (более подробную информацию о постоянстве см. в разделе " Редактор объектов"). Установка персистентности объекта означает, что все экземпляры этого объекта, созданные после изменения персистентности, будут созданы персистентными, в то время как экземпляры, уже находящиеся в комнате, могут быть не затронуты.

-

Когда вы создаете экземпляр с включенной персистентностью в комнате, ему будет назначен слой или глубина (в зависимости от того, какую функцию вы использовали для создания экземпляра объекта). При смене комнаты, если в следующей комнате нет слоя с тем же именем или глубиной, что и назначенный, то для экземпляра будет создан новый слой, сохраняющийся между комнатами. Если при создании экземпляра вы присвоили слою имя, то новый слой также будет называться так же, как и исходный слой, а если вы присвоили экземпляру глубину, то новый слой будет называться "_layer_XXX", где "XXX" - шестнадцатеричное значение, используемое для присвоения слою уникального имени. Эти слои будут удалены из комнаты при завершении работы комнаты. Еще один момент, связанный со слоями и постоянными экземплярами: если при создании экземпляра вы назначили ему слой с именем, а в следующих комнатах есть другой слой с тем же именем, то постоянный экземпляр будет назначен слою с тем же именем, независимо от глубины слоя. Наконец, если сохраняемый экземпляр перемещается в комнату со слоем на той же глубине, на которой он был создан, он не будет назначен этому слою, а вместо него будет создан новый слой на той же глубине (в соответствии с соглашением об именовании, описанным ранее).

-

Обратите внимание, что это не функция экземпляра! Вы можете установить постоянный флаг отдельных экземпляров с помощью переменной persistent и таким образом иметь десять экземпляров, помеченных как постоянные, даже если у данного объекта этот флаг установлен в false на сайте IDE, и даже если вы измените флаг постоянства объекта на true с помощью этой функции, все экземпляры, которые в данный момент находятся в комнате, останутся такими, какими они были, и только экземпляры, созданные после вызова функции, будут начинаться с флагом постоянства, помеченным как true.

-

-

Синтаксис:

-

object_set_persistent(index, pers);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexОбъект АктивыThe index of the object to change.
persБулевоWhether the object should be flagged as persistent (true) или нет (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (room == rm_final)
- {
-     object_set_persistent(obj_Player, false);
- }
- instance_create_layer(32, 32, "Instances", obj_Player);

-

Приведенный выше код проверяет, в какой комнате в данный момент находится экземпляр, и если он находится в указанной "rm_final", то он устанавливает постоянство объекта "obj_Player" на false, а затем создает экземпляр.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_solid.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_solid.htm index b4414e6ce..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_solid.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_solid.htm @@ -1,71 +0,0 @@ - - - - - - object_set_solid - - - - - - - - - - -

object_set_solid

-

С помощью этой функции вы можете отметить конкретный объект как твердый или нет (более подробную информацию о флаге "твердый" см. в разделе " Редактор объектов"). Это означает, что все экземпляры этого объекта, созданные после изменения параметра solid, будут созданы с этим новым состоянием, в то время как экземпляры, уже находящиеся в комнате, могут быть не затронуты.

-

Обратите внимание, что это не функция экземпляра! Вы можете установить флаг solid для отдельных экземпляров с помощью переменной solid и таким образом получить десять экземпляров, помеченных как solid, даже если для данного объекта установлен флаг false в IDE, и даже если вы измените флаг solid объекта на true с помощью этой функции, все экземпляры, которые в данный момент находятся в комнате, останутся такими, какими они были, и только экземпляры, созданные после вызова функции, будут начинаться с флагом solid, помеченным как true.

-

-

Синтаксис:

-

object_set_solid( index, solid );

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexОбъект АктивыThe index of the object to change.
solidБулевоThe new solidity of the object (true= твердый, false= не твердый).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if !object_get_solid(obj_Block)
- {
-     object_set_solid(obj_Block, true);
- }

-

Приведенный выше код проверяет флаг solid объекта "obj_Block", и если он равен false, то он изменяется на true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_sprite.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_sprite.htm index 738e70a65..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_sprite.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_sprite.htm @@ -1,74 +0,0 @@ - - - - - - object_set_sprite - - - - - - - - - - -

object_set_sprite

-

С помощью этой функции вы можете установить индекс sprite определенного объекта. Это означает, что все экземпляры этого объекта, которые будут созданы после изменения sprite_index, будут созданы с этим новым sprite_index, в то время как экземпляры, которые уже находятся в комнате, могут быть не затронуты.

-

Обратите внимание, что это не функция экземпляра! Вы можете установить индекс sprite отдельных экземпляров с помощью переменной sprite_index и таким образом иметь десять экземпляров с индексом sprite, отличным от индекса объекта, из которого они созданы, и даже если вы измените индекс sprite объекта с помощью этой функции, все экземпляры, находящиеся в комнате в данный момент, останутся такими, какими они были, и только экземпляры, созданные после вызова функции, будут начинаться с нового sprite.

-

-

Синтаксис:

-

object_set_sprite( index, spr );

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexОбъект АктивыThe index of the object to change.
sprАктив спрайтаThe sprite to assign to the object.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

switch (room)
- {
-     case rm_start: object_set_sprite(obj_Player, spr_uniform); break;
-     case rm_middle: object_set_sprite(obj_Player, spr_swimsuit); break;
-     case rm_end: object_set_sprite(obj_Player, spr_casual); break;
- }
- instance_create_layer(32, 32, "Instances", obj_Player);

-

Приведенный выше код установит индекс объекта "obj_Player" sprite на разные значения в зависимости от комнаты, в которой в данный момент находится экземпляр, выполняющий код. Затем создается экземпляр "obj_Player".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_visible.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_visible.htm index 4827ba62d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_visible.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Objects/object_set_visible.htm @@ -1,71 +0,0 @@ - - - - - - object_set_visible - - - - - - - - - - -

object_set_visible

-

С помощью этой функции вы можете отметить определенный объект как видимый или нет (более подробную информацию о флаге "видимый" см. в разделе " Редактор объектов"). Это означает, что все экземпляры этого объекта, созданные после изменения параметра visible, будут созданы с этим новым состоянием, в то время как экземпляры, уже находящиеся в комнате, могут быть не затронуты.

-

Обратите внимание, что это не функция экземпляра! Вы можете установить флаг видимости отдельных экземпляров с помощью переменной visible и таким образом иметь десять экземпляров, помеченных как видимые, даже если у данного объекта флаг установлен в false на сайте IDE, и даже если вы измените флаг видимости объекта на true с помощью этой функции, все экземпляры, которые в данный момент находятся в комнате, останутся такими, какими они были, и только экземпляры, созданные после вызова функции, будут начинаться с флагом видимости, помеченным как true.

-

-

Синтаксис:

-

object_set_visible( index, vis );

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexОбъект АктивыThe index of the object to change.
visБулевоThe new visibility of the object (true=видимый, false=невидимый).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if !object_get_visible(obj_Block)
- {
-     object_set_visible(obj_Block, true);
- }

-

Приведенный выше код проверяет флаг видимости объекта "obj_Block", и если он ложный, то он изменяется на истинный.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/Path_Manipulation.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/Path_Manipulation.htm index ded424842..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/Path_Manipulation.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/Path_Manipulation.htm @@ -1,63 +0,0 @@ - - - - - - Манипуляция путями - - - - - - - - - - -

Манипуляция путями

-

В GameMaker вы не ограничены только путями, которые вы создаете с помощью редактора путей. Существует ряд функций, которые можно использовать - для манипулирования и изменения этих путей во время выполнения, или даже для создания новых путей и последующего изменения и манипулирования ими.

-

Для изменения путей используются следующие функции:

-

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_add.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_add.htm index 3059830be..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_add.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_add.htm @@ -1,48 +0,0 @@ - - - - - - path_add - - - - - - - - - - -

path_add

-

С помощью этой функции вы можете создать путь в GameMaker без использования редактора путей. Эта функция возвращает индекс пути, который должен быть сохранен в переменной и в дальнейшем использоваться в качестве ссылки для этого пути. Обратите внимание, что созданный путь пуст, то есть в нем нет определенных точек, поэтому вам придется использовать другие доступные функции для добавления точек к пути или использовать сетки MP для генерации пути. После того, как вы закончили использовать путь или хотите создать новый и сохранить его индекс в той же переменной, сначала удалите старый путь с помощью функции path_delete чтобы предотвратить утечку памяти, которая может привести к краху игры.

-

-

Синтаксис:

-

path_add();

-

-

Возвращается:

-

Path Asset

-

-

Пример:

-

global.newpath = path_add();

-

Это создаст новый путь и присвоит его индекс global.newpath.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_add_point.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_add_point.htm index 2f3d13082..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_add_point.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_add_point.htm @@ -1,82 +0,0 @@ - - - - - - path_add_point - - - - - - - - - - -

path_add_point

-

С помощью этой функции можно добавить точку к заданному пути и установить коэффициент ее скорости. Эта точка добавляется в конец пути, независимо от положения точки, а коэффициент равен проценту от path_speed скорости, с которой движется следующий экземпляр, когда он достигает этой точки пути. Если вы хотите поместить точку пути в какую-либо другую позицию, не являющуюся концом, используйте path_insert_point().

-

Если функция используется для пути из браузера ассетов, обратите внимание, что она изменит фактический актив и, таким образом, навсегда повлияет на то, как этот путь используется всеми экземплярами в игре с момента использования функции и до конца игры. Если это не то, что вам нужно, используйте функцию типа path_duplicate(), чтобы сначала создать копию пути, а затем вызовите эту функцию на дублированном активе (не забудьте вызвать path_delete() на активе, когда он больше не нужен).

-

-

Синтаксис:

-

path_add_point(index, x, y, speed);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexПуть АктиваThe index of the path to add the point to.
xРеальноThe x coordinate of the new point.
yРеальноThe y coordinate of the new point.
speedРеальноThe speed factor of the point (default value is 100).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

my_path = path_add();
- for (var i = 0; i <= 360; i += 36)
- {
-     path_add_point(my_path, x + lengthdir_x(50, i), y + lengthdir_y(50, i), 100);
- }

-

Приведенный выше код создаст круговой путь вокруг позиции x/y экземпляра, выполняющего код.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_append.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_append.htm index 510b096db..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_append.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_append.htm @@ -1,66 +0,0 @@ - - - - - - path_append - - - - - - - - - - -

path_append

-

С помощью этого кода вы можете добавить один путь к другому, эффективно соединив их вместе. Для того чтобы это сработало, оба пути должны существовать ранее. В общем случае вы захотите использовать эту функцию для путей, созданных с помощью path_add(), так как если вы используете ее на активе пути, она будет постоянно влиять на путь для экземпляров в игре с момента использования функции и до конца игры.

-

ПРИМЕЧАНИЕ Это не удалит добавляемый путь из игры. Он все еще там, только теперь в нем нет точек, и если вы больше не хотите его использовать, вам следует удалить его с помощью функции path_delete().

-

-

Синтаксис:

-

path_append(index, path);

- - - - - - - - - - - - - - - -
АргументТипОписание
indexThe new index of the path.
pathThe index of the path that will be appended to 'index'.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

path_append(mypath, mppath);
- path_delete(mppath);

-

Приведенный выше код добавляет данные пути, указанные в переменной "mppath", к пути, указанному в переменной "mypath", а затем удаляет "mppath" из памяти.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_assign.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_assign.htm index 69a363d2b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_assign.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_assign.htm @@ -1,68 +0,0 @@ - - - - - - path_assign - - - - - - - - - - - -

path_assign

-

С помощью этой функции можно скопировать данные пути с одного пути на другой. Путь, в который копируется, сначала очищается (если в нем есть точки пути) и полностью перезаписывается путем - из которого копируется. При этом ни один из путей не удаляется, и в результате получаются два пути с двумя разными индексами, но совершенно одинаковой формой и точками. В общем случае вы захотите использовать эту функцию на пути, созданном с помощью path_add(), - так как если вы используете ее на активе пути, она будет постоянно влиять на путь для всех экземпляров в игре с момента использования функции и до конца игры.

-

-

Синтаксис:

-

path_assign(index, path);

- - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the path to be overwritten.
pathThe index of the path that will overwrite 'index'.
-

-

Возвращается:

-

-

-

Пример:

-

mypath = path_add();
path_assign(mypath, choose(path_1, path_2, path_3));

-

Приведенный выше код создаст новый пустой путь, индексированный в переменной "mypath", а затем скопирует данные пути из одного из трех доступных ресурсов путей.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_change_point.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_change_point.htm index 75501eb7c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_change_point.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_change_point.htm @@ -1,87 +0,0 @@ - - - - - - path_change_point - - - - - - - - - - -

path_change_point

-

С помощью этой функции можно изменить положение и/или коэффициент скорости любой точки, ранее определенной для пути (путь может быть создан в редакторе путей или в коде с помощью функции path_add()). Если функция используется для пути из браузера активов, обратите внимание, что она изменит фактический актив, а значит, навсегда повлияет на то, как этот путь используется всеми экземплярами в игре с момента использования функции и до конца игры. Если это не то, что вам нужно, используйте функцию типа path_duplicate(), чтобы сначала создать копию пути, а затем вызовите эту функцию на дублированном активе (не забудьте вызвать path_delete() на активе, когда он больше не нужен).

-

-

Синтаксис:

-

path_change_point(index, n, x, y, speed);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexПуть АктиваThe index of the path to change a point of.
nРеальноThe defining point to change the attributes of.
xРеальноThe new x coordinate (relative to the path) of the point.
yРеальноThe new y coordinate (relative to the path) of the point.
speedРеальноThe new speed factor of the point.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

for (var i = 0; i < path_get_number(path0); ++i;)
- {
-     var px = path_get_point_x(pth_Patrol, i) + 64 - random(128);
-     var py = path_get_point_y(pth_Patrol, i) + 64 - random(128);
-     path_change_point(pth_Patrol, i, px, py, 100);
- }

-

Приведенный выше код перебирает все точки пути, индексированные как "path0", и переставляет все точки в случайное положение в области размером 128x128 пикселей.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_clear_points.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_clear_points.htm index b98dd3758..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_clear_points.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_clear_points.htm @@ -1,64 +0,0 @@ - - - - - - path_clear_points - - - - - - - - - - -

path_clear_points

-

С помощью этой функции можно удалить все определения точек из контура, создавая "пустой" контур. Это не удаляет путь, для этого следует использовать функцию path_delete()Однако следует отметить, что эта функция изменяет фактический актив пути и, следовательно, будет постоянно влиять на то, как этот путь используется всеми экземплярами в игре с момента использования функции и до конца игры. Если это не то, что вам нужно, то вам следует использовать функцию типа path_duplicate() для создания копии пути, а затем вызвать эту функцию на дублированном активе (не забудьте вызвать path_delete() на активе, когда он больше не нужен).

-

-

Синтаксис:

-

path_clear_points(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the path to clear.
-

-

Возвращается:

-

-

-

Пример:

-

if path_get_number(mypath) > 0
- {
-     path_clear_points(mypath);
- }

-

Приведенный выше код проверяет, есть ли точки на пути, проиндексированном в переменной "mypath", и если есть, то очищает путь.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_delete.htm index 637a8be56..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_delete.htm @@ -1,67 +0,0 @@ - - - - - - path_delete - - - - - - - - - - -

path_delete

-

Вы можете использовать этот код для удаления пути из памяти. Если этот путь был создан динамически с помощью функции path_add()то переменная, содержащая индекс пути, больше не будет действительна для доступа к пути, поскольку он больше не существует, а если путь был создан с помощью редактора путей, то к нему больше нельзя будет обратиться во всей игре, поскольку вы удаляете его навсегда.

-

-

Синтаксис:

-

path_delete(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the path to delete.
-

-

Возвращается:

-

-

-

Пример:

-

-

var t_path = path_add();
- if (mp_grid_path(grid, t_path, x, y, obj_Player.x, obj_Player.y, 1))
- {
-     path_assign(mypath, t_path);
- }
- path_delete(t_path);

-

Приведенный выше код создаст путь и сохранит его индекс в локальной переменной. Этот путь затем используется для хранения mp_grid_path() сгенерированный путь, который, если ему удастся найти путь к цели, будет присвоен пути, индексированному в "mypath". Наконец, "t_path" удаляется.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_delete_point.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_delete_point.htm index 1bade2c82..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_delete_point.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_delete_point.htm @@ -1,85 +0,0 @@ - - - - - - path_delete_point - - - - - - - - - - -

path_delete_point

-

С помощью этой функции можно удалить точку из указанного пути. Точки пути нумеруются от 0, поэтому первая точка всегда будет 0-й, а последняя точка пути будет path_get_number() - 1. Если вы вызовете эту функцию на активе пути, то удаление точки будет постоянным, и все экземпляры, назначенные этому пути в будущем, будут лишены удаленной точки. Если это не то, что вам нужно, то следует использовать функцию типа path_duplicate() для создания копии пути, а затем вызвать эту функцию на дублированном активе (не забудьте вызвать path_delete() на активе, когда он больше не нужен).

-

-

Синтаксис:

-

path_delete_point(ind, n);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexПуть АктиваThe index of the path to delete a point from.
nРеальноThe defining point to delete.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _col = true;
- while (_col)
- {
-     var _num = path_get_number(mypath) - 1;
-     if (_num > 2)
-     {
-         var _x1 = path_get_point_x(my_path, _num);
-         var _y1 = path_get_point_y(my_path, _num);
-         var _x2 = path_get_point_x(my_path, _num -1);
-         var _y2 = path_get_point_y(my_path, _num -1);
-         if (collision_line(_x1, _y1, _x2, _y2, obj_Wall, true, false))
-         {
-             path_delete_point(mypath, _num);
-             _num -= 1;
-         }
-         else _col = false;
-     }
-     else _col = false;
- }

-

Приведенный выше код генерирует цикл, который проверяет точки на обратном пути от конца на предмет столкновения с заданным объектом. Если столкновение найдено, точка пути удаляется до тех пор, пока не произойдет столкновение или путь не станет длиной всего 2 точки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_duplicate.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_duplicate.htm index e1eca8056..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_duplicate.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_duplicate.htm @@ -1,60 +0,0 @@ - - - - - - path_duplicate - - - - - - - - - - -

path_duplicate

-

Эта функция принимает путь и копирует его в новый путь. Новый путь создается в процессе, и его индекс возвращается для использования во всех дальнейших вызовах для использования этого нового пути.

-

-

Синтаксис:

-

path_duplicate(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the existing path to duplicate.
-

-

Возвращается:

-

Path Asset

-

-

Пример:

-

mypath = path_duplicate(choose(pth_1, pth_2, pth_3, pth_4));

-

Приведенный выше код выбирает один из четырех ресурсов пути и дублирует его, сохраняя индекс нового пути в переменной "mypath".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_exists.htm index 005d373b9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_exists.htm @@ -1,67 +0,0 @@ - - - - - - path_exists - - - - - - - - - - - -

path_exists

-

Эта функция возвращает, существует ли путь с заданным индексом или нет. Обратите внимание, что если вы проверяете существование пути через переменную, которая еще не была объявлена, это приведет к ошибке.

-

-

Синтаксис:

-

path_exists(index);

-

- - - - - - - - - - - - - -
АргументТипОписание
indexПуть АктиваThe index of the path to check for.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if (path_exists(my_path))
- {
-     path_delete(my_path);
- }

-

Этот код проверяет, хранится ли в данной переменной индекс пути, и если да, то путь удаляется из памяти.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_flip.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_flip.htm index af35eed35..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_flip.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_flip.htm @@ -1,61 +0,0 @@ - - - - - - path_flip - - - - - - - - - - -

path_flip

-

Эта функция берет все точки пути и переворачивает их вдоль горизонтальной оси. Если это не то, что вам нужно, то используйте функцию path_duplicate() для создания копии пути, а затем вызовите эту функцию на дублированном активе(не забудьте вызвать path_delete() на активе, когда он больше не нужен).

-

Path flip example

-

Синтаксис:

-

path_flip(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the path to flip.
-

-

Возвращается:

-

-

-

Пример:

-

path_flip(mypath);

-

Это перевернет путь, указанный в переменной "mypath", вдоль горизонтальной оси.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_insert_point.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_insert_point.htm index cee3ffe1a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_insert_point.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_insert_point.htm @@ -1,82 +0,0 @@ - - - - - - path_insert_point - - - - - - - - - - -

path_insert_point

-

С помощью этой функции можно вставить новую точку в контур (контур может быть создан в редакторе контуров или в коде с помощью функции path_add()). Точка будет добавлена в контур перед точкой "n", указанной в функции.

-

-

Синтаксис:

-

path_insert_point(index, n, x, y, speed);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexПуть АктиваThe index of the path to insert the point into.
nРеальноThe defining point to insert the new point BEFORE.
xРеальноThe x coordinate (relative to the path) of the new point.
yРеальноThe y coordinate (relative to the path) of the new point.
speedРеальноThe speed factor of the point.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

path_insert_point(mypath, 0, 50, 50, 100);

-

Это вставит точку в самом начале пути, индексированного в переменной "mypath", в точке (50,50), с коэффициентом скорости 100%.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_mirror.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_mirror.htm index 17ca4e73e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_mirror.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_mirror.htm @@ -1,63 +0,0 @@ - - - - - - path_mirror - - - - - - - - - - -

path_mirror

-

Эта функция берет все точки пути и зеркально отражает их вдоль вертикальной оси. Эта функция изменяет фактический актив пути, и поэтому будет постоянно влиять на то, как путь используется всеми экземплярами в игре с момента использования функции - используется до конца игры. Если это не то, что вам нужно, то следует использовать функцию типа path_duplicate(), чтобы сначала создать копию пути, а затем вызвать эту функцию на - дублированном активе (не забудьте вызвать path_delete() на активе, когда он больше не нужен).

-

Path mirror example

-

Синтаксис:

-

path_mirror(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the path to mirror.
-

-

Возвращается:

-

-

-

Пример:

-

path_mirror(mypath);

-

При этом путь, указанный в переменной "mypath", будет зеркально отражен вдоль вертикальной оси.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_rescale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_rescale.htm index c0ea3182b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_rescale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_rescale.htm @@ -1,70 +0,0 @@ - - - - - - path_rescale - - - - - - - - - - -

path_rescale

-

Эта функция может быть использована для изменения масштаба заданного пути по вертикальной и горизонтальной оси, перемещая каждую из точек пути в новое положение, соответствующее этому масштабу, вокруг центра пути. Эта функция изменяет фактический актив пути, - и таким образом постоянно влияет на то, как этот путь используется всеми экземплярами в игре с момента использования функции до конца игры. Если это не то, что вам нужно, то следует использовать функцию типа path_duplicate() для создания копии пути, а затем вызвать эту функцию на дублированном активе (не забудьте вызвать path_delete() на активе, когда он больше не нужен).

-

-

Синтаксис:

-

path_rescale(index, xscale, yscale);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the path to scale.
xscaleWhat to multiply the current horizontal scale by. Default scale is 1.
yscaleWhat to multiply the current vertical scale by. Default scale is 1.
-

-

Возвращается:

-

-

-

Пример:

-

path_rescale(pth_AI, 3, 3);

-

Это изменит масштаб заданного пути до трехкратного исходного размера.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_reverse.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_reverse.htm index 1d6cc6c0c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_reverse.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_reverse.htm @@ -1,64 +0,0 @@ - - - - - - path_reverse - - - - - - - - - - -

path_reverse

-

С помощью этой функции можно изменить порядок нумерации отдельных точек пути, например, если путь состоит из 5 точек, то точка 0 станет точкой 4, точка 1 станет точкой 3, а точка 2 останется неизменной. Фактическое положение - точек остается неизменным, меняется только порядок их обработки. Эта функция изменяет фактический актив пути, поэтому она будет постоянно влиять на то, как этот путь используется всеми экземплярами в игре с момента ее использования и до конца игры. - функция используется до конца игры. Если это не то, что вам нужно, то вам следует использовать функцию типа path_duplicate(), чтобы сначала создать копию пути, а затем вызвать эту функцию - на дублированном активе (не забудьте вызвать path_delete() на активе, когда он больше не нужен).

-

-

Синтаксис:

-

path_reverse(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the path to change.
-

-

Возвращается:

-

-

-

Пример:

-

path_reverse(pth_AI);

-

Это изменит порядок обработки всех точек на данном пути.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_rotate.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_rotate.htm index 06e1d9c6b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_rotate.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_rotate.htm @@ -1,69 +0,0 @@ - - - - - - path_rotate - - - - - - - - - - -

path_rotate

-

Вы можете использовать эту функцию для поворота заданного пути вокруг его центра. Помните, что в GameMaker (если вы не используете физику) углы рассчитываются против часовой стрелки, поэтому поворот пути на 90 градусов повернет его влево. Эта функция изменяет фактический ресурс пути, поэтому она будет постоянно влиять на то, как этот путь используется всеми экземплярами в игре с момента использования функции и до конца игры. Если это не то, что вам нужно, то следует использовать функцию типа path_duplicate(), чтобы сначала создать копию пути, а затем вызвать эту функцию на дублированном активе (не забудьте вызвать path_delete() на активе, когда он больше не нужен).

-

Rotate path example

-

ПРИМЕЧАНИЕ: После назначения пути экземпляру с помощью функции path_start() можно использовать переменную path_orientation для изменения поворота пути.

-

-

Синтаксис:

-

path_rotate(index, angle);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexПуть АктиваThe index of the path to flip.
angleРеальноThe angle of rotation degrees.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

path_rotate(pth_Patrol, 90);

-

Это повернет заданную величину на 90 градусов против часовой стрелки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_set_closed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_set_closed.htm index 8ef1691bd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_set_closed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_set_closed.htm @@ -1,68 +0,0 @@ - - - - - - path_set_closed - - - - - - - - - - -

path_set_closed

-

Эта функция может быть использована для обозначения заданного пути как открытого (false) или закрытого (true). У замкнутого пути начальная точка соединена с конечной, образуя петлю, а у открытого пути начало и конец окончательно не соединены. Если это не то, что вам нужно, используйте функцию path_duplicate() для создания копии пути, а затем вызовите эту функцию на дублированном активе(не забудьте вызвать path_delete() на активе, когда он больше не нужен).

-

-

-

Синтаксис:

-

path_set_closed(index, closed);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexПуть АктиваThe index of the path to change.
closedБулевоWhether the path is closed (true) or not (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

path_set_closed(pth_Patrol, true);

-

Это установит заданный путь как замкнутый.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_set_kind.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_set_kind.htm index 9b35ebe5f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_set_kind.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_set_kind.htm @@ -1,69 +0,0 @@ - - - - - - path_set_kind - - - - - - - - - - -

path_set_kind

-

С помощью этой функции можно задать вид пути, которым должен быть указанный ресурс. Это может быть либо прямой путь (значение 0), либо сглаженный путь (значение 1), и в этом случае необходимо учитывать точность пути (точность можно установить с помощью функции - может быть задана с помощью path_set_precision()). Эта функция изменяет фактический ресурс пути, и поэтому будет постоянно влиять на то, как путь используется всеми экземплярами в игре с момента - Если это не то, что вам нужно, то вам следует использовать функцию типа path_duplicate() для создания копии пути, а затем вызвать эту функцию на дублированном активе. - на дублированном активе (не забудьте вызвать path_delete() на активе, когда он больше не нужен).

-

Path kind example

-

-

Синтаксис:

-

path_set_kind(index, val);

- - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the path to change.
valThe kind of the path, 0 for straight or 1 for smooth.
-

-

Возвращается:

-

-

-

Пример:

-

path_set_kind(pth_Patrol, true);

-

Это установит заданный путь как "гладкий" путь.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_set_precision.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_set_precision.htm index 1e27b01e0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_set_precision.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_set_precision.htm @@ -1,67 +0,0 @@ - - - - - - path_set_precision - - - - - - - - - - -

path_set_precision

-

С помощью этой функции можно изменить "гладкость" контура. Значение должно быть от 1 до 8, при этом низкое значение создает более прямые края с более резкими изгибами между точками, а более высокое значение округляет точки и делает контур более "кривым". Обратите внимание, что эта функция не будет иметь видимого эффекта, если путь не был установлен на сглаживание в редакторе путей или с помощью функции path_set_kind(). Эта функция изменяет фактический актив пути, поэтому она будет постоянно влиять на то, как этот путь используется всеми экземплярами в игре с момента использования функции и до конца игры. Если это не то, что вам нужно, используйте функцию path_duplicate() для создания копии пути, а затем вызовите эту функцию на дублированном активе (не забудьте вызвать path_delete() на активе, когда он больше не нужен).

-

Path Precision differences example

-

Синтаксис:

-

path_set_precision(index, prec);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexПуть АктиваThe index of the path to change.
precРеальноThe precision of the path. Must be an integer between 1 and 8.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

path_set_precision(pth_Patrol, 2);

-

Это установит точность заданного пути равной 2.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_shift.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_shift.htm index e36cab581..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_shift.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Manipulation/path_shift.htm @@ -1,72 +0,0 @@ - - - - - - path_shift - - - - - - - - - - -

path_shift

-

С помощью этой функции можно сдвинуть путь по горизонтальной и вертикальной оси. Обратите внимание, что это не будет иметь видимого эффекта в игре, если экземпляр, следующий за смещаемым путем, следует за ним относительно (а не абсолютно), так как в этом случае его - позиция пути в этом случае не учитывается. Эта функция изменяет фактический актив пути и, таким образом, постоянно влияет на то, как этот путь используется всеми экземплярами в игре с момента использования функции до конца игры. Если это - это не то, что вам нужно, то вам следует использовать функцию типа path_duplicate(), чтобы сначала создать копию пути, а затем вызвать эту функцию на дублированном активе (не забудьте вызвать - path_delete() на активе, когда он больше не нужен).

-

-

Синтаксис:

-

path_shift(index, xshift, yshift);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the path to change.
xshiftThe number of horizontal pixels to shift the path. Negative=left, positive=right.
yshiftThe number of vertical pixels to shift the path. Negative=up, positive=down.
-

-

Возвращается:

-

-

-

Пример:

-

my_path = path_duplicate(pth_AI);
path_shift(my_path, 50, 50);
path_start(my_path, 4, path_action_reverse, true);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/Path_Variables.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/Path_Variables.htm index 7d8d4f578..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/Path_Variables.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/Path_Variables.htm @@ -1,50 +0,0 @@ - - - - - - Переменные пути - - - - - - - - - - -

Переменные пути

-

Следующие переменные встроены во все экземпляры при создании и могут быть использованы для получения информации о пути или для изменения определенных свойств:

-

- -

-

Обратите внимание, что дополнительную информацию о переменных экземпляра вы можете найти здесь: Переменные экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_endaction.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_endaction.htm index d929e517d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_endaction.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_endaction.htm @@ -1,86 +0,0 @@ - - - - - - path_endaction - - - - - - - - - - -

path_endaction

-

Эта переменная может быть использована для получения или изменения реакции экземпляра, когда он достигает конца текущего пути. Обычно вы устанавливаете это значение, когда начинаете путь, используя path_start() но вы можете захотеть изменить это поведение в зависимости от любого количества событий в вашей игре. Доступные значения выражаются с помощью следующих констант:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Конец пути Действие Константа
ПостояннаяОписание
path_action_stopОстановить путь
path_action_restartПродолжить из начальной позиции, прыгая на старт, если путь не закрыт
path_action_continueНачните путь заново с текущей позиции
path_action_reverseИзменить скорость движения (проложить путь в обратном направлении)
-

-

Синтаксис:

-

path_endaction

-

-

Возвращается:

-

Path End Action Constant

-

-

Пример:

-

if (path_endaction == path_action_stop)
- {
-     path_endaction = path_action_reverse;
- }

-

Приведенный выше код проверит действие конца пути, и если оно установлено на stop, то действие конца будет изменено на reverse.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_index.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_index.htm index 400542bfa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_index.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_index.htm @@ -1,51 +0,0 @@ - - - - - - path_index - - - - - - - - - - -

path_index

-

Все ресурсы в GameMaker имеют уникальный идентификационный номер, а path_index - это переменная, доступная только для чтения, которая хранит значение индекса для данного актива пути, назначенного экземпляру с помощью функции path_start(). Если экземпляр не имеет назначенного пути, переменная будет установлена в -1.

-

-

Синтаксис:

-

path_index

-

-

Возвращается:

-

Path Asset

-

-

Пример:

-

if (path_index == -1)
- {
-     path_start(pth_enemy3, 4, path_action_reverse, 0);
- }

-

Приведенный выше код проверяет, был ли назначен путь экземпляру, и если нет, то начинает новый путь (одновременно назначая его на path_index ).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_orientation.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_orientation.htm index 26f8fc9ae..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_orientation.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_orientation.htm @@ -1,51 +0,0 @@ - - - - - - path_orientation - - - - - - - - - - -

path_orientation

-

Эта переменная хранит текущую ориентацию пути, который был назначен экземпляру при вызове функции path_start(). При создании пути его ориентация по умолчанию равна - 0 градусов, но с помощью этой переменной можно установить любое значение. Помните, что в GameMaker (если вы не используете физику) углы рассчитываются против часовой стрелки, поэтому установка ориентации пути - на 90° повернет путь влево.

-

Path Orientation Example

-

Синтаксис:

-

path_orientation

-

-

Возвращается:

-

-

-

Пример:

-

mypath = path_duplicate(choose(path_1, path_2, path_3, path_4));
path_start(path, 4, path_action_reverse, 0);
path_orientation = 90;

-

Приведенный выше код дублирует случайный, предварительно созданный актив пути в переменную "mypath". Затем этот новый путь запускается и поворачивается на 90°.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_position.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_position.htm index c7f4dda06..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_position.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_position.htm @@ -1,49 +0,0 @@ - - - - - - path_position - - - - - - - - - - -

path_position

-

Эта функция может быть использована для получения или установки положения экземпляра вдоль пути. Значение нормировано от 0 до 1, поэтому если вы установите его, например, на 0,5, экземпляр будет перемещен точно на середину пути.

-

-

Синтаксис:

-

path_position

-

-

Возвращается:

-

-

-

Пример:

-

path_position = random(1);

-

Приведенный выше код устанавливает экземпляр в случайную позицию в любом месте текущего пути.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_positionprevious.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_positionprevious.htm index dd9874fcc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_positionprevious.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_positionprevious.htm @@ -1,54 +0,0 @@ - - - - - - path_positionprevious - - - - - - - - - - -

path_positionprevious

-

Эта переменная может быть использована для получения или установки положения экземпляра на его текущем пути в предыдущем шаге и представляет собой нормализованное значение между 0 и 1, то есть: 0 - это начальное положение пути, а 1 - конечное. Это аналогично параметрам xprevious и yprevious по принципу работы, только она специфична для путей. Она может быть полезна для таких вещей, как временная остановка последователя пути, если что-то стоит на пути (см. пример кода ниже).

-

-

Синтаксис:

-

path_positionprevious

-

-

Возвращается:

-

-

-

Пример:

-

var _x = x + lengthdir_x(16, direction);
- var _y = y + lengthdir_y(16, direction);
- if (collision_circle(_x, _y, 16, obj_player, false, true))
- {
-     path_position = path_positionprevious;
- }

-

Приведенный выше код проверяет область перед экземпляром на наличие столкновения с объектом "obj_Player" и, если таковое имеется, возвращает экземпляр в предыдущую позицию, которую он занимал на текущем пути, назначенную функцией path_start().

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_scale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_scale.htm index bd36659e0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_scale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_scale.htm @@ -1,50 +0,0 @@ - - - - - - path_scale - - - - - - - - - - -

path_scale

-

Это значение можно использовать для получения или установки масштаба текущего назначенного пути для экземпляра (как установлено функцией path_start()) со значением по умолчанию 1. Это скалярное значение, так что - 1 - это масштаб 1:1, в то время как установка значения 2, например, удвоит масштаб, а установка значения 0.5 уменьшит масштаб вдвое.

-

-

Синтаксис:

-

path_scale

-

-

Возвращается:

-

-

-

Пример:

-

path_scale = 1 + random(2);

-

Приведенный выше код установит масштаб текущего пути на случайный размер между 1 (исходный размер) и 3 (в 3 раза больше исходного размера).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_speed.htm index 02c9a956a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Path_Variables/path_speed.htm @@ -1,50 +0,0 @@ - - - - - - path_speed - - - - - - - - - - -

path_speed

-

Вы можете использовать эту функцию для получения или задания скорости пути после того, как он был запущен с помощью функции path_start(). Вы можете использовать отрицательные значения для обозначения того, что экземпляр должен следовать - путь в обратном направлении.

-

-

Синтаксис:

-

path_speed

-

-

Возвращается:

-

-

-

Пример:

-

path_speed = -1 + random(2);

-

Приведенный выше код задаст экземпляру прохождение пути со случайной скоростью в диапазоне от -1 до 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Paths.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Paths.htm index b9000b6a5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Paths.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/Paths.htm @@ -1,70 +0,0 @@ - - - - - - Пути - - - - - - - - - - -

Пути

-

ВGameMaker имеется обширная коллекция функций и встроенных переменных для использования путей в вашей игре. В этом разделе рассматриваются основные из них, которые используются при работе с путями, ранее созданными в редакторе путей, но существуют и другие функции, позволяющие создавать собственные пути с помощью кода и манипулировать ими различными способами.

-

Существуют следующие основные функции, работающие с путями:

- -

-

Чтобы облегчить отладку путей, есть функция, которая также рисует его на экране:

- -

-

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

- -

-

Наконец, можно манипулировать содержимым пути, а также создавать новые пути во время работы игры. Функции, позволяющие выполнять эти и другие действия, доступны в следующем разделе:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_end.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_end.htm index 0047674a0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_end.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_end.htm @@ -1,53 +0,0 @@ - - - - - - path_end - - - - - - - - - - -

path_end

-

Вызов этой функции завершает текущий путь, по которому следует экземпляр, заданный при вызове функции path_start() была вызвана...

-

-

Синтаксис:

-

path_end();

-

-

Возвращается:

-

-

-

Пример:

-

-

if place_meeting(x, y, obj_Blocker)
- {
-     path_end();
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_closed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_closed.htm index 4e07ab51f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_closed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_closed.htm @@ -1,63 +0,0 @@ - - - - - - path_get_closed - - - - - - - - - - - -

path_get_closed

-

Эта функция может быть использована для возврата информации о том, отмечен ли путь как закрытый (true) или открытый (false), т.е. зацикливается ли путь или имеет ли он определенное начало и конец.

-

-

Синтаксис:

-

path_get_closed(index);

- - - - - - - - - - - - - -
АргументТипОписание
indexПуть АктиваThe index of the path to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

state = path_get_closed(pth_Patrol);

-

Это установит "state" либо в true, либо в false в зависимости от закрытого состояния пути, указанного в "pth_Patrol".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_kind.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_kind.htm index 378b87a8c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_kind.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_kind.htm @@ -1,63 +0,0 @@ - - - - - - path_get_kind - - - - - - - - - - - -

path_get_kind

-

Пути могут быть гладкими или прямыми (гладкий путь рассчитывает изогнутый путь вокруг определяющих точек, в то время как прямой путь просто идет прямо от одной точки к другой). Эта - можно использовать, чтобы узнать, является ли данный путь гладким (true) или нет (false).

-

-

Синтаксис:

-

path_get_kind(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the path to check.
-

-

Возвращается:

-

-

-

Пример:

-

path_kind = path_get_kind(pth_Patrol);

-

Это установит переменную "path_kind" в значение true или false в зависимости от того, к какому типу пути относится данный индекс пути.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_length.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_length.htm index c8ad45572..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_length.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_length.htm @@ -1,63 +0,0 @@ - - - - - - path_get_length - - - - - - - - - - - -

path_get_length

-

Вы можете использовать эту функцию для получения точной длины пути в пикселях. Это не приблизительная длина от точки до точки, а точная длина вдоль формы пути, даже если путь гладкий с - высокой точностью кривизны.

-

-

Синтаксис:

-

path_get_length(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the path to measure.
-

-

Возвращается:

-

-

-

Пример:

-

path_len = path_get_length(pth_AI);

-

Это установит "path_len" в общую длину пути, индексированного в "pth_AI", в пикселях.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_name.htm index ead52f168..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_name.htm @@ -1,65 +0,0 @@ - - - - - - path_get_name - - - - - - - - - - - -

path_get_name

-

Эта функция возвращает имя пути, на который ссылается, в виде строки. Имя будет тем, которое было использовано для определения пути в редакторе, или (если путь был создан через функцию кода) будет возвращена строка с форматом " - _newpathXX", где "XX" - это номер созданного пути, начинающийся с 0 и увеличивающийся на единицу при каждом создании нового пути. Обратите внимание, что это только - и не может быть использована для прямой ссылки на путь - для этого вам понадобится идентификатор индекса пути. Однако вы можете использовать эту строку для получения идентификатора индекса пути, используя возвращаемую строку вместе с функцией - с функцией asset_get_index().

-

-

Синтаксис:

-

path_get_name(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the path to check.
-

-

Возвращается:

-

-

-

Пример:

-

path_name = path_get_name(path_array[0]);

-

Это установит "path_name" в имя пути, индексированного в данном массиве в позиции 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_number.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_number.htm index ee0e3689a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_number.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_number.htm @@ -1,65 +0,0 @@ - - - - - - path_get_number - - - - - - - - - - - -

path_get_number

-

Эта функция может быть использована для возврата количества точек на пути.

-

-

Синтаксис:

-

path_get_number(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the path to check.
-

-

Возвращается:

-

-

-

Пример:

-

if (path_get_number(pth_AI) > 1)
- {
-     path_start( pth_AI, 4, 3, 0);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_point_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_point_speed.htm index 1d9f058fe..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_point_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_point_speed.htm @@ -1,73 +0,0 @@ - - - - - - path_get_point_speed - - - - - - - - - - - -

path_get_point_speed

-

С помощью этой функции можно получить скорость точки (как определено в редакторе контура или при динамическом добавлении точки контура с помощью функции path_add_point()), выраженную в процентах. Так, если в редакторе контуров для точки контура установлено значение 50, эта функция при использовании вернет значение 50.

-

-

Синтаксис:

-

path_get_point_speed(index, n);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexПуть АктиваThe index of the path to check.
nРеальноThe point number to check.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if (path_get_point_speed(pth_Patrol, 0) != 100)
- {
-     var _px = path_get_point_x(pth_Patrol, 0);
-     var _py = path_get_point_x(pth_Patrol, 0);
-     path_change_point(pth_Patrol, 0, _px, _py, 100);
- }

-

Приведенный выше код проверяет точку "0" пути, проиндексированную "pth_Patrol", на предмет того, не равна ли скорость 100. Если это не так, то скорость этой точки устанавливается равной 100.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_point_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_point_x.htm index 4854af076..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_point_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_point_x.htm @@ -1,76 +0,0 @@ - - - - - - path_get_point_x - - - - - - - - - - - -

path_get_point_x

-

Эта функция возвращает x-позицию (в комнатных координатах) точки, которую вы ввели для указанного пути. Если точка находится вне диапазона пути (т.е. путь имеет 8 точек, а вы запрашиваете x-позицию точки 10), то будет возвращено значение 0.

-

-

Синтаксис:

-

path_get_point_x(index, n);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexПуть АктиваThe index of the path to check.
nРеальноThe point number to check.
-

-

Возвращается:

-

Real

-

-

Пример:

-

-

if (path_position == 1)
- {
-     var _num = path_get_number(pth_Patrol);
-     var _pos = floor(random(_num));
-     x = path_get_point_x(pth_Patrol, _pos);
-     y = path_get_point_y(pth_Patrol, _pos);
-     path_position = (1 / _num) * _pos;
- }

-

Приведенный выше код проверяет, находится ли экземпляр в конце пути. Если да, то он выберет случайную точку на пути и переместит экземпляр в эту точку.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_point_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_point_y.htm index f2acc48e9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_point_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_point_y.htm @@ -1,75 +0,0 @@ - - - - - - path_get_point_y - - - - - - - - - - - -

path_get_point_y

-

Эта функция возвращает положение y (в комнатных координатах) точки, которую вы ввели для указанного пути. Если точка находится вне диапазона пути (т.е. путь имеет 8 точек, а вы запрашиваете положение y точки 10), то будет возвращено значение 0.

-

-

Синтаксис:

-

path_get_point_y(index, n);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexПуть АктиваThe index of the path to check.
nРеальноThe point number to check.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if (path_position == 1)
- {
-     var _num = path_get_number(pth_Patrol);
-     var _pos = floor(random(_num));
-     x = path_get_point_x(pth_Patrol, _pos);
-     y = path_get_point_y(pth_Patrol, _pos);
-     path_position = (1 / _num) * _pos;
- }

-

Приведенный выше код проверяет, находится ли экземпляр в конце пути. Если да, то он выберет случайную точку на пути и переместит экземпляр в эту точку.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_precision.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_precision.htm index 39b6e6f8c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_precision.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_precision.htm @@ -1,68 +0,0 @@ - - - - - - path_get_precision - - - - - - - - - - - -

path_get_precision

-

Эта функция возвращает, с какой точностью данный путь был "сглажен", это будет целочисленное значение от 1 до 8. Хотя вы можете получить (и установить) это значение для прямолинейного пути, оно не будет иметь никакого влияния на то, как экземпляр использует этот путь, поскольку оно имеет значение только тогда, когда тип пути установлен на "гладкий".

-

-

Синтаксис:

-

path_get_precision(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the path to check.
-

-

Возвращается:

-

-

-

Пример:

-

if (path_get_kind(pth_Patrol))
- {
-     if (path_get_precision(pth_Patrol)) != 8
-     {
-         path_set_precision(pth_Patrol, 8);
-     }
- }

-

Приведенный выше код проверяет путь, индексированный в "pth_Patrol", на предмет его вида, и если он гладкий, то проверяет, насколько точным является сглаживание. Если она меньше 8, то устанавливается значение 8.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_speed.htm index 3552e1d17..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_speed.htm @@ -1,68 +0,0 @@ - - - - - - path_get_speed - - - - - - - - - - - -

path_get_speed

-

Эта функция возвращает коэффициент скорости для любой заданной позиции на пути. Позиция должна быть значением между 0 и 1 (вы можете использовать path_positionнапример, если вам нужна текущая позиция экземпляра), причем 0 - это начальная позиция, а 1 - конечная. Возвращаемое значение будет коэффициентом, на который устанавливается фактическое значение path_speed . Например, на пути с двумя точками, 0 и 1, где коэффициент скорости точки 0 равен 100, а коэффициент скорости точки 1 равен 0, функция path_get_speed(path, 0.5) вернет 50.

-

-

Синтаксис:

-

path_get_speed(ind, pos);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexПуть АктиваThe index of the path to check.
posРеальноHow far through the path to check. Between 0 (start) and 1 (end), can be decimal.
-

-

Возвращается:

-

Real

-

-

Пример:

-

speed = path_get_speed(pth_Patrol, 0.5) / 20;

-

Это установит скорость вызывающего экземпляра на коэффициент скорости точки, находящейся ровно на половине заданного пути, деленный на 20. Таким образом, если найденный коэффициент скорости равен 100 по умолчанию, то скорость вызывающего экземпляра будет равна 5.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_x.htm index a9fd8c686..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_x.htm @@ -1,68 +0,0 @@ - - - - - - path_get_x - - - - - - - - - - - -

path_get_x

-

С помощью этой функции вы можете получить координату x позиции на любом заданном пути. 0 - это начало пути, 1 - конец пути, а все, что находится между ними, приравнивается к этому расстоянию на пути. Это не обязательно должна быть определяющая точка пути, она может быть в любом месте пути.

-

-

Синтаксис:

-

path_get_x(ind, pos);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexПуть АктиваThe index of the path to check.
posРеальноHow far through the path to check. Between 0 (start) and 1 (end).
-

-

Возвращается:

-

Real

-

-

Пример:

-

x = path_get_x(pth_WallWalk, 0.5);

-

Это установит x вызывающего экземпляра в координату x точки, расположенной ровно на половине заданного пути.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_y.htm index 6e6c77d14..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_get_y.htm @@ -1,68 +0,0 @@ - - - - - - path_get_y - - - - - - - - - - - -

path_get_y

-

С помощью этой функции можно получить координату y позиции на любом заданном пути. 0 - это начало пути, 1 - конец пути, а все, что находится между ними, равно нормализованному расстоянию по длине пути. Это значение не обязательно должно быть определяющей точкой пути, оно может находиться в любой точке пути.

-

-

Синтаксис:

-

path_get_y(ind, pos);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexПуть АктиваThe index of the path to check.
posРеальноHow far through the path to check. Between 0 (start) and 1 (end).
-

-

Возвращается:

-

Real

-

-

Пример:

-

y = path_get_y(pth_WallWalk, 0.5);

-

Это установит y вызывающего экземпляра в координату y точки, расположенной ровно на полпути заданного пути.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_start.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_start.htm index c86c6ed3b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_start.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Paths/path_start.htm @@ -1,83 +0,0 @@ - - - - - - path_start - - - - - - - - - - -

path_start

-

Путь создается из серии определяющих точек, которые соединяются вместе и затем используются для планирования движения экземпляра. Они могут быть созданы с помощью кода или в редакторе путей и назначены экземпляру для использования в игре. С помощью этой функции можно указать экземпляру, по какому пути следовать, с какой скоростью (измеряется в пикселях за шаг), как вести себя, когда он достигнет конца пути, и следовать ли абсолютному или относительному положению пути. Последняя часть означает, что экземпляр либо начинает и следует по пути точно так, как вы спроектировали и разместили его в редакторе путей (абсолютный), либо начинает и следует по пути с позиции, в которой был создан экземпляр (относительный).

-

Как видно из приведенного выше изображения, два экземпляра следуют по одному и тому же пути, начатому с path_start(), но один из экземпляров следует по абсолютному пути, а другой - по относительному. Следует отметить, что при установке относительного пути на false (абсолютный) экземпляр будет "прыгать" к началу пути независимо от того, в каком месте комнаты он находится.

-

Константы, используемые для определения поведения экземпляра при достижении им конца пути, приведены на этой странице.

-

-

Синтаксис:

-

path_start(path, speed, endaction, absolute);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
pathПуть АктиваThe path index to start.
speedРеальноThe speed of which to follow the path in pixels per step, negative meaning going backwards.
endactionКонец пути Действие КонстантаWhat to do when the end of the path is reached (see the constants listed above).
absoluteБулевоWhether the calling instance should follow the absolute path as it is in the editor (true) or a relative path to its current position (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

path_start(path, 4, path_action_reverse, 0);

-

Это заставит вызывающий экземпляр следовать по пути, индексированному в переменной "path", со скоростью 4 пикселя за шаг. Он будет следовать по пути относительно своего положения, а когда достигнет конца, изменит направление и вернется назад.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/Background_Layers.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/Background_Layers.htm index 3d72acca9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/Background_Layers.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/Background_Layers.htm @@ -1,75 +0,0 @@ - - - - - - Фоновые слои - - - - - - - - - - -

Фоновые слои

-

Редактор комнат GameMaker позволяет добавлять фоны в любую комнату с помощью слоев. Как следует из названия, фоновый слой - это просто актив sprite, который используется в качестве фона на слое на заданной глубине в комнате, и путем наложения слоев вы можете сделать так, чтобы одни вещи рисовались поверх или под другими. Вы также можете управлять некоторыми аспектами слоев из кода, добавляя или удаляя элементы, или изменяя определенные свойства слоя или того, что он содержит, во время выполнения. Ниже приведен список всех функций, которые можно использовать для редактирования фоновые слои:

- -

-

Обратите внимание, что если вы хотите установить положение фона или скорость горизонтальной или вертикальной прокрутки фона, то вам необходимо использовать следующие общие функции слоя:

-

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_alpha.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_alpha.htm index fe90b07a2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_alpha.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_alpha.htm @@ -1,68 +0,0 @@ - - - - - - layer_background_alpha - - - - - - - - - - - -

layer_background_alpha

-

Эта функция управляет альфа (прозрачностью) фона sprite. Вы задаете ID элемента фона (который вы получаете при создании элемента фона с помощью функции layer_background_create() или когда - вы используете функцию layer_background_get_id()), а затем задаете используемое значение альфа. Альфа может быть в диапазоне от 0 (полностью прозрачный) до 1 (полностью непрозрачный), по умолчанию значение альфа для фонового элемента равно 1. - элемента по умолчанию равно 1. Обратите внимание, что если слой, которому был назначен фоновый элемент, не виден, или сам элемент был сделан невидимым, вы не увидите никакой разницы с помощью этой функции, пока слой или элемент не станут видимыми. - снова.

-

-

Синтаксис:

-

layer_background_alpha(background_element_id, alpha);

- - - - - - - - - - - - - - - -
АргументТипОписание
background_element_idThe unique ID value of the background element to change
alphaThe alpha for background sprite, from 0 to 1 (default is 1)
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Background_sky");
var back_id = layer_background_get_id(lay_id);
layer_background_alpha(back_id, random(1));

-

Приведенный выше код получает значение ID фона, назначенного слою "Background_sky", а затем устанавливает его альфа-фактор на случайное значение между 0 и 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_blend.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_blend.htm index 1d014d026..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_blend.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_blend.htm @@ -1,68 +0,0 @@ - - - - - - layer_background_blend - - - - - - - - - - - -

layer_background_blend

-

Эта функция управляет смешиванием (или "тонированием") фона sprite. Значение по умолчанию равно -1 (что представляет собой константу c_white, которая также может быть использована). Любое другое значение (включая внутренние цветовые константы, такие как c_red, - или c_aqua) будет смешивать указанный цвет с исходным sprite. Вы задаете ID фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), а затем задаете цвет смешивания. Ниже показан пример sprite, который был смешан с различными цветами:

-

Обратите внимание, что на платформе HTML5 следует ограничить количество смешиваний (если только не используется WebGL), так как каждый - блендинг sprite должен кэшироваться отдельно, поэтому большое количество блендингов sprites может негативно сказаться на производительности (вы также можете установить размер кэша с помощью функции sprite_set_cache_size()).

-

-

Синтаксис:

-

layer_background_blend(background_element_id, blend);

- - - - - - - - - - - - - - - -
АргументТипОписание
background_element_idThe unique ID value of the background element to change
blendThe colour to blend with the background sprite (default is c_white)
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Background_sky");
var back_id = layer_background_get_id(lay_id);
layer_background_blend(back_id, c_aqua);

-

Приведенный выше код получает значение ID фона, назначенного слою "Background_sky", и затем оттеняет его цветом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_create.htm index 485b64cc4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_create.htm @@ -1,69 +0,0 @@ - - - - - - layer_background_create - - - - - - - - - - - -

layer_background_create

-

С помощью этой функции вы можете назначить ресурс sprite слою, который будет использоваться в качестве фона в вашем проекте. Вы передаете ID слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность) и индекс sprite (который будет именем sprite, как показано в Asset Browser), и он будет добавлен в слой. Функция возвращает уникальное значение ID для элемента, которое затем может быть использовано в дальнейших функциях слоя для фона.

-

-

Синтаксис:

-

layer_background_create(layer_id, sprite)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to target (or the layer name as a string)
spriteАктив спрайтаThe sprite index to be used
-

-

Возвращается:

-

Background Element ID

-

-

Пример:

-

global.back_layer = layer_create(10000);
- global.back_trees = layer_background_create(global.back_layer, spr_Trees);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_destroy.htm index da51471b3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_destroy.htm @@ -1,68 +0,0 @@ - - - - - - layer_background_destroy - - - - - - - - - - - -

layer_background_destroy

-

Эта функция уничтожит заданный элемент фона. Вы передаете идентификатор фона (который вы получаете при создании фона с помощью функции layer_background_create() или когда вы используете идентификатор слоя вместе с layer_get_background_id()), и эта функция удалит его. Обратите внимание, что при этом удаляется не слой, а только фон, и если фон был добавлен в редакторе комнаты, то при следующем выходе из комнаты и последующем возвращении фон будет создан заново. Однако если комната постоянна, фон будет удален, пока постоянство комнаты не будет снова отключено.

-

-

Синтаксис:

-

layer_background_destroy(background_element_id)

- - - - - - - - - - - - - -
АргументТипОписание
background_element_idИдентификатор фонового элементаThe unique ID value of the background element to be destroyed
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Background_trees");
- var bck_id = layer_background_get_id("Forrest");
- if (layer_background_exists(lay_id, bck_id))
- {
-     layer_background_destroy(bck_id);
- }

-

Приведенный выше код проверяет слой "Background_trees" на предмет существования данного фонового элемента, и если он существует, то он уничтожается (но не слой).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_exists.htm index 7c737704a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_exists.htm @@ -1,73 +0,0 @@ - - - - - - layer_background_exists - - - - - - - - - - - -

layer_background_exists

-

С помощью этой функции можно проверить, существует ли элемент фона на данном слое. Вы передаете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность) и идентификатор фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()) и функция вернет либо true, если элемент существует, либо false, если его нет.

-

ПРИМЕЧАНИЕ: Эта функция работает в пределах текущей целевой комнаты - по умолчанию это комната, в которой вызывается функция, - которую можно задать с помощью функции layer_set_target_room().

-

-

Синтаксис:

-

layer_background_exists(layer_id, background_element_id)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to target (or the layer name as a string)
background_element_idИдентификатор фонового элементаThe unique ID value of the background element to check
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var lay_id = layer_get_id("Background_trees");
- if (layer_background_exists(lay_id, global.TreesBackground))
- {
-     layer_background_destroy(lay_id, global.TreesBackground);
- }

-

Приведенный выше код проверяет слой "Background_trees" на предмет существования данного фонового элемента, и если он существует, то он уничтожается (но не слой).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_alpha.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_alpha.htm index 33d4421e1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_alpha.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_alpha.htm @@ -1,66 +0,0 @@ - - - - - - layer_background_get_alpha - - - - - - - - - - - -

layer_background_get_alpha

-

Эта функция может быть использована для получения значения альфа-фактора фонового элемента. Вы указываете ID фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), и функция вернет значение от 0 (полностью прозрачный) до 1 (полностью непрозрачный).

-

-

Синтаксис:

-

layer_background_get_alpha(background_element_id);

- - - - - - - - - - - -
АргументТипОписание
background_element_idThe unique ID value of the background element to get the information from
-

-

Возвращается:

-

(from 0 to 1)

-

-

Пример:

-

var lay_id = layer_get_id("Background_sky");
- var back_id = layer_background_get_id(lay_id);
- if (layer_background_get_alpha(back_id) < 0.1)
- {
-     layer_background_destroy(back_id);
- }

-

Приведенный выше код получит идентификатор слоя с именем "Background_sky" и затем использует его для получения идентификатора элемента фона на этом слое. Этот идентификатор затем используется для проверки альфа-элемента, и если он меньше 0,1, то элемент слоя уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_blend.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_blend.htm index 9dd8e3493..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_blend.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_blend.htm @@ -1,66 +0,0 @@ - - - - - - layer_background_get_blend - - - - - - - - - - - -

layer_background_get_blend

-

Эту функцию можно использовать для получения цвета смешивания фонового элемента. Вы передаете идентификатор фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), и функция вернет реальное значение, представляющее назначенный цвет.

-

-

Синтаксис:

-

layer_background_get_blend(background_element_id);

- - - - - - - - - - - -
АргументТипОписание
background_element_idThe unique ID value of the background element to get the information from
-

-

Возвращается:

-

Colour Constant

-

-

Пример:

-

var lay_id = layer_get_id("Background_sky");
- var back_id = layer_background_get_id(lay_id);
- if (layer_background_get_blend(back_id) == c_white)
- {
-     layer_background_blend(back_id, make_colour_rgb(random(255), random(255), 255));
- }

-

Приведенный выше код получит идентификатор слоя с именем "Background_sky" и затем использует его для получения идентификатора элемента фона на этом слое. Этот ID затем используется для проверки цвета наложения элемента, и если он равен константе c_white, то наложение слоя устанавливается на случайный цвет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_htiled.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_htiled.htm index 46a9da878..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_htiled.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_htiled.htm @@ -1,66 +0,0 @@ - - - - - - layer_background_get_htiled - - - - - - - - - - - -

layer_background_get_htiled

-

С помощью этой функции можно узнать, является ли фоновый элемент горизонтальной плиткой или нет. Вы передаете ID фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), и функция вернет либо true, если элемент в данный момент является плиточным, либо false, если это не так.

-

-

Синтаксис:

-

layer_background_get_htiled(background_element_id);

- - - - - - - - - - - -
АргументТипОписание
background_element_idThe unique ID value of the background element to get the information from
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Background_sky");
- var back_id = layer_background_get_id(lay_id);
- if (!layer_background_get_htiled(back_id))
- {
-     layer_background_htiled(back_id, true);
- }

-

Приведенный выше код получит идентификатор слоя с именем "Background_sky" и затем использует его для получения идентификатора элемента фона на этом слое. Этот идентификатор затем используется для проверки того, является ли элемент черепичным по горизонтальной оси, и если нет, то он устанавливается для этого.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_id.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_id.htm index 6517af400..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_id.htm @@ -1,65 +0,0 @@ - - - - - - layer_background_get_id - - - - - - - - - - - -

layer_background_get_id

-

Эта функция может использоваться для получения уникального значения ID элемента фона на слое. Вы передаете ID слоя (который вы получаете, когда используете имя слоя вместе со словом layer_get_id()), и функция вернет значение ID, связанное с элементом фона на слое. Обратите внимание, что эта функция предназначена для работы с фоновыми элементами, добавленными на сайте IDE, так как если вы добавите фон к слою через код с помощью функции layer_background_create()то она вернет уникальный ID для добавленного элемента фона.

-

-

Синтаксис:

-

layer_background_get_id(layer_id)

- - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to target
-

-

Возвращается:

-

Background Element ID

-

-

Пример:

-

var lay_id = layer_get_id("Background_trees");
- var back_id = layer_background_get_id(lay_id);
- layer_background_sprite(back_id, bck_Trees_Winter);

-

Приведенный выше код получит идентификатор слоя для слоя с именем "Background_trees", а затем использует его для получения идентификатора элемента фона на этом слое. Этот идентификатор затем используется для изменения элемента sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_index.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_index.htm index b43609082..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_index.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_index.htm @@ -1,66 +0,0 @@ - - - - - - layer_background_get_index - - - - - - - - - - - -

layer_background_get_index

-

Эта функция может использоваться для получения текущего значения индекса изображения фонового элемента. Вы передаете идентификатор фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), и функция вернет реальное значение, которое представляет собой индекс изображения, отображаемого для sprite. Функция вернет -1, если либо фоновый элемент не существует, либо ему не присвоен действительный sprite.

-

-

Синтаксис:

-

layer_background_get_index(background_element_id);

- - - - - - - - - - - -
АргументТипОписание
background_element_idThe unique ID value of the background element to get the information from
-

-

Возвращается:

-

Real (the current sprite image index or -1)

-

-

Пример:

-

var lay_id = layer_get_id("Background_sky");
- var back_id = layer_background_get_id(lay_id);
- if (layer_background_get_index(back_id) < 4)
- {
-     layer_background_index(back_id, 4);
- }

-

Приведенный выше код получит идентификатор слоя для слоя с именем "Background_sky" и затем использует его для получения идентификатора элемента фона на этом слое. Этот идентификатор затем используется для проверки, является ли индекс изображения для элемента меньше 4, и если да, то он устанавливается равным 4.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_speed.htm index a44a2fba0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_speed.htm @@ -1,66 +0,0 @@ - - - - - - layer_background_get_speed - - - - - - - - - - - -

layer_background_get_speed

-

Эта функция может использоваться для получения текущего значения множителя скорости фонового элемента. Вы передаете ID фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), и функция вернет реальное значение, которое представляет собой множитель скорости, используемый для анимации sprite. Значение по умолчанию равно 1.

-

-

Синтаксис:

-

layer_background_get_speed(background_element_id);

- - - - - - - - - - - -
АргументТипОписание
background_element_idThe unique ID value of the background element to get the information from
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Background_sky");
- var back_id = layer_background_get_id(lay_id);
- if (layer_background_get_speed(back_id) > 0)
- {
-     layer_background_speed(back_id, 0);
- }

-

Приведенный выше код получит идентификатор слоя для слоя с именем "Background_sky" и затем использует его для получения идентификатора элемента фона на этом слое. Этот идентификатор затем используется для проверки скорости анимации элемента, и если он больше 0, то устанавливается значение 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_sprite.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_sprite.htm index d23f8c403..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_sprite.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_sprite.htm @@ -1,66 +0,0 @@ - - - - - - layer_background_get_sprite - - - - - - - - - - - -

layer_background_get_sprite

-

Эта функция может быть использована для получения текущего значения индекса sprite фонового элемента. Вы передаете идентификатор фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), а функция вернет реальное значение, которое представляет собой отображаемый индекс sprite. Если элементу не присвоен индекс sprite, функция вернет -1.

-

-

Синтаксис:

-

layer_background_get_sprite(background_element_id);

- - - - - - - - - - - -
АргументТипОписание
background_element_idThe unique ID value of the background element to get the information from
-

-

Возвращается:

-

Sprite Asset or -1

-

-

Пример:

-

var lay_id = layer_get_id("Background_sky");
- var back_id = layer_background_get_id(lay_id);
- if (layer_background_get_sprite(back_id) != spr_Clouds)
- {
-     layer_background_sprite(back_id, spr_Clouds);
- }

-

Приведенный выше код получит идентификатор слоя с именем "Background_sky" и затем использует его для получения идентификатора элемента фона на этом слое. Этот ID затем используется для проверки sprite, назначенного элементу, и установки его на sprite "spr_Clouds", если он еще не установлен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_stretch.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_stretch.htm index f96c20a4b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_stretch.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_stretch.htm @@ -1,66 +0,0 @@ - - - - - - layer_background_get_stretch - - - - - - - - - - - -

layer_background_get_stretch

-

Эту функцию можно использовать для получения растянутого состояния фонового элемента sprite. Вы передаете ID фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), и функция вернет либо true, если элемент sprite в настоящее время растянут, чтобы соответствовать комнате, либо false, если это не так.

-

-

Синтаксис:

-

layer_background_get_stretch(background_element_id);

- - - - - - - - - - - -
АргументТипОписание
background_element_idThe unique ID value of the background element to get the information from
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Background_sky");
- var back_id = layer_background_get_id(lay_id);
- if (layer_background_get_stretch(back_id))
- {
-     layer_background_stretch(back_id, false);
- }

-

Приведенный выше код получит идентификатор слоя для слоя с именем "Background_sky" и затем использует его для получения идентификатора элемента фона на этом слое. Этот идентификатор затем используется для проверки, будет ли элемент sprite растянут, чтобы соответствовать комнате или нет, и если он будет растянут, то это свойство будет установлено в false.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_visible.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_visible.htm index 7a381c4a1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_visible.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_visible.htm @@ -1,66 +0,0 @@ - - - - - - layer_background_get_visible - - - - - - - - - - - -

layer_background_get_visible

-

Эта функция может быть использована для получения видимого состояния фонового элемента. Вы передаете идентификатор фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), и функция вернет либо true, если элемент в данный момент виден, либо false, если нет. Обратите внимание, что возвращаемое значение не зависит от того, является ли слой, на котором находится элемент, видимым или нет.

-

-

Синтаксис:

-

layer_background_get_visible(background_element_id);

- - - - - - - - - - - -
АргументТипОписание
background_element_idThe unique ID value of the background element to get the information from
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Background_sky");
- var back_id = layer_background_get_id(lay_id);
- if (layer_background_get_visible(back_id))
- {
-     layer_background_visible(back_id, false);
- }

-

Приведенный выше код получит идентификатор слоя с именем "Background_sky" и затем использует его для получения идентификатора элемента фона на этом слое. Этот ID затем используется для проверки видимости элемента, и если он виден, то это свойство устанавливается в false.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_vtiled.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_vtiled.htm index 32b04d593..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_vtiled.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_vtiled.htm @@ -1,66 +0,0 @@ - - - - - - layer_background_get_vtiled - - - - - - - - - - - -

layer_background_get_vtiled

-

С помощью этой функции можно узнать, является ли фоновый элемент вертикальной плиткой или нет. Вы передаете идентификатор фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), и функция вернет либо true, если элемент в данный момент имеет вертикальную плитку, либо false, если не имеет.

-

-

Синтаксис:

-

layer_background_get_vtiled(background_element_id);

- - - - - - - - - - - -
АргументТипОписание
background_element_idThe unique ID value of the background element to get the information from
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Background_sky");
- var back_id = layer_background_get_id(lay_id);
- if (!layer_background_get_vtiled(back_id))
- {
-     layer_background_vtiled(back_id, true);
- }

-

Приведенный выше код получит идентификатор слоя с именем "Background_sky" и затем использует его для получения идентификатора элемента фона на этом слое. Этот идентификатор затем используется для проверки того, является ли элемент черепичным по вертикальной оси, и если нет, то он устанавливается для этого.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_xscale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_xscale.htm index 6445e2e95..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_xscale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_xscale.htm @@ -1,66 +0,0 @@ - - - - - - layer_background_get_xscale - - - - - - - - - - - -

layer_background_get_xscale

-

Эта функция может использоваться для получения текущего значения множителя масштаба фонового элемента. Вы передаете идентификатор фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), и функция вернет реальное значение, которое представляет собой множитель масштаба, используемый для отрисовки sprite. Значение по умолчанию равно 1.

-

-

Синтаксис:

-

layer_background_get_xscale(background_element_id);

- - - - - - - - - - - -
АргументТипОписание
background_element_idThe unique ID value of the background element to get the information from
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Background_sky");
- var back_id = layer_background_get_id(lay_id);
- if (layer_background_get_xscale(back_id) != -1)
- {
-     layer_background_xscale(back_id, -1);
- }

-

Приведенный выше код получит идентификатор слоя для слоя с именем "Background_sky" и затем использует его для получения идентификатора элемента фона на этом слое. Этот идентификатор затем используется для проверки масштаба x для элемента, и если он не равен -1, то он устанавливается равным -1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_yscale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_yscale.htm index cd4eebe25..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_yscale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_get_yscale.htm @@ -1,66 +0,0 @@ - - - - - - layer_background_get_yscale - - - - - - - - - - - -

layer_background_get_yscale

-

Эта функция может использоваться для получения текущего значения множителя масштаба фонового элемента. Вы передаете идентификатор фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), и функция вернет реальное значение, которое представляет собой множитель масштаба, используемый для отрисовки sprite. Значение по умолчанию равно 1.

-

-

Синтаксис:

-

layer_background_get_yscale(background_element_id);

- - - - - - - - - - - -
АргументТипОписание
background_element_idThe unique ID value of the background element to get the information from
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Background_sky");
- var back_id = layer_background_get_id(lay_id);
- if (layer_background_get_yscale(back_id) != -1)
- {
-     layer_background_yscale(back_id, -1);
- }

-

Приведенный выше код получит идентификатор слоя для слоя с именем "Background_sky", а затем использует его для получения идентификатора элемента фона на этом слое. Этот идентификатор затем используется для проверки масштаба y для элемента, и если он не равен -1, то он устанавливается равным -1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_htiled.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_htiled.htm index 96bf91d3a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_htiled.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_htiled.htm @@ -1,73 +0,0 @@ - - - - - - layer_background_htiled - - - - - - - - - - - -

layer_background_htiled

-

С помощью этой функции можно изменить, должен ли данный фоновый элемент на слое быть горизонтально черепичным или нет. Вы задаете ID фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), а затем задаете значение tiling. Если задать значение true, то элемент будет отображаться горизонтально по всей комнате, а если задать значение false, то элемент не будет отображаться горизонтально. Эта функция предназначена только для 2D-проектов и не будет работать правильно при использовании проекции 3D-камеры.

-

-

Синтаксис:

-

layer_background_htiled(background_element_id, tiled);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
background_element_idИдентификатор фонового элементаThe unique ID value of the background element to change
tiledБулевоThe horizontal tiling toggle, which can be true или false
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var back = layer_background_get_id(layer);
- if !layer_background_get_htiled(back) || !layer_background_get_vtiled(back)
- {
-     layer_background_htiled(back, true);
-     layer_background_vtiled(back, true);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_index.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_index.htm index 0715231c8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_index.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_index.htm @@ -1,69 +0,0 @@ - - - - - - layer_background_index - - - - - - - - - - - -

layer_background_index

-

Эта функция может быть использована для установки индекса изображения фона sprite, который имеет несколько подизображений. Вы задаете ID элемента фона (который вы получаете при создании элемента фона с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), а затем задаете индекс изображения, который будет использоваться. Если вы зададите значение вне диапазона вложенных изображений, то индекс изображения будет зацикливаться.

-

-

Синтаксис:

-

layer_background_index(background_element_id, image_index);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
background_element_idИдентификатор фонового элементаThe unique ID value of the background element to change
indexРеальноThe image index to use for the background
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Background_trees");
- var back_id = layer_background_get_id(lay_id);
- layer_background_index(back_id, 1);

-

Приведенный выше код получит идентификатор слоя для слоя с именем "Background_trees" и затем использует его для получения идентификатора элемента фона на этом слое. Этот идентификатор затем используется для изменения индекса изображения элемента.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_speed.htm index 9ecd05e4a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_speed.htm @@ -1,70 +0,0 @@ - - - - - - layer_background_speed - - - - - - - - - - - -

layer_background_speed

-

Эта функция может быть использована для установки скорости анимированного sprite, назначенного фоновому элементу. Вы задаете идентификатор фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), а затем задаете скорость анимации. Если IDE задал скорость анимации для sprite, которая рассчитывается как Frames Per Game Frame, то заданное значение скорости является множителем, причем 1 - это значение по умолчанию, а при установке значения 0,5 скорость анимации уменьшится вдвое, а при установке значения 2 - удвоится. Однако, если на сайте IDE задана скорость анимации для используемого элемента sprite, рассчитываемая как кадры в секунду, то заданное значение скорости является буквальным значением кадров в секунду, поэтому, например, если задать значение 5, то анимация будет повторяться по 5 кадров каждую секунду, пока идет игра. Если элемент фона не имеет вложенного sprite или используемый sprite не имеет вложенных изображений, эта функция не будет иметь эффекта.

-

-

Синтаксис:

-

layer_background_speed(background_element_id, speed);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
background_element_idИдентификатор фонового элементаThe unique ID value of the background element to change
speedРеальноThe speed multiplier/value to use for the element
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Background_water");
- var back_id = layer_background_get_id(lay_id);
- layer_background_speed(back_id, 0.5);

-

Приведенный выше код получит идентификатор слоя для слоя с именем "Background_water", а затем использует его для получения идентификатора фонового элемента на этом слое. Этот идентификатор затем используется для изменения скорости изображения элемента.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_sprite.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_sprite.htm index 0d850fa96..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_sprite.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_sprite.htm @@ -1,76 +0,0 @@ - - - - - - layer_background_sprite - - - - - - - - - - - -

layer_background_sprite

-

С помощью этой функции вы можете установить индекс sprite фонового элемента. Вы передаете идентификатор фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), а затем задаете индекс sprite, который будет использоваться. Изображение фонового элемента будет заменено новым sprite. Если вы зададите значение -1, то элементу не будет присвоен индекс sprite (но он будет существовать, и позже ему может быть присвоен индекс sprite ).

-

Эта функция также имеет псевдоним layer_background_change().

-

-

Синтаксис:

-

layer_background_sprite(background_element_id, sprite_index)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
background_element_idИдентификатор фонового элементаThe unique ID value of the background element to change
sprite_indexАктив спрайтаThe sprite index of the sprite to use for the background element
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Background_sky");
- var back_id = layer_background_get_id(lay_id);
- if (layer_background_get_sprite(back_id) != spr_Clouds)
- {
-     layer_background_sprite(back_id, spr_Clouds);
- }

-

Приведенный выше код получит идентификатор слоя с именем "Background_sky" и затем использует его для получения идентификатора элемента фона на этом слое. Этот ID затем используется для проверки sprite, назначенного элементу, и установки его на sprite "spr_Clouds", если он еще не установлен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_stretch.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_stretch.htm index f027d517a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_stretch.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_stretch.htm @@ -1,79 +0,0 @@ - - - - - - layer_background_stretch - - - - - - - - - - - -

layer_background_stretch

-

С помощью этой функции вы можете переключить фоновый элемент sprite на растяжение в соответствии с размерами комнаты или на сохранение разрешения 1:1. Вы предоставляете идентификатор фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), а затем устанавливаете аргумент stretch в значение true или false. При установке значения true элемент sprite будет растянут в соответствии с размерами комнаты (либо увеличен, либо уменьшен в зависимости от размеров sprite и комнаты), а при установке значения false элемент sprite будет отображаться в своем родном разрешении.

-

-

Синтаксис:

-

layer_background_stretch(background_element_id, stretch)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
background_element_idИдентификатор фонового элементаThe unique ID value of the background element to change
stretchБулевоThe stretch toggle, which can be true или false
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if mouse_check_button_pressed(mb_left)
- {
-     var back = layer_background_get_id(layer);
-     if (layer_background_get_stretch(back))
-     {
-         layer_background_stretch(back, false);
-     }
-     else
-     {
-         layer_background_stretch(back, true);
-     }
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_visible.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_visible.htm index 5630e6f88..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_visible.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_visible.htm @@ -1,79 +0,0 @@ - - - - - - layer_background_visible - - - - - - - - - - - -

layer_background_visible

-

С помощью этой функции можно переключить видимость фонового элемента. Вы предоставляете идентификатор фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), а затем устанавливаете аргумент visible в значение true или false. При установке значения true элемент будет отображаться, а при установке значения false элемент не будет отображаться. Обратите внимание, что это зависит от видимости слоя, и даже если фоновый элемент отмечен как видимый, он не будет отрисован, если слой, на котором он находится, отмечен как невидимый.

-

-

Синтаксис:

-

layer_background_visible(background_element_id, visible)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
background_element_idИдентификатор фонового элементаThe unique ID value of the background element to change
visibleБулевоThe visibility toggle, which can be true или false
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if mouse_check_button_pressed(mb_left)
- {
-     var back = layer_background_get_id(layer);
-     if (layer_background_get_visible(back))
-     {
-         layer_background_visible(back, false);
-     }
-     else
-     {
-         layer_background_visible(back, true);
-     }
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_vtiled.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_vtiled.htm index 185d69d83..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_vtiled.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_vtiled.htm @@ -1,73 +0,0 @@ - - - - - - layer_background_vtiled - - - - - - - - - - - -

layer_background_vtiled

-

С помощью этой функции можно изменить, должен ли данный фоновый элемент на слое быть вертикально черепичным или нет. Вы задаете ID фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), а затем задаете значение tiling. Если установлено значение true, то элемент будет отображаться вертикально по комнате, а если установлено значение false, то элемент не будет отображаться вертикально. Эта функция предназначена только для 2D-проектов и не будет работать правильно при использовании проекции 3D-камеры.

-

-

Синтаксис:

-

layer_background_vtiled(background_element_id, tiled);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
background_element_idИдентификатор фонового элементаThe unique ID value of the background element to change
tiledБулевоThe vertical tiling toggle, which can be true или false
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var back = layer_background_get_id(layer);
- if !layer_background_get_htiled(back) || !layer_background_get_vtiled(back)
- {
-     layer_background_htiled(back, true);
-     layer_background_vtiled(back, true);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_xscale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_xscale.htm index e3b7a0e69..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_xscale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_xscale.htm @@ -1,66 +0,0 @@ - - - - - - layer_background_xscale - - - - - - - - - - - -

layer_background_xscale

-

Эта функция может использоваться для установки масштаба по оси x фонового элемента. Вы задаете ID фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), а затем задаете значение масштаба. Заданное значение масштаба - это множитель, который будет использоваться для изменения способа отображения фонового элемента, - При значении 0,5 элемент будет отображаться в половинном масштабе, а при значении 2 - в двойном. Обратите внимание, что отрицательные значения действительны, и они "переворачивают" элемент вокруг позиции (0,0), поэтому при масштабе x, равном -1, изображение будет отображаться в обратном порядке. - изображение будет перевернуто.

-

-

Синтаксис:

-

layer_background_xscale(background_element_id, xscale);

- - - - - - - - - - - - - - - -
АргументТипОписание
background_element_idThe unique ID value of the background element to change
xscaleThe scale value to use (1 is no scaling)
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Background_water");
var back_id = layer_background_get_id(lay_id);
layer_background_xscale(back_id, -1);

-

Приведенный выше код получит идентификатор слоя для слоя с именем "Background_water" и затем использует его для получения идентификатора элемента фона на этом слое. Этот идентификатор затем используется для изменения xscale элемента.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_yscale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_yscale.htm index 3579fe3f3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_yscale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Background_Layers/layer_background_yscale.htm @@ -1,69 +0,0 @@ - - - - - - layer_background_yscale - - - - - - - - - - - -

layer_background_yscale

-

Эта функция может использоваться для установки масштаба по оси y фонового элемента. Вы задаете ID фонового элемента (который вы получаете при создании фонового элемента с помощью функции layer_background_create() или при использовании функции layer_background_get_id()), а затем задаете значение масштаба. Заданное значение масштаба - это множитель, который будет использоваться для изменения отображения фонового элемента. При значении 0,5 элемент будет отображаться в половинном масштабе, а при значении 2 - в двойном. Обратите внимание, что отрицательные значения действительны, и они "переворачивают" элемент вокруг позиции (0,0), поэтому при масштабе x, равном -1, изображение будет перевернуто.

-

-

Синтаксис:

-

layer_background_yscale(background_element_id, yscale);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
background_element_idИдентификатор фонового элементаThe unique ID value of the background element to change
yscaleРеальноThe speed multiplier/value to use for the element
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Background_water");
- var back_id = layer_background_get_id(lay_id);
- layer_background_yscale(back_id, -1);

-

Приведенный выше код получит идентификатор слоя для слоя с именем "Background_water" и затем использует его для получения идентификатора элемента фона на этом слое. Этот идентификатор затем используется для изменения шкалы yscale элемента.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/Filter_Effect_Functions.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/Filter_Effect_Functions.htm index e36e0b57b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/Filter_Effect_Functions.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/Filter_Effect_Functions.htm @@ -1,131 +0,0 @@ - - - - - - Функции фильтров и эффектов - - - - - - - - - - -

Функции фильтров и эффектов

-

Обзор

-

Существуют различные функции GML, которые можно использовать для создания, изменения и удаления фильтров/эффектов из слоев в помещении, что позволяет легко управлять эффектами в режиме реального времени для создания реалистичных и динамичных фильтров/эффектов.

-
-

Последний метод (указание фильтра/эффекта в коде) работает только со строковыми литералами, непосредственно указанными в аргументе функции, что означает, что если вы используете переменную или какую-либо логику, чтобы придумать строку имени фильтра/эффекта, то компилятор активов не обнаружит этого, и фильтр/эффект не будет загружен.

-

Рассмотрим следующие примеры:

-

// This will work on its own
- var _fxshake = fx_create("_filter_screenshake");
-
- // This will NOT work on its own
- var _myfilters = { screenshake: "_screenshake" }
- var _filter_to_use = "_filter" + _myfilters.screenshake;
- var _fxshake = fx_create(_filter_to_use); -

-

Чтобы убедиться, что последний метод работает, вы можете просто добавить фильтр хотя бы в одну комнату в вашем проекте, или убедиться, что fx_create() вызывается в любом месте вашего проекта с именем фильтра в качестве строковой константы (а не переменной).

-

Список функций

-

Следующие функции используются для создания и управления "FX Structs", содержащими данные эффектов:

- -

Следующие функции используются для модификации слоев, которые могут содержать фильтры/эффекты, с помощью структур FX:

- -

Изменение FX во время выполнения

-

Вы можете изменять фильтры/эффекты во время выполнения, выполнив следующие действия:

-
    -
  • Извлеките структуру FX из слоя, который вы хотите изменить, с помощью вызова layer_get_fx() -
      -
    • Или создайте новую структуру FX, вызвав команду fx_create(), и примените ее к слою с помощью команды layer_set_fx()
    • -
    -
  • -
  • Получите его структуру параметров, вызвав fx_get_parameters()
  • -
  • Измените параметры по мере необходимости, присвоив значения переменным struct - -
  • -
  • Примените модифицированную структуру обратно к структуре FX вызовом fx_set_parameters() -
      -
    • Вам не нужно вызывать layer_set_fx() здесь, поскольку модификация структуры FX непосредственно влияет на слой, которому она уже назначена.
    • -
    -
  • -
-

Вот пример кода для вышеупомянутого рабочего процесса:

-

Создать событие

-

// Store the FX struct, and its parameters struct, in variables
- pixelate_fx = layer_get_fx("Effect_1");
- pixelate_fx_params = fx_get_parameters(pixelate_fx);

-

Шаговое мероприятие

-

// Change param as variable
- pixelate_fx_params.g_CellSize = round((mouse_x / room_width) * 64);
-
- // Or, change param as string
- pixelate_fx_params[$ "g_CellSize"] = round((mouse_x / room_width) * 64);
-
- // Apply updated parameters struct to the FX struct
- fx_set_parameters(pixelate_fx, pixelate_fx_params); -

-

Параметры времени выполнения FX

-

На странице FX Types & Parameters перечислены все фильтры/эффекты вместе с их параметрами времени выполнения.

-

Имена параметров Runtime можно использовать следующими тремя способами (на примере параметра "g_CellSize" ):

-
    -
  • Измените параметр в структуре FX, вызвав fx_set_parameter(): fx_set_parameter(fx_struct, "g_CellSize", 8);
  • -
  • Измените переменную в структуре параметров: params_struct.g_CellSize= 8; -
      -
    • ПРИМЕЧАНИЕ Убедитесь, что сначала получили структуру параметров, вызвав fx_get_parameters().
    • -
    -
  • -
  • Измените переменную в структуре параметров, используя аксессор $ и строку: params_struct[$ "g_CellSize"] = 8;
  • -
-

Однослойный режим

-

По умолчанию фильтр/эффект применяется к слою, которому он назначен, и ко всем слоям ниже этого слоя, однако вы можете воспользоваться функцией fx_set_single_layer() чтобы включить режим "Один слой " для фильтра/эффекта и убедиться, что он применяется только к тому слою, которому назначен.

-

На следующем рисунке показано применение фильтра к нескольким слоям (это поведение по умолчанию для всех слоев FX), а затем тот же фильтр с включенным режимом Single Layer применяется к слою без FX:

-
-
Fire Jump man is woozy with the universe -
Однослойный режим ВЫКЛ
-
-
Fire Jump man is woozy... alone -
Однослойный режим ВКЛ
-
-
-

Вы также можете использовать однослойные эффекты в редакторе помещений с помощью инспектора.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_create.htm index ab2c899aa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_create.htm @@ -1,76 +0,0 @@ - - - - - - fx_create - - - - - - - - - - -

fx_create

-

Эта функция используется для создания новой структуры FX для заданного типа эффекта, который затем может быть применен к слою.

-

На этой странице перечислены названия фильтров/эффектов, которые можно передать в эту функцию: Все типы фильтров/эффектов.

-

Использование

-

Вы можете прочитать параметры для созданного эффекта, вызвав команду fx_get_parameter/s на возвращаемой структуре, и присвоить им новые значения, вызвав fx_set_parameter/s.

-

Обратите внимание, что структура, возвращаемая этой функцией, не будет содержать видимых членов и может быть изменена только с помощью одной из функций Filter/Effect.

-

Отказы функций

-

Функция вернет -1, если по какой-либо причине не удалось создать структуру; это может произойти, если указанное имя FX было неверным или FX не был загружен в пакет игры.

-

Чтобы эта функция работала правильно, убедитесь, что нужный вам FX загружен в ваш игровой пакет, как описано на странице Функции фильтров и эффектов:

-
-
-
-

Если эти условия не выполняются, т.е. вы не передаете строковый литерал и фильтр/эффект не присутствует ни в одной комнате, то функция не сможет загрузить этот фильтр/эффект и вернет -1.

-

-

-

Синтаксис:

-

fx_create(filter_or_effect_name);

- - - - - - - - - - - - - -
АргументТипОписание
filter_or_effect_nameСтрокаThe name of the filter/effect to create (get them from All Filter/Effect Types).
-

-

Возвращается:

-

FX Struct or -1 (on failure)

-

-

Пример:

-

var _fx_tint = fx_create("_filter_tintfilter");
- fx_set_parameter(_fx_tint, "g_TintCol", [1, 0, 0, 1]);
- layer_set_fx("EffectLayer", _fx_tint);

-

Приведенный выше код создает новую структуру FX из эффекта "_filter_tintfilter", который является фильтром "Colour Tint", находящимся в Room Editor. Он присваивает значение своему параметру "g_TintCol", который является цветом оттенка, а так как внутри это vec4, он принимает массив, содержащий четыре значения (соответствующие значениям красного, зеленого, синего и альфа). Затем FX-структура для оттенка применяется к FX-слою.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_get_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_get_name.htm index 264f0ec8a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_get_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_get_name.htm @@ -1,72 +0,0 @@ - - - - - - fx_get_name - - - - - - - - - - -

fx_get_name

-

Эта функция используется для получения имени фильтра/эффекта из его структуры. Вы указываете структуру FX для чтения (как возвращено из fx_create() или layer_get_fx()), и функция возвращает ее имя в виде строки. Это имя может быть передано в fx_create() для создания новой структуры FX с тем же типом фильтра/эффекта.

-

-

Синтаксис:

-

fx_get_name(filter_or_effect);

- - - - - - - - - - - -
АргументТипОписание
filter_or_effectThe FX struct to get the name of
-

-

Возвращается:

-

-

-

Пример:

-

var layers = layer_get_all();
- for(var i = 0; i < array_length(layers); i ++)
- {    
-     var layer_fx = layer_get_fx(layers[i]);
-     
-     if (layer_fx != -1)
-     {
-         if (fx_get_name(layer_fx) == "_filter_tintfilter")
-         {            
-             fx_set_parameter(_fx_tint, "g_TintCol", [0, 0, 1, 1]);
-         }
-     }
- }

-

Приведенный выше код запускает for цикл по всем слоям, присутствующим в комнате, и проверяет каждый слой на наличие FX-структуры. Если слой имеет FX-структуру, он проверяет имя этого фильтра/эффекта, вызывая fx_get_name(); если оно равно "_filter_tintfilter", что означает, что это фильтр "Colour Tint", он меняет цвет оттенка на синий.
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_get_parameter.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_get_parameter.htm index 89df410f8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_get_parameter.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_get_parameter.htm @@ -1,70 +0,0 @@ - - - - - - fx_get_parameter - - - - - - - - - - -

fx_get_parameter

-

Эта функция используется для получения значения параметра из FX-структуры. Вы указываете FX struct для чтения (как возвращено из fx_create() или layer_get_fx()) и имя параметра в виде строки, и функция возвращает его текущее значение. Это может быть реальное значение или массив, если параметр является вектором (это группа значений, например, vec4, который хранит цвет RGBA).

-

Найдите названия параметров для фильтра/эффекта на этой странице: Типы и параметры FX.

-

-

Синтаксис:

-

fx_get_parameter(filter_or_effect, parameter_name);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
filter_or_effectFX StructThe FX struct to get the parameter from
parameter_nameСтрокаThe name of the parameter to get the value of (as a string)
-

-

Возвращается:

-

Real or Array

-

-

Пример:

-

var _fx_struct = layer_get_fx("TintEffect");
- var _tint_colour = fx_get_parameter(_fx_struct, "g_TintCol");
- show_debug_message("The currently active tint colour is: " + string(_tint_colour));

-

Приведенный выше код извлекает структуру FX из слоя, к которому, как предполагается, применен фильтр "Оттенок цвета", и получает значение параметра "g_TintCol", который возвращает массив, содержащий 4 значения для цвета оттенка (красный, зеленый, синий и альфа). Затем он печатает это значение в выходной журнал.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_get_parameter_names.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_get_parameter_names.htm index b60bde414..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_get_parameter_names.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_get_parameter_names.htm @@ -1,66 +0,0 @@ - - - - - - fx_get_parameter_names - - - - - - - - - - -

fx_get_parameter_names

-

Эта функция используется для получения имен всех параметров, присутствующих в фильтре/эффекте. Вы указываете структуру FX для чтения (как возвращено из fx_create() или layer_get_fx()), и функция возвращает массив, содержащий имена параметров фильтра в виде строк.

-

-

Синтаксис:

-

fx_get_parameter_names(filter_or_effect);

- - - - - - - - - - - -
АргументТипОписание
filter_or_effectThe FX struct to get the parameter names of
-

-

Возвращается:

-

(of Strings)

-

-

Пример:

-

var _fx_struct = layer_get_fx("EffectLayer");
- var _param_names = fx_get_parameter_names(_fx_struct);
-
- for (var i = 0; i < array_length(_param_names); i ++) {
-     show_debug_message("Parameter " + string(i) + ": " + _param_names[i]);
- } -

-

Приведенный выше код извлекает структуру FX для слоя и получает имена параметров в массив. Затем он запускает for цикл по этому массиву и печатает каждый параметр в выходной журнал.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_get_parameters.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_get_parameters.htm index 7683c25ca..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_get_parameters.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_get_parameters.htm @@ -1,74 +0,0 @@ - - - - - - fx_get_parameters - - - - - - - - - - -

fx_get_parameters

-

Эта функция используется для получения структуры, содержащей все параметры для заданной FX-структуры. Вы указываете структуру FX (как возвращено из fx_create() или layer_get_fx()), и эта функция возвращает структуру, содержащую переменные для всех параметров, применимых к этому фильтру/эффекту. Параметры, использующие векторы (т.е. группы значений), будут представлены в виде массивов.

-

Вы можете получить названия всех параметров в отдельном массиве, вызвав fx_get_parameter_names(), или найти их на этой странице: Типы и параметры FX.

-

Изменение значений в этой структуре не приведет к применению этих изменений к фильтру/эффекту; чтобы изменения вступили в силу, необходимо вызвать fx_set_parameters() для применения измененной структуры обратно к фильтру/эффекту.

-

-

Синтаксис:

-

fx_get_parameters(filter_or_effect);

- - - - - - - - - - - - - -
АргументТипОписание
filter_or_effectFX StructThe FX struct for which the parameters will be returned
-

-

Возвращается:

-

Struct (or -1 on failure)

-

-

Пример:

-

var _fx_struct = layer_get_fx("TintEffect");
-
- if (_fx_struct != -1)
- {
-     var _params = fx_get_parameters(_fx_struct);
-     var _osc = sin(current_time / 1000);
-     _params.g_TintCol = [_osc, 0.3 + _osc, 0.6 + _osc, 1];
-
-     fx_set_parameters(_fx_struct, _params);
- } -

-

Приведенный выше код получает структуру FX для слоя, к которому предположительно применен фильтр "Оттенок цвета", и извлекает его структуру параметров, вызывая fx_get_parameters(). После этого он создает колеблющееся значение с помощью sin() и current_time, которое затем используется для значений RGBA для эффекта оттенка, чтобы он продолжал анимироваться. Массив RGBA присваивается переменной g_TintCol в структуре параметров, и эта структура затем применяется обратно к структуре FX вызовом fx_set_parameters().

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_set_parameter.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_set_parameter.htm index 72f0afbf0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_set_parameter.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_set_parameter.htm @@ -1,77 +0,0 @@ - - - - - - fx_set_parameter - - - - - - - - - - -

fx_set_parameter

-

Эта функция используется для изменения значения параметра в заданной структуре FX. Вы указываете FX struct (как возвращено из fx_create() или layer_get_fx()), имя параметра в виде строки и его новое значение. В результате ваши изменения станут видимыми в слое, которому присвоена данная FX-структура.

-

Вы можете передать несколько аргументов для параметра, если он является вектором, однако вы также можете просто указать массив в качестве единственного аргумента, который будет содержать несколько значений.

-

Найдите названия параметров для фильтра/эффекта на этой странице: Типы и параметры FX.

-

-

Синтаксис:

-

fx_set_parameter(filter_or_effect, parameter_name, val, ...);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
filter_or_effectFX StructThe FX struct to modify
parameter_nameСтрокаThe name of the parameter to change the value of (as a string)
val...Реальный или МассивThe new value(s) for that parameter as a real or array
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _fx_tint = fx_create("_filter_tintfilter");
- fx_set_parameter(_fx_tint, "g_TintCol", [1, 0, 0, 1]);
- layer_set_fx("EffectLayer", _fx_tint);

-

Приведенный выше код создает новую структуру FX из эффекта "_filter_tintfilter", который является фильтром "Colour Tint", находящимся в Room Editor. Он присваивает значение своему параметру "g_TintCol", который является цветом оттенка, а так как внутри это vec4, он принимает массив, содержащий четыре значения (соответствующие значениям красного, зеленого, синего и альфа). Затем FX-структура для оттенка применяется к FX-слою.

-

Обратите внимание, что вы также можете передавать значения в вектор как отдельные аргументы вместо массива:

-

fx_set_parameter(_fx_tint, "g_TintCol", 1, 0, 0, 1);

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_set_parameters.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_set_parameters.htm index 256e9723f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_set_parameters.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/fx_set_parameters.htm @@ -1,75 +0,0 @@ - - - - - - fx_set_parameters - - - - - - - - - - -

fx_set_parameters

-

Эта функция используется для изменения параметров фильтра/эффекта. Вы указываете структуру FX (как возвращено из fx_create() или layer_get_fx()) и структуру, содержащую его параметры (как возвращено из fx_get_parameters()). В результате ваши изменения будут видны в слое, которому присвоен FX struct.

-

Ваша структура параметров не обязана содержать все параметры, применимые к фильтру/эффекту, и только переменные, присутствующие в данной структуре, будут обновлены для фильтра/эффекта.

-

-

Синтаксис:

-

fx_set_parameters(filter_or_effect, parameter_struct);

- - - - - - - - - - - - - - - -
АргументТипОписание
filter_or_effectThe FX struct to modify
parameter_structA struct containing the parameters for the filter/effect
-

-

Возвращается:

-

-

-

Пример:

-

var _fx_struct = layer_get_fx("TintEffect");
-
- if (_fx_struct != -1)
- {
-     var _params = fx_get_parameters(_fx_struct);
-     var _osc = sin(current_time / 1000);
-     _params.g_TintCol = [_osc, 0.3 + _osc, 0.6 + _osc, 1];
-
-     fx_set_parameters(_fx_struct, _params);
- } -

-

Приведенный выше код получает структуру FX для слоя, к которому, как предполагается, применен фильтр "Цветовой оттенок", и извлекает структуру параметров, вызывая команду fx_get_parameters(). После этого он создает осциллирующее значение с помощью sin() и current_time, которое затем используется для значений RGBA для эффекта оттенка, так что он продолжает анимироваться. Массив RGBA присваивается переменной g_TintCol в структуре параметров, а затем эта структура применяется обратно к структуре FX вызовом fx_set_parameters().

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_clear_fx.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_clear_fx.htm index 57be81a03..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_clear_fx.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_clear_fx.htm @@ -1,80 +0,0 @@ - - - - - - layer_clear_fx - - - - - - - - - - -

layer_clear_fx

-

Эта функция используется для очистки структуры FX, примененной к указанному слою. Вы указываете либо ID, либо имя слоя, который хотите изменить, и эта функция удалит структуру FX, примененную к этому слою, полностью отключив его эффекты.

-

Если вы используете эту функцию для временного отключения эффекта и хотите восстановить его в слое, то сначала вам следует сохранить структуру FX для слоя, вызвав layer_get_fx(), а затем вызвать эту функцию, чтобы очистить его в слое. Позже вы можете снова применить его к слою, вызвав layer_set_fx(), что снова включит эффект.

-

-

Синтаксис:

-

layer_clear_fx(layer_name_or_id);

- - - - - - - - - - - - - -
АргументТипОписание
layer_name_or_idСтрока или Идентификатор слояThe name or ID of the layer to clear the FX for
-

-

Возвращается:

-

N/A

-

-

Пример:

-

// Disable effect
- if (keyboard_check_pressed(ord("E")))
- {
-     if (layer_get_fx("EffectLayer") != -1)
-     {
-         temp_fx = layer_get_fx("EffectLayer");
-         layer_clear_fx("EffectLayer");
-     }
- }
- // Re-enable effect
- else if (keyboard_check_pressed(ord("F")))
- {
-     if (temp_fx != -1)
-     {
-         layer_set_fx("EffectLayer", temp_fx);
-         temp_fx = -1;
-     }
- }

-

Приведенный выше код проверяет, нажата ли клавиша "E", а затем проверяет, применен ли к слою "EffectLayer" фильтр/эффект; в этом случае он сохраняет его структуру FX во временной переменной экземпляра и очищает слой от любых фильтров/эффектов. При нажатии клавиши "F" проверяется, не содержит ли временная переменная чего-либо, отличного от -1, и в этом случае она применяет FX обратно к слою и сбрасывает временную переменную на -1. Все это позволяет включать и выключать эффект в любое время без потери его параметров.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_enable_fx.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_enable_fx.htm index 4528147c2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_enable_fx.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_enable_fx.htm @@ -1,76 +0,0 @@ - - - - - - layer_enable_fx - - - - - - - - - - -

layer_enable_fx

-

Эта функция включает/выключает фильтр/эффект, назначенный слою помещения. Вы указываете либо ID, либо имя слоя, который хотите изменить, а затем булево значение, указывающее, должен ли FX быть включен(true) или отключен(false).

-

Если передать false, то FX не удалится из слоя, а просто станет невидимым. Для удаления FX из слоя используйте layer_clear_fx().

-

Аналогично, передача true ничего не даст, если к слою не применен FX. Используйте layer_set_fx(), чтобы применить FX к слою.

-

-

Синтаксис:

-

layer_enable_fx(layer_name_or_id, enable);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_name_or_idСтрока или Идентификатор слояThe name or ID of the layer to modify
enableБулевоWhether to enable or disable the FX
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (hp <= 3)
- {
-     layer_enable_fx("DesaturateLayer", true);
- }
- else
- {
-     layer_enable_fx("DesaturateLayer", false);
- }

-

Приведенный выше код включает слой Desaturate FX, если значение HP экземпляра меньше или равно 3, в противном случае он отключается. Это указывает игроку на низкий уровень HP, обесцвечивая экран.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_fx_is_enabled.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_fx_is_enabled.htm index c231125fb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_fx_is_enabled.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_fx_is_enabled.htm @@ -1,71 +0,0 @@ - - - - - - layer_fx_is_enabled - - - - - - - - - - -

layer_fx_is_enabled

-

Эта функция возвращает, включен ли фильтр/эффект для слоя.

-

Вы указываете либо ID, либо имя слоя, на который вы хотите нацелиться, и функция возвращает булево значение, указывающее, включен ли FX слоя(true) или отключен(false).

-

-

Синтаксис:

-

layer_fx_is_enabled(layer_name_or_id);

- - - - - - - - - - - - - -
АргументТипОписание
layer_name_or_idСтрока или Идентификатор слояThe name or ID of the layer to check
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

x = xstart;
- y = ystart;
- hp = hp_max;
-
- if (layer_fx_is_enabled("DesaturateLayer"))
- {
-     layer_enable_fx("DesaturateLayer", false);
- } -

-

Приведенный выше код "возрождает" экземпляр, перемещая его в исходное положение и пополняя его HP. Затем он проверяет, включен ли слой Desaturate FX, и если включен, то отключает его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_get_fx.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_get_fx.htm index 9e4e1ad39..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_get_fx.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_get_fx.htm @@ -1,75 +0,0 @@ - - - - - - layer_get_fx - - - - - - - - - - -

layer_get_fx

-

Эта функция используется для получения структуры FX для слоя. Вы указываете либо ID, либо имя слоя, на который вы хотите нацелиться, и функция возвращает структуру, содержащую информацию о примененном эффекте. Эта структура будет похожа на структуру, которую вы получите из fx_create(), и функции fx_get_parameter/s и fx_set_parameter/s могут быть использованы для чтения и изменения его параметров.

-

Если к указанному слою не применены фильтры/эффекты, функция вернет -1.

-

-

Синтаксис:

-

layer_get_fx(layer_name_or_id);

- - - - - - - - - - - - - -
АргументТипОписание
layer_name_or_idСтрока или идентификатор слояThe name or ID of the layer to read
-

-

Возвращается:

-

FX Struct (or -1 if not found)

-

-

Пример:

-

var layers = layer_get_all();
- for(var i = 0; i < array_length(layers); i ++)
- {    
-     var layer_fx = layer_get_fx(layers[i]);
-     
-     if (layer_fx != -1)
-     {
-         if (fx_get_name(layer_fx) == "_filter_tintfilter")
-         {            
-             fx_set_parameter(_fx_tint, "g_TintCol", [0, 0, 1, 1]);
-         }
-     }
- }

-

Приведенный выше код запускает for цикл по всем слоям, присутствующим в комнате, и проверяет каждый слой на наличие FX struct. Если слой имеет FX-структуру, проверяется имя этого фильтра/эффекта путем вызова функции fx_get_name() и если оно равно "_filter_tintfilter", что означает, что это фильтр "Colour Tint", то он меняет цвет оттенка на синий.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_set_fx.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_set_fx.htm index 31e04d518..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_set_fx.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Filter_Effect_Layers/layer_set_fx.htm @@ -1,71 +0,0 @@ - - - - - - layer_set_fx - - - - - - - - - - -

layer_set_fx

-

Эта функция используется для назначения структуры FX слою помещения. Вы указываете либо ID, либо имя слоя, который вы хотите изменить, а затем FX struct (как возвращено из fx_create() или layer_get_fx()), который будет применен к указанному слою, делая эффект видимым в комнате.

-

Если вы укажете слой, который не является слоем фильтра/эффекта, а относится к другому типу (например, слой экземпляра, слой актива, слой плитки и т. д.), то эффект будет применен к содержимому этого слоя, а также ко всем слоям под ним.

-

Если для указанного слоя уже назначена структура FX, она будет заменена новой.

-

ПРИМЕЧАНИЕ Вызов этой функции на корневом уровне сценария ничего не даст, так как сценарии выполняются до загрузки первой комнаты. Вы можете сначала установить целевую комнату, а затем вызвать эту функцию.

-

-

Синтаксис:

-

layer_set_fx(layer_name_or_id, filter_or_effect);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_name_or_idСтрока или Идентификатор слояThe name or ID of the layer to modify
filter_or_effectFX StructThe FX struct to apply to the layer
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _fx_tint = fx_create("_filter_tintfilter");
- fx_set_parameter(_fx_tint, "g_TintCol", [1, 0, 0, 1]);
- layer_set_fx("EffectLayer", _fx_tint);

-

Приведенный выше код создает новую структуру FX из эффекта "_filter_tintfilter", который является фильтром "Colour Tint", находящимся в Room Editor. Он присваивает значение своему параметру "g_TintCol", который является цветом оттенка, а так как внутри это vec4, он принимает массив, содержащий четыре значения (соответствующие значениям красного, зеленого, синего и альфа). Затем FX-структура для оттенка применяется к FX-слою.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/General_Layer_Functions.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/General_Layer_Functions.htm index fb44e57c9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/General_Layer_Functions.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/General_Layer_Functions.htm @@ -1,92 +0,0 @@ - - - - - - Функции общего уровня - - - - - - - - - - -

Функции общего уровня

-

Редактор комнат GameMaker позволяет добавлять в комнату слои различных активов. Это могут быть карты плиток (с использованием наборов плиток), фоны, sprites или последовательности, а также экземпляры, но обратите внимание, что в отличие от редактора комнат, вы не ограничены одним типом активов для одного слоя и можете добавлять несколько типов активов в один слой - например, у вас может быть фон и карта плиток на одном слое. Обратите внимание, что каждый актив, добавленный в слой, считается элементом этого слоя.

-

В этом разделе описаны общие функции, используемые при работе со слоями помещения, а также несколько функций, специфичных для работы с слой экземпляра элементами:

- -

-

У нас также есть несколько дополнительных функций, связанных с нацеливанием слоев в другой комнате. Возможно, вы хотите изменить что-то в комнате, которая не является текущей, или, может быть, вы хотите процедурно генерировать комнаты, или еще что-нибудь. Для этого мы используем следующие функции:

- -

-

В этом случае вы устанавливаете целевую комнату с помощью соответствующей функции, а затем вызываете обычные функции слоя. Теперь эти функции слоя будут применяться только к целевой комнате, а не к текущей. Когда вы закончите, вы вызовете функцию reset, чтобы вернуть область действия кода обратно в текущую комнату.

-

ВНИМАНИЕ! При нацеливании на другую комнату вы можете использовать все обычные функции слоя, за исключением того, что вы не можете создавать экземпляры, используя instance_create_layer() или instance_create_depth(), также не будет доступна функция слоя layer_add_instance() не будет доступна.

-

Наконец, и это исключительно для использования с экземплярами на слоях (хотя сам слой может иметь другие элементы, на них не будут влиять следующие функции), у вас есть пара функций, которые можно использовать для деактивации или повторной активации всех экземпляров:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_add_instance.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_add_instance.htm index 89db6074e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_add_instance.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_add_instance.htm @@ -1,72 +0,0 @@ - - - - - - layer_add_instance - - - - - - - - - - - -

layer_add_instance

-

Эта функция может использоваться для перемещения данного экземпляра со слоя, на котором он находится в данный момент, на другой слой. Вы передаете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность) и ID экземпляра, который нужно переместить между слоями. Например, допустим, ваш игрок находится на слое, глубина которого меньше, чем у другого слоя, и вы хотите, чтобы он отображался за слоями между ними. Вы можете использовать эту функцию, чтобы переключить игрока с переднего плана на фоновый слой и заставить его появиться за другими рисуемыми слоями.

-

ПРИМЕЧАНИЕ Эта функция не может быть использована для добавления нового экземпляра в слой. Вы должны были создать экземпляр ранее и сохранить его ID в переменной.

-

ПРИМЕЧАНИЕ: Эта функция действует только в пределах текущей комнаты и не может быть использована, если область была изменена с помощью функции layer_set_target_room().

-

-

Синтаксис:

-

layer_add_instance(layer_id, instance_id)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the instance layer to target (or the layer name as a string)
instance_idИдентификатор экземпляраThe unique instance ID value of the instance to move over to the target layer
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var near = instance_nearest(x, y, obj_Tree);
- var layer_id = layer_get_id("Instances Front");
- layer_add_instance(layer_id, near);

-

Приведенный выше код сначала получит индекс ближайшего экземпляра к заданной позиции x/y и сохранит его в локальной переменной. Затем он получает уникальный идентификатор слоя экземпляра для слоя с именем "Instances Front" и перемещает найденный экземпляр на этот слой.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_create.htm index 92015f53d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_create.htm @@ -1,71 +0,0 @@ - - - - - - layer_create - - - - - - - - - - - -

layer_create

-

Эта функция используется для создания нового слоя в текущей комнате. Вы указываете глубину, которую должен занять новый слой, и функция возвращает уникальное значение Layer ID, которое затем может быть использовано для доступа к слою в дальнейших функциях. Вы также можете указать дополнительный аргумент "имя", который позволит вам дать слою определенное имя (в виде строки), и вместо ID слоя для доступа к слою вы можете использовать эту строку имени, хотя следует отметить, что использование строк имен будет иметь большее влияние на производительность, чем использование только значения ID. Если вы не укажете имя слоя, то созданному слою будет присвоено имя в формате "_layer_XXX", где "XXX" - шестнадцатеричное значение, используемое для присвоения слою уникального имени.

-

Когда задается значение глубины, оно будет тем выше, чем "дальше" от камеры находится слой, и тем ниже, чем "ближе" к камере находится слой, поэтому если у вас есть три слоя с глубинами -100, 0, 100, слои будут рисоваться в порядке 100, 0, -100, так что "верхним" слоем (т.е. самым близким к виду камеры и поэтому рисуемым поверх всех остальных) будет слой с глубиной -100.

-

На следующем изображении показана схема работы глубины для слоев:

-

Стоит отметить, что хотя вы можете назначить более одного слоя на одну глубину, вы никак не можете гарантировать, что слои на одной глубине будут отрисованы в определенном порядке, поэтому лучше всего назначать только один слой на любую глубину. Также обратите внимание, что минимальная и максимальная глубина слоя составляет от -16000 до 16000, и все, что находится за пределами этих глубин, не будет отрисовано. Если вам нужна глубина за пределами этого диапазона, то вам нужно использовать функцию layer_force_draw_depth().

-

-

Синтаксис:

-

layer_create(depth, [name])

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
depthРеальноThe depth that the layer has to be created at.
nameСтрокаOPTIONAL Имя, которое нужно дать слою (строка).
-

-

Возвращается:

-

Layer ID

-

-

Пример:

-

global.Bullet_Layer = layer_create(-100);

-

Приведенный выше код создаст новый слой со значением глубины -100 и присвоит его ID значение глобальной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_depth.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_depth.htm index c3a2b8743..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_depth.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_depth.htm @@ -1,73 +0,0 @@ - - - - - - layer_depth - - - - - - - - - - -

layer_depth

-

Эта функция может быть использована для изменения глубины заданного слоя, изменяя порядок вывода его содержимого на экран. Вы передаете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), а затем задаете новую глубину слоя (целочисленное значение от -16000 до 16000). Глубина слоя определяется как большая, когда он находится "дальше" от камеры, и меньшая, когда "ближе" к камере, поэтому если у вас есть три слоя с глубинами -100, 0, 100, слои будут рисоваться в порядке 100, 0, -100, так что "верхним" слоем (т.е. ближайшим к виду камеры и поэтому нарисованным поверх всех остальных) будет слой с глубиной -100.

-

На следующем изображении показана схема работы глубины для слоев:

-

Обратите внимание, что вы можете проверить глубину слоя в любое время с помощью функции layer_get_depth(). Также обратите внимание, что минимальная и максимальная глубина слоя составляет от -16000 до 16000, и все, что находится за пределами этих значений, не будет отрисовано. Если вам нужна глубина за пределами этого диапазона, то вам нужно использовать функцию layer_force_draw_depth().

-

Имейте в виду, что изменение глубины слоя может изменить применяемые к нему фильтры и эффекты, так как при изменении глубины на меньшую, чем глубина слоя FX, эффект больше не будет применяться к слою.

-

-

Синтаксис:

-

layer_depth(layer_id, depth)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to set the depth of (or the layer name as a string)
depthРеальноThe new depth for the layer
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if layer_get_depth(layer) != -100
- {
-     layer_depth(layer, -100);
- }

-

Приведенный выше код получает глубину слоя, на котором находится экземпляр, выполняющий код, и если она не равна -100, то глубина устанавливается равной -100.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_destroy.htm index e57eed149..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_destroy.htm @@ -1,65 +0,0 @@ - - - - - - layer_destroy - - - - - - - - - - -

layer_destroy

-

Эта функция уничтожит заданный слой. Вы передаете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), после чего он будет удален из текущей комнаты. Если слой был создан в редакторе комнат, то в следующий раз, когда вы покинете комнату, а затем вернетесь, слой будет создан заново с оригинальным содержимым, однако если комната постоянна, слой будет удален, пока постоянство комнаты не будет снова отключено. Когда вы уничтожаете слой таким образом, все его содержимое также удаляется, поэтому любые идентификаторы ссылок для фонов, карт плиток и т.д. больше не будут действительны, а все экземпляры, назначенные слою, будут уничтожены (при этом одновременно выполняется событие Destroy, если оно у них есть, а также событие Clean Up).

-

-

Синтаксис:

-

layer_destroy(layer_id)

- - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to destroy (or the layer name as a string)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if !instance_exists(obj_Bullet_Parent)
- {
-     layer_destroy(global.Bullet_Layer);
- }

-

Приведенный выше код проверит, существуют ли экземпляры объекта "obj_Bullet_Parent", и если нет, то уничтожит слой с идентификатором, сохраненным в глобальной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_destroy_instances.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_destroy_instances.htm index e86436834..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_destroy_instances.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_destroy_instances.htm @@ -1,66 +0,0 @@ - - - - - - layer_destroy_instances - - - - - - - - - - - -

layer_destroy_instances

-

Эта функция может быть использована для уничтожения всех экземпляров, назначенных данному слою. Вы передаете ID слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), после чего все экземпляры, находящиеся на слое, будут удалены из игры, вызывая события Destroy и Clean Up.

-

-

Синтаксис:

-

layer_destroy_instances(layer_id)

- - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer (or the layer name as a string)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if global.game_over
- {
-     layer_destroy_instances(layer);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_element_move.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_element_move.htm index 05bc2ba27..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_element_move.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_element_move.htm @@ -1,75 +0,0 @@ - - - - - - layer_element_move - - - - - - - - - - -

layer_element_move

-

Эту функцию можно использовать для перемещения элемента с одного слоя на другой. Вы указываете идентификатор элемента, возвращаемый функцией, используемой для создания элемента, или редактором помещений, или функцией layer_get_all_elements(), а затем указываете ID слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность).

-

-

Синтаксис:

-

layer_element_move(element_id, layer_id)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
element_idИдентификатор элемента слояThe unique ID value of the element to move
layer_idСтрока или идентификатор слояThe unique ID value of the layer to move the element to (or the layer name as a string)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var a = layer_get_all_elements(layer);
- asset_layer = layer_create(-100);
- for (var i = 0; i < array_length(a); i++)
- {
-     if layer_get_element_type(a[i]) == layerelementtype_sprite
-     {
-         layer_element_move(a[i], asset_layer)
-     }
- }

-

Приведенный выше код получает элементы на слое, к которому назначен экземпляр, выполняющий код, затем проверяет, являются ли они активами sprite, и если да, то они перемещаются на слой с идентификатором, хранящимся в переменной "asset_layer".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_exists.htm index 3ccf1743b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_exists.htm @@ -1,67 +0,0 @@ - - - - - - layer_exists - - - - - - - - - - - -

layer_exists

-

Эта функция может использоваться для проверки существования заданного слоя. Вы указываете ID слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), и функция вернет булево значение true, если он существует, или false, если не существует.

-

ПРИМЕЧАНИЕ: Эта функция работает в пределах текущей целевой комнаты - по умолчанию это комната, в которой вызывается функция - которую можно установить с помощью функции layer_set_target_room().

-

-

Синтаксис:

-

layer_exists(layer_name)

- - - - - - - - - - - - - -
АргументТипОписание
layer_nameСтрока или идентификатор слояThe name of the layer (a string or ID value)
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !layer_exists(global.tileLayer)
- {
-     global.tileLayer = layer_create(1000);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_force_draw_depth.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_force_draw_depth.htm index eaea5130c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_force_draw_depth.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_force_draw_depth.htm @@ -1,70 +0,0 @@ - - - - - - layer_force_draw_depth - - - - - - - - - - -

layer_force_draw_depth

-

Эта функция заставляет все слои рисоваться на указанной глубине z. Это не меняет порядок отрисовки слоев, они по-прежнему будут отрисовываться в порядке глубины, просто меняется значение z. В общем случае вам не нужно беспокоиться об этом, но если у вас есть слои, глубина которых выходит за пределы допустимого диапазона (от -16000 до 16000), то они не будут отрисованы, поэтому вы можете принудительно установить глубину Z в разумное значение - например, 0 - и все они будут отрисованы нормально. Обратите внимание, что это обычно используется только в старых проектах предыдущих версий GameMaker, где глубина прорисовки может быть больше или меньше допустимого диапазона слоев.

-

-

Синтаксис:

-

layer_force_draw_depth(force, depth)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
forceБулевоWhether to enable (set to true или отключить (установить на false) форсирование глубины Z
depthРеальноThe new Z depth
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if !layer_is_draw_depth_forced()
- {
-     layer_force_draw_depth(true, 0);
- }

-

Приведенный выше код проверяет, является ли глубина Z слоя принудительной или нет, и если нет, то устанавливает глубину Z равной 0 и включает ее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_all.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_all.htm index b87474f77..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_all.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_all.htm @@ -1,53 +0,0 @@ - - - - - - layer_get_all - - - - - - - - - - - -

layer_get_all

-

Эта функция возвращает массив, заполненный уникальными значениями ID каждого слоя в комнате.

-

-

Синтаксис:

-

layer_get_all()

-

-

Возвращается:

-

Array (populated with Layer IDs)

-

-

Пример:

-

var a = layer_get_all();
- for (var i = 0; i < array_length(a); i++)
- {
-     layer_destroy(a[i]);
- }

-

Приведенный выше код извлекает все слои в комнате и добавляет их значения ID в массив. Затем этот массив разбирается для уничтожения слоев комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_all_elements.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_all_elements.htm index b6bc0094d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_all_elements.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_all_elements.htm @@ -1,70 +0,0 @@ - - - - - - layer_get_all_elements - - - - - - - - - - - -

layer_get_all_elements

-

Вы можете использовать эту функцию для получения идентификаторов элементов заданного слоя. Вы передаете ID слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), и функция вернет массив идентификаторов, где каждая запись в массиве является уникальным идентификатором элемента данного слоя. Например, если слой является слоем активов, массив будет заполнен значениями ID для каждого актива sprite, который назначен слою. Обратите внимание, что использование кода для работы со слоями означает, что вы можете назначить различные типы элементов одному и тому же слою - например, у вас могут быть активы sprite наряду с экземплярами - в этом случае вы можете использовать функцию layer_get_element_type() для получения типа элемента, к которому относится идентификатор.

-

-

Синтаксис:

-

layer_get_all_elements(layer_id)

- - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или Идентификатор слояThe unique ID value of the layer to get the elements from (or the layer name as a string)
-

-

Возвращается:

-

Array of Layer Element IDs

-

-

Пример:

-

var a = layer_get_all_elements(layer);
- for (var i = 0; i < array_length(a); i++)
- {
-     if (layer_get_element_type(a[i]) == layerelementtype_sprite)
-     {
-         layer_sprite_destroy(a[i]);
-     }
- }

-

Приведенный выше код получает идентификаторы всех элементов экземпляра, назначенных слою экземпляра, на котором выполняется код. Затем код проверяет, являются ли какие-либо из возвращенных элементов активами sprite, и если да, то они уничтожаются.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_depth.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_depth.htm index 3a883991f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_depth.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_depth.htm @@ -1,69 +0,0 @@ - - - - - - layer_get_depth - - - - - - - - - - - -

layer_get_depth

-

С помощью этой функции можно получить значение глубины, связанное с заданным слоем. Вы передаете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), и функция вернет глубину слоя в виде вещественного числа. Обратите внимание, что глубина определяется как большая, чем "дальше" от камеры, и меньшая, чем "ближе" к камере, поэтому если у вас есть три слоя с глубинами -100, 0, 100, слои будут рисоваться в порядке 100, 0, -100, так что "верхним" слоем (т.е. ближайшим к виду камеры и поэтому нарисованным поверх всех остальных) будет слой с глубиной -100.

-

На следующем изображении показана схема работы глубины для слоев:

-

Обратите внимание, что если вы предоставите недопустимое значение ID слоя, вы получите ошибку.

-

-

Синтаксис:

-

layer_get_depth(layer_id)

- - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to get the depth of (or the layer name as a string)
-

-

Возвращается:

-

Real

-

-

Пример:

-

if layer_get_depth(global.temp_layer) != -100
- {
-     layer_destroy(global.temp_layer);
-     global.temp_layer = layer_create(-100);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_element_layer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_element_layer.htm index e1401c5a8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_element_layer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_element_layer.htm @@ -1,63 +0,0 @@ - - - - - - layer_get_element_layer - - - - - - - - - - - -

layer_get_element_layer

-

Вы можете использовать эту функцию для получения ID слоя, на котором находится данный элемент. Вы передаете уникальное значение ID элемента (например, возвращенное функцией, создавшей элемент, или из редактора помещений), а функция возвращает уникальный ID слоя, на котором находится элемент. Если заданный ID элемента не является действительным, то функция вернет -1.

-

-

Синтаксис:

-

layer_get_element_layer(element_id)

- - - - - - - - - - - - - -
АргументТипОписание
element_idИдентификатор элемента слояThe unique ID value of the element to get the layer of
-

-

Возвращается:

-

Layer ID or -1 (if the element is invalid)

-

-

Пример:

-

element = layer_get_element_layer(asset_1);

-

Приведенный выше код получает ID слоя для элемента с ID, хранящимся в переменной "asset_1", и сохраняет его в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_element_type.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_element_type.htm index a50f19dcd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_element_type.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_element_type.htm @@ -1,121 +0,0 @@ - - - - - - layer_get_element_type - - - - - - - - - - - -

layer_get_element_type

-

Вы можете использовать эту функцию для получения типа элемента для заданного элемента. Вы передаете уникальное значение ID элемента (например, возвращаемое функцией, создавшей элемент, или из редактора комнат), а функция возвращает одну из следующих констант (или -1, если элемент не существует или значение ID ошибочно):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип элемента слоя Постоянная
ПостояннаяОписание
layerelementtype_backgroundЭлемент является фоном.
layerelementtype_instanceЭлемент является экземпляром.
layerelementtype_spriteЭлемент является активом sprite.
layerelementtype_tilemapЭлемент представляет собой карту плитки.
layerelementtype_particlesystemЭлемент представляет собой систему частиц.
layerelementtype_tileЭлемент является унаследованной фоновой плиткой (это справедливо только для проектов, которые были импортированы из предыдущих версий GameMaker).
layerelementtype_sequenceЭлемент является активом последовательности.
-

Обратите внимание, что эта функция наиболее полезна, когда у вас есть несколько различных типов элементов, назначенных одному слою, и что вы можете получить список всех элементов на любом данном слое с помощью функции layer_get_all_elements().

-

-

Синтаксис:

-

layer_get_element_type(element_id)

- - - - - - - - - - - - - -
АргументТипОписание
layerИдентификатор элемента слояThe unique ID value of the element to get the type of
-

-

Возвращается:

-

Layer Element Type Constant or -1 (if element does not exist or is invalid)

-

-

Пример:

-

var a = layer_get_all_elements(layer);
- for (var i = 0; i < array_length(a); i++)
- {
-     if layer_get_element_type(a[i]) == layerelementtype_sprite
-     {
-         layer_sprite_destroy(a[i]);
-     }
- }

-

Приведенный выше код получает идентификаторы всех элементов экземпляра, назначенных слою экземпляра, на котором выполняется код. Затем код проверяет, являются ли какие-либо из возвращенных элементов активами sprite, и если да, то они уничтожаются.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_forced_depth.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_forced_depth.htm index 8f464f144..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_forced_depth.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_forced_depth.htm @@ -1,52 +0,0 @@ - - - - - - layer_get_forced_depth - - - - - - - - - - - -

layer_get_forced_depth

-

Эта функция может быть использована для получения глубины Z, установленной для рендеринга слоев в помещении. См. layer_force_draw_depth() для получения дополнительной информации.

-

-

Синтаксис:

-

layer_get_forced_depth()

-

-

Возвращается:

-

Real

-

-

Пример:

-

if layer_get_forced_depth() != 0
- {
-     layer_force_draw_depth(true, 0);
- }

-

Приведенный выше код проверяет, имеет ли глубина Z слоя принудительное значение 0 или нет, и если нет, то устанавливает глубину Z слоя равной 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_hspeed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_hspeed.htm index 0abb3059e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_hspeed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_hspeed.htm @@ -1,68 +0,0 @@ - - - - - - layer_get_hspeed - - - - - - - - - - - -

layer_get_hspeed

-

Вы можете использовать эту функцию для получения горизонтальной скорости (в пикселях на игровой кадр) слоя в текущей комнате. Вы передаете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), и функция возвращает действительное число для горизонтальной скорости, где положительное значение - вправо, а отрицательное - влево. По умолчанию 0 (если не задано в редакторе помещений).

-

-

Синтаксис:

-

layer_get_hspeed(layer_id)

- - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to get the horizontal speed from
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Sprites");
- if (layer_get_hspeed(lay_id) != 0 || layer_get_vspeed(lay_id) != 0)
- {
-     layer_hspeed(lay_id, 0);
-     layer_vspeed(lay_id, 0);
- }

-

Приведенный выше код проверяет заданные горизонтальную и вертикальную скорости слоя, и если они обе не равны 0, то устанавливает их в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_id.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_id.htm index ba5780b8f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_id.htm @@ -1,62 +0,0 @@ - - - - - - layer_get_id - - - - - - - - - - - -

layer_get_id

-

Эту функцию можно использовать для получения уникального значения ID для данного слоя. В IDE все слои имеют имя и тип, и чтобы иметь возможность редактировать или изменять их с помощью кода, необходимо задать значение ID слоя. Данная функция используется для получения этого ID, используя имя (строку) слоя (как написано в IDE). Если вы создаете новый слой с помощью кода, используя функцию layer_create() то эта функция вернет уникальное значение ID (динамически созданные слои не получают имен). Обратите внимание, что если вы зададите имя слоя, который не существует в текущей комнате, то вы получите ошибку и проект завершится аварийно.

-

-

Синтаксис:

-

layer_get_id(layer_name)

- - - - - - - - - - - -
АргументТипОписание
layer_nameThe name of the layer (a string)
-

-

Возвращается:

-

Layer ID or -1 (if the layer specified doesn't exist)

-

-

Пример:

-

var near = instance_nearest(x, y, obj_Tree);
- var layer_id = layer_get_id("Instances Front");
- layer_add_instance(layer_id, near);

-

Приведенный выше код сначала получит индекс ближайшего экземпляра к заданной позиции x/y и сохранит его в локальной переменной. Затем он получает уникальный идентификатор слоя экземпляра для слоя с именем "Instances Front" и перемещает найденный экземпляр на этот слой.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_id_at_depth.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_id_at_depth.htm index 721af0cf9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_id_at_depth.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_id_at_depth.htm @@ -1,70 +0,0 @@ - - - - - - layer_get_id_at_depth - - - - - - - - - - - -

layer_get_id_at_depth

-

Вы можете использовать эту функцию для получения идентификаторов всех слоев, которым присвоена определенная глубина. Вы указываете глубину, которую нужно проверить, и функция возвращает массив с 1 или более элементами в зависимости от того, есть ли слои на данной глубине или нет. Если на данной глубине нет слоев, то в массиве будет одна запись в позиции [0] со значением -1, но если на данной глубине есть слои, то в массиве будет сделана запись для каждого найденного слоя - значение записи будет уникальным значением ID для слоя.

-

-

Синтаксис:

-

layer_get_id_at_depth(depth)

- - - - - - - - - - - - - -
АргументТипОписание
depthРеальноThe depth to check and retrieve the layer IDs from.
-

-

Возвращается:

-

Array

-

-

Пример:

-

var a = layer_get_id_at_depth(0);
- if (a[0] != -1)
- {
-     for (var i = 0; i < array_length(a); i++)
-     {
-         layer_destroy(a[i]);
-     }
- }

-

Приведенный выше код извлекает данные о слоях с глубиной 0. Выполняется проверка, существуют ли слои с такой глубиной, и если существуют, то возвращаемый массив разбирается и каждый из найденных слоев уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_name.htm index cbb6013d2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_name.htm @@ -1,70 +0,0 @@ - - - - - - layer_get_name - - - - - - - - - - - -

layer_get_name

-

Вы можете использовать эту функцию для получения имени заданного слоя. Вы передаете уникальное значение ID слоя, и если слой является одним из именованных слоев, созданных в редакторе помещений, то функция вернет строку с именем слоя. Если слой не является одним из слоев, созданных в редакторе помещений (т.е. он был создан с помощью функции layer_create()), то будет возвращена пустая строка.

-

-

Синтаксис:

-

layer_get_name(layer_id)

- - - - - - - - - - - - - -
АргументТипОписание
layer_idИдентификатор слояThe unique ID value of the layer to get the name of
-

-

Возвращается:

-

String

-

-

Пример:

-

var a = layer_get_all();
- var layer_list = ds_list_create(); for (var i = 0; i Alt; array_length(a); i++;)
- {
-     if (layer_get_name(_arr_layers[i]) != "")
-     {
-         array_push(_arr_layers_named, _arr_layers[i]);
-     }
- }

-

Приведенный выше код получает идентификаторы всех слоев в комнате и затем циклически проверяет, являются ли они именованными слоями. Если это так, то их ID добавляется в список.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_script_begin.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_script_begin.htm index 1a3318a24..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_script_begin.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_script_begin.htm @@ -1,66 +0,0 @@ - - - - - - layer_get_script_begin - - - - - - - - - - - -

layer_get_script_begin

-

Вы указываете ID слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), и эта функция вернет индекс функции сценария, назначенной для запуска в начале рендеринга для этого слоя, или вернет -1, если функция не назначена. Вы можете назначить функции сценария слою с помощью layer_script_begin() и layer_script_end().

-

-

Синтаксис:

-

layer_get_script_begin(layer_id);

- - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или Идентификатор слояThe unique ID value of the layer to target (or the layer name as a string)
-

-

Возвращается:

-

Script Function or -1 (if no function is assigned)

-

-

Пример:

-

if layer_get_script_begin(layer) == -1
- {
-     layer_script_begin(layer, scr_SetShaderValues);
- }

-

Приведенный выше код проверяет, назначена ли слою, на котором находится экземпляр, выполняющий код, функция сценария, и если нет, то назначается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_script_end.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_script_end.htm index afaed98ac..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_script_end.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_script_end.htm @@ -1,66 +0,0 @@ - - - - - - layer_get_script_end - - - - - - - - - - - -

layer_get_script_end

-

Эта функция возвращает индекс функции сценария, назначенной для запуска в конце рендеринга данного слоя, или возвращает -1, если функция не назначена. Вы передаете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность). Вы можете назначить функции сценария слою с помощью layer_script_begin() и layer_script_end().

-

-

Синтаксис:

-

layer_get_script_end(layer_id);

- - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или Идентификатор слояThe unique ID value of the layer to target (or the layer name as a string)
-

-

Возвращается:

-

Script Function or -1 (if no function is assigned)

-

-

Пример:

-

if layer_get_script_end(layer) == -1
- {
-     layer_script_end(layer, scr_ResetShaderValues);
- }

-

Приведенный выше код проверяет, назначена ли слою, на котором находится экземпляр, выполняющий код, функция сценария, и если нет, то назначается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_shader.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_shader.htm index 0341216b4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_shader.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_shader.htm @@ -1,66 +0,0 @@ - - - - - - layer_get_shader - - - - - - - - - - - -

layer_get_shader

-

Эта функция используется для проверки того, назначен ли данному слою шейдер. Вы передаете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), и функция вернет либо индекс назначенного шейдера, либо -1, если шейдер не назначен.

-

-

Синтаксис:

-

layer_get_shader(layer_id)

- - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to target (or the layer name as a string)
-

-

Возвращается:

-

Shader Asset or -1 (if no shader is assigned)

-

-

Пример:

-

if layer_get_shader(layer) == -1
- {
-     layer_shader(layer, shd_Sepia);
- }

-

Приведенный выше код проверяет, назначен ли шейдер слою, на котором находится экземпляр, выполняющий код, и если нет, то назначает шейдер.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_target_room.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_target_room.htm index a2077d843..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_target_room.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_target_room.htm @@ -1,52 +0,0 @@ - - - - - - layer_get_target_room - - - - - - - - - - - -

layer_get_target_room

-

Эта функция возвращает текущее помещение, на которое направлены функции слоя. См. layer_set_target_room() для получения дополнительной информации.

-

-

Синтаксис:

-

layer_get_target_room()

-

-

Возвращается:

-

Room Asset

-

-

Пример:

-

if layer_get_target_room() != room
- {
-     layer_reset_target_room();
- }

-

Приведенный выше код проверяет текущую целевую комнату, и если она не является текущей, то происходит сброс целевой комнаты слоя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_visible.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_visible.htm index d568cedfa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_visible.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_visible.htm @@ -1,71 +0,0 @@ - - - - - - layer_get_visible - - - - - - - - - - - -

layer_get_visible

-

С помощью этой функции можно проверить, является ли слой видимым или нет. Вы передаете ID слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), и функция вернет true, если слой виден, и false в противном случае.

-

-

Синтаксис:

-

layer_get_visible(layer_id)

- - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to target (or the layer name as a string)
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var lay_id = layer_get_id("Instances");
- if (layer_get_visible(lay_id))
- {
-     layer_set_visible(lay_id, false);
- }
- else
- {
-     layer_set_visible(lay_id, true);
- }

-

Приведенный выше код получает значение ID для слоя с именем "Instances" в редакторе комнаты, затем использует ID для проверки того, виден ли слой или нет, переключая видимость слоя в зависимости от возвращаемого значения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_vspeed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_vspeed.htm index 1592b220f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_vspeed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_vspeed.htm @@ -1,68 +0,0 @@ - - - - - - layer_get_vspeed - - - - - - - - - - - -

layer_get_vspeed

-

Вы можете использовать эту функцию для получения вертикальной скорости (в пикселях на игровой кадр) слоя в текущей комнате. Вы передаете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), и функция возвращает действительное число для вертикальной скорости, где положительное значение - вниз, а отрицательное - вверх. По умолчанию - 0 (если не задано в редакторе помещений).

-

-

Синтаксис:

-

layer_get_vspeed(layer_id)

- - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to get the vertical speed from
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Sprites");
- if layer_get_hspeed(lay_id) != 0 || layer_get_vspeed(lay_id) != 0
- {
-     layer_hspeed(lay_id, 0);
-     layer_vspeed(lay_id, 0);
- }

-

Приведенный выше код проверяет заданные горизонтальную и вертикальную скорости слоя, и если они обе не равны 0, то устанавливает их в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_x.htm index 829b85a8a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_x.htm @@ -1,68 +0,0 @@ - - - - - - layer_get_x - - - - - - - - - - - -

layer_get_x

-

Вы можете использовать эту функцию для получения x-положения слоя в текущем масштабируемом помещении. Вы передаете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), и функция возвращает вещественное число для x-положения слоя относительно (0,0) положения комнаты. По умолчанию - 0.

-

-

Синтаксис:

-

layer_get_x(layer_id)

- - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to get the x position of
-

-

Возвращается:

-

Real

-

-

Пример:

-

var lay_id = layer_get_id("Sprites");
- if layer_get_x(lay_id) != 0 || layer_get_y(lay_id) != 0
- {
-     layer_x(lay_id, 0);
-     layer_y(lay_id, 0);
- }

-

Приведенный выше код проверяет заданную позицию слоя, и если она не установлена в (0, 0), то она устанавливается в эту позицию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_y.htm index fa19259ad..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_get_y.htm @@ -1,68 +0,0 @@ - - - - - - layer_get_y - - - - - - - - - - - -

layer_get_y

-

Вы можете использовать эту функцию для получения позиции y слоя в пределах текущего масштабируемого помещения. Вы передаете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), и функция возвращает вещественное число для x-положения слоя относительно (0,0) положения комнаты. По умолчанию - 0.

-

-

Синтаксис:

-

layer_get_y(layer_id)

- - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to get the y position of
-

-

Возвращается:

-

Real

-

-

Пример:

-

var lay_id = layer_get_id("Sprites");
- if layer_get_x(lay_id) != 0 || layer_get_y(lay_id) != 0
- {
-     layer_x(lay_id, 0);
-     layer_y(lay_id, 0);
- }

-

Приведенный выше код проверяет заданную позицию слоя, и если она не установлена в (0, 0), то она устанавливается в эту позицию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_has_instance.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_has_instance.htm index cf6b053d1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_has_instance.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_has_instance.htm @@ -1,71 +0,0 @@ - - - - - - layer_has_instance - - - - - - - - - - - -

layer_has_instance

-

Эта функция может быть использована для проверки того, назначен ли данный экземпляр на данный момент данному слою. Вы передаете ID слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность) и ID экземпляра, который нужно проверить. Можно также указать object_index (т.е. имя объекта в Asset Browser), и функция проверит, есть ли экземпляры этого объекта на данном слое. Функция вернет true, если экземпляр находится на слое, и false, если нет.

-

-

Синтаксис:

-

layer_has_instance(layer_id, instance_id)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to target (or the layer name as a string)
instance_idИдентификатор экземпляраThe unique instance ID or the object index of the instance to check for
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !layer_has_instance(global.Bullet_Layer, obj_Bullet_Parent)
- {
-     layer_destroy(global.Bullet_Layer);
- }

-

Приведенный выше код проверит, содержит ли данный слой какие-либо экземпляры объекта "obj_Bullet_Parent", и если нет, то уничтожит слой.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_hspeed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_hspeed.htm index 068f5c067..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_hspeed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_hspeed.htm @@ -1,72 +0,0 @@ - - - - - - layer_hspeed - - - - - - - - - - -

layer_hspeed

-

Вы можете использовать эту функцию для установки горизонтальной скорости (в пикселях на игровой кадр) слоя в пределах текущей комнаты. Вы передаете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность) и значение скорости, которое нужно установить, где положительное значение - вправо, а отрицательное - влево.

-

-

Синтаксис:

-

layer_hspeed(layer_id, hspd)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to set the horizontal speed of
hspdРеальноThe horizontal speed (in pixels per game frame) to set
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Sprites");
- if layer_get_hspeed(lay_id) != 0 || layer_get_vspeed(lay_id) != 0
- {
-     layer_hspeed(lay_id, 0);
-     layer_vspeed(lay_id, 0);
- }

-

Приведенный выше код проверяет заданные горизонтальную и вертикальную скорости слоя, и если они обе не равны 0, то устанавливает их в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_instance_get_instance.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_instance_get_instance.htm index 4b61e0ee2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_instance_get_instance.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_instance_get_instance.htm @@ -1,72 +0,0 @@ - - - - - - layer_instance_get_instance - - - - - - - - - - - -

layer_instance_get_instance

-

Эта функция может быть использована для получения уникального идентификатора экземпляра заданного элемента экземпляра. Вы сообщаете ID элемента экземпляра (как его получить, см. пример кода ниже), и функция возвращает вещественное значение, представляющее уникальный идентификатор экземпляра для элемента. Если элемент не является экземпляром, функция вернет -1.

-

-

Синтаксис:

-

layer_instance_get_instance(element_id)

- - - - - - - - - - - - - -
АргументТипОписание
element_idИдентификатор элемента экземпляраThe unique ID value of the instance element to get the ID of
-

-

Возвращается:

-

Instance ID

-

-

Пример:

-

elements = layer_get_all_elements("Instances");
- for (var i = 0; i < array_length(elements); i++)
- {
-      if (layer_get_element_type(_elements[i]) == layerelementtype_instance)
-      {
-          var _element = _elements[i];
-          var _inst = layer_instance_get_instance(_element);
-          _inst.x = _inst.x + 10;
-      }
- }

-

Приведенный выше код проверит все элементы экземпляра на слое, затем получит их уникальное значение ID и использует его для перемещения на 10px вправо.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_is_draw_depth_forced.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_is_draw_depth_forced.htm index 65bcf7ac4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_is_draw_depth_forced.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_is_draw_depth_forced.htm @@ -1,52 +0,0 @@ - - - - - - layer_is_draw_depth_forced - - - - - - - - - - - -

layer_is_draw_depth_forced

-

Эта функция может быть использована для проверки и определения того, включена ли принудительная глубина Z для рендеринга слоев в проекте. См. layer_force_draw_depth() для получения дополнительной информации.

-

-

Синтаксис:

-

layer_is_draw_depth_forced()

-

-

Возвращается:

-

-

-

Пример:

-

if !layer_is_draw_depth_forced()
- {
-     layer_force_draw_depth(true, 0);
- }

-

Приведенный выше код проверяет, является ли глубина Z слоя принудительной или нет, и если нет, то устанавливает глубину Z равной 0 и включает ее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_reset_target_room.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_reset_target_room.htm index 4b0676367..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_reset_target_room.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_reset_target_room.htm @@ -1,54 +0,0 @@ - - - - - - layer_reset_target_room - - - - - - - - - - -

layer_reset_target_room

-

Эта функция используется для сброса цели слоя на текущую комнату. См. функцию layer_set_target_room() для получения дополнительной информации.

-

-

Синтаксис:

-

layer_reset_target_room()

-

-

Возвращается:

-

-

-

Пример:

-

layer_set_target_room(rm_Game);
- var l = layer_get_id("SpriteAssets");
- repeat(50)
- {
-     layer_sprite_create(l, irandom(1000), irandom(1000), spr_Trees);
- }
- layer_reset_target_room();

-

Приведенный выше код устанавливает целевую комнату на комнату "rm_Game", а затем получает идентификатор слоя под названием "SpriteAssets" в этой комнате. Этот идентификатор слоя затем используется для добавления 50 случайных активов sprite в слой, прежде чем цель слоя будет сброшена на текущую комнату.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_script_begin.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_script_begin.htm index 4a80ce4af..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_script_begin.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_script_begin.htm @@ -1,98 +0,0 @@ - - - - - - layer_script_begin - - - - - - - - - - -

layer_script_begin

-

С помощью этой функции вы можете назначить слою функцию сценария, которая будет вызываться перед отрисовкой слоя. При добавлении функции к слою она будет выполняться в начале каждого из различных событий рисования, поэтому вы можете захотеть проверить в назначенной функции, какое событие является текущим событием рендеринга, и адаптировать код в соответствии с этим. Это можно сделать, проверив event_type и/или event_number (см. расширенный пример ниже). Обратите внимание, что функция не предназначена для вызова в любых событиях рисования или событиях шага, а должна вызываться только в начале комнаты в коде создания комнаты или в событии Create Event / Room Start Event экземпляра.

-

-

Синтаксис:

-

layer_script_begin(layer_id, script);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to target (or the layer name as a string)
scriptФункция сценарияThe script function index to assign to the layer
-

-

Возвращается:

-

N/A

-

-

Расширенный пример:

-

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

-

/// @function layer_shader_start();
- function layer_shader_start()
- {
-     if (event_type == ev_draw)
-     {
-         if event_number == 0
-         {
-             colour_to_find = shader_get_uniform(sShaderDemo5, "f_Colour1");
-             colour_to_set = shader_get_uniform(sShaderDemo5, "f_Colour2");
-             shader_set(s_ColourChanger);
-             shader_set_uniform_f(colour_to_find, 1,1,1 );
-             shader_set_uniform_f(colour_to_set, 1,0,0 );
-         }
-     }
- }

-

Затем у нас будет сопутствующая функция для сброса шейдера после завершения рисования:

-

/// @function layer_shader_end();
- function layer_shader_end()
- {
-     if (event_type == ev_draw)
-     {
-         if event_number == 0
-         {
-             shader_reset();
-         }
-     }
- }

-

Теперь, когда мы определили наши скриптовые функции для установки шейдера, мы должны назначить их определенному слою, чтобы слой знал, что их нужно вызывать. Это можно сделать в коде создания комнаты, или в событии создания, или в событии начала комнаты какого-либо объекта контроллера (их не нужно устанавливать каждый шаг, а лучше один раз при начале комнаты или при первоначальном создании слоя):

-

var lay_id = layer_get_id("Instances");
- layer_script_begin(lay_id, layer_shader_start);
- layer_script_end(lay_id, layer_shader_end);

-

Этот последний блок кода назначает скрипты слою.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_script_end.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_script_end.htm index c9d0cb754..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_script_end.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_script_end.htm @@ -1,98 +0,0 @@ - - - - - - layer_script_end - - - - - - - - - - -

layer_script_end

-

С помощью этой функции вы можете назначить слою функцию сценария, которая будет вызвана после отрисовки слоя. При добавлении функции к слою таким образом, она будет выполняться в конце каждого из различных событий рисования, поэтому вы можете захотеть проверить в назначенной функции, какое событие в данный момент завершает рендеринг, и адаптировать код в соответствии с этим. Это можно сделать, проверив event_type и/или event_number (см. расширенный пример ниже). Обратите внимание, что функция не предназначена для вызова в любых событиях рисования или событиях шага, а должна вызываться только в начале комнаты в коде создания комнаты или в событии Create Event / Room Start Event экземпляра.

-

-

Синтаксис:

-

layer_script_end(layer_id, script)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to target (or the layer name as a string)
scriptФункция сценарияThe script function index to assign to the layer
-

-

Возвращается:

-

N/A

-

-

Расширенный пример:

-

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

-

/// @function layer_shader_start();
- function layer_shader_start()
- {
-     if (event_type == ev_draw)
-     {
-         if event_number == 0
-         {
-             colour_to_find = shader_get_uniform(sShaderDemo5, "f_Colour1");
-             colour_to_set = shader_get_uniform(sShaderDemo5, "f_Colour2");
-             shader_set(s_ColourChanger);
-             shader_set_uniform_f(colour_to_find, 1,1,1 );
-             shader_set_uniform_f(colour_to_set, 1,0,0 );
-         }
-     }
- }

-

Затем у нас будет сопутствующая функция для сброса шейдера после завершения рисования:

-

/// @function layer_shader_end();
- function layer_shader_end()
- {
-     if (event_type == ev_draw)
-     {
-         if event_number == 0
-         {
-             shader_reset();
-         }
-     }
- }

-

Теперь, когда мы определили наши скриптовые функции для установки шейдера, мы должны назначить их определенному слою, чтобы слой знал, что их нужно вызывать. Это можно сделать в коде создания комнаты, или в событии создания, или в событии начала комнаты какого-либо объекта контроллера (их не нужно устанавливать каждый шаг, а лучше один раз при начале комнаты или при первоначальном создании слоя):

-

var lay_id = layer_get_id("Instances");
- layer_script_begin(lay_id, layer_shader_start);
- layer_script_end(lay_id, layer_shader_end);

-

Этот последний блок кода назначает скрипты слою.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_set_target_room.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_set_target_room.htm index ce323a9da..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_set_target_room.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_set_target_room.htm @@ -1,69 +0,0 @@ - - - - - - layer_set_target_room - - - - - - - - - - -

layer_set_target_room

-

Вызывая эту функцию, вы сообщаете программе GameMaker, что все дальнейшие функции слоев должны применяться к данной комнате. Таким образом, вы можете процедурно изменять или генерировать слои и содержимое слоев в комнате, которая не является текущей. Когда вы закончите добавлять слои или элементы слоев в комнату, вызовите функцию layer_reset_target_room() для сброса цели комнаты (или вызовите эту функцию снова с аргументом комнаты, равным -1). Обратите внимание, что эта функция может использоваться только для комнат, отличных от текущей комнаты, и предназначена для того, чтобы вы могли добавлять/удалять слои и элементы слоев в комнатах, отличных от текущей комнаты.

-

ВНИМАНИЕ! При нацеливании на другую комнату вы можете использовать все обычные функции слоя, за исключением того, что вы не можете создавать экземпляры, используя instance_create_layer() или instance_create_depth(), также не будет доступна функция слоя layer_add_instance() не будет доступна.

-

-

Синтаксис:

-

layer_set_target_room(room)

- - - - - - - - - - - -
АргументТипОписание
roomThe room to target for all further layer functions
-

-

Возвращается:

-

-

-

Пример:

-

layer_set_target_room(rm_Game);
- var l = layer_get_id("SpriteAssets");
- repeat(50)
- {
-     var _x = irandom(1000);
-     var _y = irandom(1000);
-     layer_sprite_create(l, _x, _y, spr_Trees);
- }
- layer_reset_target_room();

-

Приведенный выше код устанавливает целевую комнату на комнату "rm_Game", а затем получает идентификатор слоя под названием "SpriteAssets" в этой комнате. Затем этот идентификатор слоя используется для добавления 50 случайных активов sprite в слой, прежде чем цель слоя будет сброшена на текущую комнату.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_set_visible.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_set_visible.htm index 8f7940b41..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_set_visible.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_set_visible.htm @@ -1,76 +0,0 @@ - - - - - - layer_set_visible - - - - - - - - - - -

layer_set_visible

-

С помощью этой функции можно переключить видимость слоя. Вы передаете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), а также значение переключения для слоя, где visible - true, а invisible - false.

-

Когда слой невидим, ничто, назначенное этому слою, не будет рисоваться, а если слою назначены какие-либо экземпляры, то они даже не запустят свое событие рисования (точно так же, как если бы вы установили переменную экземпляра visible в значение false). Обратите внимание, что любые экземпляры, которые уже помечены как невидимые, не будут помечены как видимые, если для слоя, на котором они находятся, установлено значение visible, поскольку это две независимые настройки, хотя их поведение одинаково.

-

-

Синтаксис:

-

layer_set_visible(layer_id, visible)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to target (or the layer name as a string)
visibleБулевоWhether the layer should be visible (true) или нет (false)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Instances");
- if (layer_get_visible(lay_id))
- {
-     layer_set_visible(lay_id, false);
- }
- else
- {
-     layer_set_visible(lay_id, true);
- }

-

Приведенный выше код получает значение ID для слоя с именем "Instances" в редакторе помещений, затем использует ID для проверки видимости слоя, переключая видимость слоя в зависимости от возвращаемого значения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_shader.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_shader.htm index ba198dcc1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_shader.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_shader.htm @@ -1,69 +0,0 @@ - - - - - - layer_shader - - - - - - - - - - -

layer_shader

-

С помощью этой функции вы можете назначить шейдерный ресурс любому заданному слою, после чего слой будет отрисован с использованием этого шейдера. Вы передаете либо уникальное значение ID слоя, либо имя слоя (в виде строки - это влияет на производительность), а также ID шейдера, который необходимо использовать. Шейдер должен быть создан ранее в Asset Browser, а индекс шейдера (имя ресурса шейдера) передается в эту функцию. Если в назначенный слой добавлены экземпляры, то шейдер будет применен ко всем событиям рисования, которые использует этот экземпляр - например, если у экземпляра есть событие Draw GUI Begin, то шейдер будет применен к нему автоматически. Шейдер также будет влиять на любые другие графические элементы, нарисованные на этом слое, например на активы sprite или карты плиток.

-

Обратите внимание, что функция не предназначена для вызова в каких-либо событиях рисования или событиях шага, а должна вызываться только в начале комнаты в коде создания комнаты или в событии Create Event / Room Start Event экземпляра.

-

-

Синтаксис:

-

layer_shader(layer_id, shader)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to target (or the layer name as a string)
shaderШейдерный активThe shader index to assign to the layer
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Instances");
- layer_shader(lay_id, shd_Sepia);

-

Приведенный выше код назначит шейдерный ресурс "shd_Sepia" данному слою для всей отрисовки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_vspeed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_vspeed.htm index d49d87363..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_vspeed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_vspeed.htm @@ -1,72 +0,0 @@ - - - - - - layer_vspeed - - - - - - - - - - -

layer_vspeed

-

Вы можете использовать эту функцию для установки вертикальной скорости (в пикселях на игровой кадр) слоя в пределах текущей комнаты. Вы передаете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность) и значение скорости, которое нужно установить, где положительное значение - вниз, а отрицательное - вверх.

-

-

Синтаксис:

-

layer_vspeed(layer_id, vspd)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to set the vertical speed of
vspdРеальноThe vertical speed (in pixels per game frame) to set
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Sprites");
- if layer_get_hspeed(lay_id) != 0 || layer_get_vspeed(lay_id) != 0
- {
-     layer_hspeed(lay_id, 0);
-     layer_vspeed(lay_id, 0);
- }

-

Приведенный выше код проверяет заданные горизонтальную и вертикальную скорости слоя, и если они обе не равны 0, то устанавливает их в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_x.htm index 532372610..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_x.htm @@ -1,72 +0,0 @@ - - - - - - layer_x - - - - - - - - - - -

layer_x

-

Эту функцию можно использовать для установки x-позиции слоя в пределах текущего масштабируемого помещения. Вы указываете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), и функция переместит слой на заданное количество пикселей вдоль горизонтальной оси комнаты.

-

-

Синтаксис:

-

layer_x(layer_id, x)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to set the x position of
xРеальноThe x position in the room to set the layer to
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Sprites");
- if layer_get_x(lay_id) != 0 || layer_get_y(lay_id) != 0
- {
-     layer_x(lay_id, 0);
-     layer_y(lay_id, 0);
- }

-

Приведенный выше код проверяет заданную позицию слоя, и если она не установлена в (0, 0), то она устанавливается в эту позицию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_y.htm index 88af148be..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/General_Layer_Functions/layer_y.htm @@ -1,72 +0,0 @@ - - - - - - layer_y - - - - - - - - - - -

layer_y

-

Эту функцию можно использовать для установки положения слоя по оси y в пределах текущего масштабируемого помещения. Вы указываете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), и функция переместит слой на заданное количество пикселей вдоль вертикальной оси комнаты.

-

-

Синтаксис:

-

layer_y(layer_id, y)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to set the y position of
yРеальноThe y position in the room to set the layer to
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Sprites");
- if layer_get_x(lay_id) != 0 || layer_get_y(lay_id) != 0
- {
-     layer_x(lay_id, 0);
-     layer_y(lay_id, 0);
- }

-

Приведенный выше код проверяет заданную позицию слоя, и если она не установлена в (0, 0), то она устанавливается в эту позицию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Rooms.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Rooms.htm index 404da0985..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Rooms.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Rooms.htm @@ -1,94 +0,0 @@ - - - - - - Номера - - - - - - - - - - -

Номера

-

Комнаты создаются в редакторе комнат в GameMaker, и именно в них происходит все, что происходит в вашей игре. Для запуска игры в любой игре должна быть хотя бы одна комната, но в зависимости от типа игры и структуры проекта вам может понадобиться гораздо больше комнат. В этом разделе собраны все общие функции и переменные GML, связанные с комнатами, для получения информации о них, а также для установки определенных свойств в них.

-

Следующие глобальные переменные и функции могут быть использованы для получения базовой информации о любом помещении:

- -

ПРИМЕЧАНИЕ Перечисленные выше переменные не будут действительны в сценарии, так как сценарии выполняются до загрузки первой комнаты.
-
- Это относится только к коду, написанному в корне сценария, но не к функциям, созданным внутри сценариев, так как эти функции могут быть выполнены в любое время во время игры. -

-

Вы также можете использовать следующие функции для получения названия текущей комнаты (как определено в браузере активов), а также для перемещения между комнатами:

- -

-

Далее у нас есть ряд функций, которые можно использовать для изменения комнат и их содержимого или даже для создания новых комнат и добавления к ним. Следует отметить, что эти функции никогда не следует запускать из комнаты, которую вы хотите изменить, а лучше сначала запустить их из экземпляра в другой комнате. Также обратите внимание, что если вы измените какой-либо актив комнаты таким образом, это изменение будет постоянным и сохранится в течение всего времени игры, даже если вы вызовете функцию room_restart() (закрытие и перезапуск игры сбросит свойства комнаты).

- -

-

Существует также ряд различных функций, связанных с созданием и манипулированием различными типами элементов, которые могут быть размещены на слоях в помещении. Эти функции перечислены в соответствующих разделах для каждого типа элементов, перечисленных ниже:

- -

-

При создании слоев комнат важно учитывать, что на одном слое можно разместить несколько различных типов элементов. Так, например, у вас может быть слой для врагов, и на этом слое будут находиться экземпляры врагов, а также определенные активы sprite, относящиеся только к этому врагу. Или у вас может быть элемент фона с элементом карты тайлов, чтобы создать вид комнаты. В редакторе комнат это недопустимо, но при динамическом создании вещей это можно сделать, для чего и существуют такие функции, как layer_get_all_elements() существуют.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/Sequence_Layers.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/Sequence_Layers.htm index 9c60879b2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/Sequence_Layers.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/Sequence_Layers.htm @@ -1,72 +0,0 @@ - - - - - - Слои последовательности - - - - - - - - - - -

Слои последовательности

-

В этом разделе представлены функции, которые используются для добавления, удаления и редактирования поведения последовательностей в игровой комнате по отношению к слою, на котором они находятся. Следует отметить, что последовательности похожи на объекты, поскольку, когда одна из них создается на слое в комнате, она считается экземпляром основного объекта последовательности из браузера активов. Таким образом, когда вы добавляете последовательность на слой в помещении, вы создаете экземпляр основного объекта последовательности, и этот экземпляр последовательности добавляется как элемент в слой помещения. Экземпляр последовательности управляет такими вещами, как скорость и направление воспроизведения, и сам содержит другую структуру данных последовательности, которая содержит фактические данные дорожки последовательности. Это важно, поскольку перечисленные ниже функции будут ссылаться на ID элемента последовательности (ID последовательности в слое), а также на ID экземпляра последовательности (фактический ID последовательности, на которую ссылается элемент) и структуру данных последовательности (которая содержит все данные последовательности).

-

Ниже приведен список всех функций, которые можно использовать для создания новых экземпляров последовательности или редактирования существующих:

- -

-

Также имеются дополнительные функции для работы с содержимым последовательностей и для определения своих собственных. Полный список этих функций приведен в следующем разделе:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_angle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_angle.htm index fccabcaf8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_angle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_angle.htm @@ -1,72 +0,0 @@ - - - - - - layer_sequence_angle - - - - - - - - - - -

layer_sequence_angle

-

С помощью этой функции вы можете установить угол поворота для заданного элемента последовательности. Вы передаете идентификатор элемента последовательности, возвращенный функцией layer_sequence_create() или одной из функций элемента слоя вместе с новым углом, и последовательность будет повернута вокруг своего начала в новое положение. Углы в GameMaker рассчитываются с 0º вправо и идут против часовой стрелки - так 90º вверх, 180º влево и 270º вниз - и по умолчанию угол для последовательности равен 0º.

-

Обратите внимание, что не следует изменять переменные image_xscale \ image_yscale \ image_angle \ x \ y для любых экземпляров в последовательности, использующей эту функцию, так как они будут перезаписаны, как только последовательность обновится после вызова функции.

-

-

Синтаксис:

-

layer_sequence_angle(sequence_element_id, angle)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
sequence_element_idИдентификатор элемента последовательностиThe unique ID value of the sequence element to target
angleРеальноThe new angle to rotate the sequence element to
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if current_angle < 90
- {
-     current_angle += 1;
-     layer_sequence_angle(my_seq, current_angle);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_create.htm index 865797c0b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_create.htm @@ -1,78 +0,0 @@ - - - - - - layer_sequence_create - - - - - - - - - - -

layer_sequence_create

-

С помощью этой функции вы можете создать экземпляр актива последовательности на заданном слое. Вы передаете ID слоя, который может быть строкой имени слоя - как определено в редакторе помещения - или уникальным ID слоя - как возвращается функцией layer_get_id(), а также позиции X и Y в комнате, в которых нужно создать последовательность, и, наконец, ID создаваемой последовательности. Идентификатор последовательности - это константа имени, которую вы определили в браузере активов для последовательности. Функция возвращает уникальный ID элемента последовательности, который затем может быть использован во всех дальнейших функциях слоя для последовательностей, или может быть использован для получения структуры экземпляра последовательности с помощью функции layer_sequence_get_instance().

-

Стоит отметить, что если последовательность содержит какие-либо объектные дорожки, их экземпляры будут созданы сразу после создания самого элемента последовательности, независимо от того, где их ключи активов расположены на Dope Sheet. Контроллер последовательности просто переключает видимость экземпляра, чтобы скрыть и показать его в зависимости от положения и длительности ключа актива дорожки, и не создает и не уничтожает его многократно. В результате экземпляры будут запускать свои события Create, когда создается элемент последовательности, а не когда начинаются их ключи актива.

-

-

Синтаксис:

-

layer_sequence_create(layer_id, x, y, sequence_id)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the instance layer to target
xРеальноThe x position in the room to create the sequence at
yРеальноThe y position in the room to create the sequence at
sequence_idАктивы последовательностиThe sequence asset to use, as defined in the Asset Browser
-

-

Возвращается:

-

Sequence Element ID

-

-

Пример:

-

var _s = layer_sequence_create("Background", 0, 0, seq_AnimatedBackground);
- layer_sequence_pause(_s);

-

Приведенный выше код создает новую последовательность на слое "Background", а затем приостанавливает ее.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_destroy.htm index 9d6dca7bb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_destroy.htm @@ -1,67 +0,0 @@ - - - - - - layer_sequence_destroy - - - - - - - - - - -

layer_sequence_destroy

-

С помощью этой функции вы можете уничтожить (удалить из комнаты) элемент последовательности. Вы передаете идентификатор элемента последовательности, возвращенный layer_sequence_create() или одной из функций элемента слоя, и последовательность будет уничтожена.

-

-

Синтаксис:

-

layer_sequence_destroy(sequence_element_id)

- - - - - - - - - - - -
АргументТипОписание
sequence_element_idThe unique ID value of the sequence element to target
-

-

Возвращается:

-

-

-

Пример:

-

var a = layer_get_all_elements(layer);
- for (var i = 0; i < array_length(a); i++)
- {
-     if (layer_get_element_type(a[i]) == layerelementtype_sequence)
-     {
-         layer_sequence_destroy(a[i])
-     }
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_exists.htm index d9f6decf3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_exists.htm @@ -1,72 +0,0 @@ - - - - - - layer_sequence_exists - - - - - - - - - - - -

layer_sequence_exists

-

С помощью этой функции вы можете проверить, существует ли элемент последовательности на заданном слое. Вы передаете идентификатор слоя, который может быть строкой имени слоя - как определено в редакторе помещений - или уникальным идентификатором слоя - как возвращается функцией layer_get_id(), а также идентификатор элемента последовательности - как возвращается функцией layer_sequence_create() или одной из функций элементов слоя - и функция вернет true, если данный элемент существует, или false в противном случае.

-

-

Синтаксис:

-

layer_sequence_exists(layer_id, sequence_element_id)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_IDСтрока или идентификатор слояThe unique ID or name of the layer to check
sequence_element_idИдентификатор элемента последовательностиThe unique ID value of the sequence element to target
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !layer_sequence_exists("Background", my_seq)
- {
-     my_seq = layer_sequence_create("Background", 0, 0, seq_AnimatedBackground);
-     layer_sequence_pause(my_seq);
- }

-

Приведенный выше код проверяет, существует ли заданный элемент последовательности, и если нет, то создает новую последовательность на заданном слое, а затем приостанавливает ее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_angle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_angle.htm index 7228028e5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_angle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_angle.htm @@ -1,66 +0,0 @@ - - - - - - layer_sequence_get_angle - - - - - - - - - - - -

layer_sequence_get_angle

-

С помощью этой функции вы предоставляете идентификатор элемента последовательности - как возвращается функцией layer_sequence_create() или одной из функций элементов слоя - и она вернет текущий угол элемента последовательности в игровой комнате. Обратите внимание, что углы возвращаются в градусах, причем 0º - это вправо, 90º - вверх, 180º - влево и 270º - вниз.

-

-

Синтаксис:

-

layer_sequence_get_angle(sequence_element_id)

- - - - - - - - - - - -
АргументТипОписание
sequence_element_idThe unique ID value of the sequence element to target
-

-

Возвращается:

-

-

-

Пример:

-

var _ang = layer_sequence_get_angle(title_sequence)
- if (_ang > 0)
- {
-     _ang -= 1;
-     layer_sequence_angle(title_sequence, _ang);
- }

-

Приведенный выше код извлекает текущий угол элемента последовательности с идентификатором, хранящимся в переменной "title_sequence", и если он не равен 0, то из текущего угла вычитается 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_headdir.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_headdir.htm index 316bb2f61..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_headdir.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_headdir.htm @@ -1,86 +0,0 @@ - - - - - - layer_sequence_get_headdir - - - - - - - - - - - -

layer_sequence_get_headdir

-

С помощью этой функции вы передаете идентификатор элемента последовательности - как возвращается функцией layer_sequence_create() или одной из функций элемента слоя - и она вернет текущее направление головки воспроизведения, которое будет одной из констант, перечисленных ниже.

-

-

Синтаксис:

-

layer_sequence_get_headdir(sequence_element_id)

- - - - - - - - - - - -
АргументТипОписание
sequence_element_idThe unique ID value of the sequence element to target
-

-

Возвращается:

-

-

- - - - - - - - - - - - - - - - - - -
ПостояннаяОписаниеЗначение
seq_dir_rightПоследовательность воспроизводит кадры в инкрементном порядке слева направо1
seq_dir_leftПоследовательность воспроизводит кадры в убывающем порядке справа налево-1
-

-

Пример:

-

if layer_sequence_get_headdir(title_sequence) != seq_dir_left
- {
-     layer_sequence_headdir(title_sequence, seq_dir_left);
- }

-

Приведенный выше код проверяет текущее направление головки воспроизведения идентификатора элемента последовательности, хранящегося в переменной "title_sequence", и если оно не установлено в seq_dir_left, то устанавливается в это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_headpos.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_headpos.htm index 7983ba6b4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_headpos.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_headpos.htm @@ -1,64 +0,0 @@ - - - - - - layer_sequence_get_headpos - - - - - - - - - - - -

layer_sequence_get_headpos

-

С помощью этой функции вы передаете идентификатор элемента последовательности - как возвращается функцией layer_sequence_create() или одной из функций элементов слоя - и она вернет текущую позицию головки воспроизведения (текущий кадр, на котором находится головка воспроизведения).

-

-

Синтаксис:

-

layer_sequence_get_headpos(sequence_element_id)

- - - - - - - - - - - -
АргументТипОписание
sequence_element_idThe unique ID value of the sequence element to target
-

-

Возвращается:

-

-

-

Пример:

-

if layer_sequence_get_headpos(title_sequence) != 0
- {
-     layer_sequence_headpos(title_sequence, 0);
- }

-

Приведенный выше код проверяет текущую позицию playhead ID элемента последовательности, хранящегося в переменной "title_sequence", и если она не установлена в 0, то она устанавливается в это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_instance.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_instance.htm index 24e1478cb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_instance.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_instance.htm @@ -1,65 +0,0 @@ - - - - - - layer_sequence_get_instance - - - - - - - - - - - -

layer_sequence_get_instance

-

С помощью этой функции вы предоставляете идентификатор элемента последовательности - как возвращено функцией layer_sequence_create() или одной из функций элементов слоя - и она вернет структуру экземпляра последовательности. Подробнее о формате struct экземпляра последовательности вы можете узнать на этой странице.

-

-

Синтаксис:

-

layer_sequence_get_instance(sequence_element_id)

- - - - - - - - - - - - - -
АргументТипОписание
sequence_element_idИдентификатор элемента последовательностиThe unique ID value of the sequence element to target
-

-

Возвращается:

-

Sequence Instance Struct

-

-

Пример:

-

var _seq = layer_sequence_create("Background", 0, 0, seq_AnimatedBackground);
- var _struct = layer_sequence_get_instance(_seq);
- _struct.speedScale = 0.5;

-

Приведенный выше код создает новый элемент последовательности, а затем извлекает идентификатор экземпляра последовательности. Затем он используется для изменения свойства шкалы скорости воспроизведения экземпляра последовательности.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_length.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_length.htm index 2ad88873d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_length.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_length.htm @@ -1,61 +0,0 @@ - - - - - - layer_sequence_get_length - - - - - - - - - - - -

layer_sequence_get_length

-

С помощью этой функции вы предоставляете идентификатор элемента последовательности - как возвращено функцией layer_sequence_create() или одной из функций элементов слоя - и она вернет длину последовательности. Это количество кадров, в течение которых будет выполняться последовательность.

-

-

Синтаксис:

-

layer_sequence_get_length(sequence_element_id)

- - - - - - - - - - - -
АргументТипОписание
sequence_element_idThe unique ID value of the sequence element to target
-

-

Возвращается:

-

-

-

Пример:

-

var _frames = layer_sequence_get_length(my_seq);
alarm[0] = frames;

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_sequence.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_sequence.htm index 22a0b7477..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_sequence.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_sequence.htm @@ -1,63 +0,0 @@ - - - - - - layer_sequence_get_sequence - - - - - - - - - - - -

layer_sequence_get_sequence

-

С помощью этой функции вы предоставляете идентификатор элемента последовательности - как возвращено функцией layer_sequence_create() или одной из функций элементов слоя - и она вернет структуру объекта последовательности. Эта функция позволяет обойти необходимость сначала получить структуру экземпляра последовательности и получить прямой доступ к данным последовательности. Подробнее о формате объекта последовательности struct вы можете узнать на этой странице.

-

-

Синтаксис:

-

layer_sequence_get_sequence(sequence_element_id)

- - - - - - - - - - - -
АргументТипОписание
sequence_element_idThe unique ID value of the sequence element to target
-

-

Возвращается:

-

Sequence Object Struct

-

-

Пример:

-

var _seq = layer_sequence_create("Background", 0, 0, seq_AnimatedBackground);
- var _struct = layer_sequence_get_sequence(_seq);
- _struct.playbackSpeedType = spritespeed_framespersecond;
- _struct.playbackSpeed = 30;

-

Приведенный выше код создает новый элемент последовательности, а затем извлекает его структуру данных последовательности. Затем он используется для изменения скорости воспроизведения и типа последовательности.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_speedscale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_speedscale.htm index 0bb4a5ab6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_speedscale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_speedscale.htm @@ -1,64 +0,0 @@ - - - - - - layer_sequence_get_speedscale - - - - - - - - - - - -

layer_sequence_get_speedscale

-

С помощью этой функции вы предоставляете идентификатор элемента последовательности - как возвращается функцией layer_sequence_create() или одной из функций элемента слоя - и она вернет текущую шкалу скорости воспроизведения. Это значение множителя, используемое для замедления или ускорения скорости воспроизведения. Значение 1 является значением по умолчанию, значения меньше 1 означают, что воспроизведение замедляется, а значения больше 1 означают, что воспроизведение ускоряется.

-

-

Синтаксис:

-

layer_sequence_get_speedscale(sequence_element_id)

- - - - - - - - - - - -
АргументТипОписание
sequence_element_idThe unique ID value of the sequence element to target
-

-

Возвращается:

-

-

-

Пример:

-

if layer_sequence_get_speedscale(title_sequence) != 1
- {
-     layer_sequence_speedscale(title_sequence, 1);
- }

-

Приведенный выше код проверяет текущую шкалу скорости вращения головки воспроизведения идентификатора элемента последовательности, хранящегося в переменной "title_sequence", и если она не установлена в 1, то она устанавливается в это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_x.htm index 834b20089..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_x.htm @@ -1,66 +0,0 @@ - - - - - - layer_sequence_get_x - - - - - - - - - - - -

layer_sequence_get_x

-

С помощью этой функции вы предоставляете идентификатор элемента последовательности - как возвращается функцией layer_sequence_create() или одной из функций элементов слоя - и она вернет текущую позицию X в игровой комнате для последовательности.

-

-

Синтаксис:

-

layer_sequence_get_x(sequence_element_id)

- - - - - - - - - - - - - -
АргументТипОписание
sequence_element_idИдентификатор элемента последовательностиThe unique ID value of the sequence element to target
-

-

Возвращается:

-

Real

-

-

Пример:

-

if layer_sequence_get_x(title_sequence) != room_width / 2
- {
-     layer_sequence_x(title_sequence, room_width / 2);
- }

-

Приведенный выше код проверяет X-позицию идентификатора элемента последовательности, хранящегося в переменной "title_sequence", и если она не установлена на половину ширины комнаты, то она устанавливается на это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_xscale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_xscale.htm index 74f224909..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_xscale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_xscale.htm @@ -1,66 +0,0 @@ - - - - - - layer_sequence_get_xscale - - - - - - - - - - - -

layer_sequence_get_xscale

-

С помощью этой функции вы предоставляете идентификатор элемента последовательности - как возвращается функцией layer_sequence_create() или одной из функций элемента слоя - и она вернет текущий масштаб по оси X элемента последовательности в игровой комнате.

-

-

Синтаксис:

-

layer_sequence_get_xscale(sequence_element_id)

- - - - - - - - - - - -
АргументТипОписание
sequence_element_idThe unique ID value of the sequence element to target
-

-

Возвращается:

-

-

-

Пример:

-

var _xs = layer_sequence_get_xscale(title_sequence)
- if (_xs < 1)
- {
-     _xs += 0.01;
-     layer_sequence_xscale(title_sequence, _xs);
- }

-

Приведенный выше код извлекает текущий масштаб по оси X элемента последовательности с идентификатором, хранящимся в переменной "title_sequence", и если он меньше 1, то к текущему масштабу X добавляется 0,01.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_y.htm index 010b31189..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_y.htm @@ -1,66 +0,0 @@ - - - - - - layer_sequence_get_y - - - - - - - - - - - -

layer_sequence_get_y

-

С помощью этой функции вы передаете идентификатор элемента последовательности - как возвращается функцией layer_sequence_create() или одной из функций элемента слоя - и она вернет текущую позицию Y в игровой комнате для последовательности.

-

-

Синтаксис:

-

layer_sequence_get_y(sequence_element_id)

- - - - - - - - - - - - - -
АргументТипОписание
sequence_element_idИдентификатор элемента последовательностиThe unique ID value of the sequence element to target
-

-

Возвращается:

-

Real

-

-

Пример:

-

if layer_sequence_get_y(title_sequence) != room_height / 2
- {
-     layer_sequence_y(title_sequence, room_height / 2);
- }

-

Приведенный выше код проверяет положение Y идентификатора элемента последовательности, хранящегося в переменной "title_sequence", и если оно не установлено на половину высоты комнаты, то оно устанавливается на это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_yscale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_yscale.htm index 5486279bd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_yscale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_get_yscale.htm @@ -1,66 +0,0 @@ - - - - - - layer_sequence_get_yscale - - - - - - - - - - - -

layer_sequence_get_yscale

-

С помощью этой функции вы предоставляете идентификатор элемента последовательности - как возвращается функцией layer_sequence_create() или одной из функций элемента слоя - и она вернет текущий масштаб по оси Y элемента последовательности в игровой комнате.

-

-

Синтаксис:

-

layer_sequence_get_yscale(sequence_element_id)

- - - - - - - - - - - -
АргументТипОписание
sequence_element_idThe unique ID value of the sequence element to target
-

-

Возвращается:

-

-

-

Пример:

-

var _ys = layer_sequence_get_yscale(title_sequence)
- if (_ys < 1)
- {
-     _ys += 0.01;
-     layer_sequence_yscale(title_sequence, _ys);
- }

-

Приведенный выше код извлекает текущий масштаб по оси Y элемента последовательности с идентификатором, хранящимся в переменной "title_sequence", и если он меньше 1, то к текущему масштабу по оси Y добавляется 0,01.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_headdir.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_headdir.htm index ae763912f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_headdir.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_headdir.htm @@ -1,89 +0,0 @@ - - - - - - layer_sequence_headdir - - - - - - - - - - -

layer_sequence_headdir

-

С помощью этой функции вы можете задать направление для заданной головки воспроизведения последовательности. Вы передаете идентификатор элемента последовательности, возвращаемый layer_sequence_create() или одной из функций элемента слоя, а затем задаете направление головки воспроизведения, которое должно быть одной из следующих констант:

- - - - - - - - - - - - - - - - - - -
ПостояннаяОписаниеЗначение
seq_dir_rightПоследовательность будет воспроизводить кадры в инкрементном порядке слева направо1
seq_dir_leftПоследовательность будет воспроизводить кадры в убывающем порядке справа налево-1
-

-

Синтаксис:

-

layer_sequence_headdir(sequence_element_id, direction)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
sequence_element_idИдентификатор элемента последовательностиThe unique ID value of the sequence element to target
directionНаправление последовательности ПостояннаяThe playhead direction, a constant, listed above
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _seq = layer_sequence_create("Background", 0, 0, seq_AnimatedBackground);
- layer_sequence_headdir(_seq, seq_dir_left);

-

Приведенный выше код создает новую последовательность и сохраняет ее ID в локальной переменной. Этот идентификатор затем используется для установки направления движения головки воспроизведения для уменьшения кадров (воспроизведение справа налево).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_headpos.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_headpos.htm index 084fea96f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_headpos.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_headpos.htm @@ -1,80 +0,0 @@ - - - - - - layer_sequence_headpos - - - - - - - - - - -

layer_sequence_headpos

-

С помощью этой функции можно установить положение головки воспроизведения элемента последовательности на определенный кадр. Вы передаете идентификатор элемента последовательности, возвращенный layer_sequence_create() или одной из функций элемента слоя вместе с новой позицией, которую нужно установить. Обратите внимание, что позиция задается в кадрах, и если вы установите значение больше, чем общее количество кадров (или меньше 0), то фактическая конечная позиция головки воспроизведения будет зависеть от типа воспроизведения последовательности, который был выбран, следуя этим правилам:

-
    -
  • Нет зацикливания: Головка воспроизведения будет прижиматься к концу цикла (или к началу, если заданное значение отрицательно).
  • -
  • Зацикливание: Головка воспроизведения обернется назад к началу последовательности плюс дополнительные кадры, например: если вы установите головку воспроизведения в последовательности из 30 кадров на позицию кадра 45, фактическая позиция головки воспроизведения будет равна 15. Если вы зададите отрицательное значение, то головка воспроизведения последовательности будет разворачиваться в обратном направлении.
  • -
  • Пинг-понговое зацикливание: Головка воспроизведения продвигается до конца, а затем возвращается на дополнительное количество кадров, превышающее общую длину кадра, меняя направление воспроизведения, например, если последовательность состоит из 30 кадров, а вы установили головку воспроизведения на 40, то конечное положение головки воспроизведения будет равно 20, а направление будет обратным (спуск вниз на 0): Если последовательность состоит из 30 кадров, а вы установили головку воспроизведения на 40, конечная позиция головки воспроизведения будет 20, а направление будет обратным (вниз до 0). Обратите внимание, что никогда не следует задавать отрицательное значение для пинг-понг воспроизведения последовательности, так как это может привести к неопределенным результатам.
  • -
-

Установка положения головки таким образом не остановит воспроизведение, и последовательность просто продолжится с нового положения головки воспроизведения, если она не приостановлена.

-

-

Синтаксис:

-

layer_sequence_headpos(sequence_element_id, position)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
sequence_element_idИдентификатор элемента последовательностиThe unique ID value of the sequence element to target
positionРеальноThe position within the sequence (in frames) to set the playhead position to (can be a decimal value)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var a = layer_get_all_elements(layer);
- for (var i = 0; i < array_length(a); i++)
- {
-     if layer_get_element_type(a[i]) == layerelementtype_sequence
-     {
-         layer_sequence_headpos(a[i], 0)
-     }
- }

-

Приведенный выше код получает идентификаторы всех элементов, назначенных слою экземпляра, на котором выполняется код. Затем код проверяет, являются ли какие-либо из возвращенных элементов активами последовательности, и если да, то их положение головки воспроизведения устанавливается на 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_is_finished.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_is_finished.htm index 6ce0274a2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_is_finished.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_is_finished.htm @@ -1,65 +0,0 @@ - - - - - - layer_sequence_is_finished - - - - - - - - - - - -

layer_sequence_is_finished

-

В этой функции вы передаете идентификатор элемента последовательности - как возвращается функцией layer_sequence_create() или одной из функций элемента слоя - и она проверит, закончила ли последовательность воспроизведение или нет, возвращая true, если да, и false, если нет. Обратите внимание, что это применимо только в том случае, если последовательность не установлена в режиме воспроизведения на цикл или пинг-понг.

-

-

Синтаксис:

-

layer_sequence_is_finished(sequence_element_id)

- - - - - - - - - - - -
АргументТипОписание
sequence_element_idThe unique ID value of the sequence element to target
-

-

Возвращается:

-

-

-

Пример:

-

if layer_sequence_is_finished(title_sequence) != 0
- {
-     alarm[0] = room_speed * 3;
-     layer_sequence_play(title_sequence);
- }

-

Приведенный выше код проверяет, завершен ли идентификатор элемента последовательности, хранящийся в переменной "title_sequence", и если да, то запускает его воспроизведение снова и устанавливает сигнал тревоги.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_is_paused.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_is_paused.htm index a11e1ee1e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_is_paused.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_is_paused.htm @@ -1,64 +0,0 @@ - - - - - - layer_sequence_is_paused - - - - - - - - - - - -

layer_sequence_is_paused

-

С помощью этой функции вы передаете идентификатор элемента последовательности - как возвращается функцией layer_sequence_create() или одной из функций элементов слоя - и она проверит, приостановлена последовательность в данный момент или нет, возвращая true, если приостановлена, и false, если нет.

-

-

Синтаксис:

-

layer_sequence_is_paused(sequence_element_id)

- - - - - - - - - - - -
АргументТипОписание
sequence_element_idThe unique ID value of the sequence element to target
-

-

Возвращается:

-

-

-

Пример:

-

if layer_sequence_is_paused(title_sequence) != 0
- {
-     layer_sequence_play(title_sequence);
- }

-

Приведенный выше код проверяет, находится ли идентификатор элемента последовательности, хранящийся в переменной "title_sequence", на паузе, и если да, то запускает его воспроизведение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_pause.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_pause.htm index c3ac53d78..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_pause.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_pause.htm @@ -1,66 +0,0 @@ - - - - - - layer_sequence_pause - - - - - - - - - - -

layer_sequence_pause

-

С помощью этой функции вы можете приостановить воспроизведение заданной последовательности. Вы передаете идентификатор элемента последовательности, возвращенный функцией layer_sequence_create() или одной из функций элементов слоя, и функция приостановит воспроизведение последовательности до тех пор, пока вы не начнете воспроизведение снова с помощью функции layer_sequence_play().

-

-

Синтаксис:

-

layer_sequence_pause(sequence_element_id)

- - - - - - - - - - - - - -
АргументТипОписание
sequence_element_idИдентификатор элемента последовательностиThe unique ID value of the sequence element to target
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _seq = layer_sequence_create("Background", 0, 0, seq_AnimatedBackground);
- if (global.Pause)
- {
-     layer_sequence_pause(_seq);
- }

-

Приведенный выше код создает новую последовательность и сохраняет ее ID в локальной переменной. Затем он проверяет, не поставлена ли игра на паузу, и если поставлена, то приостанавливает воспроизведение последовательности.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_play.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_play.htm index 59d5db3c9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_play.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_play.htm @@ -1,81 +0,0 @@ - - - - - - layer_sequence_play - - - - - - - - - - -

layer_sequence_play

-

С помощью этой функции вы можете запустить воспроизведение заданной последовательности. Вы предоставляете идентификатор элемента последовательности, возвращенный layer_sequence_create() или одной из функций элементов слоя, и функция начнет воспроизведение последовательности, которую при необходимости можно приостановить с помощью функции layer_sequence_pause().

-

ВАЖНО! Если в вашей последовательности есть экземпляры, эти экземпляры не должны изменять свои переменные image_xscale / image_yscale / image_angle / x / y, поскольку они будут перезаписаны при обновлении последовательности на каждом шаге после начала воспроизведения.

-

-

Синтаксис:

-

layer_sequence_play(sequence_element_id)

- - - - - - - - - - - - - -
АргументТипОписание
sequence_element_idИдентификатор элемента последовательностиThe unique ID value of the sequence element to target
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if keyboard_check_pressed(ord("P"))
- {
-     global.Pause = !global.Pause;
-     var a = layer_get_all_elements(layer);
-     for (var i = 0; i < array_length(a); i++)
-     {
-         if (layer_get_element_type(a[i]) == layerelementtype_sequence)
-         {
-             if (global.Pause)
-             {
-                 layer_sequence_pause(a[i]);
-             }
-             else
-             {
-                 layer_sequence_play(a[i]);
-             }
-         }
-     }
- }

-

Приведенный выше код проверяет, была ли игра поставлена на паузу или нет, когда нажата клавиша. Если игра поставлена на паузу, то выполняется цикл перебора всех элементов последовательности на текущем слое (слой вызывающего экземпляра) и приостанавливается их воспроизведение, а если игра не поставлена на паузу, то цикл снова запускает их воспроизведение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_speedscale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_speedscale.htm index 554a86bd0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_speedscale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_speedscale.htm @@ -1,68 +0,0 @@ - - - - - - layer_sequence_speedscale - - - - - - - - - - -

layer_sequence_speedscale

-

С помощью этой функции вы можете изменить скорость воспроизведения заданной последовательности. Вы передаете идентификатор элемента последовательности, возвращаемый layer_sequence_create() или одной из функций элемента слоя, а затем значение шкалы скорости. Это значение представляет собой множитель, где 1 - скорость воспроизведения по умолчанию, значения меньше 1 замедляют воспроизведение, а значения больше 1 ускоряют его, например: значение 0,5 - половина скорости воспроизведения, а значение 2 - удвоенная скорость воспроизведения.

-

-

Синтаксис:

-

layer_sequence_speedscale(sequence_element_id, speedscale)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
sequence_element_idИдентификатор элемента последовательностиThe unique ID value of the sequence element to target
speedscaleРеальноThe speed scale to use (a multiplier), default is 1
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _seq = layer_sequence_create("Background", 0, 0, seq_AnimatedBackground);
- layer_sequence_speedscale(_seq, 0.75);

-

Приведенный выше код создает новую последовательность на слое вызывающего экземпляра, а затем устанавливает значение шкалы скорости 0,75 (три четверти скорости воспроизведения по умолчанию).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_x.htm index 7154658e0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_x.htm @@ -1,68 +0,0 @@ - - - - - - layer_sequence_x - - - - - - - - - - -

layer_sequence_x

-

С помощью этой функции можно задать положение вдоль оси X (горизонтальной) комнаты для заданного элемента последовательности. Вы передаете идентификатор элемента последовательности, возвращенный функцией layer_sequence_create() или одной из функций элемента слоя вместе с заданной позицией X, и последовательность будет перемещена в новое положение.

-

-

Синтаксис:

-

layer_sequence_x(sequence_element_id, pos_x)

- - - - - - - - - - - - - - - -
АргументТипОписание
sequence_element_idThe unique ID value of the sequence element to target
pos_xThe X position to move the sequence element to
-

-

Возвращается:

-

-

-

Пример:

-

if layer_sequence_exists(my_seq)
- {
-     layer_sequence_x(my_seq, x);
-     layer_sequence_y(my_seq, y);
- }

-

Приведенный выше код проверяет, существует ли элемент последовательности, на который ссылается переменная "my_seq", и если да, то он устанавливает позицию x/y на позицию экземпляра, выполняющего код.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_xscale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_xscale.htm index dc35c6d99..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_xscale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_xscale.htm @@ -1,71 +0,0 @@ - - - - - - layer_sequence_xscale - - - - - - - - - - -

layer_sequence_xscale

-

С помощью этой функции вы можете установить масштаб X для заданного элемента последовательности. Вы передаете идентификатор элемента последовательности, возвращаемый функцией layer_sequence_create() или одной из функций элемента слоя вместе с новым масштабом, который нужно установить по оси X, и последовательность будет масштабирована на эту величину. Масштаб 1 означает отсутствие масштабирования (1:1), меньшие значения будут масштабироваться вниз (0,5, например, уменьшит ширину последовательности вдвое), большие значения будут масштабироваться вверх, а отрицательные значения будут зеркально отражать последовательность относительно ее начала и масштабировать ее, если только используемое значение не равно -1 (в этом случае последовательность будет просто зеркально отражена относительно ее начала без масштабирования).

-

Очень важно отметить, что применение неравномерного масштабирования (например, масштабирование оси X на 3, а оси Y на 2) к элементам последовательности, которые содержат любой экземпляр, использующий вращение, может вызвать проблемы с отрисовкой экземпляра, коллизии, выбраковку и многое другое. В общем, если ваша последовательность зависит от каких-либо свойств экземпляра, мы не рекомендуем использовать неравномерное масштабирование вместе с вращением экземпляра.

-

Также обратите внимание, что не следует изменять переменные image_xscale \ image_yscale \ image_angle \ x \ y для любых экземпляров в последовательности, использующей эту функцию, так как они будут перезаписаны, как только последовательность обновится после вызова функции.

-

-

Синтаксис:

-

layer_sequence_xscale(sequence_element_id, xscale)

- - - - - - - - - - - - - - - -
АргументТипОписание
sequence_element_idThe unique ID value of the sequence element to target
xscaleThe new X axis scale value to apply to the sequence element
-

-

Возвращается:

-

-

-

Пример:

-

if seq_scale < 2
- {
-     seq_scale += 0.01;
-     layer_sequence_xscale(my_seq, seq_scale);
-     layer_sequence_yscale(my_seq, seq_scale);
- }

-

Приведенный выше код проверяет значение, хранящееся в переменной seq_scale, и если оно меньше 2, то прибавляет его, а затем использует это значение для установки масштаба X и Y элемента последовательности, на который ссылается переменная my_seq.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_y.htm index 86c1ad3ed..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_y.htm @@ -1,68 +0,0 @@ - - - - - - layer_sequence_y - - - - - - - - - - -

layer_sequence_y

-

С помощью этой функции можно задать положение вдоль оси Y (вертикальной) комнаты для заданного элемента последовательности. Вы передаете идентификатор элемента последовательности, возвращенный функцией layer_sequence_create() или одной из функций элемента слоя вместе с заданной позицией по оси Y, и последовательность будет перемещена в новое положение.

-

-

Синтаксис:

-

layer_sequence_y(sequence_element_id, pos_y)

- - - - - - - - - - - - - - - -
АргументТипОписание
sequence_element_idThe unique ID value of the sequence element to target
pos_yThe Y position to move the sequence element to
-

-

Возвращается:

-

-

-

Пример:

-

if layer_sequence_exists(my_seq)
- {
-     layer_sequence_x(my_seq, x);
-     layer_sequence_y(my_seq, y);
- }

-

Приведенный выше код проверяет, существует ли элемент последовательности, на который ссылается переменная "my_seq", и если да, то он устанавливает позицию x/y на позицию экземпляра, выполняющего код.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_yscale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_yscale.htm index c9e8dbfd3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_yscale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sequence_Layers/layer_sequence_yscale.htm @@ -1,71 +0,0 @@ - - - - - - layer_sequence_yscale - - - - - - - - - - -

layer_sequence_yscale

-

С помощью этой функции вы можете установить масштаб Y для заданного элемента последовательности. Вы передаете идентификатор элемента последовательности, возвращаемый функцией layer_sequence_create() или одной из функций элемента слоя вместе с новым масштабом, который нужно установить по оси Y, и последовательность будет масштабирована на эту величину. Масштаб 1 означает отсутствие масштабирования (1:1), меньшие значения будут масштабироваться вниз (0,5, например, уменьшит ширину последовательности вдвое), большие значения будут масштабироваться вверх, а отрицательные значения будут переворачивать последовательность относительно ее начала и масштабировать ее, если только используемое значение не равно -1 (в этом случае последовательность просто переворачивается относительно ее начала без масштабирования).

-

Очень важно отметить, что применение неравномерного масштабирования (например, масштабирование оси X на 3, а оси Y на 2) к элементам последовательности, которые содержат любой экземпляр, использующий вращение, может вызвать проблемы с отрисовкой экземпляра, коллизии, выбраковку и многое другое. В общем, если ваша последовательность зависит от каких-либо свойств экземпляра, мы не рекомендуем использовать неравномерное масштабирование вместе с вращением экземпляра.

-

Также обратите внимание, что не следует изменять переменные image_xscale \ image_yscale \ image_angle \ x \ y для любых экземпляров в последовательности, использующей эту функцию, так как они будут перезаписаны, как только последовательность обновится после вызова функции.

-

-

Синтаксис:

-

layer_sequence_yscale(sequence_element_id, xscale)

- - - - - - - - - - - - - - - -
АргументТипОписание
sequence_element_idThe unique ID value of the sequence element to target
yscaleThe new Y axis scale value to apply to the sequence element
-

-

Возвращается:

-

-

-

Пример:

-

if seq_scale < 2
- {
-     seq_scale += 0.01;
-     layer_sequence_xscale(my_seq, seq_scale);
-     layer_sequence_yscale(my_seq, seq_scale);
- }

-

Приведенный выше код проверяет значение, хранящееся в переменной seq_scale, и если оно меньше 2, то прибавляет его, а затем использует это значение для установки масштаба X и Y элемента последовательности, на который ссылается переменная my_seq.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/Sprite_Layers.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/Sprite_Layers.htm index 20e9b90be..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/Sprite_Layers.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/Sprite_Layers.htm @@ -1,64 +0,0 @@ - - - - - - Слои спрайта - - - - - - - - - - -

Слои спрайта

-

Редактор комнат GameMaker позволяет добавлять sprites в любую комнату с помощью слоев. Как следует из названия, слой - это просто набор активов, которые находятся на одной и той же глубине в комнате, и, накладывая слои друг на друга, вы можете сделать так, чтобы одни объекты рисовались поверх или под другими. Вы также можете управлять некоторыми аспектами слоев из кода, добавляя или удаляя объекты или изменяя определенные свойства слоя или того, что он содержит, во время выполнения. Ниже приведен список всех функций, которые можно использовать для редактирования спрайтов, добавленных к слою слой актива:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_alpha.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_alpha.htm index bafba08f2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_alpha.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_alpha.htm @@ -1,66 +0,0 @@ - - - - - - layer_sprite_alpha - - - - - - - - - - -

layer_sprite_alpha

-

Эта функция управляет альфа (прозрачностью) элемента sprite на слое актива. Вы задаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или когда вы используете - функция layer_sprite_get_id()), а затем задаете используемое значение альфа. Альфа может быть от 0 (полностью прозрачный) до 1 (полностью непрозрачный), а значение альфа по умолчанию для элемента sprite равно 1. Обратите внимание - что если слой, которому был назначен элемент sprite, не виден, или сам элемент был сделан невидимым, вы не увидите никакой разницы с помощью этой функции, пока слой или элемент не станут видимыми снова.

-

-

Синтаксис:

-

layer_sprite_alpha(sprite_element_id, alpha);

- - - - - - - - - - - - - - - -
АргументТипОписание
sprite_element_idThe unique ID value of the sprite element to change
alphaThe alpha for sprite sprite, from 0 to 1 (default is 1)
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Asset_sky");
var spr_id = layer_sprite_get_id(lay_id, "Clouds");
layer_sprite_alpha(spr_id, random(1));

-

Приведенный выше код получает значение ID актива sprite под названием "Clouds", назначенного слою "Asset_sky", а затем устанавливает его альфа-фактор на случайное значение между 0 и 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_angle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_angle.htm index 10e9a4263..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_angle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_angle.htm @@ -1,71 +0,0 @@ - - - - - - layer_sprite_angle - - - - - - - - - - -

layer_sprite_angle

-

С помощью этой функции можно изменить угол для заданного элемента sprite на слое. Вы задаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), а затем задаете значение угла, от 0 до 359 против часовой стрелки, где 0 - справа, 90 - сверху, 180 - слева и 270 - снизу. Если вы зададите значение больше 360, оно будет зациклено, чтобы привести его в диапазон 0 - 359.

-

-

Синтаксис:

-

layer_sprite_angle(sprite_element_id, angle);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
sprite_element_idИдентификатор элемента спрайтаThe unique ID value of the sprite element to change
angleРеальноThe angle of the sprite (default is 0)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var asset_sprite = layer_sprite_get_id(layer, "gfc_Trees");
- if (layer_sprite_get_angle(asset_sprite) != 0)
- {
-     layer_sprite_angle(asset_sprite, 0);
- }

-

Приведенный выше код проверит элемент sprite, назначенный слою, на котором находится экземпляр, выполняющий код, и если его угол не равен 0, то установит его в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_blend.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_blend.htm index 4bff4ba7b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_blend.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_blend.htm @@ -1,68 +0,0 @@ - - - - - - layer_sprite_blend - - - - - - - - - - -

layer_sprite_blend

-

Эта функция управляет смешиванием (или "тонированием") sprite sprite. Значение по умолчанию равно -1 (что представляет константу c_white, которая также может быть использована). Любое другое значение (включая внутренние цветовые константы, такие как c_red, - или c_aqua) будет смешивать указанный цвет с исходным sprite. Вы задаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании - функция layer_sprite_get_id()), а затем задаете цвет смешивания. Ниже показан пример элемента sprite, который был смешан с различными цветами:

-

Обратите внимание, что на платформе HTML5 следует стараться ограничивать смешивание (если не используется WebGL), - поскольку каждое смешивание sprite должно кэшироваться отдельно, и поэтому большое количество смешиваний sprites может негативно сказаться на производительности (вы также можете установить размер кэша с помощью функции sprite_set_cache_size()).

-

-

Синтаксис:

-

layer_sprite_blend(sprite_element_id, blend);

- - - - - - - - - - - - - - - -
АргументТипОписание
sprite_element_idThe unique ID value of the sprite element to change
blendThe colour to blend with the sprite sprite (default is c_white)
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Asset_sky");
var spr_id = layer_sprite_get_id(lay_id, "Clouds");
layer_sprite_blend(spr_id, c_gray);

-

Приведенный выше код получает идентификационное значение sprite под названием "Clouds", назначенное слою "Asset_sky", и затем оттеняет его цветом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_change.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_change.htm index a868c50a2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_change.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_change.htm @@ -1,71 +0,0 @@ - - - - - - layer_sprite_change - - - - - - - - - - -

layer_sprite_change

-

С помощью этой функции можно изменить ресурс sprite, назначенный данному элементу sprite на слое. Вы указываете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), а затем указать индекс sprite элемента, ресурс которого будет изменен. Обратите внимание, что если sprite имеет под-изображения, то они тоже будут анимироваться (это можно контролировать с помощью функций layer_sprite_index() и layer_sprite_speed() функции ). Обратите внимание, что вы можете присвоить значение -1 в качестве нового индекса sprite, и тогда не будет показан sprite, хотя элемент будет существовать и может быть изменен позже.

-

-

Синтаксис:

-

layer_sprite_change(sprite_element_id, sprite_index)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
sprite_element_idИдентификатор элемента спрайтаThe unique ID value of the sprite element to change
sprite_indexАктив спрайтаThe new sprite index to use
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var s = layer_sprite_get_id(layer, global.Asset_sprite);
- if (layer_sprite_get_sprite(s) != spr_Nighttime)
- {
-     layer_sprite_change(s, spr_nighttime);
- }

-

Приведенный выше код проверяет индекс sprite элемента с идентификатором, хранящимся в глобальной переменной global.Asset_sprite, и если он не "spr_Nighttime", то элементу присваивается индекс sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_create.htm index fe1b0e81d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_create.htm @@ -1,84 +0,0 @@ - - - - - - layer_sprite_create - - - - - - - - - - - -

layer_sprite_create

-

С помощью этой функции вы можете назначить ресурс sprite слою, который будет использоваться в вашем проекте. Вы предоставляете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create() или когда вы используете имя слоя вместе с layer_get_id()), позицию в помещении и индекс sprite (который будет именем sprite, как показано в браузере активов), и он будет добавлен в слой. Функция возвращает уникальное значение ID для элемента, которое затем может быть использовано в дальнейших функциях слоя для sprites.

-

-

Синтаксис:

-

layer_sprite_create(layer_id, x, y, sprite)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to target
xРеальноThe x position to use
yРеальноThe y position to use
spriteАктив спрайтаThe sprite index to be used
-

-

Возвращается:

-

Sprite Element ID

-

-

Пример:

-

global.asset_layer = layer_create(10000);
- for (var i = 0; i< 10; i++)
- {
-     var _x = random(room_width);
-     var _y = room_height - 100;
-     global.asset_spr_trees[i] = layer_sprite_create(global.asset_layer, _x, _y, spr_Trees);
- }

-

Приведенный выше код создает новый слой, а затем добавляет к нему 10 новых элементов sprite, сохраняя ID каждого элемента в массив.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_destroy.htm index 35877d8c3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_destroy.htm @@ -1,66 +0,0 @@ - - - - - - layer_sprite_destroy - - - - - - - - - - -

layer_sprite_destroy

-

Эта функция уничтожит заданный элемент sprite. Вы передаете идентификатор sprite (который вы получаете при создании sprite с помощью функции layer_sprite_create() или когда вы используете ID слоя вместе с layer_get_sprite_id()), и эта функция удалит его. Обратите внимание, что при этом не удаляется слой, а только sprite, и если sprite - это элемент, который был добавлен в редакторе комнаты, то в следующий раз, когда вы покинете комнату, а затем вернетесь, sprite будет создан заново. Однако если комната постоянна, то sprite будет удален, пока постоянство комнаты не будет снова отключено.

-

-

Синтаксис:

-

layer_sprite_destroy(sprite_element_id)

- - - - - - - - - - - -
АргументТипОписание
sprite_element_idThe unique ID value of the sprite to be destroyed
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Asset_Trees");
- var spr_id = layer_sprite_get_id(lay_id, "graphic_254367CB");
-
- if (layer_sprite_exists(lay_id, spr_id))
- {
-     layer_sprite_destroy(lay_id);
- }

-

Приведенный выше код проверяет слой "Asset_Trees" на предмет существования заданного элемента sprite, и если он существует, то уничтожается (но не слой).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_exists.htm index 5295d8719..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_exists.htm @@ -1,75 +0,0 @@ - - - - - - layer_sprite_exists - - - - - - - - - - - -

layer_sprite_exists

-

С помощью этой функции можно проверить, существует ли элемент sprite на данном слое. Вы передаете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность) и идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()) и функция вернет либо true, если элемент существует, либо false, если его нет.

-

ПРИМЕЧАНИЕ: Эта функция работает в пределах текущей целевой комнаты - по умолчанию это комната, в которой вызывается функция, - которую можно задать с помощью функции layer_set_target_room().

-

-

Синтаксис:

-

layer_sprite_exists(layer_id, sprite_element_id)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to target (or the layer name as a string)
sprite_element_idИдентификатор элемента спрайтаThe unique ID value of the sprite element to check
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var lay_id = layer_get_id("Asset_Trees");
- var spr_id = layer_sprite_get_id(lay_id, "graphic_254367CB");
-
- if (layer_sprite_exists(lay_id, spr_id))
- {
-     layer_sprite_destroy(lay_id, global.TreesSprites);
- }

-

Приведенный выше код проверяет слой "Asset_trees" на предмет существования заданного элемента sprite, и если он существует, то уничтожается (но не слой).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_alpha.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_alpha.htm index 903ae80d9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_alpha.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_alpha.htm @@ -1,66 +0,0 @@ - - - - - - layer_sprite_get_alpha - - - - - - - - - - - -

layer_sprite_get_alpha

-

Эту функцию можно использовать для получения альфа-значения элемента sprite. Вы передаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), и функция вернет значение от 0 (полностью прозрачный) до 1 (полностью непрозрачный).

-

-

Синтаксис:

-

layer_sprite_get_alpha(sprite_element_id);

- - - - - - - - - - - -
АргументТипОписание
sprite_element_idThe unique ID value of the sprite element to get the information from
-

-

Возвращается:

-

(from 0 to 1)

-

-

Пример:

-

var lay_id = layer_get_id("sprite_sky");
- var spr_id = layer_sprite_get_id(lay_id, "Clouds");
- if (layer_sprite_get_alpha(spr_id) < 0.1)
- {
-     layer_sprite_destroy(spr_id);
- }

-

Приведенный выше код получит идентификатор слоя с именем "sprite_sky" и затем использует его для получения идентификатора элемента sprite на этом слое. Этот идентификатор затем используется для проверки альфа-элемента, и если он меньше 0,1, то элемент слоя уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_angle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_angle.htm index aa349aecd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_angle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_angle.htm @@ -1,66 +0,0 @@ - - - - - - layer_sprite_get_angle - - - - - - - - - - - -

layer_sprite_get_angle

-

Эта функция может быть использована для получения текущего угла для элемента sprite. Вы задаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), и функция вернет реальное значение угла. Это значение будет находиться в диапазоне от 0 до 360, где 0 означает право, 90 - вверх, 180 - влево и 270 - вниз.

-

-

Синтаксис:

-

layer_sprite_get_angle(sprite_element_id);

- - - - - - - - - - - -
АргументТипОписание
sprite_element_idThe unique ID value of the sprite element to get the information from
-

-

Возвращается:

-

Real

-

-

Пример:

-

var lay_id = layer_get_id("sprite_sky");
- var spr_id = layer_sprite_get_id(lay_id, "Clouds");
- if (layer_sprite_get_angle(spr_id) != 0)
- {
-     layer_sprite_yscale(spr_id, 0);
- }

-

Приведенный выше код получит идентификатор слоя с именем "sprite_sky" и затем использует его для получения идентификатора элемента sprite на этом слое. Этот идентификатор затем используется для проверки угла, и если он не равен 0, то он устанавливается равным 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_blend.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_blend.htm index f3a58d789..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_blend.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_blend.htm @@ -1,66 +0,0 @@ - - - - - - layer_sprite_get_blend - - - - - - - - - - - -

layer_sprite_get_blend

-

Эта функция может быть использована для получения цвета смешивания элемента sprite. Вы передаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), а функция вернет реальное значение, представляющее назначенный цвет.

-

-

Синтаксис:

-

layer_sprite_get_blend(sprite_element_id);

- - - - - - - - - - - -
АргументТипОписание
sprite_element_idThe unique ID value of the sprite element to get the information from
-

-

Возвращается:

-

Colour Constant

-

-

Пример:

-

var lay_id = layer_get_id("sprite_sky");
- var back_id = layer_sprite_get_id(lay_id, "Clouds");
- if (layer_sprite_get_blend(back_id) == c_white)
- {
-     layer_sprite_blend(back_id, make_colour_rgb(random(255), random(255), 255));
- }

-

Приведенный выше код получит идентификатор слоя с именем "sprite_sky" и затем использует его для получения идентификатора элемента sprite на этом слое. Этот идентификатор затем используется для проверки цвета наложения элемента, и если он эквивалентен константе c_white, то наложение элемента устанавливается на случайный цвет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_id.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_id.htm index 4275e9baf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_id.htm @@ -1,71 +0,0 @@ - - - - - - layer_sprite_get_id - - - - - - - - - - - -

layer_sprite_get_id

-

Эта функция может использоваться для получения уникального значения ID элемента sprite на слое. Вы передаете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create() или при использовании имени слоя вместе с layer_get_id()) и имя элемента sprite, определенное в редакторе помещений. Функция вернет значение ID, связанное с этим элементом sprite на слое.

-

Обратите внимание, что эта функция специально предназначена для использования с sprites, которые были добавлены в IDE на слой актива, и если вы добавили sprite на слой через код с помощью функции layer_sprite_create(), то для всех дальнейших ссылок следует использовать идентификатор, возвращаемый этой функцией (поскольку у этого элемента sprite не будет имени, которое можно передать в эту функцию).

-

Если указанный слой не существует, или заданный элемент sprite не может быть найден, функция вернет -1.

-

-

Синтаксис:

-

layer_sprite_get_id(layer_id, sprite_element_name)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to target
sprite_element_nameСтрокаThe unique name of the sprite element on the layer as defined in the Room Editor
-

-

Возвращается:

-

Sprite Element ID

-

-

Пример:

-

var lay_id = layer_get_id("Assets_trees");
- var back_id = layer_sprite_get_id(lay_id, "graphic_254367CB");
- layer_sprite_change(back_id, spr_Trees_Winter);

-

Приведенный выше код получит идентификатор слоя "Assets_trees" и затем использует его для получения идентификатора элемента sprite "graphic_254367CB" на этом слое. Полученный идентификатор элемента sprite затем используется для изменения элемента sprite.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_index.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_index.htm index efd57b7fe..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_index.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_index.htm @@ -1,66 +0,0 @@ - - - - - - layer_sprite_get_index - - - - - - - - - - - -

layer_sprite_get_index

-

Эту функцию можно использовать для получения текущего значения индекса изображения элемента sprite. Вы передаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), и функция вернет реальное значение, которое представляет собой индекс изображения, отображаемого для элемента sprite. Функция вернет -1, если либо элемент sprite не существует, либо ему не присвоен действительный индекс sprite.

-

-

Синтаксис:

-

layer_sprite_get_index(sprite_element_id);

- - - - - - - - - - - -
АргументТипОписание
sprite_element_idThe unique ID value of the sprite element to get the information from
-

-

Возвращается:

-

Real or -1

-

-

Пример:

-

var lay_id = layer_get_id("sprite_sky");
- var spr_id = layer_sprite_get_id(lay_id, "Clouds");
- if (layer_sprite_get_index(spr_id) < 4)
- {
-     layer_sprite_index(spr_id, 4);
- }

-

Приведенный выше код получит идентификатор слоя с именем "sprite_sky" и затем использует его для получения идентификатора элемента sprite на этом слое. Этот идентификатор затем используется для проверки, является ли индекс изображения для элемента меньше 4, и если да, то он устанавливается равным 4.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_speed.htm index ff0adbaad..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_speed.htm @@ -1,66 +0,0 @@ - - - - - - layer_sprite_get_speed - - - - - - - - - - - -

layer_sprite_get_speed

-

Эта функция может быть использована для получения текущего значения множителя скорости элемента sprite. Вы передаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), и функция вернет реальное значение, которое представляет собой множитель скорости, используемый для анимации элемента sprite. Значение по умолчанию равно 1.

-

-

Синтаксис:

-

layer_sprite_get_speed(sprite_element_id);

- - - - - - - - - - - -
АргументТипОписание
sprite_element_idThe unique ID value of the sprite element to get the information from
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("sprite_sky");
- var spr_id = layer_sprite_get_id(lay_id, "Clouds");
- if (layer_sprite_get_speed(spr_id) > 0)
- {
-     layer_sprite_speed(spr_id, 0);
- }

-

Приведенный выше код получит идентификатор слоя с именем "sprite_sky" и затем использует его для получения идентификатора элемента sprite на этом слое. Этот ID затем используется для проверки скорости анимации для элемента, и если он больше 0, то он устанавливается на 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_sprite.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_sprite.htm index dc249d573..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_sprite.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_sprite.htm @@ -1,66 +0,0 @@ - - - - - - layer_sprite_get_sprite - - - - - - - - - - - -

layer_sprite_get_sprite

-

Эта функция может быть использована для получения текущего sprite индекса элемента sprite. Вы передаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), а функция вернет вещественное значение, представляющее отображаемый индекс sprite. Если элементу не присвоен индекс sprite, функция вернет -1.

-

-

Синтаксис:

-

layer_sprite_get_sprite(sprite_element_id);

- - - - - - - - - - - -
АргументТипОписание
sprite_element_idThe unique ID value of the sprite element to get the information from
-

-

Возвращается:

-

Sprite Asset or -1

-

-

Пример:

-

var lay_id = layer_get_id("sprite_sky");
- var spr_id = layer_sprite_get_id(lay_id, "Clouds");
- if layer_sprite_get_sprite(spr_id) != spr_Clouds
- {
-     layer_sprite_change(spr_id, spr_Clouds);
- }

-

Приведенный выше код получит идентификатор слоя с именем "sprite_sky" и затем использует его для получения идентификатора элемента sprite на этом слое. Этот идентификатор затем используется для проверки sprite, присвоенного элементу, и установки его на sprite "spr_Clouds", если он еще не установлен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_x.htm index a854fc5b1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_x.htm @@ -1,66 +0,0 @@ - - - - - - layer_sprite_get_x - - - - - - - - - - - -

layer_sprite_get_x

-

Эта функция может быть использована для получения x-положения элемента sprite в комнате. Вы передаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), а функция вернет значение позиции x.

-

-

Синтаксис:

-

layer_sprite_get_x(sprite_element_id);

- - - - - - - - - - - -
АргументТипОписание
sprite_element_idThe unique ID value of the sprite element to get the information from
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("sprite_sky");
- var spr_id = layer_sprite_get_id(lay_id, "Clouds");
- if (layer_sprite_get_x(spr_id) < 0)
- {
-     layer_sprite_x(spr_id, room_width);
- }

-

Приведенный выше код получит идентификатор слоя с именем "sprite_sky" и затем использует его для получения идентификатора элемента sprite на этом слое. Этот ID затем используется для проверки позиции x элемента, и если он меньше 0, то элемент слоя перемещается в другую позицию x.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_xscale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_xscale.htm index ee37c129f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_xscale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_xscale.htm @@ -1,66 +0,0 @@ - - - - - - layer_sprite_get_xscale - - - - - - - - - - - -

layer_sprite_get_xscale

-

Эта функция может быть использована для получения текущего множителя масштаба по оси x для элемента sprite. Вы задаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), и функция вернет реальное значение для масштаба x, где 1 - нет масштабирования.

-

-

Синтаксис:

-

layer_sprite_get_xscale(sprite_element_id);

- - - - - - - - - - - -
АргументТипОписание
sprite_element_idThe unique ID value of the sprite element to get the information from
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("sprite_sky");
- var spr_id = layer_sprite_get_id(lay_id, "Clouds");
- if (layer_sprite_get_xscale(spr_id) != 1)
- {
-     layer_sprite_xscale(spr_id, 1);
- }

-

Приведенный выше код получит идентификатор слоя с именем "sprite_sky" и затем использует его для получения идентификатора элемента sprite на этом слое. Этот идентификатор затем используется для проверки значения xscale, и если оно не равно 1, то устанавливается равным 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_y.htm index 78cf07828..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_y.htm @@ -1,66 +0,0 @@ - - - - - - layer_sprite_get_y - - - - - - - - - - - -

layer_sprite_get_y

-

Эта функция может быть использована для получения позиции y элемента sprite в комнате. Вы передаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), а функция вернет значение позиции y.

-

-

Синтаксис:

-

layer_sprite_get_y(sprite_element_id);

- - - - - - - - - - - -
АргументТипОписание
sprite_element_idThe unique ID value of the sprite element to get the information from
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("sprite_sky");
- var spr_id = layer_sprite_get_id(lay_id, "Clouds");
- if (layer_sprite_get_y(spr_id) < 0)
- {
-     layer_sprite_y(spr_id, room_height);
- }

-

Приведенный выше код получит идентификатор слоя с именем "sprite_sky" и затем использует его для получения идентификатора элемента sprite на этом слое. Этот ID затем используется для проверки позиции y элемента, и если он меньше 0, то элемент слоя перемещается в другую позицию y.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_yscale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_yscale.htm index 1ab5460ac..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_yscale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_get_yscale.htm @@ -1,66 +0,0 @@ - - - - - - layer_sprite_get_yscale - - - - - - - - - - - -

layer_sprite_get_yscale

-

Эта функция может быть использована для получения текущего множителя масштаба по оси y для элемента sprite. Вы указываете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), и функция вернет реальное значение для масштаба по оси y, где 1 - нет масштабирования.

-

-

Синтаксис:

-

layer_sprite_get_yscale(sprite_element_id);

- - - - - - - - - - - -
АргументТипОписание
sprite_element_idThe unique ID value of the sprite element to get the information from
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("sprite_sky");
- var spr_id = layer_sprite_get_id(lay_id, "Clouds");
- if (layer_sprite_get_yscale(spr_id) != 1)
- {
-     layer_sprite_yscale(spr_id, 1);
- }

-

Приведенный выше код получит идентификатор слоя с именем "sprite_sky" и затем использует его для получения идентификатора элемента sprite на этом слое. Этот идентификатор затем используется для проверки значения yscale, и если оно не равно 1, то оно устанавливается равным 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_index.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_index.htm index 05d3512ec..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_index.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_index.htm @@ -1,68 +0,0 @@ - - - - - - layer_sprite_index - - - - - - - - - - -

layer_sprite_index

-

Эта функция может быть использована для установки индекса изображения в активе sprite, который имеет несколько суб-изображений на слое. Вы задаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), а затем задаете индекс изображения для использования. Если вы зададите значение вне диапазона суб-изображений, то индекс изображения будет зацикливаться.

-

-

Синтаксис:

-

layer_sprite_index(sprite_element_id, image_index);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
sprite_element_idАктив спрайтаThe unique ID value of the sprite element to set
indexРеальноThe image index to use for the sprite
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("sprite_trees");
- var spr_id = layer_sprite_get_id(lay_id, "gfc_trees");
- layer_sprite_index(spr_id, 1);

-

Приведенный выше код получит идентификатор слоя с именем "sprite_trees", а затем использует его для получения идентификатора заданного элемента sprite на этом слое. Этот идентификатор затем используется для изменения индекса изображения элемента.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_speed.htm index 844d7c319..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_speed.htm @@ -1,68 +0,0 @@ - - - - - - layer_sprite_speed - - - - - - - - - - -

layer_sprite_speed

-

Эта функция может быть использована для установки скорости анимирующего изображения, которое было назначено элементу sprite. Вы задаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), а затем задаете скорость анимации. Если IDE задал скорость анимации для используемого sprite элемента как Frames Per Game Frame, то заданное значение скорости является множителем, причем 1 является значением по умолчанию, а установка значения 0,5 уменьшит скорость анимации вдвое, а установка значения 1,5 удвоит ее. Однако если на сайте IDE задана скорость анимации для используемого сайта sprite, рассчитываемая как кадры в секунду, то заданное значение скорости - это буквальное значение кадров в секунду, поэтому, например, установка значения 5 приведет к тому, что анимация будет повторяться по 5 кадров каждую секунду, пока идет игра. Если используемый sprite не имеет вложенных изображений, эта функция не будет иметь никакого эффекта.

-

-

Синтаксис:

-

layer_sprite_speed(sprite_element_id, speed);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
sprite_element_idАктив спрайтаThe unique ID value of the sprite element to change
speedРеальноThe speed multiplier/value to use for the element
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Assets_water");
- var spr_id = layer_sprite_get_id(lay_id, "gfc_water");
- layer_sprite_speed(spr_id, 0.5);

-

Приведенный выше код получит идентификатор слоя с именем "Assets_water", а затем использует его для получения идентификатора заданного элемента sprite на этом слое. Этот идентификатор затем используется для изменения скорости изображения элемента.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_x.htm index e17dff958..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_x.htm @@ -1,64 +0,0 @@ - - - - - - layer_sprite_x - - - - - - - - - - -

layer_sprite_x

-

Эта функция управляет положением вдоль оси x комнаты элемента актива sprite на слое. Вы задаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), а затем задаете используемое значение x (на основе координат помещения).

-

-

Синтаксис:

-

layer_sprite_x(sprite_element_id, x);

- - - - - - - - - - - - - - - -
АргументТипОписание
sprite_element_idThe unique ID value of the sprite element to change
xThe x position for the sprite
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Asset_sky");
var spr_id = layer_sprite_get_id(lay_id, "Clouds");
layer_sprite_x(spr_id, irandom(room_width));

-

Приведенный выше код получает значение ID актива sprite "Clouds", назначенного слою "Asset_sky", а затем устанавливает его x-позицию на случайное значение между 0 и шириной комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_xscale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_xscale.htm index f9f9d4a36..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_xscale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_xscale.htm @@ -1,69 +0,0 @@ - - - - - - layer_sprite_xscale - - - - - - - - - - -

layer_sprite_xscale

-

С помощью этой функции можно изменить, должен ли данный элемент sprite на слое масштабироваться по оси x или нет. Вы задаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), а затем задаете значение масштаба. Значение масштаба 1 означает отсутствие масштабирования (1:1), меньшие значения масштабируют вниз (0,5, например, уменьшает ширину используемого sprite в два раза), большие значения масштабируют вверх, а отрицательные значения переворачивают sprite и масштабируют его, если только используемое значение не равно -1 (в этом случае используемый sprite просто переворачивается вправо-влево относительно исходного положения без масштабирования).

-

-

Синтаксис:

-

layer_sprite_xscale(sprite_element_id, xscale);

- - - - - - - - - - - - - - - -
АргументТипОписание
sprite_element_idThe unique ID value of the sprite element to change
xscaleThe xscale value (default is 1)
-

-

Возвращается:

-

-

-

Пример:

-

var asset_sprite = layer_sprite_get_id(layer, "gfc_Trees");
- if layer_sprite_get_xscale(asset_sprite) != 1 || layer_sprite_get_yscale(asset_sprite) != 1
- {
-     layer_sprite_xscale(asset_sprite, 1);
-     layer_sprite_yscale(asset_sprite, 1);
- }

-

Приведенный выше код проверит элемент sprite, назначенный слою, на котором находится экземпляр, выполняющий код, и если он масштабирован в любом направлении, то установит масштаб по оси x и масштаб по оси y равным 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_y.htm index 802f2f954..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_y.htm @@ -1,64 +0,0 @@ - - - - - - layer_sprite_y - - - - - - - - - - -

layer_sprite_y

-

Эта функция управляет положением по оси y комнаты элемента актива sprite на слое. Вы задаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), а затем задаете значение y, которое необходимо использовать (на основе координат помещения).

-

-

Синтаксис:

-

layer_sprite_y(sprite_element_id, y);

- - - - - - - - - - - - - - - -
АргументТипОписание
sprite_element_idThe unique ID value of the sprite element to change
yThe y position for the sprite
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Asset_sky");
var spr_id = layer_sprite_get_id(lay_id, "Clouds");
layer_sprite_y(spr_id, 50 + irandom(room_height - 200));

-

Приведенный выше код получает значение ID актива sprite "Облака", назначенного слою "Asset_sky", а затем устанавливает его положение по оси y на случайное значение между 50 и высотой комнаты минус 200.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_yscale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_yscale.htm index e182e20a5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_yscale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Sprite_Layers/layer_sprite_yscale.htm @@ -1,69 +0,0 @@ - - - - - - layer_sprite_yscale - - - - - - - - - - -

layer_sprite_yscale

-

С помощью этой функции можно изменить, должен ли данный элемент sprite на слое масштабироваться по оси y или нет. Вы задаете идентификатор элемента sprite (который вы получаете при создании элемента sprite с помощью функции layer_sprite_create() или при использовании функции layer_sprite_get_id()), а затем задаете значение масштаба. Значение масштаба 1 означает отсутствие масштабирования (1:1), меньшие значения масштабируют вниз (0,5, например, уменьшает высоту используемого sprite вдвое), большие значения масштабируют вверх, а отрицательные значения зеркально отражают sprite и масштабируют его, за исключением случая, когда используемое значение равно -1 (в этом случае используемый sprite просто зеркально отражается сверху вниз относительно своей позиции (0, 0) без масштабирования).

-

-

Синтаксис:

-

layer_sprite_yscale(sprite_element_id, yscale);

- - - - - - - - - - - - - - - -
АргументТипОписание
sprite_element_idThe unique ID value of the sprite element to change
yscaleThe yscale value (default is 1)
-

-

Возвращается:

-

-

-

Пример:

-

var asset_sprite = layer_sprite_get_id(layer, "gfc_Trees");
- if layer_sprite_get_xscale(asset_sprite) != 1 || layer_sprite_get_yscale(asset_sprite) != 1
- {
-     layer_sprite_xscale(asset_sprite, 1);
-     layer_sprite_yscale(asset_sprite, 1);
- }

-

Приведенный выше код проверит элемент sprite, назначенный слою, на котором находится экземпляр, выполняющий код, и если он масштабирован в любом направлении, то установит масштаб по оси x и масштаб по оси y равным 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/Tile_Map_Layers.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/Tile_Map_Layers.htm index 6c64e4838..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/Tile_Map_Layers.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/Tile_Map_Layers.htm @@ -1,91 +0,0 @@ - - - - - - Плитка Слои карты - - - - - - - - - - -

Плитка Слои карты

-

Редактор комнат GameMaker позволяет добавлять плитки в любую комнату с помощью слоев. Как следует из названия, слой карты плиток - это просто набор плиток, которые находятся на одной и той же глубине в помещении, и путем наложения слоев вы можете сделать так, чтобы одни элементы рисовались поверх или под другими. Вы также можете управлять некоторыми аспектами слоев из кода, добавляя или удаляя элементы, или изменяя определенные свойства слоя или того, что он содержит, во время выполнения. Обратите внимание, что в редакторе комнат вы ограничены одной картой плиток для каждого слоя (кнопка Слой плитки), но при работе с ними в коде вы можете иметь несколько карт плиток, назначенных одному слою, причем каждая карта имеет свой уникальный идентификатор и свойства, например:

-
    -
  • Набор плиток - это ресурс, который используется для создания слоев плиток и карт плиток.
  • -
  • Слой плитки - это то, что вы создаете в редакторе помещений для добавления наборов плиток в
  • -
  • Карта плиток - это то, что вы называете коллекцией плиток, которые добавляются в слой, либо в редакторе помещений, либо с помощью кода, как единый элемент на этом слое.
  • -
-

Ниже приведен список всех функций, которые можно использовать для редактирования слоев карты плитки:

- -

-

Помимо перечисленных выше функций для установки карт плиток, у вас также есть ряд функций, которые можно использовать для работы с данными отдельных плиток. Сгусток" данных плитки состоит из индекса плитки плюс несколько дополнительных битов, показывающих, была ли плитка повернута, перевернута или зеркально отображена. У вас также есть возможность добавить собственную битовую маску к данным плитки, хотя это только для опытных пользователей, поскольку вы будете маскировать биты, зарезервированные для индекса плитки - по сути, есть 19 битов, зарезервированных для индекса плитки, но если вы используете только 8 из них, то у вас остается 11 битов, которые можно использовать для создания пользовательской маски. Эта маска может быть использована и проверена в коде для создания пользовательских столкновений тайлов или чего-либо еще. Однако обычно вам не нужно создавать свои собственные блобы данных тайлов, а вместо этого вы используете функцию tilemap_get() для получения данных тайла, затем вы будете манипулировать ими с помощью функций ниже, а затем снова установите их с помощью функции tilemap_set().

-

Ниже приведен список всех функций, которые можно использовать для редактирования отдельных плиток:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/layer_tilemap_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/layer_tilemap_create.htm index a2a89c536..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/layer_tilemap_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/layer_tilemap_create.htm @@ -1,88 +0,0 @@ - - - - - - layer_tilemap_create - - - - - - - - - - - -

layer_tilemap_create

-

С помощью этой функции вы можете назначить ресурс набора плиток слою, который будет использоваться в качестве карты плиток в вашем проекте. Вы предоставляете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), затем начальную позицию (x, y) для добавления карты плиток в комнату, ресурс набора плиток, который будет использоваться, а затем ширину и высоту карты плиток в ячейках (т.е.: ширина 20 и высота 10 создадут карту плиток с 200 ячейками, которые будут иметь ширину 20 ячеек и высоту 10 ячеек), при этом размер самих ячеек определяется выбранным набором плиток. Стоит отметить, что вы не можете размещать плитки в отрицательных позициях на карте плиток, поэтому все плитки должны быть размещены в промежутках между ячейками от 0 до ширины - 1, от 0 до высоты - 1.

-

-

Синтаксис:

-

layer_tilemap_create(layer_id, x, y, tileset, width, height)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to target (or the layer name as a string)
xРеальноThe x position of the tile map in the room
yРеальноThe y position of the tile map in the room
tilesetАктивы набора плитокThe Tile Set asset to be used
widthРеальноThe width tile map (in cells)
heightРеальноThe height of the tile map (in cells)
-

-

Возвращается:

-

Tile Map Element ID

-

-

Пример:

-

global.back_layer = layer_create(10000);
- global.back_tiles = layer_tilemap_create(global.back_layer, 0, 0, tmap_Trees, 16, 32);

-

Приведенный выше код создает новый слой, а затем добавляет к нему новый элемент карты плиток, устанавливая позицию карты плиток на (0,0), а также набор используемых плиток, ширину и высоту карты плиток.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/layer_tilemap_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/layer_tilemap_destroy.htm index 06cfb96a9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/layer_tilemap_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/layer_tilemap_destroy.htm @@ -1,67 +0,0 @@ - - - - - - layer_tilemap_destroy - - - - - - - - - - -

layer_tilemap_destroy

-

Эта функция уничтожит заданный элемент карты плиток. Вы передаете ID карты плиток (который вы получаете при создании карты плиток с помощью функции layer_tilemap_create() или когда вы используете идентификатор слоя вместе с layer_get_tilemap_id()), и эта функция удалит его. Обратите внимание, что при этом удаляется не слой, а только карта плиток, и если карта плиток была добавлена в редакторе комнаты, то при следующем выходе из комнаты и последующем возвращении карта плиток будет создана заново. Однако если комната постоянна, карта плиток будет удалена, пока постоянство комнаты не будет снова отключено.

-

-

Синтаксис:

-

layer_tilemap_destroy(tilemap_element_id)

- - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idИдентификатор элемента карты плиткиThe unique ID value of the tile map to be destroyed
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_trees");
- var tile_id = layer_tilemap_get_id(lay_id);
- if (layer_tilemap_exists(lay_id, tile_id))
- {
-     layer_tilemap_destroy(tile_id);
- }

-

Приведенный выше код проверяет слой "Tiles_trees" на существование заданного элемента карты плиток, и если он существует, то уничтожает его (но не слой).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/layer_tilemap_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/layer_tilemap_exists.htm index f9a05ec4b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/layer_tilemap_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/layer_tilemap_exists.htm @@ -1,73 +0,0 @@ - - - - - - layer_tilemap_exists - - - - - - - - - - - -

layer_tilemap_exists

-

С помощью этой функции можно проверить, существует ли элемент карты плиток на данном слое. Вы передаете идентификатор слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность) и ID элемента карты плиток (который вы получаете при создании элемента карты плиток с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()) и функция вернет либо true, если элемент существует, либо false, если его нет.

-

ПРИМЕЧАНИЕ: Эта функция работает в пределах текущей целевой комнаты - по умолчанию это комната, в которой вызывается функция, - которую можно задать с помощью функции layer_set_target_room().

-

-

Синтаксис:

-

layer_tilemap_exists(layer_id, tilemap_element_id)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или идентификатор слояThe unique ID value of the layer to target (or the layer name as a string)
tilemap_element_idИдентификатор элемента карты плиткиThe unique ID value of the tile map element to check
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var lay_id = layer_get_id("tilemap_trees");
- if (layer_tilemap_exists(lay_id, global.Treestilemap))
- {
-     layer_tilemap_destroy(lay_id, global.Treestilemap);
- }

-

Приведенный выше код проверяет слой "tilemap_trees" на предмет существования данного элемента карты плиток, и если он существует, то уничтожает его (но не слой).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/layer_tilemap_get_id.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/layer_tilemap_get_id.htm index 8b56c0e7f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/layer_tilemap_get_id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/layer_tilemap_get_id.htm @@ -1,65 +0,0 @@ - - - - - - layer_tilemap_get_id - - - - - - - - - - - -

layer_tilemap_get_id

-

Эта функция может использоваться для получения уникального значения ID элемента карты плиток на слое. Вы передаете ID слоя (который вы получаете при создании слоя с помощью функции layer_create()) или имя слоя (в виде строки - это влияет на производительность), и функция вернет значение ID, связанное с элементом карты плиток на слое. Обратите внимание, что эта функция специально разработана для использования с картами плиток, которые были добавлены на сайте IDE, так как если вы добавите карту плиток в слой через код с помощью функции layer_tilemap_create()то она вернет уникальный ID для добавленного элемента карты плиток. Если заданный ID карты плиток неверен или карта плиток не существует, функция вернет -1.

-

-

Синтаксис:

-

layer_tilemap_get_id(layer_id)

- - - - - - - - - - - - - -
АргументТипОписание
layer_idСтрока или Идентификатор слояThe unique ID value of the layer to target (or the layer name as a string)
-

-

Возвращается:

-

Tile Map Element ID or -1

-

-

Пример:

-

var lay_id = layer_get_id("tilemap_trees");
- var tile_id = layer_tilemap_get_id(lay_id);
- layer_tilemap_destroy(tile_id);

-

Приведенный выше код получит идентификатор слоя для слоя с именем "tilemap_trees", а затем использует его для получения идентификатора элемента карты плиток на этом слое. Этот идентификатор затем используется для удаления карты плитки из слоя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_empty.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_empty.htm index c284dc3fe..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_empty.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_empty.htm @@ -1,76 +0,0 @@ - - - - - - tile_get_empty - - - - - - - - - - - -

tile_get_empty

-

Эта функция может быть использована для проверки того, является ли заданный набор данных плитки пустой плиткой или нет. Вы передаете данные тайла, которые можно получить с помощью функции tilemap_get(), и функция вернет true, если плитка пуста, или false, если есть индекс плитки.

-

-

Синтаксис:

-

tile_get_empty(tiledata)

- - - - - - - - - - - - - -
АргументТипОписание
tiledataДанные о плиткеthe tile-data to check
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- for (var i = 0; i < tilemap_get_width(map_id); i++)
- {
-     for (var j = 0; j < tilemap_get_height(map_id); j++)
-     {
-         var data = tilemap_get(map_id, i, j);
-         if (!tile_get_empty(data))
-         {
-             data = tile_set_empty(data)
-             tilemap_set(map_id, data, i, j);
-         }
-     }
- }

-

Приведенный выше код получает ID карты тайлов из заданного слоя и затем проверяет каждую ячейку тайла на карте на наличие или отсутствие данных. Если есть, то плитка устанавливается пустой.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_flip.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_flip.htm index 31c2d2fcd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_flip.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_flip.htm @@ -1,70 +0,0 @@ - - - - - - tile_get_flip - - - - - - - - - - - -

tile_get_flip

-

Эта функция может быть использована для проверки того, была ли в заданном наборе данных плитки перевернута плитка или нет. Вы передаете данные плитки, которые можно получить с помощью функции tilemap_get(), и функция вернет true, если плитка перевернута, или false, если нет.

-

-

Синтаксис:

-

tile_get_flip(tiledata)

- - - - - - - - - - - - - -
АргументТипОписание
tiledataДанные о плиткеthe tile-data to check
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- var mx = tilemap_get_cell_x_at_pixel(map_id, mouse_x, mouse_y);
- var my = tilemap_get_cell_y_at_pixel(map_id, mouse_x, mouse_y);
- var data = tilemap_get(map_id, mx, my);
- var bool = !tile_get_flip(data);
- data = tile_set_flip(data, bool);
- tilemap_set(map_id, data, mx, my);

-

Приведенный выше код получает ID карты плитки из заданного слоя, а затем получает позицию x и y ячейки для плитки под мышью. Эта позиция затем используется для получения данных плитки, которые переворачиваются и затем снова используются для установки плитки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_index.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_index.htm index 3ac966311..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_index.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_index.htm @@ -1,71 +0,0 @@ - - - - - - tile_get_index - - - - - - - - - - - -

tile_get_index

-

Эта функция может быть использована для получения индекса плитки (положение плитки в изображении набора плиток) из набора данных плитки. Вы указываете данные тайлов, которые могут быть получены с помощью функции tilemap_get(), и функция вернет целочисленное значение индекса.

-

При использовании этой функции убедитесь, что заданные данные тайла действительны, иначе возвращаемое значение индекса также не будет действительным, что может привести к неожиданному поведению.

-

-

Синтаксис:

-

tile_get_index(tiledata)

- - - - - - - - - - - - - -
АргументТипОписание
tiledataДанные о плиткеthe tile-data to check
-

-

Возвращается:

-

Real

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- var mx = tilemap_get_cell_x_at_pixel(map_id, mouse_x, mouse_y);
- var my = tilemap_get_cell_y_at_pixel(map_id, mouse_x, mouse_y);
- var data = tilemap_get(map_id, mx, my);
- var ind = tile_get_index(data);
- data = tile_set_index(data, irandom(23));
- tilemap_set(map_id, data, mx, my);

-

Приведенный выше код получает ID карты плитки из заданного слоя и затем использует его для получения данных плитки для ячейки под позицией мыши. Эти данные затем используются для установки индекса плитки на случайное число.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_mirror.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_mirror.htm index c7d538b9c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_mirror.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_mirror.htm @@ -1,70 +0,0 @@ - - - - - - tile_get_mirror - - - - - - - - - - - -

tile_get_mirror

-

Эта функция может быть использована для проверки того, была ли в заданном наборе данных плитки зеркально отражена плитка или нет. Вы передаете данные плитки, которые можно получить с помощью функции tilemap_get(), и функция вернет true, если плитка зеркальная, или false, если нет.

-

-

Синтаксис:

-

tile_get_mirror(tiledata)

- - - - - - - - - - - - - -
АргументТипОписание
tiledataДанные о плиткеthe tile-data to check
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- var mx = tilemap_get_cell_x_at_pixel(map_id, mouse_x, mouse_y);
- var my = tilemap_get_cell_y_at_pixel(map_id, mouse_x, mouse_y);
- var data = tilemap_get(map_id, mx, my);
- var bool = !tile_get_mirror(data);
- data = tile_set_mirror(data, bool);
- tilemap_set(map_id, data, mx, my);

-

Приведенный выше код получает ID карты плитки из заданного слоя, а затем получает позицию x и y ячейки для плитки под мышью. Эта позиция затем используется для получения данных плитки, которые зеркально отображаются и затем используются для повторной установки плитки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_rotate.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_rotate.htm index 6d140e3e9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_rotate.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_get_rotate.htm @@ -1,70 +0,0 @@ - - - - - - tile_get_rotate - - - - - - - - - - - -

tile_get_rotate

-

Эта функция может быть использована для проверки того, была ли плитка в заданном наборе данных плитки повернута на 90 градусов или нет. Вы передаете данные тайла, которые можно получить с помощью функции tilemap_get(), и функция вернет true, если плитка повернута, или false, если нет.

-

-

Синтаксис:

-

tile_get_rotate(tiledata)

- - - - - - - - - - - - - -
АргументТипОписание
tiledataДанные о плиткеthe tile-data to check
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- var mx = tilemap_get_cell_x_at_pixel(map_id, mouse_x, mouse_y);
- var my = tilemap_get_cell_y_at_pixel(map_id, mouse_x, mouse_y);
- var data = tilemap_get(map_id, mx, my);
- var bool = !tile_get_rotate(data);
- data = tile_set_rotate(data, bool);
- tilemap_set(map_id, data, mx, my);

-

Приведенный выше код получает ID карты плитки из заданного слоя, а затем получает позицию x и y ячейки для плитки под мышью. Эта позиция затем используется для получения данных плитки, которые поворачиваются и затем используются для установки плитки снова.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_empty.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_empty.htm index b31d42e39..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_empty.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_empty.htm @@ -1,75 +0,0 @@ - - - - - - tile_set_empty - - - - - - - - - - -

tile_set_empty

-

Эта функция может быть использована для установки заданного набора данных плитки в качестве пустой плитки. Вы передаете данные тайла, которые можно получить с помощью функции tilemap_get(), и функция вернет true, если плитка пуста, или false, если есть индекс плитки. Функция вернет модифицированный набор данных плитки, который затем может быть применен с помощью функции tilemap_set().

-

-

Синтаксис:

-

tile_set_empty(tiledata)

- - - - - - - - - - - - - -
АргументТипОписание
tiledataДанные о плиткеthe tile-data to set
-

-

Возвращается:

-

Tile Data

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- for (var i = 0; i < tilemap_get_width(map_id); i++)
- {
-     for (var j = 0; j < tilemap_get_height(map_id); j++)
-     {
-         var data = tilemap_get(map_id, i, j);
-         if (!tile_get_empty(data))
-         {
-             data = tile_set_empty(data)
-             tilemap_set(map_id, data, i, j);
-         }
-     }
- }

-

Приведенный выше код получает ID карты тайлов из заданного слоя и затем проверяет каждую ячейку тайла на карте на наличие или отсутствие данных. Если есть, то плитка устанавливается пустой.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_flip.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_flip.htm index 3f705b0cf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_flip.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_flip.htm @@ -1,65 +0,0 @@ - - - - - - tile_set_flip - - - - - - - - - - -

tile_set_flip

-

Эта функция может быть использована для установки заданного набора данных плитки, чтобы перевернуть плитку или нет. Вы передаете данные плитки, которые можно получить с помощью функции tilemap_get(), а затем устанавливаете аргумент flip либо в true, если вы хотите перевернуть плитку, либо в false, если вы хотите, чтобы плитка находилась в своем стандартном, неперевернутом состоянии. Функция вернет модифицированный набор данных плитки, который затем можно применить с помощью функции tilemap_set() функцию.

-

-

Синтаксис:

-

tile_set_flip(tiledata, flip)

- - - - - - - - - - - - - - - -
АргументТипОписание
tiledatathe tile-data to set
flipSet to true перевернуть и false оставить как есть
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_sky");
var map_id = layer_tilemap_get_id(lay_id);
var mx = tilemap_get_cell_x_at_pixel(map_id, mouse_x, mouse_y);
var my = tilemap_get_cell_y_at_pixel(map_id, mouse_x, mouse_y);
var data - = tilemap_get(map_id, mx, my);
var bool = !tile_get_flip(data);
data = tile_set_flip(data, bool);
tilemap_set(map_id, data, mx, my);

-

Приведенный выше код получает ID карты плитки из заданного слоя, а затем получает позицию x и y ячейки для плитки под мышью. Эта позиция затем используется для получения данных плитки, которые переворачиваются и затем снова используются для установки плитки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_index.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_index.htm index 0df92589e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_index.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_index.htm @@ -1,74 +0,0 @@ - - - - - - tile_set_index - - - - - - - - - - -

tile_set_index

-

Эта функция используется для установки индекса плитки (положение плитки в изображении набора плиток) для набора данных плиток. Вы передаете данные тайла, которые могут быть получены с помощью функции tilemap_get(), а затем целочисленное значение, которое представляет позицию плитки (ее индекс) в наборе плиток. Функция вернет измененный набор плиточных данных, который затем можно применить с помощью функции tilemap_set() функцию.

-

-

Синтаксис:

-

tile_set_index(tiledata, index)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
tiledataДанные о плиткеthe tile-data to set
indexРеальноThe integer index value of the tile to use
-

-

Возвращается:

-

Tile Data

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- var mx = tilemap_get_cell_x_at_pixel(map_id, mouse_x, mouse_y);
- var my = tilemap_get_cell_y_at_pixel(map_id, mouse_x, mouse_y);
- var data = tilemap_get(map_id, mx, my);
- var ind = tile_get_index(data);
- data = tile_set_index(data, irandom(23));
- tilemap_set(map_id, data, mx, my);

-

Приведенный выше код получает ID карты плитки из заданного слоя и затем использует его для получения данных плитки для ячейки под позицией мыши. Эти данные затем используются для установки индекса плитки на случайное число.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_mirror.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_mirror.htm index 7d78898db..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_mirror.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_mirror.htm @@ -1,71 +0,0 @@ - - - - - - tile_set_mirror - - - - - - - - - - -

tile_set_mirror

-

Эта функция может быть использована для установки заданного набора tile-данных для зеркального отображения плитки или нет. Вы передаете данные плитки, которые можно получить с помощью функции tilemap_get(), а затем устанавливаете аргумент mirror либо в true, если хотите, чтобы плитка была зеркальной, либо в false, если хотите, чтобы плитка была в стандартном, незеркальном состоянии. Функция вернет модифицированный набор данных плитки, который затем можно применить с помощью функции tilemap_set() функцию.

-

-

Синтаксис:

-

tile_set_mirror(tiledata, mirror)

- - - - - - - - - - - - - - - -
АргументТипОписание
tiledatathe tile-data to set
mirrorSet to true отзеркалить и false оставить как есть
-

-

Возвращается:

-

Tile Data (Real)

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- var mx = tilemap_get_cell_x_at_pixel(map_id, mouse_x, mouse_y);
- var my = tilemap_get_cell_y_at_pixel(map_id, mouse_x, mouse_y);
- var data = tilemap_get(map_id, mx, my);
- var bool = !tile_get_mirror(data);
- data = tile_set_mirror(data, bool);
- tilemap_set(map_id, data, mx, my);

-

Приведенный выше код получает ID карты плитки из заданного слоя, а затем получает позицию x и y ячейки для плитки под мышью. Эта позиция затем используется для получения данных плитки, которые зеркально отображаются и затем используются для повторной установки плитки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_rotate.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_rotate.htm index d2eced7d9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_rotate.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tile_set_rotate.htm @@ -1,74 +0,0 @@ - - - - - - tile_set_rotate - - - - - - - - - - -

tile_set_rotate

-

Эта функция может быть использована для установки заданного набора данных плитки для поворота плитки на 90 градусов или нет. Вы передаете данные тайла, которые можно получить с помощью функции tilemap_get(), а затем задаете аргумент rotate либо true, если вы хотите, чтобы плитка была повернута, либо false, если вы хотите, чтобы плитка была в своем стандартном, не повернутом состоянии. Функция вернет измененный набор данных плитки, который затем можно применить с помощью функции tilemap_set() функцию.

-

-

Синтаксис:

-

tile_set_rotate(tiledata, rotate)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
tiledataДанные о плиткеThe tile-data to set
rotateБулевоSet to true чтобы повернуть и false чтобы оставить все как есть
-

-

Возвращается:

-

Real

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- var mx = tilemap_get_cell_x_at_pixel(map_id, mouse_x, mouse_y);
- var my = tilemap_get_cell_y_at_pixel(map_id, mouse_x, mouse_y);
- var data = tilemap_get(map_id, mx, my);
- var bool = !tile_get_rotate(data);
- data = tile_set_rotate(data, bool);
- tilemap_set(map_id, data, mx, my);

-

Приведенный выше код получает ID карты плитки из заданного слоя, а затем получает позицию x и y ячейки для плитки под мышью. Эта позиция затем используется для получения данных плитки, которые поворачиваются и затем используются для установки плитки снова.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_clear.htm index bcb203a07..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_clear.htm @@ -1,69 +0,0 @@ - - - - - - tilemap_clear - - - - - - - - - - -

tilemap_clear

-

С помощью этой функции вы можете очистить/установить все плитки на заданной карте плиток. Вы указываете ID элемента карты плиток (который вы получаете при создании элемента карты плиток с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), а затем предоставляете данные плитки, которую вы хотите очистить. Значение по умолчанию 0 очистит все плитки из слоя (по сути, делая все плитки "пустыми"), в то время как вы можете использовать специальные функции tile_* для создания собственных данных плиток для очистки карты плиток.

-

-

Синтаксис:

-

tilemap_clear(tilemap_element_id, tiledata)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idИдентификатор элемента карты плиткиThe unique ID value of the tile map element to change
tiledataДанные плитки (реальные)The tile data to use to clear the layer
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var layer_id = layer_get_id("Forest");
- var tile_id = layer_tilemap_get_id(layer_id);
- tilemap_clear(tile_id, 0);

-

Приведенный выше код получает значение ID карты плиток, созданной в редакторе комнат, а затем очищает ее, используя "пустые" плитки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get.htm index 07d956603..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get.htm @@ -1,78 +0,0 @@ - - - - - - tilemap_get - - - - - - - - - - - -

tilemap_get

-

С помощью этой функции вы можете получить данные о плитке из ячейки элемента карты плитки. Вы указываете ID элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), а также позицию x и y ячейки, и функция вернет "сгусток" данных плитки. Эти данные по сути являются битовой маской, содержащей индекс плитки, булевы flip/rotate/mirror и любые примененные данные маски (см. tilemap_set_mask() подробности), а полученное значение данных можно использовать в функциях tile_* для изменения свойств плитки. Обратите внимание, что мы используем позиции ячеек x/y, основанные на размере сетки карты плитки, а не на положении в комнате, поэтому "cell_x" - это значение от 0 до ширины карты плитки, а "cell_y" - это значение от 0 до высоты карты плитки. Если вам нужно получить данные для плитки в определенном положении в комнате, то вам нужно использовать функцию tilemap_get_at_pixel().

-

ВАЖНО! Если плитки в карте плиток были неизменны (т.е. они не повернуты, не перевернуты и т.д.), то возвращаемое значение данных набора плиток будет точно равно индексу плитки в наборе плиток. Таким образом, вы можете создавать "карты столкновений" плиток, используя одну плитку с индексом 1 в наборе плиток - например - затем использовать эту функцию для проверки 1 или 0 (пустая плитка) для расчета столкновений.

-

-

Синтаксис:

-

tilemap_get(tilemap_element_id, cell_x, cell_y);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idИдентификатор элемента карты плиткиThe unique ID value of the tile map element to get the tile-data of
x_cellРеальноThe cell along the x-axis to get the tile data from
y_cellРеальноThe cell along the y-axis to get the tile data from
-

-

Возвращается:

-

Tile Data (-1 if there is an error)

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- var data = tilemap_get(map_id, 0, 0);
- data = tile_set_flip(data, true);
- tilemap_set(map_id, data, 0, 0);

-

Приведенный выше код получает идентификатор карты плиток на слое "Tiles_Sky", а затем использует его для получения данных плитки в ячейке (0, 0). Эти данные плитки затем переворачиваются, прежде чем снова использоваться для установки плитки на карте плиток.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_at_pixel.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_at_pixel.htm index 64c89cbea..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_at_pixel.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_at_pixel.htm @@ -1,78 +0,0 @@ - - - - - - tilemap_get_at_pixel - - - - - - - - - - - -

tilemap_get_at_pixel

-

С помощью этой функции вы можете получить данные плитки из позиции (в пределах комнаты) элемента карты плитки. Вы указываете ID элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), а также позицию x и y в комнате, из которой нужно получить данные тайла, и функция вернет "сгусток" данных тайла. Эти данные по сути являются битовой маской, содержащей индекс плитки, булевы flip/rotate/mirror и любые примененные данные маски (см. tilemap_set_mask() подробности), и полученное значение данных может быть использовано в функциях tile_* для изменения свойств плитки. Если вам нужно получить данные плитки из конкретной ячейки, используйте функцию tilemap_get() вместо нее.

-

ВАЖНО! Если плитки в карте плиток были неизменны (т.е. они не повернуты, не перевернуты и т.д.), то возвращаемое значение данных набора плиток будет точно равно индексу плитки в наборе плиток. Таким образом, вы можете создавать "карты столкновений" плиток, используя одну плитку с индексом 1 в наборе плиток - например - затем использовать эту функцию для проверки 1 или 0 (пустая плитка) для расчета столкновений.

-

-

Синтаксис:

-

tilemap_get_at_pixel(tilemap_element_id, x, y);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idИдентификатор элемента карты плиткиThe unique ID value of the tile map element to get the tile-data of
xРеальноThe position along the x-axis to get the tile data from (in room pixels)
yРеальноThe position along the y-axis to get the tile data from (in room pixels)
-

-

Возвращается:

-

Tile Data (-1 if there is an error)

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- var data = tilemap_get_at_pixel(map_id, 64, 128);
- data = tile_set_flip(data, true);
- tilemap_set_at_pixel(map_id, data, 64, 128);

-

Приведенный выше код получает идентификатор карты тайлов "Clouds" на слое "Tiles_Sky", а затем использует его для получения данных тайла в позиции (64, 128). Эти данные плитки затем переворачиваются перед использованием для повторной установки плитки на карте плиток.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_cell_x_at_pixel.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_cell_x_at_pixel.htm index c3973836f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_cell_x_at_pixel.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_cell_x_at_pixel.htm @@ -1,71 +0,0 @@ - - - - - - tilemap_get_cell_x_at_pixel - - - - - - - - - - - -

tilemap_get_cell_x_at_pixel

-

С помощью этой функции вы можете получить положение оси x отдельной ячейки карты плитки, задав относительное положение оси x в помещении. Вы указываете ID элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), а также положение x и y в помещении, и функция вернет положение x ячейки в карте плитки для этой точки. - Обратите внимание, что если значение находится за пределами области карты плиток, и ни одна ячейка не доступна, функция вернет -1.

-

-

Синтаксис:

-

tilemap_get_cell_x_at_pixel(tilemap_element_id, x, y);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idThe unique ID value of the tile map element to get the cell x position of
xThe x position within the room to use for getting the cell
yThe y position within the room to use for getting the cell
-

-

Возвращается:

-

(x-axis cell position or -1 if there is an error)

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_Walls");
var map_id = layer_tilemap_get_id(lay_id);
var _x = tilemap_get_cell_x_at_pixel(map_id, mouse_x, mouse_y);
var _y = tilemap_get_cell_y_at_pixel(map_id, mouse_x, mouse_y);
tiledata - = tilemap_get(map_id, _x, _y);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_cell_y_at_pixel.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_cell_y_at_pixel.htm index 3d52444c6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_cell_y_at_pixel.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_cell_y_at_pixel.htm @@ -1,71 +0,0 @@ - - - - - - tilemap_get_cell_y_at_pixel - - - - - - - - - - - -

tilemap_get_cell_y_at_pixel

-

С помощью этой функции вы можете получить положение оси y отдельной ячейки карты плитки, задав относительное положение оси y в помещении. Вы указываете ID элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), а также положение x и y в помещении, и функция вернет положение y ячейки в карте плитки для этой точки. - Обратите внимание, что если значение находится за пределами области карты плиток, и ни одна ячейка не доступна, функция вернет -1.

-

-

Синтаксис:

-

tilemap_get_cell_y_at_pixel(tilemap_element_id, x, y);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idThe unique ID value of the tile map element to get the cell y position of
xThe x position within the room to use for getting the cell
yThe y position within the room to use for getting the cell
-

-

Возвращается:

-

(y-axis cell position or -1 if there is an error)

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_Walls");
var map_id = layer_tilemap_get_id(lay_id);
var _x = tilemap_get_cell_x_at_pixel(map_id, mouse_x, mouse_y);
var _y = tilemap_get_cell_y_at_pixel(map_id, mouse_x, mouse_y);
tiledata - = tilemap_get(map_id, _x, _y);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_frame.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_frame.htm index fa7121aea..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_frame.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_frame.htm @@ -1,72 +0,0 @@ - - - - - - tilemap_get_frame - - - - - - - - - - - -

tilemap_get_frame

-

Поскольку плитки могут быть анимированными, иногда бывает полезно знать, какой кадр в данный момент рисуется, и реагировать соответствующим образом, поэтому с помощью этой функции можно получить индекс текущего кадра для данной карты плиток. Вы задаете ID элемента карты плиток (который вы получаете при создании элемента карты плиток с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), и функция вернет индекс кадра.

-

-

Синтаксис:

-

tilemap_get_frame(tilemap_element_id)

- - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idИдентификатор элемента карты плиткиThe unique ID value of the tile map element to get the frame index of
-

-

Возвращается:

-

Real (between 0 (inclusive) and the maximum number of frames of animation (exclusive))

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_Traps");
- var map_id = layer_tilemap_get_id(lay_id);
- if (tilemap_get_frame(map_id) >= 2 && tilemap_get_frame(map_id) < 4)
- {
-     global.activate = true;
- }
- else
- {
-     global.activate = false;
- }

-

Приведенный выше код проверяет текущий кадр анимации для заданной карты тайлов на заданном слое и устанавливает глобальную переменную на основе возвращаемого значения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_global_mask.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_global_mask.htm index f9e0b0a4d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_global_mask.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_global_mask.htm @@ -1,54 +0,0 @@ - - - - - - tilemap_get_global_mask - - - - - - - - - - - -

tilemap_get_global_mask

-

Эта функция может быть использована для получения значения битовой маски для всех карт плиток, возвращая текущее значение маски или -1, если произошла ошибка, или 0, если маска не указана. Для получения дополнительной информации о битовых масках глобальных тайловых карт см. функцию tilemap_set_global_mask().

-

-

Синтаксис:

-

tilemap_get_global_mask();

-

-

Возвращается:

-

(0 for no mask, -1 for an error, mask value otherwise)

-

-

Пример:

-

var mask = tilemap_get_global_mask(map_id);
- var new_mask = tile_mirror | tile_flip | tile_rotate | 255;
- if (mask != new_mask)
- {
-     tilemap_set_global_mask(_new_mask);
- }

-

Приведенный выше код получает глобальное значение маски, связанное со всеми картами плиток. Если оно не совпадает со значением, определенным в переменной "new_mask", то оно устанавливается в это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_height.htm index 0b53d4aa0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_height.htm @@ -1,62 +0,0 @@ - - - - - - tilemap_get_height - - - - - - - - - - - -

tilemap_get_height

-

С помощью этой функции вы можете получить высоту (в ячейках) элемента карты плитки. Вы передаете ID элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или когда - вы используете функцию layer_tilemap_get_id()), а функция вернет высоту (количество клеток в ширину).

-

-

Синтаксис:

-

tilemap_get_height(tilemap_element_id);

- - - - - - - - - - - -
АргументТипОписание
tilemap_element_idThe unique ID value of the tile map element to get the height of
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("espadrilles");
var map_id = layer_tilemap_get_id(lay_id);
var _w = tilemap_get_width(map_id);
var _h = tilemap_get_height(map_id);
total_tiles = (_w * _h);

-

Приведенный выше код использует полученный идентификатор карты плиток для получения ширины и высоты карты плиток, а затем использует эти значения для установки переменной экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_mask.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_mask.htm index 5868e035b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_mask.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_mask.htm @@ -1,70 +0,0 @@ - - - - - - tilemap_get_mask - - - - - - - - - - - -

tilemap_get_mask

-

Эта функция может использоваться для получения значения битовой маски для заданной карты плиток. Вы передаете идентификатор элемента карты плиток (который вы получаете при создании элемента карты плиток с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), и функция вернет текущее значение маски или -1, если произошла ошибка, или 0, если маска не указана. Для получения дополнительной информации о битовых масках карты плиток см. функцию tilemap_set_mask().

-

-

Синтаксис:

-

tilemap_get_mask(tilemap_element_id);

- - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idИдентификатор элемента карты плиткиThe unique ID value of the tile map element to get the mask of
-

-

Возвращается:

-

Real (0 for no mask, -1 for an error)

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- var mask = tilemap_get_mask(map_id);
- var new_mask = tile_mirror | tile_flip | tile_rotate | 255;
- if (mask != new_mask)
- {
-     tilemap_set_mask(_map_id, _new_mask);
- }

-

Приведенный выше код получает идентификатор карты плитки из данного слоя, а затем проверяет значение маски, связанное с ним. Если оно не совпадает со значением, определенным в переменной "new_mask", то оно устанавливается на это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_tile_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_tile_height.htm index b63858c05..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_tile_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_tile_height.htm @@ -1,61 +0,0 @@ - - - - - - tilemap_get_tile_height - - - - - - - - - - - -

tilemap_get_tile_height

-

С помощью этой функции вы можете получить высоту (в пикселях) каждой ячейки элемента карты плиток. Вы передаете ID элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), и функция вернет высоту ячейки набора плиток.

-

-

Синтаксис:

-

tilemap_get_tile_height(tilemap_element_id);

- - - - - - - - - - - -
АргументТипОписание
tilemap_element_idThe unique ID value of the tile map element to get the tile cell height of
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_Walls");
var map_id = layer_tilemap_get_id(lay_id);
global.snap_x = tilemap_get_tile_width(map_id);
global.snap_y = tilemap_get_tile_height(map_id);

-

Приведенный выше код использует полученный ID карты плитки для получения ширины и высоты ячейки плитки и использует их для установки двух глобальных переменных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_tile_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_tile_width.htm index 5b2e4f950..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_tile_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_tile_width.htm @@ -1,61 +0,0 @@ - - - - - - tilemap_get_tile_width - - - - - - - - - - - -

tilemap_get_tile_width

-

С помощью этой функции вы можете получить ширину (в пикселях) каждой ячейки элемента карты плитки. Вы передаете идентификатор элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), и функция вернет ширину ячейки набора плиток.

-

-

Синтаксис:

-

tilemap_get_tile_width(tilemap_element_id);

- - - - - - - - - - - -
АргументТипОписание
tilemap_element_idThe unique ID value of the tile map element to get the tile cell width of
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_Walls");
var map_id = layer_tilemap_get_id(lay_id);
global.snap_x = tilemap_get_tile_width(map_id);
global.snap_y = tilemap_get_tile_height(map_id);

-

Приведенный выше код использует полученный ID карты плитки для получения ширины и высоты ячейки плитки и использует их для установки двух глобальных переменных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_tileset.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_tileset.htm index 97fc51892..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_tileset.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_tileset.htm @@ -1,68 +0,0 @@ - - - - - - tilemap_get_tileset - - - - - - - - - - - -

tilemap_get_tileset

-

С помощью этой функции можно получить значение индекса актива набора плиток, назначенного данному элементу карты плиток на слое. Вы передаете идентификатор элемента карты плиток (который вы получаете при создании элемента карты плиток с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), и функция вернет индекс актива набора плиток.

-

-

Синтаксис:

-

tilemap_get_tileset(tilemap_element_id);

- - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idИдентификатор элемента карты плиткиThe unique ID value of the Tile Map element to get the tile set from
-

-

Возвращается:

-

Tile Set Asset

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_trees");
- var map_id = layer_tilemap_get_id(lay_id);
- if (tilemap_get_tileset(map_id) != ts_Nighttime)
- {
-     tilemap_tileset(map_id, ts_Nighttime);
- }

-

Приведенный выше код проверяет текущий набор плиток, назначенный слою "Tiles_trees", и если он не "ts_Nighttime", то этот набор плиток назначается на карту плиток.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_width.htm index fdb543617..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_width.htm @@ -1,62 +0,0 @@ - - - - - - tilemap_get_width - - - - - - - - - - - -

tilemap_get_width

-

С помощью этой функции вы можете получить ширину (в ячейках) элемента карты плитки. Вы передаете идентификатор элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или когда - вы используете функцию layer_tilemap_get_id()), и функция вернет ширину (количество ячеек в ширину).

-

-

Синтаксис:

-

tilemap_get_width(tilemap_element_id);

- - - - - - - - - - - -
АргументТипОписание
tilemap_element_idThe unique ID value of the tile map element to get the width of
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_Walls");
var map_id = layer_tilemap_get_id(lay_id);
var _w = tilemap_get_width(map_id);
var _h = tilemap_get_height(map_id);
total_tiles = (_w * _h);

-

Приведенный выше код использует полученный идентификатор карты плиток для получения ширины и высоты карты плиток, а затем использует эти значения для установки переменной экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_x.htm index cd84da250..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_x.htm @@ -1,61 +0,0 @@ - - - - - - tilemap_get_x - - - - - - - - - - - -

tilemap_get_x

-

С помощью этой функции можно получить x-позицию (в пределах комнаты) элемента карты плитки. Вы передаете ID элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), и функция вернет положение по оси x.

-

-

Синтаксис:

-

tilemap_get_x(tilemap_element_id);

- - - - - - - - - - - -
АргументТипОписание
tilemap_element_idThe unique ID value of the tile map element to get the x position of
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_Walls");
var map_id = layer_tilemap_get_id(lay_id);
var _x = tilemap_get_x(map_id);
var _y = tilemap_get_y(map_id);
tilemap_x(map_id, _x + 10); tilemap_y(map_id, _y + 10);

-

Приведенный выше код использует полученный идентификатор карты плитки для получения позиции x и y карты плитки, а затем использует эти значения для ее перемещения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_y.htm index 5efa3f3bb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_get_y.htm @@ -1,61 +0,0 @@ - - - - - - tilemap_get_y - - - - - - - - - - - -

tilemap_get_y

-

С помощью этой функции можно получить позицию y (в пределах комнаты) элемента карты плитки. Вы передаете ID элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), и функция вернет положение по оси y.

-

-

Синтаксис:

-

tilemap_get_y(tilemap_element_id);

- - - - - - - - - - - -
АргументТипОписание
tilemap_element_idThe unique ID value of the tile map element to get the y position of
-

-

Возвращается:

-

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_Walls");
var map_id = layer_tilemap_get_id(lay_id);
var _x = tilemap_get_x(map_id);
var _y = tilemap_get_y(map_id);
tilemap_x(map_id, _x + 10); tilemap_y(map_id, _y + 10);

-

Приведенный выше код использует полученный идентификатор карты плитки для получения позиции x и y карты плитки, а затем использует эти значения для ее перемещения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set.htm index c92f01933..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set.htm @@ -1,81 +0,0 @@ - - - - - - tilemap_set - - - - - - - - - - -

tilemap_set

-

Эта функция может использоваться для установки любой ячейки (квадрата сетки) в элементе карты плиток на слое на новую плитку. Вы указываете идентификатор элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), а затем данные плитки, которые нужно установить, а также позицию в карте плитки. Вы можете получить данные плитки с помощью функции tilemap_get() и затем использовать функции tile_ для их изменения перед установкой ячейки с помощью этой функции. Функция вернет true, если плитка была успешно установлена, и false, если возникла проблема и она не была установлена.

-

-

Синтаксис:

-

tilemap_set(tilemap_element_id, tiledata, xcell, ycell)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idИдентификатор элемента карты плиткиThe unique ID value of the tile map element to change
tiledataДанные плитки (реальные)The tile data to set
xcellРеальноThe cell (grid) position to set along the x-axis
ycellРеальноThe cell (grid) position to set along the y-axis
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- var data = tilemap_get(map_id, 0, 0);
- data = tile_set_flip(data, true);
- tilemap_set(map_id, data, 0, 0);

-

Приведенный выше код получает идентификатор карты плиток на слое "Tiles_Sky", а затем использует его для получения данных плитки в ячейке (0, 0). Эти данные плитки затем переворачиваются, прежде чем снова использоваться для установки плитки на карте плиток.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_at_pixel.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_at_pixel.htm index e7e1cd6ad..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_at_pixel.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_at_pixel.htm @@ -1,81 +0,0 @@ - - - - - - tilemap_set_at_pixel - - - - - - - - - - -

tilemap_set_at_pixel

-

Эта функция может быть использована для установки ячейки в элементе карты плитки на слое на новую плитку, используя фактическое положение плитки для изменения в помещении. Вы задаете ID элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), а затем данные плитки, которые нужно установить, а также позицию в помещении. Вы можете получить данные плитки с помощью функции tilemap_get_at_pixel() и затем с помощью функций tile_ изменить их, прежде чем снова задать их с помощью этой функции. Функция вернет true, если плитка была успешно установлена, и false, если возникла проблема и она не была установлена.

-

-

Синтаксис:

-

tilemap_set_at_pixel(tilemap_element_id, tiledata, x, y)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idИдентификатор элемента карты плиткиThe unique ID value of the tile map element to change
tiledataДанные плитки (реальные)The tile set data to set
xcellРеальноThe x position (in the room)
ycellРеальноThe y position (in the room)
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- var data = tilemap_get_at_pixel(map_id, 4, 4);
- data = tile_set_flip(data, true);
- tilemap_set_at_pixel(map_id, data, 4, 4);

-

Приведенный выше код получает идентификатор карты плиток на слое "Tiles_Sky", а затем использует его для получения данных от плитки в позиции (4, 4). Эти данные плитки затем переворачиваются перед использованием для повторной установки плитки на карте плиток.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_global_mask.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_global_mask.htm index 25473403c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_global_mask.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_global_mask.htm @@ -1,93 +0,0 @@ - - - - - - tilemap_set_global_mask - - - - - - - - - - -

tilemap_set_global_mask

-

Эта функция может быть использована для установки битовой маски тайлов для всех карт тайлов в игре. Идея заключается в том, что если у вас есть, например, довольно маленькие наборы тайлов 16 x 16, то в каждом наборе тайлов будет в общей сложности 256 различных тайлов, что использует только 8 бит вашего индекса в "блобе" данных тайлов (из доступных 19 бит данных). Эти биты могут быть "замаскированы", а затем оставшаяся часть данных плитки может быть использована для хранения дополнительных значений.

-

Простой способ получить начальное значение индекса маски - взять количество плиток в наборе плиток и вычесть 1, так что набор плиток 16x16 имеет 256 плиток и значение маски 255 (или $ff в шестнадцатеричной системе), а если набор плиток имеет количество плиток, которое не является степенью двойки, то округлите до ближайшей степени двойки, чтобы получить маску, например, набор плиток размером 20x20 имеет 400 плиток, которые вы округлите до 512, и таким образом получите значение индекса маски 511 ($1ff в шестнадцатеричной системе). Кроме индексной маски, обычно требуется сохранить значения флипа, поворота и зеркального отображения, присвоенные плитке, поэтому для этого можно использовать несколько констант. Они могут быть "или" вместе со значением индексной маски, чтобы сохранить эти биты данных. Можно использовать следующие константы (использование см. в примере кода ниже):

- - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
tile_rotateИспользуется для установки/получения бита поворота блока данных плитки.
tile_mirrorИспользуется для установки/получения зеркального бита блока данных плитки.
tile_flipИспользуется для установки/получения флип-бита блоба данных плитки.
tile_index_maskСпециальная константа, которая используется для "и"-соединения с блобом данных плитки для извлечения индекса плитки.
-

Маскировка битов карты тайлов является расширенной функцией и позволяет использовать биты "блоба" данных тайлов для собственных нужд. Например, пользователь может зарезервировать бит для обозначения "solid" в структуре данных тайла, а затем проверить его на наличие быстрых столкновений. По сути, битовая маска "и" накладывается на данные тайлов при рисовании карты тайлов (поэтому она не влияет на другие функции), то есть биты, не входящие в маску, игнорируются, но пользователь может читать и записывать их для своих целей. Обратите внимание, что существует две разные маски - глобальная и для каждой карты тайлов, - и перед тем, как использовать их для рисования, GameMaker выполняет внутреннее сложение "и".

-

-

Синтаксис:

-

tilemap_set_global_mask(mask)

- - - - - - - - - - - - - -
АргументТипОписание
maskРеальноThe mask value to use
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var mask = tile_mirror | tile_flip | tile_rotate | 255;
- tilemap_set_global_mask(mask);

-

Приведенный выше код устанавливает битовую маску глобальной карты плиток в 8 бит, сохраняя значения flip, mirror и rotate для каждой плитки в карте.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_height.htm index 347229d94..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_height.htm @@ -1,72 +0,0 @@ - - - - - - tilemap_set_height - - - - - - - - - - -

tilemap_set_height

-

Эта функция может использоваться для изменения размера элемента карты плиток. Вы передаете идентификатор элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), и новую высоту карты плитки в ячейках плитки.

-

-

Синтаксис:

-

tilemap_set_height(tilemap_element_id, height)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idИдентификатор элемента карты плиткиThe unique ID value of the tile map element to set the height of
heightРеальноThe height value (in "cells")
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_Walls");
- var map_id = layer_tilemap_get_id(lay_id);
- if (tilemap_get_height(map_id) != room_height div 16)
- {
-     tilemap_set_height(map_id, room_height div 16);
- }

-

Приведенный выше код проверяет ширину конкретной карты плиток, и если она не соответствует размеру, то ширина устанавливается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_mask.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_mask.htm index e19cb703e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_mask.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_mask.htm @@ -1,107 +0,0 @@ - - - - - - tilemap_set_mask - - - - - - - - - - -

tilemap_set_mask

-

Эта функция может быть использована для установки битовой маски плитки для одной карты плитки. Вы передаете ID элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), а затем значение маски. Идея заключается в том, что если у вас, например, довольно маленький набор плиток 16 x 16, то у вас есть в общей сложности 256 различных плиток в вашем наборе плиток, что использует только 8 бит вашего индекса в "блоке" данных плитки (из доступных 19 бит данных). Эти биты могут быть "замаскированы", а оставшаяся часть данных плитки может быть использована для хранения дополнительных значений.

-

Простой способ получить начальное значение индекса маски - взять количество плиток в наборе плиток и вычесть 1, так что набор плиток 16x16 имеет 256 плиток и значение маски 255 (или $ff в шестнадцатеричной системе), а если набор плиток имеет количество плиток, которое не является степенью двойки, то округлите до ближайшей степени двойки, чтобы получить маску, например, набор плиток размером 20x20 имеет 400 плиток, которые вы округлите до 512, и таким образом получите индексное значение маски 511 ($1ff в шестнадцатеричной системе). Кроме индексной маски, обычно требуется сохранить значения флипа, поворота и зеркального отображения, присвоенные плитке, поэтому для этого можно использовать несколько констант. Они могут быть "или" вместе со значением индексной маски, чтобы сохранить эти биты данных. Можно использовать следующие константы (использование см. в примере кода ниже):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Маска плитки Постоянная
ПостояннаяОписание
tile_rotateИспользуется для установки/получения бита поворота блока данных плитки.
tile_mirrorИспользуется для установки/получения зеркального бита блока данных плитки.
tile_flipИспользуется для установки/получения флип-бита блока данных плитки.
tile_index_maskСпециальная константа, которая используется для "и"-соединения с блобом данных плитки для извлечения индекса плитки.
-

Маскировка битов карты тайлов является расширенной функцией и позволяет использовать биты "блоба" данных тайлов для собственных нужд. Например, пользователь может зарезервировать бит для обозначения "solid" в структуре данных тайла, а затем проверить его на наличие быстрых столкновений. По сути, битовая маска "и" накладывается на данные тайлов при рисовании карты тайлов (поэтому она не влияет на другие функции), то есть биты, не входящие в маску, игнорируются, но пользователь может читать и записывать их для своих целей. Обратите внимание, что существует две разные маски - глобальная и для каждой карты тайлов - и перед тем, как использовать их для рисования, GameMaker выполняет внутреннее сложение "и".

-

-

Синтаксис:

-

tilemap_set_mask(tilemap_element_id, mask)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idИдентификатор элемента карты плиткиThe unique ID value of the tile map element to set the mask of
maskРеальноThe mask value
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- var mask = tile_mirror | tile_flip | tile_rotate | 255;
- tilemap_set_mask(map_id, mask);

-

Приведенный выше код получает идентификатор карты плиток из данного слоя, а затем устанавливает битовую маску карты плиток в 8 бит, сохраняя значения flip, mirror и rotate для каждой плитки в карте.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_width.htm index 2b3723746..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_set_width.htm @@ -1,72 +0,0 @@ - - - - - - tilemap_set_width - - - - - - - - - - -

tilemap_set_width

-

Эта функция может использоваться для изменения размера элемента карты плиток. Вы передаете идентификатор элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), и новую ширину карты плитки в ячейках плитки.

-

-

Синтаксис:

-

tilemap_set_width(tilemap_element_id, width)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idИдентификатор элемента карты плиткиThe unique ID value of the tile map element to set the width of
widthРеальноThe width value (in "cells")
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_Walls");
- var map_id = layer_tilemap_get_id(lay_id);
- if (tilemap_get_width(map_id) != room_width div 16)
- {
-     tilemap_set_width(map_id, room_width div 16);
- }

-

Приведенный выше код проверяет ширину конкретной карты плиток, и если она не соответствует размеру, то ширина устанавливается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_tileset.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_tileset.htm index 50c9c173d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_tileset.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_tileset.htm @@ -1,72 +0,0 @@ - - - - - - tilemap_tileset - - - - - - - - - - -

tilemap_tileset

-

С помощью этой функции можно изменить актив набора плиток, назначенный данному элементу карты плиток на слое. Вы указываете идентификатор элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), а затем укажите индекс набора плиток, и карте плиток будет присвоен новый актив sprite.

-

-

Синтаксис:

-

tilemap_tileset(tilemap_element_id, tileset_index)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idИдентификатор элемента карты плиткиThe unique ID value of the tile map element to change
tileset_indexАктивы набора плитокThe new tile set index to use
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_trees");
- var tile_id = layer_tilemap_get_id(lay_id);
- if (tilemap_get_tileset(tile_id) != ts_Nighttime)
- {
-     tilemap_tileset(tile_id, ts_Nighttime);
- }

-

Приведенный выше код проверяет текущий набор плиток, назначенный карте плиток на слое "Tiles_trees", и если он не "ts_Nighttime", то этот набор плиток назначается карте плиток.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_x.htm index c5f4336ce..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_x.htm @@ -1,69 +0,0 @@ - - - - - - tilemap_x - - - - - - - - - - -

tilemap_x

-

Эта функция управляет положением по оси x комнаты элемента карты плитки актива на слое. Вы задаете идентификатор элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), а затем задаете значение x, которое необходимо использовать (на основе координат помещения).

-

-

Синтаксис:

-

tilemap_x(tilemap_element_id, x);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idИдентификатор элемента карты плиткиThe unique ID value of the tile map element to change
xРеальноThe x position for the tile map
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Asset_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- tilemap_x(map_id, irandom(room_width));

-

Приведенный выше код получает значение ID актива карты плитки, назначенного слою "Asset_sky", а затем устанавливает его x-позицию в случайное значение между 0 и шириной комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_y.htm index b0950725a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/Tile_Map_Layers/tilemap_y.htm @@ -1,69 +0,0 @@ - - - - - - tilemap_y - - - - - - - - - - -

tilemap_y

-

Эта функция управляет положением по оси y комнаты элемента карты плитки актива на слое. Вы задаете идентификатор элемента карты плитки (который вы получаете при создании элемента карты плитки с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), а затем задаете значение y, которое необходимо использовать (на основе координат помещения).

-

-

Синтаксис:

-

tilemap_y(tilemap_element_id, y);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idИдентификатор элемента карты плиткиThe unique ID value of the tile map element to change
yРеальноThe y position for the tile map
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Asset_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- tilemap_y(map_id, irandom(room_height));

-

Приведенный выше код получает значение ID актива карты плиток, назначенного слою "Asset_sky", а затем устанавливает его позицию y на случайное значение между 0 и высотой комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room.htm index cb0a0a587..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room.htm @@ -1,51 +0,0 @@ - - - - - - room - - - - - - - - - - -

room

-

Эта переменная содержит индекс комнаты для текущей комнаты, в которой запущена ваша игра. Это не переменная, доступная только для чтения, однако ее изменение не изменит значение индекса текущей комнаты, а скорее изменит комнату в соответствии с индексом, который вы установили в переменной. При этом следует соблюдать осторожность, так как если индекс, на который вы измените переменную, не соответствует действительности, игра выдаст ошибку и закроется. В целом, гораздо лучше использовать room_goto() для смены комнат.

-

Примечание: Идентификаторы помещений не основаны на их порядке в браузере активов или менеджере помещений, поэтому вам не следует напрямую указывать числовое значение. Вместо этого используйте константу комнаты для актива, на который вы хотите сослаться (это просто его имя), или получите его через функцию.

-

Синтаксис:

-

room

-

-

Возвращается:

-

Room Asset

-

-

Пример:

-

if (room == rm_level1)
- {
-     audio_play_sound(snd_level1, 1, 1);
- }

-

Приведенный выше код проверит, является ли текущая комната первым уровнем, и в этом случае воспроизведет музыку этого уровня.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_add.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_add.htm index 959b13303..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_add.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_add.htm @@ -1,52 +0,0 @@ - - - - - - room_add - - - - - - - - - - -

room_add

-

Эта функция создаст новую, пустую комнату и добавит ее в игру, возвращая ее индекс, который будет храниться в переменной для всех последующих кодов, имеющих дело с этой комнатой. Обратите внимание, что каждая комната постоянно добавляется в игру до тех пор, пока исполняемый файл не будет закрыт, т.е. комнаты, добавленные с помощью кода, не могут быть удалены снова. Это имеет важные последствия для использования памяти, поэтому использовать эту функцию следует с осторожностью.

-

ПРИМЕЧАНИЕ: Новые комнаты не являются частью обычного порядка комнат, поэтому у них нет "предыдущей" или "следующей" комнаты (это означает, что функции room_next() и room_previous() не будут работать). Чтобы перейти из добавленной комнаты в другую, необходимо использовать индекс самой комнаты.

-

-

Синтаксис:

-

room_add();

-

-

Возвращается:

-

Room Asset

-

-

Пример:

-

global.myroom = room_add();
- room_set_width(global.myroom, 640);
- room_set_height(global.myroom, 480);
- room_set_persistent(global.myroom, false);

-

Это создаст новую комнату и сохранит ее индекс в переменной "global.myroom". Затем она установит ширину 640 пикселей, высоту 480 пикселей и постоянство false.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_assign.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_assign.htm index b22fe7914..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_assign.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_assign.htm @@ -1,69 +0,0 @@ - - - - - - room_assign - - - - - - - - - - - -

room_assign

-

Эта функция копирует одну комнату в другую, удаляя все экземпляры, плитки и т.д. из комнаты, в которую копируется, и полностью заменяя их содержимым новой комнаты. Вы указываете индекс комнаты, в которую нужно скопировать (либо определенный в обозревателе активов, либо возвращаемый функцией room_add()), а также индекс исходной комнаты. Обратите внимание, что вызов этой функции на активе комнаты, созданном в браузере активов , навсегда изменит содержимое комнаты, и даже вызов game_restart() не вернет комнату в исходное состояние (только завершение игры и ее повторное открытие приведет к тому, что комната снова окажется в исходном состоянии).

-

-

Синтаксис:

-

room_assign(ind, source);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indКомнатный активThe index of the room to be copied to.
sourceКомнатный активThe index of the room to be copied from.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

global.rm = room_add();
- room_assign(global.rm, rm_Base);

-

Приведенный выше код добавит в игру новую комнату, а затем скопирует в нее содержимое комнаты, проиндексированной как "rm_Base".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_duplicate.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_duplicate.htm index cc67f21c9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_duplicate.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_duplicate.htm @@ -1,61 +0,0 @@ - - - - - - room_duplicate - - - - - - - - - - -

room_duplicate

-

Это дублирует заданную комнату и возвращает индекс дубликатов, который будет использоваться во всех дальнейших вызовах для ссылки на новую комнату.

-

ПРИМЕЧАНИЕ: Новые комнаты не являются частью обычного порядка комнат, поэтому у них нет "предыдущей" или "следующей" комнаты (это означает, что функции room_next() и room_previous() не будут работать). Чтобы перейти из добавленной комнаты в другую, необходимо использовать индекс самой комнаты.

-

-

Синтаксис:

-

room_duplicate(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the original room to be duplicated.
-

-

Возвращается:

-

Room Asset

-

-

Пример:

-

global.myroom = room_duplicate(rm_level);

-

Это приведет к дублированию комнаты с индексом "rm_level" и присвоению индекса комнаты этой новой комнаты переменной "global.myroom".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_exists.htm index 8f2a6b9e2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_exists.htm @@ -1,64 +0,0 @@ - - - - - - room_exists - - - - - - - - - - - -

room_exists

-

С помощью этой функции вы можете проверить, существует ли указанная вами комната или нет. Эта функция принимает индекс комнаты (вещественное число), а не имя комнаты (строка). Эта функция наиболее полезна при динамическом создании комнат с помощью функции room_add()но вы также можете использовать переменные, доступные только для чтения room_first и room_last или функции room_next() и room_previous() для получения определенного индекса комнаты, или предоставить переменную, в которой хранится индекс любой другой комнаты в вашей игре.

-

-

Синтаксис:

-

room_exists(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the room to check.
-

-

Возвращается:

-

-

-

Пример:

-

if room_exists(global.rm[0])
- {
-     room_goto(global.rm[0]);
- }

-

Приведенный выше код проверяет, существует ли комната, указанная в массиве "global.rm[]", и если существует, то переходит в эту комнату.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_first.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_first.htm index 1cdc9cf2c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_first.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_first.htm @@ -1,51 +0,0 @@ - - - - - - room_first - - - - - - - - - - -

room_first

-

Эта переменная, доступная только для чтения, возвращает индекс самой первой комнаты в игре (он определяется порядком появления комнат в менеджере комнат, а не порядком их создания).

-

-

Синтаксис:

-

room_first

-

-

Возвращается:

-

Room Asset

-

-

Пример:

-

if lives < 1
- {
-     room_goto(room_first);
- }

-

Приведенный выше код проверит переменную "lives" и, если она меньше 1, перейдет в первую комнату в игре.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_get_camera.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_get_camera.htm index d8a39e4a7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_get_camera.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_get_camera.htm @@ -1,72 +0,0 @@ - - - - - - room_get_camera - - - - - - - - - - - -

room_get_camera

-

С помощью этой функции вы можете получить уникальный индекс ID камеры, назначенной на определенный вид в комнате, отличной от текущей. Вы указываете комнату, которую нужно использовать, порт вида, который нужно использовать (от 0 до 7), и функция возвращает индекс камеры.

-

-

Синтаксис:

-

room_get_camera(rm, vind);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
rmКомнатный активThe index of the room to get the view camera of
vindРеальноThe index of the view port to get the camera of
-

-

Возвращается:

-

Camera ID

-

-

Пример:

-

var cam = room_get_camera(rm_Game, 0);
- if (cam != global.MainCam)
- {
-     room_set_camera(rm_game, 0, global.main_cam);
- }

-

Приведенный выше код назначает камеру во вновь созданной комнате на порт просмотра [0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_get_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_get_name.htm index f39b8cfe6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_get_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_get_name.htm @@ -1,64 +0,0 @@ - - - - - - room_get_name - - - - - - - - - - - -

room_get_name

-

Эта функция может быть использована для возврата названия указанной комнаты в виде строки. Обратите внимание, что это только строка, и ее нельзя использовать для прямой ссылки на комнату - для этого вам понадобится индекс комнаты. Однако вы можете использовать эту строку для получения индекса комнаты, используя возвращенную строку вместе с функцией asset_get_index().

-

-

Синтаксис:

-

room_get_name(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the room to check the name of.
-

-

Возвращается:

-

-

-

Пример:

-

var roomname = room_get_name(room);
-
- draw_text(32, 32, roomname); -

-

Приведенный выше код получит название текущей комнаты и нарисует его на экране.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_get_viewport.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_get_viewport.htm index 2e2f0a66b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_get_viewport.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_get_viewport.htm @@ -1,81 +0,0 @@ - - - - - - room_get_viewport - - - - - - - - - - - -

room_get_viewport

-

С помощью этой функции вы можете получить информацию о видовом порте в комнате, отличной от текущей. Вы указываете ID комнаты и индекс порта просмотра, который необходимо получить (от 0 до 7), и функция возвращает массив из 5 индексов, где:

-
    -
  • [0] = видимый (булево: true / false)
  • -
  • [1] = положение x (реальное)
  • -
  • [2] = положение y (реальное)
  • -
  • [3] = ширина (реальная)
  • -
  • [4] = высота (реальная)
  • -
-

-

Синтаксис:

-

room_get_viewport(rm, vind);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
rmКомнатный активThe index of the room to get viewport data from
vindРеальноThe index of the view port to get
-

-

Возвращается:

-

Array (5 elements: visible, x, y, width, height)

-

-

Пример:

-

v_vals = room_get_viewport(rm_Game, 0);
-
- if v_vals[0] == false
- {
-     room_set_view(rm_Game, true, v_vals[1], v_vals[2], v_vals[3], v_vals[4]);
- } -

-

Приведенный выше код извлекает данные порта просмотра для заданной комнаты, затем проверяет, отмечен ли порт как видимый. Если нет, данные порта вида устанавливаются, чтобы сделать его видимым.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_goto.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_goto.htm index a328d7476..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_goto.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_goto.htm @@ -1,66 +0,0 @@ - - - - - - room_goto - - - - - - - - - - -

room_goto

-

Эта функция позволяет перейти к любой комнате в вашем игровом проекте, созданной с помощью кода или в Asset Browser. Вы передаете индекс комнаты (хранится в переменной для имени комнаты или как переменная, возвращаемая функцией room_add()). Обратите внимание, что комната не изменится до конца события, в котором была вызвана функция, поэтому любой код после ее вызова будет выполняться в том же событии. Эта функция также вызовет событие Room End.

-
-

ПРИМЕЧАНИЕ Идентификаторы помещений не основаны на их порядке в браузере активов или менеджере помещений, поэтому вам не следует напрямую указывать числовое значение. Вместо этого используйте константу помещения для актива, на который вы хотите сослаться (это просто его имя), или получите его через функцию.

-

Синтаксис:

-

room_goto(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the room to go to.
-

-

Возвращается:

-

-

-

Пример:

-

switch (global.level)
- {
-     case 0: room_goto(rm_level1); break;
-     case 1: room_goto(rm_level2); break;
-     case 2: room_goto(rm_level3); break;
- }

-

Приведенный выше код проверит глобальную переменную и изменит комнату в зависимости от значения, которое она содержит.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_goto_next.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_goto_next.htm index 6d9306c9c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_goto_next.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_goto_next.htm @@ -1,52 +0,0 @@ - - - - - - room_goto_next - - - - - - - - - - -

room_goto_next

-

С помощью этой функции вы можете заставить вашу игру перейти в следующую комнату, указанную в Менеджере комнат на момент компиляции игры. Если такой комнаты не существует, будет выдана ошибка, и игра будет принудительно закрыта. Обратите внимание, что комната не изменится до конца события, в котором была вызвана функция, поэтому любой код после ее вызова будет выполняться, если он находится в том же событии.

-
-

-

Синтаксис:

-

room_goto_next();

-

-

Возвращается:

-

-

-

Пример:

-

if room_exists(room_next(room))
- {
-     room_goto_next();
- }

-

Приведенный выше код проверит, есть ли еще одна комната после текущей, и если да, то перейдет в эту комнату.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_goto_previous.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_goto_previous.htm index 2148d3b16..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_goto_previous.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_goto_previous.htm @@ -1,52 +0,0 @@ - - - - - - room_goto_previous - - - - - - - - - - -

room_goto_previous

-

С помощью этой функции вы можете заставить вашу игру перейти в предыдущую комнату, указанную в Менеджере комнат на момент компиляции игры. Если такой комнаты не существует, будет выдана ошибка, и игра будет принудительно закрыта. Обратите внимание, что комната не изменится до конца события, в котором была вызвана эта функция, поэтому любой код после ее вызова будет выполняться, если он находится в том же событии. Эта функция также вызовет событие Room End.

-
-

-

Синтаксис:

-

room_goto_previous();

-

-

Возвращается:

-

-

-

Пример:

-

if room_exists(room_previous(room))
- {
-     room_goto_previous();
- }

-

Приведенный выше код проверит, есть ли другая комната перед текущей, и если да, то перейдет в эту комнату.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_height.htm index b168e3fc8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_height.htm @@ -1,51 +0,0 @@ - - - - - - room_height - - - - - - - - - - -

room_height

-

В этой переменной хранится высота текущей комнаты в пикселях. Вы можете изменить эту переменную, чтобы изменить высоту комнаты в любое время, и изменения будут применены к нижней части комнаты, так как началом отсчета считается левый верхний угол. Так, например, если высота комнаты составляет 480px, а вы установили значение 640px, комната будет расширена вниз с добавлением дополнительных 180px в нижней части.

-

-

Синтаксис:

-

room_height

-

-

Возвращается:

-

-

-

Пример:

-

if bbox_bottom > room_height
- {
-     y += room_height - bbox_bottom;
- }

-

Вышеприведенный код проверяет, не превышает ли граница текущего экземпляра sprite высоту комнаты, и если да, то перемещает экземпляр вверх.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_instance_add.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_instance_add.htm index 08897e02c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_instance_add.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_instance_add.htm @@ -1,75 +0,0 @@ - - - - - - room_instance_add - - - - - - - - - - - -

room_instance_add

-

С помощью этой функции вы можете добавить экземпляр в любую комнату, кроме текущей, и в любую позицию внутри этой комнаты. Функция возвращает уникальный id экземпляра, который затем может быть использован в дальнейших вызовах функций для установки свойств и т.д... этого экземпляра, но только после того, как игра войдет в указанную комнату. Если вы хотите создать экземпляр в текущей комнате, вы должны использовать функцию instance_create_layer(). Обратите внимание, что вызов этой функции на активе комнаты, созданном в браузере активов, навсегда добавит экземпляр в комнату, и даже вызов game_restart() не вернет комнату в исходное состояние (только завершение игры и ее повторное открытие приведет к тому, что комната снова окажется в исходном состоянии).

-

-

Синтаксис:

-

room_instance_add(index, x, y, obj);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the room to add an object instance to.
xThe x position of the new instance.
yThe y position of the new instance.
objThe object to add an instance of.
-

-

Возвращается:

-

Instance ID

-

-

Пример:

-

global.rm = room_add();
- room_assign(rm_Base, global.rm);
- room_instance_add(global.rm, 100, 100, obj_Player);

-

Приведенный выше код добавит в игру новую комнату, а затем скопирует в нее содержимое комнаты, проиндексированной как "rm_Base". Затем он добавит экземпляр объекта "obj_player" в позицию 100,100 этой новой комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_instance_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_instance_clear.htm index 2128a7169..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_instance_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_instance_clear.htm @@ -1,63 +0,0 @@ - - - - - - room_instance_clear - - - - - - - - - - - -

room_instance_clear

-

Эта функция очистит комнату от всех экземпляров (для удаляемых экземпляров не должны вызываться события уничтожения). Обратите внимание, что вызов этой функции на активе комнаты, созданном в браузере активов, навсегда очистит комнату от экземпляров, - и даже вызов game_restart() не вернет комнату в исходное состояние (только завершение игры и ее повторное открытие вернет комнату в исходное состояние).

-

-

Синтаксис:

-

room_instance_clear(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the room to clear all instances in.
-

-

Возвращается:

-

-

-

Пример:

-

global.rm = room_add();
room_assign(rm_Base, global.rm);
room_instance_clear(global.rm); -

-

Приведенный выше код добавит в игру новую комнату, а затем скопирует в нее содержимое комнаты, проиндексированной как "rm_Base". Затем он очистит все экземпляры из этой новой комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_last.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_last.htm index bdb1478a8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_last.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_last.htm @@ -1,51 +0,0 @@ - - - - - - room_last - - - - - - - - - - -

room_last

-

Эта переменная, доступная только для чтения, возвращает индекс самой последней комнаты в игре (он определяется порядком появления комнат в Менеджере комнат, а не порядком их создания). Обратите внимание, что эта переменная не распознает и не учитывает комнаты, которые были добавлены динамически с помощью room_add() или room_duplicate().

-

-

Синтаксис:

-

room_last

-

-

Возвращается:

-

Room Asset

-

-

Пример:

-

if keyboard_check_pressed(ord("Q"))
- {
-     room_goto(room_last);
- }

-

Приведенный выше код проверяет, была ли нажата клавиша, и если да, то переходит в последнюю комнату в игре.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_next.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_next.htm index 9846214c1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_next.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_next.htm @@ -1,62 +0,0 @@ - - - - - - room_next - - - - - - - - - - -

room_next

-

С помощью этой функции вы можете получить индекс комнаты после ввода комнаты в функцию. Например, вы можете использовать переменную room для получения индекса текущей комнаты, а затем использовать эту функцию для поиска комнаты, следующей за ней в списке Room Manager. Если после введенной вами комнаты нет комнаты, то возвращается -1. Обратите внимание, что эта функция не распознает и не учитывает комнаты, которые были добавлены динамически с помощью room_add() или room_duplicate().

-

-

Синтаксис:

-

room_next(numb);

- - - - - - - - - - - -
АргументТипОписание
numbThe index of the room to get the next one after.
-

-

Возвращается:

-

Room Asset

-

-

Пример:

-

if room_next(room) != -1
- {
-     room_goto_next();
- }

-

Приведенный выше код проверит, существует ли следующая комната, и если да, то перейдет в нее.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_persistent.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_persistent.htm index ac0bc572d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_persistent.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_persistent.htm @@ -1,52 +0,0 @@ - - - - - - room_persistent - - - - - - - - - - -

room_persistent

-

Эта переменная может быть использована для получения и установки флага постоянства для текущей комнаты. Если установлено значение true, комната считается постоянной, в этом случае каждый раз, когда вы покидаете комнату и возвращаетесь обратно, состояние экземпляров в этой комнате будет сохраняться. Однако если комната отмечена как false, то каждый раз, когда вы возвращаетесь в комнату, она будет возвращаться в исходное состояние. Следует отметить, что постоянная комната использует значительно больше памяти, чем обычная комната, поэтому не рекомендуется иметь их в игре слишком много.

-

-

Синтаксис:

-

room_persistent

-

-

Возвращается:

-

-

-

Пример:

-

if lives < 1
- {
-     room_persistent = false;
-     room_goto(rm_start);
- }

-

Приведенный выше код проверяет переменную "lives", и если она меньше 1, то устанавливает постоянство комнаты на false, а затем меняет комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_previous.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_previous.htm index 7e5238aea..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_previous.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_previous.htm @@ -1,63 +0,0 @@ - - - - - - room_previous - - - - - - - - - - -

room_previous

-

С помощью этой функции вы можете получить индекс комнаты до ввода комнаты в функцию. Например, вы можете использовать переменную room для получения индекса текущей комнаты, а затем использовать эту функцию для поиска комнаты, которая находится перед ней в списке Room Manager. Если перед введенной вами комнатой нет комнаты, то возвращается -1. Обратите внимание, что эта функция не распознает и не учитывает комнаты, которые были добавлены динамически с помощью room_add() или room_duplicate().

-

-

Синтаксис:

-

room_previous(numb);

- - - - - - - - - - - -
АргументТипОписание
numbThe index of the room to get the one before from.
-

-

Возвращается:

-

Room Asset

-

-

Пример:

-

if room_previous(room) != -1
- {
-     room_goto_previous();
- }

-

Приведенный выше код проверит, существует ли предыдущая комната, и если да, то перейдет в нее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_restart.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_restart.htm index 8104dade5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_restart.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_restart.htm @@ -1,49 +0,0 @@ - - - - - - room_restart - - - - - - - - - - -

room_restart

-

Эта функция перезапустит текущую комнату, как если бы в нее только что вошли. Обратите внимание, что комната не перезапустится до конца события, в котором была вызвана функция, поэтому любой код после ее вызова будет выполняться в том же событии. Эта функция также вызовет событие Room End.

-
-

-

Синтаксис:

-

room_restart();

-

-

Возвращается:

-

-

-

Пример:

-

if lives < 1 room_restart();

-

Приведенный выше код проверяет, меньше ли переменная "lives" 1, и если да, то перезапускает комнату.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_camera.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_camera.htm index 540045f2c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_camera.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_camera.htm @@ -1,73 +0,0 @@ - - - - - - room_set_camera - - - - - - - - - - -

room_set_camera

-

С помощью этой функции вы можете назначить камеру на определенный видовой экран в помещении, отличном от текущего. Вы вводите индекс помещения, индекс вида (от 0 до 7), а затем индекс камеры, которую нужно использовать.

-

-

Синтаксис:

-

room_set_camera(rm, vind, camera);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
rmКомнатный активThe index of the room to set the view camera of
vindРеальноThe index of the view port to assign the camera to
cameraИдентификатор камерыThe index of the camera to assign
-

-

Возвращается:

-

N/A

-

-

Пример:

-

global.myroom = room_add();
- room_set_camera(global.myroom, 0, global.MainCam);

-

Приведенный выше код назначает камеру во вновь созданной комнате на порт просмотра [0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_height.htm index b300a1bca..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_height.htm @@ -1,70 +0,0 @@ - - - - - - room_set_height - - - - - - - - - - -

room_set_height

-

С помощью этой функции вы можете изменить (или установить) высоту любой комнаты в вашей игре, кроме текущей.

-

-

Синтаксис:

-

room_set_height(index, h);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexКомнатный активThe index of the room to set the height of.
hРеальноThe new height of the room in pixels.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

global.myroom = room_add();
- room_set_width(global.myroom, 640);
- room_set_height(global.myroom, 480);
- room_set_persistent(global.myroom, false);

-

Это создаст новую комнату и сохранит ее индекс в переменной "global.myroom". Затем она установит ее ширину 640 пикселей, высоту 480 пикселей, надпись 'Game Room' и постоянство 'false'.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_persistent.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_persistent.htm index c58fee3f5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_persistent.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_persistent.htm @@ -1,71 +0,0 @@ - - - - - - room_set_persistent - - - - - - - - - - -

room_set_persistent

-

С помощью этой функции вы можете изменить (или установить) постоянство любой комнаты в вашей игре, кроме текущей. Комната с постоянством, отмеченная как true, будет сохранять состояние всех экземпляров внутри этой комнаты, если игрок покинет ее, а затем вернется, тогда как если постоянство отмечено как false, она будет каждый раз сбрасываться в исходное состояние. Следует отметить, что постоянная комната использует значительно больше памяти, чем обычная комната, поэтому не рекомендуется иметь их слишком много в игре.

-

ПРИМЕЧАНИЕ: Эта функция НЕ работает для отключения постоянства, если комната уже была посещена! Постоянная комната, после посещения, хранится в памяти, и чтобы отключить постоянство, вы должны зайти в эту комнату и установить переменную room_persistent false , а затем снова выйти из комнаты.

-

-

Синтаксис:

-

room_set_persistent(index, val);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexКомнатный активThe index of the room to set the persistence of.
valБулевоWhether the room should be persistent (true) или нет (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

global.myroom = room_add();
- room_set_width(global.myroom, 640);
- room_set_height(global.myroom, 480);
- room_set_persistent(global.myroom, true);

-

Это создаст новую комнату и сохранит ее индекс в переменной "global.myroom". Затем она установит ее ширину 640 пикселей, высоту 480 пикселей, надпись 'Game Room' и постоянство 'true'.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_view_enabled.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_view_enabled.htm index c99001730..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_view_enabled.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_view_enabled.htm @@ -1,68 +0,0 @@ - - - - - - room_set_view_enabled - - - - - - - - - - -

room_set_view_enabled

-

С помощью этой функции вы можете включить (true) или выключить (false) просмотр любой комнаты в вашей игре, кроме текущей.

-

-

Синтаксис:

-

room_set_view_enabled(index, val);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexКомнатный активThe index of the room to set.
valБулевоWhether to enable (true) или отключить (false) просмотр в данной комнате.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

global.myroom = room_add();
- room_set_view_enabled(global.myroom, true);

-

Это позволит включить просмотры в комнате, проиндексированной в "global.myroom".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_viewport.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_viewport.htm index 8cd39a2ac..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_viewport.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_viewport.htm @@ -1,95 +0,0 @@ - - - - - - room_set_viewport - - - - - - - - - - -

room_set_viewport

-

С помощью этой функции вы можете установить свойства порта вида для любой комнаты в вашей игре, кроме текущей. Вы указываете индекс комнаты, в которой нужно установить порт вида, индекс порта вида (от 0 до 7), а затем - должен ли порт вида быть видимым в начале комнаты или нет (установите значение true, чтобы порт был видимым, и false в противном случае). После этого задаются координаты x и y (соответствующие верхнему левому положению порта просмотра), а затем ширина и высота в пикселях.

-

-

Синтаксис:

-

room_set_viewport(rm, vind, vis, xport, yport, wport, hport);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
rmКомнатный активThe index of the room to set
vindРеальноThe index of the view port to set
visБулевоThe visibility of the view port (true виден, false - невидим)
xportРеальноThe x position for the view port in the room
yportРеальноThe y position of the view port in the room
wportРеальноThe width (in pixels) of the view port
hportРеальноThe height (in pixels) of the view port
-

-

Возвращается:

-

N/A

-

-

Пример:

-

global.myroom = room_add();
- room_set_width(global.myroom, 640);
- room_set_height(global.myroom, 480);
- room_set_viewport(global.myroom, 0, true, 0, 0, 640, 480);

-

Это установит свойства порта просмотра [0] в комнате, проиндексированной в переменной "global.myroom".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_width.htm index 04237eeb9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_set_width.htm @@ -1,70 +0,0 @@ - - - - - - room_set_width - - - - - - - - - - -

room_set_width

-

С помощью этой функции вы можете изменить (или установить) ширину любой комнаты в вашей игре, кроме текущей.

-

-

Синтаксис:

-

room_set_width(index, w);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexКомнатный активThe index of the room to set the width of.
wРеальноThe new width of the room in pixels.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

global.myroom = room_add();
- room_set_width(global.myroom, 640);
- room_set_height(global.myroom, 480);
- room_set_persistent(global.myroom, false);

-

Это создаст новую комнату и сохранит ее индекс в переменной "global.myroom". Затем она установит ее ширину 640 пикселей, высоту 480 пикселей, надпись 'Game Room' и постоянство 'false'.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_speed.htm index 52543e608..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_speed.htm @@ -1,50 +0,0 @@ - - - - - - room_speed - - - - - - - - - - -

room_speed

-

В этой переменной хранится скорость бега всех комнат (и игры) в игровых кадрах в секунду. Обратите внимание, что это НЕ FPS (кадры в секунду), а скорее количество игровых шагов, которые GameMaker будет пытаться поддерживать каждую - секунду.

-

ВАЖНО! Эта переменная поддерживается только для Legacy Support и не должна использоваться, так как она больше не устанавливает скорость для одной комнаты, а для ВСЕХ комнат в игре. Для изменения скорости игры вместо этого следует использовать функцию game_set_speed().

-

-

Синтаксис:

-

room_speed

-

-

Возвращается:

-

-

-

Пример:

-

alarm[0] = room_speed * 10;

-

В приведенном выше коде используется room_speed для установки сигнала тревоги на 10 секунд. Использование переменной таким образом гарантирует, что сигнализация будет работать в течение 10 секунд, независимо от того, какая скорость установлена для комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_width.htm index a73c9063e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Rooms/room_width.htm @@ -1,51 +0,0 @@ - - - - - - room_width - - - - - - - - - - -

room_width

-

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

-

-

Синтаксис:

-

room_width

-

-

Возвращается:

-

-

-

Пример:

-

if bbox_right > room_width
- {
-     x += room_width - bbox_right;
- }

-

Приведенный выше код проверяет, не превышает ли граница текущего экземпляра sprite ширину комнаты, и если да, то перемещает экземпляр вверх.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/Scripts.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/Scripts.htm index 48096d88b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/Scripts.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/Scripts.htm @@ -1,44 +0,0 @@ - - - - - - Скрипты - - - - - - - - - - -

Скрипты

-

Следующие функции используются для проверки и запуска сценариев, написанных в редакторе сценариев:

- -
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/script_execute.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/script_execute.htm index ddc7ebb20..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/script_execute.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/script_execute.htm @@ -1,73 +0,0 @@ - - - - - - script_execute - - - - - - - - - - -

script_execute

-

Эта функция изначально была разработана для динамического вызова активов сценария, но с введением пользовательских функций ее теперь можно использовать двумя способами:

-
    -
  • Первый способ - это поддержка унаследованных скриптов, когда каждый скрипт представлял собой отдельную функцию, а название скрипта было также названием функции. Используемый таким образом, он будет работать, как и раньше, и будет запускать созданный пользователем актив скрипта и передавать в него заданные аргументы. Обратите внимание, что в данном случае вызывается не скрипт, а одноименная функция внутри скрипта.
  • -
  • Второй способ - вызвать функцию из актива сценария, содержащего несколько функций. В этом случае нужно указать имя функции и аргументы, которые она требует, а не имя актива сценария. Обратите внимание, что это работает только для функций сценария, но не для методов, поскольку только функции сценария имеют присвоенный им идентификатор сценария.
  • -
-

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

-

ПРИМЕЧАНИЕ Эту функцию нельзя использовать со встроенными функциями.

-

-

Синтаксис:

-

script_execute(scr, arg0, arg1, arg2..., etc...);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
scrАктив сценария или Функция сценарияThe function/script that you want to call
arg0, arg1, arg2..., etc...ПеременнаяThe different arguments that you want to pass through to the function/script
-

-

Возвращается:

-

Variable (Will depend on the return value from the script/function being called)

-

-

Пример:

-

script_execute(choose(move_up, move_down, move_left, move_right), irandom(5));

-

Приведенный выше пример кода будет использовать script_execute для выбора одной из четырех определенных пользователем функций (в данном случае связанных с движением) и передавать ей случайное целое число в качестве первого аргумента.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/script_execute_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/script_execute_ext.htm index de06abf64..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/script_execute_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/script_execute_ext.htm @@ -1,78 +0,0 @@ - - - - - - script_execute_ext - - - - - - - - - - -

script_execute_ext

-

Эта функция работает аналогично функции script_execute(), только вы можете предоставить массив, содержащий аргументы, необходимые для вызываемой функции/скрипта. Вы также можете передать функции два необязательных аргумента, чтобы указать смещение в массиве для получения аргументов, а также количество аргументов из массива (оно должно быть максимум равно array_length - offset).

-

-

Синтаксис:

-

script_execute_ext(scr, array_args, [offset], [num_args]);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
scrАссет сценария или функция сценарияThe function/script that you want to call
array_argsМассивThe array containing the arguments for the function/script
[offset]РеальноOPTIONAL Смещение в массиве аргументов
[num_args]РеальноOPTIONAL Количество аргументов для использования (начиная со смещения и далее)
-

-

Возвращается:

-

Variable (Will depend on the return value from the function/script being called)

-

-

Пример:

-

script_execute_ext(move_inst, move_array, floor(random(4)), 1);

-

Приведенный выше код примера будет использовать script_execute_ext для вызова заданной функции, предоставляя массив из четырех аргументов, но используя только один из них случайным образом.

-

ПРИМЕЧАНИЕ Эту функцию нельзя использовать со встроенными функциями.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/script_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/script_exists.htm index db5048a80..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/script_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/script_exists.htm @@ -1,70 +0,0 @@ - - - - - - script_exists - - - - - - - - - - - -

script_exists

-

Эта функция вернет true или false в зависимости от того, существует ли скрипт или скрипт-функция с заданным индексом. Обратите внимание, что это не строка, а имя актива, содержащее уникальный индекс для каждого скрипта (как он будет отображаться в IDE) или именованной функции скрипта, как определено в активе скрипта (обратите внимание, что это не будет работать для переменных метода). Для получения дополнительной информации о скриптах см. раздел Редактор скриптов.

-

-

Синтаксис:

-

script_exists(scr);

- - - - - - - - - - - - - -
АргументТипОписание
scrScript AssetThe script index that you want to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

script[0] = -1;
- script[1] = AI_Left;
- script[2] = AI_Right;
- var script_num = choose(0, 1, 2);
- if script_exists(script[script_num])
- {
-     script_execute(script[script_num]);
- }

-

Приведенный выше пример добавляет две функции сценария и значение в массив, затем получает случайное число и использует его для выбора функции сценария для запуска, если не выбрано значение -1, в этом случае ничего не произойдет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/script_get_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/script_get_name.htm index 6c9743896..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/script_get_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Scripts/script_get_name.htm @@ -1,63 +0,0 @@ - - - - - - script_get_name - - - - - - - - - - - -

script_get_name

-

Эта функция возвращает имя в виде строки указанного скрипта. Это имя - то, которое было указано для скрипта в Asset Browser главного окна GameMaker. Для получения дополнительной информации о скриптах см. раздел Редактор скриптов.

-

-

Синтаксис:

-

script_get_name(scr);

- - - - - - - - - - - - - -
АргументТипОписание
scrАктив сценарияThe index of the script that you want to get the name of.
-

-

Возвращается:

-

String

-

-

Пример:

-

scr_name = script_get_name(Help_File);

-

Приведенный выше код примера будет хранить имя указанного индекса скрипта в переменной "scr_name".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Events_Moments_Broadcast.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Events_Moments_Broadcast.htm index 7629248c6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Events_Moments_Broadcast.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Events_Moments_Broadcast.htm @@ -1,149 +0,0 @@ - - - - - - Последовательность событий, моментов и широковещательных сообщений - - - - - - - - - - -

События, моменты и широковещательные сообщения

-

Помимо всех свойств, перечисленных здесь для структуры последовательности, у вас также есть возможность добавить в последовательность специальные свойства "действия". Существует три различных типа этих свойств "действия", которые могут быть добавлены к объекту последовательности - События. Моменты и Широковещательные сообщения - и каждое из них более подробно описано в следующих разделах.

-

Последовательность событий

-

К объектам последовательности могут быть добавлены события, которые аналогичны событиям, используемым объектами активов. События, которые вы назначаете объекту последовательности, будут происходить в определенном порядке, либо один раз в определенный момент жизненного цикла последовательности, либо каждый кадр, когда последовательность выполняется. В этом разделе мы обсудим, как эти события обрабатываются с помощью кода, но их также можно добавить с помощью редактора последовательностей. Обратите внимание, что порядок перечисленных здесь событий не зависит от направления движения головки воспроизведения, и даже если последовательность воспроизводится в обратном направлении, события все равно будут выполняться в указанном ниже порядке.

-

Доступными событиями являются:

-
    -
  • Create: срабатывает при создании экземпляра последовательности на слое.
  • -
  • Destroy: срабатывает, когда экземпляр последовательности на слое уничтожается.
  • -
  • Очистка: запускается, когда экземпляр последовательности собирается в мусор.
  • -
  • Шаг: срабатывает непосредственно перед обычным событием шага объекта. Важно! Если последовательность поставлена на паузу, то это событие не будет вызвано до следующего шага после начала воспроизведения последовательности.
  • -
  • Begin Step: срабатывает непосредственно перед событием начала шага объекта. Важно! Если последовательность поставлена на паузу, то это событие не будет вызвано до следующего шага после начала воспроизведения последовательности.
  • -
  • End Step: срабатывает непосредственно перед событием окончания шага объекта. Важно! Если последовательность поставлена на паузу, то это событие не будет вызвано до следующего шага после начала воспроизведения последовательности.
  • -
  • Async System: срабатывает так же, как и любой объект Обработчики событий асинхронной системы. Важно!Если последовательность приостановлена, то это событие не будет вызвано.
  • -
  • Широковещательное сообщение: срабатывает во время обновления последовательности при появлении ключевого кадра широковещательного сообщения.
  • -
-

Все события должны быть связаны с функциями, которые определены в сценарии, поэтому для установки события переменной метода должно быть присвоено свойство с правильным именем, которое указывает последовательности, какое событие должно вызвать функцию. Синтаксис для этого следующий:

-

<sequence_struct>.<event_property> = method(<sequence_struct>, <function_name>);

-

Последовательная структура свойств для различных событий выглядит следующим образом:

-
    -
  • event_create
  • -
  • event_destroy
  • -
  • event_clean_up
  • -
  • event_step
  • -
  • event_step_begin
  • -
  • event_step_end
  • -
  • event_async_system
  • -
  • event_broadcast_message
  • -
-

Чтобы привести пример использования, допустим, мы хотим, чтобы последовательность меняла направление при обнаружении щелчка левой кнопки мыши. Сначала нам нужно создать скрипт с функцией, которую мы хотим вызвать, примерно так:

-

/// @function seq_reverse();
-
- function seq_reverse()
- {
-     if (mouse_check_button_pressed(mb_left))
-     {
-         if (self.headDirection == seqdir_right)
-         {
-             self.headDirection = seqdir_left;
-         }
-         else self.headDirection = seqdir_right;
-     }
- } -

-

В этой функции все, что мы делаем, это слушаем нажатие кнопки мыши и затем меняем направление воспроизведения последовательности, к которой привязан метод. Вы заметите, что в настоящее время вы не можете передавать какие-либо параметры функциям, связанным с этими свойствами, и во всех случаях переменная self переменной в области видимости функции присваивается экземпляр последовательности.

-

ПРИМЕЧАНИЕ: Стоит отметить, что в приведенном выше сценарии идентификатор self может быть опущен и используется только для того, чтобы явно показать область видимости переменной метода, используемой в данном примере.

-

Чтобы присвоить это последовательности, сделайте следующее:

-

var _seq = sequence_get(Sequence1);
- _seq.event_step = method(_seq, seq_reverse);

-

Теперь мы назначили объекту последовательности событие step с функцией для обнаружения нажатия кнопки мыши и последующего изменения направления головки воспроизведения экземпляра последовательности после ее создания в комнате.

-

-

Момент последовательности - это уникальное действие кода, которое запускается на одном или нескольких определенных кадрах по мере воспроизведения последовательности. Эти моменты кода - как и события (о которых говорилось выше) - просто предопределенные переменные метода, которые срабатывают на данном кадре. Например, если вы хотите, чтобы последовательность создавала экземпляр "пули" на определенном кадре анимации, сначала вам нужно создать функцию, которая будет использоваться для этого действия, примерно так:

-

/// @function seq_shoot();
-
- seq_shoot = function()
- {
-     instance_create_layer(sequence.xorigin, sequence.yorigin, "Instances", obj_Bullet);
- } -

-

Затем вы добавите его в кадр в свойстве momentKeyframes структуры последовательности. По сути, это "специальная" дорожка, которая используется только для этой цели и поэтому может принимать только данные ключевых кадров, связанные с действиями момента, которые вы хотите выполнить в последовательности. Эта дорожка создается точно так же, как и любая другая, путем создания структур ключевых кадров и заполнения их данными ключевых кадров, где канал 0 - единственный канал, который вы можете использовать, а тип дорожки - seqtracktype_moment. Ниже приведен пример создания этой дорожки с использованием функции, которую мы определили выше, для запуска в заданные моменты (кадры):

-

var _seq = sequence_get(my_Seq);
- var _k = array_create(3);
- _k[0] = sequence_keyframe_new(seqtracktype_moment);
- _k[0].frame = 60;
- _k[1] = sequence_keyframe_new(seqtracktype_moment);
- _k[1].frame = 120;
- _k[2] = sequence_keyframe_new(seqtracktype_moment);
- _k[2].frame = 180;
- var _d = array_create(1);
- _d[0] = sequence_keyframedata_new(seqtracktype_moment);
- _d[0].channel = 0;
- _d[0].event = method(_d[0], seq_shoot);
- _k[0].channels = _d;
- _k[1].channels = _d;
- _k[2].channels = _d;
- _seq.momentKeyframes = _k;

-

Приведенный выше код просто установит кадры 60, 120 и 180 трека "момент" для вызова метода seq_shoot. Вы заметите, что в настоящее время вы не можете передавать никаких параметров функциям, которые используются для каждого момента, и во всех случаях переменная self в области видимости функции назначается как экземпляр последовательности (обычно вам не нужно использовать self, но в некоторых особых случаях это может быть полезно).

-

-

Последовательности могут генерировать широковещательные сообщения- простые строки, которые добавляются к определенным кадрам на временной шкале анимации, и когда эта точка временной шкалы будет достигнута, строка будет передана всем экземплярам объектов, которые ее слушают. Эти сообщения можно добавить на сайте IDE с помощью редактора последовательностей, но их также можно создавать и редактировать с помощью кода.

-

Чтобы создать широковещательные сообщения в последовательности с помощью GML, необходимо добавить их в кадр в свойстве messageEventKeyframes структуры последовательности. По сути, это "специальный" трек, который используется только для этой цели и поэтому может принимать только данные ключевых кадров, связанные с широковещательными сообщениями, которые вы хотите, чтобы были у последовательности. Эта дорожка создается точно так же, как и любая другая, путем создания структур ключевых кадров и заполнения их данными ключевых кадров, где канал 0 - единственный канал, который вы можете использовать, а тип дорожки - seqtracktype_message. Ниже приведен пример того, как это может быть создано:

-

var _seq = sequence_get(my_Seq);
- var _k = array_create(2);
- _k[0] = sequence_keyframe_new(seqtracktype_message);
- _k[0].frame = 60;
- _k[1] = sequence_keyframe_new(seqtracktype_message);
- _k[1].frame = 120;
- var _m1 = array_create(2);
- _m1[0] = "Hello";
- _m1[1] = "World";
- var _m2 = array_create(1);
- _m2[0] = "This is a Broadcast Message";
- var _d1 = array_create(1);
- _d1[0] = sequence_keyframedata_new(seqtracktype_message);
- _d1[0].channel = 0;
- _d1[0].events = _m1;
- var _d2 = array_create(1);
- _d2[0] = sequence_keyframedata_new(seqtracktype_message);
- _d2[0].channel = 0;
- _d2[0].events = _m2;
- _k[0].channels = _d1;
- _k[1].channels = _d2;
- _seq.messageEventKeyframes = _k;

-

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

-

Как только последовательность выпустила широковещательное сообщение, вы можете разобрать его с помощью события Other > Broadcast Message в экземплярах объектов, которое подробно описано здесь.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Keyframe_Data_Struct.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Keyframe_Data_Struct.htm index 69fa9731e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Keyframe_Data_Struct.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Keyframe_Data_Struct.htm @@ -1,250 +0,0 @@ - - - - - - Структура данных ключевого кадра - - - - - - - - - - -

Структура данных ключевого кадра

-

Когда вы определяете структуру ключевых кадров для дорожки, вам также необходимо определить данные, которые будут с ними связаны. Эти данные состоят из различных каналов, где каждый канал - это просто Keyframe Data Struct. Каналу может быть присвоен определенный тип данных в зависимости от того, для какого типа дорожки вы задаете данные ключевого кадра.

-

Структура данных ключевого кадра содержит следующие переменные:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Структура данных ключевого кадра последовательности
ПеременнаяТипОписание
channelРеальноЭто канал, к которому должны быть применены данные ключевого кадра. Это целое положительное значение, начинающееся с 0. Стоит отметить, что при создании дорожек параметров для ключевых кадров "положение" или "масштаб" необходимо использовать очень специфические значения каналов. Они следующие: канал 0 - это положение X или масштаб X, канал 1 - положение Y или масштаб Y.
spriteIndexАктив спрайтаИндекс актива sprite, который следует использовать для дорожки. Это свойство доступно только для дорожек типа seqtracktype_graphic, и вы можете получить или установить его.
soundIndexЗвуковой активИндекс аудиоактива, используемого для дорожки. Это свойство доступно только для дорожек типа seqtracktype_audio, и вы можете получить или установить его.
particleSystemIndexParticle System AssetThe particle system asset used for the track. This property is only available for tracks of the type seqtracktype_particlesystem and you can get or set it.
playbackModeПоследовательность Аудио Ключ КонстантаРежим воспроизведения звука. Это свойство доступно только для дорожек типа seqtracktype_audio, и вы можете получить или установить его. Свойство должно быть одной из констант, приведенных в таблице ниже этого свойства.
curveСтруктура анимационной кривойЭто свойство требует наличия структуры кривой анимации (см. здесь для получения дополнительной информации) и доступно только для дорожек типа seqtracktype_real. Если структура кривой не используется, то значение этого свойства будет равно -1.
valueРеальноЭто свойство представляет собой просто значение, связанное с каналом данных ключевых кадров, и доступно только для дорожек типа seqtracktype_real, если не предоставлена структура curve. Это может быть, например, позиция X или Y дорожки, если она размещена внутри дорожки с параметром "position".
colourМассив из РеальныйsЭто свойство возвращает (или требует, если установлено) массив для значения цвета ключевого кадра с форматом [A, R, G, B]. Это свойство доступно только для дорожек типа seqtracktype_colour. Обратите внимание, что значения для каждого компонента должны быть выражены между 0 и 1, где 0 соответствует HEX-значению #00, а 1 - HEX-значению #FF (0 - 255, как показано в окне выбора цвета для цветных дорожек в редакторе последовательностей).
sequenceСтруктура объекта последовательностиЭто свойство возвращает (или требует, если установлено) объект последовательности struct и доступно только для дорожек типа seqtracktype_sequence.
objectIndexОбъект АктивыЭто свойство возвращает (или требует, если установлено) индекс объекта и доступно только для дорожек типа seqtracktype_instance.
eventsМассив из СтрокаsЭто свойство позволяет получить доступ к событиям и широковещательным сообщениям, связанным со структурой данных ключевого кадра. Вы можете получить или установить это свойство, при получении возвращается массив строк, а при установке должен быть указан массив строк. Более подробную информацию о событиях можно найти в разделе События и моменты последовательности. Это свойство доступно только для дорожек типа seqtracktype_message.
eventМетодЭто свойство возвращает (или может быть установлено на) method связанный со структурой данных ключевого кадра. Если метод не был указан или вы хотите удалить метод, то свойство должно быть равно -1. Это свойство доступно только для дорожек типа seqtracktype_moment.
Любые дополнительные переменные, перечисленные в таблице (таблицах) ниже
-

-

Переменная playbackMode может быть одной из следующих констант:

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Последовательность Аудио Ключ Константа
ПостояннаяОписаниеЗначение
seqaudiokey_loopПри воспроизведении звук будет зацикливаться.0
seqaudiokey_oneshotЗвук будет воспроизводиться только один раз, а затем прекратится.1
-

-

Данные текстовой дорожки

-

Структура будет содержать следующие дополнительные переменные, если она назначена на текстовую дорожку (seqtracktype_text):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Структура данных ключевого кадра последовательности
ПеременнаяТипОписание
textСтрокаЭто текстовая строка, которая рисуется на дорожке.
wrapБулевоЭто булево значение, которое указывает, должен ли текст быть обернут (true) или нет (false).
alignmentHВыравнивание текста последовательности КонстантаЭто горизонтальное выравнивание текста, и оно будет одним из Константа выравнивания текста последовательностиприведенных ниже.
alignmentVВыравнивание текста последовательности КонстантаЭто вертикальное выравнивание текста, и оно будет одним из Константа выравнивания текста последовательностиприведенных ниже.
fontIndexШрифтовой активЭто Шрифтовой актив используемый текстовой дорожкой.
-

-

alignmentH может быть любой из следующих констант:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Константа выравнивания текста последовательности (alignmentH)
ПостояннаяОписание
seqtextkey_leftТекст будет выровнен по левому краю рамки
seqtextkey_rightТекст будет выровнен по правому краю рамки
seqtextkey_centerТекст будет центрирован по горизонтали в рамке
seqtextkey_justifyТекст будет выровнен в рамке
-

-

alignmentV может быть любой из следующих констант:

- - - - - - - - - - - - - - - - - - - - - - -
Константа выравнивания текста последовательности (alignmentV)
ПостояннаяОписание
seqtextkey_topТекст будет выровнен по верхней части рамки
seqtextkey_bottomТекст будет выровнен по нижней части рамки
seqtextkey_middleТекст будет центрирован по вертикали в рамке
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Keyframe_Struct.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Keyframe_Struct.htm index edd659284..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Keyframe_Struct.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Keyframe_Struct.htm @@ -1,75 +0,0 @@ - - - - - - Структура ключевого кадра - - - - - - - - - - -

Структура ключевого кадра

-

Каждая дорожка (как определено на странице, посвященной структурам дорожек) будет иметь одну или несколько структур ключевых кадров, назначенных ей (которые можно получить из свойства keyframes структуры дорожки), и каждая из них будет иметь следующие свойства:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Структура ключевого кадра последовательности
ПеременнаяТипОписание
frameРеальноПозиция (в кадрах) на временной шкале для ключевого кадра. Значение по умолчанию равно 0.
lengthРеальноДлина ключевого кадра. Значение по умолчанию равно 1, при установке больших значений свойство дорожки, на которое ссылается ключевой кадр, будет поддерживаться в начальном значении в течение заданной длины. Обратите внимание, что свойство stretch отменяет это значение, если оно установлено в true.
stretchБулевоЕсли это свойство установлено в true, то ключевой кадр растягивается либо до следующего ключевого кадра дорожки, либо до конца дорожки, если это последний ключевой кадр. Вы можете получить или установить это значение, по умолчанию оно равно false.
channelsМассив из Структура данных ключевого кадра последовательностиsЭто свойство позволяет получить доступ к списку структур данных ключевых кадров для каналов дорожки. При получении этого свойства возвращается массив структур данных ключевых кадров, а при установке этого свойства должен быть указан массив структур данных ключевых кадров.
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Sequence_Instance_Struct.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Sequence_Instance_Struct.htm index b9863fbb0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Sequence_Instance_Struct.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Sequence_Instance_Struct.htm @@ -1,291 +0,0 @@ - - - - - - Структура экземпляра последовательности - - - - - - - - - - -

Структура экземпляра последовательности

-

Последовательность, когда она помещается в комнату, размещается как элемент на слое, и этот элемент содержит экземпляр последовательности. Этот экземпляр последовательности будет иметь следующие свойства в своей структуре:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Структура экземпляра последовательности
ПеременнаяТипОписание
sequenceСтруктура объекта последовательностиЭто идентификатор структуры объекта последовательности, на основе которой был создан экземпляр последовательности (подробнее см. здесь). Вы можете получить или установить эту структуру и таким образом изменить базовую последовательность, на которую ссылается экземпляр.
headPositionРеальноЭто текущее положение головки воспроизведения (в кадрах) для данного экземпляра последовательности. Вы можете получить или установить это значение, но учтите, что установка его в значение больше или меньше, чем текущая определенная область воспроизведения, будет иметь различные эффекты в зависимости от типа воспроизведения, установленного для последовательности. См. layer_sequence_headpos() для получения дополнительной информации.
headDirectionНаправление последовательности ПостояннаяЭто текущее направление воспроизведения для экземпляра последовательности. Вы можете получить или установить это значение с помощью констант, приведенных в следующей таблице (Обратите внимание, что вы можете использовать функции слоя layer_sequence_get_headdir() и layer_sequence_headdir() для получения или установки этого значения без прямого доступа к struct).
speedScaleРеальноЭто свойство можно использовать для получения или установки шкалы скорости воспроизведения. Шкала скорости представляет собой множитель, где 1 - это скорость воспроизведения по умолчанию, значения меньше 1 замедляют воспроизведение, а значения больше 1 ускоряют его, например: значение 0,5 - это половина скорости воспроизведения, а значение 2 - удвоенная скорость воспроизведения. Обратите внимание, что вы можете использовать функции слоя layer_sequence_get_speedscale() и layer_sequence_speedscale() для получения или установки этого значения без прямого доступа к структуре.
pausedБулевоВы можете проверить это свойство, чтобы узнать, была ли последовательность приостановлена или нет, и она будет true, если была, или false в противном случае. Это свойство доступно только для чтения, но вы можете использовать функцию слоя layer_sequence_pause() чтобы приостановить воспроизведение, и layer_sequence_play() возобновить его при необходимости. Вы также можете проверить это свойство с помощью функции layer layer_sequence_is_paused() а не проверять свойство непосредственно в структуре.
finishedБулевоВы можете проверить это свойство, чтобы узнать, закончила ли последовательность воспроизведение или нет, возвращая true, если она закончила воспроизведение, и false в противном случае. Это свойство доступно только для чтения и возвращает значение true только для тех дорожек, которые не установлены на цикл или пинг-понг. Вы также можете проверить это свойство с помощью функции layer layer_sequence_is_finished() а не проверять свойство непосредственно в структуре.
elementIDИдентификатор элемента последовательностиЭто свойство содержит идентификатор элемента последовательности. Этот идентификатор - простое идентифицирующее значение, которое ассоциируется со слоем в редакторе помещений, и его можно использовать с соответствующими функциями слоя, чтобы найти слой, которому назначена последовательность, или изменить определенные свойства последовательности без необходимости работать со структурой.
activeTracksМассив из Последовательность Активная дорожка СтруктураsЭто свойство будет содержать массив структур "evaluation", содержащих информацию о текущем состоянии каждого трека актива в последовательности (графика, последовательность, аудио и т.д...). Это дорожки верхнего уровня, и возвращаемый массив доступен только для чтения. О содержимом структуры дорожки актива, возвращаемой в каждом элементе массива, см. раздел ниже.
-

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Направление последовательности Постоянная
ПостояннаяОписаниеЗначение
seqdir_rightПоследовательность будет воспроизводить кадры в инкрементном порядке слева направо1
seqdir_leftПоследовательность будет воспроизводить кадры в убывающем порядке справа налево-1
-

-

activeTracks Struct

-

Хотя это свойство уже существует в структуре экземпляра последовательности в событии Sequence Create, оно заполняется дорожками только после первого события Sequence Begin Step. Поэтому первый раз вы найдете значения в этой структуре во время первой итерации события Sequence Step.

-

Следующий список содержит свойства, которые могут быть доступны вам при обращении к активной структуре дорожки (как включено в массив activeTracks структуры экземпляра последовательности, описанного выше). Каждый актив трека struct может иметь любое из следующих свойств, в зависимости от типа актива, используемого треком (обратите внимание, что вы можете изменять все эти свойства, кроме тех, которые указаны как доступные только для чтения), и все возвращаемые значения относятся к текущей позиции головки воспроизведения:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Последовательность Активный трек Структура
ПеременнаяТипОписание
matrixМатричный массивЭто матрица преобразования, используемая для рисования дорожки (sprite, дорожки экземпляра и дорожки последовательности).
posxРеальноПоложение актива в последовательности вдоль оси X для дорожки в текущем положении головки воспроизведения (все активы).
posyРеальноПоложение актива в последовательности вдоль оси Y для дорожки в текущем положении головки воспроизведения (все активы).
scalexРеальноМасштаб актива в последовательности по оси X для дорожки в текущей позиции головки воспроизведения (sprite, дорожки экземпляра и последовательности).
scaleyРеальноМасштаб актива в последовательности по оси Y для дорожки в текущей позиции головки воспроизведения (sprite, дорожки экземпляра и последовательности).
xoriginРеальноНачало координат X актива для трека (все активы).
yoriginРеальноY начало координат актива для трека (все активы).
widthРеальноШирина (в пикселях) актива для дорожки (sprite, экземпляра и дорожки последовательности).
heightРеальноВысота (в пикселях) актива для дорожки (sprite, экземпляра и дорожки последовательности).
imageindexРеальноИндекс изображения для актива на дорожке в последовательности в текущей позиции головки воспроизведения (sprite и дорожки экземпляра).
imagespeedРеальноСкорость изображения для актива на дорожке в последовательности в текущей позиции головки воспроизведения (sprite и дорожки экземпляра).
colourMultiplyЦветЗначение умножения цвета для актива на дорожке в последовательности в текущей позиции головки воспроизведения (sprite, экземпляра и дорожки последовательности). Это значение будет представлять собой массив из четырех значений ARGB с форматом [A, R, G, B]. Обратите внимание, что значения для каждого компонента выражаются между 0 и 1, где 0 соответствует HEX-значению #00, а 1 - HEX-значению #FF (0 - 255, как показано в окне выбора цвета для дорожек с цветовым умножением в редакторе последовательностей).
soundIndexSound Instance IDThe ID of the sound instance that's playing on this track's emitter (audio tracks).
emitterIndexИдентификатор аудиоизлучателяИндекс аудиоизлучателя, принадлежащего данной дорожке (аудиодорожке).
gainРеальноУсиление (громкость) дорожки в текущем положении головки воспроизведения (аудиодорожки).
pitchРеальноВысота тона дорожки в текущем положении головки воспроизведения (аудиодорожки).
frameSizeXРеальноГоризонтальный размер текстовой рамки (текстовые дорожки).
frameSizeYРеальноВертикальный размер текстовой рамки (текстовые дорожки).
characterSpacingРеальноЗначение расстояния между символами (текстовые дорожки).
lineSpacingРеальноЗначение межстрочного интервала (текстовые дорожки).
paragraphSpacingРеальноЗначение интервала между абзацами (текстовые дорожки).
trackСтруктура дорожки последовательности Структура дорожки, на которой основана эта дорожка (все активы, значение только для чтения ).
parentСтруктура экземпляра последовательностиИдентификатор экземпляра родительской последовательности для дорожки (все активы, значение только для чтения ).
activeTracksМассив из Структура дорожки последовательностиsЭто массив структур оценки для каждой дорожки параметров, которую содержит дорожка активов (все активы, значение только для чтения ). Содержимое каждой структуры в массиве перечислено в разделе " Структура дорожки параметров".
-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Sequence_Object_Struct.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Sequence_Object_Struct.htm index 6678d5809..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Sequence_Object_Struct.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Sequence_Object_Struct.htm @@ -1,165 +0,0 @@ - - - - - - Структура объекта последовательности - - - - - - - - - - -

Структура объекта последовательности

-

A Структура объекта последовательности это имя, присвоенное структуре, извлекаемой из актива Последовательности. Все данные для Последовательности хранятся в этой структуре во время выполнения, и на нее ссылаются все элементы Последовательности, которые создаются в комнате. Это означает, что если любые переменные в этой структуре (или внутри любой из ее вложенных структур) будут изменены, исходная Последовательность изменится (пока игра не будет закрыта и открыта снова), и все ее существующие элементы Последовательности будут затронуты.

-

Эта структура будет иметь следующие свойства, которые могут быть изменены:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Структура объекта последовательности
ПеременнаяТипОписание
nameСтрокаЭто имя последовательности в виде строки, и вы можете получить или установить это значение по мере необходимости. Обратите внимание, что последовательности, созданные с помощью функции sequence_create() не будут иметь имени, и это будет просто пустая строка "".
loopmodeРежим воспроизведения последовательности ПостоянныйЭто режим воспроизведения объекта последовательности, который может быть получен или установлен. Это может быть любая из констант, показанных в таблице ниже этой.
playbackSpeedРеальноОпределяет скорость воспроизведения последовательности, которая интерпретируется как кадры в секунду или кадры в игровой кадр в зависимости от playbackSpeedType (см. ниже). Вы можете получить или установить это значение.
playbackSpeedTypeПостоянная скорости спрайтаЭто указывает, как интерпретировать playbackSpeed, и вы можете получить или установить это значение.
lengthРеальноДлина последовательности в кадрах. Вы можете получить или установить это значение, но учтите, что уменьшение длины последовательности может вызвать проблемы, если у экземпляра последовательности, ссылающегося на эту последовательность, головка воспроизведения установлена на новую длину.
volumeРеальноЭто скалярное значение от 0 до 1, которое используется для масштабирования громкости всех звуковых дорожек в последовательности. Вы можете получить или установить это значение, и оно изменит глобальный аудиовыход для всех дорожек - например, если у вас есть аудиодорожка с громкостью 0,8, а затем установить свойство громкости последовательности на 0,5, аудиодорожка будет иметь конечную громкость 0,4.
xoriginРеальноЭто начало последовательности вдоль оси X.
yoriginРеальноЭто начало последовательности вдоль оси Y.
messageEventKeyframesМассив из Структура ключевого кадра последовательностиsЭто позволяет получить доступ к ключевым кадрам событий сообщений для последовательности. Вы можете получить или установить эти события сообщений, причем при получении этого свойства возвращается массив структур ключевых кадров, а для установки свойства вы должны предоставить массив структур ключевых кадров. Более подробную информацию можно найти на странице События и моменты последовательности.
momentKeyframesМассив из Структура ключевого кадра последовательностиsЭто позволяет получить доступ к ключевым кадрам событий момента для последовательности. Вы можете получить или установить эти события момента, причем при получении этого свойства возвращается массив структур ключевых кадров, а для установки свойства необходимо предоставить массив структур ключевых кадров. Более подробную информацию можно найти на странице События и моменты последовательности.
tracksМассив из Структура последовательности дорожекsПозволяет получить доступ к списку дорожек актива на верхнем уровне последовательности. Вы можете получить или установить это свойство, причем при получении этого свойства возвращается массив структур дорожек, а для установки свойства необходимо предоставить массив структур дорожек. Для получения дополнительной информации см. раздел Структуры дорожек.
-

-

loopMode может быть любой из следующих констант:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Режим воспроизведения последовательности Постоянный
ПостояннаяОписаниеЗначение
seqplay_oneshotПоследовательность будет воспроизводиться один раз, а затем остановится после завершения.0
seqplay_loopПоследовательность зациклится, при этом головка воспроизведения вернется к началу, когда достигнет конца области воспроизведения.1
seqplay_pingpongПоследовательность зациклится, при этом головка воспроизведения изменит направление, когда достигнет конца области воспроизведения.2
-


-

-

Примечания

-

Обратите внимание, что если вы хотите получить доступ к свойствам последовательности, которая была создана в браузере активов, вы должны сначала вызвать функцию sequence_get() на индексе актива для получения структуры объекта последовательности. Также обратите внимание, что любые изменения, внесенные в эту структуру последовательности, будут означать, что все последующие экземпляры этого актива последовательности также будут иметь эти изменения, и они будут сохраняться до тех пор, пока игра запущена, даже если вы вызовете функцию game_restart().

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Track_Struct.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Track_Struct.htm index 8a27fc7c6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Track_Struct.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequence_Structs/The_Track_Struct.htm @@ -1,233 +0,0 @@ - - - - - - Структура трека - - - - - - - - - - -

Структура трека

-

Track struct может использоваться либо длятрековактивовверхнего уровня , либо для трековпараметров нижнего уровня , а поведение трека определяется двумя вещами, его именем и типом. Структуры дорожек создаются с помощью функции sequence_track_new() и могут быть получены из активов последовательности с помощью свойства activeTracks из Sequence Instance Struct или свойства tracks из Sequence Object Struct.

-

В структуре трека доступны следующие свойства:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Структура дорожки последовательности
ПеременнаяТипОписание
typeТип дорожки последовательности ПостояннаяСодержит Константа типа дорожки последовательности которая описывает тип дорожки. Это может быть любая из констант, приведенных ниже в разделе "Тип".
nameСтрокаПри создании дорожки активов "верхнего уровня" имя, которое вы здесь даете, может быть любой строкой, необходимой для идентификации дорожки. Однако для дорожек параметров необходимо указать специальные строки, чтобы сообщить GameMaker, какую дорожку параметров вы создаете. Подробнее об этом говорится в разделе "Имя" ниже.
tracksМассив из Структура дорожки последовательностиsЭто свойство позволяет получить доступ к списку дорожек, которые являются дочерними для данной дорожки. При получении этого свойства возвращается массив Структура трека последовательностиs возвращается, а при установке этого свойства массив Структура дорожки последовательностиs должен быть указан.
visibleБулевоУказывает, является ли эта дорожка видимой (значение true) или нет (значение false). Вы можете получить или установить это значение, и если дорожка не видна, то ни одна из ее дочерних дорожек не будет отрисована.
keyframesМассив из Структура ключевого кадра последовательностиsЭто свойство позволяет получить доступ к списку структур ключевых кадров для трека. При получении этого свойства возвращается массив структур ключевых кадров, а при установке этого свойства должен быть указан массив структур ключевых кадров.
enabledBooleanThis indicates whether this track is enabled. If the track is an asset track it isn't drawn when disabled, if it's a parameter track the track's values aren't applied.
-

-

Тип

-

Свойство type может быть любой из следующих констант (эти константы также используются при генерации keyframes и данных ключевых кадров):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип дорожки последовательности Постоянная
ПостояннаяОписаниеЗначение
seqtracktype_graphicЭто трек графических активов (sprite).1
seqtracktype_audioЭто дорожка аудиоактивов.2
seqtracktype_instanceЭто трек актива экземпляра.14
seqtracktype_sequenceЭто трек актива последовательности.7
seqtracktype_clipmaskЭто дорожка активов группы масок клипов.8
seqtracktype_clipmask_maskЭто дорожка активов маски клипа sprite, используемая для создания маски клипа.9
seqtracktype_clipmask_subjectЭто маска клипа sprite трек актива, который маскируется.10
seqtracktype_groupЭта групповая папка отслеживает активы.11
seqtracktype_colourЭто дорожка параметров цветовых данных.4
seqtracktype_realЭто трек с реальными числовыми параметрами.3
seqtracktype_messageЭто дорожка широковещательных сообщений.15
seqtracktype_momentЭто трек события/момента.16
seqtracktype_textЭто текстовый трек.17
seqtracktype_boolВ настоящее время не используется.5
seqtracktype_stringВ настоящее время не используется.6
seqtracktype_spriteframesВ настоящее время не используется.13
seqtracktype_emptyВ настоящее время не используется.12
seqtracktype_audioeffectThis is an audio effect parameter track.19
-

-

Имя

-

Свойство name может быть любой из следующих строк:

-
    -
  • "position" - при установке на дорожку типа seqtracktype_real указывает, что содержимое этой дорожки должно использоваться как позиционные данные.
  • -
  • "scale" - при установке на дорожку типа seqtracktype_real указывает, что содержимое этой дорожки должно использоваться в качестве данных масштабирования.
  • -
  • "rotation" - при установке на дорожке типа seqtracktype_real указывает, что содержимое этой дорожки должно использоваться в качестве данных вращения.
  • -
  • "blend_multiply" или "image_blend" - при установке на дорожку типа seqtracktype_colour указывает, что содержимое этой дорожки должно использоваться как данные умножения цвета. Данные ключевых кадров для такой дорожки должны представлять собой массив из четырех значений в формате [A, R, G, B]. Обратите внимание, что значения для каждого компонента выражаются между 0 и 1, где 0 соответствует HEX-значению #00, а 1 - HEX-значению #FF (0 - 255, как показано в окне выбора цвета для дорожек смешивания изображений в редакторе последовательностей).
  • -
  • "image_speed" - при установке на дорожку типа seqtracktype_real указывает, что содержимое этой дорожки должно использоваться в качестве значения скорости изображения.
  • -
  • "image_index" - при установке на дорожку, имеющую тип seqtracktype_real, указывает, что содержимое этой дорожки должно использоваться в качестве значения индекса изображения.
  • -
  • "image_angle" - при установке на дорожку типа seqtracktype_real указывает, что содержимое этой дорожки должно использоваться в качестве значения угла изображения.
    -
    -
    - Имена параметров текстовых дорожек (используются только для текстовых дорожек): -
  • -
  • "frameSize" - при установке на дорожке seqtracktype_real указывает, что содержимое этой дорожки должно использоваться в качестве размера кадра для текста.Каждый ключевой кадр для этой дорожки должен иметь два канала, 0 и 1, где 0 хранит размер X, а 1 - размер Y кадра.
  • -
  • "characterSpacing" - также используется с дорожками seqtracktype_real, используется в качестве интервала между символами текста. Каждый ключевой кадр для этой дорожки должен иметь один канал, содержащий значение интервала.
  • -
  • "lineSpacing" - также используется с дорожками seqtracktype_real, используется в качестве межстрочного интервала для текста. Каждый ключевой кадр для этой дорожки должен иметь один канал, содержащий значение интервала.
  • -
  • "paragraphSpacing" - также используется с дорожками seqtracktype_real, используется в качестве интервала между абзацами текста. Каждый ключевой кадр для этой дорожки должен иметь один канал, содержащий значение интервала.
  • -
-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequences.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequences.htm index 6cf9966b9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequences.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/Sequences.htm @@ -1,163 +0,0 @@ - - - - - - Последовательности - - - - - - - - - - -

Последовательности

-

Последовательности обычно создаются на сайте IDE с помощью редактора последовательностей, но их также можно создавать и редактировать с помощью кода. Однако, прежде чем рассматривать доступные функции, важно понять, как последовательности определяются в GameMaker и различные термины, которые будут использоваться.

-

Для начала, на верхнем уровне, у вас есть элемент последовательности. Это то, что вы помещаете на слой в комнате, либо через редактор комнат, либо в коде, используя соответствующие функции слоя. Элемент слоя не имеет реальных свойств, кроме значения ID элемента, но этот ID необходим для использования вышеупомянутых функций слоя для изменения воспроизведения последовательности или для доступа к данным последовательности.

-

Далее у вас есть объекты последовательности и экземпляры последовательности, так же как и общие объекты и экземпляры. Объект последовательности - это базовый ресурс, созданный в браузере активов или с помощью функции sequence_create(), а экземпляр последовательности - это "копия" этого объекта последовательности, которая была помещена в комнату в качестве элемента на слое. Считайте объекты последовательности чертежами, а экземпляры последовательности - созданием на основе этих чертежей. Объекты и экземпляры последовательностей являются структурами, и - в отличие от обычных объектов - структура объекта последовательности может быть отредактирована во время выполнения, что повлияет на все последующие экземпляры этой последовательности, когда вы создаете их как элементы (и любое редактирование объекта последовательности не будет сброшено перезапуском игры или комнаты с помощью функций room_restart() или game_restart() ). Структура экземпляра последовательности содержит несколько параметров для управления воспроизведением и прочим (более подробно об этом рассказано ниже), а также структуру данных последовательности.

-

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

-

Для работы с элементами последовательности используются функции слоя помещения, а для объектов последовательности, экземпляров и данных у нас есть следующие функции:

-

- -

-

Существует также встроенная переменная, связанная с экземплярами, которая может быть использована для определения того, был ли экземпляр использован в последовательности или нет:

-

- -

ВАЖНО! Если в вашей последовательности есть экземпляры, эти экземпляры не должны изменять свои переменные image_xscale / image_yscale / image_angle / x / y, так как они будут перезаписаны при обновлении последовательности на каждом шаге после начала воспроизведения.

-

-

Прежде чем использовать эти функции для создания или редактирования последовательностей, мы рекомендуем вам прочитать подробные описания свойств структур, приведенные ниже. Общий обзор того, как создать новую последовательность, выглядит следующим образом:

-
    -
  • Создайте новый объект последовательности с помощью функции sequence_create() и сохраните индекс объекта последовательности в переменной. Этот индекс дает вам доступ к структуре объекта последовательности.
  • -
-

myseq = sequence_create();

-
    -
  • Установите значения верхнего уровня объекта последовательности, такие как длина, режим воспроизведения, скорость воспроизведения и т.д.. Например:
  • -
-

myseq.length = 120;
- myseq.loopmode = seqplay_pingpong;

-
    -
  • Прежде чем добавлять дорожки к объекту последовательности, их нужно создать, поэтому сейчас вы создадите массив дорожек активов, которые были определены с помощью функции sequence_track_new(). Обратите внимание, что в коде нет разницы между дорожками активов и дорожками параметров - все они просто дорожки, и их поведение зависит от типа созданной дорожки и от того, назначены ли они в качестве поддорожек дорожки верхнего уровня или нет. Так, вы создадите дорожку для актива, а затем назначите ей поддорожки для различных параметров, и эти поддорожки будут действовать как дорожки параметров для актива. В приведенном ниже примере создается одна дорожка графического актива, которая будет добавлена в последовательность позже:
  • -
-

var _graphic_track = sequence_track_new(seqtracktype_graphic);
- _graphic_track.name = "TestGraphicTrack";
-
- myseq.tracks[0] = _graphic_track; -

-
    -
  • Каждая дорожка актива должна иметь некоторые данные, чтобы сообщить последовательности, как она будет выглядеть, или ее положение, и т.д... и это добавляется в виде ключевых кадров. На верхнем уровне для дорожки актива можно установить ключевые кадры для различных вещей (перечисленных в разделе о структуре дорожки, ниже), но обратите внимание, что поскольку это ключевые кадры дорожки актива, они не будут интерполироваться и просто изменят значение, на которое они ссылаются, когда будет достигнут данный кадр. Каждый ключевой кадр представляет собой структуру, которая добавляется в массив, а затем этот массив присваивается дорожке актива. Чтобы создать структуру ключевого кадра, мы вызываем функцию sequence_keyframe_new() а чтобы заполнить ключевой кадр необходимыми данными, мы используем функцию sequence_keyframedata_new():
  • -
-

// Create a new keyframe struct for a graphics asset track
- var _graphic_keys = sequence_keyframe_new(seqtracktype_graphic);
-
- // Set the graphics keyframe top-level data for the keyframe position, length, etc.
- _graphic_keys.frame = 0;
- _graphic_keys.length = 1;
- _graphic_keys.stretch = true;
- _graphic_keys.disabled = false;
-
- // Create the channel data that will go into this keyframe (note that each key can have multiple channels of keyframe data)
- _graphic_keys.channels[0] = sequence_keyframedata_new(seqtracktype_graphic);
- _graphic_keys.channels[0].spriteIndex = spr_platform;
- _graphic_keys.channels[0].channel = 0;
-
- // Assign the keyframe struct as the first keyframe of the graphic track
- _graphic_track.keyframes[0] = _graphic_keys; -

-
    -
  • Теперь нам нужно создать дорожку параметров, которую мы назначим в качестве поддорожки только что созданной графической дорожки. Это будет сделано аналогично тому, как показано выше, только теперь нам нужно дать дорожке имя, показывающее ее назначение, в данном случае "position", поскольку мы будем использовать эту дорожку для перемещения дорожки графики по ходу кадров анимации последовательности:
  • -
-

// Create a new parameter track struct for the position of the graphic
- var paramtracks = array_create(1);
- paramtracks[0] = sequence_track_new(seqtracktype_real);
- paramtracks[0].name = "position";
- paramtracks[0].interpolation = true;
- // Create the keyframe struct to hold the parameter channel data and set the frame position for the keyframe
- var paramkeys = array_create(2);
- paramkeys[0] = sequence_keyframe_new(seqtracktype_real);
- paramkeys[0].frame = 0;
- paramkeys[1] = sequence_keyframe_new(seqtracktype_real);
- paramkeys[1].frame = 120;
-
- // Create the keyframe and keyframe data structs to hold the parameter channel data and assign them
- var _keyframe;
-
- // Keyframe 1
- _keyframe = sequence_keyframe_new(seqtracktype_real);
- _keyframe.frame = 0;
-
- _keyframe.channels[0] = sequence_keyframedata_new(seqtracktype_real);
- _keyframe.channels[0].channel = 0;  // Channel 0 for a position track is the X position
- _keyframe.channels[0].value = 0;
- _keyframe.channels[1] = sequence_keyframedata_new(seqtracktype_real);
- _keyframe.channels[1].channel = 1;  // Channel 1 for a position track is the Y position
- _keyframe.channels[1].value = 0;
-
- _param_track.keyframes[0] = _keyframe;
-
- // Keyframe 2
- _keyframe = sequence_keyframe_new(seqtracktype_real);
- _keyframe.frame = 120;
-
- _keyframe.channels[0] = sequence_keyframedata_new(seqtracktype_real);
- _keyframe.channels[0].channel = 0;
- _keyframe.channels[0].value = room_width;
- _keyframe.channels[1] = sequence_keyframedata_new(seqtracktype_real);
- _keyframe.channels[1].channel = 1;
- _keyframe.channels[1].value = room_height;
-
- _param_track.keyframes[1] = _keyframe; -

-
    -
  • После этого остается назначить дорожку параметров в качестве поддорожки к нашей основной дорожке графических активов, которую мы создали в начале, а затем назначить эти дорожки последовательности, которую мы можем создать в комнате:
  • -
-

mytracks[0].tracks = paramtracks;
- myseq.tracks = mytracks;
- layer_sequence_create("Assets_1", 0, 0, myseq);

-

Приведенные выше инструкции создают очень простой объект последовательности, который рисует sprite в позиции (0, 0) последовательности, а затем перемещает его в правый нижний угол и обратно в цикле. Как уже упоминалось, есть несколько мест, где вам нужно обратиться к различным структурам, чтобы передать или получить данные о последовательности, и в следующих разделах перечислены все различные свойства, которые содержат эти структуры:

- -

-

Наконец, в последовательности можно добавить код, который может быть запущен как событие в момент или как широковещательное сообщение. Это подробно описано на следующей странице:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/in_sequence.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/in_sequence.htm index 967cd7cc5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/in_sequence.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/in_sequence.htm @@ -1,54 +0,0 @@ - - - - - - in_sequence - - - - - - - - - - -

in_sequence

-

Это встроенная переменная, которая является частью переменных экземпляра, созданных для каждого экземпляра объекта в вашей игре. Если объект управляется последовательностью, - эта переменная будет возвращать true, в противном случае она будет возвращать false. Эта переменная доступна только для чтения и не может быть изменена.

-

Обратите внимание, что эта переменная станет false после завершения управляющей последовательности, даже если ее элемент последовательности все еще существует, и станет true, если этот элемент последовательности будет воспроизведен снова.

-

Вы можете использовать эту переменную в объектах, управляемых игроком (или CPU), чтобы убедиться, что они перемещаются кодом только тогда, когда они не находятся в Последовательности. Это может оказаться полезным для cutscenes, когда вам нужно использовать одни и те же экземпляры в последовательности (с помощью функции - функцию sequence_instance_override_object() ) и вам нужно убедиться, что они не могут быть перемещены обычным кодом, пока активна эта сцена.

-

-

Синтаксис:

-

in_sequence

-

-

Возвращается:

-

-

-

Пример:

-

if (!in_sequence)
{ -
    x += move_x;
    y += move_y;
} -

-

Приведенный выше код проверяет переменную in_sequence, и если она равна false (то есть экземпляр не управляется последовательностью), то он добавляет move_x и move_y к позиции экземпляра. - чтобы убедиться, что он перемещается только тогда, когда он не находится в последовательности.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_create.htm index 5c586647d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_create.htm @@ -1,51 +0,0 @@ - - - - - - sequence_create - - - - - - - - - - - -

sequence_create

-

С помощью этой функции вы можете создать новый объект последовательности, в который затем можно добавить дорожки. Функция возвращает struct, к которому вы можете обратиться для настройки созданной вами последовательности. Содержимое этой структуры подробно описано на этой странице. Структура объекта последовательности может быть использована для создания экземпляров последовательности на слое помещения с помощью функции layer_sequence_create(). Обратите внимание, что при создании объектов последовательности таким способом их следует удалить, вызвав функцию sequence_destroy() когда они больше не нужны, иначе произойдет утечка памяти, которая может замедлить работу и в конечном итоге привести к краху вашей игры.

-

-

Синтаксис:

-

sequence_create();

-

-

Возвращается:

-

Sequence Object Struct

-

-

Пример:

-

myseq = sequence_create();
- myseq.length = 120;
- myseq.loopmode = seqplay_pingpong;

-

Приведенный выше код создает новый объект sequence struct и устанавливает его длину воспроизведения и режим цикла.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_destroy.htm index 35306bd44..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_destroy.htm @@ -1,65 +0,0 @@ - - - - - - sequence_destroy - - - - - - - - - - -

sequence_destroy

-

С помощью этой функции вы можете уничтожить объект последовательности, который был создан динамически. Вы передаете либо struct объекта последовательности (возвращаемый функцией sequence_create()) или идентификатор последовательности (возвращаемый функцией layer_sequence_get_sequence() или из свойства структуры экземпляра последовательности sequence). Эту функцию следует использовать всякий раз, когда динамически созданная последовательность больше не нужна, чтобы освободить связанную с ней память.

-

-

Синтаксис:

-

sequence_destroy(sequence_struct_or_id);

- - - - - - - - - - - - - -
АргументТипОписание
sequence_struct_or_idSequence Asset или Sequence Object StructThe sequence object struct or ID to destroy
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if sequence_exists(my_seq)
- {
-     sequence_destroy(my_seq);
- }

-

Приведенный выше код проверяет, существует ли данный объект последовательности, и если да, то он уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_exists.htm index 0294d24c3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_exists.htm @@ -1,66 +0,0 @@ - - - - - - sequence_exists - - - - - - - - - - - -

sequence_exists

-

С помощью этой функции вы можете проверить, существует ли объект последовательности или нет. Вы предоставляете либо структуру объекта последовательности (как возвращается функцией sequence_create() или sequence_get()) или идентификатор последовательности (возвращаемый функцией layer_sequence_get_sequence() или из свойства структуры экземпляра последовательности sequence, или индекс из браузера активов), и функция вернет true, если объект последовательности существует, или false, если не существует.

-

-

Синтаксис:

-

sequence_exists(sequence_struct_or_id);

- - - - - - - - - - - - - -
АргументТипОписание
sequence_struct_or_idSequence Asset или Sequence Object StructThe sequence to check for, can be the asset reference itself or its Sequence object struct.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if sequence_exists(my_seq)
- {
-     sequence_destroy(my_seq);
- }

-

Приведенный выше код проверяет, существует ли данный объект последовательности, и если да, то он уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_get.htm index bd0103317..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_get.htm @@ -1,64 +0,0 @@ - - - - - - sequence_get - - - - - - - - - - - -

sequence_get

-

С помощью этой функции вы можете получить структуру объекта последовательности из индекса актива последовательности. Вы указываете индекс актива для последовательности, как определено в браузере активов, и функция возвращает структуру объекта последовательности, к которой можно получить доступ, или -1, если последовательность не существует или указанный индекс актива не является последовательностью.

-

-

Синтаксис:

-

sequence_get(sequence_index);

- - - - - - - - - - - - - -
АргументТипОписание
sequence_indexАктивы последовательностиThe sequence asset as defined in the Asset Browser.
-

-

Возвращается:

-

Sequence Object Struct or -1

-

-

Пример:

-

var _seq = sequence_get(seq_Logo);
- seq.loopmode = seqplay_pingpong;

-

Приведенный выше код извлекает структуру объекта последовательности из объекта последовательности "seq_Loop", а затем устанавливает режим цикла для последовательности (все последующие созданные экземпляры последовательности теперь будут использовать этот режим цикла).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_get_objects.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_get_objects.htm index 83393c7c0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_get_objects.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_get_objects.htm @@ -1,65 +0,0 @@ - - - - - - sequence_get_objects - - - - - - - - - - - -

sequence_get_objects

-

С помощью этой функции вы можете получить массив всех индексов объектов, экземпляры которых создаются в заданной последовательности. Вы передаете либо структуру объекта последовательности (как возвращается функцией sequence_create() или sequence_get()) или идентификатор последовательности (возвращаемый функцией layer_sequence_get_sequence() или из свойства sequence instance struct sequence), и функция вернет массив, где каждый элемент в массиве - это object_index для различных объектов, используемых последовательностью для создания экземпляров.

-

-

Синтаксис:

-

sequence_get_objects(sequence_struct_or_id);

- - - - - - - - - - - - - -
АргументТипОписание
sequence_struct_or_idSequence Asset или Sequence Object StructThe sequence object struct or ID to get the objects from.
-

-

Возвращается:

-

Array

-

-

-

Пример:

-

var _seq = sequence_get(seq_Logo);
- obj_array = sequence_get_objects(_seq);

-

Приведенный выше код получает структуру для объекта последовательности, затем извлекает объекты, которые она использует, и сохраняет массив в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_instance.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_instance.htm index e57c2f37f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_instance.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_instance.htm @@ -1,52 +0,0 @@ - - - - - - sequence_instance - - - - - - - - - - -

sequence_instance

-

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

-

Обратите внимание, что эта переменная станет undefined после завершения управляющей Последовательности, даже если ее элемент Последовательности все еще существует, и снова получит структуру, если этот элемент Последовательности будет воспроизведен.

-

-

Синтаксис:

-

sequence_instance

-

-

Возвращается:

-

Sequence Instance Struct

-

-

Пример:

-

if (in_sequence)
- {
-     sequence_instance.speedScale = 2;
- }

-

Приведенный выше код проверяет in_sequence и если он равен true (то есть экземпляр управляется последовательностью), то он изменит шкалу скорости этой последовательности на 2.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_instance_override_object.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_instance_override_object.htm index d0a119fe0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_instance_override_object.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_instance_override_object.htm @@ -1,75 +0,0 @@ - - - - - - sequence_instance_override_object - - - - - - - - - - - -

sequence_instance_override_object

-

С помощью этой функции вы можете переопределить (заменить) все экземпляры объекта, используемые в последовательности, на другой. Вы предоставляете ID структуры экземпляра последовательности (полученный при создании экземпляра последовательности в комнате или с помощью одной из функций слоя комнаты - см. здесь), а также индекс объекта (определенный в браузере активов) для объекта, который вы хотите переопределить. Наконец, вы указываете индекс объекта или ID экземпляра для использования в качестве объекта, который будет переопределять последовательность (при указании ID экземпляра в качестве переопределяемого будет использоваться объект, из которого был создан экземпляр). Обратите внимание, что это можно сделать только для экземпляров последовательности (не для объектов последовательности) и должно быть сделано до начала воспроизведения последовательности, иначе она не будет работать.

-

-

Синтаксис:

-

sequence_instance_override_object(sequence_instance_struct, object_id, instance_or_object_id);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
sequence_instance_structСтруктура экземпляра последовательностиThe sequence instance struct to modify.
object_idОбъект АктивыThe object index of the object within the sequence to override.
instance_or_object_id Идентификаторактива или экземпляраобъекта The object index or instance ID to use to override the sequence objects.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _seq = layer_sequence_create("Background", 0, 0, seq_AnimatedBackground);
- var _seq_inst = layer_sequence_get_instance(_seq);
- sequence_instance_override_object(_seq_inst, obj_Trees_Winter, obj_Trees_Summer);

-

Приведенный выше код создает новый экземпляр последовательности на данном слое, а затем изменяет его таким образом, что все экземпляры объекта "obj_Trees_Winter" заменяются экземплярами объекта "obj_Trees_Summer".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_keyframe_new.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_keyframe_new.htm index d35a90825..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_keyframe_new.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_keyframe_new.htm @@ -1,96 +0,0 @@ - - - - - - sequence_keyframe_new - - - - - - - - - - - -

sequence_keyframe_new

-

С помощью этой функции можно создать новую структуру ключевых кадров дорожки, указав тип дорожки, к которой будет применен ключевой кадр. Аргумент type может быть любым из констант типа дорожки последовательности, перечисленных на этой странице.

-

Функция возвращает структуру ключевых кадров дорожки, в которую затем могут быть добавлены данные, прежде чем она будет назначена структуре дорожки.

-

-

Синтаксис:

-

sequence_keyframe_new(type);

- - - - - - - - - - - - - -
АргументТипОписание
typeТип дорожки последовательности ПостояннаяThe type of keyframe to create.
-

-

Возвращается:

-

Sequence Keyframe Struct

-

-

Пример:

-

myseq = sequence_create();
- var mytracks = array_create(1);
- mytracks[0] = sequence_track_new(seqtracktype_graphic);
- var graphickeys = array_create(1);
- graphickeys[0] = sequence_keyframe_new(seqtracktype_graphic);
- graphickeys[0].frame = 0;
- graphickeys[0].length = 1;
- graphickeys[0].stretch = true;
- graphickeys[0].disabled = false;
- var graphickeydata = array_create(1);
- graphickeydata[0] = sequence_keyframedata_new(seqtracktype_graphic);
- graphickeydata[0].spriteIndex = spr_Platform;
- graphickeydata[0].channel = 0;
- graphickeys[0].channels = graphickeydata;
- mytracks[0].name = "TestGraphicTrack";
- mytracks[0].keyframes = graphickeys;
- myseq.tracks = mytracks;

-

Приведенный выше код создает новую последовательность, затем создает дорожку графического актива и устанавливает на ней данные ключевых кадров. Затем эта дорожка назначается экземпляру.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_keyframedata_new.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_keyframedata_new.htm index 96ca8e5b2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_keyframedata_new.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_keyframedata_new.htm @@ -1,96 +0,0 @@ - - - - - - sequence_keyframedata_new - - - - - - - - - - - -

sequence_keyframedata_new

-

С помощью этой функции можно создать новую структуру данных ключевых кадров, указав тип дорожки, к которой будут применены данные ключевых кадров. Аргумент type может быть любым из констант типа дорожки последовательности, перечисленных на этой странице.

-

Функция возвращает структуру данных ключевых кадров трека, в которую могут быть добавлены значения, прежде чем они будут присвоены структуре ключевых кадров.

-

-

Синтаксис:

-

sequence_keyframedata_new(type);

- - - - - - - - - - - - - -
АргументТипОписание
typeТип дорожки последовательности ПостояннаяThe type of keyframe data to create.
-

-

Возвращается:

-

Sequence Keyframe Data Struct

-

-

Пример:

-

myseq = sequence_create();
- var mytracks = array_create(1);
- mytracks[0] = sequence_track_new(seqtracktype_graphic);
- var graphickeys = array_create(1);
- graphickeys[0] = sequence_keyframe_new(seqtracktype_graphic);
- graphickeys[0].frame = 0;
- graphickeys[0].length = 1;
- graphickeys[0].stretch = true;
- graphickeys[0].disabled = false;
- var graphickeydata = array_create(1);
- graphickeydata[0] = sequence_keyframedata_new(seqtracktype_graphic);
- graphickeydata[0].spriteIndex = spr_Platform;
- graphickeydata[0].channel = 0;
- graphickeys[0].channels = graphickeydata;
- mytracks[0].name = "TestGraphicTrack";
- mytracks[0].keyframes = graphickeys;
- myseq.tracks = mytracks;

-

Приведенный выше код создает новую последовательность, затем создает дорожку графического актива и устанавливает на ней данные ключевых кадров. Затем эта дорожка назначается экземпляру.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_track_new.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_track_new.htm index 37002065e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_track_new.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sequences/sequence_track_new.htm @@ -1,96 +0,0 @@ - - - - - - sequence_track_new - - - - - - - - - - - -

sequence_track_new

-

С помощью этой функции вы можете создать новую структуру дорожки последовательности, указав тип дорожки, которую вы хотите создать. Аргумент type может быть любым из констант типа дорожки последовательности, перечисленных на этой странице.

-

Функция возвращает структуру трека последовательности, в которую могут быть добавлены данные, прежде чем она будет присвоена объекту последовательности.

-

-

Синтаксис:

-

sequence_track_new(type);

- - - - - - - - - - - - - -
АргументТипОписание
typeТип дорожки последовательности ПостояннаяThe type of track to create.
-

-

Возвращается:

-

Sequence Track Struct

-

-

Пример:

-

myseq = sequence_create();
- var mytracks = array_create(1);
- mytracks[0] = sequence_track_new(seqtracktype_graphic);
- var graphickeys = array_create(1);
- graphickeys[0] = sequence_keyframe_new(seqtracktype_graphic);
- graphickeys[0].frame = 0;
- graphickeys[0].length = 1;
- graphickeys[0].stretch = true;
- graphickeys[0].disabled = false;
- var graphickeydata = array_create(1);
- graphickeydata[0] = sequence_keyframedata_new(seqtracktype_graphic);
- graphickeydata[0].spriteIndex = spr_Platform;
- graphickeydata[0].channel = 0;
- graphickeys[0].channels = graphickeydata;
- mytracks[0].name = "TestGraphicTrack";
- mytracks[0].keyframes = graphickeys;
- myseq.tracks = mytracks;

-

Приведенный выше код создает новую последовательность, затем создает дорожку графического актива и устанавливает на ней данные ключевых кадров. Затем эта дорожка назначается экземпляру.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/Shader_Constants.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/Shader_Constants.htm index 0ab8804e7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/Shader_Constants.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/Shader_Constants.htm @@ -1,162 +0,0 @@ - - - - - - Константы шейдера - - - - - - - - - - -

Константы шейдера

-

Помимо шейдерных функций и констант, определенных в справочных страницах OpenGL ES Shading Language (GLSL ES), вам также доступен ряд шейдерных констант, уникальных для GameMaker.

-

Следующие константы матрицы дисплея можно использовать в качестве индексов массива при использовании константы массива шейдера gm_Matrices:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
MATRIX_VIEWЭта константа индекса массива хранит индекс текущей матрицы представления. Возвращаемый индекс будет использоваться как значение массива при вызове константы gm_Matrices в коде шейдера.
MATRIX_PROJECTIONЭта константа индекса массива содержит индекс текущей матрицы проекции. Возвращаемый индекс будет использоваться как значение массива при вызове константы gm_Matrices в коде шейдера.
MATRIX_WORLDЭта константа индекса массива хранит индекс текущей матрицы мира. Это можно использовать для таких вещей, как освещение, если у вас есть информация о свете в мировом пространстве. Возвращаемый индекс будет использоваться как значение массива при вызове константы gm_Matrices в коде шейдера.
MATRIX_WORLD_VIEWЭта константа индекса массива содержит индекс результата умножения матриц мира и вида. Это часто используется для таких вещей, как туман. Возвращаемый индекс будет использоваться как значение массива при вызове константы gm_Matrices в коде шейдера.
MATRIX_WORLD_VIEW_PROJECTIONЭта индексная константа массива содержит индекс результата перемножения матриц мира, вида и проекции. Это матрица нормального преобразования, используемая для определения положения вершин. Возвращаемый индекс будет использоваться как значение массива при вызове константы gm_Matrices в коде шейдера.
MATRIX_MAXЭто не индекс массива, а скорее возвращает размер массива матрицы в вершинном шейдере.
MAX_VS_LIGHTSЭто не индекс массива, а скорее возвращает количество огней в вершинном шейдере.
-

-

Следующая константа также доступна для освещения:

- - - - - - - - - - - -
ПостояннаяОписание
MAX_VS_LIGHTSМаксимальное количество точечных и направленных огней, доступных в шейдере
-

-

Следующие предопределенные матричные формы и константы могут быть использованы в вашем шейдере для доступа к значениям, специфичным для GameMaker:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
gm_Matrices[matrix]Эта константа массива возвращает матрицу преобразования и является одной из доступных предопределенных форм, которые GameMaker создает для использования в редакторе кода шейдера. Индекс массива выбирается из одной из перечисленных выше констант.
gm_BaseTextureЭто константа 2D-сэмплера, которая возвращает текстуру текущего объекта, заданную GameMaker. Таким образом, это будет текущая sprite, поверхность или текстура, которая обычно используется при рисовании без вызова шейдера.
gm_LightingEnabledЭтот параметр можно использовать для получения или установки освещения GameMaker при использовании 3D.
gm_FogStartЭто можно использовать для получения расстояния, на котором полигоны начинают смешиваться с цветом тумана.
gm_RcpFogRangeЭто можно использовать для получения расстояния, на котором туман максимален и уже ничего не видно.
gm_PS_FogEnabledЭто вернет true или false, если на GPU включен пиксельный туман или нет.
gm_FogColourС его помощью можно получить цвет тумана, используемый GameMaker.
gm_VS_FogEnabledЭто вернет true или false, если на GPU включен вершинный туман или нет.
gm_AlphaTestEnabledЭто можно использовать для получения альфа-тестирования в шейдере. См. gpu_set_alphatestenable() более подробную информацию об альфа-тестировании.
gm_AlphaRefValueЭто можно использовать для получения текущего опорного значения альфа-тестирования. См. gpu_set_alphatestref() дополнительную информацию об эталоне альфа-тестирования.
-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/Shaders.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/Shaders.htm index ea94c2e41..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/Shaders.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/Shaders.htm @@ -1,161 +0,0 @@ - - - - - - Шейдеры - - - - - - - - - - -

Шейдеры

-

Шейдеры - это невероятно мощный инструмент для манипулирования тем, что и как отображается на экране с помощью видеокарты. Поскольку эти крошечные программы выполняются на самой видеокарте, это означает, что они очень быстро обрабатываются, освобождая ценные циклы процессора для более сложной игровой логики.

-

Для создания шейдера необходимо написать вершинный шейдер и фрагментный шейдер (также известный как пиксельный шейдер) с помощью редактора шейдеров. Даже если (например) вы хотите изменить только положение вершин для рисуемого экземпляра или изменить только значения цвета для пикселей, для работы полного шейдера вам все равно понадобятся обе программы.

-

ПРИМЕЧАНИЕ Шейдеры не позволяют изменять значения переменных, которые вы передаете в них, поэтому во всей документации, которая на них ссылается, они будут называться константами шейдера.

-

Полный обзор доступных функций и переменных GLSL ES, которые можно использовать для программирования шейдеров, можно найти на справочных страницах OpenGL ES Shading Language (GLSL ES). Следующая ссылка также полезна, поскольку содержит несколько кратких справочных карточек по API OpenGL ES (обратите внимание, что только две последние карточки применимы к GameMaker): OpenGL ES Reference Cards.

-

Использовать шейдер в своих проектах очень просто, и для того, чтобы получить от него самое необходимое, требуется всего пара строк кода:

-

shader_set(myShader);
- draw_self();
- shader_reset();

-

Как видите, они используются так же, как режимы наложения и поверхности, когда вы сначала выбираете (устанавливаете) шейдер, рисуете с его помощью то, что хотите, а затем снова сбрасываете цель рисования. Если вы хотите отобразить весь экран через шейдер, а не только один sprite или фон, вам нужно установить поверхность для захвата текущего вида, а затем передать ее в шейдер (см. раздел " Поверхности" для получения дополнительной информации).

-

ПРИМЕЧАНИЕ: Шейдеры, как и все, что связано с рисованием, можно использовать только в событии draw. Также стоит отметить, что если вы пытаетесь использовать значение цвета в шейдере, а объект не имеет текстуры, результат получится черным.

-

Если используемый шейдер имеет входные значения, они устанавливаются с помощью функций униформы. Сначала нужно получить хэндл униформы (который, по сути, является значением ID для устанавливаемой униформы) с помощью функции shader_get_uniform() в событии Create экземпляра, использующего шейдер, а затем сохранить эти дескрипторы в переменных, примерно так:

-

colour_to_find = shader_get_uniform(sShaderDemo5, "f_Colour1");
- colour_to_set = shader_get_uniform(sShaderDemo5, "f_Colour2");

-

Когда у вас есть равномерные ручки, их можно установить в коде шейдера для события Draw Event следующим образом:

-

shader_set(sShaderDemo5);
- shader_set_uniform_f(colour_to_find, 1, 1, 1);
- shader_set_uniform_f(colour_to_set, 1, 0, 0);
- draw_sprite(sprite_index, image_index, x + 24, y);
- shader_reset();

-

И последнее, что следует отметить: хотя шейдеры принимаются на всех платформах, они все же зависят от устройства, и если аппаратное или программное обеспечение устройства не может использовать шейдеры, то вы получите ошибку. Поэтому рекомендуется проверить, что шейдер скомпилирован, прежде чем устанавливать форму или использовать сам шейдер, например, так:

-

if (shader_is_compiled(myShader))
- {
-     shader_set(myShader);
-     draw_self();
-     shader_reset();
- }
- else show_debug_message("Shader failed");

-

В качестве дополнительной проверки вы также можете вызвать функцию shaders_are_supported() чтобы проверить, поддерживает ли аппаратное обеспечение шейдеры. В общем случае вы должны выполнять эти проверки при запуске игры и сохранять результаты в глобальной переменной, чтобы затем проверить их позже.

-

Важно отметить, что GameMaker также поддерживает некоторые макросы условной компиляции, которые могут быть использованы в шейдерах GLSL ES, чтобы они могли выполнять альтернативный код на определенных поддерживаемых платформах. Макросы и платформы, на которых они будут генерироваться, показаны в таблице ниже:

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Макрос шейдераЗначениеЦелевая платформа
_YY_GLSLES_1Все целевые платформы
_YY_GLSL_2Mac и Ubuntu (Linux)
_YY_HLSL11_3Windows, UWP, XboxOne
_YY_PSSL_4PS4
-

-

При компиляции проекта GameMaker на любой из перечисленных платформ с использованием шейдера формата GLSL ES будет сгенерирован один из вышеуказанных макросов, который затем можно будет проверить в коде шейдера следующим образом:

-

#ifdef _YY_HLSL11_
- // HLSL shader code here
- #else
- // GLSL shader code here
- #endif

-

Если вы новичок в шейдерах или хотите получить более полное руководство по их созданию и использованию в GameMaker, то обратитесь к следующей странице руководства:

- -

-

Для рисования и настройки шейдеров доступны следующие функции:

-

- -

-

У нас также есть специальная функция, которая определяет глобальное состояние для всех шейдеров:

- -

-

При работе с текстурными сэмплерами в шейдерах вам понадобится информация об используемой текстуре, и в этом случае вы можете использовать следующие функции:

-

- -

-

Хотя в данном руководстве не рассматриваются все функции и переменные шейдеров Open GL, оно содержит список тех, которые уникальны для GameMaker. Эти константы не являются частью спецификации Open GL для шейдеров и предоставляются для упрощения интеграции шейдеров в ваши проекты.

- -

-

Наконец, GameMaker позволяет вам определять собственные форматы вершин, на основе которых вы можете создавать свои собственные примитивы. Это может значительно ускорить работу шейдеров или расширить их возможности и создать удивительные эффекты. Информацию об этом вы найдете в следующих разделах:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_current.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_current.htm index ac6311b56..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_current.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_current.htm @@ -1,52 +0,0 @@ - - - - - - shader_current - - - - - - - - - - - -

shader_current

-

Эта функция возвращает индекс ID шейдера, который в данный момент используется для рендеринга, или возвращает -1, если шейдер не используется.

-

-

Синтаксис:

-

shader_current();

-

-

Возвращается:

-

Shader Asset or -1 (if no shader is assigned)

-

-

Пример:

-

if (shader_current() == -1)
- {
-     shader_set(sh_warp);
- }

-

Приведенный выше код проверяет текущий шейдер, и если он возвращает -1 (шейдер не используется), то шейдер устанавливается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_enable_corner_id.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_enable_corner_id.htm index b3de0d6d9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_enable_corner_id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_enable_corner_id.htm @@ -1,61 +0,0 @@ - - - - - - shader_enable_corner_id - - - - - - - - - - -

shader_enable_corner_id

-

С помощью этой функции вы можете установить глобальное состояние для всех используемых шейдеров, при включении которого шейдер "крадет" 2 бита из входных значений цвета. Первый - из младшего бита значения красного цвета, а второй - из младшего - младшего бита значения синего цвета. Эти значения затем могут быть восстановлены в шейдере, чтобы определить, с какой вершиной вы имеете дело (т.е. с каким углом).

-

-

Синтаксис:

-

shader_enable_corner_id(enable);

- - - - - - - - - - - -
АргументТипОписание
enableEnable (true) или отключить (false) эту функцию.
-

-

Возвращается:

-

-

-

Пример:

-

shader_enable_corner_id(true);

-

Приведенный выше код позволит использовать биты цвета для идентификатора угла для всех шейдеров.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_get_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_get_name.htm index c6c392aad..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_get_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_get_name.htm @@ -1,61 +0,0 @@ - - - - - - shader_get_name - - - - - - - - - - - -

shader_get_name

-

С помощью этой функции можно получить имя ресурса шейдера. Вы вводите уникальное значение ID шейдера, имя которого нужно получить, и функция возвращает имя ресурса в виде строки.

-

-

Синтаксис:

-

shader_get_name(shader);

- - - - - - - - - - - -
АргументТипОписание
shaderThe index of the shader to get the name of.
-

-

Возвращается:

-

-

-

Пример:

-

var _shader = shader_current();
var _name = shader_get_name(_shader);
draw_text(32, 32, "Debug - Currently Rendering = " + _name);

-

Приведенный выше код получит имя заданного шейдера и нарисует его на экране.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_get_sampler_index.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_get_sampler_index.htm index f048084be..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_get_sampler_index.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_get_sampler_index.htm @@ -1,73 +0,0 @@ - - - - - - shader_get_sampler_index - - - - - - - - - - - -

shader_get_sampler_index

-

Поскольку вы не можете изменить значение шейдерного сэмплера в самом шейдере, вы должны установить его перед вызовом шейдера с помощью одной из доступных функций унифицированного набора. Однако для этого необходимо сначала вызвать эту функцию, чтобы получить "хэндл" шейдерного сэмплера, который вы хотите установить.

-

ПРИМЕЧАНИЕ Хотя шейдер состоит из двух отдельных программ (вершинной и фрагментной), эта функция не делает различий между ними и возвращает хэндл образца шейдера из любой из них.

-

-

Синтаксис:

-

shader_get_sampler_index(shader, uniform);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
shaderШейдерный активThe index of the shader to use.
uniformСтрокаThe shader sampler to get the handle of (a string).
-

-

Возвращается:

-

Shader Sampler Handle

-

-

Пример:

-

glassshader_bgsampler = shader_get_sampler_index(GlassShader, "s_BackgroundSampler")
- spr = sprite_get_texture(sprite_index, 0);
- shader_set(GlassShader);
- texture_set_stage(glassshader_bgsampler, spr);
- shader_reset();

-

Приведенный выше код получит хэндл для сэмплера в шейдере с индексом "GlassShader", а затем установит константу этого шейдера на заданную текстуру sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_get_uniform.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_get_uniform.htm index 6b50c1266..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_get_uniform.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_get_uniform.htm @@ -1,69 +0,0 @@ - - - - - - shader_get_uniform - - - - - - - - - - - -

shader_get_uniform

-

Поскольку вы не можете изменить значение шейдерной константы в самом шейдере, вы должны установить ее перед вызовом шейдера с помощью одной из доступных функций унифицированного набора. Однако для этого необходимо сначала вызвать эту функцию, чтобы получить "хэндл" шейдерной константы, которую вы хотите изменить.

-

ПРИМЕЧАНИЕ: Хотя шейдер состоит из двух отдельных программ (вершинной и фрагментной), эта функция не делает различий между ними и возвращает хэндл константы шейдера любой из них.

-

-

Синтаксис:

-

shader_get_uniform(shader, uniform);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
shaderШейдерный активThe index of the shader to use.
uniformСтрокаThe shader constant to get the handle of (a string).
-

-

Возвращается:

-

Shader Uniform Handle

-

-

Пример:

-

shader_params = shader_get_uniform(shd_glass, "u_vRefractColour");

-

Приведенный выше код получит хэндл константы шейдера "u_vRefractColour".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_is_compiled.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_is_compiled.htm index 206cbe2a4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_is_compiled.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_is_compiled.htm @@ -1,66 +0,0 @@ - - - - - - shader_is_compiled - - - - - - - - - - - -

shader_is_compiled

-

Эта функция проверяет шейдер во время выполнения, чтобы убедиться, что он был успешно скомпилирован. Если это так, то функция возвращает true, в противном случае возвращается false. Эту функцию следует использовать в начале игры, чтобы убедиться, что платформа, на которой запущена ваша игра, успешно скомпилировала все используемые шейдеры (особенно на Windows, где некоторые компьютеры могут использовать DX9 с уровнем шейдеров 2.0, а не более позднюю версию с уровнем шейдеров 3.0).

-

Если ваш шейдер НЕ был скомпилирован, и вы вызовете команду shader_set() игра потерпит крах, поэтому стоит иметь какую-то проверку всякий раз, когда вы используете что-то, кроме простых GLSL ES шейдеров.

-

-

Синтаксис:

-

shader_is_compiled(shader);

- - - - - - - - - - - -
АргументТипОписание
shaderThe shader to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

global.GFX = false;
- if (shader_is_compiled(sh_glass) && shader_is_compiled(sh_warp))
- {
-     global.GFX = true;
- }

-

Приведенный выше код установит глобальную переменную в значение false, а затем, если оба проверяемых шейдера скомпилированы правильно, она будет установлена в значение true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_reset.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_reset.htm index a2e15ed3f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_reset.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_reset.htm @@ -1,50 +0,0 @@ - - - - - - shader_reset - - - - - - - - - - -

shader_reset

-

Эта функция сбрасывает шейдер, используемый для рисования, и должна вызываться, когда вы больше не хотите использовать текущий шейдер (установленный с помощью функции shader_set()).

-

-

Синтаксис:

-

shader_reset();

-

-

Возвращается:

-

-

-

Пример:

-

shader_set(shader_Glass);
- draw_self();
- shader_reset();

-

Приведенный выше код установит шейдер, который будет использоваться для отрисовки, затем отрисует текущий sprite, используемый для экземпляра, который его использует. Наконец, он сбросит шейдер, чтобы вернуться к шейдеру по умолчанию GameMaker.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set.htm index db040c65e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set.htm @@ -1,61 +0,0 @@ - - - - - - shader_set - - - - - - - - - - -

shader_set

-

С помощью этой функции вы можете установить цель рисования на заданный шейдер, и все дальнейшее рисование будет выполняться с его помощью. Завершить использование шейдера можно с помощью функции shader_reset().

-

-

Синтаксис:

-

shader_set(shader);

- - - - - - - - - - - -
АргументТипОписание
shaderThe index of the shader to use.
-

-

Возвращается:

-

-

-

Пример:

-

shader_set(shader_Glass);
- draw_self();
- shader_reset();

-

Приведенный выше код установит шейдер, который будет использоваться для отрисовки, а затем отрисует текущий sprite, используемый для экземпляра, который его использует.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_f.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_f.htm index 700885211..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_f.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_f.htm @@ -1,85 +0,0 @@ - - - - - - shader_set_uniform_f - - - - - - - - - - -

shader_set_uniform_f

-

С помощью этой функции можно установить значение (или значения) константы шейдера. Предварительно вы должны получить "хэндл" константы с помощью функции shader_get_uniform()и вы должны знать тип константы, чтобы передать ей правильное количество значений с плавающей запятой, т.е. если у вас есть vec2, вам нужно передать в функцию два значения.

-

Исключением из этого правила является работа с 32-битными значениями цвета. Вы можете передать в шейдер до восьми 32-битных значений цвета, и они будут автоматически преобразованы в значения vec4 0 - 1. Однако для этого вы должны использовать имя константы шейдера in_Colour для одного цвета, или in_Colour0, in_Colour1 и т.д. вплоть до in_Colour7 для нескольких входных значений. Следующие примеры показывают, как это будет выглядеть в самом шейдере:

-

    //Single colour
-     attribute vec2 in_Position;
-     attribute vec4 in_Colour;
-     attribute vec2 in_TextureCoord;
-
-     //Multiple colours
-     attribute vec2 in_Position;
-     attribute vec4 in_Colour0;
-     attribute vec4 in_Colour1;
-     attribute vec2 in_TextureCoord; -

-

Обратите внимание, что если вы хотите сделать сжатые нормали и т.д., используя 4-байтовый формат цвета, то вам также придется использовать формат "in_Colour", как показано выше.

-

ПРИМЕЧАНИЕ: Все формы должны быть установлены после вызова функции shader_set(), и до вызова shader_reset().

-

-

Синтаксис:

-

shader_set_uniform_f(handle, value1 [, value2, value3, value4]);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
handleРавномерная обработка шейдераThe handle of the shader constant to set.
value1 ... value4РеальноThe floating point value (or values) to set the shader constant to.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

shader_set(shader_Glass);
- shader_params = shader_get_uniform(shader_glass, "u_vParams");
- shader_set_uniform_f(shader_params, 0.1, 0.8, 0.25);
- draw_self();
- shader_reset();

-

Приведенный выше код получит хэндл шейдерной константы "u_vParams" (a vec3), затем установит эту константу в заданные значения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_f_array.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_f_array.htm index 046332444..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_f_array.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_f_array.htm @@ -1,75 +0,0 @@ - - - - - - shader_set_uniform_f_array - - - - - - - - - - -

shader_set_uniform_f_array

-

С помощью этой функции можно установить константу шейдера для хранения массива значений. Вы должны предварительно получить "хэндл" константы с помощью функции shader_get_uniform(), и вы должны были предварительно инициализировать массив.

-

ПРИМЕЧАНИЕ: Все формы должны быть установлены после вызова функции shader_set(), и до вызова shader_reset().

-

-

Синтаксис:

-

shader_set_uniform_f_array(handle, array);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
handleРавномерная обработка шейдераThe handle of the shader constant to set.
arrayМассивA previously initialised array of floating point values.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

shader_set(shader_Glass);
- tex_array[0] = 0.5;
- tex_array[1] = 0.1;
- tex_array[2] = 0.25;
- shader_params = shader_get_uniform(shader_glass, "u_vParams");
- shader_set_uniform_f_array(shader_params, tex_array);
- draw_self();
- shader_reset();

-

Приведенный выше код получит хэндл константы шейдера "u_vParams", а затем установит эту константу в заданный массив.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_i.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_i.htm index 291ca2529..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_i.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_i.htm @@ -1,72 +0,0 @@ - - - - - - shader_set_uniform_i - - - - - - - - - - -

shader_set_uniform_i

-

С помощью этой функции можно установить значение (или значения) константы шейдера. Предварительно вы должны получить "хэндл" константы с помощью функции shader_get_uniform()и вы должны знать тип константы, чтобы передать ей нужное количество целых значений, т.е. если у вас есть vec2, то вам нужно передать в функцию два значения.

-

ПРИМЕЧАНИЕ: Все формы должны быть установлены после вызова функции shader_set(), и до вызова shader_reset().

-

-

Синтаксис:

-

shader_set_uniform_i(handle, value1 [, value2, value3, value4]);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
handleРавномерная обработка шейдераThe handle of the shader constant to set.
value1 ... value4РеальноThe integer value (or values) to set the shader constant to.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

shader_set(shader_Glass);
- shader_params = shader_get_uniform(shader_glass, "u_vParams");
- shader_set_uniform_i(shader_params, 0, 65, 255);
- draw_self();
- shader_reset();

-

Приведенный выше код получит хэндл шейдерной константы "u_vParams" (a vec3), затем установит эту константу в заданные целочисленные значения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_i_array.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_i_array.htm index e4a4d2a19..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_i_array.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_i_array.htm @@ -1,76 +0,0 @@ - - - - - - shader_set_uniform_i_array - - - - - - - - - - -

shader_set_uniform_i_array

-

С помощью этой функции можно установить константу шейдера для хранения массива значений. Вы должны предварительно получить "хэндл" константы с помощью функции shader_get_uniform(), и вы должны были предварительно инициализировать массив.

-

ПРИМЕЧАНИЕ: Все формы должны быть установлены после вызова функции shader_set(), и до вызова shader_reset().

-

-

Синтаксис:

-

shader_set_uniform_i_array(handle, array);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
handleРавномерная обработка шейдераThe handle of the shader constant to set.
arrayМассивA previously initialised array of integer values.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

shader_set(shader_Glass);
- col_array[0] = 255;
- col_array[2] = 255;
- col_array[3] = 64;
- col_array[4] = 128;
- shader_params = shader_get_uniform(shader_tint, "cColourArray");
- shader_set_uniform_i_array(shader_params, col_array);
- draw_self();
- shader_reset();

-

Приведенный выше код получит хэндл константы шейдера "cColourArray", а затем установит эту константу в заданный массив.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_matrix.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_matrix.htm index 30f483e43..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_matrix.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_matrix.htm @@ -1,67 +0,0 @@ - - - - - - shader_set_uniform_matrix - - - - - - - - - - -

shader_set_uniform_matrix

-

С помощью этой функции вы можете установить значение (или значения) константы шейдера на текущую матрицу преобразования (заданную с помощью матричных функций). Вы должны предварительно получить "хэндл" константы с помощью функции shader_get_uniform().

-

ПРИМЕЧАНИЕ: Все формы должны быть установлены после вызова функции shader_set(), и до вызова shader_reset().

-

-

Синтаксис:

-

shader_set_uniform_matrix(handle);

- - - - - - - - - - - - - -
АргументТипОписание
handleРавномерная обработка шейдераThe handle of the shader constant to set.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

shader_set(shader_Glass);
- shader_matrix = shader_get_uniform(shader_glass, "u_vMatrix");
- shader_set_uniform_matrix(shader_matrix);
- draw_self();
- shader_reset();

-

Приведенный выше код получит хэндл константы шейдера "u_vMatrix", а затем установит эту константу в текущую матрицу преобразования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_matrix_array.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_matrix_array.htm index f57e4baa8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_matrix_array.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shader_set_uniform_matrix_array.htm @@ -1,72 +0,0 @@ - - - - - - shader_set_uniform_matrix_array - - - - - - - - - - -

shader_set_uniform_matrix_array

-

С помощью этой функции вы можете установить константу шейдера для хранения массива значений матрицы. Вы должны предварительно получить "хэндл" константы с помощью функции shader_get_uniform()и предварительно инициализировать массив как массив значений с плавающей точкой, где каждая последовательная группа из 16 плавающих значений является матрицей 4x4.

-

ПРИМЕЧАНИЕ: Все формы должны быть установлены после вызова функции shader_set(), и до вызова shader_reset().

-

-

Синтаксис:

-

shader_set_uniform_matrix_array(handle, array);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
handleРавномерная обработка шейдераThe handle of the shader constant to set.
arrayМассивA previously initialised array of floating point values.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

shader_set(shader_Glass);
- shader_params = shader_get_uniform(shader_tint, "cMatrixArray");
- shader_set_uniform_matrix_array(shader_params, matrix_array);
- draw_self();
- shader_reset();

-

Приведенный выше код получит хэндл константы шейдера "cMatrixArray", а затем установит эту константу в заданный массив.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shaders_are_supported.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shaders_are_supported.htm index 0e44b5802..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shaders_are_supported.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Shaders/shaders_are_supported.htm @@ -1,56 +0,0 @@ - - - - - - shaders_are_supported - - - - - - - - - - - -

shaders_are_supported

-

Эта функция проверяет, поддерживает ли выбранная целевая платформа шейдеры, и возвращает true, если поддерживает, и false, если не поддерживает. Важно отметить, что на Android, если в проекте не определены шейдерные ресурсы, то функция всегда будет возвращать false, независимо от того, поддерживает устройство шейдеры или нет.

-

-

Синтаксис:

-

shaders_are_supported();

-

-

Возвращается:

-

-

-

Пример:

-

global.GFX = false;
- if (shaders_are_supported())
- {
-     if (shader_is_compiled(sh_glass) && shader_is_compiled(sh_warp))
-     {
-         global.GFX = true;
-     }
- }

-

Приведенный выше код установит глобальную переменную в значение false, а затем, если платформа поддерживает шейдеры и оба проверяемых шейдера скомпилированы правильно, она будет установлена в значение true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Nine_Slice_Functions.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Nine_Slice_Functions.htm index 8b38123b9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Nine_Slice_Functions.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Nine_Slice_Functions.htm @@ -1,47 +0,0 @@ - - - - - - Девять функций нарезки - - - - - - - - - - -

Девять функций нарезки

-

В дополнение к разделу Nine Slice в редакторе спрайтов, GameMaker предоставляет функции для установки свойств Nine Slice для sprites во время выполнения. Прежде чем читать об этих функциях, рекомендуется прочитать эту страницу, чтобы получить представление о технике Nine Slice.

-

Следующие функции можно использовать для получения и изменения свойств Nine Slice для актива sprite во время выполнения:

- -

Эти функции используют структуру Nine Slice, о содержимом которой вы можете прочитать на этой странице.

-

Рисование спрайтов девяти ломтиков

-

Отдельных функций для рисования Nine Slice sprites не существует, так как они работают с существующими функциями рисования спрайтов (за исключением функций, которые рисуют только часть sprite или искажают его, например, draw_sprite_part() или draw_sprite_pos()).

-

Рекомендуется использовать draw_sprite_stretched() для рисования Nine Slice sprite, так как она позволяет указать абсолютные размеры sprite в пикселях и будет удобна в использовании вместе с Nine Slice. Вы также можете использовать draw_sprite_ext() которая вместо этого принимает значения масштаба.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Nine_Slice_Struct.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Nine_Slice_Struct.htm index 84038219f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Nine_Slice_Struct.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Nine_Slice_Struct.htm @@ -1,166 +0,0 @@ - - - - - - Структура из девяти ломтиков - - - - - - - - - - -

Структура девяти ломтиков

-

Структуру Nine Slice можно создать с помощью функции sprite_nineslice_create(), или получить из sprite с помощью sprite_get_nineslice(). Эта структура будет содержать свойства, которые могут быть изменены и применены к sprite с помощью sprite_set_nineslice().

-

При извлечении из sprite, изменение значений в этой структуре повлияет на исходный sprite.

-

В этой структуре будут доступны следующие свойства:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Структура из девяти ломтиков
ПеременнаяТипОписание
enabledБулевоЭто булево значение будет истинным , если Nine Slicing включен для sprite, и ложным , если он отключен. Вы можете изменить это значение, чтобы включить или отключить Nine Slicing для sprite.
leftРеальноЭто смещение левой направляющей по оси x относительно левого края sprite.
rightРеальноЭто смещение правой направляющей по оси x относительно правого края sprite.
topРеальноЭто смещение верхней направляющей по оси y относительно верхнего края sprite.
bottomРеальноЭто смещение нижней направляющей по оси y относительно нижнего края sprite.
tilemodeМассив из Режим плитки ПостояннаяsВозвращает массив, содержащий режимы плитки для краевого и центрального срезов.
-

-

Режимы плитки

-

Режим Tile Mode каждого фрагмента может быть прочитан или изменен с использованием этих констант в качестве индекса массива:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Девять ломтиков кромки Постоянная
ПостояннаяОписание
nineslice_leftЛевый краевой срез
nineslice_topВерхний краевой срез
nineslice_rightПравый краевой срез
nineslice_bottomНижний краевой срез
nineslice_centreЦентральный ломтик
-

Режим плитки для среза будет (или может быть установлен) одной из следующих констант:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Режим плитки Постоянная
ПостояннаяОписание
nineslice_stretchЛомтик будет растянут
nineslice_repeatНарезка будет повторяться
nineslice_mirrorСрез будет повторяться путем зеркального отображения
nineslice_blankЛомтик не будет растягиваться или повторяться, в результате чего после него останется пустая область
nineslice_hideЛомтик не появится вообще
-

Поскольку tilemode является массивом, для изменения режима плитки среза необходимо использовать синтаксис массива. Приведенный ниже пример кода устанавливает режим черепицы верхнего фрагмента на Repeat:

-

Пример:

-

var _nineslice = sprite_get_nineslice(spr_box);
-
- _nineslice.tilemode[nineslice_top] = nineslice_repeat;

-

Более подробную информацию о технике "Девять ломтиков" см. на этой странице.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/Animation.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/Animation.htm index c9ceea584..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/Animation.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/Animation.htm @@ -1,54 +0,0 @@ - - - - - - Анимация - - - - - - - - - - -

Анимация

-

При работе со скелетной анимацией sprites, созданной с помощью Spine, вы можете иметь несколько анимаций на один объект, и поэтому вам необходимо иметь возможность переключаться между ними в соответствующие моменты игры. Чтобы помочь вам в этом, GameMaker предоставляет следующие функции:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_clear.htm index a427c43c1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_clear.htm @@ -1,75 +0,0 @@ - - - - - - skeleton_animation_clear - - - - - - - - - - -

skeleton_animation_clear

-

Эта функция очистит указанную дорожку анимации от всех анимаций, готовых к повторному назначению.

-

-

Синтаксис:

-

skeleton_animation_clear(track);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
trackРеальноThe animation track to clear.
resetBoolean  Whether to reset the skeleton to its setup pose. Default is false.
durationReal  How long animating the skeleton to setup pose should take, in seconds.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if mouse_check_button(mb_right)
- {
-     skeleton_animation_clear(1);
- }

-

Приведенный выше код очистит дорожку анимации 1 при нажатии правой кнопки мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get.htm index 1a209118f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get.htm @@ -1,55 +0,0 @@ - - - - - - skeleton_animation_get - - - - - - - - - - - -

skeleton_animation_get

-

С помощью этой функции вы можете получить текущий набор анимации, используемый вашей программой скелетной анимации sprite. Возвращаемое значение - строка, которая будет именем набора, как вы определили его в вашей программе скелетной анимации.

-

-

Синтаксис:

-

skeleton_animation_get();

-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check_pressed(vk_space)
- {
-     if (skeleton_animation_get() != "jump")
-     {
-         skeleton_animation_set("jump");
-     }
- }

-

Приведенный выше код изменит используемый набор анимации на набор "прыжок" при нажатии клавиши пробела, но только если текущий используемый набор еще не "прыжок".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_duration.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_duration.htm index 8a833af49..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_duration.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_duration.htm @@ -1,66 +0,0 @@ - - - - - - skeleton_animation_get_duration - - - - - - - - - - - -

skeleton_animation_get_duration

-

Эта функция возвращает время, необходимое для выполнения заданного набора анимации перед возвратом к началу. Возвращаемое значение выражается в секундах.

-

-

Синтаксис:

-

skeleton_animation_get_duration(animname);

- - - - - - - - - - - -
АргументТипОписание
animnameThe name (a string) of the animation set to use.
-

-

Возвращается:

-

-

-

Пример1:

-

time += delta_time / 1000000;
var duration = skeleton_animation_get_duration(skeleton_animation_get());
var frame = floor((image_number * (mTime / duration)) + 0.5) % image_number;
image_index = frame;
draw_self(); -

-

Приведенный выше код установит image_index в правильное значение для текущей назначенной скелетной анимации sprite.

-

Пример2:

-

time += delta_time / 1000000;
var d = skeleton_animation_get_duration("walk");
if time > d time -= d;
draw_skeleton_time(sprite_index, "walk", "skin1", time, x, y, image_xscale, image_yscale, image_angle, - c_white);

-

Приведенный выше код отрисует заданную скелетную анимацию sprite, используя дельта-время для установки рисуемого кадра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_event_frames.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_event_frames.htm index e1f8106ee..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_event_frames.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_event_frames.htm @@ -1,85 +0,0 @@ - - - - - - skeleton_animation_get_event_frames - - - - - - - - - - - -

skeleton_animation_get_event_frames

-

С помощью этой функции можно получить все кадры для заданного события в заданной анимации. Вы передаете имя скелетной анимации (в виде строки, как определено в программе, используемой для создания анимации, или как возвращено с помощью функции skeleton_animation_get()) и имя события. Функция возвращает массив с кадрами для данного события.

-

Если указанное имя события не существует, функция вернет массив с -1 в качестве первого (и единственного) элемента.

-

-

Синтаксис:

-

skeleton_animation_get_event_frames(anim_name, event_name);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
anim_nameСтрокаThe animation name to get the frames of.
event_nameСтрокаThe event name to get the frames for.
-

-

Возвращается:

-

Array of Reals

-

-

Пример:

-

var _frames = skeleton_animation_get_event_frames(skeleton_animation_get(), "Footstep");
-
- if (_frames[0] != -1)
- {
-     var _count = array_length(_frames);
-     var _current_frame = skeleton_animation_get_frame(0);
-
-     for (var i = 0; i < _count; i ++)
-     {
-         if (_frames[i] == _current_frame)
-         {
-             audio_play_sound(snd_footstep, 1, false);
-             break;
-         }
-     }
- } -

-

Приведенный выше код получает кадры для события "Footstep". Если он вернул массив с действительными кадрами, то он проходит по нему и проверяет, равен ли текущий кадр любому из кадров в массиве. В этом случае он воспроизводит звуковой эффект шагов и прерывает цикл.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_ext.htm index ad1ae11a1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_ext.htm @@ -1,67 +0,0 @@ - - - - - - skeleton_animation_get_ext - - - - - - - - - - - -

skeleton_animation_get_ext

-

Одна скелетная анимация sprite может иметь различные наборы анимации, и эти наборы могут быть назначены различным дорожкам, так что вы можете "смешивать и сопоставлять" наборы анимации. Эта функция возвращает имя набора анимации, используемого в данный момент на заданном номере дорожки (заданном функцией skeleton_animation_set_ext).

-

-

Синтаксис:

-

skeleton_animation_get_ext(track);

- - - - - - - - - - - - - -
АргументТипОписание
trackРеальноThe track number to get the animation set name of.
-

-

-

Возвращается:

-

String

-

-

Пример:

-

if skeleton_animation_get_ext(1) != "bodyfight"
- {
-     skeleton_animation_set_ext("bodyfight", 1);
- }

-

Приведенный выше код изменит набор анимации, используемый дорожкой 1, на "bodyfight", если это не так.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_frame.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_frame.htm index 4d0fb2936..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_frame.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_frame.htm @@ -1,70 +0,0 @@ - - - - - - skeleton_animation_get_frame - - - - - - - - - - - -

skeleton_animation_get_frame

-

Эта функция возвращает номер кадра анимации на указанной дорожке анимации. Функция вернет -1, если на указанную дорожку не назначена анимация.

-

-

Синтаксис:

-

skeleton_animation_get_frame(track);

- - - - - - - - - - - - - -
АргументТипОписание
trackРеальноThe animation track to get the frame of.
-

-

Возвращается:

-

Real

-

-

Пример:

-

var frame = skeleton_animation_get_frame(0);
- if (frame > 0 && frame < 2)
- {
-     var box = skeleton_get_minmax();
-     var ww = (box[2] - box[0]) / 2;
-     var hh = (box[3] - box[1]) / 2;
-     part_particles_create(global.p_sys, box[0] + ww, box[1] + hh, global.Stars, 10);
- }

-

Приведенный выше код проверит текущий кадр анимации, назначенный дорожке 0, а затем вырвет несколько частиц из точки в середине общей граничной области для sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_frames.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_frames.htm index fcdf7b297..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_frames.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_frames.htm @@ -1,65 +0,0 @@ - - - - - - skeleton_animation_get_frames - - - - - - - - - - - -

skeleton_animation_get_frames

-

Эта функция может быть использована для получения количества кадров, которые имеет любая заданная скелетная анимация. Вы задаете имя скелетной анимации (в виде строки, как определено в программе, используемой для создания анимации, или как возвращено с помощью функции skeleton_animation_get()), а функция возвращает количество кадров, которое она имеет, в виде целого числа. Функция возвращает 0, если указанная анимация не существует.

-

-

Синтаксис:

-

skeleton_animation_get_frames(anim_name);

- - - - - - - - - - - - - -
АргументТипОписание
anim_nameСтрокаThe animation name to get the frames of.
-

-

Возвращается:

-

Real

-

-

Пример:

-

var num = skeleton_animation_get_frames(skeleton_animation_get());
- image_index = num -1;
- image_speed = 0;

-

Приведенный выше код получит количество кадров в анимации, затем установит sprite на последний кадр и остановит анимацию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_position.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_position.htm index c3856a62f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_position.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_get_position.htm @@ -1,67 +0,0 @@ - - - - - - skeleton_animation_get_position - - - - - - - - - - - -

skeleton_animation_get_position

-

Эта функция возвращает позицию анимации на указанном анимационном треке в виде значения от 0 до 1. Таким образом, вы можете получить позицию трека в процентах, где значение 0 соответствует 0%, а значение 1 - 100%.

-

Возвращает -1, если для конкретного трека не назначена анимация или если для экземпляра не установлен sprite.

-

-

Синтаксис:

-

skeleton_animation_get_position(track);

- - - - - - - - - - - - - -
АргументТипОписание
trackРеальноThe animation track to get the position of.
-

-

Возвращается:

-

Real

-

-

Пример:

-

var _position = skeleton_animation_get_position(0);
- var _position_percent = _position * 100;
- show_debug_message("The skeleton animation position on track 0 is at " + string(_position_percent) + "%.");

-

Приведенный выше код проверяет текущую позицию скелетной анимации, назначенной дорожке 0, и сохраняет ее во временной переменной _position. Затем он преобразует это значение в проценты, умножая его на 100, и сохраняет результат в другой временной переменной _position_percent.
- Наконец, он выводит отладочное сообщение, в котором отображается значение процента.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_is_finished.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_is_finished.htm index fefb80f45..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_is_finished.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_is_finished.htm @@ -1,68 +0,0 @@ - - - - - - skeleton_animation_is_finished - - - - - - - - - - - - -

skeleton_animation_is_finished

-

С помощью этой функции можно проверить, закончилось ли воспроизведение текущей не зацикленной скелетной анимации на заданной дорожке.

-

-

Синтаксис:

-

skeleton_animation_is_finished(track);

-
- - - - - - - - - - - - - -
АргументТип данныхОписание
трекРеальноИндекс дорожки анимации
-
-

Возвращается:

-

Boolean

-

-

Пример:

-

var _finished = skeleton_animation_is_finished(1);
- if (_finished)
- {
-     show_debug_message("The animation has finished playing");
- }

-

Приведенный выше код сначала проверяет, закончилась ли анимация на дорожке 1, и сохраняет результат в локальной переменной _finished. Затем он выводит отладочное сообщение в случае, если анимация действительно завершила воспроизведение.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_is_looping.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_is_looping.htm index b62dbd33b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_is_looping.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_is_looping.htm @@ -1,67 +0,0 @@ - - - - - - skeleton_animation_is_looping - - - - - - - - - - - - -

skeleton_animation_is_looping

-

С помощью этой функции можно проверить, установлена ли текущая анимация на заданном треке в режим цикла.

-

-

Синтаксис:

-

skeleton_animation_is_looping(track);

-
- - - - - - - - - - - - - -
АргументТипОписание
трекРеальноИндекс дорожки анимации
-
-

Возвращается:

-

Boolean

-

-

Пример:

-

if skeleton_animation_is_looping(0)
- {
-     show_debug_message("Track 0 of the skeleton animation is looping");
- }

-

Приведенный выше код проверяет, установлена ли анимация на дорожке 0 в режим цикла. Если это так, то будет показано отладочное сообщение.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_list.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_list.htm index ee25de239..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_list.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_list.htm @@ -1,76 +0,0 @@ - - - - - - skeleton_animation_list - - - - - - - - - - -

skeleton_animation_list

-

С помощью этой функции вы можете заполнить (предварительно созданный) список DS всеми именами анимаций, включенных как часть скелетной анимации sprite. Эти имена будут строками и затем могут быть использованы в других функциях анимации для этих типов sprite.

-

-

Синтаксис:

-

skeleton_animation_list(sprite, list);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
spriteАктив спрайтаThe sprite index of the Spine skeletal animation to get the list from.
listИдентификатор списка DSThe ID of the DS list to populate with the animation names.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var list = ds_list_create();
- skeleton_animation_list(sprite_index, list);
-
- for (var i = 1; i < ds_list_size(list); i++)
- {
-     skeleton_animation_mix(list[| 0], list[| i], 0.5);
- }
-
- ds_list_destroy(list); -

-

Приведенный выше код создает список DS всех имен анимаций для sprite, используемых данным экземпляром. Затем он перебирает их и устанавливает значение mix для всех анимаций с первой анимацией равным 0,5.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_mix.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_mix.htm index 9312e4c80..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_mix.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_mix.htm @@ -1,76 +0,0 @@ - - - - - - skeleton_animation_mix - - - - - - - - - - -

skeleton_animation_mix

-

Вы можете легко переключать наборы анимаций с помощью функции skeleton_animation_set() но это может привести к пропуску или заиканию при смене одной анимации на другую. Чтобы предотвратить это, вы можете установить значение mix между двумя наборами анимации, и sprite будет интерполировать между ними. Обычно это нужно сделать в событии Create Event экземпляра со скелетной анимацией, так как его нужно установить только один раз, а GameMaker будет интерполировать все дальнейшие изменения sprite, используя наборы анимации этого экземпляра. Обратите внимание, что значение длительности варьируется от 0 до 1, при значении 0,5 интерполяция от одного набора к другому будет "половинчатой".

-

ПРИМЕЧАНИЕ В Spine 4.0 изменен принцип работы анимации вращения, поскольку она больше не интерполирует вращение по кратчайшему пути, а использует абсолютные значения в ключевых кадрах для интерполяции. Это может привести к неожиданному поведению, если вы обновляете анимацию Spine с более старой версии, и для того, чтобы вращение работало так, как нужно, могут потребоваться изменения в проекте Spine.

-

-

Синтаксис:

-

skeleton_animation_mix(animfrom, animto, duration);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
animfromСтрокаThe name (a string) of the first animation set to interpolate from.
animtoСтрокаThe name (a string) of the second animation set to interpolate to.
durationРеальноThe duration of the interpolation (from 0 to 1)
-

-

-

Возвращается:

-

N/A

-

-

Пример:

-

skeleton_animation_set("walk");
- skeleton_animation_mix("walk", "jump", 0.2);
- skeleton_animation_mix("jump", "walk", 0.4);

-

Приведенный выше код входит в событие Create Event экземпляра со скелетной анимацией sprite и устанавливает длительность анимационного микса для интерполяции между двумя анимациями "ходить" и "прыгать".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_set.htm index d1cb9f1db..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_set.htm @@ -1,76 +0,0 @@ - - - - - - skeleton_animation_set - - - - - - - - - - -

skeleton_animation_set

-

После того как вы назначили скелетную анимацию sprite своему экземпляру, вы можете определить, какой набор анимаций он должен использовать в любой момент времени с помощью этой функции. При создании своего spriteSpine) вы определили несколько наборов анимации для различных состояний и присвоили каждому из них соответствующее имя. Эти имена вы будете использовать для того, чтобы указать программе GameMaker, какой набор анимации использовать в любой момент времени в вашей игре. Например, если ваш sprite предназначен для платформенной игры, то вы можете иметь набор "прыжок", набор "бег" и набор "бездействие", содержащиеся в одном sprite, и вы можете переключаться между ними в вашей игре с помощью этой функции.
- Анимация воспроизводится по кругу, что является стандартом.

-

Обратите внимание, что установка новой анимации таким образом приведет к сбросу параметра image_index на 0, запуская новый набор анимации с начала цикла анимации. Если такое поведение нежелательно, можно задать значение "mix" с помощью функции skeleton_animation_mix() и при установке новой анимации она будет плавно интерполироваться с предыдущим набором. Также следует убедиться, что в начале каждой анимации стоит ключевой кадр, чтобы данные не задерживались в предыдущих анимациях, если вы не планируете использовать отдельные анимационные дорожки.

-

-

Синтаксис:

-

skeleton_animation_set(animname, [loop]);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
animnameСтрокаThe name (a string) of the animation set to use.
loopБулево Должна ли анимация зацикливаться или нет (по умолчанию true)
-

-

-

Возвращается:

-

N/A

-

-

Пример:

-

if keyboard_check_pressed(vk_space)
- {
-     if (skeleton_animation_get() != "jump")
-     {
-         skeleton_animation_set("jump");
-     }
- }

-

Приведенный выше код изменит используемый набор анимации на набор "прыжок" при нажатии клавиши пробела, но только если текущий используемый набор еще не "прыжок".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_set_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_set_ext.htm index 2e3c0cc2a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_set_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_set_ext.htm @@ -1,81 +0,0 @@ - - - - - - skeleton_animation_set_ext - - - - - - - - - - -

skeleton_animation_set_ext

-

Когда вы устанавливаете набор анимации для скелетной анимации sprite, ему назначается дорожка 0. Однако вы можете назначить другие наборы на другие дорожки (1 и выше) и таким образом заставить ваш sprite воспроизводить две (или более) анимации одновременно. Обратите внимание, что sprite должен быть разработан в вашей программе анимации с учетом этого, так, чтобы "базовая" анимация на дорожке 0 имела ключевые кадры только для определенных костей, в то время как следующие дорожки имели ключевые кадры для остальных. Например, если у вас есть анимация "ходьбы", и ее ключевые кадры воздействуют только на ноги sprite, то вы можете иметь набор анимаций головы и рук, которые вы можете установить на дорожках 1 и 2 соответственно, что позволит вам иметь базовое движение и адаптироваться к нему в реальном времени во время игры.
- Анимация воспроизводится в циклическом режиме, который используется по умолчанию.

-

-

Синтаксис:

-

skeleton_animation_set_ext(animname, track, [loop]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
animnameСтрокаThe name (a string) of the animation set to use.
trackРеальноThe track for the animation set to use.
loopБулево Должна ли анимация зацикливаться или нет (по умолчанию true)
-

-

-

Возвращается:

-

N/A

-

-

Пример:

-

if mouse_check_button(mb_left)
- {
-     skeleton_animation_set_ext("bodyfight", 1);
- }
- else
- {
-     skeleton_animation_set_ext("bodywalk", 1);
- }

-

Приведенный выше код изменит набор анимации, используемый дорожкой 1, на набор "bodyfight" или "bodywalk" при нажатии левой кнопки мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_set_frame.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_set_frame.htm index 3717a25e5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_set_frame.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_set_frame.htm @@ -1,71 +0,0 @@ - - - - - - skeleton_animation_set_frame - - - - - - - - - - -

skeleton_animation_set_frame

-

Эта функция установит анимацию, назначенную на данный трек, на указанный вами кадр. Индекс кадра должен быть вещественным значением от 0 до количества кадров анимации (которое можно получить с помощью функции skeleton_animation_get_frames). Если вы зададите значение вне этого диапазона, анимация будет зациклена, чтобы компенсировать разницу, например, если анимация имеет 5 кадров, а вы зададите кадр 8, то реальный кадр будет 3.

-

-

Синтаксис:

-

skeleton_animation_set_frame(track, index);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
trackРеальноThe animation track to set the frame of.
indexРеальноThe new index for the animation frame.
-

-

-

Возвращается:

-

N/A

-

-

Пример:

-

if global.pause
- {
-     skeleton_animation_set_frame(0, -image_speed);
- }

-

Приведенный выше код установит индекс кадра для анимации на дорожке 0 на отрицательную скорость изображения, когда глобальная переменная "pause" будет true (по сути, приостанавливая анимацию).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_set_position.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_set_position.htm index 1fda121c5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_set_position.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Animation/skeleton_animation_set_position.htm @@ -1,68 +0,0 @@ - - - - - - skeleton_animation_set_position - - - - - - - - - - -

skeleton_animation_set_position

-

Эта функция установит анимацию, назначенную данной дорожке, в указанное вами положение. Позиция должна быть реальным значением между 0 и 1. Если вы предоставите значение вне этого диапазона, то позиция дорожки будет установлена на дробную часть этого значения. Предположим, вы используете значение 0,4, значение 1,4, значение 2,4, ... Все они установят положение на 0,4.

-

-

Синтаксис:

-

skeleton_animation_set_position(track, position);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
trackРеальноThe animation track to set the frame of.
positionРеальноThe new position for the animation frame.
-

-

-

Возвращается:

-

N/A

-

-

Пример:

-

skeleton_animation_set_position(1, 0.25);

-

Приведенный выше код установит позицию для дорожки 1 анимации скелета на 0,25 или, говоря иначе, на 25% от начала анимации.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/Attachments.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/Attachments.htm index 13a9de8be..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/Attachments.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/Attachments.htm @@ -1,46 +0,0 @@ - - - - - - Вложения - - - - - - - - - - -

Вложения

-

Скелетная анимация sprites может иметь "слоты", в которые можно поместить "вложения". Вложение - это просто изображение, которое может использоваться как реквизит sprite, и помещается в слот так, чтобы оно двигалось вместе с анимацией той части, где расположен слот. Если вы представите себе sprite воина со слотом для вложений на руке - вы можете поместить в этот слот различное оружие sprites и заставить воина выглядеть так, будто он использует меч, пику, щит или что-то еще.

-

Этот раздел посвящен навесному оборудованию и его sprites, однако вы также можете настроить слоты и получить информацию о них из перечисленных здесь функций.

-

Доступны следующие функции крепления:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/skeleton_attachment_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/skeleton_attachment_create.htm index 3a1fa7b2d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/skeleton_attachment_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/skeleton_attachment_create.htm @@ -1,101 +0,0 @@ - - - - - - skeleton_attachment_create - - - - - - - - - - - -

skeleton_attachment_create

-

Когда вы создаете скелетную анимацию sprite, вы можете назначить слоты для вложений и вложения в них. Это просто изображения, которые находятся отдельно от анимации, но при прикреплении будут двигаться вместе с костью, к которой они прикреплены. Обычно вы назначаете эти вложения в вашей программе анимации (Spine), но с помощью этой функции вы можете создавать свои собственные вложения во время выполнения, используя актив sprite из вашей игры. Функция требует, чтобы вы дали вложению имя (в виде строки), затем установили sprite_index и image_index для использования, а также x и y origin (которые могут отличаться от тех, что определены в sprite в свойствах sprite ), и вы также можете установить любые преобразования, которые вы хотите применить к изображению при вложении. Если вложение было успешно создано, функция вернет 1, а если нет (вы указали неверный индекс sprite, или основание sprite не является Spine sprite), то вернется -1.

-

-

Синтаксис:

-

skeleton_attachment_create(name, sprite, ind, xorigin, yorigin, xscale, yscale, rot);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
nameСтрокаThe name (as a string) of the attachment to create.
spriteАктив спрайтаThe sprite_index to get the attachment image from.
indРеальноThe image_index to get the attachment image from.
xoriginРеальноThe x origin for the image being used.
yoriginРеальноThe y origin for the image being used.
xscaleРеальноThe horizontal scaling of the image, as a multiplier: 1 = normal scaling, 0.5 is half etc...
yscaleРеальноThe vertical scaling of the image, as a multiplier: 1 = normal scaling, 0.5 is half etc...
rotРеальноThe rotation of the image. 0=normal, 90=turned 90 degrees counter-clockwise etc.
-

-

Возвращается:

-

Real (1 if successful, -1 if not)

-

-

Пример:

-

skeleton_attachment_create("sword", spr_Weapons, 0, 0, 80, 1, 1, 90);
- skeleton_attachment_create("knife", spr_Weapons, 1, 0, 45, 1, 1, 90);
- skeleton_attachment_create("crossbow", spr_Weapons, 0, 10, 30, 1, 1, 0);
- skeleton_attachment_set("slot_leftHand", choose("sword", "knife", "crossbow"));

-

Приведенный выше код проверит текущее назначенное имя вложения для слота с именем "slot_leftHand", и если будет возвращена пустая строка, то будет прикреплен новый sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/skeleton_attachment_create_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/skeleton_attachment_create_colour.htm index 2231b4ec7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/skeleton_attachment_create_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/skeleton_attachment_create_colour.htm @@ -1,113 +0,0 @@ - - - - - - skeleton_attachment_create_colour - - - - - - - - - - - -

skeleton_attachment_create_colour

-

Когда вы создаете скелетную анимацию sprite, вы можете назначить слоты для вложений и вложения в них. Это просто изображения (sprites), которые отделены от анимации, но при прикреплении будут двигаться вместе с костью, к которой они прикреплены. Обычно вы назначаете эти вложения в вашей программе анимации (Spine), но с помощью этой функции вы можете создавать свои собственные вложения во время выполнения, используя актив sprite из вашей игры. Функция требует, чтобы вы дали вложению имя (в виде строки), а затем установили параметры sprite_index и image_index для использования, а также начало координат x и y (которое может отличаться от того, которое определено для sprite в свойствах sprite ), и вы также можете задать любые преобразования, которые вы хотите применить к изображению при вложении, а также цвет, который будет смешиваться с изображением, и его альфа-значение (прозрачность). Если вложение было успешно создано, функция вернет 1, а если нет (вы указали неверный индекс sprite или базовый sprite не является Spine sprite), то вернется -1.

-

Стоит отметить, что экземпляр sprite может иметь цвет наложения и настройки альфа (image_blend и image_alpha), как и слот вложения (см. функцию skeleton_slot_colour_set()), и поэтому окончательный цвет и альфа, которые будет иметь назначенное вложение sprite для слота, будет представлять собой комбинацию всех этих значений.

-

-

Синтаксис:

-

skeleton_attachment_create_colour(name, sprite, ind, xorigin, yorigin, xscale, yscale, rot, colour, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
nameСтрокаThe name (as a string) of the attachment to create.
spriteАктив спрайтаThe sprite_index to get the attachment image from.
indРеальноThe image_index to get the attachment image from.
xoriginРеальноThe x origin for the image being used.
yoriginРеальноThe y origin for the image being used.
xscaleРеальноThe horizontal scaling of the image, as a multiplier: 1 = normal scaling, 0.5 is half etc...
yscaleРеальноThe vertical scaling of the image, as a multiplier: 1 = normal scaling, 0.5 is half etc...
rotРеальноThe rotation of the image: 0 = normal, 90 = turned 90° counter-clockwise etc.
ColourЦветThe colour value to use (A constant, integer or hex value).
AlphaРеальноThe alpha value to use (from 0 to 1).
-

-

Возвращается:

-

Real (1 if successful, -1 if not)

-

-

Пример:

-

skeleton_attachment_create_colour("sword", spr_Weapons, 0, 0, 80, 1, 1, 90, c_red, 1);
- skeleton_attachment_create_colour("knife", spr_Weapons, 1, 0, 45, 1, 1, 90, c_yellow, 1);
- skeleton_attachment_create_colour("crossbow", spr_Weapons, 0, 10, 30, 1, 1, 0, c_white, 0.5);
- skeleton_attachment_set("slot_leftHand", choose("sword", "knife", "crossbow"));

-

Приведенный выше код проверит текущее назначенное имя вложения для слота с именем "slot_leftHand", и если будет возвращена пустая строка, то будет прикреплен новый sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/skeleton_attachment_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/skeleton_attachment_get.htm index 38cb70fc0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/skeleton_attachment_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/skeleton_attachment_get.htm @@ -1,66 +0,0 @@ - - - - - - skeleton_attachment_get - - - - - - - - - - - -

skeleton_attachment_get

-

Скелетная анимация sprite может иметь другие sprites, добавленные в качестве вложений, причем эти sprites добавляются в названный слот (имя задается при создании слота вложения в вашей анимационной программе), и они будут рисоваться вместе с анимацией текущего sprite. С помощью этой функции вы можете получить имя (в виде строки) вложения для данного слота текущего назначенного sprite. Обратите внимание, что ссылка на прикрепленные sprites осуществляется через их строку имени, заданную в Spine, или когда вы вызвали функцию skeleton_attachment_create().

-

-

Синтаксис:

-

skeleton_attachment_get(slot);

- - - - - - - - - - - - - -
АргументТипОписание
slotСтрокаThe slot name (a string) to get the attachment of.
-

-

Возвращается:

-

String

-

-

Пример:

-

if skeleton_attachment_get("slot_leftHand") == ""
- {
-     skeleton_attachment_set("slot_leftHand", choose("sword", "spear", "knife"));
- }

-

Приведенный выше код проверяет текущее назначенное имя вложения для слота с именем "slot_leftHand", и если возвращается пустая строка, то прикрепляется новый sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/skeleton_attachment_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/skeleton_attachment_set.htm index 3f8951970..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/skeleton_attachment_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Attachments/skeleton_attachment_set.htm @@ -1,71 +0,0 @@ - - - - - - skeleton_attachment_set - - - - - - - - - - -

skeleton_attachment_set

-

Скелетная анимация sprite может содержать другие изображения, добавленные в качестве вложений, причем эти изображения добавляются в названный слот (имя задается при создании слота вложения в вашей программе анимации), и они будут рисоваться вместе с анимацией текущего sprite. С помощью этой функции можно установить вложение в заданный слот, при этом необходимо указать имена (в виде строк) слота и вложения. Эти имена определяются используемой программой анимации или (в случае вложения) при вызове функции skeleton_attachment_create().

-

Обратите внимание, что вы также можете передать sprite_index в качестве вложения, и тогда будет использован sprite, или вы можете использовать -1, чтобы удалить вложение из слота. Когда вы передаете в качестве аргумента индекс sprite, будет создан слот вложения, используя имя sprite в качестве строки для названия слота (например, при использовании spr_sword будет создан слот вложения "spr_sword"), и слот будет использовать индекс первого изображения (0) из sprite, а также смещение начала координат x и y, с масштабом (1,1) и вращением 0.

-

-

Синтаксис:

-

skeleton_attachment_set(slot, attachment);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
slotСтрокаThe slot name (a string) to get the attachment of.
attachmentСтрока или ассет спрайтаThe name (as a string or a sprite_index) of the attachment image.
-

-

Возвращается:

-

String

-

-

Пример:

-

if skeleton_attachment_get("slot_leftHand") == ""
- {
-     skeleton_attachment_set("slot_leftHand", choose("sword", "spear", "knife"));
- }

-

Приведенный выше код проверяет текущее назначенное имя вложения для слота с именем "slot_leftHand", и если возвращается пустая строка, то прикрепляется новый sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/Bones.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/Bones.htm index 84ef994c2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/Bones.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/Bones.htm @@ -1,45 +0,0 @@ - - - - - - Кости - - - - - - - - - - -

Кости

-

Как следует из названия, скелетная анимация sprites состоит из ряда "костей", поверх которых добавляется кожа для создания окончательной анимации персонажа. Обычно вы хотите установить эти кости в программе анимации (Spine), а затем экспортировать sprite с уже заданным набором анимаций, чтобы вы могли просто переключаться между ними по мере необходимости. Однако бывают случаи, когда необходимо перехватить данные о костях и вручную управлять ими или получить информацию о положении определенных костей, и в этих случаях можно использовать следующие функции:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_data_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_data_get.htm index ffafdff0d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_data_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_data_get.htm @@ -1,78 +0,0 @@ - - - - - - skeleton_bone_data_get - - - - - - - - - - - -

skeleton_bone_data_get

-

Ваша скелетная анимация состоит из множества "костей", которые вы определили и дали им имена в своей программе анимации. Эта функция может быть использована для получения информации о названной кости в любое время и сохранения данных в пустой карте DS, которую вы должны были создать ранее. Обратите внимание, что эти данные относятся к позе по умолчанию для скелета, а не к текущей позе, которая рисуется. Если вам нужны данные о текущей позе, воспользуйтесь командой skeleton_bone_state_get().

-

Когда вы вызываете эту функцию, карта будет заполнена следующими ключами:

-
    -
  • "x": Локальная x-позиция кости относительно родительской кости.
  • -
  • "y": Локальная позиция y кости относительно родительской кости.
  • -
  • "угол": Локальный поворот кости относительно родительской кости.
  • -
  • "xscale": Локальный горизонтальный масштаб кости по отношению к родительской кости.
  • -
  • "yscale": Локальный вертикальный масштаб кости по отношению к родительской кости.
  • -
  • "parent": Имя (строка) родительской кости.
  • -
-

-

Синтаксис:

-

skeleton_bone_data_get(bone, map);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
boneСтрокаThe name (as a string) of the bone.
mapИдентификатор карты DSThe (previously created) DS map that will get the bone data.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

bone_map = ds_map_create();
- skeleton_bone_data_get("leftarm", bone_map);

-

Приведенный выше код создает карту DS, а затем заполняет ее данными из кости с именем "leftarm".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_data_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_data_set.htm index 7f82d95b7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_data_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_data_set.htm @@ -1,79 +0,0 @@ - - - - - - skeleton_bone_data_set - - - - - - - - - - -

skeleton_bone_data_set

-

Ваша скелетная анимация состоит из ряда "костей", которые вы определили и дали им имена в вашей программе анимации, и эта функция может быть использована для установки определенных данных для названной кости в любое время. Обратите внимание, что эти данные относятся к позе по умолчанию для скелета, а не к текущей позе, которая рисуется (для этого используйте функцию skeleton_bone_state_set()), и должны быть установлены из ранее созданной карты DS, которая должна иметь следующие ключи и их эквивалентные значения:

-
    -
  • "x": Локальная x-позиция кости относительно родительской кости.
  • -
  • "y": Локальная позиция y кости относительно родительской кости.
  • -
  • "угол": Локальный поворот кости относительно родительской кости.
  • -
  • "xscale": Локальный горизонтальный масштаб кости.
  • -
  • "yscale": Локальный вертикальный масштаб кости.
  • -
  • "parent": Имя (строка) родительской кости.
  • -
-

-

Синтаксис:

-

skeleton_bone_data_set(bone, map);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
boneСтрокаThe name (as a string) of the bone.
mapИдентификатор карты DSThe (previously created) DS map that stores the bone data.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var bone_map = ds_map_create();
- skeleton_bone_data_get("head", bone_map);
- ds_map_replace(bone_map, "parent", "body");
- skeleton_bone_data_set("head", bone_map);
- ds_map_destroy(bone_map);

-

Приведенный выше код создает карту DS, а затем заполняет ее данными из кости с именем "голова". Затем он заменяет ключ кости "parent" в карте новым значением и снова устанавливает кость "head" с новым набором данных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_list.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_list.htm index f0a1501ef..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_list.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_list.htm @@ -1,68 +0,0 @@ - - - - - - skeleton_bone_list - - - - - - - - - - -

skeleton_bone_list

-

С помощью этой функции вы можете заполнить (предварительно созданный) список DS всеми именами костей, используемых как часть скелетной анимации sprite. Имена будут строками и затем могут быть использованы в других функциях костей скелетной анимации для этих типов sprite.

-

-

Синтаксис:

-

skeleton_bone_list(sprite, list);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
spriteАктив спрайтаThe sprite index of the Spine skeletal animation to get the list from.
listИдентификатор списка DSThe ID of the DS list to populate with the bone names.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

bone_list = ds_list_create();
- skeleton_bone_list(sprite_index, bone_list);

-

Приведенный выше код создает список DS, затем заполняет его именами костей для последующего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_state_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_state_get.htm index a2bdb2218..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_state_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_state_get.htm @@ -1,95 +0,0 @@ - - - - - - skeleton_bone_state_get - - - - - - - - - - - -

skeleton_bone_state_get

-

Ваша скелетная анимация состоит из ряда "костей", которые вы определили и дали им имена в вашей программе анимации, и эта функция может быть использована для получения определенных данных для названной кости в любое время. Обратите внимание, что эти данные относятся к текущей позе скелета, в зависимости от используемого набора анимации, и функция требует предварительно созданной карты DS, которая после вызова функции будет иметь следующие ключи и их эквивалентные значения:

-
    -
  • "x": Локальная x-позиция кости относительно родительской кости.
  • -
  • "y": Локальная позиция y кости относительно родительской кости.
  • -
  • "угол": Локальный поворот кости относительно родительской кости.
  • -
  • "xscale": Локальный горизонтальный масштаб кости по отношению к родительской кости.
  • -
  • "yscale": Локальный вертикальный масштаб кости по отношению к родительской кости.
  • -
  • "worldScaleX": Величина (всегда положительная) мирового масштаба X (это значение доступно только для чтения ).
  • -
  • "worldScaleY": Величина (всегда положительная) мирового масштаба Y (это значение доступно только для чтения ).
  • -
  • "worldAngleX": Поворот мира для оси X (это значение доступно только для чтения ).
  • -
  • "worldAngleY": Поворот мира для оси Y (это значение доступно только для чтения ).
  • -
  • "worldX": Положение мира X (это значение доступно только для чтения ).
  • -
  • "worldY": Положение мира по оси Y (это значение доступно только для чтения ).
  • -
  • "appliedAngle": Это локальное вращение, используемое для позиционирования костей скелета.
  • -
  • "parent": Имя (строка) родительской кости.
  • -
-

Возвращаемые данные карты аналогичны тем, которые возвращаются для позы по умолчанию при использовании skeleton_bone_data_get()только теперь у вас есть дополнительные "мировые" ключи. Они относятся к положению кости относительно корня (начала координат) скелетной анимации sprite, и возвращаемые значения не учитывают никакого масштабирования или вращения, которое было сделано путем установки встроенных переменных sprite, таких как image_xscale или image_angle. Значения world только для чтения и не могут быть установлены.

-

Эта функция предоставляется для того, чтобы вы могли "перехватить" данные анимации и изменить их до того, как они будут нарисованы на экране, и поэтому вы захотите использовать ее в событии Other - Animation Update, поскольку это событие запускается непосредственно перед событием Draw Events.

-

-

Синтаксис:

-

skeleton_bone_state_get(bone, map);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
boneСтрокаThe name (as a string) of the bone.
mapИдентификатор карты DSThe (previously created) DS map that stores the bone data.
-

-

-

Возвращается:

-

N/A

-

-

Пример:

-

var map = ds_map_create();
- skeleton_bone_state_get("head", map);
- var xx = ds_map_find_value(map, "worldX");
- var yy = ds_map_find_value(map, "worldY");
- var deltax = mouse_x - (x + xx);
- var deltay = mouse_y - (y + yy);
- var angle = -radtodeg(arctan2(deltay, deltax));
- ds_map_replace(map, "angle", angle);
- skeleton_bone_state_set("head", map);
- ds_map_destroy(map);

-

Приведенный выше код создает карту DS, а затем заполняет ее данными из кости с именем "голова". Затем он извлекает мировую позицию для кости и использует эти данные для установки "угла" кости для отслеживания положения мыши в игре.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_state_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_state_set.htm index 0e886ce7d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_state_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Bones/skeleton_bone_state_set.htm @@ -1,96 +0,0 @@ - - - - - - skeleton_bone_state_set - - - - - - - - - - -

skeleton_bone_state_set

-

Ваша скелетная анимация состоит из ряда "костей", которые вы определили и дали им имена в вашей программе анимации, и эта функция может быть использована для установки определенных данных для названной кости в любое время. Обратите внимание, что эти данные будут задавать текущую позу скелета, в зависимости от используемого набора анимации. Для работы функции требуется предварительно созданная карта DS, которая должна содержать следующие ключи и их необходимые значения:

-
    -
  • "x": Локальная x-позиция кости относительно родительской кости.
    - -
  • -
  • "y": Локальная позиция y кости относительно родительской кости.
    - -
  • -
  • "угол": Локальный поворот кости относительно родительской кости.
    - -
  • -
  • "xscale": Локальный горизонтальный масштаб кости.
    - -
  • -
  • "yscale": Локальный вертикальный масштаб кости.
    - -
  • -
  • "parent": Имя (строка) родительской кости.
  • -
-

Эта функция предоставляется для того, чтобы вы могли "перехватить" данные анимации и изменить их до того, как они будут нарисованы на экране, и поэтому вы захотите использовать ее в событии Other - Animation Update, поскольку это событие запускается непосредственно перед событием Draw Events.

-

Обратите внимание, что вы можете использовать ту же карту, которую вы заполнили с помощью функции skeleton_bone_state_get() даже если она содержит дополнительные ключи и значения "World". Поскольку они относятся к значениям, доступным только для чтения, их установка с помощью этой функции не окажет никакого влияния.

-

-

Синтаксис:

-

skeleton_bone_state_set(bone, map);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
boneСтрокаThe name (as a string) of the bone.
mapИдентификатор карты DSThe (previously created) DS map that stores the bone data.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var map = ds_map_create();
- skeleton_bone_state_get("head", map);
- var xx = ds_map_find_value(map, "worldX");
- var yy = ds_map_find_value(map, "worldY");
- var deltax = mouse_x - (x + xx);
- var deltay = mouse_y - (y + yy);
- var angle = -radtodeg(arctan2(deltay, deltax));
- ds_map_replace(map, "angle", angle);
- skeleton_bone_state_set("head", map);
- ds_map_destroy(map);

-

Приведенный выше код создает карту DS, а затем заполняет ее данными из кости с именем "голова". Затем он извлекает мировую позицию для кости и использует эти данные для установки "угла" кости для отслеживания положения мыши в игре.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/Drawing_And_Miscellaneous.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/Drawing_And_Miscellaneous.htm index 9cccb30c3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/Drawing_And_Miscellaneous.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/Drawing_And_Miscellaneous.htm @@ -1,56 +0,0 @@ - - - - - - Рисование и разное - - - - - - - - - - -

Рисование и разное

-

Следующие функции являются дополнительными инструментами для получения различных наборов данных о скелетном анимационном спрайте:

- -

-

Вы также можете использовать различные функции рисования, разработанные специально для этих типов sprite (помимо обычных draw_sprite() функций). Эти функции дают вам больше контроля над тем, что рисуется, и позволяют изменять специфические особенности анимации, такие как время и скины:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_enable_skeleton_blendmodes.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_enable_skeleton_blendmodes.htm index d6ac0a1e0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_enable_skeleton_blendmodes.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_enable_skeleton_blendmodes.htm @@ -1,63 +0,0 @@ - - - - - - draw_enable_skeleton_blendmodes - - - - - - - - - - - -

draw_enable_skeleton_blendmodes

-

Эта функция используется для включения(true) или отключения(false) режимов наложения на каждый слот для скелета sprites.

-

-

Синтаксис:

-

draw_enable_skeleton_blendmodes(enable)

- - - - - - - - - - - - - -
АргументТипОписание
enableБулевоWhether to enable or disable blend modes
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_enable_skeleton_blendmodes(true);

-

Приведенный выше код включает режимы наложения на каждый слот для скелета sprites.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_get_enable_skeleton_blendmodes.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_get_enable_skeleton_blendmodes.htm index 416156e9e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_get_enable_skeleton_blendmodes.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_get_enable_skeleton_blendmodes.htm @@ -1,52 +0,0 @@ - - - - - - draw_get_enable_skeleton_blendmodes - - - - - - - - - - - -

draw_get_enable_skeleton_blendmodes

-

Эта функция возвращает, включены(true) или отключены(false) режимы наложения на каждый слот для скелета sprites.

-

-

Синтаксис:

-

draw_get_enable_skeleton_blendmodes()

-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if (!draw_get_enable_skeleton_blendmodes())
- {
-     draw_enable_skeleton_blendmodes(true);
- }

-

Приведенный выше код включает режимы наложения на каждый слот для скелетного sprites, если они отключены.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_skeleton.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_skeleton.htm index 6a749dff8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_skeleton.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_skeleton.htm @@ -1,115 +0,0 @@ - - - - - - draw_skeleton - - - - - - - - - - - -

draw_skeleton

-

Эта функция предназначена только для использования с sprites, которые были созданы с помощью программы скелетной анимации, например Spine. Хотя вы можете рисовать эти sprites с помощью обычных функций рисования (например, таких как draw_self()), бывают случаи, когда необходимо нарисовать один кадр или показать изменение текстуры кожи, не изменяя свойств sprite. В таких случаях вы можете нарисовать sprite с помощью этой функции, где вы указываете индекс sprite, затем имя анимации, из которой нужно взять кадр (строка, заданная в программе, используемой для создания sprite). Затем вы указываете имя скина, который нужно использовать (опять же, заданное при создании sprite ), и значение кадра. Значение кадра указывает программе GameMaker, какую часть анимации нужно показать, и представляет собой значение от 0 до image_number. Остальные аргументы аналогичны тем, которые используются при обычном рисовании sprite, и изменяют масштаб, угол, цвет наложения и альфа-коэффициент конечного рисуемого кадра анимации.

-

ВНИМАНИЕ! Из-за того, что скелетная анимация интерполируется между различными "ключевыми" кадрами, существует дополнительная нагрузка, связанная с этим вызовом, поэтому рекомендуется избегать рисования скелетной анимации sprites с помощью этого метода, если это не является абсолютно необходимым.

-

-

Синтаксис:

-

draw_skeleton(sprite, animname, skinname, frame, x, y, xscale, yscale, rot, colour, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
spriteАктив спрайтаThe index of the sprite to draw.
animnameСтрокаThe name of the animation to get the frame from (a string).
skinnameСтрокаThe name of the skin to use (a string).
frameРеальноThe animation frame to draw (from 0 to image_number - 1).
xРеальноThe x coordinate of where to draw the sprite.
yРеальноThe y coordinate of where to draw the sprite.
xscaleРеальноThe horizontal scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...
yscaleРеальноThe vertical scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...
rotРеальноThe rotation of the sprite. 0=normal, 90=turned 90 degrees counter-clockwise etc.
colourЦветThe colour with which to blend the sprite.
alphaРеальноThe alpha of the sprite (from 0 to 1 where 0 is transparent and 1 opaque).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

-

draw_skeleton(spr_Jump, "jump", "skin1", 0, x, y, image_xscale, image_yscale, image_angle, c_white, 0.5);

-

Приведенный выше код нарисует первый кадр заданной скелетной анимации sprite, используя набор анимации "jump", скин, определенный как "skin1", в том же масштабе и положении, как определено в свойствах экземпляра, но с альфой 0,5.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_skeleton_collision.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_skeleton_collision.htm index 222b1a4e2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_skeleton_collision.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_skeleton_collision.htm @@ -1,104 +0,0 @@ - - - - - - draw_skeleton_collision - - - - - - - - - - - -

draw_skeleton_collision

-

Эта функция рисует маски столкновений, связанные с заданной скелетной анимацией. Вы предоставляете базовый sprite, набор анимации для использования и кадр, из которого нужно получить информацию, а также можете установить свойства трансформации.

-
-

-

Синтаксис:

-

draw_skeleton_collision(sprite, animname, frame, x, y, xscale, yscale, rot, colour)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
spriteАктив спрайтаThe index of the sprite to draw.
animnameСтрокаThe name of the animation to get the frame from (a string).
frameРеальноThe animation frame to draw (from 0 to image_number - 1).
xРеальноThe x coordinate of where to draw the sprite.
yРеальноThe y coordinate of where to draw the sprite.
xscaleРеальноThe horizontal scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...
yscaleРеальноThe vertical scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...
rotРеальноThe rotation of the sprite. 0=normal, 90=turned 90 degrees counter-clockwise etc.
colourЦветThe colour with which to blend the sprite.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_skeleton_collision(sprite_index, "jump", image_index, x, y, image_xscale, image_yscale, image_angle, c_white);

-

Приведенный выше код нарисует данные маски столкновений для текущего sprite, используя текущие преобразования, для анимации с набором "прыжок".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_skeleton_instance.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_skeleton_instance.htm index d7b5f2f63..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_skeleton_instance.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_skeleton_instance.htm @@ -1,114 +0,0 @@ - - - - - - draw_skeleton_instance - - - - - - - - - - - -

draw_skeleton_instance

-

Эта функция предназначена только для использования с экземплярами, которым присвоен sprites, созданными с помощью программы скелетной анимации Spine. Хотя вы можете рисовать эти sprites с помощью обычных функций рисования (например, таких как draw_self()), бывают случаи, когда необходимо нарисовать один кадр или показать изменение текстуры кожи без изменения свойств sprite экземпляра. В таких случаях вы можете нарисовать sprite, который был назначен экземпляру, с помощью этой функции, где вы указываете уникальный ID экземпляра, затем имя анимации, из которой нужно взять кадр (строка, заданная в программе, используемой для создания sprite). Затем вы указываете имя скина, который нужно использовать (опять же, заданное при создании sprite ), и значение кадра. Значение кадра указывает программе GameMaker, какую часть анимации нужно показать, и представляет собой значение от 0 до image_number. Остальные аргументы аналогичны тем, которые используются при обычном рисовании sprite, и изменяют масштаб, угол, цвет наложения и альфа-коэффициент конечного рисуемого кадра анимации.

-

ВНИМАНИЕ! Из-за того, что скелетная анимация интерполируется между различными "ключевыми" кадрами, существует дополнительная нагрузка, связанная с этим вызовом, поэтому рекомендуется избегать рисования скелетной анимации sprites с помощью этого метода, если это не является абсолютно необходимым.

-

-

Синтаксис:

-

draw_skeleton_instance(instance, animname, skinname, frame, x, y, xscale, yscale, rot, colour, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
instanceИдентификатор экземпляраThe index of the instance to draw the sprite from.
animnameСтрокаThe name of the animation to get the frame from (a string).
skinnameСтрокаThe name of the skin to use (a string).
frameРеальноThe animation frame to draw (from 0 to image_number - 1).
xРеальноThe x coordinate of where to draw the sprite.
yРеальноThe y coordinate of where to draw the sprite.
xscaleРеальноThe horizontal scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...
yscaleРеальноThe vertical scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...
rotРеальноThe rotation of the sprite. 0=normal, 90=turned 90 degrees counter-clockwise etc.
colourЦветThe colour with which to blend the sprite.
alphaРеальноThe alpha of the sprite (from 0 to 1 where 0 is transparent and 1 opaque).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_skeleton_instance(obj_Player, "jump", "skin1", 0, x, y, 1, 1, 0, c_white, 1);

-

Приведенный выше код нарисует первый кадр скелетной анимации sprite, назначенной данному экземпляру, используя набор анимации "jump" и скин, определенный как "skin1".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_skeleton_time.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_skeleton_time.htm index d0409f437..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_skeleton_time.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/draw_skeleton_time.htm @@ -1,111 +0,0 @@ - - - - - - draw_skeleton_time - - - - - - - - - - - -

draw_skeleton_time

-

Эта функция отрисует заданную анимацию с использованием заданного скина в определенное время анимации. Значение времени должно находиться между 0 (начало) и конечной продолжительностью анимации, которую можно найти с помощью функции skeleton_animation_get_duration(). Вы можете установить значение времени больше, чем общая продолжительность анимации, и анимация вернется к началу, но при этом вы рискуете потерять точность с плавающей запятой при увеличении накопленного времени.

-

-

Синтаксис:

-

draw_skeleton_time(sprite, animname, skinname, time, x, y, xscale, yscale, rot, colour)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
spriteАктив спрайтаThe index of the sprite to draw.
animnameСтрокаThe name of the animation to get the frame from (a string).
skinnameСтрокаThe name of the skin to use for drawing (a string).
timeРеальноThe time-frame to draw the animation at (from 0 to the end duration, in seconds).
xРеальноThe x coordinate of where to draw the sprite.
yРеальноThe y coordinate of where to draw the sprite.
xscaleРеальноThe horizontal scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...
yscaleРеальноThe vertical scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...
rotРеальноThe rotation of the sprite. 0=normal, 90=turned 90 degrees counter-clockwise etc.
colourЦветThe colour with which to blend the sprite.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var time += delta_time / 1000000;
- var d = skeleton_animation_get_duration("walk");
- if time > d time -= d;
- draw_skeleton_time(sprite_index, "walk", "skin1", time, x, y, image_xscale, image_yscale, image_angle, c_white);

-

Приведенный выше код отрисует заданную скелетную анимацию sprite, используя дельта-время для установки рисуемого кадра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/skeleton_collision_draw_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/skeleton_collision_draw_set.htm index a09fdd987..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/skeleton_collision_draw_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/skeleton_collision_draw_set.htm @@ -1,67 +0,0 @@ - - - - - - skeleton_collision_draw_set - - - - - - - - - - -

skeleton_collision_draw_set

-

С помощью этой функции можно включить (true) или выключить (false) отрисовку данных столкновений для текущей скелетной анимации sprite, используемой экземпляром. Если эта функция включена, ограничивающая рамка и точная маска столкновений будут нарисованы в виде контуров вокруг sprite.

-

Эта функция работает только в том случае, если рисование скелета sprite выполняется объектом. Чтобы нарисовать ограничивающую рамку столкновения при ручном рисовании скелета sprite, используйте draw_skeleton_collision().

-
-

-

Синтаксис:

-

skeleton_collision_draw_set(flag);

- - - - - - - - - - - - - -
АргументТипОписание
flagБулевоSet to true чтобы включить рисование, и false, чтобы выключить его.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if debug_mode == true
- {
-     skeleton_collision_draw_set(true);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/skeleton_get_bounds.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/skeleton_get_bounds.htm index 34ef380b9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/skeleton_get_bounds.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/skeleton_get_bounds.htm @@ -1,87 +0,0 @@ - - - - - - skeleton_get_bounds - - - - - - - - - - - -

skeleton_get_bounds

-

Эта функция возвращает массив значений, связанных с любой заданной граничной рамкой для текущей назначенной скелетной анимации sprite. Вы вводите индексный номер ограничивающей рамки для получения подробной информации (вы можете получить общее количество ограничивающих рамок для sprite с помощью функции skeleton_get_num_bounds()), и функция вернет массив со следующими элементами:

-
    -
  • [0] - количество точек на ограничивающей рамке (вещественное)
  • -
  • [1] - имя ограничивающей рамки (строка)
  • -
  • [2] - положение x первой точки
  • -
  • [3] - положение y первой точки
  • -
  • [и т.д.] - дальнейшие данные о положении x/y до количества точек на ограничительной рамке
  • -
-
-

-

Синтаксис:

-

skeleton_get_bounds(index);

- - - - - - - - - - - - - -
АргументТипОписание
indexРеальноThe bounding box index to get the values of.
-

-

Возвращается:

-

Array (minimum 2 elements: numPoints, name [, xPos, yPos, etc...])

-

-

Пример:

-

-

var num = skeleton_get_num_bounds();
- var yy = 60;
- for(var i = 0; i < num; i++)
- {
-     var b_info = skeleton_get_bounds(i);
-     if b_info[0] > 0
-     {
-         var data = b_info[1] + ":";
-         for(var j = 0; j < b_info[0]; j++)
-         {
-             data += " (" + string(b_info[(j * 2) + 2]) + ", " + string(b_info[(j * 2) + 2 + 1]) + ")";
-         }
-         draw_text(20, yy, data);
-         yy += 20;
-     }
- }

-

Приведенный выше код будет циклически просматривать все ограничивающие рамки, связанные с текущим назначенным sprite, а затем выводить эти данные в виде строки на экран.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/skeleton_get_minmax.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/skeleton_get_minmax.htm index ce9e04087..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/skeleton_get_minmax.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/skeleton_get_minmax.htm @@ -1,63 +0,0 @@ - - - - - - skeleton_get_minmax - - - - - - - - - - - -

skeleton_get_minmax

-

Эта функция возвращает массив с общим значением граничных боксов для всех отдельных граничных боксов, назначенных скелетной анимации sprite. Возвращаемый массив будет состоять из 4 элементов:

-
    -
  • [0] - минимальное положение x для всех ограничительных рамок
  • -
  • [1] - минимальное положение по оси y для всех ограничительных рамок
  • -
  • [2] - максимальное положение x для всех ограничительных рамок
  • -
  • [3] - максимальное положение по оси y для всех ограничивающих рамок
  • -
-
-

-

Синтаксис:

-

skeleton_get_minmax();

-

-

Возвращается:

-

Array (4 elements: xMin, yMin, xMax, yMax)

-

-

Пример:

-

var frame = skeleton_animation_get_frame(0);
- if (frame > 0 && frame < 2)
- {
-     var box = skeleton_get_minmax();
-     var ww = (box[2] - box[0]) / 2;
-     var hh = (box[3] - box[1]) / 2;
-     part_particles_create(global.p_sys, box[0] + ww, box[1] + hh, global.Stars, 10);
- }

-

Приведенный выше код проверит текущий кадр анимации, назначенный дорожке 0, а затем вырвет несколько частиц из точки в середине общей граничной области для sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/skeleton_get_num_bounds.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/skeleton_get_num_bounds.htm index f964a2cce..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/skeleton_get_num_bounds.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Drawing_And_Miscellaneous/skeleton_get_num_bounds.htm @@ -1,65 +0,0 @@ - - - - - - skeleton_get_num_bounds - - - - - - - - - - - -

skeleton_get_num_bounds

-

Эта функция возвращает количество граничных боксов, связанных со скелетной анимацией sprite, назначенной экземпляру, выполняющему код. Затем она может быть использована вместе с функцией skeleton_get_bounds() для получения данных о каждом из ограничивающих боксов.

-
-

-

Синтаксис:

-

skeleton_get_num_bounds();

-

-

Возвращается:

-

Real

-

-

Пример:

-

var num = skeleton_get_num_bounds();
- var yy = 60;
- for(var i = 0; i < num; i++)
- {
-     var b_info = skeleton_get_bounds(i);
-     if b_info[0] > 0
-     {
-         var data = b_info[1] + ":";
-         for(var j = 0; j < b_info[0]; j++)
-         {
-             data += " (" + string(b_info[(j * 2) + 2]) + ", " + string(b_info[(j * 2) + 2 + 1]) + ")";
-         }
-         draw_text(20, yy, data);
-         yy += 20;
-     }
- }

-

Приведенный выше код будет циклически просматривать все ограничивающие рамки, связанные с текущим назначенным sprite, а затем выводить эти данные в виде строки на экран.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skeletal_Animation.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skeletal_Animation.htm index 10271325d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skeletal_Animation.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skeletal_Animation.htm @@ -1,92 +0,0 @@ - - - - - - Скелетная анимация - - - - - - - - - - -

Скелетная анимация спрайтов

-

Функции, представленные в этом разделе, предназначены только для использования с sprites, которые были импортированы из файла скелетной анимации (в частности, файлы JSON, которые Позвоночник экспортирует) и могут быть использованы для получения информации об анимационном активе в вашей игре, а также для установки определенных свойств анимации. Эти функции можно использовать вместе с обычными функциями и переменными sprite, что позволяет, например, смешивать две скелетные анимации с помощью этих специальных функций, а масштаб изображения задавать с помощью обычных переменных экземпляра sprite (подробнее о переменных экземпляра sprite см. здесь).

-

ПРИМЕЧАНИЕ Для получения дополнительной информации об импорте скелетной анимации sprites, созданной с помощью Spine, см. раздел Импорт небитовых спрайтов.

-

Подробнее о функциях этих видов sprites вы можете узнать из разделов ниже:

- -

-

Поддержка черного цвета

-

Эта функция позволяет тонировать темные области слотов Spine sprite иначе, чем светлые (это функция сайта Spine IDE, подробнее см. раздел " Тонирование черного " ). В настоящее время, чтобы использовать эту функцию в GameMaker, необходимо использовать пользовательский шейдер при рисовании Spine sprite, который ее использует. Этот шейдер содержит глобальную однородную переменную "gm_SpineTintBlackColour", которую бегунок заполняет текущим цветом tint-black, автоматически полученным из данных Spine. Необходимый шейдер показан ниже:

-

Вершинный шейдер (это то же самое, что и вершинный шейдер по умолчанию)

-

attribute vec3 in_Position; // (x,y,z)
- attribute vec4 in_Colour; // (r,g,b,a)
- attribute vec2 in_TextureCoord; // (u,v)
-
- varying vec2 v_vTexcoord;
- varying vec4 v_vColour;
-
- void main()
- {
-     vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0);
-     gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos;
-     v_vColour = in_Colour;
-     v_vTexcoord = in_TextureCoord;
- } -

-

Фрагментный шейдер:

-

varying vec2 v_vTexcoord;
- varying vec4 v_vColour;
-
- uniform vec4 gm_SpineTintBlackColour; // This is the uniform containing the tint-black colour
-
- void main()
- {
-     vec4 tb = gm_SpineTintBlackColour;
-     vec4 texcol = texture2D( gm_BaseTexture, v_vTexcoord );
-     vec4 outcol;
-     outcol.rgb = v_vColour.rgb * texcol.rgb;
-     outcol.rgb += tb.rgb * ((tb.a * (texcol.a - 1.0)) + (1.0 - texcol.rgb)); // This line performs the tint-    black blending logic
-     outcol.a = v_vColour.a * texcol.a;
-     gl_FragColor = outcol;
- } -

-

Для этого нужно сначала вызвать шейдер, затем нарисовать sprite, затем сбросить шейдер, примерно так:

-

shader_set(shd_spine_tint_black);
- draw_self();
- shader_reset();

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skins/Skins.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skins/Skins.htm index 2d88a0e3f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skins/Skins.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skins/Skins.htm @@ -1,44 +0,0 @@ - - - - - - Скины - - - - - - - - - - -

Скины

-

Каждая скелетная анимация может иметь один или несколько скинов. Это означает, что вы можете использовать одну и ту же базовую анимацию с разной графикой для создания двух или более персонажей. Например, у вас есть враг, который ходит, бегает и дерется, и вы хотите, чтобы у него была мужская и женская форма. Вместо того чтобы создавать два sprites, вы создадите один, а затем два скина и будете просто переключаться между ними при создании sprite, чтобы выбрать мужскую или женскую форму.

-

Следующие функции предназначены для работы со скелетными анимационными скинами:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skins/skeleton_skin_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skins/skeleton_skin_get.htm index b3117206e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skins/skeleton_skin_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skins/skeleton_skin_get.htm @@ -1,52 +0,0 @@ - - - - - - skeleton_skin_get - - - - - - - - - - - -

skeleton_skin_get

-

С помощью скелетной анимации sprites можно назначить анимации отдельные текстуры (называемые "скинами"), тем самым используя одну анимацию для нескольких различных действий. Эта функция возвращает имя скина (в виде строки), который в настоящее время назначен скелетной анимации sprite, используемой вашим экземпляром. Возвращаемое имя - это имя, которое вы задали при создании sprite в вашей программе анимации.

-

-

Синтаксис:

-

skeleton_skin_get();

-

-

Возвращается:

-

-

-

Пример:

-

if skeleton_skin_get() == "skin_Enemy1"
- {
-     skeleton_skin_set(choose("skin_Enemy1", "skin_Enemy2", "skin_Enemy3");
- }

-

Приведенный выше код проверяет текущий назначенный скин для анимации, и если это "skin_Enemy1", он выбирает и устанавливает новый скин из одного из трех вариантов.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skins/skeleton_skin_list.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skins/skeleton_skin_list.htm index b4b7396ff..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skins/skeleton_skin_list.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skins/skeleton_skin_list.htm @@ -1,71 +0,0 @@ - - - - - - skeleton_skin_list - - - - - - - - - - -

skeleton_skin_list

-

С помощью этой функции вы можете заполнить (предварительно созданный) список DS всеми именами скинов, входящих в состав скелетной анимации sprite. Эти имена будут строками и затем могут быть использованы в других функциях скинов скелетной анимации для этих типов sprite.

-

-

Синтаксис:

-

skeleton_skin_list(sprite, list);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
spriteАктив спрайтаThe sprite index of the Spine skeletal animation to get the list from.
listИдентификатор списка DSThe ID of the DS list to populate with the animation names.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var list = ds_list_create();
- skeleton_skin_list(sprite_index, list);
- var num = ds_list_size(list);
- skeleton_skin_set(list[| irandom(num - 1));
- ds_list_destroy(list);

-

Приведенный выше код создает список DS, затем заполняет его именами скинов. Затем выбирается случайный скин и применяется к экземпляру перед уничтожением списка.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skins/skeleton_skin_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skins/skeleton_skin_set.htm index bbc3ac474..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skins/skeleton_skin_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Skins/skeleton_skin_set.htm @@ -1,63 +0,0 @@ - - - - - - skeleton_skin_set - - - - - - - - - - -

skeleton_skin_set

-

Скелетная анимация sprite может быть нарисована с различными текстурами (называемыми "скинами"), что позволяет использовать одну анимацию для различных целей. Например, у вас может быть общая анимация ходьбы, и она может использоваться персонажами NPC, врагами и т.д. в игре, просто изменив скин, которым она нарисована. Эти скины должны быть предварительно созданы и названы в вашей программе анимации, и это имя передается в функцию (как строка), чтобы установить sprite для использования этого скина при рисовании.

-

-

Синтаксис:

-

skeleton_skin_set(skinname);

- - - - - - - - - - - -
АргументТипОписание
skinnameThe name (a string) of the skin to use.
-

-

Возвращается:

-

-

-

Пример:

-

if skeleton_skin_get() == "skin_Enemy1"
- {
-     skeleton_skin_set(choose("skin_Enemy1", "skin_Enemy2", "skin_Enemy3");
- }

-

Приведенный выше код проверяет текущий назначенный скин для анимации, и если это "skin_Enemy1", он выбирает и устанавливает новый скин из одного из трех вариантов.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/Slots.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/Slots.htm index 8f95a114a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/Slots.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/Slots.htm @@ -1,49 +0,0 @@ - - - - - - Слоты - - - - - - - - - - -

Слоты

-

Скелетная анимация sprites может иметь "слоты", в которые можно поместить "вложения". Вложение - это просто изображение, которое может использоваться как реквизит sprite, и помещается в слот так, чтобы оно двигалось вместе с анимацией той части, где расположен слот. Если вы представите себе sprite воина со слотом для вложений на руке - вы можете поместить в этот слот различное оружие sprites и заставить воина выглядеть так, будто он использует меч, пику, щит или что-то еще.

-

Этот раздел посвящен именно слотам, их настройке и использованию, однако вы также можете настраивать вложения и получать информацию о них из перечисленных здесь функций.

-

Доступны следующие функции слота:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_find_slot.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_find_slot.htm index b7134b94f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_find_slot.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_find_slot.htm @@ -1,74 +0,0 @@ - - - - - - skeleton_find_slot - - - - - - - - - - - -

skeleton_find_slot

-

С помощью этой функции вы можете найти, какие слоты находятся в заданной позиции пространства комнаты в Spine sprite, связанном с текущим экземпляром. Вы создаете список DS и предоставляете его ID вместе с позицией x/y для проверки, и список будет заполнен строкой имен для каждого из доступных слотов крепления для sprite (включая любые модификации крепления). Обратите внимание, что список всегда сортируется в порядке убывания, начиная с самого верхнего слота.

-

-

Синтаксис:

-

skeleton_find_slot(x, y, list);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x position in the room to check.
yРеальноThe y position in the room to check.
listИдентификатор списка DSThe ID of the DS list to populate with the DS maps.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

slot_list = ds_list_create();
- skeleton_find_slot(mouse_x, mouse_y, slot_list);

-

Приведенный выше код создает список DS, а затем заполняет его именами слотов, найденных при положении мыши в комнате.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_alpha_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_alpha_get.htm index 2c3c85dfe..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_alpha_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_alpha_get.htm @@ -1,74 +0,0 @@ - - - - - - skeleton_slot_alpha_get - - - - - - - - - - - -

skeleton_slot_alpha_get

-

С помощью этой функции вы можете получить значение альфа слота вложения. Вы указываете имя слота (строка), а функция возвращает реальное значение альфа в диапазоне от 0 до 1.

-

-

Синтаксис:

-

skeleton_slot_alpha_get(slot);

- - - - - - - - - - - - - -
АргументТипОписание
slotСтрокаThe slot name to check, a string
-

-

Возвращается:

-

Real

-

-

Пример:

-

slot_list = ds_list_create();
- skeleton_find_slot(mouse_x, mouse_y, slot_list);
- if (!ds_list_empty(slot_list))
- {
-     for (var i = 0; i < ds_list_size(slot_list); ++i)
-     {
-         if skeleton_slot_alpha_get(slot_list[| i]) != 1
-         {
-             skeleton_slot_colour_set(slot_list[| i], c_white, 1);
-         }
-     }
- }

-

Приведенный выше код создает список DS, затем заполняет его именами слотов, найденных по положению мыши в комнате. Затем он проходит по списку слотов и сбрасывает цвет для найденных слотов на белый с альфой 1, если альфа еще не равна 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_colour_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_colour_get.htm index f8eacd03e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_colour_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_colour_get.htm @@ -1,75 +0,0 @@ - - - - - - skeleton_slot_colour_get - - - - - - - - - - - -

skeleton_slot_colour_get

-

С помощью этой функции можно получить цвет слота вложения. Введите имя слота (строку), и функция вернет целочисленное значение цвета.

-

-

Синтаксис:

-

skeleton_slot_colour_get(slot);

- - - - - - - - - - - - - -
АргументТипОписание
slotСтрокаThe slot name to check, a string
-

-

Возвращается:

-

Real

-

-

Пример:

-

slot_list = ds_list_create();
- skeleton_find_slot(mouse_x, mouse_y, slot_list);
- if (!ds_list_empty(slot_list))
- {
-     for (var i = 0; i < ds_list_size(slot_list); ++i)
-     {
-         if skeleton_slot_colour_get(slot_list[| i]) != c_white
-         {
-             skeleton_slot_colour_set(slot_list[| i], c_white, 1);
-         }
-     }
- }

-

Приведенный выше код создает список DS, затем заполняет его названиями слотов, найденных по положению мыши в комнате. Затем он проходит по списку слотов и сбрасывает цвет для найденных слотов на белый с альфой 1, если цвет еще не белый.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_colour_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_colour_set.htm index a7f0431af..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_colour_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_colour_set.htm @@ -1,84 +0,0 @@ - - - - - - skeleton_slot_colour_set - - - - - - - - - - -

skeleton_slot_colour_set

-

С помощью этой функции можно задать цвет и альфа слота вложения, так что все sprites, присоединенные к нему, будут рисоваться с этими значениями наложения. Следует помнить, что экземпляр sprite может иметь настройки цвета наложения и альфы (image_blend и image_alpha), как и вложение (см. функцию skeleton_attachment_create_colour()), и поэтому окончательный цвет и альфа, которые будут у назначенного вложения sprite для этого слота, будут представлять собой комбинацию всех этих значений.

-

-

Синтаксис:

-

skeleton_slot_colour_set(slot, colour, alpha);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
slotСтрокаThe slot name to set, a string
colourЦветThe colour to set, either an integer, a constant, or a hex value.
alphaРеальноThe alpha to set from 0 to 1.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

slot_list = ds_list_create();
- skeleton_find_slot(mouse_x, mouse_y, slot_list);
- if (!ds_list_empty(slot_list))
- {
-     for (var i = 0; i < ds_list_size(slot_list); ++i)
-     {
-         if skeleton_slot_colour_get(slot_list[| i]) != c_white
-         {
-             skeleton_slot_colour_set(slot_list[| i], c_white, 1);
-         }
-     }
- }

-

Приведенный выше код создает список DS, затем заполняет его названиями слотов, найденных по положению мыши в комнате. Затем он проходит по списку слотов и сбрасывает цвет для найденных слотов на белый с альфой 1, если цвет еще не белый.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_data.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_data.htm index bc04f764e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_data.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_data.htm @@ -1,95 +0,0 @@ - - - - - - skeleton_slot_data - - - - - - - - - - -

skeleton_slot_data

-

С помощью этой функции вы можете заполнить (предварительно созданный) список DS данными для каждого из доступных слотов крепления, которые содержит анимация. Эти данные возвращаются в виде карты DS, которая содержит следующие пары ключ/значение:

-
    -
  • "имя": Название слота.
  • -
  • "кость": Название кости.
  • -
  • "attachment": Имя вложения, если оно используется, или "(none)", если оно не назначено.
  • -
-

Значения для каждого ключа будут строками и затем могут быть использованы в других скелетных функциях вложения для этих типов sprite. Обратите внимание, что созданные карты DS не уничтожаются, поэтому вам придется пройтись по списку DS и уничтожить каждую из созданных карт самостоятельно.

-

-

Синтаксис:

-

skeleton_slot_data(sprite, list);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
spriteАктив спрайтаThe sprite index of the Spine skeletal animation to get the data from.
listИдентификатор списка DSThe ID of the DS list to populate with the DS maps.
-

-

-

Возвращается:

-

N/A

-

-

Пример:

-

var list = ds_list_create();
- var open = true;
- slot_name = "";
- skeleton_slot_data(sprite_index, list);
-
- for (var i = 0; i < ds_list_size(list); i++)
- {
-     var map = list[| i];
-     if open
-     {
-         if map[? "attachment"] == "(none)"
-         {
-             open = false;
-             slot_name = map[? "name"];
-         }
-     }
-
-     ds_map_destroy(map);
- }
-
- ds_list_destroy(list); -

-

Приведенный выше код создает список DS, а затем заполняет его данными слота для экземпляра sprite. Затем эти данные анализируются для извлечения отдельных карт DS с данными слота. Затем проверяется, есть ли пустой слот, и если да, то переменной "имя_слота" присваивается имя пустого слота перед уничтожением карты DS. Наконец, мы уничтожаем список DS, поскольку он больше не нужен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_data_instance.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_data_instance.htm index b55f12034..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_data_instance.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_data_instance.htm @@ -1,89 +0,0 @@ - - - - - - skeleton_slot_data_instance - - - - - - - - - - - -

skeleton_slot_data_instance

-

С помощью этой функции вы можете заполнить (предварительно созданный) список DS данными для каждого из доступных слотов вложений для Spine sprite, связанного с текущим экземпляром (включая любые модификации вложений). Эти данные возвращаются в виде карты DS, которая содержит следующие пары ключ/значение:

-
    -
  • "имя": Название слота.
  • -
  • "кость": Название кости.
  • -
  • "attachment": Имя вложения, если оно используется, или "(none)", если оно не назначено.
  • -
-

Значения для каждого ключа будут строками и затем могут быть использованы в других скелетных функциях вложения для этих типов sprite. Обратите внимание, что созданные DS Map не уничтожаются, поэтому вам нужно будет пройтись по списку DS и уничтожить каждую из созданных карт самостоятельно.

-

-

Синтаксис:

-

skeleton_slot_data_instance(list);

- - - - - - - - - - - - - -
АргументТипОписание
listИдентификатор списка DSThe ID of the DS list to populate with the DS maps.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var list = ds_list_create();
- var open = true;
- slot_name = "";
- skeleton_slot_data_instance(list);
- for (var i = 0; i < ds_list_size(list); i++)
- {
-     var map = list[| i];
-     if open
-     {
-         if map[? "attachment"] == "(none)"
-         {
-             open = false;
-             slot_name = map[? "name"];
-         }
-     }
-
-     ds_map_destroy(map);
- }
-
- ds_list_destroy(list); -

-

Приведенный выше код создает список DS, а затем заполняет его данными слота для экземпляра sprite. Затем эти данные анализируются для извлечения отдельных карт DS с данными слота. Затем проверяется, есть ли пустой слот, и если да, то переменной "имя_слота" присваивается имя пустого слота перед уничтожением карты DS. Наконец, мы уничтожаем список DS, поскольку он больше не нужен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_list.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_list.htm index 9c1e8280d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_list.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Skeletal_Animation/Slots/skeleton_slot_list.htm @@ -1,68 +0,0 @@ - - - - - - skeleton_slot_list - - - - - - - - - - -

skeleton_slot_list

-

С помощью этой функции вы можете заполнить (предварительно созданный) список DS всеми именами слотов, созданных в рамках скелетной анимации sprite. Имена будут строками и затем могут быть использованы в других функциях слотов скелетной анимации для этих типов sprite.

-

-

Синтаксис:

-

skeleton_slot_list(sprite, list);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
spriteАктив спрайтаThe sprite index of the Spine skeletal animation to get the list from.
listИдентификатор списка DSThe ID of the DS list to populate with the bone names.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

bone_list = ds_list_create();
- skeleton_slot_list(sprite_index, bone_list);

-

Приведенный выше код создает список DS, затем заполняет его именами слотов для последующего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/Sprite_Information.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/Sprite_Information.htm index 458dfa226..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/Sprite_Information.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/Sprite_Information.htm @@ -1,59 +0,0 @@ - - - - - - Информация о спрайте - - - - - - - - - - -

Информация о спрайте

-

Следующие функции можно использовать для получения информации об активе sprite. Обратите внимание, что эти функции получают информацию из базового sprite (т.е. актива sprite, созданного в браузере активов), а не из sprite, как он используется в экземпляре. Например, вы можете использовать спрайт переменная экземпляра sprite_width для получения ширины sprite, которую использует экземпляр, и эта ширина будет учитывать любое масштабирование, которое могло быть применено. Однако если вам нужно узнать ширину sprite в обычном виде, без применения преобразований, вам нужно использовать функцию sprite_get_width(), приведенную ниже.

-

Более подробную информацию о переменных экземпляра sprite см. в разделе " Переменные экземпляра".

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_bottom.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_bottom.htm index 1bf8ee778..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_bottom.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_bottom.htm @@ -1,62 +0,0 @@ - - - - - - sprite_get_bbox_bottom - - - - - - - - - - - -

sprite_get_bbox_bottom

-

Эта функция возвращает относительное положение нижней части ограничивающего поля sprite. Это значение дается как относительное значение, основанное на том, что верхний левый угол базового актива sprite равен (0,0). Это то же значение, которое можно найти в редакторе sprite - для свойств маски столкновений. На рисунке ниже показано, как оно рассчитывается:

-

BBox Example

-

Синтаксис:

-

sprite_get_bbox_bottom(ind);

- - - - - - - - - - - -
АргументТипОписание
indThe index of the sprite to check.
-

-

Возвращает

-

-

-

Пример:

-

var ww, hh;
ww = sprite_get_bbox_left(sprite_index) - sprite_get_bbox_right(sprite_index);
hh = sprite_get_bbox_bottom(sprite_index) - sprite_get_bbox_top(sprite_index);

-

Приведенный выше код вычисляет ширину и высоту маски столкновений на основе относительных положений сторон ограничивающей рамки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_left.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_left.htm index 17f5efcea..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_left.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_left.htm @@ -1,62 +0,0 @@ - - - - - - sprite_get_bbox_left - - - - - - - - - - - -

sprite_get_bbox_left

-

Эта функция возвращает относительное положение левой части ограничительной области sprite. Это значение дается как относительная величина, основанная на том, что верхний левый угол базового актива sprite равен (0,0). Это то же значение, которое можно найти в редакторе sprite. - для свойств маски столкновений. На рисунке ниже показано, как оно рассчитывается:

-

BBox Example

-

Синтаксис:

-

sprite_get_bbox_left(ind);

- - - - - - - - - - - -
АргументТипОписание
indThe index of the sprite to check.
-

-

Возвращает

-

-

-

Пример:

-

var ww, hh;
ww = sprite_get_bbox_left(sprite_index) - sprite_get_bbox_right(sprite_index);
hh = sprite_get_bbox_bottom(sprite_index) - sprite_get_bbox_top(sprite_index);

-

Приведенный выше код вычисляет ширину и высоту маски столкновений на основе относительных положений сторон ограничивающей рамки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_mode.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_mode.htm index d1f0dd8f1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_mode.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_mode.htm @@ -1,87 +0,0 @@ - - - - - - sprite_get_bbox_mode - - - - - - - - - - - -

sprite_get_bbox_mode

-

Эта функция возвращает текущий "режим" для расчетов ограничивающей рамки. Вы передаете индекс sprite для проверки sprite, и функция возвращает одну из констант, показанных ниже.

-

-

Синтаксис:

-

sprite_get_bbox_mode(ind);

- - - - - - - - - - - -
АргументТипОписание
indThe index of the sprite to check.
-

-

Возвращает

-

Bounding Box Mode Constant

- - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
bboxmode_automaticАвтоматически - Ограничительная рамка будет рассчитана автоматически, на основе настройки допуска для спрайта.
bboxmode_fullimageПолное изображение - Ограничительное поле будет установлено так, чтобы использовать всю ширину и высоту sprite, независимо от допусков и "пустых" пикселей.
bboxmode_manualВручную - Ограничительная рамка была установлена вручную на заданные пользователем значения (либо в редакторе sprite, либо с помощью функции sprite_set_bbox())
-

-

Пример:

-

if sprite_get_bbox_mode(sprite_index) != 0
- {
-     sprite_set_bbox_mode(sprite_index, bboxmode_automatic);
- }

-

Приведенное выше действие проверяет режим bbox для текущего sprite и если он не automatic, то устанавливает его в это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_right.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_right.htm index c69825de4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_right.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_right.htm @@ -1,62 +0,0 @@ - - - - - - sprite_get_bbox_right - - - - - - - - - - - -

sprite_get_bbox_right

-

Эта функция возвращает относительное положение правой части ограничительной области sprite. Это значение дается как относительная величина, основанная на том, что верхний левый угол базового актива sprite равен (0,0). Это то же значение, которое можно найти в редакторе sprite. - для свойств маски столкновений. На рисунке ниже показано, как оно рассчитывается:

-

BBox Example

-

Синтаксис:

-

sprite_get_bbox_right(ind);

- - - - - - - - - - - -
АргументТипОписание
indThe index of the sprite to check.
-

-

Возвращает

-

-

-

Пример:

-

var ww, hh;
ww = sprite_get_bbox_left(sprite_index) - sprite_get_bbox_right(sprite_index);
hh = sprite_get_bbox_bottom(sprite_index) - sprite_get_bbox_top(sprite_index);

-

Приведенный выше код вычисляет ширину и высоту маски столкновений на основе относительных положений сторон ограничивающей рамки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_top.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_top.htm index 136d178e3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_top.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_bbox_top.htm @@ -1,63 +0,0 @@ - - - - - - sprite_get_bbox_top - - - - - - - - - - - -

sprite_get_bbox_top

-

Эта функция возвращает относительное положение вершины ограничивающей рамки sprite. Это значение дается как относительное значение, основанное на том, что верхний левый угол базового актива sprite равен (0,0). Это то же значение, которое можно найти в редакторе sprite - для свойств маски столкновений. На рисунке ниже показано, как оно рассчитывается:

-

BBox Example

-

-

Синтаксис:

-

sprite_get_bbox_top(ind);

- - - - - - - - - - - -
АргументТипОписание
indThe index of the sprite to check.
-

-

Возвращает

-

-

-

Пример:

-

var ww, hh;
ww = sprite_get_bbox_left(sprite_index) - sprite_get_bbox_right(sprite_index);
hh = sprite_get_bbox_bottom(sprite_index) - sprite_get_bbox_top(sprite_index);

-

Приведенный выше код вычисляет ширину и высоту маски столкновений на основе относительных положений сторон ограничивающей рамки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_height.htm index ccf7c1dad..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_height.htm @@ -1,64 +0,0 @@ - - - - - - sprite_get_height - - - - - - - - - - - -

sprite_get_height

-

С помощью этой функции можно найти высоту базового актива sprite без преобразований в пикселях.

-

-

Синтаксис:

-

sprite_get_height(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the sprite to find the height of.
-

-

Возвращает

-

-

-

Пример:

-

if sprite_height != sprite_get_height(sprite_index)
- {
-     image_yscale = 1;
- }

-

Приведенный выше код проверяет высоту sprite в текущем экземпляре и, если есть разница между ней и исходной базой sprite, сбрасывает масштаб оси y.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_info.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_info.htm index 974baadc8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_info.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_info.htm @@ -1,543 +0,0 @@ - - - - - - sprite_get_info - - - - - - - - - - - -

sprite_get_info

-

Эта функция используется для получения информации для заданного sprite. Вы указываете индекс sprite (это может быть актив, добавленный через браузер активов, или спрайт, добавленный во время выполнения), и функция возвращает struct со следующими переменными:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Информационная структура спрайта
ПеременнаяТипОписание
ширинанастоящийШирина спрайта (в пикселях)
высотанастоящийВысота спрайта (в пикселях)
xoffsetнастоящийСмещение/приближение спрайта по оси X (в пикселях)
yoffsetнастоящийСмещение/приближение спрайта по оси Y (в пикселях)
прозрачныйбулевоtrue если sprite помечен как прозрачный, в противном случае. false
- (Это может быть указано только через sprite_add() или аналогичные функции, и будет false для sprites, созданного в IDE) -
гладкийбулевоtrue если sprite отмечен как гладкий, в противном случае false
- (Это можно указать только с помощью sprite_add() или аналогичных функций, и это будет false для sprites, созданных в IDE) -
типнастоящийТип спрайта:
- 0 - Bitmap (Regular sprites)
- 1 - SWF
- 2 - позвоночник -
bbox_leftнастоящийПоложение левого края ограничительной рамки (в пикселях)
bbox_topнастоящийПоложение верхнего края ограничительной рамки (в пикселях)
bbox_rightнастоящийПоложение правого края ограничительной рамки (в пикселях)
bbox_bottomнастоящийПоложение нижнего края ограничительной рамки (в пикселях)
имястрокаИмя спрайта
num_subimagesнастоящийКоличество подизображений (или кадров) в спрайте
маска использованиябулевоtrue если этот sprite использует маску столкновений, в противном случае false
num_masksнастоящийКоличество масок в данном sprite (будет больше 1, если sprite использует покадровые маски).
nineslicestruct Структура девяти срезов для данного sprite, или undefined, если у него нет данных о девяти срезах.
сообщениямассивМассив широковещательных сообщений для данного sprite, где каждое широковещательное сообщение является структурой, содержащей информацию о сообщении (более подробная информация в разделе "Общие данные Sprite ").
информация о кадремассивМассив кадров для данного sprite, где каждый кадр является структурой, содержащей информацию о его синхронизации (более подробная информация в разделе "Общие данные Sprite ").
-

Эта дополнительная переменная доступна только для спрайтов Bitmap (обычных):

- - - - - - - - - - - - - - - - - - - - - -
Информационная структура спрайта
ПеременнаяТипОписание
рамымассивМассив кадров для данного sprite, где каждый кадр является структурой, содержащей информацию о его текстуре (подробнее в разделе "Данные растровой карты Sprite ").
-

Эти дополнительные переменные доступны только для спрайтов Spine:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Информационная структура спрайта
ПеременнаяТипОписание
num_atlasнастоящийКоличество используемых текстур атласа
атлас_текстурмассивМассив идентификаторов текстур, используемых для атласа
предварительно умноженныйбулевоtrue если этот sprite помечен как премультипликативный, в противном случае false
имена анимациимассивМассив, содержащий имена каждой анимации в этом спрайте
имена_кожимассивМассив, содержащий имена каждого скина в этом спрайте
костимассивМассив, содержащий структуры для каждой кости в этом спрайте (более подробная информация в разделе "Данные позвоночника Sprite ").
слотымассивМассив, содержащий структуры для каждого слота в этом спрайте (более подробная информация в разделе "Данные позвоночника Sprite ").
-

-

Функция вернет undefined, если данный sprite не существует. Также обратите внимание, что информация, возвращаемая в этой структуре, должна рассматриваться только для чтения, так как изменение любой из этих переменных не повлияет на sprite.

-

Разделы ниже содержат информацию о массивах и структурах, включенных в возвращаемую структуру в зависимости от типа sprite:

-

Общие данные Sprite

-
-

В этом разделе содержится информация о переменных, включенных в struct для всех видов спрайтов.

-

Переменная messages представляет собой массив, который содержит информацию о широковещательных сообщениях, существующих в данном sprite. Каждое широковещательное сообщение в этом массиве представляет собой структуру, содержащую следующие переменные:

- - - - - - - - - - - - - - - - - - -
Имя переменнойТип данныхОписание
раманастоящийВремя этого широковещательного сообщения от начала анимации (в кадрах)
сообщениестрокаСтрока широковещательного сообщения
-

-

Переменная frame_info представляет собой массив, содержащий информацию о тайминге кадров спрайта. Каждый кадр в этом массиве представляет собой структуру, содержащую следующие переменные:

- - - - - - - - - - - - - - - - - - - - - - - -
Имя переменнойТип данныхОписание
раманастоящийВремя начала этого кадра (в кадрах)
продолжительностьнастоящийПродолжительность этого кадра (в кадрах)
индекс_изображениянастоящийИндекс изображения данного кадра
-

-
-

Растровое изображение Sprite Данные

-
-

Этот раздел содержит информацию о переменных, включенных в struct для Bitmap sprites (sprites, которые не являются Spine или SWF типа sprites).

-

Переменная frames представляет собой массив, содержащий информацию о текстурах кадров спрайта. Каждый кадр в этом массиве представляет собой структуру, содержащую следующие переменные:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Имя переменнойТип данныхОписание
xнастоящийПозиция X этого кадра на странице текстуры (в пикселях).
yнастоящийПозиция Y этого кадра на странице текстуры (в пикселях).
wнастоящийЛогическая ширина кадра (в пикселях), используемая внутренне
hнастоящийЛогическая высота кадра (в пикселях), используемая внутренне
текстуранастоящийИдентификатор страницы текстуры для этого кадра
исходная_ширинанастоящийИсходная ширина кадра (в пикселях)
исходная_высотанастоящийИсходная высота кадра (в пикселях)
ширина_обрезкинастоящийФактическая ширина кадра на странице текстуры после обрезки и масштабирования (поскольку GameMaker автоматически обрезает пустое пространство вокруг изображения, а также масштабирует его, если оно не помещается).
высота_обрезкинастоящийФактическая высота кадра на странице текстуры после обрезки и масштабирования
x_смещениенастоящийСмещение по оси X от левого края исходного изображения до левого края обрезанного участка
y_смещениенастоящийСмещение по оси Y от верхнего края исходного изображения до верхнего края обрезанного участка
-

-
-

Позвоночник Sprite Данные

-
-

В этом разделе содержится информация о переменных, включенных в структуру для Spine sprites.

-

Переменная bones представляет собой массив, содержащий информацию обо всех костях в данном Spine sprite. Каждая кость в этом массиве представляет собой структуру, содержащую следующие переменные:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Имя переменнойТип данныхОписание
родительстрокаИмя родительской кости, или undefined, если у этой кости нет родителя.
имястрокаНазвание этой кости
индекснастоящийИндекс этой кости
длинанастоящийДлина этой кости
xнастоящийПоложение X этой кости
yнастоящийПоложение Y этой кости
вращениенастоящийВращение этой кости
масштаб_xнастоящий(Внутренний на Spine) Масштабное значение на X
масштаб_yнастоящий(Внутренний на Spine) Значение шкалы на Y
сдвиг_хнастоящий(Внутри Spine) Значение сдвига на X
сдвиг_yнастоящий(Внутри Spine) Значение сдвига на Y
режим преобразованиянастоящий(Внутри Spine) Режим преобразования
-

ПРИМЕЧАНИЕ: Обратитесь к документации Spine для получения дополнительной информации о внутренних переменных Spine.

-

Переменная slots представляет собой массив, который содержит информацию обо всех слотах в данном Spine sprite. Каждый слот в этом массиве представляет собой структуру, содержащую следующие переменные:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Имя переменнойТип данныхОписание
имястрокаНазвание слота
индекснастоящийИндекс слота
костьстрокаИмя кости слота, или "(none)", если для этого слота нет кости.
вложениестрокаИмя вложения
красныйнастоящийКрасная составляющая цвета слота (0-1)
зеленыйнастоящийЗеленая составляющая цвета слота (0-1)
синийнастоящийСиняя составляющая цвета слота (0-1)
альфанастоящийАльфа-компонент цвета слота (0-1)
blendModeнастоящий(Внутри Spine) Режим наложения для слота
dark_red*настоящийКрасная составляющая темного цвета слота (0-1)
dark_green*настоящийЗеленая составляющая темного цвета слота (0-1)
dark_blue*настоящийСиняя составляющая темного цвета слота (0-1)
dark_alpha*строкаАльфа-компонент темного цвета слота (0-1)
-

* ПРИМЕЧАНИЕ: Переменные темного цвета доступны только в том случае, если в слоте включена функция Tint Black.

-

-
-

-

-

Синтаксис:

-

sprite_get_info(index);

- - - - - - - - - - - - - -
АргументТипОписание
indexАктив спрайтаThe index of the sprite to get the information for.
-

-

Возвращает

-

Sprite Info Struct (or undefined)

-

-

Пример:

-

var _info = sprite_get_info(sprite_index);
-
- if (_info != undefined && _info.type == 0)
- {
-     var _messages = _info.messages;
-     var _message_count = array_length(_messages);
-     
-     for (var i = 0; i < _message_count; i ++)
-     {
-         var _message = _messages[i];
-         show_debug_message("Message at frame " + string(_message.frame) + ": " + _message.message);
-     }
- } -

-

Приведенный выше код получает информационную структуру для экземпляра sprite, а затем проверяет, не является ли он undefined и что его тип равен 0 (что означает, что это растровое изображение sprite). В этом случае он получает массив широковещательных сообщений для этого sprite и затем запускает цикл for для печати каждого широковещательного сообщения (вместе с его кадром) в выходной журнал.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_name.htm index 6dab6d82e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_name.htm @@ -1,63 +0,0 @@ - - - - - - sprite_get_name - - - - - - - - - - - -

sprite_get_name

-

Эта функция возвращает имя в виде строки указанного sprite. Это имя - то, которое было указано для sprite в дереве ресурсов главного окна GameMaker. Обратите внимание, что это только строка, и ее нельзя использовать для прямой ссылки на sprite - для этого вам понадобится индекс спрайта. Однако вы можете использовать эту строку для получения индекса спрайта, используя возвращаемую строку вместе с функцией asset_get_index().

-

-

Синтаксис:

-

sprite_get_name(index);

- - - - - - - - - - - - - -
АргументТипОписание
indexАктивыThe index of the sprite to get the name of.
-

-

Возвращает

-

String

-

-

Пример:

-

str = sprite_get_name(sprite_index);

-

Приведенный выше код получит имя индекса sprite для экземпляра, выполняющего код, и сохранит возвращаемое значение в переменной "str".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_nineslice.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_nineslice.htm index e84aa2b5e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_nineslice.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_nineslice.htm @@ -1,69 +0,0 @@ - - - - - - sprite_get_nineslice - - - - - - - - - - - -

sprite_get_nineslice

-

Эта функция возвращает структуру Nine Slice для sprite, содержащую все свойства Nine Slice, установленные в редакторе спрайтов или с помощью функции sprite_set_nineslice(). Содержимое этой структуры подробно описано на этой странице.

-

Если предоставленный sprite не имеет назначенной ему структуры Nine Slice, для sprite будет создана и возвращена новая структура со свойствами Nine Slice по умолчанию.

-

Изменение любых значений в этой структуре изменит свойства Nine Slice исходного sprite, влияя на все будущие вызовы рисования, сделанные с этим sprite.

-

-

Синтаксис:

-

sprite_get_nineslice(ind);

- - - - - - - - - - - -
АргументТипОписание
indThe index of the sprite from which the Nine Slice struct will be retrieved
-

-

Возвращается:

-

Nine Slice Struct (or -1 if the sprite doesn't exist)

-

-

Пример:

-

var _box_nineslice = sprite_get_nineslice(spr_box_0);
-
- _box_nineslice.enabled = true;
- _box_nineslice.left = 10;
- _box_nineslice.right = 10;
- _box_nineslice.top = 10;
- _box_nineslice.bottom = 10; -

-

Приведенный выше код извлекает структуру Nine Slice из sprite, включает для нее Nine Slicing и устанавливает смещения направляющих.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_number.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_number.htm index 363df4d05..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_number.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_number.htm @@ -1,62 +0,0 @@ - - - - - - sprite_get_number - - - - - - - - - - - -

sprite_get_number

-

У sprite должно быть хотя бы одно подизображение, и эта функция вернет, сколько их у него. Помните, что субизображение sprite начинает нумероваться с 0, поэтому если эта функция вернет значение 3 (проверяемый sprite имеет 3 субизображения), то они будут пронумерованы как - 0, 1 и 2.

-

-

Синтаксис:

-

sprite_get_number(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the sprite.
-

-

Возвращает

-

-

-

Пример:

-

image_index = floor(random(sprite_get_number(sprite_index)));

-

Приведенный выше код установит индекс изображения на случайный кадр, основанный на количестве вложенных изображений, которые имеет сайт sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_speed.htm index 6f35b5627..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_speed.htm @@ -1,71 +0,0 @@ - - - - - - sprite_get_speed - - - - - - - - - - - -

sprite_get_speed

-

Эта функция может быть использована для получения скорости sprite, определенной для ресурса sprite в редакторе спрайтов. Возвращаемое значение может быть использовано, например, для расчета того, сколько - сколько кадров может быть нарисовано для различных image_speed. Обратите внимание, что возвращаемое значение будет сильно отличаться в зависимости от типа скорости - которая была применена в редакторе Sprite, либо Frames Per Second, либо Frames Per Game Frame. Следующие два примера иллюстрируют это:

-
    -
  • Если у вас есть sprite, который рисует 1 кадр в секунду, а скорость изображения установлена на 0,5, он будет рисовать со скоростью 0,5 кадра в секунду. Если частота кадров вашей игры составляет 60 кадров в секунду, то sprite будет рисовать 1 кадр на каждые 120 - игровых кадров.
  • -
  • Если у вас есть sprite, который рисует 1 кадр на игровой кадр, и вы установили скорость изображения на 0,5, он будет рисовать 0,5 кадра на игровой кадр. Если частота кадров в игре составляет 60 кадров в секунду, то sprite будет рисовать 30 кадров на - каждые 60 игровых кадров.
  • -
-

Узнать, какой тип скорости анимации использовался при определении sprite, можно с помощью функции sprite_get_speed_type(), и можно установить скорость и тип анимации - с помощью функции sprite_set_speed().

-

-

Синтаксис:

-

sprite_get_speed(index)

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the sprite to get the speed of
-

-

Возвращается:

-

-

-

Пример:

-

s_speed = sprite_get_speed(sprite_index);
s_type = sprite_get_speed_type(sprite_index);

-

Приведенный выше код получает скорость sprite и тип анимации sprite и сохраняет их в переменных экземпляра для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_speed_type.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_speed_type.htm index a1f931d4f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_speed_type.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_speed_type.htm @@ -1,96 +0,0 @@ - - - - - - sprite_get_speed_type - - - - - - - - - - - -

sprite_get_speed_type

-

Эта функция может быть использована для получения типа анимации sprite, определенного для ресурса sprite в редакторе спрайтов. Возвращаемое значение будет одной из следующих констант:

- - - - - - - - - - - - - - - - - - - - - - -
Постоянная скорости спрайта
ПостояннаяОписание
spritespeed_framespersecondНа сайте sprite была определена анимация в кадрах в секунду.
spritespeed_framespergameframeНа сайте sprite была определена анимация в кадрах на один игровой кадр.
-

Следующие два примера иллюстрируют разницу, которую это может внести при расчете скорости анимации для спрайта:

-
    -
  • Если у вас есть sprite, который рисует 1 кадр в секунду, а скорость изображения установлена на 0,5, он будет рисовать со скоростью 0,5 кадра в секунду. Если частота кадров в игре составляет 60 кадров в секунду, то sprite будет рисовать 1 кадр на каждые 120 игровых кадров.
  • -
  • Если у вас есть sprite, который рисует 1 кадр в игровом кадре, а скорость изображения установлена на 0,5, то он будет рисовать 0,5 кадра в игровом кадре. Если частота кадров в игре составляет 60 кадров в секунду, то sprite будет рисовать 30 кадров на каждые 60 игровых кадров.
  • -
-

Вы можете узнать, какое значение скорости использовалось для анимации sprite, с помощью функции sprite_get_speed(), а установить скорость и тип анимации можно с помощью функции sprite_set_speed().

-

-

Синтаксис:

-

sprite_get_speed_type(index)

- - - - - - - - - - - - - -
АргументТипОписание
indexАктив спрайтаThe index of the sprite to get the animation type of
-

-

Возвращается:

-

Sprite Speed Constant (see above)

-

-

Пример:

-

s_speed = sprite_get_speed(sprite_index);
- s_type = sprite_get_speed_type(sprite_index);

-

Приведенный выше код получает скорость sprite и тип анимации sprite и сохраняет их в переменных экземпляра для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_texture.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_texture.htm index 5c2d27915..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_texture.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_texture.htm @@ -1,76 +0,0 @@ - - - - - - sprite_get_texture - - - - - - - - - - - -

sprite_get_texture

-

Эта функция возвращает специальный указатель на страницу текстуры sprite. Это значение может быть использовано в других функциях рисования, в частности, в функциях 2D-примитивов, а также в функциях шейдера. Более подробную информацию о возвращаемой текстурной странице можно получить с помощью различных функций texture_, которые можно найти здесь.

-
-

-

Синтаксис:

-

sprite_get_texture(spr, subimg);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
sprАктив спрайтаThe index of the sprite to use.
subimgРеальноThe sub-image of the sprite to use.
-

-

Возвращает

-

Texture

-

-

Пример:

-

var tex;
- tex = sprite_get_texture(spr_Wall, 0);
- draw_primitive_begin_texture(pr_trianglestrip, tex);
- draw_vertex_texture(0, 0, 0, 0);
- draw_vertex_texture(480, 0, 1, 0);
- draw_vertex_texture(480, 640, 1, 1);
- draw_vertex_texture(0, 640, 0, 1);
- draw_primitive_end();

-

Приведенный выше код нарисует полосу треугольника с 4 вершинами, текстурированную текстурой, хранящейся в переменной "tex".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_tpe.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_tpe.htm index 0c4fd2e7d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_tpe.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_tpe.htm @@ -1,69 +0,0 @@ - - - - - - sprite_get_tpe - - - - - - - - - - - -

sprite_get_tpe

-

Эта функция возвращает специальное значение, относящееся к позиции заданного sprite и суб-изображения на странице текстуры, используемой вашей игрой. Таким образом, вы можете передавать значение расширениям для использования вне скомпилированной игры, эффективно обходя функции рисования GameMaker и позволяя использовать sprite в содержимом DOM, которое затем может быть нарисовано в любом месте окна, содержащего игровую канву. Эта функция представляет особый интерес для тех, кто хочет создать кнопки и другие интерактивные средства вне элемента холста GameMaker на странице, использующей функцию clickable_add().

-

ПРИМЕЧАНИЕ: Эта функция предназначена только для HTML5.

-

-

Синтаксис:

-

sprite_get_tpe(sprite, index);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
spriteАктив спрайтаThe index of the sprite to find the texture page entry of.
indexРеальноThe image index of the sprite.
-

-

Возвращает

-

Texture Page Entry

-

-

Пример:

-

home_but = clickable_add(32, 32, sprite_get_tpe(spr_MS_Home, 0), "http://macsweeney_games.com", "_blank", "width=700, height=500, menubar=0, toolbar=0, scrollbars=0");

-

Приведенный выше код создает DOM-кнопку в позиции (32, 32) страницы, на которой запущен игровой холст. Кнопка использует sprite, на которую ссылается страница текстуры как "spr_MS_Home", и при нажатии на кнопку откроется новое окно для указанного URL и с определенными свойствами для этого окна.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_uvs.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_uvs.htm index 182464177..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_uvs.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_uvs.htm @@ -1,77 +0,0 @@ - - - - - - sprite_get_uvs - - - - - - - - - - - -

sprite_get_uvs

-

Эта функция возвращает массив с UV-координатами и другими данными для текстуры суб-изображения sprite на странице текстуры. Функция возвращает массив со следующими 8 элементами:

-
    -
  • [0] = левый
  • -
  • [1] = верх
  • -
  • [2] = право
  • -
  • [3] = низ
  • -
  • [4] = количество пикселей, которые компилятор активов обрезал с левой стороны sprites.
  • -
  • [5] = количество пикселей, которые компилятор активов обрезал с верхней стороны sprites.
  • -
  • [6] = нормализованный процент пиксельных данных от исходной ширины sprites, которые были сохранены на странице текстуры.
  • -
  • [7] = нормализованный процент пиксельных данных от исходной высоты sprites, который был сохранен на странице текстуры.
  • -
-

Затем этот массив можно использовать в других функциях рисования, особенно при работе в 3D или при использовании функций 2D-примитивов, а также при работе с функциями шейдеров.

-

ПРИМЕЧАНИЕ: Эта функция не работает с вектором sprites или скелетной анимацией sprites.

-

-

Синтаксис:

-

sprite_get_uvs(sprite, subimage);

- - - - - - - - - - - - - - - -
АргументТипОписание
spriteThe index of the sprite to use.
subimageThe sub-image of the sprite to use.
-

-

Возвращает

-

(1D, 8 elements)

-

-

Пример:

-

var tex = sprite_get_uvs(sprite, 0);
tex_left = tex[0];
tex_top = tex[1];
tex_right = tex[2];
tex_bottom = tex[3];

-

Приведенный выше код сохранит УФ-координаты для заданного sprite в локальном массиве, а затем присвоит значения переменным экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_width.htm index c82677b53..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_width.htm @@ -1,64 +0,0 @@ - - - - - - sprite_get_width - - - - - - - - - - - -

sprite_get_width

-

С помощью этой функции можно найти ширину базового ресурса sprite, без преобразований, в пикселях.

-

-

Синтаксис:

-

sprite_get_width(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the sprite to find the width of.
-

-

Возвращает

-

-

-

Пример:

-

if sprite_width != sprite_get_width(sprite_index)
- {
-     image_xscale = 1;
- }

-

Приведенный выше код проверяет ширину sprite в текущем экземпляре и, если есть разница между ней и исходной базой sprite, сбрасывает масштаб оси x.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_xoffset.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_xoffset.htm index 97c9c2e59..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_xoffset.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_xoffset.htm @@ -1,65 +0,0 @@ - - - - - - sprite_get_xoffset - - - - - - - - - - - -

sprite_get_xoffset

-

Когда вы определяете sprite в редакторе sprite, вам необходимо задать начало координат для этого sprite. Это точка, в которой sprite будет "прикреплен" или "нарисован" при использовании с экземпляром. Эта функция возвращает относительное смещение по оси x относительно начала координат, исходя из того, что левый верхний угол является точкой 0,0, при этом +x означает право, а -x - лево от нее. Следующее изображение иллюстрирует это:

-

Sprite Offset Example

-

-

Синтаксис:

-

sprite_get_xoffset(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the sprite to find the xoffset of.
-

-

Возвращает

-

-

-

Пример:

-

if x - sprite_get_xoffset(sprite_index) < 0
- {
-     x = _xoffset;
- }

-

Приведенный выше код обеспечит сохранение экземпляра в комнате на основе sprite (поэтому sprite всегда виден).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_yoffset.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_yoffset.htm index 2f83aebde..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_yoffset.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Information/sprite_get_yoffset.htm @@ -1,65 +0,0 @@ - - - - - - sprite_get_yoffset - - - - - - - - - - - -

sprite_get_yoffset

-

Когда вы определяете sprite в редакторе sprite, вам необходимо задать начало координат для этого sprite. Это точка, в которой sprite будет "прикреплен" или "нарисован" при использовании с экземпляром. Эта функция возвращает относительное смещение оси y относительно начала координат, исходя из того, что левый верхний угол является точкой 0,0, при этом +y означает "вниз", а -y - "вверх". Следующее изображение иллюстрирует это:

-

Sprite Offset Example

-

-

Синтаксис:

-

sprite_get_yoffset(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the sprite to find the yoffset of.
-

-

Возвращает

-

-

-

Пример:

-

if y - sprite_get_yoffset(sprite_index) < 0
- {
-     y = _yoffset;
- }

-

Приведенный выше код обеспечит сохранение экземпляра в комнате на основе sprite (поэтому sprite всегда виден).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/Sprite_Instance_Variables.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/Sprite_Instance_Variables.htm index 4e39d037f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/Sprite_Instance_Variables.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/Sprite_Instance_Variables.htm @@ -1,58 +0,0 @@ - - - - - - Переменные экземпляра спрайта - - - - - - - - - - -

Переменные экземпляра спрайта

-

Эти переменные включены по умолчанию в объекты GameMaker, и все они связаны с sprite, назначенным экземпляру в комнате. Эти переменные могут быть доступны в любое время в коде или действиях для экземпляра и использоваться для изменения того, что и как рисуется.

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/bbox_bottom.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/bbox_bottom.htm index fe98674f6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/bbox_bottom.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/bbox_bottom.htm @@ -1,51 +0,0 @@ - - - - - - bbox_bottom - - - - - - - - - - -

bbox_bottom

-

Эта переменная, доступная только для чтения, возвращает позицию y (в пределах комнаты) нижней части ограничительной рамки для данного экземпляра, где ограничительная рамка определяется максимальной шириной и высотой маски для данного экземпляра (как установлено sprite_index или mask_index). Даже когда sprite имеет точную маску столкновений, граничная область существует и используется для определенных вещей, поэтому вы можете использовать эту переменную для ее поиска. Обратите внимание, что если экземпляру не назначен sprite, возвращаемое значение будет равно позиции Y экземпляра.

-

-

Синтаксис:

-

bbox_bottom

-

-

Возвращается:

-

(integer)

-

-

Пример:

-

if bbox_bottom > room_height
- {
-     y = room_height - sprite_yoffset;
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/bbox_left.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/bbox_left.htm index bb6f439f0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/bbox_left.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/bbox_left.htm @@ -1,51 +0,0 @@ - - - - - - bbox_left - - - - - - - - - - -

bbox_left

-

Эта переменная, доступная только для чтения, возвращает положение (вдоль оси x) в пределах комнаты левой граничной области для данного экземпляра, где граничная область определяется максимальной шириной и высотой маски для данного экземпляра (как установлено sprite_index или mask_index). Даже когда sprite имеет точную маску столкновений, граничная область существует и используется для определенных вещей, поэтому вы можете использовать эту переменную для ее поиска. Обратите внимание, что если экземпляру не назначен sprite, возвращаемое значение будет равно X-позиции экземпляра.

-

-

Синтаксис:

-

bbox_left

-

-

Возвращается:

-

(integer)

-

-

Пример:

-

if bbox_left < 0
- {
-     x = sprite_xoffset;
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/bbox_right.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/bbox_right.htm index deec2a16b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/bbox_right.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/bbox_right.htm @@ -1,51 +0,0 @@ - - - - - - bbox_right - - - - - - - - - - -

bbox_right

-

Эта переменная, доступная только для чтения, возвращает положение в пределах комнаты (вдоль оси x) правой стороны ограничительной рамки для экземпляра, где ограничительная рамка определяется максимальной шириной и высотой маски для экземпляра (как установлено sprite_index или mask_index). Даже когда sprite имеет точную маску столкновений, граничная область существует и используется для определенных вещей, поэтому вы можете использовать эту переменную для ее поиска. Обратите внимание, что если экземпляру не назначен sprite, возвращаемое значение будет равно X-позиции экземпляра.

-

-

Синтаксис:

-

bbox_right

-

-

Возвращается:

-

(integer)

-

-

Пример:

-

if bbox_right > room_width
- {
-     x = room_width - sprite_xoffset;
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/bbox_top.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/bbox_top.htm index 6b4309666..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/bbox_top.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/bbox_top.htm @@ -1,51 +0,0 @@ - - - - - - bbox_top - - - - - - - - - - -

bbox_top

-

Эта переменная, доступная только для чтения, возвращает положение в пределах комнаты (вдоль оси y) вершины ограничительной рамки для данного экземпляра, где ограничительная рамка определяется максимальной шириной и высотой маски для данного экземпляра (как установлено sprite_index или mask_index). Даже когда sprite имеет точную маску столкновений, граничная область существует и используется для определенных вещей, поэтому вы можете использовать эту переменную для ее поиска. Обратите внимание, что если экземпляру не назначен sprite, возвращаемое значение будет равно позиции Y экземпляра.

-

-

Синтаксис:

-

bbox_top

-

-

Возвращается:

-

(integer)

-

-

Пример:

-

if bbox_top < 0
- {
-     y = sprite_yoffset;
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_alpha.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_alpha.htm index c0e34578c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_alpha.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_alpha.htm @@ -1,48 +0,0 @@ - - - - - - image_alpha - - - - - - - - - - -

image_alpha

-

Эта переменная используется для получения или установки значения альфа для sprite. Альфа всегда рассчитывается как значение между 0 и 1, где 0 - полностью прозрачный, а 1 - полностью непрозрачный. Обратите внимание, что для того, чтобы изменения в этой переменной были видимыми, экземпляр должен либо не иметь события рисования (и тогда GameMaker по умолчанию нарисует sprite), либо быть нарисованным с помощью одной из расширенных функций рисования, таких как draw_self() или draw_sprite_ext().

-

-

Синтаксис:

-

image_alpha

-

-

Возвращается:

-

Real

-

-

Пример:

-

image_alpha = clamp(image_alpha - 0.01, 0, 1);

-

Приведенный выше код будет медленно уменьшать значение image_alpha, пока оно не достигнет 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_angle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_angle.htm index fc8820534..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_angle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_angle.htm @@ -1,48 +0,0 @@ - - - - - - image_angle - - - - - - - - - - -

image_angle

-

Это значение задает угол (поворот) sprite и измеряется в градусах: вправо - 0º, вверх - 90º, влево - 180º и вниз - 270º. Установите эту переменную в 0, чтобы вернуть sprite к тому виду, который был задан в редакторе sprite. Обратите внимание, что для того, чтобы изменения в этой переменной были заметны, экземпляр должен либо не иметь события рисования (и тогда GameMaker по умолчанию нарисует sprite), либо быть нарисованным с помощью одной из расширенных функций рисования, таких как draw_self() или draw_sprite_ext().

-

-

Синтаксис:

-

image_angle

-

-

Возвращается:

-

Real

-

-

Пример:

-

image_angle = point_direction(x, y, mouse_x, mouse_y);

-

Приведенный выше код повернет sprite экземпляра так, чтобы он всегда указывал на позицию мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_blend.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_blend.htm index f44b59cfa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_blend.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_blend.htm @@ -1,50 +0,0 @@ - - - - - - image_blend - - - - - - - - - - -

image_blend

-

Эта переменная управляет "тонированием" экземпляра sprite. Значение по умолчанию равно -1 (но может быть и c_white). Любое другое значение (включая внутренние цветовые константы, такие как c_red, или c_aqua) будет смешивать указанный цвет с исходным sprite. Обратите внимание, что для того, чтобы изменения в этой переменной были видимыми, экземпляр должен либо не иметь события рисования (и тогда GameMaker по умолчанию будет рисовать sprite), либо рисоваться с помощью одной из расширенных функций рисования, таких как draw_self() или draw_sprite_ext().

-

image_blend Example

-

Обратите внимание, что на платформе HTML5 следует ограничить смешивание (если не используется WebGL), поскольку каждый смешиваемый sprite должен кэшироваться отдельно, поэтому наличие большого количества смешиваемых sprites может отрицательно сказаться на производительности (вы также можете установить размер кэша с помощью функции sprite_set_cache_size()).

-

-

Синтаксис:

-

image_blend

-

-

Возвращается:

-

Colour Constant

-

-

Пример:

-

image_blend = make_colour_hsv(255, 255, random(255));

-

Приведенный выше код установит image_blend для sprite, определенного для данного экземпляра, в случайный цвет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_index.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_index.htm index 63cdd3e26..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_index.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_index.htm @@ -1,56 +0,0 @@ - - - - - - image_index - - - - - - - - - - -

image_index

-

Сайт sprite состоит из одного или нескольких суб-изображений, которые могут заставить sprite выглядеть анимированным при переходе от одного к другому, или они могут переключаться между собой в коде для создания различных "состояний", подобно кнопке в windows. Если sprite анимирован, то вы можете получить текущий кадр анимации, проверив переменную image_index, или если вы хотите изменить состояние статичного sprite, вы можете выбрать новое подизображение, установив эту переменную на нужное подизображение sprite. Обратите внимание, что для того, чтобы изменения в этой переменной были видны, экземпляр должен либо не иметь события рисования (и тогда GameMaker по умолчанию нарисует sprite), либо быть нарисованным с помощью одной из функций рисования, таких как draw_self() или draw_sprite_ext() (передав image_index в соответствующем аргументе).

-

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

-

Также обратите внимание, что при использовании скелетной анимации sprites вы все еще можете получать и устанавливать значения image_index - см. функцию skeleton_animation_get_duration() для примеров того, как это сделать.

-

-

Синтаксис:

-

image_index

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if (image_speed > 0)
- {
-     if (image_index >= image_number - 1)
-     {
-         instance_destroy();
-     }
- }

-

Приведенный выше код проверяет, анимируется ли sprite, и если да, то проверяет, находится ли текущий image_index на последнем кадре, и в этом случае уничтожает экземпляр.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_number.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_number.htm index 88ccd4238..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_number.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_number.htm @@ -1,51 +0,0 @@ - - - - - - image_number - - - - - - - - - - -

image_number

-

Эта переменная, доступная только для чтения, может быть использована для получения количества подобразов в sprite, который был назначен экземпляру (если вам нужно количество подобразов для sprite, отличного от того, который назначен экземпляру, вы должны использовать sprite_get_number()). Обратите внимание, что при наличии (например) 1 субизображения эта переменная вернет "1", но image_index этого субизображения будет равен 0.

-

-

Синтаксис:

-

image_number

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if image_speed > 0
- {
-     if image_index > image_number - 1 instance_destroy();
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_speed.htm index b6231113c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_speed.htm @@ -1,51 +0,0 @@ - - - - - - image_speed - - - - - - - - - - -

image_speed

-

Эта переменная определяет скорость, с которой GameMaker будет перебирать суб-изображения для текущего экземпляра sprite. Значение скорости является множителем, по умолчанию используется значение 1, при установке значения 0.5 скорость анимации уменьшится вдвое - как установлено в редакторе спрайтов или редакторе изображений, а при установке значения 2 она увеличится вдвое. Если используемый sprite не имеет вложенных изображений, эта переменная не будет иметь никакого эффекта.

-

-

Синтаксис:

-

image_speed

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

with (instance_create_layer(x, y, "Effects", obj_Explosion))
- {
-     image_speed = 0.5;
- }

-

Приведенный выше код создает экземпляр объекта "obj_Explosion" и устанавливает его image_speed равным 0,5 (фактически уменьшая скорость бега вдвое).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_xscale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_xscale.htm index 9015a9316..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_xscale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_xscale.htm @@ -1,58 +0,0 @@ - - - - - - image_xscale - - - - - - - - - - -

image_xscale

-

Это значение задает горизонтальное масштабирование, применяемое к sprite, назначенному текущему экземпляру. Значение 1 означает отсутствие масштабирования (1:1), меньшие значения уменьшают масштаб (0.5, например, уменьшает ширину sprite в два раза), большие значения увеличивают масштаб, а отрицательные значения переворачивают sprite и масштабируют его, если только используемое значение не равно -1 (в этом случае sprite просто переворачивается относительно своего начала без масштабирования).

-

image_xscale example

-

-

Синтаксис:

-

image_xscale

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if image_xscale < 5
- {
-     image_xscale += 0.2;
-     image_yscale = image_xscale;
- }
- else
- {
-     instance_create_layer(x, y, "Effects", obj_Explosion);
-     instance_destroy();
- }

-

Приведенный выше код масштабирует объект sprite, а затем, когда он увеличивается в 5 раз, создается новый экземпляр другого объекта и уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_yscale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_yscale.htm index 9a5653138..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_yscale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/image_yscale.htm @@ -1,59 +0,0 @@ - - - - - - image_yscale - - - - - - - - - - -

image_yscale

-

Это значение задает вертикальное масштабирование (по оси y), применяемое к sprite, назначенному текущему экземпляру. Значение 1 означает отсутствие масштабирования (1:1), меньшие значения уменьшают масштаб (например, 0.5 уменьшает высоту sprite в два раза), большие значения увеличивают масштаб, а отрицательные значения зеркально отражают sprite и масштабируют его, если только используемое значение не равно -1 (в этом случае sprite просто зеркально отражается по оси y без масштабирования).
- -

-

-

Синтаксис:

-

image_yscale

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if image_xscale < 5
- {
-     image_xscale += 0.2;
-     image_yscale = image_xscale;
- }
- else
- {
-     instance_create_layer(x, y, "Effects", obj_Explosion);
-     instance_destroy();
- }

-

Приведенный выше код масштабирует объект sprite, а затем, когда он увеличивается в 5 раз, создается новый экземпляр другого объекта и уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/mask_index.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/mask_index.htm index 07e2b79e3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/mask_index.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/mask_index.htm @@ -1,48 +0,0 @@ - - - - - - mask_index - - - - - - - - - - -

mask_index

-

Когда вы определяете объект в GameMaker, вы можете назначить ему маску, которая будет использоваться для столкновений, а не ту, которая соответствует определенному sprite. Эта переменная может быть использована для поиска sprite_index этой маски (или она вернет -1, если не было назначено никакого sprite ) или для установки маски для экземпляра на выбранный sprite. Установка индекса маски означает, что вы можете иметь, например, sprite для экземпляра с неправильной формой, но дать ему круговую маску столкновений, полученную из другого sprite.

-

-

Синтаксис:

-

mask_index

-

-

Возвращается:

-

Sprite Asset

-

-

Пример:

-

mask_index = spr_Round;

-

Приведенный выше код устанавливает маску экземпляра на маску sprite "spr_Round".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_height.htm index 141e17fa6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_height.htm @@ -1,51 +0,0 @@ - - - - - - sprite_height - - - - - - - - - - -

sprite_height

-

Эта переменная, доступная только для чтения, возвращает высоту sprite, назначенную данному экземпляру. Эта высота возвращается в пикселях и зависит от значения параметра image_yscale. Если вам нужна немасштабированная высота, используйте sprite_get_height().

-

-

Синтаксис:

-

sprite_height

-

-

Возвращается:

-

Real

-

-

Пример:

-

if sprite_height != sprite_get_height(sprite_index)
- {
-     image_yscale = 1;
- }

-

Приведенный выше код сверяет высоту sprite, назначенную экземпляру, выполняющему код, с высотой ресурса sprite, и если они не совпадают, то сбрасывает значение image_yscale на 1,

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_index.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_index.htm index 3acf616d1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_index.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_index.htm @@ -1,58 +0,0 @@ - - - - - - sprite_index - - - - - - - - - - -

sprite_index

-

Эта переменная возвращает индекс текущего sprite для экземпляра или -1, если экземпляр не имеет связанного с ним sprite. Вы можете изменить ее, чтобы дать экземпляру другой sprite, задав ему имя sprite из дерева ресурсов или используя переменную, в которой проиндексирован загруженный извне sprite. Изменение sprite не изменяет индекс текущего видимого кадра, поэтому, если вы измените sprite на кадре номер 3, новый sprite будет нарисован с видимым кадром (при условии, что у него такое же количество кадров).

-

-

Синтаксис:

-

sprite_index

-

-

Возвращается:

-

Sprite Asset

-

-

Пример:

-

with (obj_Check)
- {
-     if !collision_line(x, y, other.x, other.y, obj_wall, false, true)
-     {
-         sprite_index = spr_spotted;
-     }
-     else
-     {
-         sprite_index = spr_clear;
-     }
- }

-

Приведенный выше код будет циклически просматривать все экземпляры "obj_Check", проверяя наличие линии столкновения между ними и экземпляром, выполняющим этот код. В зависимости от возвращаемого значения (true или false) для линии столкновения будет изменен адрес sprite этих экземпляров.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_width.htm index 6fb7fafca..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_width.htm @@ -1,51 +0,0 @@ - - - - - - sprite_width - - - - - - - - - - -

sprite_width

-

Эта переменная, доступная только для чтения, возвращает ширину sprite, назначенную данному экземпляру. Эта ширина возвращается в пикселях и зависит от значения параметра image_xscale. Если вам нужна немасштабированная ширина, следует использовать sprite_get_width().

-

-

Синтаксис:

-

sprite_width

-

-

Возвращается:

-

Real

-

-

Пример:

-

if sprite_width != sprite_get_width(sprite_index)
- {
-     image_xscale = 1;
- }

-

Приведенный выше код сверяет ширину sprite, назначенную экземпляру, выполняющему код, с шириной ресурса sprite, и если они не совпадают, то сбрасывает значение image_xscale на 1,

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_xoffset.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_xoffset.htm index 8203b07c7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_xoffset.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_xoffset.htm @@ -1,52 +0,0 @@ - - - - - - sprite_xoffset - - - - - - - - - - -

sprite_xoffset

-

Эта переменная, доступная только для чтения, возвращает локальное смещение x (x-компонент начала координат, определенный в редакторе sprite ) sprite, назначенного данному экземпляру. Это xoffset возвращается в пикселях и будет зависеть от размера объекта. image_xscaleтак что (например) если квадрат 32x32 sprite определен как имеющий начало координат x на 16, то при масштабировании sprite на 2 эта переменная вернет 32. Если вам нужно немасштабированное смещение x, используйте sprite_get_xoffset().

-

X Offset Example

-

-

Синтаксис:

-

sprite_xoffset

-

-

Возвращается:

-

Real

-

-

Пример:

-

if x - sprite_xoffset < 0
- {
-     x = sprite_xoffset;
- }

-

Приведенный выше код проверяет, находится ли левый край sprite экземпляра за пределами комнаты, и если да, то перемещает экземпляр так, чтобы был виден весь sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_yoffset.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_yoffset.htm index 07d2baf28..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_yoffset.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Instance_Variables/sprite_yoffset.htm @@ -1,52 +0,0 @@ - - - - - - sprite_yoffset - - - - - - - - - - -

sprite_yoffset

-

Эта переменная, доступная только для чтения, возвращает локальное смещение y (компонент y начала координат, определенный в редакторе sprite ) объекта sprite, который был назначен данному экземпляру. Смещение по оси y возвращается в пикселях и зависит от размера объекта. image_yscaleтак что (например) если квадрат 32x32 sprite определен как имеющий начало координат y на 16, то при масштабировании этого sprite на 2 эта переменная вернет 32. Если вам нужно немасштабированное смещение y, используйте sprite_get_yoffset().

-

Y Offset Example

-

-

Синтаксис:

-

sprite_yoffset

-

-

Возвращается:

-

Real

-

-

Пример:

-

if y - sprite_yoffset < 0
- {
-     y = sprite_yoffset;
- }

-

Приведенный выше код проверяет, находится ли верхний край sprite экземпляра за пределами комнаты, и если да, то перемещает экземпляр так, чтобы был виден весь sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/Sprite_Manipulation.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/Sprite_Manipulation.htm index e27515fa0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/Sprite_Manipulation.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/Sprite_Manipulation.htm @@ -1,65 +0,0 @@ - - - - - - Манипулирование спрайтами - - - - - - - - - - -

Манипулирование спрайтами

-

Все приведенные ниже функции связаны с изменением самого актива (ресурса) sprite. Это означает, что большинство этих функций будет влиять на все экземпляры, которые ссылаются на изменяемый sprite. Это также означает, что вы должны быть очень внимательны, чтобы убедиться, что sprite существует, прежде чем ссылаться на него, или убедиться, что на него не ссылаются, прежде чем изменять его.

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_add.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_add.htm index 39b783904..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_add.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_add.htm @@ -1,98 +0,0 @@ - - - - - - sprite_add - - - - - - - - - - -

sprite_add

-

С помощью этой функции вы можете добавить изображение как sprite, загрузив его из внешнего источника, причем загружаемый файл изображения всегда должен быть в формате *.png, *.gif, *.jpg/jpeg или *.json (файлы*json используются для загрузки скелетных анимационных спрайтов, созданных с помощью Spine). Функция возвращает новый индекс sprite, который затем должен использоваться во всем дальнейшем коде, относящемся к sprite. Если вы используете эту функцию в HTML5 или получаете изображение из URL, эта функция также генерирует асинхронное событие Image Loaded. Дополнительную информацию см. на этой странице.

-

Все изображения, которые должны быть превращены в анимированные sprites - за исключением *.gif (см. ниже) - должны иметь формат "полосы" (см. изображение ниже), и она будет разбита на указанное количество суб-изображений по правилу sprite width = strip width / sub images.

-

Example Sprite Strip

-

Как видно из приведенного выше изображения, sprite был помещен на темно-пурпурный фон, и это можно удалить, установив аргумент "removeback" на true. Это работает путем проверки левого нижнего пикселя sprite на наличие там цвета и затем использует его в качестве цвета для удаления. Например, на изображении выше, если бы цвет левого нижнего пикселя был зеленым, все зеленые части sprite были бы удалены, а остальной фиолетовый фон проигнорирован.

-

Если вы выбрали опцию "removeback", вы также можете захотеть, чтобы GameMaker сгладил края sprite, установив аргумент "smooth" на true. Это создаст полупрозрачную границу по краям sprite после удаления фона.

-

Наконец, вы также можете указать начало координат x и y для sprite. Это точка, в которой sprite "фиксируется" на использующем его экземпляре, и она всегда рассчитывается как относительно левого верхнего угла 0,0 одного подизображения sprite. Так, например, sprite размером 32 x 32 пикселя с этими значениями, установленными на (16,16), будет иметь начало в центре.

-

Если вы добавляете изображение формата *.gif, то вам нужно указать только имя файла и номер изображения (который должен быть равен 1 для первого кадра), а все остальные аргументы можно оставить равными 0, отметив, что будет загружено только первое изображение GIF. Для *.json sprites номер изображения должен быть равен 1, а параметры "removeback" и "smooth" будут проигнорированы.

-

По умолчанию для всех новых sprites автоматически рассчитываются ограничительные рамки (точные ограничительные рамки зависят от размера и прозрачности sprite), однако вы можете захотеть настроить это, в этом случае вам также следует использовать функцию sprite_collision_mask().

-

Следует отметить, что память, используемая при добавлении sprite таким способом, будет больше, чем вы ожидаете. Это связано с тем, что GameMaker будет хранить sprite как текстурную страницу , и она также будет храниться в памяти GPU, поэтому общий объем памяти будет больше, чем можно было бы ожидать для файла изображения того же sprite.

-

ПРИМЕЧАНИЕ: Когда вы загружаете sprite в GameMaker, вы должны не забыть удалить его снова (с помощью кнопки sprite_delete()), когда он больше не нужен, иначе существует риск утечки памяти, что приведет к замедлению и, в конечном итоге, к краху вашей игры.

-

ПРИМЕЧАНИЕ: На iOS, если вы загружаете включенный файл из папки, т.е. с путем типа "Backgrounds/background1.png", вам не нужно указывать папку как часть пути, достаточно просто указать имя файла. На всех других платформах вы должны указать папку(и) как часть пути к файлу.

-

ПРИМЕЧАНИЕ: В HTML5, если вы загружаете sprite с защищенного сервера, вам может потребоваться установить тип cross-origin и использовать относительный путь вместо абсолютного. См. http_set_request_crossorigin() для более подробной информации.

-

-

Синтаксис:

-

sprite_add(fname, imgnumb, removeback, smooth, xorig, yorig);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
fnameСтрокаThe name (a string file path) of the file to add.
imgnumРеальноUse to indicate the number of sub-images (1 for a single image or for a *.gif).
removebackБулевоIndicates whether to make all pixels with the background colour (left-bottom pixel) transparent.
smoothБулевоIndicates whether to smooth the edges if transparent.
xorigРеальноIndicate the x position of the origin in the sprite.
yorigРеальноIndicate the y position of the origin in the sprite.
-

-

Возвращается:

-

Sprite Asset

-

-

Пример:

-

spr = sprite_add("player_5.png", 16, true, true, 0, 0);

-

Приведенный выше код загружает в игру объект sprite и сохраняет его индекс в переменной "spr".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_add_from_surface.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_add_from_surface.htm index 8ace3fca3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_add_from_surface.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_add_from_surface.htm @@ -1,103 +0,0 @@ - - - - - - sprite_add_from_surface - - - - - - - - - - -

sprite_add_from_surface

-

Эта функция работает точно так же, как sprite_create_from_surface() только вместо создания нового sprite из выбранной вами области индексированной поверхности, она добавляет определенную область поверхности как новое подизображение к ранее созданному sprite (это означает, что вы не можете добавить его непосредственно к sprite из дерева ресурсов, а только к ранее созданному из поверхности или дублированному из ресурса sprite с помощью функции ). sprite_duplicate()).

-

Следует отметить, что память, используемая при добавлении sprite таким способом, будет больше, чем вы ожидаете. Это связано с тем, что GameMaker будет хранить sprite как текстурную страницу , и она также будет храниться в памяти GPU, поэтому общий объем памяти будет больше, чем ожидалось бы для файла изображения того же sprite.

-

-

Синтаксис:

-

sprite_add_from_surface(index, surface, x, y, w, h, removeback, smooth);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexАктив спрайтаThe index of the sprite to add the new image to.
surfaceИдентификатор поверхностиThe index of the surface from which we get the image.
xРеальноThe x position to copy from.
yРеальноThe y position to copy from.
wРеальноThe width of the area to be copied (from the x position).
hРеальноThe height of the area to be copied (from the y position).
removebackБулевоIndicates whether to make all pixels with the background colour (left-bottom pixel) transparent.
smoothБулевоIndicates whether to smooth the edges.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

spr_custom = sprite_create_from_surface(surf, 0, 0, 32, 32, true, true, 16, 16);
- var i;
- for (i = 1; i < 8; i += 1)
- {
-     sprite_add_from_surface(spr_custom, surf, i, 0, 32, 32, false, false);
- }

-

Приведенный выше код создает sprite из поверхности, индексированной в переменной "surf", присваивая ее индекс переменной "spr_Custom", а затем использует цикл for для перемещения по поверхности и захвата различных участков, которые добавляются в sprite в качестве суб-изображений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_assign.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_assign.htm index 7c5c230f0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_assign.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_assign.htm @@ -1,74 +0,0 @@ - - - - - - sprite_assign - - - - - - - - - - - -

sprite_assign

-

Эта функция берет два ранее созданных (или включенных) индекса sprite и копирует изображение из одного в другой. Таким образом, вы можете скопировать (или "клонировать") один sprite в другой индекс. Обратите внимание, что вы не можете копировать в игровой ресурс. Вы должны были создать sprite для копирования ранее с помощью функции sprite_add() или sprite_duplicate() функции.

-

-

Синтаксис:

-

sprite_assign(index, sprite);

- - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the sprite to be copied to (ie: overwritten).
spriteThe sprite to be copied from.
-

-

Возвращает

-

-

-

Пример:

-

if sprite_exists(global.Player_Sprite)
- {
-     var t_spr = sprite_add("player.png", 16, true, true, 0, 0);
-     sprite_assign(global.Player_Sprite, t_spr);
-     sprite_delete(t_spr);
- }
- else
- {
-     global.Player_Sprite = sprite_add("player.png", 16, true, true, 0, 0);
- }

-

Приведенный выше код проверяет, содержит ли глобальная переменная "Player_Sprite" sprite, и если содержит, то с помощью sprite_assign меняет его на тот, который был загружен из внешнего файла. Если переменная не содержит sprite, она загружается, и ее индекс сохраняется в этой переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_collision_mask.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_collision_mask.htm index 02ca57323..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_collision_mask.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_collision_mask.htm @@ -1,150 +0,0 @@ - - - - - - sprite_collision_mask - - - - - - - - - - -

sprite_collision_mask

-

С помощью этой функции можно задать свойства маски столкновений, которую должен иметь sprite. Если вы выбрали автоматический режим (0) или режим полного изображения (1) в качестве режима ограничительной рамки, то значения отдельных ограничительных рамок могут быть установлены на 0. Однако для маски, заданной пользователем (2), вам придется установить эти значения. Различные значения ограничивающих рамок всегда относятся к левому верхнему углу sprite (независимо от координат x и y), который считается позицией (0, 0).

-

Установка типа маски задает общую форму самой маски, но имейте в виду, что любая маска, отличная от прямоугольной, потребует больше вычислительной мощности при разрешении столкновений, что приведет к падению производительности. В общем, использовать типы масок, отличные от прямоугольной, следует только в случае крайней необходимости.

-

ПРИМЕЧАНИЕ: Эта функция не позволяет использовать вид маски столкновения с повернутым прямоугольником.

-

Тип маски, которую можно установить, будет одной из следующих констант:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Вид (форма) ограничительной рамки Константа
ПостояннаяОписание
bboxkind_rectangularПрямоугольная (не вращающаяся) форма маски столкновения с прямоугольником
bboxkind_ellipseЭллиптическая форма маски столкновений
bboxkind_diamondФорма маски столкновения с алмазом
bboxkind_preciseТочная маска столкновений, где маска будет соответствовать непрозрачным пикселям sprite, на основе заданного значения допуска (см. ниже)).
bboxkind_spineApart from rectangle, this is the only valid option for Spine sprites. It enables more precise collision checking against the mesh in the sprite.
-


- Наконец, допуск используется для определения степени точности маски (при использовании маски "полное изображение" это не будет иметь никакого эффекта). Допуск 0 означает, что маска будет следовать за каждым пикселем, прозрачность которого больше 0, в то время как другие значения будут смещать периметр маски столкновений в зависимости от прозрачности пикселей.

-

ПРИМЕЧАНИЕ: Эта функция полезна только для растровых изображений sprites и не работает с SWF или JSON (Spine) sprites.

-

ПРИМЕЧАНИЕ: Эта функция будет работать только на добавленных sprites или дублированных sprites, но не непосредственно на предварительно созданных ресурсах. Вы можете продублировать sprites с помощью функции sprite_duplicate().

-

-

Синтаксис:

-

sprite_collision_mask(ind, sepmasks, bboxmode, bbleft, bbtop, bbright, bbbottom, kind, tolerance);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indАктив спрайтаThe index of the sprite to set the bounding box of.
sepmasksБулевоWhether to create collision masks for each sub-image of the sprite (true), или одна маска для всех (false).
bboxmodeРеальноWhat kind of bounding box to use. 0 = automatic, 1 = full image, 2 = user defined.
bbleftРеальноThe maximum left position of the bounding box.
bbtopРеальноThe maximum top position of the bounding box.
bbrightРеальноThe maximum right position of the bounding box.
bbbottomРеальноThe maximum bottom position of the bounding box.
kindВид (форма) ограничительной рамки КонстантаThe kind of mask, a constant (see the table in the description).
toleranceРеальноIndicates the tolerance in the transparency value (0=no tolerance, 255=full tolerance).
-

-

Возвращает

-

N/A

-

-

Пример:

-

spr = sprite_add("player_5.png", 16, true, true, 0, 0);
- sprite_collision_mask(spr, true, 1, 0, 0, 0, 0, 0, 0);

-

Приведенный выше код загружает sprite из внешнего источника и сохраняет новый индекс в переменной "spr". Затем код устанавливает новый sprite так, чтобы он имел точную маску столкновений для каждого из своих суб-изображений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_create_from_surface.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_create_from_surface.htm index 21e4a9876..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_create_from_surface.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_create_from_surface.htm @@ -1,116 +0,0 @@ - - - - - - sprite_create_from_surface - - - - - - - - - - -

sprite_create_from_surface

-

С помощью этой функции можно создать sprite из ранее инициализированной поверхности (значение идентификатора индекса поверхности возвращается при создании поверхности с помощью функции surface_create()). Координаты x и y, которые вы затем вводите в функцию, должны быть относительно позиции (0,0) поверхности (левый верхний угол), а не окна игры (или вида, если он активен). Аргументы width и height задаются в пикселях и определяют ширину и высоту используемой части поверхности.

-

Установка аргумента "removeback" в true приведет к удалению цвета из sprite, проверяя левый нижний пиксель sprite на наличие там цвета и затем используя его в качестве удаляемого цвета.

-

Если вы выбрали опцию "removeback", вы также можете захотеть, чтобы GameMaker сгладил края sprite, установив аргумент "smooth" на true. Это создаст полупрозрачную границу по краям sprite после удаления фона.

-

Наконец, вы также можете указать начало координат x и y для sprite. Это точка, в которой sprite "фиксируется" на использующем его экземпляре, и она всегда рассчитывается как относительно левого верхнего угла 0,0 одного подизображения sprite. Так, например, sprite размером 32 x 32 пикселя с этими значениями, установленными на (16,16), будет иметь начало в центре.

-

По умолчанию для всех новых sprites автоматически рассчитываются ограничивающие рамки (точный размер рамки зависит от размера и прозрачности sprite), однако вы можете захотеть настроить это, в этом случае вам также следует использовать функцию sprite_collision_mask().

-

ПРИМЕЧАНИЕ Когда вы создаете sprite в GameMaker с помощью этого метода, вы должны не забыть удалить его снова (с помощью кнопки sprite_delete()), когда он больше не нужен, иначе есть риск утечки памяти, что приведет к замедлению и, в конечном итоге, к краху вашей игры.

-

-

Синтаксис:

-

sprite_create_from_surface(index, x, y, w, h, removeback, smooth, xorig, yorig);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexИдентификатор поверхностиThe index of the surface to create from.
xРеальноThe x position to copy from.
yРеальноThe y position to copy from.
wРеальноThe width of the area to be copied (from the x position).
hРеальноThe height of the area to be copied (from the y position).
removebackБулевоIndicates whether to make all pixels with the background colour (left-bottom pixel) transparent.
smoothБулевоIndicates whether to smooth the edges.
xorigРеальноIndicates the x position of the origin in the sprite.
yorigРеальноIndicates the y position of the origin in the sprite.
-

-

Возвращает

-

Sprite Asset

-

-

Пример:

-

var surf;
- surf = surface_create(32, 32);
- surface_set_target(surf);
- draw_clear_alpha(c_black, 0);
- draw_sprite(spr_Body, 0, 0, 0);
- draw_sprite(spr_Clothes, 0, 0, 0);
- draw_sprite(spr_Hair, 0, 0, 0);
- spr_custom = sprite_create_from_surface(surf, 0, 0, 32, 32, false, false, 16, 16);
- surface_reset_target();
- surface_free(surf);

-

Приведенный выше код создает поверхность и сохраняет ее индекс в локальной переменной "surf". Затем он нацеливается на эту поверхность, очищает ее и рисует несколько sprites друг на друга. Наконец, он создает новый sprite из составного изображения, нарисованного на поверхности, и присваивает его индекс "spr_Custom", после чего освобождает память, используемую поверхностью.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_delete.htm index 10df2db04..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_delete.htm @@ -1,63 +0,0 @@ - - - - - - sprite_delete - - - - - - - - - - -

sprite_delete

-

Эта функция удаляет sprite из игры, освобождая всю память, которая была зарезервирована для него. Это очень важная функция для тех моментов, когда вам нужно создавать и изменять sprites из внешних источников (например, загружать sprite из файла с помощью функции - sprite_add(), или дублирование sprite с помощью sprite_duplicate()) и всегда должна использоваться для удаления тех активов, которые больше не нужны. - или для удаления индексированного актива из переменной перед повторным назначением другого актива в эту переменную. Это нельзя использовать для удаления sprites, которые включены в игру как часть активов в браузере активов.

-

-

Синтаксис:

-

sprite_delete(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the sprite to be deleted.
-

-

Возвращает

-

-

-

Пример:

-

var spr = sprite_create_from_surface(application_surface, 0, 0, 32, 32, false, false, 16, 16);
sprite_merge(spr_Player, spr);
sprite_delete(spr); -

-

Приведенный выше код создает локальную переменную и затем сохраняет индекс sprite, созданного на поверхности приложения. Затем этот sprite объединяется с активом, проиндексированным в переменной "spr_Player", после чего снова удаляется из памяти.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_duplicate.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_duplicate.htm index a24de5771..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_duplicate.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_duplicate.htm @@ -1,61 +0,0 @@ - - - - - - sprite_duplicate - - - - - - - - - - -

sprite_duplicate

-

Эта функция возвращает индекс вновь созданного sprite, который является дубликатом (копией) того, который был введен в качестве аргумента "index". Если функция не сработает, возвращается -1. Эта функция должна быть использована для копирования любого sprites из исходных активов, прежде чем с ними могут быть выполнены какие-либо преобразования. Например, если вы хотите изменить граничное поле для sprite или установить его альфа из другого sprite, вы должны сначала дублировать его, затем выполнить операцию над дублированным sprite и использовать его. Дублированный sprite при создании будет размещен на своей собственной уникальной текстурной странице. Это означает, что дублирование нескольких sprites приведет к созданию нескольких текстурных страниц и повлияет на производительность, поэтому используйте эту функцию только при необходимости.

-

ПРИМЕЧАНИЕ: Когда вы дублируете sprite в GameMaker, вы должны не забыть удалить его снова (с помощью кнопки sprite_delete()), когда он больше не нужен, иначе существует риск утечки памяти, что приведет к замедлению и, в конечном итоге, к краху вашей игры.

-

-

Синтаксис:

-

sprite_duplicate(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the sprite to duplicate.
-

-

Возвращает

-

Sprite Asset or -1

-

-

Пример:

-

new_spr = sprite_duplicate(sprite_index)

-

Приведенный выше код дублирует sprite, который в настоящее время используется как индекс экземпляра sprite, и сохраняет индекс для этого нового sprite в переменной "new_spr".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_exists.htm index b6b48aec1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_exists.htm @@ -1,68 +0,0 @@ - - - - - - sprite_exists - - - - - - - - - - - -

sprite_exists

-

Эта функция возвращает, существует или нет sprite с указанным индексом в выполняемом проекте.

-

-

Синтаксис:

-

sprite_exists(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the sprite to check.
-

-

Возвращает

-

-

-

Пример:

-

if sprite_exists(spr_array[0])
- {
-     sprite_index = spr_array[0];
- }
- else
- {
-     sprite_index = spr_base_sprite;
- }

-

Приведенный выше код проверяет массив на наличие в нем допустимого индекса sprite, и если да, то присваивает экземпляру sprite, а если нет, то присваивает sprite из включенных ресурсов.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_flush.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_flush.htm index 40858318f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_flush.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_flush.htm @@ -1,62 +0,0 @@ - - - - - - sprite_flush - - - - - - - - - - -

sprite_flush

-

С помощью этой функции вы можете удалить из текстурной памяти данную текстурную страницу для данного sprite. Вы указываете индекс sprite (как определено при создании ресурса sprite ), и текстурная страница, которой она назначена, будет удалена из текстурной памяти. - Обратите внимание, что если страница текстуры используется в другом месте комнаты (другим экземпляром sprite или фоном, и т.д.), вы можете получить небольшое снижение производительности, так как страница будет немедленно перезагружена, поэтому при использовании этой функции следует соблюдать осторожность. Обратите внимание, что - вернет -1, если flush не поддерживается для выбранного ресурса, или вернет 0, если все работает правильно.

-

-

Синтаксис:

-

sprite_flush(ind)

- - - - - - - - - - - -
АргументТипОписание
indThe index (resource name) of the sprite asset to flush
-

-

Возвращается:

-

(-1 or 0)

-

-

Пример:

-

sprite_flush(spr_Player_Aura);

-

Приведенный выше код стирает из памяти sprite "spr_Player_Aura".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_flush_multi.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_flush_multi.htm index ca3a2ab09..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_flush_multi.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_flush_multi.htm @@ -1,63 +0,0 @@ - - - - - - sprite_flush_multi - - - - - - - - - - -

sprite_flush_multi

-

С помощью этой функции вы можете удалить из текстурной памяти любое количество текстурных страниц для данного sprites. Вы передаете индексы sprite в виде массива, и текстурные страницы, которым они присвоены, будут удалены из текстурной памяти. Обратите внимание, что если одна из - текстурных страниц используется где-либо в комнате (другим экземпляром sprite или фоном, и т.д.), вы можете получить небольшое снижение производительности, так как страница будет немедленно перезагружена обратно в память, поэтому при использовании этой функции следует соблюдать осторожность. - Обратите внимание, что функция вернет -1, если flush не поддерживается для выбранных ресурсов, или вернет 0, если все работает правильно.

-

-

Синтаксис:

-

sprite_flush_multi(array);

- - - - - - - - - - - -
АргументТипОписание
arrayArray with the sprite indices to flush
-

-

Возвращается:

-

(-1 or 0)

-

-

Пример:

-

spr_a[0] = spr_Player_Aura1;
spr_a[1] = spr_Player_Aura2;
spr_a[2] = spr_Player_Aura3;
spr_a[3] = spr_Player_Aura4;
sprite_flush_multi(spr_a); -

-

Приведенный выше код создает массив, каждый элемент которого содержит индекс sprite. Этот массив затем используется для очистки текстур sprite из памяти.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_merge.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_merge.htm index 10d4bb7f1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_merge.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_merge.htm @@ -1,73 +0,0 @@ - - - - - - sprite_merge - - - - - - - - - - -

sprite_merge

-

Эта функция объединит sprite, индексированный в аргументе 1 ("ind2"), с тем, который индексирован в аргументе 0 ("ind1"). Сами изображения НЕ объединяются, а объединяются индексы изображений. - объединяются, при этом суб-изображения из sprite "ind2" добавляются к изображениям из sprite "ind1", т.е. добавляются в конце. Обратите внимание, что если sprites разного размера, то добавленные sprites растягиваются, чтобы соответствовать размеру изображения - для "ind1".

-

Это изменение является постоянным, и с момента использования этой функции до закрытия игры или удаления sprite, sprite, с которым происходит слияние, будет изменен, однако sprite, с которым происходит слияние, останется прежним.

-

ПРИМЕЧАНИЕ: Ни ресурс изображения, в который происходит слияние, ни ресурс изображения, который предназначен для слияния, не могут быть одним из исходных ресурсов игры. Вы должны использовать sprite_duplicate() первый - для создания двух новых ресурсов (если вы объединяете включенные игровые ресурсы), а затем объединить их.

-

ПРИМЕЧАНИЕ: Эта функция полезна только для растровых изображений sprites и не работает с SWF или JSON (Spine) sprites.

-

-

Синтаксис:

-

sprite_merge(ind1, ind2);

- - - - - - - - - - - - - - - -
АргументТипОписание
ind1The index of the sprite to merge.
ind2The index of the sprite that ind1 is to be merged with.
-

-

Возвращает

-

-

-

Пример:

-

var tspr;
tspr[0] = spr_add(working_directory + "Sprite Assets\explode1.png", 16, true, true, 0, 0);
tspr[1] = sprite_duplicate(spr_Explosion);
sprite_merge(tspr[0], tspr[1]);
sprite_index = t_spr[0];
sprite_delete(tspr[1]); -

-

Приведенный выше код загружает sprite в локальную переменную, затем объединяет его с другим sprite, который был продублирован. Наконец, объединенный sprite присваивается экземпляру sprite_index, а загруженный sprite удаляется. - чтобы освободить используемую память. Обратите внимание, что в какой-то момент после этой операции, например, в событиях Destroy или Room End, вам также нужно будет использовать sprite_delete() чтобы удалить объединенный спрайт - из памяти.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_nineslice_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_nineslice_create.htm index ddb29beeb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_nineslice_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_nineslice_create.htm @@ -1,56 +0,0 @@ - - - - - - sprite_nineslice_create - - - - - - - - - - -

sprite_nineslice_create

-

Девятикратная нарезка - это техника, используемая для масштабирования прямоугольных изображений с целью сохранения деталей, благодаря чему они сохраняют свою первоначальную форму после масштабирования. Информацию о Девятикратном срезе см. на этой странице.

-

Эта функция используется для создания структуры Nine Slice, которая может быть изменена и затем применена к sprite. Содержимое этой структуры подробно описано на этой странице.

-

Вы можете хранить эту структуру в переменной, изменять ее свойства и применять ее к любому sprites с помощью sprite_set_nineslice().

-

Синтаксис:

-

sprite_nineslice_create();

-

-

Возвращается:

-

Nine Slice Struct

-

-

Пример:

-

var _nineslice = sprite_nineslice_create();
-
- _nineslice.enabled = true;
- _nineslice.left = 10;
- _nineslice.right = 10;
- _nineslice.top = 10;
- _nineslice.bottom = 10;
-
- sprite_set_nineslice(spr_box_0, _nineslice); -

-

Приведенный выше код создает новую структуру Nine Slice, включает ее и устанавливает смещения для направляющих. Затем эта структура применяется к объекту sprite, изменяя его свойства Nine Slice.

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_prefetch.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_prefetch.htm index aff0e6c97..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_prefetch.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_prefetch.htm @@ -1,63 +0,0 @@ - - - - - - sprite_prefetch - - - - - - - - - - -

sprite_prefetch

-

Эта функция может использоваться для предварительной выборки (размещения в памяти текстуры) страницы текстуры с заданным sprite. Вы указываете индекс sprite, определенный при создании актива sprite, и страница текстуры, на которой он находится, будет загружена в память. Обратите внимание, что - вернет -1, если prefetch не поддерживается для выбранного ресурса или целевая платформа - HTML5, или вернет 0, если все работает правильно.

-

ПРИМЕЧАНИЕ: На большинстве устройств происходит снижение производительности при загрузке текстуры в память текстуры, поэтому рекомендуется вызывать команду sprite_prefetch на - любую необходимую графику в начале уровня, чтобы избежать задержек.

-

-

Синтаксис:

-

sprite_prefetch(ind)

- - - - - - - - - - - -
АргументТипОписание
indThe sprite index to fetch
-

-

Возвращается:

-

(-1 or 0)

-

-

Пример:

-

sprite_prefetch(spr_Player_Aura);

-

Приведенный выше код поместит ссылку sprite в память текстуры, готовую к использованию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_prefetch_multi.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_prefetch_multi.htm index 9179421a2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_prefetch_multi.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_prefetch_multi.htm @@ -1,67 +0,0 @@ - - - - - - sprite_prefetch_multi - - - - - - - - - - -

sprite_prefetch_multi

-

Эта функция может быть использована для предварительной выборки (размещения в памяти текстуры) ряда текстурных страниц, содержащих заданный sprites. Вы передаете массив, заполненный индексами sprite (как определено при создании актива sprite ), и текстурные страницы, на которых они находятся, будут загружены в память. Обратите внимание, что функция вернет -1, если prefetch не поддерживается для выбранного ресурса или целевая платформа - HTML5, или вернет 0, если все работает правильно.

-

ПРИМЕЧАНИЕ: При загрузке текстуры в память текстуры на большинстве устройств происходит снижение производительности, поэтому рекомендуется вызывать sprite_prefetch_multi() все необходимые графические элементы в начале уровня, чтобы избежать задержек.

-

-

Синтаксис:

-

sprite_prefetch_multi - - - - - - - - - - - - - -
АргументТипОписание
arrayМассив активов спрайтовArray with the sprite indices to fetch
-

-

Возвращается:

-

Real (-1 or 0)

-

-

Пример:

-

spr_a[0] = spr_Player_Aura1;
- spr_a[1] = spr_Player_Aura2;
- spr_a[2] = spr_Player_Aura3;
- spr_a[3] = spr_Player_Aura4;
- sprite_prefetch_multi(spr_a);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_replace.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_replace.htm index 7d659a5bc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_replace.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_replace.htm @@ -1,100 +0,0 @@ - - - - - - sprite_replace - - - - - - - - - - -

sprite_replace

-

Эта функция работает почти так же, как и функция sprite_add(), только вместо того, чтобы возвращать индекс импортируемого sprite, она перезаписывает ранее созданный индекс sprite. При использовании этой функции вы должны использовать индекс sprite, который был создан и сохранен в переменной с помощью других функций, таких как sprite_add() или sprite_create_from_surface(), или даже sprite_duplicate(), а не актив sprite дерева ресурсов. Вы можете заменить sprite из игровых активов с помощью этой функции, но это означает, что вы потеряете идентификатор ссылки для sprite, который вы заменяете, независимо от того, вызываете ли вы game_restart() или нет, и поэтому не рекомендуется. Независимо от заменяемого sprite, эта функция создаст новую страницу текстуры для спрайта, поэтому при ее использовании следует соблюдать осторожность, так как это может негативно сказаться на производительности, увеличив количество необходимых замен текстур для рендеринга.

-

Загружаемый файл изображения всегда должен быть в формате *.png, а все изображения, которые должны быть превращены в анимированные sprites, должны иметь формат "strip" (см. рисунок ниже). Они будут разбиты на указанное количество суб-изображений по правилу sprite width = strip width / sub images.

-

Example Sprite Strip

-

Как видно из приведенного выше изображения, sprite был помещен на темно-пурпурный фон, и это можно удалить, установив аргумент "removeback" на true. Это работает путем проверки левого нижнего пикселя sprite на наличие там цвета и затем использует его в качестве цвета для удаления. Например, на изображении выше, если бы цвет левого нижнего пикселя был зеленым, все зеленые части sprite были бы удалены, а остальной фиолетовый фон проигнорирован.

-

Если вы выбрали опцию "removeback", вы также можете захотеть, чтобы GameMaker сгладил края sprite, установив аргумент "smooth" на true. При этом создается полупрозрачная граница по краям sprite после удаления фона.

-

Наконец, вы также можете указать начало координат x и y для sprite. Это точка, в которой sprite "фиксируется" на использующем его экземпляре, и она всегда рассчитывается как относительно левого верхнего угла 0,0 одного подизображения sprite. Так, например, sprite размером 32 x 32 пикселя с этими значениями, установленными на (16,16), будет иметь начало в центре.

-

По умолчанию для всех новых sprites автоматически рассчитываются ограничивающие рамки (точный размер рамки зависит от размера и прозрачности sprite), однако вы можете захотеть настроить это, в этом случае вам также следует использовать функцию sprite_collision_mask().

-

ПРИМЕЧАНИЕ: В зависимости от выбранной целевой платформы вы ограничены в том, откуда вы можете сохранять и загружать файлы. Дополнительную информацию см. в разделе Работа с файлами.

-

ПРИМЕЧАНИЕ: Вы должны знать, что если вы используете эту функцию в вашей целевой игре HTML5 для загрузки ресурсов с внешнего сервера, то из-за защиты XSS в браузерах попытки загрузки ресурсов из других доменов могут быть заблокированы и возвращать пустые результаты.

-

-

Синтаксис:

-

sprite_replace(ind, fname, imgnumb, removeback, smooth, xorig, yorig);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indАктив спрайтаThe index of the sprite to permanently replace.
fnameСтрокаThe filename of the image to make the new sprite.
imgnumbРеальноThe number of frames the sprite will be cut up into horizontally. Use 1 for one single image or *.gif.
removebackБулевоIndicates whether to make all pixels with the background colour (left-bottom pixel) transparent.
smoothБулевоIndicates whether to smooth the edges.
xorigРеальноThe x coordinate of the origin, relative to the sprite's top left corner.
yorigРеальноThe y coordinate of the origin, relative to the sprite's top left corner.
-

-

Возвращает

-

N/A

-

-

Пример:

-

sprite_replace(spr_banner, "gravemaker.png", 1, false, false, 0, 0);

-

Приведенный выше код заменит актив изображения, проиндексированный в "spr_banner", на другой, загруженный из внешнего источника.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_save.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_save.htm index abdfb9aaf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_save.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_save.htm @@ -1,84 +0,0 @@ - - - - - - sprite_save - - - - - - - - - - -

sprite_save

-

Эта функция может быть использована для сохранения на диск любого субизображения sprite, задав ему указанное имя файла. Файл sprite должен быть добавлен во время выполнения программы (нельзя сохранить sprites, добавленный через IDE), и файл должен быть сохранен с расширением *.png.

-

ПРИМЕЧАНИЕ: В зависимости от выбранной целевой платформы вы ограничены в том, откуда вы можете сохранять и загружать файлы. Дополнительную информацию см. в разделе Работа с файлами.

-

-

Синтаксис:

-

sprite_save(ind, subimg, fname);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indАктив спрайтаThe index of the sprite to save.
subimgРеальноThe sub-image of the sprite to save.
fnameСтрокаThe filename for the saved sprite.
-

-

Возвращает

-

N/A

-

-

Пример:

-

var surf, spr_custom;
- surf = surface_create(32, 32);
- surface_set_target(surf);
- draw_clear_alpha(c_black, 0);
- draw_sprite(spr_Body, 0, 0, 0);
- draw_sprite(spr_Clothes, 0, 0, 0);
- draw_sprite(spr_Hair, 0, 0, 0);
- spr_custom = sprite_create_from_surface(surf, 0, 0, 32, 32, true, true, 16, 16);
- surface_reset_target();
- surface_free(surf);
- sprite_save(spr_custom, 0, "Player_Custom_Sprite.png");
- sprite_delete(spr_Custom);

-

Приведенный выше код создает поверхность и сохраняет ее индекс в локальной переменной "surf". Затем он нацеливается на эту поверхность, очищает ее и рисует несколько sprites друг на друга. Он создает новый sprite из составного изображения, нарисованного на поверхности, и присваивает его индекс локальной переменной "spr_Custom", после чего освобождает память, используемую поверхностью. Наконец, полученный sprite сохраняется в файл, а затем также удаляется из памяти.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_save_strip.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_save_strip.htm index a24d309ac..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_save_strip.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_save_strip.htm @@ -1,78 +0,0 @@ - - - - - - sprite_save_strip - - - - - - - - - - -

sprite_save_strip

-

Эта функция создает изображение полосы из всех подизображений в файле sprite, сохраняя его на диске с указанным именем. Файл sprite должен быть добавлен во время выполнения программы (нельзя сохранить sprites, добавленный через IDE), а файл должен быть сохранен с расширением *.png.

-

ПРИМЕЧАНИЕ: В зависимости от выбранной целевой платформы вы ограничены в том, откуда вы можете сохранять и загружать файлы. Дополнительную информацию см. в разделе Работа с файлами.

-

-

Синтаксис:

-

sprite_save_strip(ind, filename);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indАктив спрайтаThe index of the sprite to save.
filenameСтрокаThe filename for the saved sprite strip.
-

-

Возвращает

-

N/A

-

-

Пример:

-

var spr, i;
- spr = sprite_create_from_surface(0, 0, 32, 32, true, true, 16, 16);
-
- for (i = 1; i < 8; i +=1)
- {
-     sprite_add_from_surface(spr, i, 0, 32, 32, true, true, 16, 16);
- }
-
- sprite_save_strip(spr, "Custom_Player_Sprite.png");
- sprite_delete(spr); -

-

Приведенный выше код создает sprite из поверхности, индексированной в переменной "surf", присваивая ее индекс локальной переменной "spr_Custom", а затем использует цикл for для перемещения по поверхности и захвата различных участков, которые добавляются в sprite в качестве суб-изображений. этот новый sprite затем сохраняется как полоса png перед удалением из памяти.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_alpha_from_sprite.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_alpha_from_sprite.htm index bbfe708ee..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_alpha_from_sprite.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_alpha_from_sprite.htm @@ -1,94 +0,0 @@ - - - - - - sprite_set_alpha_from_sprite - - - - - - - - - - -

sprite_set_alpha_from_sprite

-

Эта функция использует значение/насыщенность одного sprite и умножает его на альфа-фактор целевого sprite. В идеале sprite, используемый для создания новой альфа-карты, должен быть серо-масштабным, с белыми областями, имеющими эквивалентное значение альфа 1 (непрозрачный), черные области эквивалентны альфа 0 (прозрачный), а серые области имеют альфа между 0 и 1. sprite, для которого вы устанавливаете альфа, не может быть постоянным ресурсом, как и sprite, который вы используете для установки альфа, так как это приведет к ошибке. Это означает, что для корректной работы функции необходимо создать два совершенно новых sprites "на лету". Этого можно достичь с помощью поверхностей или путем создания sprite на экране (в примере кода ниже показано, как можно достичь эффекта с помощью поверхностей).

-

ПРИМЕЧАНИЕ: Эта функция полезна только для растровых изображений sprites и не работает с SWF или JSON (Spine) sprites.

-

Ниже приведено изображение, иллюстрирующее работу этой функции:

-

Sprite Set Alpha Example

-

-

Синтаксис:

-

sprite_set_alpha_from_sprite(ind, spr);

- - - - - - - - - - - - - - - -
АргументТипОписание
indThe index of the sprite to change the transparency map of.
sprThe index of the sprite to take the transparency map data from.
-

-

Возвращает

-

-

-

Расширенный пример:

-

В этом расширенном примере мы покажем, как можно создать специальный эффект sprite из двух ресурсов sprite. Для начала нам необходимо иметь переменную контроллера в событии Create экземпляра. Эта переменная должна гарантировать, что sprite будет создан только один раз:

-

spr_create = true;

-

После этого нам нужно перейти к событию Draw Event и добавить этот код:

-

if spr_create
- {
-     spr_create = false;
-     var _sw = sprite_get_width(spr_Explosion_Alpha);
-     var _sh = sprite_get_height(spr_Explosion_Alpha);
-     var _xo = sprite_get_xoffset(spr_Gradient);
-     var _yo = sprite_get_yoffset(spr_Gradient);
-     var _surf = surface_create(_sw, _sh);
-     surface_set_target(_surf);
-     draw_clear_alpha(c_black, 0);
-     draw_sprite(spr_Gradient, 0, 0, 0);
-     sprite_index = sprite_create_from_surface(_surf, 0, 0, _sw, _sh, false, false, _xo, _yo);
-     draw_clear_alpha(c_black, 0);
-     draw_sprite(spr_Explosion_Alpha, 0, _xo, _yo);
-     var _spr = sprite_create_from_surface(_surf, 0, 0, _sw, _sh, false, false, _xo, _yo);
-     surface_reset_target();
-     surface_free(_surf);
-     sprite_set_alpha_from_sprite(sprite_index, _spr);
-     sprite_delete(_spr);
- }
-
- draw_sprite(sprite_index, 0, x, y); -

-

Приведенный выше код сначала проверяет, является ли управляющая переменная истинной или нет, и если она истинна, то запускает код для установки альфы sprite, устанавливая переменную в false, чтобы предотвратить выполнение кода более одного раза. В этом случае создается поверхность размером с альфа-маску, которую мы хотим использовать, затем рисуется объект sprite, альфа которого должна быть изменена, на поверхности и создается новый объект sprite, который назначается как sprite_index объекта. Затем код очищает поверхность, рисует на ней карту альфа-канала sprite и создает еще один новый sprite, сохраняя его индекс в локальной переменной. Наконец, новый sprite, назначенный объекту, получает свой набор альфа-карт от этого временного sprite, поверхность освобождается, а временный sprite удаляется.

-

Осталось сделать последнюю вещь, а именно удалить sprite, созданный для объекта, из памяти, когда он не используется. Это можно сделать либо в событии Destroy, либо в событии Room End, как показано ниже:

-

sprite_delete(sprite_index);

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_bbox.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_bbox.htm index c1315958f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_bbox.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_bbox.htm @@ -1,84 +0,0 @@ - - - - - - sprite_set_bbox - - - - - - - - - - -

sprite_set_bbox

-

Эта функция может быть использована для установки значений граничной области для sprite. Вы указываете индекс sprite, который нужно использовать, а затем значения левой, верхней, правой и нижней частей для позиций граничной области. Позиции являются абсолютными значениями, где позиция (0, 0) соответствует левому верхнему углу sprite, независимо от смещения для sprite, любых "пустых" пикселей, которые могут быть у sprite, или места рисования в комнате.

-

ПРИМЕЧАНИЕ Эта функция влияет на актив sprite таким образом, что все последующие экземпляры с этим sprite будут иметь одинаковые граничные рамки.

-

-

Синтаксис:

-

sprite_set_bbox(ind, left, top, right, bottom);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indThe index of the sprite to set the bounding box on.
leftThe left side of the bounding box
topThe top of the bounding box.
rightThe right side of the bounding box
bottomThe bottom of the bounding box.
-

-

Возвращает

-

-

-

Пример:

-

if sprite_get_bbox_mode(sprite_index) == 2
- {
-     left = irandom(sprite_width / 2);
-     right = irandom((sprite_width / 2) + irandom(sprite_width / 2));
-     top = irandom(sprite_height / 2);
-     bottom = irandom((sprite_height / 2) + irandom(sprite_height / 2));
-     sprite_set_bbox(sprite_index, left, top, right, bottom);
- }

-

Приведенный выше код проверит режим граничного поля sprite, назначенного на sprite_index, и если он установлен на manual, то его граничное поле будет изменено.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_bbox_mode.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_bbox_mode.htm index 5c1ad0648..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_bbox_mode.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_bbox_mode.htm @@ -1,101 +0,0 @@ - - - - - - sprite_set_bbox_mode - - - - - - - - - - -

sprite_set_bbox_mode

-

Эта функция может быть использована для установки режима ограничивающей рамки для sprite. Вы предоставляете индекс sprite и режим, который должен быть одной из следующих констант:

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Режим граничного поля Постоянная
ПостояннаяОписание
bboxmode_automaticАвтоматически - Ограничительная рамка будет рассчитана автоматически, на основе настроек допуска для спрайта.
bboxmode_fullimageПолное изображение - Ограничительное поле будет установлено так, чтобы использовать всю ширину и высоту sprite, независимо от допусков и "пустых" пикселей.
bboxmode_manualВручную - Граничная область устанавливается вручную на значения, заданные пользователем, что требует использования функции sprite_set_bbox()
-

ПРИМЕЧАНИЕ Эта функция влияет на актив спрайта так, что все последующие экземпляры с этим sprite будут иметь тот же режим ограничивающей рамки.

-

-

Синтаксис:

-

sprite_set_bbox_mode(ind, mode);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indАктив спрайтаThe index of the sprite to change the mode of.
modeРежим граничного поля ПостояннаяThe mode to set (a constant).
-

-

Возвращает

-

N/A

-

-

Пример:

-

if sprite_get_bbox_mode(sprite_index) != bboxmode_automatic
- {
-     sprite_set_bbox_mode(sprite_index, bboxmode_automatic);
- }

-

Приведенный выше код проверяет режим bbox для текущего sprite и, если это не automatic, то он устанавливается в это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_cache_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_cache_size.htm index ebcfcd778..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_cache_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_cache_size.htm @@ -1,65 +0,0 @@ - - - - - - sprite_set_cache_size - - - - - - - - - - -

sprite_set_cache_size

-

При выполнении смешивания изображений HTML5 не может делать это динамически, как это может делать исполняемый файл. Поэтому GameMaker вынужден временно сохранять копию изображения и загружать ее. Эта функция устанавливает, сколько копий - данного sprite может быть кэшировано, прежде чем старые копии будут перезаписаны. По умолчанию - 4. Это применяется ко всем вложенным изображениям sprite.

-

-

Синтаксис:

-

sprite_set_cache_size(ind, max);

- - - - - - - - - - - - - - - -
АргументТипОписание
indThe index of the sprite to change the cache size of.
maxThe maximum number of cached copies of the sprite that can be stored.
-

-

Возвращает

-

-

-

Пример:

-

sprite_set_cache_size(sprite0, 2);

-

Это установит кэш sprite всех суб-изображений sprite0 в 2 копии.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_cache_size_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_cache_size_ext.htm index c1ad5e050..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_cache_size_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_cache_size_ext.htm @@ -1,72 +0,0 @@ - - - - - - sprite_set_cache_size_ext - - - - - - - - - - -

sprite_set_cache_size_ext

-

При выполнении смешивания изображений HTML5 не может делать это динамически, как это может делать исполняемый файл. Поэтому GameMaker вынужден временно сохранять копию изображения и загружать ее. Эта функция устанавливает, сколько копий данного sprite можно кэшировать, прежде чем старые копии будут перезаписаны. По умолчанию - 4. Это применяется к одному заданному подизображению sprite.

-

-

Синтаксис:

-

sprite_set_cache_size_ext(ind, index, max);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indАктив спрайтаThe index of the sprite to change the cache size of.
indexРеальноThe sub-image of ind to change the cache size of.
maxРеальноThe maximum number of cached copies of the sprite that can be stored.
-

-

Возвращает

-

N/A

-

-

Пример:

-

sprite_set_cache_size_ext(sprite0, 0, 2);

-

Это установит кэш sprite первого суб-изображения sprite0 в 2 копии.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_nineslice.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_nineslice.htm index 1bea3cf7b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_nineslice.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_nineslice.htm @@ -1,76 +0,0 @@ - - - - - - sprite_set_nineslice - - - - - - - - - - -

sprite_set_nineslice

-

Эта функция используется для применения структуры Nine Slice к sprite. Вы указываете индекс sprite и структуру Nine Slice для применения, которую можно получить с помощью функции sprite_nineslice_create() или sprite_get_nineslice().

-

ПРИМЕЧАНИЕ Эта функция влияет на актив спрайта, поэтому любые изменения, сделанные с помощью этой функции, повлияют на все экземпляры, использующие этот sprite, а также на все последующие экземпляры.

-

-

Синтаксис:

-

sprite_set_nineslice(ind, nineslice);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indАктив спрайтаThe index of the sprite to modify
ninesliceСтруктура из девяти ломтиковThe Nine Slice struct to apply
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _nineslice = sprite_nineslice_create();
-
- _nineslice.enabled = true;
- _nineslice.left = 10;
- _nineslice.right = 10;
- _nineslice.top = 10;
- _nineslice.bottom = 10;
-
- sprite_set_nineslice(spr_box_0, _nineslice); -

-

Приведенный выше код создает новую структуру Nine Slice, включает ее и устанавливает смещения для направляющих. Затем эта структура применяется к объекту sprite, изменяя его свойства Nine Slice.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_offset.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_offset.htm index 2c46f1eb0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_offset.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_offset.htm @@ -1,70 +0,0 @@ - - - - - - sprite_set_offset - - - - - - - - - - -

sprite_set_offset

-

Эта функция может быть использована для установки начала координат x и y sprite, и принимает относительные значения, основываясь на позиции (0,0), являющейся левым верхним углом sprite. Следующее изображение иллюстрирует это:

-

X/Y Offset Example

-

ПРИМЕЧАНИЕ Эта функция влияет на актив спрайта так, что все последующие экземпляры с этим sprite будут иметь такое же смещение.

-

-

Синтаксис:

-

sprite_set_offset(ind, xoff, yoff);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indThe index of the sprite to change the offset of.
xoffThe x position of the origin.
yoffThe y position of the origin.
-

-

Возвращает

-

-

-

Пример:

-

sprite_assign(spr_Custom, spr_Base);
sprite_set_offset(spr_Custom, sprite_get_xoffset(spr_Base), sprite_get_yoffset(spr_Base));

-

Приведенный выше код назначает sprite с индексом "spr_Base" на sprite с индексом "spr_Custom", а затем использует значения x и y смещения "spr_Base" для установки начала нового спрайта.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_speed.htm index c74dbd860..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprite_Manipulation/sprite_set_speed.htm @@ -1,98 +0,0 @@ - - - - - - sprite_set_speed - - - - - - - - - - -

sprite_set_speed

-

Эта функция используется для установки базовой скорости и типа анимации для ресурса sprite. Обычно это задается в редакторе спрайтов, но бывают моменты, когда требуется задать это вручную для данного ресурса sprite. Вам необходимо указать индекс sprite, скорость анимации и тип скорости анимации. Тип скорости анимации может быть любой из следующих констант:

- - - - - - - - - - - - - - - -
ПостояннаяОписание
spritespeed_framespersecondНа сайте sprite была определена анимация в кадрах в секунду.
spritespeed_framespergameframeНа сайте sprite была определена анимация в кадрах на один игровой кадр.
-


- Выбор типа скорости, который будет использоваться для расчета анимации, очень важен, поскольку между этими двумя вариантами существует огромная разница. Следующие два примера иллюстрируют эту разницу:

-
    -
  • Если у вас есть sprite, который рисует 1 кадр в секунду, а скорость изображения установлена на 0,5, он будет рисовать со скоростью 0,5 кадра в секунду. Если частота кадров в игре составляет 60 кадров в секунду, то sprite будет рисовать 1 кадр на каждые 120 игровых кадров.
  • -
  • Если у вас есть sprite, который рисует 1 кадр в игровом кадре, а скорость изображения установлена на 0,5, то он будет рисовать 0,5 кадра в игровом кадре. Если частота кадров в игре составляет 60 кадров в секунду, то sprite будет рисовать 30 кадров на каждые 60 игровых кадров.
  • -
-

Узнать, какое значение скорости использовалось для анимации sprite, можно с помощью функции sprite_get_speed(), а тип скорости анимации можно получить с помощью функции sprite_get_speed_type().

-

ВАЖНО! Эта функция влияет на ресурс sprite, поэтому любые изменения, которые вы сделаете с помощью этой функции, повлияют на все экземпляры, использующие sprite, а также на все будущие экземпляры.

-

-

Синтаксис:

-

sprite_set_speed(index, speed, type)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexАктив спрайтаThe index of the sprite to set the animation speed of
speedРеальноThe speed value to set
typeПостоянная скорости спрайтаThe speed type to use
-

-

Возвращается:

-

Constant (see above)

-

-

Пример:

-

sprite_set_speed(sprite_index, 10, spritespeed_framespersecond);

-

Приведенный выше код устанавливает базовую скорость анимации для sprite, назначенного экземпляру, на 10 кадров в секунду.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprites.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprites.htm index 4f2082252..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprites.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Sprites/Sprites.htm @@ -1,46 +0,0 @@ - - - - - - Спрайты - - - - - - - - - - -

Спрайты

-

Спрайты обычно являются визуальным представлением объектов в создаваемой игре, хотя они могут использоваться и для многих других целей. sprite - это либо одно изображение, либо набор изображений, которые при воспроизведении друг за другом выглядят как зацикленная анимация. Sprites может быть создан в различных форматах, при этом "традиционный" sprite состоит из кадров пиксельных изображений, импортируемых в GameMaker в виде файлов *.png. Однако вы также можете импортировать векторные sprites, сохраненные в формате *.swf, или скелетную анимацию sprites, сохраненную в виде файлов *.json с сопутствующими файлами *.atlas и *.png (более подробную информацию об этих типах файлов изображений и о том, как импортировать их в GameMaker, см. в разделе Импорт небитовых спрайтов).

-

Поскольку sprites является неотъемлемой частью любой игры, GameMaker имеет большое количество функций и переменных, которые могут быть использованы для получения информации о конкретных sprites, или для изменения тех, которые уже есть в вашей игре, или даже для загрузки пользовательских sprites во время выполнения из исходного файла изображения. Все эти функции и переменные описаны в разделах, перечисленных ниже:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Tilsets/Tile_Sets.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Tilsets/Tile_Sets.htm index 50d43a200..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Tilsets/Tile_Sets.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Tilsets/Tile_Sets.htm @@ -1,44 +0,0 @@ - - - - - - Наборы плиток - - - - - - - - - - -

Наборы плиток

-

Следующие функции доступны при работе с активами набора плиток, созданными в браузере активов. Эти функции предназначены только для работы с самим активом, а не для работы с плитками или картами плиток, когда они присутствуют в вашей игре (для этого см. соответствующие функции слоя в разделе " Комнаты").

-

Доступны следующие функции:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Tilsets/tileset_get_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Tilsets/tileset_get_name.htm index 90ef3ec77..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Tilsets/tileset_get_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Tilsets/tileset_get_name.htm @@ -1,66 +0,0 @@ - - - - - - tileset_get_name - - - - - - - - - - - -

tileset_get_name

-

Эта функция возвращает имя в виде строки указанного актива набора плиток. Это имя - то, которое было указано для набора плиток в браузере активов главного окна GameMaker. Обратите внимание, что это только строка, и ее нельзя использовать для прямой ссылки на набор плиток - для этого вам понадобится индекс набора плиток. Однако вы можете использовать эту строку для получения индекса набора плиток, используя возвращаемую строку вместе с функцией asset_get_index().

-

-

Синтаксис:

-

tileset_get_name(index);

- - - - - - - - - - - - - -
АргументТипОписание
indexАктивы набора плитокThe index of the tile set to get the name of.
-

-

Возвращает

-

String

-

-

Пример:

-

var _l = layer_get_id("tilemap_trees");
- var _m = layer_tilemap_get_id(_l);
- var _t = tilemap_get_tileset(_m);
- tileset_name = tileset_get_name(_t);

-

Приведенный выше код получит имя индекса набора плиток для заданного слоя, сохраняя возвращаемую строку в переменной tileset_name.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Tilsets/tileset_get_texture.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Tilsets/tileset_get_texture.htm index c51a818d9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Tilsets/tileset_get_texture.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Tilsets/tileset_get_texture.htm @@ -1,71 +0,0 @@ - - - - - - tileset_get_texture - - - - - - - - - - - -

tileset_get_texture

-

Эта функция возвращает специальный указатель на страницу текстуры набора тайлов. Это значение затем может быть использовано в других функциях рисования, в частности в функциях 2D-примитивов, а также в функциях шейдера. Более подробную информацию о возвращаемой текстурной странице можно получить с помощью различных функций texture_, найденных здесь.

-
-

-

Синтаксис:

-

tileset_get_texture(tileset);

- - - - - - - - - - - - - -
АргументТипОписание
tilesetАктивы набора плитокThe index of the tile set to use.
-

-

Возвращает

-

Texture

-

-

Пример:

-

var tex;
- tex = tileset_get_texture(spr_Wall, 0);
- draw_primitive_begin_texture(pr_trianglestrip, tex);
- draw_vertex_texture(0, 0, 0, 0);
- draw_vertex_texture(480, 0, 1, 0);
- draw_vertex_texture(480, 640, 1, 1);
- draw_vertex_texture(0, 640, 0, 1);
- draw_primitive_end();

-

Приведенный выше код нарисует полосу треугольника с 4 вершинами, текстурированную текстурой, хранящейся в переменной "tex".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Tilsets/tileset_get_uvs.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Tilsets/tileset_get_uvs.htm index 0e5ed4a40..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Tilsets/tileset_get_uvs.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Tilsets/tileset_get_uvs.htm @@ -1,72 +0,0 @@ - - - - - - tileset_get_uvs - - - - - - - - - - - -

tileset_get_uvs

-

Эта функция возвращает массив с UV-координатами и другими данными для текстуры заданной плитки, установленной на странице текстуры. Функция возвращает массив со следующими 8 элементами:

-
    -
  • [0] = левый
  • -
  • [1] = верх
  • -
  • [2] = право
  • -
  • [3] = низ
  • -
  • [4] = количество пикселей, которые компилятор активов обрезал с левой стороны набора плиток
  • -
  • [5] = количество пикселей, которые компилятор активов обрезал с верхней стороны набора плиток
  • -
  • [6] = нормализованный процент пиксельных данных от исходной ширины набора плиток, которые были сохранены на странице текстуры
  • -
  • [7] = нормализованный процент пиксельных данных от высоты исходного набора плиток, который был сохранен на странице текстуры
  • -
-

Затем этот массив можно использовать в других функциях рисования, особенно при работе в 3D или при использовании функций 2D-примитивов, а также при работе с функциями шейдеров.

-

-

Синтаксис:

-

tileset_get_uvs(tileset);

- - - - - - - - - - - -
АргументТипОписание
tilesetThe index of the tile set to use.
-

-

Возвращает

-

(1D, 8 elements)

-

-

Пример:

-

var tex = tileset_get_uvs(tl_Grass);
tex_left = tex[0];
tex_top = tex[1];
tex_right = tex[2];
tex_bottom = tex[3];

-

Приведенный выше код сохранит УФ-координаты для заданного набора плиток в локальном массиве, а затем присвоит значения переменным экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/Timelines.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/Timelines.htm index 03e8d2eb8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/Timelines.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/Timelines.htm @@ -1,61 +0,0 @@ - - - - - - Временные рамки - - - - - - - - - - -

Временные рамки

-

Временные шкалы - это мощный механизм управления событиями в вашей игре, основанный на "моментах", где "момент" - это просто один игровой шаг. Эти временные линии обычно создаются в браузере активов с помощью редактора временных линий аналогично объектам, т.е. вы создаете временную линию, затем в каждый момент, когда вам нужно, чтобы она выполнила действие, вы добавляете некоторый код или визуальную иконку GML для ее выполнения. После создания вы можете останавливать, запускать и манипулировать временной шкалой с помощью кода. Вы даже можете изменять отдельные моменты, определяя функцию сценария и добавляя ее в временную шкалу динамически из объекта контроллера (например), что делает этот инструмент очень мощным и универсальным при создании игр.

-

Следующие функции предназначены для добавления и манипулирования временными линиями из вашей игры:

- -

-

Следующие переменные "встроены" во все экземпляры, чтобы облегчить работу с временными линиями и дать вам возможность контролировать их:

- -

-

Обратите внимание, что дополнительную информацию о переменных экземпляра вы можете найти здесь: Переменные экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_add.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_add.htm index a7d5c7371..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_add.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_add.htm @@ -1,48 +0,0 @@ - - - - - - timeline_add - - - - - - - - - - -

timeline_add

-

С помощью этой функции вы можете добавить новый (пустой) актив временной линии в вашу игру. Функция возвращает индекс этой новой временной линии, который должен быть сохранен в переменной для использования во всех дальнейших вызовах функции, которые включают эту новую временную линию. Вы также должны быть уверены, что используете функцию timeline_delete() всякий раз, когда вы больше не хотите использовать временную линию (например, в конце комнаты), чтобы предотвратить возможные утечки памяти, которые могут замедлить работу или привести к краху вашей игры. Чтобы добавить моменты к временной линии, созданной таким образом, см. функцию timeline_moment_add_script().

-

-

Синтаксис:

-

timeline_add();

-

-

Возвращается:

-

Timeline Asset

-

-

Пример:

-

global.tl = timeline_add();

-

Приведенный выше код создает новую временную линию и сохраняет ее индекс в переменной "global.tl".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_clear.htm index 829941380..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_clear.htm @@ -1,66 +0,0 @@ - - - - - - timeline_clear - - - - - - - - - - -

timeline_clear

-

С помощью этой функции вы можете очистить определенную временную линию от "моментов", удалив все коды и действия для этой временной линии и оставив ее пустой.

-

-

Синтаксис:

-

timeline_clear(ind);

- - - - - - - - - - - - - -
АргументТипОписание
indВременной активThe index of the timeline to clear.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if timeline_position > 200
- {
-     timeline_clear(global.tl);
-     timeline_index = -1;
- }

-

Приведенный выше код очистит указанную временную линию, индексируемую переменной "global.tl", от всех моментов, когда был пройден определенный момент.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_delete.htm index 28ed32293..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_delete.htm @@ -1,63 +0,0 @@ - - - - - - timeline_delete - - - - - - - - - - -

timeline_delete

-

С помощью этой функции вы можете удалить любую временную линию из вашей игры. Если эта временная линия была создана в GameMaker Asset Browser, обратите внимание, что она полностью удаляется из игры, и попытка снова вызвать индексированную временную линию после использования этой функции приведет к ошибке. Если временная линия была создана динамически с помощью функции timeline_add() то эту функцию следует использовать в тот момент, когда таймлайн больше не нужен, чтобы предотвратить утечку памяти, которая может замедлить (и в конечном итоге привести к краху) вашу игру.

-

-

Синтаксис:

-

timeline_delete(ind);

- - - - - - - - - - - -
АргументТипОписание
indThe index of the time line to delete.
-

-

Возвращается:

-

-

-

Пример:

-

if timeline_exists(global.tl)
- {
-     timeline_delete(global.tl);
- }

-

Приведенный выше код проверяет, существует ли временная линия и индексируется ли она в глобальной переменной "tl", и если да, то удаляет эту временную линию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_exists.htm index a812730d8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_exists.htm @@ -1,64 +0,0 @@ - - - - - - timeline_exists - - - - - - - - - - - -

timeline_exists

-

С помощью этой функции можно проверить, существует ли временная линия (возвращается true) или нет (возвращается false). Это особенно полезно при динамическом создании временных линий с помощью функции timeline_add() но следует иметь в виду, что при поиске неинициализированной переменной (которая в противном случае была бы присвоена индексу временной линии) будет выдана ошибка.

-

-

Синтаксис:

-

timeline_exists(ind);

- - - - - - - - - - - -
АргументТипОписание
indThe index of the time line to check for.
-

-

Возвращается:

-

-

-

Пример:

-

if timeline_exists(global.tl)
- {
-     timeline_delete(global.tl);
- }

-

Приведенный выше код проверяет, существует ли временная линия и индексируется ли она в глобальной переменной "tl", и если да, то удаляет эту временную линию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_get_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_get_name.htm index a4014c78c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_get_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_get_name.htm @@ -1,63 +0,0 @@ - - - - - - timeline_get_name - - - - - - - - - - - -

timeline_get_name

-

Эта функция может быть использована для получения имени временной линии в виде строки. если временная линия была создана динамически с помощью функции timeline_add() функции, возвращаемое имя будет иметь - формат "__newtimelineN", где "N" - номер временной линии (начиная с 0). Обратите внимание, что это только строка и не может быть использована для прямой ссылки на временную шкалу - для этого вам понадобится индекс временной шкалы. - для этого вам понадобится индекс временной шкалы. Однако вы можете использовать эту строку для получения индекса временной шкалы, используя возвращаемую строку вместе с функцией asset_get_index().

-

-

Синтаксис:

-

timeline_get_name(ind);

- - - - - - - - - - - -
АргументТипОписание
indThe index of the time line to check the name of.
-

-

Возвращается:

-

-

-

Пример:

-

var _str = timeline_get_name(timeline_index);
show_debug_message("Current timeline = " + _str);

-

Приведенный выше код получает имя текущей назначенной временной шкалы и выводит его на консоль.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_index.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_index.htm index 62f7d971e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_index.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_index.htm @@ -1,51 +0,0 @@ - - - - - - timeline_index - - - - - - - - - - -

timeline_index

-

Эта переменная содержит индекс временной линии, связанной с данным экземпляром. Вы можете установить его на определенную временную линию, чтобы использовать ее, или установить его на -1, чтобы прекратить использование временной линии для данного экземпляра (если для экземпляра не определена временная линия, возвращается -1). Обратите внимание, что это не запускает временную линию - для этого используйте переменную timeline_running.

-

-

Синтаксис:

-

timeline_index

-

-

Возвращается:

-

Timeline Asset

-

-

Пример:

-

if timeline_exists(global.tl)
- {
-     timeline_index = global.tl;
- }

-

Приведенный выше код присвоит экземпляру, выполняющему код, временную линию, индексированную в переменной "global.tl", если такая временная линия существует.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_loop.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_loop.htm index 425a7e116..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_loop.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_loop.htm @@ -1,52 +0,0 @@ - - - - - - timeline_loop - - - - - - - - - - -

timeline_loop

-

Эта переменная возвращает, зацикливается ли линия времени (true) или нет (false). Вы можете изменить эту переменную, чтобы включить или выключить зацикливание, и она работает с отрицательной скоростью линии времени (если положение линии времени опустится ниже 0, она начнет снова с последнего определенного момента).

-

-

Синтаксис:

-

timeline_loop

-

-

Возвращается:

-

-

-

Пример:

-

-

if !timeline_loop
- {
-     timeline_loop = true;
- }

-

Приведенный выше код проверяет, будет ли временная линия, назначенная в данный момент экземпляру, зацикливаться или нет, и если нет, то устанавливает значение true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_max_moment.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_max_moment.htm index daf494243..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_max_moment.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_max_moment.htm @@ -1,64 +0,0 @@ - - - - - - timeline_max_moment - - - - - - - - - - - -

timeline_max_moment

-

Эта функция возвращает значение момента, в который временная шкала выполняет свое последнее действие. Так, если у вас есть временная шкала с 8 различными действиями, расположенными на расстоянии 20 мгновений друг от друга, эта функция вернет значение момента последнего действия в этой временной шкале, которое будет равно 160. Эта функция - хороший способ проверить, прошла ли временная шкала последний активный момент, поскольку позиция временной шкалы будет продолжать увеличиваться на каждом шаге игры, независимо от того, есть ли дальнейшие действия или нет.

-

-

Синтаксис:

-

timeline_max_moment(ind);

- - - - - - - - - - - -
АргументТипОписание
indThe index of the timeline to get the last moment of.
-

-

Возвращается:

-

-

-

Пример:

-

if timeline_position > timeline_max_moment(timeline_index)
- {
-     timeline_running = false;
- }

-

Приведенный выше код проверит текущее положение временной шкалы относительно максимального активного момента, и если оно больше, то временная шкала будет остановлена.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_moment_add_script.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_moment_add_script.htm index e2b09670f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_moment_add_script.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_moment_add_script.htm @@ -1,78 +0,0 @@ - - - - - - timeline_moment_add_script - - - - - - - - - - -

timeline_moment_add_script

-

С помощью этой функции вы можете динамически добавлять скрипт-функцию в Timelines в любой заданный "момент" в пределах этой временной линии, где "момент" эквивалентен одному игровому тику (или шагу). Таким образом, вы можете создать новую временную линию с помощью функции timeline_add() и добавить различные модели поведения в любой момент, или просто модифицировать ранее созданный ресурс временной линии с помощью новых моделей поведения. Обратите внимание, что при использовании этой функции не требуется никаких дополнительных аргументов, и если вы используете ее для изменения актива Timeline, присутствующего в Asset Browser, то все экземпляры, использующие эту временную линию, будут затронуты, и изменение будет длиться до конца игры (вызов game_restart() также не сбросит изменение).

-

-

Синтаксис:

-

timeline_moment_add_script(ind, step, script);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indВременной активThe index of the timeline to add a moment to.
stepРеальноThe moment (step) to add to.
scriptФункция сценарияThe index of the script function to add into the moment.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

global.tl = timeline_add();
- var i = room_speed * 60;
- repeat(3)
- {
-     timeline_moment_add_script(global.tl, i, choose(Attack_1, Attack_2, Attack_3);
-     i += room_speed * 60;
- }

-

Приведенный выше код создаст новую временную линию и сохранит ее индекс в переменной "global.tl". Затем он добавит на линию времени три сценария, выбранные случайным образом с интервалом в одну минуту.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_moment_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_moment_clear.htm index 845a7c05a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_moment_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_moment_clear.htm @@ -1,67 +0,0 @@ - - - - - - timeline_moment_clear - - - - - - - - - - -

timeline_moment_clear

-

С помощью этой функции вы можете очистить конкретный момент любой ранее определенной временной линии от всех кодов и действий.

-

-

Синтаксис:

-

timeline_moment_clear(ind, step);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indВременной активThe index of the timeline to clear.
stepРеальноThe moment to clear.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

timeline_moment_clear(global.tl, room_speed * 30);

-

Приведенный выше код очистит указанный момент временной линии, индексируемой переменной "global.tl".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_position.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_position.htm index 5c8484106..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_position.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_position.htm @@ -1,52 +0,0 @@ - - - - - - timeline_position - - - - - - - - - - -

timeline_position

-

В этой переменной хранится текущая позиция (момент), в которой находится линия времени. Вы можете изменить это значение, чтобы пропустить части линии времени, или повторить части, или начать линию времени с самого начала.

-

-

Синтаксис:

-

timeline_position

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if !timeline_running
- {
-     timeline_position = 0;
-     timeline_running = true;
- }

-

Приведенный выше код проверит, запущена ли в экземпляре временная линия, и если нет, то сбросит назначенную временную линию на запуск в первый момент, а затем запустит ее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_running.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_running.htm index a8405e863..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_running.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_running.htm @@ -1,52 +0,0 @@ - - - - - - timeline_running - - - - - - - - - - -

timeline_running

-

Эта переменная хранит текущее состояние назначенной линии времени и возвращает значение true, если она запущена, и false, если нет. Вы также можете установить эту переменную в true или false, чтобы запускать и останавливать линию времени в любое время. Следует отметить, что остановленная линия времени не сбрасывается, и поэтому запуск ее снова в более позднее время начнется с того момента, на котором она была остановлена.

-

-

Синтаксис:

-

timeline_running

-

-

Возвращается:

-

-

-

Пример:

-

if !timeline_running
- {
-     timeline_position = 0;
-     timeline_running = true;
- }

-

Приведенный выше код проверит, запущена ли в экземпляре временная линия, и если нет, то сбросит назначенную временную линию на запуск в первый момент, а затем запустит ее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_size.htm index 355f23fca..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_size.htm @@ -1,64 +0,0 @@ - - - - - - timeline_size - - - - - - - - - - - -

timeline_size

-

С помощью этой функции вы можете получить общее количество активных моментов для временной шкалы (активным считается момент, к которому добавлен код или GML Visual). Это может быть удобно при создании динамических временных шкал с помощью функций timeline_moment_add_script() и timeline_moment_clear() так как можно проверить, есть ли в данной временной шкале нужное количество активных моментов или их вообще нет.

-

-

Синтаксис:

-

timeline_size(ind);

- - - - - - - - - - - -
АргументТипОписание
indThe index of the timeline get the information from.
-

-

Возвращается:

-

-

-

Пример:

-

if timeline_size(global.tl) == 0
- {
-     timeline_moment_add_script(global.tl, room_speed + irandom(room_speed), spawn_enemy);
- }

-

Приведенный выше код проверяет заданный размер временной шкалы, и если он возвращает 0 (т.е. временная шкала не имеет активных моментов), то добавляет функцию скрипта, которая будет использоваться в случайный момент временной шкалы, проиндексированный в глобальной переменной "tl".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_speed.htm index bcae4e23a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asset_Management/Timelines/timeline_speed.htm @@ -1,52 +0,0 @@ - - - - - - timeline_speed - - - - - - - - - - -

timeline_speed

-

Обычно на каждом шаге позиция на линии времени увеличивается на 1, однако вы можете изменить это значение, установив переменную в другое значение. Вы можете использовать реальные числа (например, 0,5 или 2,4), и если значение больше единицы, то в течение одного временного шага может произойти несколько моментов (все они будут выполняться в том же порядке, который определен для временной линии, поэтому ни одно действие не будет пропущено).

-

-

Синтаксис:

-

timeline_speed

-

-

Возвращается:

-

(single precision floating point value)

-

-

Пример:

-

if !timeline_running
- {
-     timeline_running = true;
-     timeline_speed = 0.5;
- }

-

Приведенный выше код проверит, запущена ли в экземпляре связанная с ним временная линия, и если нет, то запустит временную линию на половинной скорости.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/Achievements_And_Leaderboards.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/Achievements_And_Leaderboards.htm index e1519e48d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/Achievements_And_Leaderboards.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/Achievements_And_Leaderboards.htm @@ -1,69 +0,0 @@ - - - - - - Достижения и таблицы лидеров - - - - - - - - - - -

Достижения и таблицы лидеров

-

Игры, созданные для устройств, работающих под управлением iOS или Android, также могут подключаться к одному из двух API для таблиц лидеров и достижений. Для iOS есть iTunes Connect, а для Android можно использовать Google Play. - они используют функции, найденные на этой странице. Эти функции позволяют вашей игре отправлять информацию о набранных очках и достижениях в таблицы лидеров, которые вы установили в аккаунте разработчиков для создаваемой вами игры, и это отличный способ - привлечь игроков к социальной стороне игры, поскольку они могут увидеть, чего достигли другие люди, игравшие в вашу игру, и попытаться превзойти их.

-

При использовании этих функций следует учитывать, что они не отслеживают достижения и баллы автоматически за вас. Они отображают только те данные, которые вы отправляете им из своей игры, поэтому вы должны написать свой собственный код достижений и - для отслеживания состояния отдельных людей в игре, а затем использовать эти функции для добавления данных в выбранную сеть (однако вы можете запросить информацию о достижениях с помощью функции achievement_load_progress() функцию).

-

Некоторые из этих функций будут вызывать обратный вызов Social Asynchronous Event, который будет содержать DS Map данных, относящихся к - к функции, которая его вызвала. Те функции, которые запускают событие, также детализируют пары ключ/значение карты, возвращаемые обратным вызовом, однако обратный вызов социального события также может быть вызван тем, что ваша игра получает - внешних уведомлений о вызовах и т.д..

-

ПРИМЕЧАНИЕ: Чтобы эти функции работали с iOS, у вас должна быть действующая учетная запись Game Center и идентификатор приложения iOS для вашей игры.

-

ПРИМЕЧАНИЕ: Чтобы эти функции работали с Android, вы должны отправить свою игру в Google Play, установить необходимые разделы, а также активировать API в параметрах игры для Android. - вашей игры.

-

Ниже перечислены основные функции, используемые для интеграции вашей игры с выбранной целевой платформой социальных игр:

-

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_available.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_available.htm index a355629fa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_available.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_available.htm @@ -1,48 +0,0 @@ - - - - - - достижение_доступно - - - - - - - - - - -

достижение_доступно

-

Эта функция вернет true, если пользователь в данный момент подключен к Интернету и выбранная система таблиц лидеров и достижений доступна, в противном случае она вернет false.

-

-

Синтаксис:

-

achievement_available()

-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if achievement_available()
    {
    achievement_post("ach_Level1", 100);
    }

-

Приведенный выше код проверит, доступен ли сервис таблицы лидеров, и, если да, опубликует на нем сообщение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_get_challenges.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_get_challenges.htm index 876b68d59..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_get_challenges.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_get_challenges.htm @@ -1,97 +0,0 @@ - - - - - - достижение_получить_задачи - - - - - - - - - - -

достижение_получить_задачи

-

Эта функция отправит запрос на сервер для получения информации обо всех текущих вызовах и вызовет обратный вызов Social Asynchronous Event, содержащий в себе значение - async_load карту, заполненную соответствующими парами ключ/значение. Ключ id этой DS Map используется для идентификации правильного обратного вызова (может быть - может быть более одной триггерной функции для любого данного асинхронного события), и будет сопряжен с константой achievement_challenge_list_received, а также рядом других пар ключ/значение для каждой задачи. Точное содержимое - карты показано ниже:

-

ПРИМЕЧАНИЕ: Эта функция предназначена только для iOS.

-
    -
  • "id" - Для данной функции это должно быть achievement_challenge_list_received
  • -
  • "numchallenges" - Количество вызовов (локальных и удаленных), доступных в настоящее время.
  • -
  • "ChallengeNplayerid" - идентификатор игрока для задачи, где "N" - целое число, EG: "Challenge5playerid" - идентификатор игрока для пятой задачи в списке.
  • -
  • "ChallengeNissuerid" - идентификатор лица, выдавшего вызов, где "N" - целое число, EG: "Challenge2issuerid" - идентификатор эмитента для второго вызова в списке.
  • -
  • "ChallengeNstate" - Состояние вызова "N", которое будет иметь значение 0 - 3 (в виде строки) для недействительного, ожидающего, завершенного или отклоненного.
  • -
  • "ChallengeNmessage" - Текстовое сообщение для вызова "N".
  • -
  • "ChallengeNissueddate" - Дата выдачи вызова "N".
  • -
  • "ChallengeNcompleteddate" - Дата завершения задачи "N".
  • -
  • "ChallengeNtype" - Тип брошенного вызова. Может быть одной из двух констант:
  • -
- - - - - - - - - - - - - - - -
ПостояннаяОписание
achievement_filter_friends_only Получайте только оценки игроков-друзей.
achievement_filter_all_players Получите все результаты для всех игроков.
-

-
    -
  • "ChallengeNidentifier" - Идентифицирующая строка для вызова.
  • -
  • "ChallengeNscore" - Оценка, связанная с задачей.
  • -
-

-

Синтаксис:

-

achievement_get_challenges()

-

-

Возвращается:

-

N/A

-

-

Расширенный пример:

-

Следующий код, вероятно, будет вызван после того, как игрок войдет в свой игровой аккаунт, используя achievement_login():

-

achievement_get_challenges();

-

Это отправит запрос на получение информации о текущем вызове и сгенерирует асинхронный обратный вызов со специальным async_load ds_map, содержащим следующие данные:

-

var ident = ds_map_find_value(async_load, "id");
if ident == achievement_challenge_list_received
   { -
   var numentries = ds_map_find_value(async_load,"numchallenges");
   for(var i = 0; i < numentries; i++;)
      { -
      player_id[i] = ds_map_find_value(async_load, "Challenge" + string(i)+"playerid");
      issuer_id[i] = ds_map_find_value(async_load, "Challenge" + string(i) +"issuerid");
      state[i] - = ds_map_find_value(async_load, "Challenge" + string(i)+"state");
      message[i] = ds_map_find_value(async_load, "Challenge" + string(i)+"message");
      date_completed[i] = ds_map_find_value(async_load, - "Challenge" + string(i)+"completeddate");
      date_issued[i] = ds_map_find_value(async_load, "Challenge" + string(i)+"issueddate");
      ach_type[i] = ds_map_find_value(async_load, "Challenge" - + string(i)+"type");
      ach_ident[i] = ds_map_find_value(async_load, "Challenge" + string(i)+"identifier");
      ach_score[i] = ds_map_find_value(async_load, "Challenge" + string(i)+"score");
   } -

-

Приведенный выше код проверяет возвращаемую DS Map в Social Asynchronous Event и, если ее "id" совпадает с проверяемой константой, он затем проходит по карте, сохраняя все различные значения в нескольких массивах. Эта информация - может быть использована, например, для создания собственных, персонализированных страниц вызовов в игре.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_get_pic.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_get_pic.htm index 74ad6b528..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_get_pic.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_get_pic.htm @@ -1,77 +0,0 @@ - - - - - - achievement_get_pic - - - - - - - - - - -

achievement_get_pic

-

Эта функция отправит запрос на сервер для получения изображения игрока или друга и вызовет обратный вызов Social Asynchronous Event, который содержит async_load карту, заполненную соответствующими парами ключ/значение. Ключ id этой карты DS Map используется для идентификации правильного обратного вызова (для любого асинхронного события может быть более одной триггерной функции) и будет сопряжен с константой achievement_pic_loaded, а также рядом других пар ключ/значение. Точное содержимое карты показано ниже:

-

ПРИМЕЧАНИЕ: Эта функция предназначена только для iOS.

-
    -
  • "id" - Для данной функции это должно быть achievement_pic_loaded
  • -
  • "playerid" - идентификатор игрока или друга, изображение которого мы получаем.
  • -
  • "spriteid" - идентификатор sprite для изображения, который затем может быть использован для рисования его на экране с помощью любой из функций draw sprite .
  • -
-

ВНИМАНИЕ! Эта функция создает sprites, поэтому их идентификаторы должны храниться в переменных, а затем удаляться из памяти с помощью функции sprite_delete() иначе повторное использование приведет к утечке памяти, что в конечном итоге приведет к замедлению или краху вашей игры.

-

-

Синтаксис:

-

achievement_get_pic(char)

- - - - - - - - - - - -
АргументОписание
charid человека, изображение которого нужно получить (либо из списка друзей, либо из таблицы лидеров).
-

-

Возвращается:

-

N/A

-

-

Расширенный пример:

-

Следующий код будет вызван после того, как вы получите список друзей или список лидеров, используя achievement_load_friends() или achievement_load_leaderboard(). - Эти функции возвращают уникальные значения "id" для каждого человека, которые затем используются в функции для получения изображения профиля для них:

-

achievement_get_pic(global.player_id[0]);

-

Это отправит запрос на изображение, связанное с идентификатором игрока, хранящимся в глобальном массиве, и создаст асинхронный обратный вызов со специальной картой async_load DS, содержащей следующие данные:

-

var ident = ds_map_find_value(async_load, "id");
if ident == achievement_pic_loaded
    { -
    var picid = ds_map_find_value(async_load, "playerid");
    var spriteid = ds_map_find_value(async_load, "spriteid");
    if global.playerid[0] == picid)
        { -
        global.playerpic[0] = spriteid;
        } -
    } -

-

Приведенный выше код проверяет возвращенную DS Map в Social Asynchronous Event и если ее "id" совпадает с проверяемой константой, то проверяется, что id, связанный с изображением, совпадает с запрашиваемым, и если - он устанавливает другой глобальный массив для хранения уникального идентификатора изображения (который может быть использован для рисования изображения как sprite).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_increment.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_increment.htm index aa9fd9936..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_increment.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_increment.htm @@ -1,73 +0,0 @@ - - - - - - прирост_достижений - - - - - - - - - - -

прирост_достижений

-

В играх могут быть достижения, не имеющие значения завершения, поэтому вы можете использовать эту функцию для увеличения этих достижений на заданную сумму. На Android вы отправляете ID достижения в виде строки (это уникальный ID достижения, который был присвоен, когда - вы установили достижение), в то время как на всех других платформах вы передаете определенное имя достижения в виде строки, а затем указываете фактическое значение достижения для увеличения.

-

Функция запустит социальное асинхронное событие, в котором возвращаемая async_load DS map будут следующие пары ключ/значение:

-
    -
  • "type" - Это тип события, которое было запущено, для данной функции это будет строка "achievement_increment_result".
  • -
  • "id" - Это идентификатор события, и для этой функции он возвращает константу GML GooglePlayServices_EVENT_ID_INCREMENT_ACHIEVEMENT.
  • -
  • "achievement_id" - Это уникальный ID достижения, которое было увеличено.
  • -
  • "status" - Будет равно 1, если достижение было увеличено успешно, или 0, если запрос не был выполнен.
  • -
  • "complete" - значение будет равно 1, если достижение было выполнено по данному инкременту, или 0, если запрос не был выполнен.
  • -
-

-

Синтаксис:

-

achievement_increment(name, value)

- - - - - - - - - - - - - - - -
АргументОписание
nameИмя/идентификатор достижения.
valueЗначение, которое будет отправлено в качестве приращения.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

achievement_increment(global.Achievement[0], score);

-

Приведенный выше код добавляет текущий результат игрока в достижение с ID, сохраненным в глобальном массиве.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_load_friends.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_load_friends.htm index 4c7740098..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_load_friends.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_load_friends.htm @@ -1,67 +0,0 @@ - - - - - - достижение_загрузки_друзей - - - - - - - - - - -

достижение_загрузки_друзей

-

Эта функция отправит запрос на сервер для получения информации обо всех друзьях вошедших в систему пользователей и вызовет обратный вызов Social Asynchronous Event, который содержит - async_load карту, заполненную соответствующими парами ключ/значение. Ключ id этой карты DS используется для идентификации правильного обратного вызова (может быть - может быть более одной триггерной функции для любого данного асинхронного события), и будет сопряжен с константой achievement_friends_info, а также рядом других пар ключ/значение для каждого друга. Точное содержимое карты - показано ниже:

-

ПРИМЕЧАНИЕ: Эта функция предназначена только для iOS.

-
    -
  • "id" - Для этой функции это должно быть achievement_friends_info
  • -
  • "FriendN" - Имя друга, где "N" - целочисленное значение, соответствующее его положению в списке друзей.
  • -
  • "FriendidN" - Уникальный идентификатор пользователя друга, "N".
  • -
-

-

Синтаксис:

-

achievement_load_friends()

-

-

Возвращается:

-

N/A

-

-

Расширенный пример:

-

Следующий код, вероятно, будет вызван после того, как игрок войдет в свой игровой аккаунт, используя achievement_login() чтобы получить список всех друзей этого пользователя:

-

achievement_friends_info();

-

Это отправит запрос на информацию о друзьях пользователя и сгенерирует асинхронный обратный вызов со специальной картой async_load DS, содержащей следующие данные:

-

var ident = ds_map_find_value(async_load, "id");
if ident == achievement_friends_info
    { -
    var numfriends = ds_map_find_value(async_load, "numfriends");
    global.numfriends = numfriends;
    for(var i=0; i < numfriends; i++;)
        { -
        global.friendname[i] = ds_map_find_value(async_load, "Friend" + string(i));
        global.friendid[i] = ds_map_find_value(async_load, "Friendid" + string(i));
        achievement_get_pic(global.friendid[i]); -
        } -
    } -

-

Приведенный выше код проверяет возвращенную DS Map в Social Asynchronous Event и, если ее "id" совпадает с проверяемой константой, он затем проходит по карте, сохраняя все различные значения в несколько массивов, и запрашивает - изображение для каждой из записей в карте (см. achievement_get_pic()).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_load_leaderboard.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_load_leaderboard.htm index 00b479bf9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_load_leaderboard.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_load_leaderboard.htm @@ -1,121 +0,0 @@ - - - - - - доска достижений_загрузки_лидеров - - - - - - - - - - -

доска достижений_загрузки_лидеров

-

Эта функция отправляет запрос на сервер для получения информации о заданной таблице лидеров. Таблица лидеров должна быть создана ранее на панели разработчика для вашей игры, а заданный ID является тем, который вы должны указать в качестве первого аргумента - функции. Это вызовет обратный вызов Social Asynchronous Event, который содержит async_load карту, заполненную соответствующими парами ключ/значение. Ключ id этой DS Map используется для идентификации правильного обратного вызова (для любого асинхронного события может быть более одной функции запуска), и он будет сопряжен с константой achievement_leaderboard_info, а также рядом других пар ключ/значение для каждого игрока. Точное содержимое карты показано ниже:

-

ПРИМЕЧАНИЕ: эта функция предназначена только для iOS.

-
    -
  • "id" - Для этой функции это должно быть achievement_leaderboard_info
  • -
  • "leaderboardid" - Уникальный ID для таблицы лидеров, определенный на приборной панели провайдера.
  • -
  • "numentries" - Количество записей в таблице лидеров, которые вы получили.
  • -
  • "PlayerN" - Имя игрока, где "N" - целочисленное значение, соответствующее его позиции в списке лидеров.
  • -
  • "PlayeridN" - Уникальный идентификатор пользователя игрока, "N".
  • -
  • "RankN" - Ранг игрока "N" в таблице лидеров.
  • -
  • "ScoreN" - счет игрока "N".
  • -
-

Вы можете указать точную часть таблицы лидеров для показа, задав минимальное и максимальное значение индекса, а также запросить фильтрацию результатов, чтобы получить только результаты ваших друзей или результаты всех игроков, используя следующие параметры - константы фильтра:

-

- - - - - - - - - - - - - - - -
ПостояннаяОписание
achievement_filter_friends_only Получайте только оценки игроков-друзей.
achievement_filter_all_players Получите все результаты для всех игроков.
-

-

-

Синтаксис:

-

achievement_load_leaderboard(ident, minindex, maxindex, filter)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
identУникальный идентификатор таблицы лидеров, отображаемый на приборной панели разработчика.
minindexНачальное значение индекса для получения данных таблицы лидеров.
maxindexМаксимальное значение индекса для получения данных таблицы лидеров.
filterСледует ли отфильтровать результаты для тех, кто находится в списке ваших друзей, или для всех игроков (см. описание ниже).
-

-

Возвращается:

-

N/A

-

-

Расширенный пример:

-

Следующий код, вероятно, будет вызван после того, как игрок войдет в свою игровую учетную запись, используя achievement_login() для получения списка всех позиций друзей в таблице лидеров в игре на Android - или iOS:

-

if os_type == os_ios
    { -
    achievement_load_leaderboard("CgkIs9_51u0PEAIQBw", 1, 100, achievement_filter_friends_only);
    } -

-

Это отправит запрос на получение информации о данной таблице лидеров и сгенерирует асинхронный обратный вызов со специальной картой async_load DS, содержащей следующие данные:

-

var ident = ds_map_find_value(async_load, "id");
if ident == achievement_leaderboard_info
    { -
    var lbid = ds_map_find_value(async_load,"leaderboardid");
    if lbid == "CgkIs9_51u0PEAIQBw" || lbid == "leaderboard1id"
        { -
        global.numentries = ds_map_find_value(async_load,"numentries");
        for(var i = 0; i < numentries; i++;)
            { -
            global.playername[i] = ds_map_find_value(async_load, "Player" + string(i));
            global.playerid[i] = ds_map_find_value(async_load, "Playerid" + string(i));
            global.playerrank[i] = - ds_map_find_value(async_load, "Rank" + string(i));
            global.playerscore[i] = ds_map_find_value(async_load, "Score" + string(i));
            achievement_get_pic(global.playerid[i]); -
            } -
        } -
    } -

-

Приведенный выше код проверяет возвращаемую DS Map в асинхронном событии Social и, если ее "id" совпадает с проверяемой константой, он затем проверяет, что отправляемая таблица лидеров соответствует исходному вызову функции, прежде чем - перебора карты и хранения всех различных значений в нескольких массивах. Он также запрашивает изображение для каждой из записей в карте (см. achievement_get_pic()).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_load_progress.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_load_progress.htm index f2042b08c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_load_progress.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_load_progress.htm @@ -1,70 +0,0 @@ - - - - - - достижение_загрузки_прогресса - - - - - - - - - - -

достижение_загрузки_прогресса

-

Эта функция отправит запрос на сервер для получения информации обо всех доступных достижениях. Она вызовет обратный вызов Social Asynchronous Event, который содержит - async_load карту, заполненную соответствующими парами ключ/значение. Ключ id этой карты DS используется для идентификации правильного обратного вызова (может быть - может быть более одной триггерной функции для любого данного асинхронного события), и будет сопряжен с константой achievement_achievement_info, а также рядом других пар ключ/значение для каждого игрока. Точное содержимое карты - показано ниже:

-

ПРИМЕЧАНИЕ: Эта функция предназначена только для iOS.

-
    -
  • "id" - Для этой функции это должно быть achievement_achievement_info.
  • -
  • "numentries" - Количество достижений в списке.
  • -
  • "AchN" - Название достижения, где "N" - целочисленное значение, соответствующее его месту в списке достижений.
  • -
  • "AchCompN" - Насколько полно выполнено достижение "N" в процентах от 0 до 100 (строка).
  • -
-

-

Синтаксис:

-

achievement_load_progress()

-

-

Возвращается:

-

N/A

-

-

Расширенный пример:

-

Следующий код запрашивает прогресс достижения, когда пользователь находится на устройстве iOS:

-

if os_type == os_ios
    { -
    achievement_load_progress(); -
    } -

-

Это отправит запрос на получение информации о достижениях и сгенерирует асинхронный обратный вызов со специальной картой async_load DS, содержащей следующие данные:

-

var ident = ds_map_find_value(async_load, "id");
if ident == achievement_achievement_info
    { -
    var numentries = ds_map_find_value(async_load, "numentries");
    for(var i = 0; i < numentries; i++;)
        { -
        ach_id[i] = ds_map_find_value(async_load, "Ach" + string(i));
        comp[i] = ds_map_find_value(async_load, "AchComp" + string(i));
        } -
    } -

-

Приведенный выше код проверяет возвращенную DS Map в асинхронном событии Social и, если ее "id" совпадает с проверяемой константой, перебирает записи в карте для каждого из достижений и сохраняет их название - и процент выполнения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_login.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_login.htm index 5dd3387ae..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_login.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_login.htm @@ -1,69 +0,0 @@ - - - - - - достижение_логин - - - - - - - - - - -

достижение_логин

-

Эта функция регистрирует пользователя в соответствующем сервисе таблиц лидеров и достижений. Если сервис недоступен, пользователь входит в "притворный" игровой центр, и все достижения и баллы сохраняются на устройстве, чтобы, когда - когда будет доступен настоящий сервис, эти данные можно будет загрузить. Функция вызовет обратный вызов Social Asynchronous Event, который содержит async_load карту, заполненную соответствующими парами ключ/значение. Ключ id этой карты DS Map используется для идентификации правильного обратного вызова (для любого асинхронного события может быть более одной функции запуска), и он будет сопряжен с константой achievement_our_info, а также рядом других пар ключ/значение для каждого вызова. Точное содержимое карты показано ниже:

-
    -
  • "id" - Для данной функции это должно быть achievement_our_info
  • -
  • "name" - Имя пользователя, который в данный момент вошел в систему.
  • -
  • "playerid" - Уникальный идентификатор игрока для пользователя, который в данный момент вошел в систему.
  • -
-

-

Синтаксис:

-

achievement_login()

-

-

Возвращается:

-

N/A

-

-

Расширенный пример:

-

Следующий код, вероятно, будет вызываться в самом начале игры или из специального объекта-кнопки, который вы разместили в комнате, и будет запрашивать, чтобы игрок вошел в свою учетную запись Google Game Services или Apple Game center:

-

achievement_login();

-

Это отправит запрос на получение текущей информации об игроке и сгенерирует асинхронный обратный вызов со специальной картой async_load DS, содержащей следующие данные:

-

var ident = ds_map_find_value(async_load, "id");
if ident == achievement_our_info
    { -
    var name = ds_map_find_value(async_load, "name" );
    var playerid = ds_map_find_value(async_load, "playerid" );
    global.OurName = name;
    global.OurId = playerid;
    if os_type == os_android
        { -
        achievement_load_leaderboard("CgkIs9_51u0PEAIQBw", 1, 100, achievement_filter_friends_only);
        } -
    else -
        { -
        achievement_load_leaderboard("leaderboard1id", 1, 100, achievement_filter_friends_only);
        } -
    achievement_get_challenges(); -
    achievement_load_friends(); -
    achievement_load_progress(); -
    } -

-

Приведенный выше код проверяет возвращенную DS Map в социальном асинхронном событии, и если ее "id" совпадает с проверяемой константой, то она проходит по карте, сохраняя все различные значения в переменных, прежде чем вызвать остальные функции для подготовки списков лидеров. - функций для подготовки таблиц лидеров, вызовов и списков друзей.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_login_status.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_login_status.htm index dddd0ccd5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_login_status.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_login_status.htm @@ -1,52 +0,0 @@ - - - - - - достижение_логин_статус - - - - - - - - - - -

достижение_логин_статус

-

В настоящее время эта функция полезна только для Google Play на платформе Android. Она проверяет, вошел ли пользователь уже в службы Google, в этом случае возвращается true, если нет - false. Если возвращается - true, то нет необходимости вызывать achievement_login() функцию.

-

-

Синтаксис:

-

achievement_login_status();

-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !achievement_login_status()
    { -
    achievement_login(); -
    } -

-

Приведенный выше код позволит вам войти в выбранный сервис таблиц лидеров и достижений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_logout.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_logout.htm index 892cc4b39..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_logout.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_logout.htm @@ -1,48 +0,0 @@ - - - - - - achievement_logout - - - - - - - - - - -

achievement_logout

-

Эта функция выводит пользователя из выбранного сервиса таблиц лидеров и достижений. Это остановит запись всех дальнейших достижений и оценок.

-

-

Синтаксис:

-

achievement_logout()

-

-

Возвращается:

-

N/A

-

-

Пример:

-

achievement_logout();

-

Приведенный выше код выведет вас из выбранного сервиса таблиц лидеров и достижений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_post.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_post.htm index 375b8eadc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_post.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_post.htm @@ -1,72 +0,0 @@ - - - - - - достижение_поста - - - - - - - - - - -

достижение_поста

-

Вы можете использовать эту функцию для отправки ваших достижений в выбранный сервис таблиц лидеров и достижений. На Android вам понадобится ID достижения в виде строки (это уникальный ID достижения, который был присвоен при установке достижения), - в то время как на всех других платформах вы вводите название достижения в виде строки, а затем указываете процент, который вы выполнили для получения достижения (0 - нет, 100 - выполнено). Функция вызовет социальное асинхронное событие, в котором возвращаемая async_load DS map будут следующие пары ключ/значение:

-
    -
  • "type" - Это тип события, которое было инициировано, для данной функции это будет строка "achievement_post_result".
  • -
  • "id" - Это идентификатор события, и для этой функции он возвращает константу GML GooglePlayServices_EVENT_ID_POST_ACHIEVEMENT.
  • -
  • "achievement_id" - Это уникальный идентификатор достижения, которое было обновлено.
  • -
  • "status" - Значение будет равно 1, если достижение было обновлено успешно, или 0, если запрос не был выполнен.
  • -
-

-

Синтаксис:

-

achievement_post(achievement, percent)

- - - - - - - - - - - - - - - -
АргументОписание
achievementИмя/идентификатор достижения.
percentПроцент выполнения достижения.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if achievement_available()
    {
    achievement_post(global.Achievement[0], 100);
} -

-

Приведенный выше код проверяет, доступен ли выбранный сервис таблиц лидеров и достижений, и если да, то публикует достижение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_post_score.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_post_score.htm index 69c9c4c2d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_post_score.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_post_score.htm @@ -1,86 +0,0 @@ - - - - - - оценка_достижения_поста - - - - - - - - - - -

оценка_достижения_поста

-

Вы можете использовать эту функцию для отправки своего результата в выбранный сервис таблиц лидеров и достижений. На Android вы отправляете ID таблицы результатов в виде строки (это уникальный ID таблицы лидеров, который был присвоен при настройке таблицы лидеров), в то время как на - на всех других платформах вы передаете определенное название таблицы лидеров в виде строки, а затем фактическое значение результата. Функция вызовет социальное асинхронное событие, в котором возвращаемая async_load DS map будут следующие пары ключ/значение:

-
    -
  • "type" - Это тип события, которое было запущено, для данной функции это будет строка "achievement_post_score_result".
  • -
  • "id" - Это идентификатор события, и для этой функции он возвращает константу GML GooglePlayServices_EVENT_ID_POST_SCORE.
  • -
  • "leaderboard_id" - Это уникальный идентификатор обновленной доски лидеров.
  • -
  • "status" - Значение будет равно 1, если баллы были обновлены успешно, или 0, если запрос не был выполнен.
  • -
  • "daily_new_best" - Будет равно 1, если присланный результат был лучшим для пользователя за последний день, или 0 в противном случае.
  • -
  • "daily_best" - Здесь будет храниться лучший результат пользователя за последний день игры.
  • -
  • "weekly_new_best" - Значение будет равно 1, если представленный результат был лучшим для пользователя за последнюю неделю, и 0 в противном случае.
  • -
  • "weekly_best" - Здесь хранится лучший результат пользователя за последнюю неделю.
  • -
  • "all_time_new_best" - Значение будет равно 1, если присланная оценка была лучшей за все время, или 0 в противном случае.
  • -
  • "all_time_best" - Здесь хранится лучший результат пользователя за все время.
  • -
-

-

Синтаксис:

-

achievement_post_score(leaderboard, score)

- - - - - - - - - - - - - - - -
АргументОписание
leaderboardНазвание/идентификатор таблицы лидеров.
scoreСчет, который будет отправлен.
-

-

Возвращается:

-

N/A

-

-

Расширенный пример:

-

if achievement_available()
    {
    achievement_post_score(global.LeaderboardID, 1000);
    }

-

Приведенный выше код проверяет, доступен ли выбранный сервис таблиц лидеров и достижений, и если да, то публикует результат в таблице результатов под названием "Leaderboard". Это вызовет событие Social Async Event, которое можно разобрать следующим образом:

-

if async_load[? "id"] == GooglePlayServices_EVENT_ID_POST_SCORE
    { -
    if async_load[? "type"] == "achievement_post_score_result"
        { -
        if async_load[? "status"] == 1
            { -
            global.Best_Day = async_load[? "daily_best"];
            global.Best_Week = async_load[? "weekly_best"];
            global.Best = async_load[? "all_time_best"];
            } -
        } -
    } -

-

Приведенный выше код проверяет карту DS async_load на наличие ключей "id" и "type", соответствующих этой функции, а затем проверяет статус события. Если статус равен 1, то некоторые значения из карты DS сохраняются в глобальных - переменные.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_reset.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_reset.htm index c75233296..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_reset.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_reset.htm @@ -1,49 +0,0 @@ - - - - - - сброс_достижений - - - - - - - - - - -

сброс_достижений

-

Эта функция вернет все достижения к их начальным значениям для данной игры. Эта функция предоставляется в качестве отладочной функции, и не рекомендуется разрешать конечному пользователю делать это в своих играх.

-

-

Синтаксис:

-

achievement_reset()

-

-

Возвращается:

-

N/A

-

-

Пример:

-

if debug_mode
    { -
    if keyboard_check_pressed(vk_space)
        {
        achievement_reset()
        }
    }

-

Приведенный выше код проверяет, находится ли игра в режиме отладки, и если да, то нажатие "пробела" сбросит все достижения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_send_challenge.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_send_challenge.htm index a957e6e12..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_send_challenge.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_send_challenge.htm @@ -1,120 +0,0 @@ - - - - - - достижение_отправить_задачу - - - - - - - - - - -

достижение_отправить_задачу

-

Эта функция отправит вызов по сети выбранному игроку. Вы можете получить идентификатор игрока, используя achievement_load_friends() или achievement_load_leaderboard() а также необходимо указать challengeid - уникальное значение, присвоенное задаче при ее создании на панели iTunes Connect или Google Play. Вы также должны указать счет и короткое текстовое сообщение, а также установить - тип задачи. Это может быть одна из следующих констант:

-

- - - - - - - - - - - - - - - -
ПостояннаяОписание
achievement_type_score_challenge Задача, основанная на значении очков.
achievement_type_achievement_challenge Вызов, основанный на достижении.
-

-

Эта функция вызовет обратный вызов Social Asynchronous Event для игрока, который должен получить вызов, и в этом событии у вас будет карта DS, на которую ссылаются - в переменной async_load. Ключ id этой DS-карты используется для идентификации правильного обратного вызова (для любого асинхронного события может быть более одной функции запуска) и будет сопряжен с константой achievement_challenge_received, а также рядом других пар ключ/значение для каждого игрока. Точное содержимое карты показано ниже:

-

ПРИМЕЧАНИЕ: пользователь также может получать тостовые уведомления о полученных вызовах, но это будет зависеть от значений, которые вы выбрали с помощью функции achievement_show_challenge_notifications().

-
    -
  • "id" - Для этой функции это должно быть achievement_leaderboard_info
  • -
  • "playerid" - Идентификатор игрока для вызова.
  • -
  • "issuerid" - Идентификатор эмитента для вызова.
  • -
  • "state" - Состояние вызова, которое будет иметь значение 0 - 3 (в виде строки) для недействительного, ожидающего, завершенного или отклоненного.
  • -
  • "message" - Текстовое сообщение для вызова.
  • -
  • "completeddate" - Дата завершения задачи.
  • -
  • "issueddate" - Дата выдачи вызова.
  • -
  • "type" - Тип брошенного вызова. Может быть одной из двух констант, перечисленных выше
  • -
  • "identifier" - Идентификационная строка для вызова, установленная на приборной панели провайдера.
  • -
  • "score" - Оценка, связанная с вызовом (если применимо).
  • -
-

-

Синтаксис:

-

achievement_send_challenge(playerid, challengeid, score, type, message)

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
playeridУникальный идентификатор игрока, которому необходимо бросить вызов.
challengeidУникальный идентификатор вызова (как указано на приборной панели провайдера).
scoreСчет для победы.
typeтип выдаваемого вызова - одна из двух констант, приведенных ниже.
messageСообщение, которое нужно прикрепить к вызову.
-

-

Возвращается:

-

N/A

-

-

Расширенный пример:

-

Для отправки вызова по сети вам потребуется следующий код:

-

achievement_send_challenge(global.playerid[0], global.challengeid[0], score, achievement_type_score_challenge, "Beat that sucker!");

-

Этот запрос вызовет социальное событие в вашей игре для игрока, на которого был направлен вызов, и с этим можно поступить следующим образом:

-

var ident = ds_map_find_value(async_load, "id");
if ident == achievement_challenge_received
    { -
    player_id = ds_map_find_value(async_load, "playerid");
    issuer_id = ds_map_find_value(async_load, "issuerid");
    state = ds_map_find_value(async_load, "state");
    message = ds_map_find_value(async_load, - "message");
    date_completed = ds_map_find_value(async_load, "completeddate");
    date_issued = ds_map_find_value(async_load, "issueddate");
    ach_type = ds_map_find_value(async_load, "type");
    ach_ident = ds_map_find_value(async_load, "identifier");
    ach_score = ds_map_find_value(async_load, "score");
    } -

-

Приведенный выше код проверяет возвращенную DS Map в Social Asynchronous Event и, если ее "id" совпадает с проверяемой константой, то извлекает соответствующие значения для каждого из ключей в карте и сохраняет их в переменных - для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_show_achievements.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_show_achievements.htm index 3ef9fe119..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_show_achievements.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_show_achievements.htm @@ -1,52 +0,0 @@ - - - - - - достижение_показать_достижения - - - - - - - - - - -

достижение_показать_достижения

-

Эта функция откроет страницу достижений для выбранной платформы. Обратите внимание, что это асинхронная функция, то есть ваша игра будет продолжать работать в фоновом режиме, пока отображается страница достижений. Поэтому вам следует быть - осторожно использовать эту функцию и обязательно ставить игру на паузу или разрешать ее показ только в тех местах вашей игры, где она не будет мешать игровому процессу.

-

-

Синтаксис:

-

achievement_show_achievements()

-

-

Возвращается:

-

N/A

-

-

Пример:

-

if achievement_available()
    { -
    global.Pause = true;
    instance_create_layer(0, 0, "Controllers", obj_Pause);
    achievement_show_achievements(); -
    } -

-

Приведенный выше код проверяет, доступен ли выбранный сервис лидербордов и достижений, и если да, то устанавливает глобальную переменную и создает экземпляр контроллера "pause" перед вызовом функции для показа достижений на экране.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_show_challenge_notifications.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_show_challenge_notifications.htm index a90ee56bf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_show_challenge_notifications.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_show_challenge_notifications.htm @@ -1,72 +0,0 @@ - - - - - - достижения_показывать_задачи_уведомления - - - - - - - - - - -

достижения_показывать_задачи_уведомления

-

С помощью этой функции вы можете показывать или подавлять различные всплывающие уведомления "тостов", связанные с вызовами. При установке аргументов в true эти сообщения будут появляться, информируя игрока о любых локальных или удаленных вызовах. - а также о тех вызовах, которые были завершены, в то время как при установке значения false эти уведомления будут подавлены.

-

-

Синтаксис:

-

achievement_show_challenge_notifications(receive, local, remote)

- - - - - - - - - - - - - - - - - - - -
АргументОписание
receiveПоказывать полученные вызовы во всплывающем окне(true) или нет(false). -
localПоказывать завершенные локальные задачи во всплывающем окне(true) или нет(false). -
remoteПоказывать завершенные удаленные вызовы во всплывающем окне(true) или нет(false). -
-

-

Возвращается:

-

N/A

-

-

Пример:

-

achievement_show_challenge_notifications(true, false, false);

-

Приведенный выше код настроит отображение уведомлений о тостах только для полученных вызовов.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_show_leaderboards.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_show_leaderboards.htm index 10e73a89c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_show_leaderboards.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Achievements_And_Leaderboards/achievement_show_leaderboards.htm @@ -1,52 +0,0 @@ - - - - - - доски достижений_показывать_лидеры - - - - - - - - - - -

доски достижений_показывать_лидеры

-

Эта функция откроет страницу таблицы лидеров для выбранной платформы. Обратите внимание, что это асинхронная функция, т.е. ваша игра будет продолжать работать в фоновом режиме, пока отображается страница таблицы лидеров. Поэтому вам следует быть - осторожно использовать эту функцию и обязательно ставить игру на паузу или разрешать ее показ только в тех местах вашей игры, где она не будет мешать игровому процессу.

-

-

Синтаксис:

-

achievement_show_leaderboards()

-

-

Возвращается:

-

N/A

-

-

Пример:

-

if achievement_available()
    { -
    global.Pause = true;
    instance_create_layer(0, 0, "Controllers", obj_Pause);
    achievement_show_leaderboards(); -
    } -

-

Приведенный выше код проверяет, доступен ли выбранный сервис таблиц лидеров и достижений, и если да, то устанавливает глобальную переменную и создает экземпляр контроллера "pause" перед вызовом функции для отображения таблиц лидеров на экране.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Asynchronous_Functions.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Asynchronous_Functions.htm index 315d95f22..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Asynchronous_Functions.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Asynchronous_Functions.htm @@ -1,62 +0,0 @@ - - - - - - Асинхронные функции - - - - - - - - - - -

Асинхронные функции

-

В контексте GameMaker асинхронная функция - это функция, которая отправляет данные на веб-сервер, или запрашивает пользовательский ввод, или даже передает данные, при этом позволяя GameMaker продолжать работу, не блокируя выполнение игры. При получении обратного вызова информации запускается специальное событие Async Event, которое, в свою очередь, позволяет любому экземпляру с назначенным ему событием Async Event выполнять дальнейшие функции (хотя это и не обязательно). Таким образом, по сути, это способ связи с каким-либо внешним ресурсом (сервером, пользователем или устройством) без остановки игры или проекта в ожидании ответа.

-

Почему это важно? Ну, поскольку это позволяет GameMaker продолжать работу во время отправки или получения данных, а это значит, что вы можете делать множество вещей, не блокируя игровой цикл, например:

-
    -
  • передавать данные с устройства в игру, не дожидаясь, пока все загрузится
  • -
  • иметь события обратного вызова, чтобы выполнять действия только после получения нужной информации
  • -
  • взаимодействовать и обмениваться данными с веб-сервером
  • -
-

Благодаря этому все функционирует гораздо более плавно и ненавязчиво. Следует отметить, что асинхронные события будут запускаться для всех экземпляров, у которых они есть, поэтому вы можете использовать асинхронную функцию в одном экземпляре, а асинхронное событие, обрабатывающее ответ, в другом, или даже в разных других. Более подробную информацию о том, как работает асинхронное событие, вы можете найти здесь - Асинхронные события.

-

Различные типы асинхронных функций перечислены в разделах ниже:

- -

-

Есть также ряд функций Buffer, которые можно использовать для асинхронной загрузки и сохранения буферов, что необходимо при работе на различных консолях, которые поддерживает GameMaker, хотя их можно использовать и на других целевых платформах:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Cloud_Saving/Cloud_Saving.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Cloud_Saving/Cloud_Saving.htm index 34c120c56..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Cloud_Saving/Cloud_Saving.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Cloud_Saving/Cloud_Saving.htm @@ -1,45 +0,0 @@ - - - - - - Облачная экономия - - - - - - - - - - -

Облачная экономия

-

При создании игр часто возникает необходимость хранить информацию о состоянии игры в каком-либо файле, но хранение этой информации на устройстве не всегда является лучшим вариантом, поскольку, если игрок удалит игру, а затем установит ее заново, эта информация может быть утеряна. Чтобы предотвратить это, можно воспользоваться различными облачными сервисами, которые предлагают хранение данных через интернет для извлечения и изменения в любое время. Следует отметить, что эта функция ограничена одним единственным "блобом" данных на игру, поэтому каждый раз, когда вы отправляете новое сохранение в облачный сервис, будь то строка или файл, оно будет перезаписывать все ранее сохраненные данные.

-

ПРИМЕЧАНИЕ В настоящее время эти функции используются только для Android, и вам необходимо установить флажок Enable Google Cloud Saving в разделе Social на странице Android Game Options. В результате вам будет предложено загрузить расширение Google Services, которое необходимо для работы облачного сохранения на сайте Android. Дополнительную информацию об облачном сохранении можно найти в следующей статье службы поддержки: Облачное сохранение в Android

-

GameMaker поддерживает это с помощью нескольких простых функций, которые работают в сочетании с асинхронным облачным событием. Эти функции описаны на следующих страницах:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Cloud_Saving/cloud_file_save.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Cloud_Saving/cloud_file_save.htm index 7cddd6d6a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Cloud_Saving/cloud_file_save.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Cloud_Saving/cloud_file_save.htm @@ -1,73 +0,0 @@ - - - - - - cloud_file_save - - - - - - - - - - -

cloud_file_save

-

Эта функция фиксирует файл в выбранной облачной службе для хранения. Функция возвращает уникальное значение id, которое затем должно быть использовано в соответствующем асинхронном событии для идентификации карты DS, возвращаемой в качестве "обратного вызова" из облачного сервиса. Файл должен содержать всю информацию, которую вам нужно сохранить для вашей игры, поскольку вы можете сохранить в облаке только один единственный "сгусток данных", и повторный запуск этой функции перезапишет все ранее сохраненные значения (как и использование функции cloud_string_save() функция). Описание должно представлять собой короткую строку информации, описывающую сохранение, например: "Level2, Stage2".

-

Для получения дополнительной информации о возвращаемых асинхронных данных, пожалуйста, обратитесь к функции cloud_synchronise().

-

-

Синтаксис:

-

cloud_file_save(file, description);

- - - - - - - - - - - - - - - -
АргументТипОписание
stringThe file to be uploaded (as a string).
descriptionA brief description of the data being stored.
-

-

Возвращается:

-

Async Request ID

-

-

Пример:

-

var t_str = "";
- for (var i = 0; i < 10; i++)
- {
-     t_str += string(global.Highscore[i]) + "|"
- }
- var file = file_text_open_write("Highscores.txt");
- file_text_write_string(file, t_str);
- file_text_close(file);
- save_check = cloud_file_save("Highscores.txt", "Current Highscores");

-

Приведенный выше код создает строку из значений, хранящихся в глобальном массиве "Highscores", а затем записывает эту строку в файл для локального хранения. Затем файл отправляется в облачный сервис для хранения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Cloud_Saving/cloud_string_save.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Cloud_Saving/cloud_string_save.htm index c8c8cc6ba..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Cloud_Saving/cloud_string_save.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Cloud_Saving/cloud_string_save.htm @@ -1,74 +0,0 @@ - - - - - - cloud_string_save - - - - - - - - - - - -

cloud_string_save

-

Эта функция фиксирует строку в выбранном облачном сервисе для хранения. Функция возвращает уникальное значение id, которое затем должно быть использовано в соответствующем асинхронном событии для идентификации карты DS, возвращаемой в качестве "обратного вызова" из облачного сервиса. Строка должна содержать всю информацию, которую вам нужно сохранить для вашей игры, поскольку вы можете сохранить в облаке только один единственный "блок данных", и повторный запуск этой функции перезапишет все ранее сохраненные значения (как и использование функции cloud_file_save() функция). Описание должно быть короткой строкой информации, описывающей сохранение, например: "Level2, Stage2".

-

Для получения дополнительной информации о возвращаемых асинхронных данных, пожалуйста, обратитесь к функции cloud_synchronise().

-

-

Синтаксис:

-

cloud_string_save(string, description);

- - - - - - - - - - - - - - - -
АргументТипОписание
stringThe data string to be uploaded.
descriptionA brief description of the data being stored.
-

-

Возвращается:

-

Async Request ID

-

-

Пример:

-

var t_str = "";
- for (var i = 0; i < 10; i++)
- {
-     t_str += string(global.Highscore[i]) + "|"
- }
- save_check = cloud_string_save(t_str, "Current Highscores");
- var file = file_text_open_write("Highscores.txt");
- file_text_write_string(file, t_str);
- file_text_close(file);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Cloud_Saving/cloud_synchronise.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Cloud_Saving/cloud_synchronise.htm index 05e6facaa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Cloud_Saving/cloud_synchronise.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Cloud_Saving/cloud_synchronise.htm @@ -1,115 +0,0 @@ - - - - - - cloud_synchronise - - - - - - - - - - - -

cloud_synchronise

-

Эта функция обычно вызывается в начале новой игры и используется для получения текущего состояния облачного сервиса при запуске игры. Функция возвращает уникальное значение id, которое затем используется в событии Asynchronous Cloud Event для получения соответствующей информации из создаваемой карты DS.

-

Эта функция отправит в облако данные, которые затем вызовут соответствующее асинхронное событие. В этом событии вы можете проверить возвращенную async_load DS map на наличие следующих значений:

-
    -
  • "status": Здесь указывается код статуса, где отрицательное значение означает ошибку, описание которой будет содержаться в строке "errorString". Значение 0 (или положительное значение) означает успех (точные значения см. ниже), а "resultString" будет содержать возвращаемые данные или сообщение об успехе.
  • -
  • "id": id, который был возвращен из вызванной функции. Если вы отправляете серию запросов cloud_, вам необходимо знать, на какой из них вы получаете ответ, поэтому вы будете использовать это значение для сравнения со значением, которое вы сохранили при первоначальной отправке запроса, чтобы найти нужный запрос.
  • -
  • "description": Описание последнего загруженного файла.
  • -
  • "resultString": Здесь хранится строка, которая является блобом данных, возвращенным из облака.
  • -
  • "errorString": возвращает строку ошибки для любой ошибки.
  • -
-

Точное значение возвращаемой записи карты "статус" объясняется в следующей таблице:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Статус ЗначениеerrorString / resultStringОписание
-1errorString = "Не вошел в <SERVICE>"You have not successfully logged in to the given Cloud Service
0resultString = восстановленные данныеNew game data downloaded from the cloud (following a cloud_synchronise call)
1resultString = "AlreadySynchronized"No new data since you last called cloud_synchronise
2resultString = "ConflictDeferral"A conflict was encountered, but the gamer chose to ignore it
3resultString = "GameUploadSuccess"data from cloud_string_save() или cloud_file_save() был успешно загружен в облако
-nerrorString = Описание ошибкиAny other negative number means a synchronisation failure
-

-

Синтаксис:

-

cloud_synchronise();

-

-

Возвращается:

-

Async Request ID

-

-

Расширенный пример:

-

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

-

cloud_check = cloud_synchronise();

-

Затем вы захотите проверить возвращаемый DS Map в асинхронном событии Cloud Event, чтобы получить статус и возвращаемую строку, если она есть, с помощью чего-то вроде следующего кода:

-

if ds_map_find_value(async_load, "id") == cloud_check
- {
-     if (ds_map_find_value(async_load, "status") < 0)
-     {
-         show_message_async("Cloud Services not available. Please check connectivity.");
-     }
-     else
-     {
-         if (ds_map_find_value(async_load, "status") == 0)
-         {
-             var file = file_text_open_write("Save.txt");
-             file_text_write_string(file, ds_map_find_value(async_load, "resultString"));
-             file_text_close(file);
-         }
-     }
- }

-

Приведенный выше код проверяет правильность вызова асинхронной функции, затем получает статус возвращаемой карты облака DS. Если статус отрицательный, значит, что-то пошло не так, и пользователю сообщается об этом, в противном случае код продолжает работу, получает синхронизированные данные и записывает их в текстовый файл для последующего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/Dialog.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/Dialog.htm index 7cbbdd41c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/Dialog.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/Dialog.htm @@ -1,48 +0,0 @@ - - - - - - Диалог - - - - - - - - - - -

Диалог

-

Большинству современных компьютеров и мобильных устройств не нравится, когда игра останавливается при отображении диалогового окна. Они склонны интерпретировать это как остановку бегущей строки игры, и могут посчитать это ошибкой и преждевременно закрыть приложение. Для предотвращения этого в GameMaker предусмотрены асинхронные диалоговые функции, которые позволяют запрашивать определенные формы обратной связи или ввода данных от пользователя, но без блокировки программы запуска игры в любой момент, то есть при их вызове игра будет работать в обычном фоновом режиме, пока пользователь отвечает в показанном диалоговом окне. Как только пользователь ответит, будет вызвано асинхронное событие Dialog, чтобы вы могли обработать результаты.

-

ПРИМЕЧАНИЕ: За исключением shop_leave_rating()эти функции предназначены только для отладки и тестированияи не должны использоваться в выпущенных играх. Для этих целей вы должны создать пользовательский интерфейс для получения ввода от игроков, чтобы иметь полный контроль над тем, как выглядят и ведут себя диалоги.

-

Ниже приведен список всех доступных функций асинхронного диалога:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/get_integer_async.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/get_integer_async.htm index d3283f8f1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/get_integer_async.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/get_integer_async.htm @@ -1,80 +0,0 @@ - - - - - - get_integer_async - - - - - - - - - - - -

get_integer_async

-

Эта функция открывает окно и отображает сообщение, а также место для ввода пользователем значения (которое для начала будет содержать значение по умолчанию). Это асинхронная функция, поэтому GameMaker не блокирует устройство, на котором она выполняется, в ожидании ответа, а продолжает выполнять события в обычном режиме. После того как пользователь набрал свою строку и нажал кнопку "Ок", запускается асинхронное событие Диалог срабатывает асинхронное событие, которое только на время этого события будет иметь карту DS, хранящуюся в переменной async_load.

-

Эта карта будет содержать три ключа: "id", "status" и "value". "id" - это значение, которое было возвращено функцией при вызове, "статус" будет либо true для нажатия кнопки "Ок", либо false, если сообщение было отменено (где это применимо, поскольку не все целевые платформы позволяют отменять сообщения). Наконец, "value" вернет целое число, которое пользователь ввел как строку (пустая строка "" будет возвращена, если ввод не был произведен).

-

ПРИМЕЧАНИЕ Эта функция предназначена только для отладки и тестированияи не должна использоваться в выпущенных играх. Для этих целей вы должны создать пользовательский интерфейс для получения ввода от игроков, чтобы иметь полный контроль над тем, как выглядят и ведут себя диалоги.

-

-

Синтаксис:

-

get_integer_async(string, default);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
stringСтрокаThe message to show in the dialog.
defaultРеальноThe default value.
-

-

Возвращается:

-

Async Request ID

-

-

Расширенный пример:

-

Событие нажатия левой кнопки мыши (например) объекта, который показывает сообщение, будет иметь следующий код:

-

msg = get_integer_async("How old are you?", 0);

-

Выше будет показано сообщение, требующее, чтобы пользователь ввел строку и нажал кнопку "Ок". Идентификатор функции хранится в переменной "msg" и будет использован в асинхронном событии Dialogs, как показано ниже:

-

var i_d = ds_map_find_value(async_load, "id");
- if (i_d == msg)
- {
-     if (ds_map_find_value(async_load, "status"))
-     {
-         global.age = ds_map_find_value(async_load, "value");
-     }
- }

-

Приведенный выше код сверяет ключ "id" возвращаемого DS Map со значением, хранящимся в переменной "msg". Если они совпадают, то проверяется, было ли нажато "Okay" (а не закрыто/отменено окно), и если возвращается true, то устанавливается глобальная переменная из возвращаемого целого числа.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/get_login_async.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/get_login_async.htm index 2cfc8cd45..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/get_login_async.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/get_login_async.htm @@ -1,79 +0,0 @@ - - - - - - get_login_async - - - - - - - - - - -

get_login_async

-

Эта функция открывает окно, в котором пользователю предлагается ввести имя пользователя и пароль. Эти аргументы могут быть заданы как пустая строка или вы можете сохранить ранее введенные значения, чтобы использовать их по своему усмотрению. Это асинхронная функция, поэтому GameMaker не блокирует устройство, на котором она выполняется, в ожидании ответа, а продолжает выполнять события в обычном режиме. После того как пользователь введет данные и нажмет кнопку "Ок", сработает асинхронное событие User Interaction, которое только на время этого события будет иметь карту DS, хранящуюся в переменной async_load.

-

Эта карта будет содержать два ключа, "username" и "password", с соответствующим вводом пользователя, хранящимся в каждом из них. Поскольку была создана карта DS Map, она может быть использована, например, функцией json_encode() функции для отправки на сервер или записи в файл на выбранном устройстве.

-

Эта функция вернет индексный номер для сработавшего асинхронного события, который затем можно проверить в соответствующем событии, чтобы вы могли "нацелиться" на конкретные данные в случае, если вы ожидаете срабатывания более одного асинхронного события (возможно, от какой-то другой функции).

-

ПРИМЕЧАНИЕ Эта функция предназначена только для отладки и тестированияи не должна использоваться в выпущенных играх. Для этих целей вы должны создать пользовательский интерфейс для получения ввода от игроков, чтобы иметь полный контроль над тем, как выглядят и ведут себя диалоги.

-

-

Синтаксис:

-

get_login_async(name, password);

- - - - - - - - - - - - - - - -
АргументТипОписание
usernameThe default user name
passwordThe default password
-

-

Возвращается:

-

Async Request ID

-

-

Расширенный пример:

-

Событие create (например) объекта, контролирующего вход нашего пользователя, будет иметь следующий код:

-

ini_open("Profile.ini");
- u = ini_read_string("User", "0", "");
- p = ini_read_string("User", "1", "");
- ini_close();
- login = get_login_async(u,p);

-

Приведенный выше код открывает файл ini (или создает его, если он не существует) и получает имя и пароль, хранящиеся в этом файле. Если они не существуют, то по умолчанию возвращается пустая строка (""). Эти значения затем используются в get_login_async() для запроса у пользователя имени пользователя и пароля, при этом индекс запроса хранится в переменной "login". Обратите внимание, что в ожидании, пока пользователь сообщит необходимую информацию, игра и ее события будут продолжаться в обычном режиме.

-

Теперь, когда асинхронный код запущен, нам нужно проверить возвращаемое значение в асинхронном событии для Dialogs следующим образом:

-

if ds_map_find_value(async_load, "id") == login
- {
-     u = ds_map_find_value(async_load, "username");
-     p = ds_map_find_value(async_load, "password");
- }

-

Приведенный выше код проверяет ключ "id" карты async_load DS, и если он имеет то же значение, что и переменная "login", то данные карты считываются в соответствующие переменные, которые вы можете сохранить или использовать для сверки со значениями базы данных и т.д..

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/get_string_async.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/get_string_async.htm index 7e197d1a2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/get_string_async.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/get_string_async.htm @@ -1,84 +0,0 @@ - - - - - - get_string_async - - - - - - - - - - - -

get_string_async

-

Эта функция открывает окно и отображает сообщение, а также место для ввода пользователем строки (которая будет содержать заданную по умолчанию строку для начала). Это асинхронная функция, поэтому GameMaker не блокирует устройство, на котором она выполняется, в ожидании ответа, а продолжает выполнять события в обычном режиме. Как только пользователь введет свою строку и нажмет кнопку "Ок", будет запущено асинхронное событие Dialog , которое, только на время этого события, будет иметь карту DS, хранящуюся в переменной async_load.

-

Эта карта будет содержать три ключа, "id", "status" и "result". "id" - это значение, которое было возвращено функцией при вызове, "status" будет либо true для нажатия кнопки "Ок", либо false, если сообщение было отменено (где это применимо, поскольку не все целевые платформы позволяют отменить сообщение). Наконец, "result" вернет строку, которую ввел пользователь (или пустую строку "", если она не была введена).

-

ПРИМЕЧАНИЕ Эта функция предназначена только для отладки и тестированияи не должна использоваться в выпущенных играх. Для этих целей вы должны создать пользовательский интерфейс для получения ввода от игроков, чтобы иметь полный контроль над тем, как выглядят и ведут себя диалоги.

-

-

Синтаксис:

-

get_string_async(string, default);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
stringСтрокаThe message to show in the dialog.
defaultСтрокаThe default string.
-

-

Возвращается:

-

Async Request ID

-

-

Расширенный пример:

-

-

Событие нажатия левой кнопки мыши (например) объекта, который показывает сообщение, будет иметь следующий код:

-

msg = get_string_async("What's your name?","Anon");

-

Выше будет показано сообщение, требующее, чтобы пользователь ввел строку и нажал "Ок". Идентификатор функции хранится в переменной "msg" и будет использован в асинхронном событии Dialogs, как показано ниже:

-

var i_d = ds_map_find_value(async_load, "id");
- if (i_d == msg)
- {
-     if (ds_map_find_value(async_load, "status"))
-     {
-         if (ds_map_find_value(async_load, "result") != "")
-         {
-             global.name = ds_map_find_value(async_load, "result");
-         }
-     }
- }

-

Приведенный выше код сверяет ключ "id" возвращаемого DS Map со значением, хранящимся в переменной "msg". Если они одинаковы, то проверяется, было ли нажато "Okay" (а не закрыто/отменено окно), и если возвращается true, то проверяется "результат" строки, чтобы убедиться, что не были возвращены пустые строки перед установкой глобальной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/shop_leave_rating.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/shop_leave_rating.htm index 3cf36b180..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/shop_leave_rating.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/shop_leave_rating.htm @@ -1,87 +0,0 @@ - - - - - - shop_leave_rating - - - - - - - - - - -

shop_leave_rating

-

Эта функция открывает диалог, зависящий от ОС, в котором вы можете попросить пользователя разместить оценку или комментарий к определенной странице. Вы можете определить текст, который будет отображаться в диалоге, а также текст, который вы хотите видеть на двух кнопках и URL, где должен быть размещен комментарий.

-

ПРИМЕЧАНИЕ: Эта функция предназначена только для целей Android и iOS.

-

ВАЖНО! На iOS, при использовании TestFlight, в процессе разработки будет отображаться подсказка, но вы не сможете ничего сделать. Как только ваше приложение появится в App Store, эта кнопка станет активной, и пользователю будет предоставлена возможность написать отзыв или оставить оценку. Обратите внимание, что если вы распространяете игру через TestFlight, это окно может даже не отображаться.

-

-

Синтаксис:

-

shop_leave_rating(text, yes_string, no_string, url)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
textСтрокаText that appears on the dialog.
yes_stringСтрокаText that appears on the "yes" button.
no_stringСтрокаText that appears on the "no" button.
urlСтрокаThe full URL where the comment has to be sent.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if timer <= 0
- {
-     shop_leave_rating("Thanks for playing the game! Why not leave a comment?", "Okay!", "Not Today!", "http://macsweeneygames.com/comments");
-     timer = 10000000;
- }
- else
- {
-     timer -= 1;
- }

-

Приведенный выше код попросит пользователя оставить комментарий, если переменная "timer" досчитала до 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/show_message_async.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/show_message_async.htm index eb57b7f42..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/show_message_async.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/show_message_async.htm @@ -1,75 +0,0 @@ - - - - - - show_message_async - - - - - - - - - - -

show_message_async

-

Эта функция открывает окно и показывает пользователю сообщение, которое вы задаете в функции. Это асинхронная функция, поэтому GameMaker не блокирует устройство, на котором она выполняется, в ожидании ответа, а продолжает выполнять события в обычном режиме. Как только пользователь нажимает кнопку "Ок", запускается асинхронное событие Диалог запускается событие, которое только на время этого события будет иметь ds_map, хранящийся в переменной async_load.

-

Эта карта будет содержать два ключа, "id" и "status", причем "id" будет значением, которое было возвращено функцией при вызове, а "status" будет либо true для нажатия кнопки "Ок", либо false, если сообщение было отменено (где это возможно, поскольку не все целевые платформы позволяют отменять диалоги).

-

ПРИМЕЧАНИЕ Эта функция предназначена только для отладки и тестированияи не должна использоваться в выпущенных играх. Для этих целей вы должны создать пользовательский интерфейс для получения ввода от игроков, чтобы иметь полный контроль над тем, как выглядят и ведут себя диалоги.

-

-

Синтаксис:

-

show_message_async(string);

- - - - - - - - - - - - - -
АргументТипОписание
stringСтрокаThe message to show to the user.
-

-

Возвращается:

-

Async Request ID

-

-

Расширенный пример:

-

Событие нажатия левой кнопки мыши (например) объекта, который показывает сообщение, будет иметь следующий код:

-

msg = show_message_async("You will now be taken to the store");

-

Приведенный выше пример покажет сообщение с заданной строкой. Идентификатор сообщения хранится в переменной "msg" и будет использован в асинхронном событии Dialogs, как показано ниже:

-

var i_d, stat;
- i_d = ds_map_find_value(async_load, "id");
- if (i_d == msg)
- {
-     if (ds_map_find_value(async_load, "status"))
-     {
-         url_open("https://play.google.com/store");
-     }
- }

-

Приведенный выше код сверяет ключ "id" возвращаемого DS Map со значением, хранящимся в переменной "msg". Если они совпадают, то проверяется, была ли нажата кнопка "Ок" (а не закрыто/отменено окно), и если возвращается true, то открывается url.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/show_question_async.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/show_question_async.htm index 7680ce9c5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/show_question_async.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Dialog/show_question_async.htm @@ -1,76 +0,0 @@ - - - - - - show_question_async - - - - - - - - - - -

show_question_async

-

Эта функция открывает окно и показывает пользователю вопрос, заданный в функции. Это асинхронная функция, поэтому GameMaker не блокирует устройство, на котором она выполняется, в ожидании ответа, а продолжает выполнять события в обычном режиме. Функция имеет две кнопки, которые показывают "Да" и "Нет", и как только пользователь нажимает одну из них, запускается асинхронное событие Dialog, которое, только на время этого события, будет иметь карту DS, сохраненную в переменной async_load.

-

Эта карта будет содержать два ключа, "id" и "status". "id" - это значение, которое было возвращено функцией при вызове, а "status" будет либо true, либо false для "Yes" и "No" соответственно.

-

ПРИМЕЧАНИЕ Эта функция предназначена только для отладки и тестированияи не должна использоваться в выпущенных играх. Для этих целей вы должны создать пользовательский интерфейс для получения ввода от игроков, чтобы иметь полный контроль над тем, как выглядят и ведут себя диалоги.

-

-

Синтаксис:

-

show_question_async(string);

- - - - - - - - - - - - - -
АргументТипОписание
stringСтрокаThe question to ask to the user.
-

-

Возвращается:

-

Async Request ID

-

-

Расширенный пример:

-

Событие нажатия левой кнопки мыши (например) объекта, который показывает сообщение, будет иметь следующий код:

-

msg = show_question_async("Do you want to buy some armour for " + string(armour[0, 5]) + "coins?");

-

Вышеприведенная функция покажет вопрос с заданной строкой, требуя, чтобы пользователь нажал либо "Да", либо "Нет". Идентификатор функции хранится в переменной "msg" и будет использован в событии Asynchronous Dialog, как показано ниже:

-

var i_d, stat;
- i_d = ds_map_find_value(async_load, "id");
- if (i_d == msg)
- {
-     if (ds_map_find_value(async_load, "status"))
-     {
-         coins -= armour[0, 5];
-         global.protection += armour[0, 0];
-     }
- }

-

Приведенный выше код сверяет ключ "id" возвращаемого DS Map со значением, хранящимся в переменной "msg". Если они совпадают, то проверяется, была ли нажата одна из двух кнопок, и если возвращается true, то вычитается значение из переменной и добавляется значение в глобальную переменную.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Facebook/Facebook.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Facebook/Facebook.htm index 8438ee72f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Facebook/Facebook.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Facebook/Facebook.htm @@ -1,77 +0,0 @@ - - - - - - Facebook - - - - - - - - - - -

Facebook

-

Facebook является одной из самых важных социальных сетей в Интернете, и многие игры и разработчики в настоящее время имеют свои собственные страницы для размещения игр и медиа. В GameMaker есть расширение, позволяющее подключаться к Facebook и выполнять определенные действия и задачи, которые позволяет API. Перед началом использования расширения рекомендуется посетить страницу Facebook Developers, так как твердое понимание того, как работает Facebook Graph и доступные вызовы и разрешения, необходимо для того, чтобы получить максимальную отдачу от этих функций.
-
- Вы можете узнать, как настроить и использовать расширение Facebook для всех доступных платформ по следующей ссылке: -

- -

-

Ниже перечислены устаревшие функции, которые были действительны только для устаревшего Facebook API. Поэтому вы больше не можете использовать эти функции в своих проектах, и они перечислены здесь на случай, если вы импортировали старый проект с этими функциями. Для использования текущих функций Facebook необходимо активировать Facebook API в соответствующих опциях игры для целевой платформы, в результате чего вам будет предложено загрузить и установить расширение. Расширение поставляется с "мини-руководством" формата *.pdf, объясняющим, как его использовать, а также показывающим все определения функций и примеры. Все ссылки на старые функции facebook_*() необходимо заменить (и обновить), чтобы использовать эквиваленты расширения fb_*().

-

Перечисленные ниже функции предназначены для интеграции вашей игры с Facebook:

-
    -
  • facebook_init
  • -
  • facebook_login
  • -
  • facebook_request_publish_permissions
  • -
  • facebook_request_read_permissions
  • -
  • facebook_check_permission
  • -
  • facebook_status
  • -
  • facebook_accesstoken
  • -
  • facebook_user_id
  • -
  • facebook_graph_request
  • -
  • facebook_dialog
  • -
  • facebook_send_invite
  • -
  • facebook_post_message
  • -
  • facebook_logout
  • -
  • facebook_launch_offerwall
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/HTTP.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/HTTP.htm index 710c8e4a2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/HTTP.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/HTTP.htm @@ -1,59 +0,0 @@ - - - - - - HTTP - - - - - - - - - - -

HTTP

-

В этом разделе перечислены все различные асинхронные HTTP-функции, доступные в GameMaker. Эти функции будут генерировать асинхронное HTTP-событие во всех экземплярах, в которых оно есть:

- -

-

Обратите внимание, что вышеуказанные функции http_* могут работать не так, как ожидается, из-за проблем с безопасностью междоменных соединений. Это означает, что запросы к вашему серверу или попытки загрузить ресурсы из других доменов блокируются и могут возвращать пустые результаты или 404 ошибку. Одним из способов обойти эту проблему является использование на стороне сервера PHP, который разрешает определенным доменам доступ к вашему серверу (это также способ защиты ваших ресурсов и блокировки серверов, не включенных в список разрешенных PHP).

-

Ниже приведен пример PHP-кода, который можно использовать для этого:

-

$http_origin = $_SERVER['HTTP_ORIGIN'];
- if ($http_origin == "http://127.0.0.1:51268")
- {
-     header("Access-Control-Allow-Origin: *");
- }

-

Для запросов загрузки изображений, в которых важно определить или установить их кросс-оригинальный тип, существуют следующие функции:

- -

-

В большинстве случаев эти функции не нужно использовать, но если игра хранится на защищенном сервере - где для доступа к определенным активам может потребоваться базовая аутентификация и при загрузке возникают ошибки безопасности - установка типа кросс-оригинальности для запросов изображений на "use-credentials" может оказаться необходимой (в отличие от стандартной настройки "anonymous").

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_get.htm index fba8e861d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_get.htm @@ -1,85 +0,0 @@ - - - - - - http_get - - - - - - - - - - -

http_get

-

С помощью этой функции вы подключаетесь к указанному URL для получения информации. Поскольку это асинхронная функция, GameMaker не будет блокироваться в ожидании ответа, а продолжит работу до тех пор, пока не получит обратную информацию. Эта информация будет в виде строки и вызовет событие Async Event в любом экземпляре, у которого оно определено в свойствах объекта. Следует также отметить, что параметры HTTP-запроса (биты, которые иногда "прикрепляются" к концу URL при отправке формы на веб-странице) вполне допустимы при использовании этой функции, например:

-

http_get("http://www.example.com/logon?username="+name);

-

передаст строку, хранящуюся в переменной "name", на сервер, а также получит данные из этого URL. Таким образом, по сути, в любой момент, когда от клиента к серверу нужно передать простой и короткий фрагмент данных, разумно использовать именно эту функцию.

-

ПРИМЕЧАНИЕ: Вы должны знать, что из-за XSS-защиты в браузерах запросы и попытки загрузить ресурсы из других доменов блокируются и могут возвращать пустые результаты. Более подробную информацию см. в разделе " Междоменные проблемы ".

-

Эта функция генерирует несколько "обратных вызовов", которые принимаются любыми событиями HTTP. Они будут генерировать DS Map (более известный как "словарь"), который является эксклюзивным для данного события и хранится в специальной переменной async_load. Эта карта DS будет содержать различные значения в зависимости от того, есть ли возвращаемые данные или нет. Например, если вы запросили файл, событие будет срабатывать несколько раз по мере получения каждого пакета данных, чтобы вы могли, например, показать индикатор выполнения. Общая структура карты DS будет выглядеть следующим образом:

-
    -
  • id: ID, который был возвращен командой. Если вы отправляете серию запросов http_, вам нужно знать, на какой из них вы получаете ответ, поэтому вы будете использовать это значение для сравнения со значением, которое вы сохранили при первоначальной отправке запроса, чтобы найти нужный запрос.
  • -
  • статус: Возвращает значение меньше 0 для ошибки, 0 для завершения и 1 для получения пакетов (подробнее см. ниже).
  • -
  • результат: Полученные данные (только строка).
  • -
  • url: Полный URL-адрес, который вы запросили.
  • -
  • http_status: Необработанный код статуса http (если доступен). Возвращается стандартный код статуса для большинства браузеров, например: 304 для "Not Modified" или 204 для "No Content" и т.д..
  • -
-

Если в вашу игру возвращается несколько пакетов, ключ обратного вызова "status" вернет 1, в этом случае карта DS будет иметь следующие дополнительные ключи:

-
    -
  • "contentLength": Это размер файла, который, по словам веб-сервера, вы должны ожидать получить (может быть -1, если сервер не возвращает эти данные).
  • -
  • "sizeDownloaded": Размер данных, которые уже были загружены.
  • -
-

-

Синтаксис:

-

http_get(url);

- - - - - - - - - - - - - -
АргументТипОписание
urlСтрокаThe web address of the server that you wish to get information from
-

-

Возвращается:

-

Async Request ID

-

-

Расширенный пример:

-

Функция http_get() может быть вызвана из любого события, и поскольку она асинхронна, обратный вызов может быть почти мгновенным или занять несколько секунд. Вызов функции прост и выглядит следующим образом:

-

get = http_get("http://www.MacSweeneyGames.com/logon?username=" + name);

-

Приведенный выше код передаст строку, хранящуюся в переменной "name", на указанный сервер, а также получит данные с этого URL, вызвав событие Async Event, которое будет содержать карту async_load DS (индекс карты async_load будет храниться в переменной "get", чтобы вы могли проверить правильность обратного вызова). Сработавшее Async-событие будет под-событием HTTP, и в этом событии у вас будет следующее:

-

if ds_map_find_value(async_load, "id") == get
- {
-     var _status = async_load[? "status"];
-     var _r_str = (_status == 0) ? async_load[? "result"] : "null";
- }

-

Приведенный выше код сначала проверит id созданной карты DS, затем проверит "статус" обратного вызова. Если значение равно 0 (сигнализирует об успехе), результат обратного вызова будет сохранен в переменной для дальнейшего использования, в противном случае переменная будет установлена в значение по умолчанию (в данном случае "null").

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_get_file.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_get_file.htm index 98d499a2f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_get_file.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_get_file.htm @@ -1,96 +0,0 @@ - - - - - - http_get_file - - - - - - - - - - -

http_get_file

-

С помощью этой функции вы можете подключиться к указанному URL-адресу, чтобы получить информацию в виде файла. Поскольку это асинхронная функция, GameMaker не будет блокироваться в ожидании ответа, а продолжит работу до тех пор, пока не получит обратную информацию. Эта информация будет в виде строки и вызовет событие Async Event в любом экземпляре, у которого оно определено в свойствах объекта.

-

ВНИМАНИЕ Вы должны знать, что из-за XSS-защиты в браузерах запросы и попытки загрузить ресурсы из других доменов блокируются и могут возвращать пустые результаты. Более подробную информацию см. в разделе " Междоменные проблемы ".

-

Это событие генерирует "обратный вызов", который подхватывается любыми HTTP Events, в этом случае генерируется файл DS Map (более известный как "словарь"), который является эксклюзивным для этого события и хранится в специальной переменной async_load. Эта DS карта будет содержать различные значения в зависимости от возвращаемых данных, т.е. событие будет срабатывать несколько раз по мере получения каждого пакета данных, чтобы, например, можно было показать индикатор выполнения. Общая структура карты DS будет выглядеть следующим образом:

-
    -
  • id: ID, который был возвращен командой. Если вы отправляете серию запросов http_, вам необходимо знать, на какой из них вы получаете ответ, поэтому вы будете использовать это значение для сравнения со значением, которое вы сохранили при первоначальной отправке запроса, чтобы найти нужный запрос.
  • -
  • статус: Возвращает значение меньше 0 для ошибки, 0 для завершения и 1 для получения пакетов (подробнее см. ниже).
  • -
  • результат: Полученные данные (только строка).
  • -
  • url: Полный URL-адрес, который вы запросили.
  • -
  • http_status: Необработанный код статуса http (если доступен). Возвращается стандартный код статуса для большинства браузеров, например: 304 для "Not Modified" или 204 для "No Content" и т.д..
  • -
-

Если в вашу игру возвращается несколько пакетов, ключ обратного вызова "status" вернет 1, в этом случае карта DS будет иметь следующие дополнительные ключи:

-
    -
  • "contentLength": Это размер файла, который, по словам веб-сервера, вы должны ожидать получить (может быть -1, если сервер не возвращает эти данные).
  • -
  • "sizeDownloaded": Размер данных, которые уже были загружены.
  • -
-

-

Синтаксис:

-

http_get_file(url, local_target);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
urlСтрокаThe web address of the server that you wish to get file from
local_targetСтрокаThe local storage path to save the file to
-

-

Возвращается:

-

Async Request ID

-

-

Расширенный пример:

-

Функция http_get_file() может быть вызвана из любого события, и поскольку она асинхронна, обратный вызов может быть почти мгновенным или занять несколько секунд. Вызов функции прост и выглядит следующим образом:

-

file = http_get_file("http://www.macsweeneygames.com/downloads/upgrade.zip", "\Downloads\Upgrade.zip");

-

Приведенный выше код запросит файл с заданного URL и настроит его загрузку в локальное хранилище (как указано в параметрах HTML5-игры), в каталог "Downloads" с заданным именем файла (оно не обязательно должно совпадать с именем исходного файла, но должно использовать то же расширение файла). Индекс карты async_load будет сохранен в переменной "file", чтобы вы могли проверить правильность обратного вызова в асинхронном событии, и если каталог сохранения не существует, он будет создан. Асинхронное событие будет вызвано под-событием HTTP, и в этом событии у вас будет что-то вроде следующего:

-

if ds_map_find_value(async_load, "id") == file
- {
-     var _status = async_load[? "status"];
-     if (_status == 0)
-     {
-         var _path = async_load[? "result"];
-         var _files = zip_unzip(path, "/NewContent/");
-         if (_files > 0)
-         {
-             global.extra_content = true;
-         }
-     }
- }

-

Приведенный выше код сначала проверит "id" созданной ds_map, затем проверит статус обратного вызова. Если значение равно 0 (сигнализирует об успехе), то результат обратного вызова будет использован вместе с функцией zip_unzip() для разархивирования загруженного файла в указанный каталог. Если распаковка прошла успешно, глобальная переменная устанавливается в true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_get_request_crossorigin.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_get_request_crossorigin.htm index 90fbe4c7c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_get_request_crossorigin.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_get_request_crossorigin.htm @@ -1,53 +0,0 @@ - - - - - - http_get_request_crossorigin - - - - - - - - - - - -

http_get_request_crossorigin

-

Эта функция может быть использована для получения набора кросс-оригинальных типов для игр HTML5 и возвращает строку (на всех других платформах будет возвращена пустая строка "").

-

-

Синтаксис:

-

http_get_request_crossorigin();

-

-

Возвращается:

-

-

-

Пример:

-

if string_lower(http_get_request_crossorigin()) != "use-credentials"
- {
-     http_set_request_crossorigin("use-credentials");
- }
- sprite_add("sprites/player_outfit_1.png", 0, false, false, 0, 0);

-

Приведенный выше код сначала проверит установленный в данный момент тип происхождения кросса и если он не "use-credentials", то он будет установлен на "use-credentials", а затем будет добавлен sprite из файла.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_post_string.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_post_string.htm index 248db224d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_post_string.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_post_string.htm @@ -1,90 +0,0 @@ - - - - - - http_post_string - - - - - - - - - - - -

http_post_string

-

В вычислительной технике пост-запрос используется, когда клиенту необходимо отправить данные на сервер как часть запроса на получение, например, при загрузке файла или отправке заполненной формы, и то же самое справедливо для этой функции в GameMaker. В отличие от метода запроса http_get(), при котором на сервер отправляется только URL, http_post_string() также включает строку, которая отправляется на сервер и может привести к созданию нового ресурса или обновлению существующего ресурса, или к тому и другому. Следует отметить, что параметры HTTP-запроса (биты, которые иногда "прикрепляются" к концу URL при отправке формы на веб-странице) также вполне приемлемы при использовании этой функции.

-

ВНИМАНИЕ Вы должны знать, что из-за XSS-защиты в браузерах запросы и попытки загрузить ресурсы из других доменов блокируются и могут возвращать пустые результаты. Более подробную информацию см. в разделе " Междоменные проблемы ".

-

Это событие создаст "обратный вызов", который будет подхвачен любым HTTP Events, и в этом случае будет создана DS Map (более известная как "словарь"), которая является эксклюзивной для этого события и хранится в специальной переменной async_load. Эта DS карта будет содержать различные значения в зависимости от того, есть ли возвращаемые данные или нет. Например, если вы запросили файл, событие будет срабатывать несколько раз по мере получения каждого пакета данных, чтобы вы могли, например, показать индикатор выполнения. Общая структура карты DS будет выглядеть следующим образом:

-
    -
  • id: ID, который был возвращен командой. Если вы отправляете серию запросов http_, вам нужно знать, на какой из них вы получаете ответ, и поэтому вы будете использовать это значение для сравнения со значением, которое вы сохранили при первоначальной отправке запроса, чтобы найти нужный запрос.
  • -
  • статус: Возвращает значение меньше 0 для ошибки, 0 для завершения и 1 для получения пакетов (подробнее см. ниже).
  • -
  • результат: Полученные данные (только строка).
  • -
  • url: Полный URL-адрес, который вы запросили.
  • -
  • http_status: Необработанный код статуса http (если доступен). Возвращается стандартный код статуса для большинства браузеров, например: 304 для "Not Modified" или 204 для "No Content" и т.д..
  • -
-

Если в вашу игру возвращается несколько пакетов, ключ обратного вызова "status" вернет 1, в этом случае карта DS будет иметь следующие дополнительные ключи:

-
    -
  • "contentLength": Это размер файла, который, по словам веб-сервера, вы должны ожидать получить (может быть -1, если сервер не возвращает эти данные).
  • -
  • "sizeDownloaded": Размер данных, которые уже были загружены.
  • -
-

-

Синтаксис:

-

http_post_string(url, string);

- - - - - - - - - - - - - - - -
АргументТипОписание
urlThe web address of the server that you wish to get information from
stringThe string you wish to send to the specified URL
-

-

Возвращается:

-

Async Request ID

-

-

Расширенный пример:

-

Функция http_post_string() может быть вызвана из любого события, и поскольку она асинхронна, обратный вызов может быть почти мгновенным или занять несколько секунд. Вызов функции прост и выглядит следующим образом:

-

var str = "name=" + global.player_name + "&score=" + string(global.player_score);
- post = http_post_string("http://www.angusgames.com/game?game_id=" + string(global.game_id), str);

-

Приведенный выше код отправляет запрос на получение по указанному URL с заданными параметрами, а также отправляет дополнительные данные (имя игрока и счет в URL-кодированном виде), хранящиеся в переменной str. Это вызовет все определенные асинхронные Http-события, если будет получен обратный вызов, и вы можете сверить возвращаемый "id" с тем, что хранится в переменной post, чтобы убедиться, что вы запустили правильный код, если вы использовали различные функции http_post_string(). Следующий пример кода показывает, как это можно сделать:

-

var r_str = "null";
- if (ds_map_find_value(async_load, "id") == post)
- {
-     if (async_load[? "status"] == 0)
-     {
-         _r_str = async_load[? "result"];
-     }
- }

-

Приведенный выше код сначала проверит id созданной карты DS, затем проверит статус обратного вызова. Если значение равно 0 (что означает успех), результат обратного вызова будет сохранен в переменной для дальнейшего использования, в противном случае переменная будет содержать значение по умолчанию (в данном случае "null").

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_request.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_request.htm index a7a6f2fbc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_request.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_request.htm @@ -1,100 +0,0 @@ - - - - - - http_request - - - - - - - - - - -

http_request

-

С помощью этой функции вы можете создать запрос HTTP-заголовка для определения рабочих параметров HTTP-транзакции, что может быть использовано для многих вещей, таких как (например) аутентификация через HTTP-заголовки, если вы используете RESTful API. Функция требует полный IP-адрес сервера, с которого будет выполняться запрос, а также тип запроса (в виде строки, см. примечание ниже): "GET", "HEAD", "POST", "PUT", "DELETE", "TRACE", "OPTIONS" или "CONNECT". Вам также нужно будет предоставить DS map пар ключ/значение (в виде строк, где ключ - это поле заголовка, а значение - необходимые данные для заголовка), а последний аргумент - это необязательная строка данных, которую вы можете добавить в запрос, а если она не нужна, то это может быть либо 0, либо пустая строка "". Обратите внимание, что вы также можете отправить буфер (подробнее см. раздел " Буферы" ), в этом случае последним аргументом будет индекс отправляемого буфера.

-

ПРИМЕЧАНИЕ: HTTP-заголовки обычно имеют формат "ключ:значение", но поскольку GameMaker создает эти пары для вас из ds_map, нет необходимости включать двоеточие ":" в строки ключей и значений вашей карты.

-

ПРИМЕЧАНИЕ: При использовании буфера для аргумента body, если позиция поиска буфера находится в начале (0), то тело не отправляется и буфер заполняется ответом от http-вызова, но если позиция поиска буфера ненулевая, то в качестве тела отправляется содержимое строки буфера.

-

ПРИМЕЧАНИЕ: Вы должны знать, что из-за XSS-защиты в браузерах запросы и попытки загрузить ресурсы из других доменов блокируются и могут возвращать пустые результаты. Более подробную информацию см. в разделе " Междоменные проблемы ".

-

Эта функция возвращает идентификатор Идентификатор асинхронного запроса который может быть использован для идентификации обратного вызова, как описано ниже.

-

Асинхронный обратный вызов

-

Это событие будет генерировать "обратный вызов", который будет подхвачен любым Async HTTP Events, в этом случае будет сгенерирован DS Map, который является эксклюзивным для этого события и хранится в специальной переменной async_load. Эта карта DS имеет следующие два ключа, связанные с функцией запроса:

-
    -
  • id: ID, который был возвращен из функции. Если вы отправляете серию запросов http_, вам необходимо знать, на какой из них вы получаете ответ, поэтому вы будете использовать это значение для сравнения со значением, которое вы сохранили при первоначальной отправке запроса, чтобы найти нужный запрос.
  • -
  • response_headers: Если это значение больше или равно 0, оно содержит DS-карту, содержащую HTTP-заголовки, возвращенные с ответом на HTTP-запрос.
  • -
-

-

Синтаксис:

-

http_request(url, method, header_map, body);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
urlСтрокаThe web address of the server that you wish to get information from
methodСтрокаThe request method (normally "POST" или "GET", но поддерживаются все методы)
header_mapИдентификатор карты DSA ds_map with the required header fields
bodyРеальный, Строка, или Идентификатор буфераThe data to be transmitted following the headers (can be a binary buffer handle)
-

-

Возвращается:

-

Async Request ID

-

-

Пример:

-

var map = ds_map_create();
- ds_map_add(map, "Host", "225.0.0.97:3000");
- ds_map_add(map, "Connection", "keep-alive");
- ds_map_add(map, "Content-Length", "169");
- ds_map_add(map, "Cache-Control", "max-age=0");
- ds_map_add(map, "Authorization", "Basic eW95b19hZG1pbjpjNG5lZmllbGQ=");
- ds_map_add(map, "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
- ds_map_add(map, "User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36");
- ds_map_add(map, "Content-Type", "application/x-www-form-urlencoded");
- ds_map_add(map, "Accept-Encoding", "gzip,deflate,sdch");
- ds_map_add(map, "Accept-Language", "en-GB,en-US;q=0.8,en;q=0.6");
- ds_map_add(map, "Cookie", "request_method=GET; _InAppPurchases_session=69bb6ef6eec2b");
- var data="utf8=%E2%9C%93&authenticity_token=kPmS14DcYcuKgMFZUsN3XFfj3mhs%3D&product%5Bname%5D=CatchTheHaggis&product%5Bproduct_id%5D=http_test&commit=Create+Product";
- request = http_request("http:225.0.0.97:3000/products", "POST", map, data);

-

Приведенный выше код создает карту DS с соответствующими HTTP-заголовками для функции, затем создает строку данных для использования, поскольку это POST-запрос. Наконец, функция вызывается, при этом ее значение ID сохраняется в переменной "request" для проверки в асинхронном событии HTTP.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_set_request_crossorigin.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_set_request_crossorigin.htm index c62e13b2c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_set_request_crossorigin.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/HTTP/http_set_request_crossorigin.htm @@ -1,64 +0,0 @@ - - - - - - http_set_request_crossorigin - - - - - - - - - - -

http_set_request_crossorigin

-

С помощью этой функции вы можете установить тип кросс-происхождения, который будет использоваться при загрузке изображений из файла. Функция предназначена исключительно для платформы HTML5 и полезна только при загрузке sprites из файла с помощью функции sprite_add(). Обратите внимание, что при установке значения "use-credentials" вам больше не нужно указывать абсолютный путь к загружаемому sprite, вместо этого можно указать относительный путь (как показано в примере ниже). По умолчанию тип происхождения кросс-сайта установлен на "anonymous".

-

-

Синтаксис:

-

http_set_request_crossorigin(origin_type);

- - - - - - - - - - - -
АргументТипОписание
origin_typeThe cross origin type to use (a string)
-

-

Возвращается:

-

-

-

Пример:

-

if string_lower(http_get_request_crossorigin()) != "use-credentials"
- {
-     http_set_request_crossorigin("use-credentials");
- }
- sprite_add("sprites/player_outfit_1.png", 0, false, false, 0, 0);

-

Приведенный выше код сначала проверит установленный в данный момент тип происхождения кросса и если он не "use-credentials", то он будет установлен на "use-credentials", а затем будет добавлен sprite из файла.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/Push_Notifications.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/Push_Notifications.htm index 0568ffc7d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/Push_Notifications.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/Push_Notifications.htm @@ -1,42 +0,0 @@ - - - - - - Push-уведомления - - - - - - - - - - -

Push-уведомления

-

Функциональность для мобильных Push-уведомлений была разделена на расширения. Пожалуйста, прочитайте следующие статьи для реализации уведомлений:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/push_cancel_local_notification.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/push_cancel_local_notification.htm index c34419516..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/push_cancel_local_notification.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/push_cancel_local_notification.htm @@ -1,74 +0,0 @@ - - - - - - push_cancel_local_notification - - - - - - - - - - -

push_cancel_local_notification

-

Эта функция отменяет заданное push-уведомление. Вы можете получить идентификатор уведомления для отмены с помощью функций push_get_first_local_notification() и push_get_next_local_notification() и функция вернет true в случае успеха или false в противном случае (например, если уведомление не существует или уже было запущено).

-

ПРИМЕЧАНИЕ: Эта функция ограничена целевыми модулями iOS и Android.

-

-

Синтаксис:

-

push_cancel_local_notification(ID);

- - - - - - - - - - - - - -
АргументТипОписание
IDИдентификатор Push-уведомленияThe ID of the notification to cancel.
-

-

Возвращается:

-

Boolean

-

-

Пример

-

var map = ds_map_create();
- var ntf = push_get_first_local_notification(map);
- while(ntf >= 0)
- {
-     var data = ds_map_find_value(map, "data");
-     if data == "Daily_Reward"
-     {
-         push_cancel_local_notification(ntf);
-     }
-     ntf = push_get_next_local_notification(map);
- }
- ds_map_destroy(map);

-

Приведенный выше код создает DS Map, а затем запрашивает данные для первого доступного уведомления в очереди. Если уведомление существует, карта заполняется, а затем код проверяет ключ "data" на наличие определенной строки. Если строка найдена, уведомление отменяется и переходит к проверке следующего уведомления, пока не будут проверены все уведомления в очереди.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/push_get_first_local_notification.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/push_get_first_local_notification.htm index f8af4e775..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/push_get_first_local_notification.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/push_get_first_local_notification.htm @@ -1,79 +0,0 @@ - - - - - - push_get_first_local_notification - - - - - - - - - - - -

push_get_first_local_notification

-

Эта функция заполняет предварительно созданную карту DS серией пар ключ/значение для отображения первого локального push-уведомления в очереди. Она возвращает -1, если в очереди нет уведомлений, или реальное значение, представляющее идентификатор уведомления. Этот идентификатор может быть использован для отмены уведомления с помощью функции push_cancel_local_notification().

-

ПРИМЕЧАНИЕ: Эта функция ограничена целевыми модулями iOS и Android.

-

Карта DS будет содержать следующие пары ключ/значение:

-
    -
  • "title" - Заголовок уведомления (это будет доступно только на платформе Android, так как iOS не хранит информацию о заголовке).
  • -
  • "сообщение" - Текст основного текста сообщения
  • -
  • "data" - Строка пакета данных
  • -
-

-

Синтаксис:

-

push_get_first_local_notification(map);

- - - - - - - - - - - -
АргументТипОписание
mapThe DS Map ID для использования.
-

-

Возвращается:

-

Push Notification ID or -1

-

-

Пример

-

var map = ds_map_create();
- var ntf = push_get_first_local_notification(map);
- while(ntf >= 0)
- {
-     var data = ds_map_find_value(map, "data");
-     if data == "Daily_Reward"
-     {
-         push_cancel_local_notification(ntf);
-     }
-     ntf = push_get_next_local_notification(map);
- }
- ds_map_destroy(map);

-

Приведенный выше код создает DS Map, а затем запрашивает данные для первого доступного уведомления в очереди. Если уведомление существует, карта заполняется, а затем код проверяет ключ "data" на наличие определенной строки. Если строка найдена, уведомление отменяется и переходит к проверке следующего уведомления, пока не будут проверены все уведомления в очереди.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/push_get_next_local_notification.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/push_get_next_local_notification.htm index adb733ff6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/push_get_next_local_notification.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/push_get_next_local_notification.htm @@ -1,79 +0,0 @@ - - - - - - push_get_next_local_notification - - - - - - - - - - - -

push_get_next_local_notification

-

Эта функция заполняет предварительно созданную DS map серией пар ключ/значение для следующего локального push-уведомления в очереди на показ. Она возвращает -1, если в очереди нет других уведомлений, или реальное значение, представляющее идентификатор уведомления. Этот идентификатор может быть использован для отмены уведомления с помощью функции push_cancel_local_notification(). Вы должны вызвать функцию push_get_first_local_notification() для получения первого уведомления в очереди, а затем использовать эту функцию для продолжения просмотра.

-

ПРИМЕЧАНИЕ: Эта функция ограничена целевыми модулями iOS и Android.

-

карта DS будет содержать следующие пары ключ/значение:

-
    -
  • "title" - Заголовок уведомления (это будет доступно только на платформе Android, так как iOS не хранит информацию о заголовке).
  • -
  • "сообщение" - Текст основного текста сообщения
  • -
  • "data" - Строка пакета данных
  • -
-

-

Синтаксис:

-

push_get_next_local_notification(map);

- - - - - - - - - - - -
АргументТипОписание
mapThe DS Map ID для использования.
-

-

Возвращается:

-

Push Notification ID or -1

-

-

Пример

-

var map = ds_map_create();
- var ntf = push_get_first_local_notification(map);
- while(ntf >= 0)
- {
-     var data = ds_map_find_value(map, "data");
-     if data == "Daily_Reward"
-     {
-         push_cancel_local_notification(ntf);
-     }
-     ntf = push_get_next_local_notification(map);
- }
- ds_map_destroy(map);

-

Приведенный выше код создает DS Map, а затем запрашивает данные для первого доступного уведомления в очереди. Если уведомление существует, карта заполняется, а затем код проверяет ключ "data" на наличие определенной строки. Если строка найдена, уведомление отменяется и переходит к проверке следующего уведомления, пока не будут проверены все уведомления в очереди.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/push_local_notification.htm b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/push_local_notification.htm index 2745ac30f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/push_local_notification.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Asynchronous_Functions/Push_Notifications/push_local_notification.htm @@ -1,106 +0,0 @@ - - - - - - push_local_notification - - - - - - - - - - -

push_local_notification

-

Эта функция может использоваться для установки локального уведомления, которое будет показано в заданную дату в заданное время. Время "fire_time" - это дата/время, когда уведомление должно быть отправлено на пользовательское устройство (для этого можно использовать функции даты и времени GameMaker ). Вы можете задать уведомлению заголовок и текст сообщения, а также строку полезной нагрузки, которая будет передана в вашу игру, когда пользователь коснется уведомления.

-

ПРИМЕЧАНИЕ: Аргумент "title" игнорируется на сайте iOS, вместо него отображается название игры.

-

Нажатие на уведомление запустит игру на устройстве и вызовет событие асинхронного Push-уведомления, в котором карта DS может быть разобрана для выполнения любого необходимого действия. async_load DS map может быть разобрана для проверки строки полезной нагрузки и выполнения любого необходимого действия.

-

ПРИМЕЧАНИЕ: Эта функциональность ограничена целевыми модулями iOS и Android.

-

-

Синтаксис:

-

push_local_notification(fire_time, title, message, data);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
fire_timeДата-таймThe date/time to fire the off the notification
titleСтрокаThe notification title (a string)
messageСтрокаThe notification message text (a string)
dataСтрокаThe data package to send to your game (a string)
-

-

Возвращается:

-

N/A

-

-

Расширенный пример

-

В этом примере мы отправим локальное push-уведомление, используя следующий код:

-

var fireTime = date_inc_day(date_current_datetime(), 1);
- var data = "daily_reward";
- push_local_notification(fireTime, "Ahoy!", "Catch The Haggis Has A Present", data);

-

Это позволит установить таймер для "отправки" уведомления на устройство по истечении одного дня. По истечении дня, если ваша игра находится в фоновом режиме или не запущена, пользователю будет показано уведомление с заданным названием и сообщением (на сайте iOS показывается название игры, а название игнорируется), а затем будет вызвано асинхронное событие Push Notification Event. Обратите внимание, что если игра находится на переднем плане, когда наступит время для уведомления, она не будет показана, но асинхронное событие все равно сработает. В самом событии вы будете обрабатывать обратный вызов примерно так:Async Event следующим образом:

-

var type = ds_map_find_value(async_load, "type");
- var status = ds_map_find_value(async_load, "status");
- if status == 0
- {
-     //error of some kind
-     var error = ds_map_find_value(async_load, "error");
-     show_debug_message("error=" + string(error));
- }
- else
- {
-     if type == "register"
-     {
-         global.reg_id = ds_map_find_value(async_load, "reg_id");
-     }
-     else
-     {
-         var data = ds_map_find_value(async_load, "data");
-         if data == "daily_reward"
-         {
-             global.Gold += 1000;
-         }
-     }
- }

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/Buffers.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/Buffers.htm index 097a25253..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/Buffers.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/Buffers.htm @@ -1,106 +0,0 @@ - - - - - - Буферы - - - - - - - - - - -

Буферы

-

Буфер - это область физической памяти, используемая для временного хранения данных, пока они перемещаются из одного места в другое или манипулируются каким-либо образом. Например, вы можете использовать буфер для хранения пакетных данных, ожидающих передачи по сети, или для хранения пакета, полученного по сети. В GameMaker есть ряд специальных функций, связанных с созданием, изменением и загрузкой/сохранением буферов, но прежде чем использовать их, пожалуйста, обратите внимание на следующие моменты:

-
    -
  • При создании буфера он автоматически очищается и заполняется до 0.
  • -
  • Аргумент "size" функций буфера всегда указывает на размер буфера в байтах.
  • -
  • Аргумент "Выравнивание" относится к тому, как данные хранятся в буфере. Если ваше выравнивание установлено, скажем, на 4, и вы записываете один фрагмент данных размером в 1 байт, а затем выполняете команду buffer_tell, вы получите смещение 1. Однако если вы запишете другой фрагмент данных, также размером в 1 байт, а затем выполните команду buffer_tell, вы получите смещение 5, поскольку выравнивание "подгоняет" данные под этот размер. Выравнивание влияет только на то , куда записываются данные, поэтому если вы выполните buffer_tell после записи чего-либо, то вернется текущая позиция записи, которая следует сразу за записанными данными. Обратите внимание, однако, что если после этого вы запишете еще один фрагмент данных, буфер внутри переместит позицию записи на следующую кратную величину выравнивания перед фактической записью фрагмента данных.
  • -
  • Когда речь идет о "смещении", это значение в байтах, на которое нужно сместить данные в данном буфере. Так, если ваш буфер выровнен по 2 байта и вы хотите пропустить первые 4 выровненных места, то смещение будет 2 * 4 bytes.
  • -
  • Некоторые функции буфера также создают новый буфер (например, buffer_load ). Помните, что эти буферы также должны быть удалены из памяти, когда они не используются, с помощью функции buffer_delete.
  • -
  • Память, используемая для создания буферов, является системной памятью, поэтому даже когда игра не имеет фокуса, любые данные, хранящиеся в буфере, должны быть в безопасности, однако если приложение будет закрыто или перезапущено, они будут потеряны.
  • -
-

Следующие страницы объясняют, как работают буферы в контексте GameMaker, и содержат несколько примеров кода для тех пользователей, которые не знают, как их использовать:

- -

ВАЖНО! Когда вы создаете буфер, значение индекса, используемое для его идентификации, является целым числом, начиная с 0. Эти индексы повторно используются GameMaker, поэтому значение индекса уничтоженного буфера может быть использовано вновь созданным, и мы рекомендуем вам установить любую переменную, содержащую индекс буфера, в -1 после уничтожения буфера.

-

Для использования двоичных буферов в ваших играх существуют следующие функции:

- -

-

Есть также две дополнительные функции, связанные с буферами, которые могут быть использованы для сохранения и загрузки игровых состояний (обратите внимание, что они требуют, чтобы буфер был создан ранее):

- -

-

Наконец, вы также можете использовать специальные вершинные буферы для создания собственных пользовательских примитивов, моделей и т.д.. Подробнее о них вы можете узнать из следующего раздела руководства:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_async_group_begin.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_async_group_begin.htm index cbf0ffd26..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_async_group_begin.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_async_group_begin.htm @@ -1,76 +0,0 @@ - - - - - - buffer_async_group_begin - - - - - - - - - - -

buffer_async_group_begin

-

Эта функция вызывается, когда вы хотите начать сохранение нескольких буферов в несколько файлов (или загрузку нескольких буферов). Имя группы - это строка, которая будет использоваться в качестве имени каталога, куда сохраняются файлы, и должна использоваться как часть пути к файлу при последующей загрузке файлов обратно в IDE (используя любую из buffer_load() функции). Эта функция предназначена только для использования с функциями buffer_save_async() и buffer_load_async(), и вы также должны завершить асинхронную группу вызовом функции buffer_async_group_end() иначе файлы не будут сохранены/загружены.

-

Обратите внимание, что для консольных платформ (например, PS4) название группы будет использоваться в качестве описания слота сохранения, и использование этой функции поможет вам избежать отображения пользовательского интерфейса для каждого сохраняемого файла. Также обратите внимание, что при использовании UWP вы можете перемещать сохраненные игры между родными окнами Xbox и Microsoft store, создав группу, которая будет такой же, как группа ERA Xbox, например:

-

if os_type == os_uwp
- {
-     buffer_async_group_begin("root/yourgroupname");
- }
- else
- {
-     buffer_async_group_begin("yourgroupname");
- }

-

-

Синтаксис:

-

buffer_async_group_begin(groupname);

- - - - - - - - - - - - - -
АргументТипОписание
groupnameСтрокаThe name of the group (as a string).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

buffer_async_group_begin("SaveGame");
- save1 = buffer_save_async(buff1, "Player_Save1.sav", 0, 16384);
- save2 = buffer_save_async(buff2, "Player_Save2.sav", 0, 16384);
- save3 = buffer_save_async(buff3, "Player_Save3.sav", 0, 16384);
- save4 = buffer_save_async(buff4, "Player_Save4.sav", 0, 16384);
- buffer_async_group_end();

-

Приведенный выше код запускает буферную группу, затем устанавливает ее для асинхронного сохранения 4 файлов. Затем определение группы завершается (в этот момент начнется сохранение).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_async_group_end.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_async_group_end.htm index a02817f2a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_async_group_end.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_async_group_end.htm @@ -1,62 +0,0 @@ - - - - - - buffer_async_group_end - - - - - - - - - - -

buffer_async_group_end

-

Эта функция завершает определение асинхронной группы буферов. Вы должны предварительно вызвать функцию buffer_async_group_begin() для инициирования группы, а затем вызвать функцию buffer_save_async() для каждого файла, который вы хотите сохранить (или buffer_load_async() для загрузки буферов). Наконец, вы вызываете эту функцию, которая начнет сохранение файлов. Функция вернет уникальное значение ID для сохранения, которое затем может быть использовано в событии Asynchronous Save / Load для разбора результатов из async_load карты DS.

-

-

Синтаксис:

-

buffer_async_group_end();

-

-

Возвращается:

-

Async Request ID

-

-

Расширенный пример:

-

Функция buffer_async_group_end() может быть вызвана из любого события, и поскольку она асинхронна, обратный вызов может быть почти мгновенным или занять несколько секунд. Вызов функции прост и выглядит следующим образом:

-

buffer_async_group_begin("SaveGame");
- save1 = buffer_save_async(buff1, "Player_Save1.sav", 0, 16384);
- save2 = buffer_save_async(buff2, "Player_Save2.sav", 0, 16384);
- save3 = buffer_save_async(buff3, "Player_Save3.sav", 0, 16384);
- save4 = buffer_save_async(buff4, "Player_Save4.sav", 0, 16384);
- save_id = buffer_async_group_end();

-

Приведенный выше код запускает буферную группу, затем устанавливает ее для асинхронного сохранения 4 файлов. Затем определение группы завершается (в этот момент начнется сохранение), сохраняя идентификатор вызова функции в переменной "save_id". Когда сохранение будет завершено, сработает событие асинхронного сохранения/загрузки, и вы сможете разобрать карту async_load на предмет правильного ID функции, как показано ниже:

-

if ds_map_find_value(async_load, "id") == saveid
- {
-     if (ds_map_find_value(async_load, "status") == false)
-     {
-         show_debug_message("Save failed!");
-     }
- }

-

Приведенный выше код сначала проверит id созданной карты DS, затем проверит статус обратного вызова, опубликовав отладочное сообщение, если возникли какие-либо проблемы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_async_group_option.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_async_group_option.htm index 12dcd4fc5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_async_group_option.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_async_group_option.htm @@ -1,79 +0,0 @@ - - - - - - buffer_async_group_option - - - - - - - - - - -

buffer_async_group_option

-

С помощью этой функции вы можете установить некоторые специфические для платформы параметры для сохраняемой/загружаемой группы буферов. Доступны следующие опции:

-
    -
  • "subtitle" или "slottitle" - Значением для этой опции будет строка, которая будет показана пользователю при управлении его сохраненными данными в ОС. Это важно только при сохранении данных, а не при повторной загрузке.
  • -
  • "showdialog" - Значение этой опции - булево true или false. Если установлено значение true, то при сохранении или загрузке GameMaker будет показывать системный пользовательский интерфейс, в противном случае он будет выполнять квиксейв/квиклоад без показа пользовательского интерфейса. Обычно это нужно только в том случае, если вы поддерживаете несколько слотов сохранения, чтобы пользователь мог выбрать слот, но если вы поддерживаете только один слот для пользователя, установите значение false.
  • -
  • "savepadindex" - Для этой опции вы должны указать индекс пада игрока, который сохраняется или загружается, и система будет записывать данные в и читать данные из папки сохранения этого игрока.
  • -
  • "saveslotsize" - Эта опция требует, чтобы вы указали фактический размер в байтах, который вы хотите сохранить (так что вы можете сделать buffer_seek() и buffer_tell() чтобы получить это, например). Обратите внимание, что указывать это значение не обязательно, так как для всех сохранений предварительно назначается минимальное пространство, которое обычно зависит от целевой платформы.
  • -
  • "ps_create_backup" - (только для PlayStation) - Установка этого параметра на true гарантирует, что резервная копия данных сохранения будет создана, когда каталог сохранения будет размонтирован (т.е. когда будет вызвана функция buffer_async_group_end() ). Дополнительную информацию см. в документации по консоли.
  • -
-

ВАЖНО! В настоящее время эта функция действует только для целевых модулей PSVita, PS4 и XBox One. На всех остальных целевых модулях она ничего не даст.

-

-

Синтаксис:

-

buffer_async_group_option(option, value);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
optionСтрокаThe option to set.
valueРеальный или СтрокаThe value to set (can be a real or string, depending on the option).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

buffer_async_group_begin("save_folder_name");
- buffer_async_group_option("showdialog", false);
- buffer_async_group_option("slottitle", "Catch The Haggis Save");
- buffer_async_group_option("subtitle", "All your haggis are saved here!");
- save = buffer_save_async(buff, "Player_Save.sav", 0, 16384);
- buffer_async_group_end();

-

Приведенный выше код начинает группу буферов, затем устанавливает параметры группы, прежде чем установить 4 файла для асинхронного сохранения. Затем определение группы завершается (в этот момент начнется сохранение).

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_base64_decode.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_base64_decode.htm index 856d0f44e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_base64_decode.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_base64_decode.htm @@ -1,64 +0,0 @@ - - - - - - buffer_base64_decode - - - - - - - - - - - -

buffer_base64_decode

-

С помощью этой функции вы можете декодировать строку в кодировке base64 (созданную с помощью функции buffer_base64_encode() ) в буфер. Эта функция создаст буфер (как выровненный по 1 байту "растущий" буфер") и вернет уникальный индекс для буфера, который будет использоваться во всех дальнейших вызовах функции.

-

ПРИМЕЧАНИЕ: Важно, чтобы вы удаляли любые динамически созданные ресурсы, подобные этому, из памяти, когда они вам больше не нужны, чтобы предотвратить утечку памяти, поэтому, когда вы закончите работу с созданным буфером, вы должны освободить его снова, используя buffer_delete().

-

-

Синтаксис:

-

buffer_base64_decode(string);

- - - - - - - - - - - -
АргументТипОписание
stringThe base64 encoded string to decode
-

-

Возвращается:

-

Buffer ID

-

-

Пример:

-

ini_open("Save.ini");
- buff = buffer_base64_decode(ini_read_string("Save", "Slot1", ""));
- ini_close();

-

Приведенный выше код откроет файл ini, а затем прочитает из него строку в функцию decode. Эта функция вернет индекс буфера, который хранится в переменной "buff", содержащей данные, ранее закодированные и сохраненные. Затем файл ini закрывается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_base64_decode_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_base64_decode_ext.htm index fc8c7f52e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_base64_decode_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_base64_decode_ext.htm @@ -1,74 +0,0 @@ - - - - - - buffer_base64_decode_ext - - - - - - - - - - - -

buffer_base64_decode_ext

-

С помощью этой функции вы можете декодировать строку в кодировке base64 (созданную с помощью функции buffer_base64_encode() ) в буфер. В отличие от функции buffer_base64_decode(), - эта функция не будет создавать буфер для вас, скорее вы уже должны были создать буфер (см. buffer_create()), id которого вы затем будете использовать с помощью этой функции. Смещение" - это - позиция в буфере для декодирования заданной строки (в байтах).

-

-

Синтаксис:

-

buffer_base64_decode_ext(buffer, string, offset);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to decode the string into.
stringThe base64 encoded string to decode.
offsetThe data offset value.
-

-

Возвращается:

-

-

-

Пример:

-

buff = buffer_create(16384, buffer_grow, 2);
ini_open("Save.ini"); -
var str = ini_read_string("Save", "Slot1", "");
buffer_base64_decode_ext(buff, str, 0);
ini_close(); -

-

Приведенный выше код создаст буфер и сохранит уникальный идентификатор для него в переменной "buff", затем откроет ini-файл и прочитает из него строку в локальную переменную "str". Затем эта строка декодируется во вновь созданный буфер перед тем, как - закрытия ini-файла.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_base64_encode.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_base64_encode.htm index d04d1acaa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_base64_encode.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_base64_encode.htm @@ -1,70 +0,0 @@ - - - - - - buffer_base64_encode - - - - - - - - - - - -

buffer_base64_encode

-

Эта функция преобразует данные из заданного буфера в строку, закодированную в формате base64. Это широко используемая схема кодирования, которая часто применяется для любых носителей, которые должны храниться или передаваться через Интернет в виде текста, и делает вывод нечитаемым для человеческого глаза. - нечитаемым для человеческого глаза. Для использования этой схемы вам необходимо указать уже созданный буфер, значение смещения (это точка в буфере, с которой вы хотите начать кодирование), а также размер в байтах памяти буфера для кодирования.

-

-

Синтаксис:

-

buffer_base64_encode(buffer, offset, size);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to use.
offsetThe data offset value.
sizeThe size of the buffer.
-

-

Возвращается:

-

-

-

Пример:

-

var b_str = buffer_base64_encode(buff, 0, buffer_get_size(buff))

-

Приведенный выше код создаст кодировку полных данных, хранящихся в буфере, индексируемом переменной "buff", и сохранит возвращенную строку в локальной переменной "b_str".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_compress.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_compress.htm index 9739e815b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_compress.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_compress.htm @@ -1,73 +0,0 @@ - - - - - - buffer_compress - - - - - - - - - - -

buffer_compress

-

С помощью этой функции вы можете сжать часть (или весь) буфера, используя сжатие zlib. Вы передаете идентификатор буфера, который нужно сжать (как возвращается функцией buffer_create()), смещение внутри буфера в байтах и размер данных буфера для сжатия (также в байтах). Функция вернет новое значение идентификатора буфера для сжатого буфера или значение меньше 0, если по какой-либо причине она не выполнилась. Эта функция не изменяет исходный буфер.

-

-

Синтаксис:

-

buffer_compress(buffer, offset, size);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to compress.
offsetThe offset within the buffer to compress (in bytes).
sizeThe size of the buffer area to compress (in bytes).
-

-

Возвращается:

-

Buffer ID

-

-

Пример:

-

var srcBuff = buffer_create(1024, buffer_grow, 1);
- buffer_write(srcBuff, global.DataString);
- var cmpBuff = buffer_compress(srcBuff, 0, buffer_tell(srcBuff));
- buffer_save(cmpBuff, "Player_Save.sav");
- buffer_delete(srcBuff);
- buffer_delete(cmpBuff);

-

Приведенный выше код создает буфер и заполняет его данными из строки. Затем этот буфер сжимается и сохраняется, а исходный и сжатый буферы удаляются.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_copy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_copy.htm index 8a1de6730..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_copy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_copy.htm @@ -1,78 +0,0 @@ - - - - - - buffer_copy - - - - - - - - - - -

buffer_copy

-

Эта функция может быть использована для копирования сегмента (или всех) данных, хранящихся в одном буфере, в другой. При использовании двух буферов и копировании из одного в другой оба буфера должны быть предварительно созданы с помощью функции buffer_create() (например), и вы можете указать смещение данных (в байтах) для начальной точки данных, копируемых из исходного буфера, относительно начала буфера, а также другое смещение данных для определения позиции копирования данных в - в буфере назначения.

-

ПРИМЕЧАНИЕ: Копирование в один и тот же буфер невозможно.

-

-

Синтаксис:

-

buffer_copy(src_buffer, src_offset, size, dest_buffer, dest_offset);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
src_bufferThe index of the buffer to copy from.
src_offsetThe data offset to start copying from (in bytes).
sizeThe size of the data to copy (in bytes).
dest_bufferThe index of the buffer to copy to.
dest_offsetThe offset position to copy the data to (in bytes).
-

-

Возвращается:

-

-

-

Пример:

-

buffer_copy(buff1, 0, 2048, buff2, 2048);

-

Приведенный выше код скопирует данные, хранящиеся в буфере, индексированном в переменной "buff1", а затем вставит их в буфер, индексированный в переменной "buff2", но со смещением на 2048 байт.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_copy_from_vertex_buffer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_copy_from_vertex_buffer.htm index a6f92c376..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_copy_from_vertex_buffer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_copy_from_vertex_buffer.htm @@ -1,82 +0,0 @@ - - - - - - buffer_copy_from_vertex_buffer - - - - - - - - - - -

buffer_copy_from_vertex_buffer

-

Эта функция может использоваться для копирования некоторых (или всех) вершинных данных, хранящихся в одном вершинном буфере, в ранее созданный обычный буфер. При копировании из вершинного буфера в обычный буфер с помощью этой функции оба буфера должны быть предварительно созданы (с помощью функций vertex_create_buffer() и buffer_create() например). Вы можете указать диапазон вершинных данных, которые вы хотите скопировать в буфер, где начальная вершина может быть в любом месте от 0 до количества вершин -1, и вы можете указать количество вершин с этой точки для копирования. Вы можете использовать функцию vertex_get_number() для буфера вершин, чтобы получить общее количество хранящихся вершин. Наконец, вы указываете индекс буфера для копирования данных вершины, а также смещение данных, чтобы определить позицию для копирования данных вершины в буфере назначения.

-

-

Синтаксис:

-

buffer_copy_from_vertex_buffer(vertex_buffer, start_vertex, num_vertices, dest_buffer, dest_offset);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
vertex_bufferИдентификатор буфера вершинThe index of the vertex buffer to copy from.
start_vertexРеальноThe starting vertex.
num_verticesРеальноThe total number of vertices to use.
dest_bufferИдентификатор буфераThe index of the buffer to copy to.
dest_offsetРеальноThe offset position to copy the data to (in bytes).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var v_num = vertex_get_number(model_buff); buffer_copy_from_vertex_buffer(model_buffer, 0, v_num - 1, player_buffer, 0);

-

Приведенный выше код скопирует данные вершин, хранящиеся в буфере вершин, индексированном в переменной "model_buffer", а затем вставит их в буфер, индексированный в переменной "player_buffer".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_copy_stride.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_copy_stride.htm index 0c9aa900d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_copy_stride.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_copy_stride.htm @@ -1,191 +0,0 @@ - - - - - - buffer_copy_stride - - - - - - - - - - -

buffer_copy_stride

-

This function copies the given number of items from a source buffer to a destination buffer, where all items have the same size in bytes and are spaced apart evenly by a different number of bytes in the source and destination buffer.

-

You can use this function with buffers that store items and their attributes in a structured way, e.g. game data, vertex data or any other data in a known format.

-
-

-

The function call belonging to the above diagram would look as follows: buffer_copy_stride(src_buffer, 6, 2, 6, 3, dest_buffer, 8, 2);

-

You can interpret the source offset as the sum of two offsets: an offset to the start of the item data and an offset within the item (i.e. which attribute of the item to copy).

-

Stride

-

The stride is the number of bytes to go from one item to the next. A positive value moves forward, a negative value moves backward.

-

For example, in case of GameMaker's default vertex format the stride value is 24 (3*4+4*1+2*4). The number of bytes to move from one (x, y, z) position in the buffer to the next is 24, the number of bytes to move from one colour value to the next is also 24, as well as the number of bytes to move from one UV to the next.

-

You "select" the attribute you want to copy by changing the offset, meanwhile the stride remains unchanged: 

-

-

How It Works

-
    -
  • The function starts by moving src_offset bytes from the start of the source buffer and dest_offset bytes from the start of the destination buffer.
  • -
  • It then repeats src_count times the following:  -
      -
    • Copy src_size bytes of data from the current offset in the source buffer to the current offset in the destination buffer.
    • -
    • Move src_stride bytes to the right or to the left in the source buffer, depending on the sign of src_stride, and dest_stride bytes to the left or right in the destination buffer.
    • -
    -
  • -
-

Usage Notes

-
    -
  • The stride value can be greater than the number of bytes that an item actually uses. These bytes in between may contain other data or no useful data at all.
  • -
  • By setting dest_stride to a value greater than src_size you can insert "gaps" between values written to the destination buffer.
  • -
  • In case of a fixed-size buffer (buffer_fixed) or of a non-wrapping buffer the copying stops when the end of the buffer is reached. For a buffer that's set to wrap (buffer_wrap) copying will continue from the start of the buffer.
  • -
-

 

-

Syntax:

-

buffer_copy_stride(src_buffer, src_offset, src_size, src_stride, src_count, dest_buffer, dest_offset, dest_stride)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ArgumentTypeDescription
src_bufferBuffer IDThe buffer containing the source data
src_offsetRealThe offset, in bytes, in the source buffer to start copying bytes. When negative, it is subtracted from the buffer size.
src_sizeRealThe size, in bytes, of a single item to copy
src_strideRealThe number of bytes between two items. This value can be negative and be set to 0.
src_countRealThe number of items to copy
dest_bufferBuffer IDThe buffer to copy the data to
dest_offsetRealThe offset, in bytes, in the destination buffer to write the data. This offset can be negative.
dest_strideRealThe number of bytes between two items in the destination buffer. This value can be negative.
-

 

-

Returns:

-

N/A

-

 

-

Example 1: Basic Usage

-

var _num_items = 200;
- var _attribute_size = buffer_sizeof(buffer_u16);
- var _itemsize_source = buffer_sizeof(buffer_f32) + _attribute_size;
- buff_source = buffer_create(_num_items * _itemsize_source, buffer_fixed, 1);
- buff_destination = buffer_create(_num_items * _attribute_size, buffer_fixed, 1);
-
- var _i = 0;
- repeat(_num_items)
- {
-     buffer_write(buff_source, buffer_f32, random_range(-100, 100));
-     buffer_write(buff_source, buffer_u16, _i++);
- }
-
- buffer_copy_stride(buff_source, 4, _attribute_size, _itemsize_source, _num_items, buff_destination, 0, _attribute_size); -

-

The above code shows basic usage of the buffer_copy_stride function. First, a couple of temporary variables are defined that store the number of items in source and destination buffer, the stride of the source buffer and the size of an item. Two buffers of fixed size are then created, one to store the source data and one to store the destination data. The references to them are stored in the variables buff_source and buff_destination respectively. Next, the source buffer has 200 items written to it using buffer_write. Every item consists of one random buffer_f32 value between -100 and 100 followed by a buffer_f16 value that stores an index. Finally, the second buffer_f16 element of each item is copied to the destination buffer using buffer_copy_stride. The first buffer_f16 value is written to byte 0 (as dest_offset is set to 0), the next one is written to byte 2 (dest_stride is set to _itemsize which is 2), the next one to byte 4, and so on. After the function call, buff_destination will contain the 200 buffer_f16 values in buff_source one right after the other, with no bytes in-between.

-

 

-

Example 2: Negative Offset & Stride

-

var _item_size = buffer_sizeof(buffer_f32);
- var _num_items = 100;
-
- var _i = 0;
- buff_numbers = buffer_create(_num_items * _item_size, buffer_fixed, 4);
- repeat(_num_items) buffer_write(buff_numbers, buffer_f32, _i++);
-
- buff_data = buffer_create(2048, buffer_fixed, 4);
- buffer_copy_stride(buff_numbers, -_item_size, _item_size, -_item_size, _num_items, buff_data, 0, 12); -

-

The above code first initialises two temporary variables that are used in the code that follows: the size of a single item _item_size and the number of items _num_items. It then creates a new buffer of a fixed size with room for this number of items. The byte alignment can be set to 4 since every item is stored at an integer multiple of 4 bytes. Next, a repeat loop writes the values 0 to 100 to the buffer, using buffer_write. After that, another fixed-size buffer of 2048 bytes is created and stored in the variable buff_data. Finally, buffer_copy_stride is called to write the numbers in the source buffer buff_numbers to the destination buffer buff_data. Because of the negative value of the source offset, the last number in the buffer is the first one to be written. Also, the numbers are traversed backwards because of the negative value of the source stride. The destination stride of 12 makes sure the numbers are spaced 12 bytes apart in buff_data. As a result buff_data contains the numbers in reverse order, with 12 bytes between each of them.

-

 

-

Example 3: Stride set to 0

-

var _item_size = buffer_sizeof(buffer_f32);
- buff_source = buffer_create(_item_size, buffer_fixed, 4);
- buff_destination = buffer_create(16 * _item_size, buffer_fixed, 4);
-
- buffer_write(buff_source, buffer_f32, 1);
-
- buffer_copy_stride(buff_source, 0, _item_size, 0, 4, buff_destination, 0, 5 * _item_size); -

-

The above code shows how you can use a stride value of 0 to keep copying the same value multiple times to a destination buffer.

-

First, the size of an item is set to the size of a float (buffer_f32) and stored in _item_size. Next, the source and destination buffer are created with a fixed size and an alignment of 4 (since floats always align to multiples of 4 bytes). The source buffer can only store a single float, the destination buffer can store 16 floats. Then, the value 1 is written to the source buffer. Finally, this value is copied a total of 4 times using buffer_copy_stride with a destination stride value of 5 times the item size. After the function has finished buff_destination will contain the values of an identity matrix.

-

 

-

Example 4: Interleaving Data from Multiple Buffers

-

Create Event

-

vertex_format_begin();
- array_foreach([vertex_format_add_position_3d, vertex_format_add_colour, vertex_format_add_texcoord], script_execute);
- vertex_format = vertex_format_end();
-
- buff_positions_xyz = buffer_base64_decode("JqwCQwuLi0J5DIBBcQc3Q27Ar0NNpBZD+WSqQ8B9OEPB0YtD");
- buff_colours_rgba = buffer_base64_decode("Ud93/wghI//D2cr/");
- buff_uvs = buffer_base64_decode("9KQyP69/UT9Uxak+ybENPzKNZzwxS1A9");
-
- buff_vertex_data = buffer_create(3 * 24, buffer_fixed, 1);
- buffer_copy_stride(buff_positions_xyz, 0, 3 * 4, 3 * 4, 3, buff_vertex_data, 0, 24);
- buffer_copy_stride(buff_colours_rgba, 0, 4 * 1, 4 * 1, 3, buff_vertex_data, 12, 24);
- buffer_copy_stride(buff_uvs, 0, 2 * 4, 2 * 4, 3, buff_vertex_data, 16, 24);
- vb = vertex_create_buffer_from_buffer(buff_vertex_data, vertex_format); -

-

Draw Event

-

vertex_submit(vb, pr_trianglelist, -1);

-

The above example shows how to join together data that's stored as attributes in separate buffers. The data are combined into a single buffer, in which the data are interleaved.

-

First, in the Create event, the default vertex format is created and assigned to an instance variable vertex_format. Then the three buffers containing the attribute data are created from base64-encoded data: buff_positions_xyz stores the (x, y, z) position data of 3 vertices, buff_colours_rgba stores their RGBA colour data and buff_uvs their UV data. The values of each attribute are stored one after the other, e.g. buff_positions_xyz stores the (x, y, z) position of the first vertex, followed by the (x, y, z) position of the second vertex, followed by that of the third vertex, etc.

-

After that, another buffer buff_vertex_data is created to store the interleaved vertex data. Each of the three calls to buffer_copy_stride then reads the values of each attribute (position, colour and uv) and places them in the correct positions in the destination buffer, leaving room for the other attributes to be written by the next call to the function. Finally a vertex buffer is created from the data in the buffer.

-

In the Draw event, the vertex buffer is submitted. This will draw a triangle.

-


- -

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_crc32.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_crc32.htm index 1f0d8ec3f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_crc32.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_crc32.htm @@ -1,70 +0,0 @@ - - - - - - buffer_crc32 - - - - - - - - - - - -

buffer_crc32

-

Эта функция принимает входные данные из буфера и возвращает хэш контрольной суммы crc32. Вы указываете ID буфера, который нужно использовать, затем значение смещения (в байтах) для начала, а затем размер (опять же в байтах) для области, которую нужно хэшировать, и - функция вернет 32-битное целочисленное значение для этого региона.

-

-

Синтаксис:

-

buffer_crc32(buffer, offset, size);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to use.
offsetThe data offset value.
sizeThe size of the buffer.
-

-

Возвращается:

-

-

-

Пример:

-

check_val = buffer_crc32(buff, 0, buffer_get_size(buff));

-

Приведенный выше код создаст хэш-значение контрольной суммы crc32 для полных данных, хранящихся в буфере, индексируемом переменной "buff", и сохранит возвращаемое целочисленное хэш-значение в переменной "check_val".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_create.htm index 5e34d90d9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_create.htm @@ -1,125 +0,0 @@ - - - - - - buffer_create - - - - - - - - - - - -

buffer_create

-

Вы используете эту функцию для выделения части памяти под буфер в вашей игре, при этом функция возвращает уникальный идентификатор буфера, который должен храниться в переменной и использоваться для всех последующих обращений к буферу. Затем буфер можно использовать для хранения различных типов данных (указывается при записи в буфер с помощью функции buffer_write() при этом для определения типа буфера используются следующие константы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип буфера Постоянная
ПостояннаяОписание
buffer_fixedБуфер фиксированного размера.
buffer_growБуфер, который будет динамически "расти" по мере добавления данных
buffer_wrapБуфер, в который будут "заворачиваться" данные. Когда добавляемые данные достигнут предела размера буфера, перезапись будет помещена обратно в начало буфера, и дальнейшая запись будет продолжаться с этого момента.
buffer_fastСпециальный "полосатый" буфер, который очень быстро читается/записывается. Может использоваться только с типами данных buffer_u8 и должен быть выровнен по 1 байту.
buffer_vbufferЭтот тип буфера должен использоваться только в качестве буфера вершин.
-

Помимо типа буфера, вам также необходимо задать выравнивание байтов для буфера. Это значение зависит от данных, которые вы хотите сохранить в буфере, и в большинстве случаев вполне подойдет значение 1. Однако помните, что для некоторых операций необходимо определенное выравнивание, а неправильное выравнивание может привести к ошибкам (подробнее о выравнивании см. в разделе " Буферы"). Ниже приведено общее руководство, показывающее, какие значения наиболее подходят для каждого типа данных (если есть сомнения, используйте выравнивание 1):

-
    -
  • Строки должны быть выровнены по 1 байту.
  • -
  • Знаковые или беззнаковые 8-битные целые числа могут быть выровнены по любому значению, но обратите внимание, что для быстрого буфера (см. buffer_write()) оно должно быть выровнено по 1.
  • -
  • Знаковые или беззнаковые 16-битные целые числа должны быть выровнены по 2 байтам.
  • -
  • Знаковые или беззнаковые 32-битные целые числа должны быть выровнены по 4 байтам
  • -
  • Плавающие символы размером до 16 бит должны быть выровнены по 2 байтам. (В настоящее время не поддерживается!)
  • -
  • Плавающие символы размером до 32 бит должны быть выровнены по 4 байтам.
  • -
  • Плавающие символы размером до 64 бит должны быть выровнены по 8 байтам.
  • -
-

ПРИМЕЧАНИЕ: Выравнивание байтов может быть очень важным, так как неправильный выбор может отрицательно повлиять на производительность.

-

ПРИМЕЧАНИЕ: Важно, чтобы вы удаляли любые динамически созданные ресурсы, подобные этому, из памяти, когда они вам больше не нужны, чтобы предотвратить утечку памяти, поэтому, когда вы закончите работу с созданным буфером, вы должны освободить его снова, используя buffer_delete().

-

-

Синтаксис:

-

buffer_create(size, type, alignment)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
sizeРеальноThe size (in bytes) of the buffer.
typeТип буфера ПостояннаяThe type of buffer to create (see the constants list above).
alignmentРеальноThe byte alignment for the buffer
-

-

Возвращается:

-

Buffer ID

-

-

Пример:

-

player_buffer = buffer_create(16384, buffer_fixed, 2);

-

Приведенный выше код выделяет 16384 байта памяти под буфер и возвращает индекс этого буфера, который хранится в переменной "player_buffer", для дальнейшего использования. Буфер выравнивается по границе в два байта.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_create_from_vertex_buffer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_create_from_vertex_buffer.htm index 626d564e8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_create_from_vertex_buffer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_create_from_vertex_buffer.htm @@ -1,118 +0,0 @@ - - - - - - buffer_create_from_vertex_buffer - - - - - - - - - - - -

buffer_create_from_vertex_buffer

-

Вы используете эту функцию для выделения части памяти под буфер в вашей игре, заполненный данными из ранее созданного буфера вершин. Функция возвращает уникальный идентификатор буфера, который должен храниться в переменной и использоваться для всех последующих обращений к буферу. Функция принимает идентификатор вершинного буфера (возвращаемый функцией vertex_create_buffer(), например), а для определения типа буфера используются следующие константы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
buffer_fixedБуфер фиксированного размера.
buffer_growБуфер, который будет динамически "расти" по мере добавления данных
buffer_wrapБуфер, в который будут "заворачиваться" данные. Когда добавляемые данные достигнут предела размера буфера, перезапись будет помещена обратно в начало буфера, и дальнейшая запись продолжится с этого момента.
buffer_fastСпециальный "полосатый" буфер, который очень быстро читается/записывается. Может использоваться только с типами данных buffer_u8 и должен быть выровнен по 1 байту.
buffer_vbufferЭтот тип буфера должен использоваться только в качестве буфера вершин.
-

Помимо типа буфера, вам также необходимо задать выравнивание байтов для буфера. Это значение зависит от данных, которые вы хотите сохранить в буфере, и в большинстве случаев вполне подойдет значение 1. Однако помните, что для некоторых операций необходимо определенное выравнивание, а неправильное выравнивание может привести к ошибкам (подробнее о выравнивании см. в разделе " Буферы"). Ниже приведено общее руководство, показывающее, какие значения наиболее подходят для каждого типа данных (если есть сомнения, используйте выравнивание 1):

-
    -
  • Строки должны быть выровнены по 1 байту.
  • -
  • Знаковые или беззнаковые 8-битные целые числа могут быть выровнены по любому значению, но обратите внимание, что для быстрого буфера (см. buffer_write()) оно должно быть выровнено по 1.
  • -
  • Знаковые или беззнаковые 16-битные целые числа должны быть выровнены по 2 байтам.
  • -
  • Знаковые или беззнаковые 32-битные целые числа должны быть выровнены по 4 байтам
  • -
  • Плавающие символы размером до 16 бит должны быть выровнены по 2 байтам. (В настоящее время не поддерживается!)
  • -
  • Плавающие символы размером до 32 бит должны быть выровнены по 4 байтам.
  • -
  • Плавающие символы размером до 64 бит должны быть выровнены по 8 байтам.
  • -
-

ПРИМЕЧАНИЕ: Буферы вершин выравниваются по 1 байту, но вы можете создать буфер с любым выравниванием в зависимости от того, как вы хотите обрабатывать данные, поскольку данные вершин - это просто копия необработанной памяти в буфер.

-

ПРИМЕЧАНИЕ: Важно, чтобы вы удаляли любые динамически созданные ресурсы, подобные этому, из памяти, когда они вам больше не нужны, чтобы предотвратить утечку памяти, поэтому, когда вы закончите работу с созданным буфером, вы должны освободить его снова, используя buffer_delete(). Также обратите внимание, что буфер вершин, используемый для создания нового буфера, также не удаляется из памяти, и вы должны использовать функцию vertex_delete_buffer() когда она больше не нужна.

-

-

Синтаксис:

-

buffer_create_from_vertex_buffer(vertex_buffer, type, alignment)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
vertex_bufferИдентификатор буфера вершинThe vertex buffer index to use.
typeТип буфера ПостояннаяThe type of buffer to create (see the constants list above).
alignmentРеальноThe byte alignment for the buffer
-

-

Возвращается:

-

Buffer ID

-

-

Пример:

-

player_buffer = buffer_create_from_vertex_buffer(model_buffer, buffer_grow, 1);

-

Приведенный выше код выделяет память под буфер, затем копирует в него данные из заданного буфера вершин, возвращая индекс нового буфера, который хранится в переменной "player_buffer", для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_create_from_vertex_buffer_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_create_from_vertex_buffer_ext.htm index ae30f2845..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_create_from_vertex_buffer_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_create_from_vertex_buffer_ext.htm @@ -1,129 +0,0 @@ - - - - - - buffer_create_from_vertex_buffer_ext - - - - - - - - - - - -

buffer_create_from_vertex_buffer_ext

-

Вы используете эту функцию для выделения части памяти под буфер в вашей игре, заполненный данными из ранее созданного буфера вершин. Функция возвращает уникальный идентификатор буфера, который должен храниться в переменной и использоваться для всех последующих обращений к буферу. Функция принимает идентификатор вершинного буфера (возвращаемый функцией vertex_create_buffer(), например), а для определения типа буфера используются следующие константы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
buffer_fixedБуфер фиксированного размера.
buffer_growБуфер, который будет динамически "расти" по мере добавления данных
buffer_wrapБуфер, в который будут "заворачиваться" данные. Когда добавляемые данные достигнут предела размера буфера, перезапись будет помещена обратно в начало буфера, и дальнейшая запись продолжится с этого момента.
buffer_fastСпециальный "полосатый" буфер, который очень быстро читается/записывается. Может использоваться только с типами данных buffer_u8 и должен быть выровнен по 1 байту.
buffer_vbufferЭтот тип буфера должен использоваться только в качестве буфера вершин.
-

Помимо типа буфера, вам также необходимо задать выравнивание байтов для буфера. Это значение зависит от данных, которые вы хотите сохранить в буфере, и в большинстве случаев вполне подойдет значение 1. Однако помните, что для некоторых операций необходимо определенное выравнивание, и неправильное выравнивание может привести к ошибкам (подробнее о выравнивании см. в разделе Выравнивание буфера). Ниже приведено общее руководство, показывающее, какие значения наиболее подходят для каждого типа данных (если есть сомнения, используйте выравнивание 1):

-
    -
  • Строки должны быть выровнены по 1 байту.
  • -
  • Знаковые или беззнаковые 8-битные целые числа могут быть выровнены по любому значению, но обратите внимание, что для быстрого буфера (см. buffer_write()) оно должно быть выровнено по 1.
  • -
  • Знаковые или беззнаковые 16-битные целые числа должны быть выровнены по 2 байтам.
  • -
  • Знаковые или беззнаковые 32-битные целые числа должны быть выровнены по 4 байтам
  • -
  • Плавающие символы размером до 16 бит должны быть выровнены по 2 байтам. (В настоящее время не поддерживается!)
  • -
  • Плавающие символы размером до 32 бит должны быть выровнены по 4 байтам.
  • -
  • Плавающие символы размером до 64 бит должны быть выровнены по 8 байтам.
  • -
-

ПРИМЕЧАНИЕ: Буферы вершин выравниваются по 1 байту, но вы можете создать буфер с любым выравниванием в зависимости от того, как вы хотите обрабатывать данные, поскольку данные вершин - это просто копия необработанной памяти в буфер.

-

Последние два аргумента используются для указания диапазона вершинных данных, которые вы хотите скопировать во вновь созданный буфер. Начальная вершина может быть в любом месте от 0 до количества вершин -1, а затем вы указываете количество вершин от этой точки для копирования. Вы можете использовать функцию vertex_get_number() для буфера вершин, чтобы получить общее количество хранящихся вершин.

-

ПРИМЕЧАНИЕ: Важно, чтобы вы удаляли любые динамически созданные ресурсы, подобные этому, из памяти, когда они вам больше не нужны, чтобы предотвратить утечку памяти, поэтому, когда вы закончите работу с созданным буфером, вы должны освободить его снова, используя buffer_delete(). Также обратите внимание, что буфер вершин, используемый для создания нового буфера, также не удаляется из памяти, и вы должны использовать функцию vertex_delete_buffer() когда она больше не нужна.

-

-

Синтаксис:

-

buffer_create_from_vertex_buffer_ext(vertex_buffer, type, alignment, start_vertex, num_vertices)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
vertex_bufferИдентификатор буфера вершинThe vertex buffer index to use.
typeТип буфера ПостояннаяThe type of buffer to create (see the constants list below).
alignmentРеальноThe byte alignment for the buffer
start_vertexРеальноThe starting vertex.
num_verticesРеальноThe total number of vertices to copy.
-

-

Возвращается:

-

Buffer ID

-

-

Пример:

-

var v_num = vertex_get_number(model_buff); player_buffer = buffer_create_from_vertex_buffer(model_buffer, buffer_grow, 1, 0, v_num - 1);

-

Приведенный выше код выделяет память под буфер, затем копирует в него данные всех вершин из заданного буфера вершин, возвращая индекс нового буфера, который хранится в переменной "player_buffer", для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_decompress.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_decompress.htm index 664ec908e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_decompress.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_decompress.htm @@ -1,62 +0,0 @@ - - - - - - buffer_decompress - - - - - - - - - - -

buffer_decompress

-

С помощью этой функции вы можете распаковать ранее сжатый буфер, используя сжатие zlib. Вы указываете идентификатор буфера для распаковки, и функция возвращает новый идентификатор буфера, содержащий несжатые данные. Если декомпрессия не удалась (например, вы предоставляете буфер, который не был сжат), то функция вернет значение меньше 0.

-

-

Синтаксис:

-

buffer_decompress(buffer);

- - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to decompress.
-

-

Возвращается:

-

Buffer ID

-

-

Пример:

-

var cmpBuff = buffer_load("Player_Save.sav");
- var srcBuff = buffer_decompress(cmpBuff);
- global.DataString = buffer_read(srcBuff, buffer_string);

-

Приведенный выше код сначала загрузит сохраненный буфер, затем распакует его и, наконец, прочитает строковые данные из распакованного буфера в глобальную переменную.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_delete.htm index 272e04b1f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_delete.htm @@ -1,63 +0,0 @@ - - - - - - buffer_delete - - - - - - - - - - -

buffer_delete

-

С помощью этой функции вы можете удалить буфер, ранее созданный с помощью функции buffer_create() из памяти, освобождая ресурсы, использованные для его создания, и удаляя любые данные, которые он может содержать в данный момент.

-

ПРИМЕЧАНИЕ: Важно всегда удалять любые динамически создаваемые ресурсы из памяти, когда они больше не нужны, чтобы предотвратить утечку памяти.

-

ВАЖНО! При создании буфера значение индекса, используемое для его идентификации, является целым числом, начинающимся с 0. Эти индексы повторно используются GameMaker, поэтому значение индекса уничтоженного буфера может быть использовано впоследствии вновь созданным, - поэтому мы рекомендуем после уничтожения буфера установить любую переменную, содержащую индекс буфера, в значение -1.

-

-

Синтаксис:

-

buffer_delete(buffer)

- - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to delete.
-

-

Возвращается:

-

-

-

Пример:

-

buffer_delete(player_buffer);
player_buffer = -1;

-

Приведенный выше код удалит ранее созданный буфер с id, хранящимся в переменной "player_buffer", а затем установит переменную в -1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_exists.htm index 946c80cb6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_exists.htm @@ -1,64 +0,0 @@ - - - - - - buffer_exists - - - - - - - - - - - -

buffer_exists

-

Эта функция может быть использована для проверки переменной на предмет того, содержит ли она действительное значение идентификатора буфера или нет. Если да, то функция вернет true, в противном случае она вернет false.

-

-

Синтаксис:

-

buffer_exists(buffer)

- - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to check.
-

-

Возвращается:

-

-

-

Пример:

-

if buffer_exists(buff)
- {
-     buffer_delete(buff);
- }

-

Приведенный выше код проверяет, содержит ли переменная "buff" идентификатор буфера, и если да, то буфер удаляется.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_fill.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_fill.htm index 3fabbfc4f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_fill.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_fill.htm @@ -1,78 +0,0 @@ - - - - - - buffer_fill - - - - - - - - - - -

buffer_fill

-

Эта функция может быть использована для заполнения ранее созданного буфера данными заданного типа и значения. Данные, которыми вы заполняете буфер, должны соответствовать аргументу "тип" этой функции, то есть вы не можете пытаться заполнить буфер строкой, а использовать тип unsigned 16bit integer, например. - строкой и использовать тип unsigned 16bit integer, например. Константы типов такие же, как и те, которые используются функциями buffer_read() и buffer_write() функции. "Размер" - это размер буфера (в байтах), который вы хотите заполнить, а смещение - это значение смещения (также в байтах) от начала буфера для начала заполнения.

-

-

Синтаксис:

-

buffer_fill(buffer, offset, type, value, size);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to fill.
offsetThe data offset value (in bytes).
typeThe type of data that is to be written to the buffer (see the list of constants here).
valueThe data to write.
sizeThe size of the buffer (in bytes) that you wish to fill.
-

-

Возвращается:

-

-

-

Пример:

-

map_buffer = buffer_create(16384, buffer_fixed, 0);
buffer_fill(map_buffer, 0, buffer_u16, 0, 16384);

-

Приведенный выше код находит начало буфера с идентификатором, хранящимся в переменной "buff", и записывает в него серию знаковых 16-битных целочисленных значений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_address.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_address.htm index e43d73966..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_address.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_address.htm @@ -1,68 +0,0 @@ - - - - - - buffer_get_address - - - - - - - - - - - -

buffer_get_address

-

С помощью этой функции вы можете получить указатель на необработанный, выровненный адрес буфера. Это в первую очередь предназначено для использования расширениями, так как вы можете передать им это значение, позволяя им получить доступ к данным буфера. Обратите внимание, что есть несколько вещей - которые нельзя делать с буфером при доступе из расширения:

-
    -
  • Вы не можете освободить память.
  • -
  • Изменить размер памяти невозможно.
  • -
  • Вы не можете писать дальше адреса буфера плюс размер буфера (вы можете использовать buffer_get_size() для этого), иначе вы получите ошибку выхода за границы.
  • -
-

-

Синтаксис:

-

buffer_get_address(buffer);

- - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to use.
-

-

Возвращается:

-

-

-

Пример:

-

var b_address = buffer_get_address(buff_model);
var b_end_address = b_address + buffer_get_size(buff_model);

-

Приведенный выше код получит адрес памяти буфера, индексированного в переменной "buff_model", а затем получит адрес памяти для конца буфера с помощью функции buffer_get_size(), сохранив оба значения в локальных переменных для дальнейшего использования. - дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_alignment.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_alignment.htm index 3d834cf78..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_alignment.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_alignment.htm @@ -1,61 +0,0 @@ - - - - - - buffer_get_alignment - - - - - - - - - - - -

buffer_get_alignment

-

С помощью этой функции можно получить выравнивание по байтам для заданного идентификатора буфера.

-

-

Синтаксис:

-

buffer_get_alignment(buffer);

- - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to check.
-

-

Возвращается:

-

-

-

Пример:

-

alignment = buffer_get_alignment(buff);

-

Приведенный выше код получит выравнивание буфера из значения, проиндексированного в переменной "buff", и сохранит его в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_size.htm index 6b9a18aab..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_size.htm @@ -1,64 +0,0 @@ - - - - - - buffer_get_size - - - - - - - - - - - -

buffer_get_size

-

С помощью этой функции вы можете получить размер заданного буфера в байтах.

-

-

Синтаксис:

-

buffer_get_size(buffer);

- - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфераThe index of the buffer to get the size of.
-

-

Возвращается:

-

Real

-

-

Пример:

-

var _size = buffer_get_size(player_data);
- var _temp = buffer_create(_size, buffer_fixed, 0);

-

Приведенный выше код создаст новый буфер и сохранит его индекс в локальной переменной "_temp", причем размер этого нового буфера будет равен размеру буфера, проиндексированного в переменной "player_data".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_surface.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_surface.htm index 427a0b842..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_surface.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_surface.htm @@ -1,78 +0,0 @@ - - - - - - buffer_get_surface - - - - - - - - - - - -

buffer_get_surface

-

С помощью этой функции вы можете записать информацию с поверхности в заданный буфер. Буфер должен быть создан ранее и представлять собой выровненный по 1 байту буфер, достаточно большой, чтобы хранить данные для поверхности, которую вы собираетесь записать (если не уверены, используйте растущий буфер или смотрите пример внизу этой страницы).

-

Информация для поверхности всегда будет записываться в начало буфера (независимо от позиции поиска), но вы можете выбрать значение смещения (в байтах) для перемещения позиции записи от начала буфера.

-

Обратите внимание, что функция записывает каждый пиксель поверхности в буфер, используя форматирование RGBA на цели Windows, но на других целях оно может быть другим в зависимости от ОС или даже устройства.

-

ПРИМЕЧАНИЕ: Эта функция изменилась начиная с обновления GameMaker 2.3.1 и далее. В предыдущих версиях использовалась константа buffer_surface_copy, которая теперь устарела.

-

-

Синтаксис:

-

buffer_get_surface(buffer, surface, offset);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфераThe index of the buffer to use.
surfaceИдентификатор поверхностиThe index of the surface to use.
offsetРеальноThe data offset value (in bytes).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

buffer = buffer_create(surf_width * surf_height * 4, buffer_fixed, 1);
- buffer_get_surface(buffer, surface, 0);

-

Этот код создаст буфер фиксированного размера, способный хранить 4 байта на пиксель (для компонентов R, G, B и A) на основе точного размера поверхности, а затем скопирует в него данные поверхности.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_type.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_type.htm index 95a85f0c9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_type.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_get_type.htm @@ -1,94 +0,0 @@ - - - - - - buffer_get_type - - - - - - - - - - - -

buffer_get_type

-

С помощью этой функции вы получаете тип буфера, на который ссылается значение идентификатора буфера. Возвращаемое значение будет одной из следующих констант:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
buffer_fixedБуфер фиксированного размера.
buffer_growБуфер, который будет динамически "расти" по мере добавления данных
buffer_wrapБуфер, в который будут "заворачиваться" данные. Когда добавляемые данные достигнут предела размера буфера, перезапись будет помещена обратно в начало буфера, и дальнейшая запись будет продолжаться с этого момента.
buffer_fastСпециальный "полосатый" буфер, который очень быстро читается/записывается. Может использоваться только с типами данных buffer_u8 и должен быть выровнен по 1 байту.
buffer_vbufferБуфер вершин
-

-

Синтаксис:

-

buffer_get_type(buffer);

- - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to check.
-

-

Возвращается:

-

Buffer Type Constant

-

-

Пример:

-

type = buffer_get_type(buff);

-

Приведенный выше код получит тип буфера из значения, проиндексированного в переменной "buff", и сохранит его в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_load.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_load.htm index 6d9029d93..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_load.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_load.htm @@ -1,67 +0,0 @@ - - - - - - buffer_load - - - - - - - - - - -

buffer_load

-

Эта функция используется для загрузки буфера, который был ранее сохранен с помощью buffer_save() функции, а также любые Включенные файлы или файлы, загруженные извне. Она вернет идентификатор нового буфера, который создается функцией как "растущий" буфер (см. здесь) с выравниванием по байтам 1. Этот идентификатор должен храниться в переменной и использоваться во всех последующих вызовах функций к этому буферу. Если по какой-либо причине загрузка не удалась, функция вернет -1, а в окне вывода компилятора появится сообщение о том, что загрузка не удалась.

-

ПРИМЕЧАНИЕ Важно, чтобы вы удаляли любые динамически созданные ресурсы, подобные этому, из памяти, когда они вам больше не нужны, чтобы предотвратить утечку памяти, поэтому, когда вы закончите работу с созданным буфером, вы должны освободить его снова, используя buffer_delete().

-

Примечания для конкретной платформы

-
    -
  • На HTML5 любые буферы, загруженные из локального хранилища, будут декодированы с использованием base64 (поскольку они сохраняются как строки base64), однако использование этой функции для Included Files или любых внешних файлов не будет использовать декодирование base64, поскольку не ожидается, что они будут в формате base64.
  • -
  • На HTML5 все Включенные файлы хранятся как текст в кодировке UTF-8, что может привести к увеличению размера загружаемого буфера по сравнению с оригинальным файлом, так как версия файла в кодировке UTF-8 может иметь другой размер, чем ваш оригинальный файл (из-за изменения формата).
  • -
-

-

-

Синтаксис:

-

buffer_load(filename);

- - - - - - - - - - - -
АргументТипОписание
filenameThe name of the file to load from.
-

-

Возвращается:

-

Buffer ID

-

-

Пример:

-

player_buffer = buffer_load("Player_Save.sav");

-

Приведенный выше код загружает в память ранее сохраненный буфер, создавая новый буфер. Индекс этого нового буфера хранится в переменной "player_buffer".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_load_async.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_load_async.htm index 227203e86..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_load_async.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_load_async.htm @@ -1,87 +0,0 @@ - - - - - - buffer_load_async - - - - - - - - - - -

buffer_load_async

-

С помощью этой функции вы можете загрузить файл, созданный ранее с помощью функции buffer_save() (или любой другой функции для сохранения буферов) в буфер. Смещение" определяет начальную позицию в буфере для загрузки (в байтах), а "размер" - размер области буфера, загружаемой с этого смещения и далее (также в байтах). Вы можете указать значение -1 для аргумента size, и тогда будет загружен весь буфер. Обратите внимание, что функция будет загружаться из папки "по умолчанию", которую не нужно включать в указанный вами путь к файлу. Эта папка будет создана, если она не существует или когда вы сохраняете файл с помощью функции buffer_save_async().

-

Функция возвращает уникальное значение ID, которое затем может быть использовано в асинхронном событии сохранения/загрузки для проверки значения async_load ID, как показано в расширенном примере ниже. Карта async_load в событии будет содержать следующие две пары ключ/значение:

-
    -
  • "id": идентификатор асинхронной функции, возвращаемый функцией сохранения.
  • -
  • "status": возвращает true, если данные были сохранены/загружены правильно, и false в противном случае.
  • -
-

ПРИМЕЧАНИЕ В HTML5 это предпочтительный метод загрузки файла, если вы загружаете его с сервера, а не из локального хранилища, так как синхронная загрузка уже устарела в большинстве браузеров и со временем будет отменена.

-

Пожалуйста, ознакомьтесь со страницей buffer_load() для получения информации о конкретной платформе.

-

-

Синтаксис:

-

buffer_load_async(buffer, filename, offset, size);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to load.
filenameThe name of the file to load.
offsetThe offset within the buffer to load to (in bytes).
sizeThe size of the buffer area to load (in bytes).
-

-

Возвращается:

-

Async Request ID

-

-

Расширенный пример:

-

Функция buffer_load_async() может быть вызвана из любого события, и поскольку она асинхронна, обратный вызов может быть почти мгновенным или занять несколько секунд. Вызов функции прост и выглядит следующим образом:

-

loadid = buffer_load_async(buff, "Player_Save.sav", 0, 16384);

-

Приведенный выше код загружает содержимое файла "Player_Save.sav" в заданный буфер, сохраняя ID вызова функции в переменной "loadid". После завершения загрузки сработает асинхронное событие Save/Load, и вы сможете разобрать карту async_load на предмет правильного ID функции, как показано ниже:

-

if ds_map_find_value(async_load, "id") == loadid
- {
-     if (ds_map_find_value(async_load, "status") == false)
-     {
-         show_debug_message("Load failed!");
-     }
- }

-

Приведенный выше код сначала проверит ID созданной карты DS, затем проверит статус обратного вызова, опубликовав отладочное сообщение, если возникли какие-либо проблемы.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_load_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_load_ext.htm index 353851eec..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_load_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_load_ext.htm @@ -1,70 +0,0 @@ - - - - - - buffer_load_ext - - - - - - - - - - -

buffer_load_ext

-

Эта функция загрузит данные буфера, которые ранее были сохранены с помощью buffer_save() функции в существующий буфер. Вы указываете ID ранее созданного буфера для загрузки, затем сохраненный файл буфера для загрузки и, наконец, смещение от начала буфера (в байтах), в который вы хотите загрузить данные.

-

Пожалуйста, ознакомьтесь со страницей buffer_load() для получения информации о конкретной платформе.

-

-

Синтаксис:

-

buffer_load_ext(buffer, filename, offset);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to load into.
filenameThe name of the file to load from.
offsetThe offset within the buffer to load to (in bytes).
-

-

Возвращается:

-

-

-

Пример:

-

var pos = buffer_seek(player_buffer, buffer_seek_end, 0);
- buffer_load(player_buffer, "Data_Save.sav", pos);

-

Приведенный выше код сначала получит позицию конца буфера, проиндексированную в переменной "player_buffer", а затем загрузит данные из данного в эту позицию (обратите внимание, что этот пример будет работать только с буферами типа "grow" или "wrap").

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_load_partial.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_load_partial.htm index 91bc131af..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_load_partial.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_load_partial.htm @@ -1,81 +0,0 @@ - - - - - - buffer_load_partial - - - - - - - - - - -

buffer_load_partial

-

Эта функция загрузит некоторые данные из буфера, которые были ранее сохранены с помощью buffer_save() функции в существующий буфер. Вы указываете id ранее созданного буфера для загрузки, затем сохраненный файл буфера для загрузки, а затем смещение от начала буфера (в байтах), из которого вы хотите загрузить данные. Следующие аргументы предназначены для задания длины данных буфера (в байтах) от начальной точки смещения, с которой вы хотите загрузить данные, и точки смещения для загрузки данных в буфер (опять же, в байтах).

-

Пожалуйста, ознакомьтесь со страницей buffer_load() для получения информации о конкретной платформе.

-

-

Синтаксис:

-

buffer_load_partial(buffer, filename, offset, src_len, dest_offset);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to load into (destination).
filenameThe name of the file to load from (source).
offsetThe offset within the destination buffer to load to (in bytes).
src_lenThe length of the part of the source buffer to load (in bytes).
dest_offsetThe offset where to start putting the partial data in the destination buffer (in bytes).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

buff = buffer_create(256, buffer_grow, 1);
- var _file = "save.dat";
- var _so = 6;
- var _sl = 5;
- var _do= 0;
- buffer_load_partial(buff, _file, _so, _sl, _do);

-

Приведенный выше код создаст новый буфер "grow", а затем загрузит в него часть данных, сохраненных в файле "save.dat".

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_md5.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_md5.htm index e69d13b8a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_md5.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_md5.htm @@ -1,72 +0,0 @@ - - - - - buffer_md5 - - - - - - - - - - - -

buffer_md5

-

В криптографии MD5 (Message-Digest algorithm 5) - это широко используемая криптографическая функция хэширования со 128-битным хэш-значением, которая применяется в самых разных приложениях безопасности. - Она также часто используется для проверки целостности данных. Эта функция принимает входные данные из заданного буфера (или части буфера) и возвращает 32-символьный шестнадцатеричный хэш MD5, уникальный для этих данных. Таким образом, вы можете сгенерировать - безопасный ключ, который можно хранить и использовать для проверки целостности информации, отправляемой на внешний сервер (или получаемой от него) (например). При применении этой функции к буферам вы должны указать идентификатор буфера, который нужно - использовать, затем значение смещения (в байтах) для начала, а затем размер (опять же в байтах) для области, которая будет хэшироваться.

-

ПРИМЕЧАНИЕ: MD5 не является полностью безопасным и может быть взломан. См. эту страницу для получения дополнительной информации.

-

-

Синтаксис:

-

buffer_md5(buffer, offset, size);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to use.
offsetThe data offset value.
sizeThe size of the buffer.
-

-

Возвращается:

-

-

-

Пример:

-

check_string = buffer_md5(buff, 0, buffer_get_size(buff));

-

Приведенный выше код создаст md5-хэш для полных данных, хранящихся в буфере, индексируемом переменной "buff", и сохранит возвращенный хэш в переменной "check_string".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_peek.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_peek.htm index e32ea8821..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_peek.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_peek.htm @@ -1,78 +0,0 @@ - - - - - - buffer_peek - - - - - - - - - - - -

buffer_peek

-

С помощью функции buffer_read() вы можете читать данные из заданного буфера в текущей позиции "seek", при этом каждая часть данных читается, продвигаясь вперед по этой позиции на считанные или записанные байты. Однако может возникнуть необходимость прочитать определенный фрагмент данных без изменения текущей позиции поиска, и тогда вы можете использовать эту функцию. Вы просто сообщаете функции идентификатор буфера, затем позицию смещения (от начала буфера) в этом буфере для чтения, а также тип данных, которые вы хотите прочитать.

-

ПРИМЕЧАНИЕ: Использование неправильного типа данных для считываемых данных приведет к получению ошибочных значений!

-

При успешном выполнении функции будет возвращено значение (Real, string, boolean и т.д...) в зависимости от типа данных, в то время как при неудаче будет возвращен просто 0.

-

-

Синтаксис:

-

buffer_peek(buffer, offset, type);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфераThe index of the buffer to use.
offsetРеальноThe offset position (in bytes) within the buffer to read the given data from.
typeТип данных буфера КонстантаThe type of data that is to be read from the buffer (see the list of constants here).
-

-

Возвращается:

-

Real, BooleanString or 0 (if it fails)

-

-

Пример:

-

var red = buffer_peek(buff, 1, buffer_u8);
- var green = buffer_peek(buff, 2, buffer_u8);
- var blue = buffer_peek(buff, 3, buffer_u8);
- image_blend = make_colour_rgb(red, green, blue);

-

Приведенный выше код получит три значения из трех различных позиций в буфере, индексированных в переменной "buff", а затем использует эти значения для установки смешивания изображения экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_poke.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_poke.htm index 0ea90676c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_poke.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_poke.htm @@ -1,77 +0,0 @@ - - - - - - buffer_poke - - - - - - - - - - -

buffer_poke

-

С помощью функции buffer_write() вы можете записывать данные в заданный буфер в текущей позиции "seek", при этом каждая порция данных продвигает эту позицию на записываемые или считываемые байты. Однако может возникнуть необходимость изменить заданный фрагмент данных без изменения текущей позиции поиска, и тогда вы можете использовать эту функцию. Вы просто сообщаете функции индекс буфера, затем позицию смещения от начала буфера (в байтах) в пределах этого буфера для записи, а также тип данных и записываемое значение.

-

-

Синтаксис:

-

buffer_poke(buffer, offset, type, value);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфераThe index of the buffer to use.
offsetРеальноThe offset position (in bytes) within the buffer to write the given data to.
typeТип данных буфера КонстантаThe type of data that is to be written to the buffer (see the list of constants here).
valueПеременнаяThe data to add to the buffer, in accordance with the type specified.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

buffer_poke(buff, 3, buffer_u8, colour_get_blue(image_blend));

-

Приведенный выше код добавит значение синей составляющей цвета, используемого для наложения изображения, в буфер, индексированный в переменной "buff", на третью позицию в буфере и как беззнаковое 8-битное значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_read.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_read.htm index 6f58afcf5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_read.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_read.htm @@ -1,142 +0,0 @@ - - - - - - buffer_read - - - - - - - - - - -

buffer_read

-

Эта функция может быть использована для чтения данных из ранее созданного буфера. Возвращаемое значение будет зависеть от типа считываемых данных, который сам по себе определяется следующими константами:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
buffer_u8Беззнаковое 8-разрядное целое число. Это положительное значение от 0 до 255.
buffer_s8Знаковое 8-разрядное целое число. Это может быть положительное или отрицательное значение от -128 до 127 (0 считается положительным).
buffer_u16Беззнаковое 16-разрядное целое число. Это положительное значение от 0 до 65 535.
buffer_s16Подписанное 16-разрядное целое число. Это может быть положительное или отрицательное значение от -32,768 до 32,767 (0 считается положительным).
buffer_u32Беззнаковое 32-разрядное целое число. Это положительное значение от 0 до 4 294 967 295.
buffer_s32Подписанное 32-разрядное целое число. Это может быть положительное или отрицательное значение от -2,147,483,648 до 2,147,483,647 (0 считается положительным).
buffer_u64Беззнаковое 64-разрядное целое число.
buffer_f1616-разрядное плавающее значение. Это может быть положительное или отрицательное значение в диапазоне +/- 65504. (В настоящее время не поддерживается!)
buffer_f3232-разрядное плавающее значение. Это может быть положительное или отрицательное значение в диапазоне +/-16777216.
buffer_f6464-разрядное плавающее число.
buffer_boolБулево значение. Может быть только 1 или 0 (true или false).
buffer_stringСтруна любого размера.
buffer_textСтрока любого размера без завершающего нулевого символа.
-

Если функция выполнится успешно, то она вернет значение заданного типа, однако если она не выполнится, то это приведет к ошибке runner.

-

ПРИМЕЧАНИЕ Использование неправильного типа данных для считываемых данных приведет к возврату ошибочных значений.

-

-

Синтаксис:

-

buffer_read(buffer, type)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфераThe index of the buffer to read from.
typeТип данных буфера КонстантаThe type of data that is to be read from the buffer (see the list of constants above).
-

-

Возвращается:

-

Real, Boolean or String

-

-

Пример:

-

var cmd = buffer_read(buff, buffer_s16);

-

Приведенный выше код считывает из буфера с id, хранящегося в переменной "buff", знаковое 16-битное значение в локальную переменную "cmd".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_resize.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_resize.htm index 296379b36..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_resize.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_resize.htm @@ -1,67 +0,0 @@ - - - - - - buffer_resize - - - - - - - - - - -

buffer_resize

-

С помощью этой функции вы можете изменить размер буфера до указанного вами размера (в байтах).

-

-

Синтаксис:

-

buffer_resize(buffer, newsize);

- - - - - - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to change the size of.
newsizeThe new size of the buffer (in bytes).
-

-

Возвращается:

-

-

-

Пример:

-

if (buffer_get_size(buff) < 16384)
- {
-     buffer_resize(buff, 16384);
- }

-

Приведенный выше код проверит размер буфера, индексированного в переменной "buff", и если он меньше заданного значения, размер буфера будет изменен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_save.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_save.htm index 8197c14ea..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_save.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_save.htm @@ -1,65 +0,0 @@ - - - - - - buffer_save - - - - - - - - - - -

buffer_save

-

С помощью этой функции вы можете сохранить содержимое буфера в файл, готовый к повторному считыванию в память с помощью функции buffer_load() функцию.

-

ПРИМЕЧАНИЕ: На HTML5 при использовании этой функции содержимое буфера будет сохранено в виде строк в кодировке base64.

-

-

Синтаксис:

-

buffer_save(buffer, filename);

- - - - - - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to save.
filenameThe name of the file to save as.
-

-

Возвращается:

-

-

-

Пример:

-

buffer_save(buff, "Player_Save.sav");

-

Сохраняет текущее содержимое буфера с идентификатором, хранящимся в переменной "buff", в файл.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_save_async.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_save_async.htm index d2f0d2026..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_save_async.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_save_async.htm @@ -1,89 +0,0 @@ - - - - - - buffer_save_async - - - - - - - - - - -

buffer_save_async

-

С помощью этой функции вы можете сохранить часть содержимого буфера в файл, готовый к считыванию обратно в память с помощью функции buffer_load() (или любой другой функции для загрузки буферов). Смещение" определяет начальную позицию в буфере для сохранения (в байтах), а "размер" - размер сохраняемой области буфера, начиная с этого смещения и далее (также в байтах). Эта функция работает асинхронно, поэтому игра будет продолжаться во время сохранения, а все файлы, сохраненные с помощью этой функции, будут помещены в папку "по умолчанию". Эту папку не нужно указывать в имени файла, так как она автоматически добавляется программой GameMaker. Например, файл с именем "Data\Player_Save.sav" будет сохранен в папку "default\Data\Player_Save.sav". Однако, если вы затем загрузите файл с помощью функции buffer_load_async()то вам также не нужно указывать часть пути "по умолчанию" (но любая другая функция файла потребует ее, за исключением консолей Xbox One, PS4 и Nintendo Switch).

-

ПРИМЕЧАНИЕ: В HTML5 "default/" не добавляется автоматически, и вам, возможно, придется учесть это в своем коде.

-

Функция вернет уникальное значение ID и вызовет событие асинхронного сохранения/загрузки, где вы можете использовать возвращенный ID для проверки значения async_load ID, как показано в расширенном примере ниже. Карта async_load map в событии будет содержать следующие две пары ключ/значение:

-
    -
  • "id": идентификатор асинхронной функции, возвращаемый функцией сохранения.
  • -
  • "status": возвращает true, если данные были сохранены/загружены правильно, и false в противном случае.
  • -
-

Обратите внимание, что вы можете сохранить несколько буферов в одном, вызывая эту функцию несколько раз между вызовами функции buffer_async_group_begin() и buffer_async_group_end() (более подробную информацию об этом см. в этих функциях).

-

ПРИМЕЧАНИЕ: На HTML5 возвращаемые результаты сохраняются в виде строк в кодировке base64 при сохранении в файл.

-

-

Синтаксис:

-

buffer_save_async(buffer, filename, offset, size);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to save.
filenameThe name of the file to save as.
offsetThe offset within the buffer to save from (in bytes).
sizeThe size of the buffer area to save (in bytes).
-

-

Возвращается:

-

Async Request ID

-

-

Расширенный пример:

-

Функция buffer_save_async() может быть вызвана из любого события, и поскольку она асинхронна, обратный вызов может быть почти мгновенным или занять несколько секунд. Вызов функции прост и выглядит следующим образом:

-

saveid = buffer_save_async(buff, "Player_Save.sav", 0, 16384);

-

Приведенный выше код сохраняет содержимое буфера "buff" в заданный файл сохранения, сохраняя ID вызова функции в переменной "saveid". Когда сохранение будет завершено, сработает асинхронное событие Save/Load, и вы сможете разобрать карту async_load на предмет правильного ID функции, как это сделано ниже:

-

if ds_map_find_value(async_load, "id") == saveid
- {
-     if (ds_map_find_value(async_load, "status") == false)
-     {
-         show_debug_message("Save failed!");
-     }
- }

-

Приведенный выше код сначала проверит id созданной карты DS, затем проверит статус обратного вызова, опубликовав отладочное сообщение, если возникли какие-либо проблемы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_save_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_save_ext.htm index 7a408d685..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_save_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_save_ext.htm @@ -1,73 +0,0 @@ - - - - - - buffer_save_ext - - - - - - - - - - -

buffer_save_ext

-

С помощью этой функции вы можете сохранить часть содержимого буфера в файл, готовый к считыванию обратно в память с помощью функции buffer_load() функцию. Смещение" определяет начальную позицию в буфере - для сохранения (в байтах), а "размер" - размер сохраняемой области буфера, начиная с этого смещения и далее (также в байтах).

-

-

Синтаксис:

-

buffer_save_ext(buffer, filename, offset, size);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to save.
filenameThe name of the file to save as.
offsetThe offset within the buffer to save from (in bytes).
sizeThe size of the buffer area to save (in bytes).
-

-

Возвращается:

-

-

-

Пример:

-

buffer_save_ext(buff, "Player_Save.sav", 0, 16384);

-

Сохраняет часть текущего содержимого буфера с идентификатором, хранящимся в переменной "buff", в файл.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_seek.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_seek.htm index 91dd0c997..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_seek.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_seek.htm @@ -1,111 +0,0 @@ - - - - - - buffer_seek - - - - - - - - - - -

buffer_seek

-

Эта функция может быть использована для перемещения по буферу, находя начало, конец или позицию относительно той, которая была использована в последний раз при чтении или записи данных. Значение "offset" - это смещение (в байтах), которое нужно добавить к заданной позиции поиска, например, если база относительная, а смещение равно 4, то позиция буфера сдвинется на 4 байта от текущей позиции. Обратите внимание на следующее:

-
    -
  • Вы можете использовать отрицательные значения для смещения для поиска назад по буферу, а также положительные значения.
  • -
  • Если буфер имеет тип "обертывания" и вы смещаетесь за конец буфера, позиция поиска также обернется.
  • -
  • Если буфер не имеет типа "обертывания", поиск будет прижиматься к началу или концу буфера, даже если смещение выведет поиск за пределы буфера.
  • -
-

В качестве "базового" аргумента для поиска принимаются следующие константы:

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Постоянная поиска буфера
ПостояннаяОписание
buffer_seek_startНачало буфера
buffer_seek_relativeПозиция относительно текущей позиции чтения/записи
buffer_seek_endКонец буфера
-

-

Синтаксис:

-

buffer_seek(buffer, base, offset);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфераThe index of the buffer to use.
baseРеальноThe base position to seek.
offsetРеальноThe data offset value.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

buffer_seek(buff, buffer_seek_start, 0);
- buffer_write(buff, buffer_s16, 0);
- buffer_write(buff, buffer_s16, x);
- buffer_write(buff, buffer_s16, y);

-

Приведенный выше код находит начало буфера с идентификатором, хранящимся в переменной "buff", и записывает в него серию знаковых 16-битных целочисленных значений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_set_surface.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_set_surface.htm index a0c48e3d4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_set_surface.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_set_surface.htm @@ -1,70 +0,0 @@ - - - - - - buffer_set_surface - - - - - - - - - - -

buffer_set_surface

-

С помощью этой функции можно записать информацию из буфера на заданную поверхность. Буфер, из которого производится чтение, и поверхность, на которую производится запись, должны быть созданы ранее, и вы можете указать смещение в буфере для начала чтения. Обратите внимание, что чтение всегда будет начинаться с начала буфера плюс значение смещения, а не с текущей позиции поиска плюс значение смещения.

-

ПРИМЕЧАНИЕ: Эта функция изменилась начиная с обновления GameMaker 2.3.1 и далее. В предыдущих версиях использовалась константа buffer_surface_copy, которая теперь устарела.

-

-

Синтаксис:

-

buffer_set_surface(buffer, surface, offset);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to use.
surfaceThe index of the surface to use.
offsetThe data offset value.
-

-

Возвращается:

-

-

-

Пример:

-

buffer_set_surface(buff, application_surface, 0);

-

Приведенный выше код скопирует все данные, хранящиеся в буфере, проиндексированном в переменной "buff", на поверхность приложения без смещения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_set_used_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_set_used_size.htm index 5af72f08e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_set_used_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_set_used_size.htm @@ -1,66 +0,0 @@ - - - - - - buffer_set_used_size - - - - - - - - - - -

buffer_set_used_size

-

Эта функция предназначена в основном для использования в расширениях и позволяет установить "использованный" размер данного буфера, то есть количество байт, которые были в него записаны.

-

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

-

-

Синтаксис:

-

buffer_set_used_size(buffer, size);

- - - - - - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to use.
sizeThe number of bytes to set as the "used" size.
-

-

Возвращается:

-

-

-

Пример:

-

buffer_write(_bufferAddress, buffer_u8, 1);
buffer_write(_bufferAddress, buffer_u8, 2);
buffer_write(_bufferAddress, buffer_u16, 400);
-
buffer_set_used_size(_bufferAddress, 4);

-

Приведенные выше функции будут вызываться в расширении для записи некоторых данных в буфер GameMaker (через его адрес в памяти), а затем установить количество байт, которые были записаны в него, чтобы движок мог прочитать эти данные.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_sha1.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_sha1.htm index b7f4dceb5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_sha1.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_sha1.htm @@ -1,72 +0,0 @@ - - - - - buffer_sha1 - - - - - - - - - - - -

buffer_sha1

-

В криптографии SHA-1 - это криптографическая функция хэширования, разработанная Агентством национальной безопасности США и используемая в нескольких широко распространенных приложениях и протоколах, таких как популярный - Git, где она используется для проверки изменений файлов. Эта функция принимает входные данные из буфера и возвращает 160-битный дайджест сообщения в формате ASCII. Таким образом, вы можете сгенерировать безопасный ключ, который можно хранить и использовать для проверки целостности - информации, отправляемой на внешний сервер (или получаемой от него) (например). При применении этой функции к буферам вы должны указать идентификатор буфера, затем значение смещения (в байтах) для начала, а затем - размер (опять же в байтах) области для хеширования.

-

ПРИМЕЧАНИЕ: SHA-1 не является полностью безопасным и может быть взломан. См. эту страницу для получения дополнительной информации.

-

-

Синтаксис:

-

buffer_sha1(buffer, offset, size);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to use.
offsetThe data offset value.
sizeThe size of the buffer.
-

-

Возвращается:

-

-

-

Пример:

-

check_string = buffer_sha1(buff, 0, buffer_get_size(buff));

-

Приведенный выше код создаст хэш sha1 для полных данных, хранящихся в буфере, индексируемом переменной "buff", и сохранит возвращенный хэш в переменной "check_string".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_sizeof.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_sizeof.htm index 96c030052..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_sizeof.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_sizeof.htm @@ -1,64 +0,0 @@ - - - - - - buffer_sizeof - - - - - - - - - - - -

buffer_sizeof

-

Эта функция возвращает размер (в байтах) заданной константы типа данных буфера (перечислены здесь).

-

-

Синтаксис:

-

buffer_sizeof(type);

- - - - - - - - - - - - - -
АргументТипОписание
typeТип данных буфера КонстантаThe type of data that is to be checked (see the list of constants here).
-

-

Возвращается:

-

Real

-

-

Пример:

-

var b = 12 * buffer_sizeof(buffer_u8);
- buff = buffer_create(b, buffer_fixed, 1);

-

Приведенный выше код сначала вычисляет размер создаваемого буфера, умножая тип данных unsigned 8bit на 12 (поскольку мы будем использовать буфер для хранения 12 частей данных), а затем использует это значение для установки фиксированного буфера нужного размера.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_tell.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_tell.htm index f49f28ca4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_tell.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_tell.htm @@ -1,64 +0,0 @@ - - - - - - buffer_tell - - - - - - - - - - - -

buffer_tell

-

Когда вы читаете или записываете данные в буфер с помощью кнопки buffer_read() или buffer_write() текущая позиция "seek" продвигается на записанные или прочитанные байты, и с помощью - этой функции вы можете получить текущую позицию "seek" для использования в других функциях буфера. Например, если выравнивание буфера установлено на 4 байта и вы записываете один фрагмент данных размером в 1 байт, то выполните команду buffer_tell(), - вы получите возвращаемое значение 1. Однако если вы запишете другой фрагмент данных, также размером в 1 байт, а затем выполните buffer_tell(), вы получите возвращаемое значение 5, так как выравнивание "подгоняет" данные к этой позиции.

-

-

Синтаксис:

-

buffer_tell(buffer);

- - - - - - - - - - - -
АргументТипОписание
bufferThe index of the buffer to use.
-

-

Возвращается:

-

-

-

Пример:

-

var pos = buffer_tell(buff); buffer_seek(buff, buffer_seek_start, 0);
val[0] = buffer_read(buff, buffer_S16);
val[1] = buffer_read(buff, buffer_S16);
val[2] = buffer_read(buff, buffer_S16);
buffer_seek(buff, buffer_seek_start, pos);

-

Приведенный выше код сохранит текущую позицию поиска в буфере, индексированную в переменной "buff", в локальной переменной "pos". Затем позиция поиска буфера будет установлена в начало буфера, и три части данных будут - считываются в массив, после чего позиция поиска в буфере снова устанавливается на прежнее место.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_write.htm b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_write.htm index 30f971d37..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_write.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Buffers/buffer_write.htm @@ -1,156 +0,0 @@ - - - - - - buffer_write - - - - - - - - - - -

buffer_write

-

Эта функция может быть использована для записи данных в ранее созданный буфер. Записываемые данные должны соответствовать аргументу "тип" этой функции, то есть нельзя, например, пытаться записать строку как беззнаковое 16-битное целое число. Для определения типа данных можно использовать следующие константы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип данных буфера Константа
ПостояннаяОписание
buffer_u8Беззнаковое 8-разрядное целое число. Это положительное значение от 0 до 255.
buffer_s8Знаковое 8-разрядное целое число. Это может быть положительное или отрицательное значение от -128 до 127 (0 считается положительным).
buffer_u16Беззнаковое 16-разрядное целое число. Это положительное значение от 0 до 65 535.
buffer_s16Подписанное 16-разрядное целое число. Это может быть положительное или отрицательное значение от -32,768 до 32,767 (0 считается положительным).
buffer_u32Беззнаковое 32-разрядное целое число. Это положительное значение от 0 до 4 294 967 295.
buffer_s32Подписанное 32-разрядное целое число. Это может быть положительное или отрицательное значение от -2,147,483,648 до 2,147,483,647 (0 считается положительным).
buffer_u64Беззнаковое 64-разрядное целое число.
buffer_f1616-битное плавающее число. Это может быть положительное или отрицательное значение в том же диапазоне, что и 16-битное знаковое целое число.
buffer_f3232-битное плавающее число. Это может быть положительное или отрицательное значение в том же диапазоне, что и 32-битное знаковое целое число.
buffer_f6464-разрядное плавающее число.
buffer_boolБулево значение. Может быть только 1 или 0 (true или false).
buffer_stringСтрока произвольного размера, завершаемая нулевым завершающим символом.
buffer_textСтрока любого размера без завершающего нулевого символа.
-

Функция вернет 0 в случае успеха или -1 в случае неудачи.

-

-

Синтаксис:

-

buffer_write(buffer, type, value)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфераThe index of the buffer to write to.
typeРеальноThe type of data that is to be written to the buffer (see the list of constants above).
valueРеальноThe data to write.
-

-

Возвращается:

-

Real (0 if success, or -1 if it fails)

-

-

Пример:

-

buffer_seek(buff, buffer_seek_start, 0);
- buffer_write(buff, buffer_s16, 0);
- buffer_write(buff, buffer_s16, x);
- buffer_write(buff, buffer_s16, y);

-

Приведенный выше код находит начало буфера с идентификатором, хранящимся в переменной "buff", и записывает в него серию знаковых 16-битных целочисленных значений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Display.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Display.htm index 81fc7d937..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Display.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Display.htm @@ -1,75 +0,0 @@ - - - - - - Камеры и дисплеи - - - - - - - - - - -

Камеры и дисплеи

-

Окно - это место, где GameMaker отображает вашу игру, и, в зависимости от целевого устройства, с ним можно делать разные вещи, например, устанавливать его в полноэкранный режим или нет. Камерыпорты просмотра), однако, управляют тем, что вы видите в этом окне, и поэтому для них существует другая серия функций. Следующие два раздела посвящены этим двум аспектам отображения вашей игры:

- -

-

Однако иногда недостаточно получить информацию только об игровом окне и представлениях, и вам действительно нужно знать кое-что о самом дисплее (по сути, об экране, на котором отображается игровое окно). Все следующие функции дают вам информацию о размере и ориентации дисплея, информацию о слое GUI и информацию о мыши:

- -

-

Есть также несколько специальных функций, которые можно использовать для сохранения отображения или его части в файл изображения, либо как *.png, либо как *.gif:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/Cameras_And_View_Ports.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/Cameras_And_View_Ports.htm index 44689a245..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/Cameras_And_View_Ports.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/Cameras_And_View_Ports.htm @@ -1,124 +0,0 @@ - - - - - - Камеры и смотровые порты - - - - - - - - - - -

Камеры и видовые экраны

-

При создании комнат в GameMaker вам необходимо настроить различные порты обзора и/или камеры, чтобы контролировать то, что будет отображаться игроку. Порты просмотра - это, по сути, маленькие окна в ваш игровой мир, которые позволяют вам показывать игроку части комнаты в масштабе 1:1, и поэтому они необходимы, когда ваша игровая комната больше, чем размер дисплея. Камеры определяют, что именно будет показано в каждом порте обзора.

-

GameMaker позволяет вам использовать 8 независимых портов просмотра (нумерация от 0 до 7) и неограниченное количество камер, из которых только 8 могут быть активны одновременно - по одной на каждый из доступных портов - хотя обычно вам понадобится только один или два порта просмотра. Камеры могут показывать разные части одной и той же комнаты и могут быть активированы и деактивированы, а также назначены на порты просмотра в любое время, что означает, что вы можете использовать камеры для рисования элементов HUD или для эффектов разделенного экрана, или, например, для создания cut-scenes. По сути, вы размещаете камеру в комнате и определяете "вид" (область) комнаты, которая будет ей видна, а затем этот вид рисуется в порте обзора - обратите внимание, что порт обзора может быть другого размера, чем вид камеры, и поэтому вы можете искажать и масштабировать вид камеры, если он имеет размер, отличный от 1:1 с портом обзора.

-

ВАЖНО! Легко запутаться, говоря о камерах, видах и смотровых отверстиях, поэтому поясним:

-
    -
  • Камера: Точка в помещении, которая будет использоваться для настройки отображения помещения - обычно с помощью положения, ориентации, поля зрения и соотношения сторон.
  • -
  • Вид: То, что видит камера, на основе положения, проекции и вращения камеры.
  • -
  • Порт просмотра: область экрана, где будет отображаться вид камеры.
  • -
-

Если вы добавляете камеры через редактор помещений, то вы можете получить значение ID камеры с помощью переменной view_camera. Затем вы можете управлять видом с помощью функций, описанных ниже, и даже уничтожить камеры по умолчанию, если это необходимо, хотя вам придется назначить новую камеру для вида, иначе вы получите непредсказуемое поведение. Камеры, добавленные в порт вида в редакторе комнат, являются глобальными, то есть они создаются один раз при запуске игры, а затем, когда вы входите в каждую комнату, они устанавливаются на значения, заданные в редакторе комнат, поэтому если вы уничтожите камеру по умолчанию в любой комнате, она перестанет существовать для всех комнат.

-

Следует отметить, что общая площадь ограничивающего поля для всех активных портов обзора в первой комнате игры определяет размер фонового холста (или размер окна для macOS, Ubuntu (Linux) и Windows), и все области, не покрытые портом обзора, будут по умолчанию рисоваться с использованием цвета окна, как показано на рисунке ниже:

-

Camera illustration

-

ПРИМЕЧАНИЕ: По умолчанию для отображения цвета необходимо выбрать "Clear Display Buffer" в редакторе помещения, а задать цвет можно только с помощью функции window_set_colour(). Если вы не используете эту функцию, по умолчанию будет установлен черный цвет.

-

Следует быть осторожным при использовании нескольких камер, поскольку событие рисования для всех экземпляров вызывается один раз для каждого видимого вида, поэтому если в одной комнате активны три вида камер, событие рисования будет выполняться три раза на каждом шаге (по сути, делая в три раза больше работы), что может стать причиной замедления, если игра большая или сложная. Однако переменная view_current может быть использована для ограничения вызовов рисования, проверяя, какой вид рисуется, и рисуя только те элементы, которые специфичны для данного порта просмотра. Также будьте осторожны при создании собственных камер, так как если вы создадите одну камеру в комнате и не удалите ее с помощью функции camera_destroy() вы можете получить утечку памяти.

-

Вы можете найти обзор всех доступных функций в различных разделах ниже, но стоит отметить, что некоторые из этих функций требуют настройки и использования различных матриц, поэтому вы можете обратиться к разделу руководства Функции матриц. Также обратите внимание, что есть несколько функций помещений, которые можно использовать для получения и установки камер и значений портов просмотра в помещениях, отличных от текущего (см. раздел " Помещения").

-

-

Для создания и уничтожения камер можно использовать следующие функции:

- -

-

Также имеется ряд функций для настройки и получения информации о камере:

- -

-

При работе с камерами необходимо назначить их на порт просмотра, чтобы они были "активны" и отображали что-либо. Эти порты просмотра пронумерованы от 0 до 7, их можно менять и позиционировать с помощью различных массивов переменных и функций, а также проверять, какой из них сейчас рисует или какая камера к нему подключена.

-

Доступны следующие встроенные переменные глобальной области видимости:

- -

-

Существуют также следующие функции для работы с портами просмотра:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_apply.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_apply.htm index 99c8c248a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_apply.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_apply.htm @@ -1,63 +0,0 @@ - - - - - - camera_apply - - - - - - - - - - -

camera_apply

-

Эта функция немедленно применит заданные настройки камеры к текущему виду камеры, который рендерится. Хотя вы можете установить любой вид камеры с помощью специальных функций camera_set_*, новые настройки не будут использоваться для рендеринга до следующего кадра игры, но с помощью этой функции вы можете сделать эти изменения немедленно. Если вы используете несколько видов, то функция должна быть использована в событии Draw Event, и вы можете использовать переменную view_current для выборочного применения заданной камеры только к тому виду камеры, который рендерится в данный момент. Обратите внимание, что при этом НЕ изменяется значение ID камеры, а только настройки для этой камеры, и что если вы используете эту функцию для камеры по умолчанию (т.е. для внутренней камеры, которую GameMaker использует, когда ни одна камера вида не активна), то изменения будут перезаписаны на следующем игровом кадре внутренними настройками для рисования комнаты.

-

-

Синтаксис:

-

camera_apply(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera.
-

-

Возвращается:

-

-

-

Пример:

-

if view_current == 0
- {
-     camera_apply(cutscene_cam);
- }

-

Приведенный выше код (в событии Draw Event) проверяет, какой вид камеры в данный момент отображается, и если это вид камеры[0], то к нему применяются настройки камеры, на которую ссылается переменная "cutscene_cam".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_create.htm index 087424dee..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_create.htm @@ -1,54 +0,0 @@ - - - - - - camera_create - - - - - - - - - - - -

camera_create

-

Эта функция создаст "пустую" камеру, т.е. камеру, для которой не заданы параметры вида и проекции. После создания камеры вы можете использовать различные матричные функции для установки матриц вида и проекции. Вы также можете использовать эту функцию для создания камеры, а затем использовать различные функции camera_set_* для настройки вида, однако обратите внимание, что вы должны указать, по крайней мере, позицию и размер вида, иначе полученная камера не будет действительной и даст странные результаты при применении к порту вида (если вы не установите следующие за объектом, границы или скорость перемещения, они будут установлены в значения по умолчанию для камеры вида в редакторе комнаты).

-

Обратите внимание, что камеры, как и все динамические ресурсы, занимают память при создании. Это означает, что вам нужно следить за тем, чтобы не создавать камеры без необходимости и уничтожать те, которые вам не нужны, вызывая функцию camera_destroy(). Это также означает, что камеры будут сохраняться от комнаты к комнате, если они назначены переменной global (они также сохраняются, если назначены экземпляру или локальным переменным, но вы не можете получить к ним доступ после смены комнаты, отсюда утечка памяти), так что вы можете, например, создать новую камеру, назначить ее глобальной переменной, а затем в начале каждой комнаты установить необходимые матрицы вида и проекции и порт вида, который вы должны использовать.

-

-

Синтаксис:

-

camera_create();

-

-

Возвращается:

-

Camera ID

-

-

Пример:

-

view_camera[0] = camera_create();
- var viewmat = matrix_build_lookat(640, 240, -10, 640, 240, 0, 0, 1, 0);
- var projmat = matrix_build_projection_ortho(640, 480, 1.0, 32000.0);
- camera_set_view_mat(view_camera[0], viewmat);
- camera_set_proj_mat(view_camera[0], projmat);

-

Приведенный выше код создает новую камеру и присваивает ее идентификатор view[0]. Затем создаются матрицы вида и проекции, которые сохраняются в локальных переменных и используются для установки камеры.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_create_view.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_create_view.htm index 7213b2c6a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_create_view.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_create_view.htm @@ -1,110 +0,0 @@ - - - - - - camera_create_view - - - - - - - - - - - -

camera_create_view

-

Эта функция создаст новую камеру, затем установит ее вид в комнате, после чего вернет уникальное значение ID для идентификации камеры в последующих вызовах функции. Камера будет создана с использованием значений, заданных в этой функции для позиции, размера и других деталей, которые соотносятся со значениями, заданными в редакторе комнат (см. здесь). Обратите внимание, что эта функция может принимать различное количество аргументов, обязательными являются только аргументы x/y position и width/height. Любые не указанные аргументы будут использоваться по умолчанию.

-

Обратите внимание, что камеры, как и все динамические ресурсы, занимают память при создании. Это означает, что вам нужно следить за тем, чтобы не создавать камеры без необходимости и уничтожать те, которые вам не нужны, вызывая функцию camera_destroy(). Это также означает, что камеры будут сохраняться от комнаты к комнате, если они назначены переменной global (они будут сохраняться и при назначении экземпляру или локальной переменной, но вы не сможете получить к ним доступ после смены комнаты, отсюда утечка памяти), так что вы можете, например, создать новую камеру, назначить ее глобальной переменной, а затем в начале каждой комнаты использовать функции camera_set_* для установки свойств перед назначением ее порту просмотра.

-

-

Синтаксис:

-

camera_create_view(room_x, room_y, width, height, [angle, object, x_speed, y_speed, x_border, y_border])

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
room_xРеальноThe x position (within the room) of the left side of the area the camera view captures.
room_yРеальноThe y position (within the room) of the top of the area the camera view captures.
widthРеальноThe width of the area the view captures.
heightРеальноThe height of the area the view captures.
angleРеальноOPTIONAL Угол для установки вида камеры (от 0° до 360°, по умолчанию 0).
object Идентификаторактива или экземпляраобъекта OPTIONAL ID объекта (или ID экземпляра) для вида камеры, за которым нужно следить (по умолчанию -1, нет объекта).
x_speedРеальноOPTIONAL Максимальная горизонтальная скорость, с которой может двигаться вид (для "мгновенного" следования установлено значение -1, по умолчанию -1).
y_speedРеальноOPTIONAL Максимальная вертикальная скорость, с которой может двигаться вид (устанавливается в -1 для "мгновенного" следования, по умолчанию -1).
x_borderРеальноOPTIONAL Минимальное горизонтальное пространство между краем области просмотра и экземпляром, за которым он должен следовать (до того, как вид начнет перемещаться, и если он настроен следовать за экземпляром, по умолчанию 0).
y_borderРеальноOPTIONAL Минимальное вертикальное пространство между краем области просмотра и экземпляром, за которым он должен следовать (до того, как вид начнет двигаться, и если он настроен следовать за экземпляром, по умолчанию 0).
-

-

Возвращается:

-

Camera ID

-

-

Пример:

-

camera_destroy(view_camera[0]);
- view_camera[0] = camera_create_view(0, 0, 640, 480, 0, obj_Player, 5, 5, -1, -1);

-

Приведенный выше код удаляет текущую камеру, назначенную на viewport[0], а затем создает новую камеру, определяет ее свойства вида и затем назначает ее на viewport[0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_destroy.htm index c37559f26..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_destroy.htm @@ -1,61 +0,0 @@ - - - - - - camera_destroy - - - - - - - - - - -

camera_destroy

-

С помощью этой функции вы можете уничтожить любую камеру. При вызове функции вы передаете уникальное значение ID камеры, которое вы получаете из функций camera_create_* или из view_camera массива при использовании редактора комнат для настройки порта просмотра и вида. Вы никогда не должны уничтожать камеру, которая в данный момент назначена на видимый вид, если только вы не назначаете новую камеру на этот вид в том же шаге, и вы всегда должны уничтожать любые камеры, которые вы создали с помощью кода, когда они больше не нужны вашей игре, чтобы предотвратить утечку памяти, и вы также можете уничтожить камеры по умолчанию, если вы назначили их в редакторе комнаты, но вы должны назначить новую камеру на порт вида (или отключить ее), иначе вы получите странные результаты.

-

-

Синтаксис:

-

camera_destroy(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

camera_destroy(view_camera[0]);
- view_camera[0] = camera_create_view(0, 0, 640, 480, 0, obj_Player, 5, 5, -1, -1);

-

Приведенный выше код уничтожает камеру, назначенную в данный момент порту просмотра [0], затем создает новую камеру и назначает ее ID этому порту.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_active.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_active.htm index 04b9e4467..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_active.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_active.htm @@ -1,53 +0,0 @@ - - - - - - camera_get_active - - - - - - - - - - - -

camera_get_active

-

Эта функция может быть использована для получения уникального значения ID камеры для активной в данный момент камеры.

-

-

Синтаксис:

-

camera_get_active()

-

-

Возвращается:

-

Camera ID

-

-

Пример:

-

var active = camera_get_active();
- if active != view_camera[0]
- {
-     view_camera[0] = _active;
- }

-

Приведенный выше код получает идентификатор камеры для активной камеры и устанавливает камеру просмотра для порта[0], чтобы использовать ее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_begin_script.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_begin_script.htm index 32ccfad59..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_begin_script.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_begin_script.htm @@ -1,65 +0,0 @@ - - - - - - camera_get_begin_script - - - - - - - - - - - -

camera_get_begin_script

-

Эта функция используется для получения идентификатора функции сценария, назначенной в качестве начального сценария для данной камеры. Если функция сценария не назначена, то функция вернет -1.

-

-

Синтаксис:

-

camera_get_begin_script(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera
-

-

Возвращается:

-

Script Function or -1 if no function is assigned

-

-

Пример:

-

var scr = camera_get_begin_script(camera_view[0]);
- if (scr != cutScene)
- {
-     camera_set_begin_script(view_camera[0], cutscene);
- }

-

Приведенный выше код проверяет функцию сценария, назначенную в качестве начального сценария для камеры, назначенной на порт просмотра[0], и если это не "cutScene", то она устанавливается на эту функцию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_default.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_default.htm index 0db2cb8f7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_default.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_default.htm @@ -1,50 +0,0 @@ - - - - - - camera_get_default - - - - - - - - - - - -

camera_get_default

-

Эта функция может быть использована для получения уникального значения ID камеры по умолчанию (камера, которую GameMaker использует, когда в игровой комнате не активны никакие виды камер или порты).

-

-

Синтаксис:

-

camera_get_default()

-

-

Возвращается:

-

Camera ID

-

-

Пример:

-

var def = camera_get_default();
- view_camera[0] = def;

-

Приведенный выше код получает идентификатор камеры по умолчанию и устанавливает камеру просмотра для порта[0], чтобы использовать ее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_end_script.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_end_script.htm index e3a358da8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_end_script.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_end_script.htm @@ -1,65 +0,0 @@ - - - - - - camera_get_end_script - - - - - - - - - - - -

camera_get_end_script

-

Эта функция может быть использована для получения идентификатора функции сценария, назначенной в качестве конечной функции для данной камеры. Если функция сценария не назначена, то функция вернет -1.

-

-

Синтаксис:

-

camera_get_end_script(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera
-

-

Возвращается:

-

Script Function or -1 if no function is assigned

-

-

Пример:

-

var scr = camera_get_end_script(camera_view[0]);
- if (scr != cutScene)
- {
-     camera_set_update_script(view_camera[0], cutscene);
- }

-

Приведенный выше код проверяет функцию сценария, назначенную в качестве начального сценария для камеры, назначенной на порт просмотра[0], и если это не "cutScene", то она устанавливается на эту функцию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_proj_mat.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_proj_mat.htm index b24aac305..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_proj_mat.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_proj_mat.htm @@ -1,61 +0,0 @@ - - - - - - camera_get_proj_mat - - - - - - - - - - - -

camera_get_proj_mat

-

Эта функция может быть использована для получения матрицы проекции. Функция возвращает матричный массив, который затем может быть использован в других матричных функциях или для установки матрицы проекции другой камеры (с помощью функции camera_set_proj_mat()).

-

-

Синтаксис:

-

camera_get_proj_mat(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera
-

-

Возвращается:

-

Matrix Array

-

-

Пример:

-

mat = camera_get_proj_mat(camera_view[0]);

-

Приведенный выше код получает матрицу проекции для камеры, назначенной на порт просмотра[0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_update_script.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_update_script.htm index ad339acdd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_update_script.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_update_script.htm @@ -1,65 +0,0 @@ - - - - - - camera_get_update_script - - - - - - - - - - - -

camera_get_update_script

-

Эта функция может использоваться для получения идентификатора функции сценария, назначенной в качестве сценария обновления для данной камеры. Если скрипт не назначен, то функция вернет -1.

-

-

Синтаксис:

-

camera_get_update_script(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera
-

-

Возвращается:

-

Script Function or -1 if no function is assigned

-

-

Пример:

-

var scr = camera_get_update_script(camera_view[0]);
- if (scr != scr_cutscene)
- {
-     camera_set_update_script(view_camera[0], scr_cutscene);
- }

-

Приведенный выше код проверяет функцию сценария, назначенную в качестве функции обновления для камеры, назначенной на порт просмотра[0], и если это не "cutScene", то она устанавливается на этот сценарий.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_angle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_angle.htm index b70660f57..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_angle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_angle.htm @@ -1,65 +0,0 @@ - - - - - - camera_get_view_angle - - - - - - - - - - - -

camera_get_view_angle

-

Эта функция может быть использована для получения угла заданной камеры. Возвращаемое значение будет находиться в диапазоне от 0 до 360. Обратите внимание, что эта функция действительна только для камер, созданных с помощью функции camera_create_view() или для камер, добавленных в редакторе помещений.

-

-

Синтаксис:

-

camera_get_view_angle(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera
-

-

Возвращается:

-

-

-

Пример:

-

var ang = camera_get_view_angle(view_camera[0]);
- if (ang != 0)
- {
-     camera_set_view_angle(view_camera[0], 0);
- }

-

Приведенный выше код извлекает угол камеры, назначенной порту view port[0], а затем проверяет, соответствует ли он заданному значению. Если нет, то камера вида устанавливается на этот угол.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_border_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_border_x.htm index f891e2285..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_border_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_border_x.htm @@ -1,66 +0,0 @@ - - - - - - camera_get_view_border_x - - - - - - - - - - - -

camera_get_view_border_x

-

Эта функция может быть использована для получения значения границы для объекта/экземпляра, следующего за данной камерой, вдоль оси x (горизонтальная граница). Возвращаемое значение будет в пикселях.

-

-

Синтаксис:

-

camera_get_view_border_x(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera
-

-

Возвращается:

-

-

-

Пример:

-

var xb = camera_get_view_border_x(view_camera[0]);
- var yb = camera_get_view_border_y(view_camera[0]);
- if xb != 200 || yb != 200
- {
-     camera_set_view_border(view_camera[0], 200, 200);
- }

-

Приведенный выше код извлекает значения xborder и yborder камеры, назначенной порту view port[0], а затем проверяет, совпадает ли оно с заданным значением. Если нет, то камера вида устанавливается на заданное значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_border_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_border_y.htm index 978bafab5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_border_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_border_y.htm @@ -1,66 +0,0 @@ - - - - - - camera_get_view_border_y - - - - - - - - - - - -

camera_get_view_border_y

-

Эта функция может быть использована для получения значения границы для объекта/экземпляра, следующего за заданной камерой, вдоль оси y (вертикальная граница). Возвращаемое значение будет в пикселях.

-

-

Синтаксис:

-

camera_get_view_border_y(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera
-

-

Возвращается:

-

-

-

Пример:

-

var xb = camera_get_view_border_x(view_camera[0]);
- var yb = camera_get_view_border_y(view_camera[0]);
- if xb != 200 || yb != 200
- {
-     camera_set_view_border(view_camera[0], 200, 200);
- }

-

Приведенный выше код извлекает значения xborder и yborder камеры, назначенной порту view port[0], а затем проверяет, совпадает ли оно с заданным значением. Если нет, то камера вида устанавливается на заданное значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_height.htm index 7c1ac4dee..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_height.htm @@ -1,62 +0,0 @@ - - - - - - camera_get_view_height - - - - - - - - - - - -

camera_get_view_height

-

Эта функция может использоваться для получения высоты (в пикселях) заданной камеры. Обратите внимание, что эта функция действительна только для камер, созданных с помощью функции camera_create_view() или для камер, добавленных в редакторе - редактора.

-

-

Синтаксис:

-

camera_get_view_height(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera
-

-

Возвращается:

-

-

-

Пример:

-

var vw = camera_get_view_width(view_camera[0]) / 2;
var vh = camera_get_view_height(view_camera[0]) / 2;
camera_set_view_pos(view_camera[0], x - vw, y - vh);

-

Приведенный выше код извлекает ширину и высоту камеры, назначенной на view port[0], а затем устанавливает ее положение относительно центра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_mat.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_mat.htm index 168d4fc81..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_mat.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_mat.htm @@ -1,61 +0,0 @@ - - - - - - camera_get_view_mat - - - - - - - - - - - -

camera_get_view_mat

-

Эта функция может быть использована для получения матрицы вида. Функция возвращает матричный массив, который затем может быть использован в других матричных функциях или для установки матрицы вида другой камеры (с помощью функции camera_set_view_mat()). Обратите внимание, что эта функция обычно используется для камер, созданных с помощью функции camera_create(), но она также может быть использована для камер, созданных в редакторе помещений (или с помощью функции camera_create_view()) - в этом случае возвращаемая матрица будет действительна только после первого использования данной камеры в порте просмотра.

-

-

Синтаксис:

-

camera_get_view_mat(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera
-

-

Возвращается:

-

Matrix Array

-

-

Пример:

-

mat = camera_get_view_mat(camera_view[0]);

-

Приведенный выше код получает матрицу вида для камеры, назначенной на порт вида[0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_speed_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_speed_x.htm index fda94ccf7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_speed_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_speed_x.htm @@ -1,66 +0,0 @@ - - - - - - camera_get_view_speed_x - - - - - - - - - - - -

camera_get_view_speed_x

-

Эта функция может использоваться для получения скорости движения заданной камеры вдоль оси x (горизонтальное движение). Возвращаемое значение будет в пикселях на один игровой кадр.

-

-

Синтаксис:

-

camera_get_view_speed_x(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera
-

-

Возвращается:

-

-

-

Пример:

-

var xs = camera_get_view_speed_x(view_camera[0]);
- var ys = camera_get_view_speed_y(view_camera[0]);
- if xs != 5 || ys != 5
- {
-     camera_set_view_speed(view_camera[0], 5, 5);
- }

-

Приведенный выше код извлекает xspeed и yspeed камеры, назначенной порту view[0], а затем проверяет, совпадают ли они с заданным значением. Если нет, то камера просмотра устанавливается на эту скорость.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_speed_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_speed_y.htm index b18e69a2c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_speed_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_speed_y.htm @@ -1,66 +0,0 @@ - - - - - - camera_get_view_speed_y - - - - - - - - - - - -

camera_get_view_speed_y

-

Эта функция может использоваться для получения скорости движения заданной камеры вдоль оси y (вертикальное движение). Возвращаемое значение будет в пикселях на игровой кадр.

-

-

Синтаксис:

-

camera_get_view_speed_y(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera
-

-

Возвращается:

-

-

-

Пример:

-

var xs = camera_get_view_speed_x(view_camera[0]);
- var ys = camera_get_view_speed_y(view_camera[0]);
- if xs != 5 || ys != 5
- {
-     camera_set_view_speed(view_camera[0], 5, 5);
- }

-

Приведенный выше код извлекает xspeed и yspeed камеры, назначенной порту view[0], а затем проверяет, совпадают ли они с заданным значением. Если нет, то камера просмотра устанавливается на эту скорость.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_target.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_target.htm index 1632cba5f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_target.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_target.htm @@ -1,65 +0,0 @@ - - - - - - camera_get_view_target - - - - - - - - - - - -

camera_get_view_target

-

Эта функция может быть использована для получения цели следования для заданной камеры. Возвращаемое значение может быть индексом объекта, идентификатором экземпляра или -1, если цель следования не была установлена.

-

-

Синтаксис:

-

camera_get_view_target(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera
-

-

Возвращается:

-

Object Asset, Instance ID or -1

-

-

Пример:

-

var target = camera_get_view_target(view_camera[0]);
- if (target != obj_Player)
- {
-     camera_set_view_target(view_camera[0], obj_player);
- }

-

Приведенный выше код извлекает цель следования камеры, назначенной порту вида[0], а затем проверяет, совпадает ли она с индексом объекта "obj_Player". Если нет, то камера вида устанавливается на следование за экземпляром этого объекта.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_width.htm index 02ba5e79b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_width.htm @@ -1,62 +0,0 @@ - - - - - - camera_get_view_width - - - - - - - - - - - -

camera_get_view_width

-

Эта функция может использоваться для получения ширины (в пикселях) заданной камеры. Обратите внимание, что эта функция действительна только для камер, созданных с помощью функции camera_create_view() или для тех, которые были добавлены в - редактора.

-

-

Синтаксис:

-

camera_get_view_width(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera
-

-

Возвращается:

-

-

-

Пример:

-

var vw = camera_get_view_width(view_camera[0]) / 2;
var vh = camera_get_view_height(view_camera[0]) / 2;
camera_set_view_pos(view_camera[0], x - vw, y - vh);

-

Приведенный выше код извлекает ширину и высоту камеры, назначенной на view port[0], а затем устанавливает ее положение относительно центра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_x.htm index 9526c48e4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_x.htm @@ -1,62 +0,0 @@ - - - - - - camera_get_view_x - - - - - - - - - - - -

camera_get_view_x

-

Эта функция может быть использована для получения положения x вида для данной камеры. Обратите внимание, что эта функция действительна только для камер, созданных с помощью функции camera_create_view() или для камер, добавленных в - редакторе помещений.

-

-

Синтаксис:

-

camera_get_view_x(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera
-

-

Возвращается:

-

-

-

Пример:

-

var vx = camera_get_view_x(view_camera[0]);
var vy = camera_get_view_y(view_camera[0]);
draw_text(vx + 5, vy + 5, "SCORE" + string(score));

-

Приведенный выше код извлекает позицию камеры, назначенной порту view port[0], а затем рисует текст относительно этой позиции.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_y.htm index 7faa23f0d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_get_view_y.htm @@ -1,62 +0,0 @@ - - - - - - camera_get_view_y - - - - - - - - - - - -

camera_get_view_y

-

Эта функция может быть использована для получения положения вида по оси y для данной камеры. Обратите внимание, что эта функция действительна только для камер, созданных с помощью функции camera_create_view() или для камер, добавленных в - редакторе помещений.

-

-

Синтаксис:

-

camera_get_view_y(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera
-

-

Возвращается:

-

-

-

Пример:

-

var vx = camera_get_view_x(view_camera[0]);
var vy = camera_get_view_y(view_camera[0]);
draw_text(vx + 5, vy + 5, "SCORE" + string(score));

-

Приведенный выше код извлекает позицию камеры, назначенной порту view port[0], а затем рисует текст относительно этой позиции.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_begin_script.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_begin_script.htm index a65133c34..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_begin_script.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_begin_script.htm @@ -1,78 +0,0 @@ - - - - - - camera_set_begin_script - - - - - - - - - - -

camera_set_begin_script

-

Эта функция может быть использована для задания функции сценария, которая будет вызываться в начале каждого игрового кадра, когда камера назначена на видимый и активный порт просмотра. Вы указываете уникальное значение ID камеры (возвращаемое различными функциями camera_create() ) и ID функции, которая будет вызываться. Порядок вызова скриптов, прикрепленных к камерам, и фактического рендеринга вида камеры следующий:

-
    -
  • Камеры для всех видимых и активных портов просмотра имеют функцию обновления, вызываемую как
  • -
  • Затем для каждого вида: -
      -
    • Вызывается функция begin для камеры для этого представления
    • -
    • Для этого вида выполняются события рисования
    • -
    • Вызывается функция end для камеры
    • -
    -
  • -
  • Перейдите к следующему активному видимому виду и повторите...
  • -
-

-

Синтаксис:

-

camera_set_begin_script(camera_id, script)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
camera_idИдентификатор камерыThe unique camera ID value returned when you created the camera.
scriptФункция сценарияThe script function to run each game frame
-

-

Возвращается:

-

N/A

-

-

Пример:

-

camera_set_begin_script(view_camera[0], beginCamera);

-

Приведенный выше код устанавливает функцию сценария begin для камеры, назначенной на порт просмотра [0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_default.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_default.htm index 7b3a8fef4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_default.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_default.htm @@ -1,62 +0,0 @@ - - - - - - camera_set_default - - - - - - - - - - -

camera_set_default

-

С помощью этой функции можно настроить камеру по умолчанию на использование пользовательской камеры, которую вы ранее создали с помощью одной из функций camera_create() функций. Когда вы создаете комнату без активных портов просмотра - или камеры обзора, GameMaker все равно использует камеру для отображения действий в игре. Эта камера называется камерой по умолчанию и может быть установлена и управляться (и даже уничтожена) так же, как и любая другая камера.

-

-

Синтаксис:

-

camera_set_default(camera_id)

- - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera
-

-

Возвращается:

-

-

-

Пример:

-

var new_cam = camera_create_view(0, 0, 640, 480, 0, obj_Player, 5, 5, -1, -1);
camera_set_default(new_cam); -

-

Приведенный выше код создает новую камеру, а затем назначает ее в качестве используемой по умолчанию камеры.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_end_script.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_end_script.htm index 886aab849..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_end_script.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_end_script.htm @@ -1,78 +0,0 @@ - - - - - - camera_set_end_script - - - - - - - - - - -

camera_set_end_script

-

Эта функция может быть использована для задания функции сценария, которая будет вызываться в конце каждого игрового кадра, когда камера назначена на видимый и активный порт представления, после того, как все для этой камеры представления будет отрисовано. Вы задаете уникальное значение ID камеры (возвращаемое различными camera_create() функции) и ID функции, которая должна быть вызвана. Порядок вызова функций, прикрепленных к камерам, и фактического рендеринга вида камеры следующий:

-
    -
  • Камеры для всех видимых и активных портов просмотра имеют функцию обновления , вызываемую как
  • -
  • Затем для каждого вида: -
      -
    • Вызывается функция begin для камеры для этого представления
    • -
    • Для этого вида выполняются события рисования
    • -
    • Вызывается функция end для камеры
    • -
    -
  • -
  • Перейдите к следующему активному видимому виду и повторите...
  • -
-

-

Синтаксис:

-

camera_set_end_script(camera_id, script)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
camera_idИдентификатор камерыThe unique camera ID value returned when you created the camera.
scriptФункция сценарияThe script to run each game frame
-

-

Возвращается:

-

N/A

-

-

Пример:

-

camera_set_end_script(view_camera[0], endCamera);

-

Приведенный выше код устанавливает конечный сценарий для камеры, назначенной на порт просмотра [0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_proj_mat.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_proj_mat.htm index add08959b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_proj_mat.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_proj_mat.htm @@ -1,73 +0,0 @@ - - - - - - camera_set_proj_mat - - - - - - - - - - -

camera_set_proj_mat

-

Эта функция устанавливает матрицу проекции для данной камеры. Вы передаете уникальное значение ID камеры (возвращаемое различными camera_create() функции) и матрицу проекции, которую необходимо применить. Подробнее о создании проекционных матриц вы можете узнать из раздела Матричные функции, а именно matrix_build_projection_perspective() и matrix_build_projection_ortho().

-

При использовании этой функции необходимо помнить о некоторых моментах:

-
    -
  • Если ваша камера выполняет автоматическое отслеживание объектов - т.е. она была создана с использованием camera_create_view() с индексом объекта / ID экземпляра, который не равен -1, или вы устанавливаете камеру, определенную в Room Editor, или вы устанавливаете камеру по умолчанию - тогда эта матрица будет перезаписана на следующем игровом кадре.
  • -
  • Если вы используете эту функцию для переключения на перспективную проекцию (в отличие от ортографической проекции по умолчанию), автоматическое рисование плиток sprites перестанет работать и будет выполняться вручную. Это относится к любым фоновым слоям, использующим горизонтальную или вертикальную черепицу, а также к функциям draw_sprite_tiled() и draw_sprite_tiled_ext(), которые при использовании перспективной проекции будут рисовать sprite только один раз вместо черепицы.
  • -
-

-

Синтаксис:

-

camera_set_proj_mat(camera_id, matrix)

- - - - - - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera.
matrixThe unique matrix ID returned when you created the matrix.
-

-

Возвращается:

-

-

-

Пример:

-

view_camera[0] = camera_create();
- var viewmat = matrix_build_lookat(640, 240, -10, 640, 240, 0, 0, 1, 0);
- var projmat = matrix_build_projection_ortho(640, 480, 1.0, 32000.0);
- camera_set_view_mat(view_camera[0], viewmat);
- camera_set_proj_mat(view_camera[0], projmat);

-

Приведенный выше код создает новую камеру и назначает ее порту вида[0]. Затем у этой камеры устанавливаются матрицы вида и проекции.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_update_script.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_update_script.htm index d49ecec63..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_update_script.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_update_script.htm @@ -1,79 +0,0 @@ - - - - - - camera_set_update_script - - - - - - - - - - -

camera_set_update_script

-

Эта функция может быть использована для задания функции сценария, которая будет вызываться каждый игровой кадр, когда камера назначена на видимый и активный порт просмотра. Вы указываете уникальное значение ID камеры (возвращаемое различными функциями camera_create ) и ID функции, которая будет вызываться. Порядок вызова функций, прикрепленных к камерам, и фактического рендеринга вида камеры следующий:

-
    -
  • Камеры для всех видимых и активных портов просмотра имеют функцию обновления , вызываемую как
  • -
  • Затем для каждого вида: -
      -
    • Вызывается функция begin для камеры для этого вида
    • -
    • Для этого вида выполняются события рисования
    • -
    • Вызывается функция end для камеры
    • -
    -
  • -
  • Перейдите к следующему активному видимому виду и повторите...
  • -
-

Применение пользовательской функции обновления к камере переопределяет ее поведение обновления по умолчанию. Например, если вы настроили камеру на следование за объектом (например, obj_player) при вызове camera_create_view(), или задали это в свойствах комнаты, она перестанет следовать за этим объектом после установки пользовательского сценария обновления.

-

-

Синтаксис:

-

camera_set_update_script(camera_id, script)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
camera_idИдентификатор камерыThe unique camera ID value returned when you created the camera.
scriptФункция сценарияThe script function to run each game frame
-

-

Возвращается:

-

N/A

-

-

Пример:

-

camera_set_update_script(view_camera[0], updateCamera);

-

Приведенный выше код устанавливает функцию обновления для камеры, назначенной на порт просмотра [0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_angle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_angle.htm index de0d9f882..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_angle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_angle.htm @@ -1,65 +0,0 @@ - - - - - - camera_set_view_angle - - - - - - - - - - -

camera_set_view_angle

-

Вы можете использовать эту функцию для обновления угла обзора камеры в помещении. Вы указываете уникальное значение ID камеры (как возвращается различными camera_create() функциями), а затем указываете угол, который вы - на который вы хотите установить угол обзора камеры. Значение по умолчанию равно 0°, положительные значения поворачивают камеру против часовой стрелки, т.е. установка значения 90 повернет камеру на 90° влево.

-

-

Синтаксис:

-

camera_set_view_angle(camera_id, angle)

- - - - - - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera
angleThe new angle to set the camera view to
-

-

Возвращается:

-

-

-

Пример:

-

camera_set_view_angle(view_camera[0], point_direction(x, y, mouse_x, mouse_y));

-

Приведенный выше код установит угол обзора камеры для камеры, назначенной на порт просмотра[0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_border.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_border.htm index 954ac5445..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_border.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_border.htm @@ -1,71 +0,0 @@ - - - - - - camera_set_view_border - - - - - - - - - - - -

camera_set_view_border

-

Вы можете использовать эту функцию для установки границы следования камеры обзора в помещении. Вы задаете уникальное значение ID камеры (возвращаемое различными функциями camera_create ), а затем задаете размер границы x и размер границы y (горизонтальный - и вертикальный). Эти значения будут использоваться только в том случае, если камере просмотра назначен объект для следования (либо в редакторе комнат, либо с помощью функции camera_set_view_target()) и относятся - к тому, насколько далеко от границы вида должен находиться объект, прежде чем вид обновит свою позицию для следования.

-

-

Синтаксис:

-

camera_set_view_border(camera_id, x_border, y_border)

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera.
x_borderThe border (in pixels) for the view camera along the horizontal axis
y_borderThe border (in pixels) for the view camera along the vertical axis
-

-

Возвращается:

-

-

-

Пример:

-

camera_set_view_border(view_camera[0], 64, 64);

-

Приведенный выше код установит границу камеры просмотра для камеры, назначенной порту просмотра[0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_mat.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_mat.htm index b5f056c9f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_mat.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_mat.htm @@ -1,69 +0,0 @@ - - - - - - camera_set_view_mat - - - - - - - - - - -

camera_set_view_mat

-

Эта функция устанавливает матрицу просмотра для данной камеры. Вы передаете уникальное значение ID камеры (возвращаемое различными camera_create() функции) и матрицу вида, которую необходимо применить. Подробнее о создании матриц вида вы можете узнать из раздела Функции матрицы, а именно matrix_build_lookat().

-

Обратите внимание, что если ваша камера выполняет автоматическое отслеживание объектов - т.е. она была создана с помощью camera_create_view() с индексом объекта / ID экземпляра, который не равен -1, или вы устанавливаете камеру, определенную в редакторе комнат, или вы устанавливаете камеру по умолчанию - тогда эта матрица будет перезаписана на следующем игровом кадре.

-

-

Синтаксис:

-

camera_set_view_mat(camera_id, matrix)

- - - - - - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera.
matrixThe unique matrix ID returned when you created the matrix.
-

-

Возвращается:

-

-

-

Пример:

-

view_camera[0] = camera_create();
- var viewmat = matrix_build_lookat(640, 240, -10, 640, 240, 0, 0, 1, 0);
- var projmat = matrix_build_projection_ortho(640, 480, 1.0, 32000.0);
- camera_set_view_mat(view_camera[0], viewmat);
- camera_set_proj_mat(view_camera[0], projmat);

-

Приведенный выше код создает новую камеру и назначает ее порту вида[0]. Затем у этой камеры устанавливаются матрицы вида и проекции.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_pos.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_pos.htm index e2253f780..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_pos.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_pos.htm @@ -1,69 +0,0 @@ - - - - - - camera_set_view_pos - - - - - - - - - - -

camera_set_view_pos

-

Вы можете использовать эту функцию для обновления положения вида камеры в помещении. Вы указываете уникальное значение ID камеры (возвращаемое различными функциями camera_create() ), а затем указываете позиции x и y. - для установки камеры.

-

-

Синтаксис:

-

camera_set_view_pos(camera_id, x, y)

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera.
xThe x position to place the view at (in the room)
yThe y position to place the view at (in the room)
-

-

Возвращается:

-

-

-

Пример:

-

camera_set_view_pos(view_camera[0], x - (view_wport[0] / 2), y - (view_hport[0] / 2));

-

Приведенный выше код установит положение камеры просмотра для камеры, назначенной на порт просмотра[0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_size.htm index e91b6e94c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_size.htm @@ -1,69 +0,0 @@ - - - - - - camera_set_view_size - - - - - - - - - - -

camera_set_view_size

-

Вы можете использовать эту функцию для обновления размера камеры обзора в помещении. Вы указываете уникальное значение ID камеры (как возвращается различными camera_create() функциями), а затем указываете ширину и высоту - (в пикселях) для установки камеры.

-

-

Синтаксис:

-

camera_set_view_size(camera_id, width, height)

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera.
widthThe width of the camera view in pixels
heightThe height of the camera view in pixels
-

-

Возвращается:

-

-

-

Пример:

-

camera_set_view_size(view_camera[0], view_wport[0], view_hport[0]);

-

Приведенный выше код установит размер камеры просмотра для камеры, назначенной на порт просмотра[0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_speed.htm index be95c44ca..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_speed.htm @@ -1,70 +0,0 @@ - - - - - - camera_set_view_speed - - - - - - - - - - -

camera_set_view_speed

-

Вы можете использовать эту функцию для обновления скорости камеры обзора в помещении. Вы задаете уникальное значение ID камеры (как возвращается различными camera_create() функциями), а затем задаете x и y (горизонтальную - и вертикальную) скорость, с которой она должна двигаться, если установлена для следования за данным экземпляром. Скорость рассчитывается как пиксели за шаг и может быть установлена на "-1", чтобы камера двигалась мгновенно, но если камера не настроена следовать за каким-либо объектом, то заданные здесь значения не будут иметь видимого эффекта. - установленные здесь значения не будут иметь видимого эффекта.

-

-

Синтаксис:

-

camera_set_view_speed(camera_id, xspeed, yspeed)

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
camera_idThe unique camera ID value returned when you created the camera.
xspeedThe speed (number of pixels per game frame) that the view should move on the horizontal (x) axis
yspeedThe speed (number of pixels per game frame) that the view should move on the vertical (y) axis
-

-

Возвращается:

-

-

-

Пример:

-

camera_set_view_speed(view_camera[0], 5, 5);

-

Приведенный выше код установит скорость камеры просмотра для камеры, назначенной на порт просмотра[0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_target.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_target.htm index f3040b787..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_target.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/camera_set_view_target.htm @@ -1,67 +0,0 @@ - - - - - - camera_set_view_target - - - - - - - - - - -

camera_set_view_target

-

Вы можете использовать эту функцию для установки цели следования камеры обзора в помещении. Вы указываете уникальное значение ID камеры (возвращаемое различными camera_create() а затем укажите экземпляр цели или ID объекта, на который вы хотите установить вид камеры. Обратите внимание, что если вы выбираете ID объекта, а в комнате находится более одного экземпляра этого объекта, то GameMaker никак не может узнать, за каким экземпляром вы хотите следить, поэтому это может быть любой из них.

-

-

Синтаксис:

-

camera_set_view_target(camera_id, instance_id/object_id)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
camera_idИдентификатор камерыThe unique camera ID value returned when you created the camera
instance_id/object_id Идентификаторактива или экземпляраобъекта Instance or object to have the camera target for following
-

-

Возвращается:

-

N/A

-

-

Пример:

-

camera_set_view_target(view_camera[0], id);

-

Приведенный выше код установит цель камеры просмотра для камеры, назначенной порту просмотра[0], на цель экземпляра, выполняющего этот код.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_camera.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_camera.htm index f516743cb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_camera.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_camera.htm @@ -1,51 +0,0 @@ - - - - - - view_camera - - - - - - - - - - -

view_camera

-

Этот массив содержит уникальный идентификатор камеры, назначенный данному порту обзора, и может быть установлен на новую камеру или прочитан для получения текущей камеры, возвращая -1, если камера не назначена. В комнате может быть до 8 активных портов просмотра (значения массива от 0 до 7), и вы можете назначить камеру для любого из них, просто установив эту переменную в значение ID камеры (как возвращается функциями camera_create() или camera_create_view()). Если вы назначили камеру на порт просмотра через редактор комнаты, эта переменная будет содержать идентификатор камеры для этого порта.

-

-

Синтаксис:

-

view_camera[0 ... 7];

-

-

Возвращается:

-

Camera ID or -1 (if no camera is assigned)

-

-

Пример:

-

if view_camera[0] == -1
- {
-     view_camera[0] = camera_create_view(0, 0, room_width, room_height);
- }

-

Приведенный выше код проверяет, есть ли в порте просмотра [0] камера, прикрепленная к нему, и если нет, то она создается и устанавливается на него.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_current.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_current.htm index 4508f3d56..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_current.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_current.htm @@ -1,59 +0,0 @@ - - - - - - view_current - - - - - - - - - - -

view_current

-

Эта переменная, доступная только для чтения, действительна только в Событие рисования и возвращает текущий порт представления, в котором выполняется рендеринг. Возвращаемое значение будет меняться во время события draw, когда у вас есть различные представления, поскольку событие draw вызывается один раз для каждого порта представления последовательно. Поэтому, когда (например) вы используете в игровой комнате порт вида[0] и порт вида[1], событие draw для ВСЕХ экземпляров будет выполняться дважды, по одному разу для каждого порта, и с помощью этой переменной вы можете проверить, какой вид отрисовывается в данный момент. В общем, это используется для отрисовки определенных деталей только для одного порта, когда в комнате одновременно видно несколько портов просмотра. Смотрите пример кода ниже.

-

-

Синтаксис:

-

view_current

-

-

Возвращается:

-

Real (view port index from 0 to 7)

-

-

Пример:

-

if view_current == 0
- {
-     var _xx = camera_get_view_x(view_camera[0]);
-     var _yy = camera_get_view_y(view_camera[0]);
-     draw_text(_xx + 32, _yy + 32, "Player 1");
- }
- else
- {
-     var _xx = camera_get_view_x(view_camera[1]);
-     var _yy = camera_get_view_y(view_camera[1]);
-     draw_text(_xx + 32, _yy + 32, "Player 2");
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_enabled.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_enabled.htm index bd0b353e9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_enabled.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_enabled.htm @@ -1,52 +0,0 @@ - - - - - - view_enabled - - - - - - - - - - -

view_enabled

-

Эта переменная контролирует, включены или нет порты обзора, видимые в комнате. Если для портов просмотра установлено значение видимый, а затем отключить этот параметр, вся комната будет отрисована на экране с масштабированием по размеру окна вместо того, чтобы различные камеры были отрисованы через порты просмотра.

-

-

Синтаксис:

-

view_enabled

-

-

Возвращается:

-

(true: enabled, false: disabled)

-

-

Пример:

-

if !view_enabled
- {
-     view_visible[0] = true;
-     view_enabled = true;
- }

-

Приведенный выше код проверяет, включены ли представления для комнаты, и если нет, то убеждается, что порт представления[0] виден, а затем включает представления для комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_camera.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_camera.htm index 1bd7e6eb7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_camera.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_camera.htm @@ -1,64 +0,0 @@ - - - - - - view_get_camera - - - - - - - - - - - -

view_get_camera

-

Эта функция может использоваться для получения уникального значения ID камеры для камеры, назначенной на данный порт просмотра (от 0 до 7). Если камера не назначена, функция возвращает -1.

-

-

Синтаксис:

-

view_get_camera(view_port)

- - - - - - - - - - - -
АргументТипОписание
view_portThe view port to target (0 - 7)
-

-

Возвращается:

-

Camera ID

-

-

Пример:

-

var cam = view_get_camera(0);
- var cw = camera_get_view_width(cam);
- var ch = camera_get_view_height(cam);
- camera_set_view_pos(cam, mouse_x - (cw / 2), mouse_y - (ch / 2));

-

Приведенный выше код получит идентификатор камеры для камеры, назначенной на порт просмотра[0], а затем изменит ее положение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_hport.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_hport.htm index 7ec745069..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_hport.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_hport.htm @@ -1,64 +0,0 @@ - - - - - - view_get_hport - - - - - - - - - - - -

view_get_hport

-

Эта функция может быть использована для получения высоты заданного порта просмотра.

-

-

Синтаксис:

-

view_get_hport(view_port)

- - - - - - - - - - - -
АргументТипОписание
view_portThe view port to target (0 - 7)
-

-

Возвращается:

-

Real

-

-

Пример:

-

if view_get_hport(0) != (display_get_height () / 2)
- {
-     view_set_hport(0, display_get_height() / 2);
- }

-

Приведенный выше код проверит высоту порта просмотра[0], и если она не равна половине высоты дисплея, то она будет установлена на это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_surface_id.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_surface_id.htm index 646ee8814..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_surface_id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_surface_id.htm @@ -1,64 +0,0 @@ - - - - - - view_get_surface_id - - - - - - - - - - - -

view_get_surface_id

-

Эта функция может быть использована для получения уникального значения ID для поверхности, назначенной для данного порта просмотра (возвращает -1, если поверхность не была назначена).

-

-

Синтаксис:

-

view_get_surface_id(view_port)

- - - - - - - - - - - -
АргументТипОписание
view_portThe view port to target (0 - 7)
-

-

Возвращается:

-

Surface ID

-

-

Пример:

-

if view_get_surface_id(0) == -1
- {
-     view_set_surface_id(0, global.vSurf);
- }

-

Приведенный выше код проверит, была ли поверхность назначена порту вида[0], и если нет, то она будет назначена.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_visible.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_visible.htm index b9c641c6f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_visible.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_visible.htm @@ -1,64 +0,0 @@ - - - - - - view_get_visible - - - - - - - - - - - -

view_get_visible

-

Эта функция может быть использована для проверки видимости заданного порта просмотра. Функция вернет true, если он виден, и false, если нет.

-

-

Синтаксис:

-

view_get_visible(view_port)

- - - - - - - - - - - -
АргументТипОписание
view_portThe view port to target (0 - 7)
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !view_get_visible(0)
- {
-     view_set_visible(0, true);
- }

-

Приведенный выше код проверяет, является ли порт представления[0] видимым, и если нет, то он устанавливается в видимый.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_wport.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_wport.htm index 4689e8a45..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_wport.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_wport.htm @@ -1,64 +0,0 @@ - - - - - - view_get_wport - - - - - - - - - - - -

view_get_wport

-

Эта функция может быть использована для получения ширины заданного порта просмотра.

-

-

Синтаксис:

-

view_get_wport(view_port)

- - - - - - - - - - - -
АргументТипОписание
view_portThe view port to target (0 - 7)
-

-

Возвращается:

-

Real

-

-

Пример:

-

if view_get_wport(0) != (display_get_width () / 2)
- {
-     view_set_wport(0, display_get_width() / 2);
- }

-

Приведенный выше код проверяет ширину порта просмотра[0], и если она не равна половине ширины дисплея, то она устанавливается в это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_xport.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_xport.htm index 16913f5e6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_xport.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_xport.htm @@ -1,64 +0,0 @@ - - - - - - view_get_xport - - - - - - - - - - - -

view_get_xport

-

Эта функция может быть использована для получения положения x заданного порта просмотра.

-

-

Синтаксис:

-

view_get_xport(view_port)

- - - - - - - - - - - -
АргументТипОписание
view_portThe view port to target (0 - 7)
-

-

Возвращается:

-

Real

-

-

Пример:

-

if view_get_xport(0) != (display_get_width() / 2) - (view_wport[0] / 2)
- {
-     view_set_xport(0, (display_get_width() / 2) - (view_wport[0] / 2));
- }

-

Приведенный выше код проверит положение x порта представления[0], и если он находится не там, где должен быть, он будет установлен в это положение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_yport.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_yport.htm index dc4d1ff58..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_yport.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_get_yport.htm @@ -1,64 +0,0 @@ - - - - - - view_get_yport - - - - - - - - - - - -

view_get_yport

-

Эта функция может быть использована для получения позиции y заданного порта просмотра.

-

-

Синтаксис:

-

view_get_yport(view_port)

- - - - - - - - - - - -
АргументТипОписание
view_portThe view port to target (0 - 7)
-

-

Возвращается:

-

Real

-

-

Пример:

-

if view_get_yport(0) != (display_get_height() / 2) - (view_hport[0] / 2)
- {
-     view_set_yport(0, (display_get_height() / 2) - (view_hport[0] / 2));
- }

-

Приведенный выше код проверит положение y порта просмотра[0], и если оно не там, где нужно, то оно будет установлено в это положение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_hport.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_hport.htm index f1606a5a2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_hport.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_hport.htm @@ -1,50 +0,0 @@ - - - - - view_hport - - - - - - - - - - -

view_hport

-

Эта переменная может быть использована для получения или установки высоты указанного порта просмотра. Высота порта просмотра (или комбинированных портов просмотра, если активны несколько портов) определяет высоту игрового окна или фонового холста в начале игры, - поэтому изменение этого значения после начала игры не окажет видимого влияния на размер игрового окна, если только оно не будет вызвано вместе с функцией window_set_size(). Если у вас больший или меньший - размер порта больше или меньше, чем назначенный для камеры, то вид камеры будет уменьшен или увеличен, как показано на рисунке ниже.

-

view_hport example

-

-

Синтаксис:

-

view_hport[0 ... 7];

-

-

Возвращается:

-

-

-

Пример:

-

camera_set_view_size(view_camera[0], view_wport[0], view_hport[0]);

-

Приведенный выше код устанавливает ширину и высоту вида камеры такими же, как ширина и высота порта просмотра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_camera.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_camera.htm index 68e10fcad..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_camera.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_camera.htm @@ -1,65 +0,0 @@ - - - - - - view_set_camera - - - - - - - - - - -

view_set_camera

-

Эта функция устанавливает камеру на определенный порт просмотра. Вы указываете порт просмотра, который нужно установить (от 0 до 7), и предоставляете уникальное значение ID камеры (как возвращается функцией camera_create() функции или когда вы используете view_get_camera()). - Если вы зададите значение -1 в качестве ID камеры, то вы удалите камеру из порта просмотра, и обратите внимание, что если этот порт просмотра включен и виден, вы можете получить непредсказуемые результаты.

-

-

Синтаксис:

-

view_set_camera(view_port, camera_id)

- - - - - - - - - - - - - - - -
АргументТипОписание
view_portThe view port to target (0 - 7)
camera_idThe unique camera ID value returned when you created the camera
-

-

Возвращается:

-

-

-

Пример:

-

var cam = camera_create_view(0, 0, 640, 480, 0, obj_Player, 5, 5, -1, -1);
view_set_camera(0, cam);

-

Приведенный выше код создаст новую камеру, а затем назначит ей порт просмотра[0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_hport.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_hport.htm index 36a0ae5e8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_hport.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_hport.htm @@ -1,67 +0,0 @@ - - - - - - view_set_hport - - - - - - - - - - -

view_set_hport

-

Эта функция используется для установки высоты заданного порта просмотра. Вы указываете индекс порта просмотра (от 0 до 7) и новую высоту, которую нужно использовать.

-

-

Синтаксис:

-

view_set_hport(view_port, h)

- - - - - - - - - - - - - - - -
АргументТипОписание
view_portThe view port to target (0 - 7)
hThe new height (in pixels)
-

-

Возвращается:

-

-

-

Пример:

-

if view_get_hport(0) != (display_get_height () / 2)
- {
-     view_set_hport(0, display_get_height() / 2);
- }

-

Приведенный выше код проверит высоту порта просмотра[0], и если она не равна половине высоты дисплея, то она будет установлена на это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_surface_id.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_surface_id.htm index 24611c56c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_surface_id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_surface_id.htm @@ -1,74 +0,0 @@ - - - - - - view_set_surface_id - - - - - - - - - - -

view_set_surface_id

-

С помощью этой переменной вы можете задать содержимое порта просмотра для рисования на поверхности. При работе с поверхностями часто требуется захватить всю видимую область экрана на поверхность, и поэтому вы назначаете ее порту просмотра с помощью этой функции. Это означает, что все, что отображается в выбранном порте просмотра, теперь будет рисоваться на назначенной поверхности, а содержимое этого порта просмотра больше не будет отображаться, что означает, что вам нужно будет либо:

-
    -
  • Включите новый вид и рисуйте поверхность только в этом виде (используя view_current для проверки того, какой вид рисуется)
  • -
  • Нарисуйте поверхность в событии Draw GUI или Post Draw экземпляра, поскольку эти события не зависят от представлений.
  • -
-

При использовании этой функции вы указываете индекс порта вида (от 0 до 7) и индекс поверхности (либо индекс поверхности application_surface либо уникальное значение индекса, возвращаемое функцией surface_create()) или, если поверхность была назначена ранее и вы хотите ее удалить, значение -1. Для получения дополнительных примеров установки порта просмотра на поверхность смотрите переменную view_surface_id.

-
-

-

Синтаксис:

-

view_set_surface_id(view_port, surf)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
view_portРеальноThe view port to target (0 - 7)
surfИдентификатор поверхностиThe surface to apply to the view
-

-

Возвращается:

-

Real

-

-

Пример:

-

if view_get_surface_id(0) == -1
- {
-     view_set_surface_id(0, global.vSurf);
- }

-

Приведенный выше код проверит, была ли поверхность назначена порту вида[0], и если нет, то она будет назначена.

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_visible.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_visible.htm index 62b128db7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_visible.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_visible.htm @@ -1,68 +0,0 @@ - - - - - - view_set_visible - - - - - - - - - - -

view_set_visible

-

Эта функция может использоваться для установки видимости заданного порта представления. Функция принимает индекс порта представления (от 0 до 7) и булево значение true, если он виден, и false, если нет.

-

-

Синтаксис:

-

view_set_visible(view_port, visible)

- - - - - - - - - - - - - - - -
АргументТипОписание
view_portThe view port to target (0 - 7)
visibleVisibility toggle (true является видимым, а false - невидимым)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if !view_get_visible(0)
- {
-     view_set_visible(0, true);
- }

-

Приведенный выше код проверит, является ли порт представления[0] видимым, и если нет, то он будет установлен в видимый.

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_wport.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_wport.htm index acc68e5c0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_wport.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_wport.htm @@ -1,67 +0,0 @@ - - - - - - view_set_wport - - - - - - - - - - -

view_set_wport

-

Эта функция используется для установки ширины заданного порта просмотра. Вы указываете индекс порта представления (от 0 до 7) и новую ширину, которую нужно использовать.

-

-

Синтаксис:

-

view_set_wport(view_port, w)

- - - - - - - - - - - - - - - -
АргументТипОписание
view_portThe view port to target (0 - 7)
wThe new width (in pixels)
-

-

Возвращается:

-

-

-

Пример:

-

if view_get_wport(0) != (display_get_width () / 2)
- {
-     view_set_wport(0, display_get_width() / 2);
- }

-

Приведенный выше код проверяет ширину порта просмотра[0], и если она не равна половине ширины дисплея, то она устанавливается в это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_xport.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_xport.htm index d8d8319c0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_xport.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_xport.htm @@ -1,67 +0,0 @@ - - - - - - view_set_xport - - - - - - - - - - -

view_set_xport

-

Эта функция используется для установки x-положения заданного порта просмотра. Вы указываете индекс порта представления (от 0 до 7) и новое положение, в которое его нужно поместить.

-

-

Синтаксис:

-

view_set_xport(view_port, x)

- - - - - - - - - - - - - - - -
АргументТипОписание
view_portThe view port to target (0 - 7)
xThe new x position
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if view_get_xport(0) != (display_get_width() / 2) - (view_wport[0] / 2)
- {
-     view_set_xport(0, (display_get_width() / 2) - (view_wport[0] / 2));
- }

-

Приведенный выше код проверит x-позицию порта просмотра[0] и, если она находится не там, где должна быть, то она будет установлена в это положение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_yport.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_yport.htm index c77c8ee9f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_yport.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_set_yport.htm @@ -1,67 +0,0 @@ - - - - - - view_set_yport - - - - - - - - - - -

view_set_yport

-

Эта функция используется для установки позиции y заданного порта просмотра. Вы указываете индекс порта просмотра (от 0 до 7) и новое положение, в которое его нужно поместить.

-

-

Синтаксис:

-

view_set_yport(view_port, y)

- - - - - - - - - - - - - - - -
АргументТипОписание
view_portThe view port to target (0 - 7)
yThe new y position
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if view_get_yport(0) != (display_get_height() / 2) - (view_hport[0] / 2)
- {
-     view_set_yport(0, (display_get_height() / 2) - (view_hport[0] / 2));
- }

-

Приведенный выше код проверит положение y порта просмотра[0], и если оно не там, где нужно, оно будет установлено в это положение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_surface_id.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_surface_id.htm index 6bceaf7d1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_surface_id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_surface_id.htm @@ -1,65 +0,0 @@ - - - - - - view_surface_id - - - - - - - - - - -

view_surface_id

-

С помощью этой переменной вы можете установить содержимое данного порта просмотра для рисования на поверхности или получить идентификатор текущей поверхности, если она была назначена порту просмотра. При работе с поверхностями часто требуется, чтобы вся видимая область экрана была отрисована на поверхность, и поэтому вы назначаете ее порту представления с помощью этой переменной. Это означает, что все, что отображается в выбранном представлении, теперь будет рисоваться на назначенной поверхности. Теперь вид не будет рисоваться на экране, что означает, что вам нужно будет либо:

-
    -
  • Включите новый вид и рисуйте поверхность только в этом виде (используя view_current для проверки того, какой вид рисуется)
  • -
  • Нарисуйте поверхность в событии Draw GUI или Post Draw экземпляра, поскольку эти события не зависят от представлений.
  • -
-

Вы также можете прочитать эту переменную, чтобы получить индекс поверхности, которая была назначена выбранному виду, или она вернет -1, если поверхность не была назначена, и обычно поверхность, используемая для этой функции, должна быть размером самой камеры вида (не порта вида). В расширенном примере ниже показана базовая настройка для захвата вида и его отрисовки в событии Draw GUI, а для получения дополнительной информации о поверхностях см. раздел " Поверхности".

-

Обратите внимание, что вы также можете установить порт просмотра на поверхность с помощью функции view_set_surface_id().

-
-

-

Синтаксис:

-

view_surface_id[0...7];

-

-

Возвращается:

-

Surface ID or -1 (if no surface has been assigned)

-

-

Расширенный пример:

-

В этом расширенном примере мы создадим поверхность и назначим ее порту view port[0], чтобы она захватывала вид камеры, назначенный этому порту, а затем нарисуем ее на экране в событии Draw GUI. Для начала нам нужно инициализировать переменную surface в событии Create экземпляра контроллера:

-

surf = -1;

-

Мы установили переменную surface в -1, так как все функции surface должны использоваться в событиях Draw, чтобы предотвратить странные ошибки или неопределенное поведение. Итак, после этого в главном событии Draw мы получим следующее:

-

if !surface_exists(surf)
- {
-     surf = surface_create(camera_get_view_width(view_camera[0]), camera_get_view_height(view_camera[0]));
-     view_surface_id[0] = surf;
- }

-

Поверхности непостоянны, то есть они могут быть удалены из памяти в любой момент из-за управления памятью ОС и других вещей, поэтому здесь мы проверяем, существует ли наша поверхность, и если нет, то создаем ее и присваиваем виду 0. После этого все, что появится на виде 0, теперь будет рисоваться на созданной нами поверхности. Если вы ничего не сделаете в этот момент, то при запуске игры вы получите просто пустой экран, так как все рисование происходит на поверхности, но сама поверхность нигде не рисуется. Поэтому теперь нам нужно нарисовать поверхность на экране в событии Draw GUI следующим образом:

-

if surface_exists(surf)
- {
-     draw_surface_stretched(surf, 0, 0, display_get_gui_width(), display_get_gui_height());
- }

-

Теперь этот код нарисует поверхность, которую мы создали из растянутой камеры обзора, чтобы заполнить весь слой GUI.

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_visible.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_visible.htm index feb6063ef..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_visible.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_visible.htm @@ -1,51 +0,0 @@ - - - - - - view_visible - - - - - - - - - - -

view_visible

-

Эта переменная может быть использована для того, чтобы узнать, виден ли в данный момент определенный порт представления или нет. Вы также можете установить эту переменную, чтобы эффективно включить или выключить вид, установив значение true (видимый) или false (невидимый). Обратите внимание, что даже если вы установили порт вида видимым, если порты вида не включены (с помощью встроенной переменной view_enabled или включить их в редакторе комнат), то они не будут выведены на экран.

-

-

Синтаксис:

-

view_visible[0 ... 7];

-

-

Возвращается:

-

(true: enabled, false: disabled)

-

-

Пример:

-

if !view_visible[0]
- {
-     view_visible[0] = true;
- }

-

Приведенный выше код проверяет, является ли view[0] видимым или нет, и если нет, то устанавливает его видимым.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_wport.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_wport.htm index c0d224509..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_wport.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_wport.htm @@ -1,50 +0,0 @@ - - - - - view_wport - - - - - - - - - - -

view_wport

-

Эта переменная может быть использована для получения или установки ширины указанного порта просмотра. Ширина порта просмотра (или комбинированных портов просмотра, если активны несколько портов) определяет ширину игрового окна или фонового холста в начале игры, - поэтому изменение этого значения после начала игры не окажет видимого влияния на размер игрового окна, если только оно не будет вызвано вместе с функцией window_set_size(). Если у вас больший или меньший - размер порта больше или меньше, чем назначенный для камеры, то вид камеры будет уменьшен или увеличен, как показано на рисунке ниже.

-

view_wport example

-

-

Синтаксис:

-

view_wport[0 ... 7];

-

-

Возвращается:

-

-

-

Пример:

-

camera_set_view_size(view_camera[0], view_wport[0], view_hport[0]);

-

Приведенный выше код устанавливает ширину и высоту вида камеры такими же, как ширина и высота порта просмотра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_xport.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_xport.htm index 33090b0d0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_xport.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_xport.htm @@ -1,51 +0,0 @@ - - - - - - view_xport - - - - - - - - - - -

view_xport

-

С помощью этого встроенного массива вы можете получить или установить x-позицию данного порта просмотра. Порт вида - это область на экране, где рисуется вид, и вы можете иметь до 8 активных портов одновременно (массив имеет значения от 0 до 7 включительно, чтобы получить 8 портов). - портов). По умолчанию в GameMaker игровое окно (или фоновый холст) имеет тот же размер, что и комната, однако, когда вы активируете порты обзора и камеры, это поведение меняется, и используется общий размер ограничивающей области для всех портов обзора. Таким образом, если у вас есть два разных порта обзора в двух разных позициях, общая площадь, которую они охватывают, определяет размер игрового окна. Следующее изображение иллюстрирует это:

-

Если у вас есть только один порт просмотра, установка значения x или y порта может - может привести к интересным эффектам, но обычно это нецелесообразно (см. рисунок ниже), поэтому лучше сохранить положение x и y как (0,0).

-

Canvas with multiple view ports example

-

Синтаксис:

-

view_xport[0 .. 7];

-

-

Возвращается:

-

-

-

Пример:

-

view_xport[0] = 0;
view_yport[0] = 0;

-

Приведенный выше код сбрасывает позицию view port[0] в позицию (0,0) (левый верхний угол) дисплея.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_yport.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_yport.htm index 45029c8be..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_yport.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/Cameras_And_Viewports/view_yport.htm @@ -1,51 +0,0 @@ - - - - - - view_yport - - - - - - - - - - -

view_yport

-

С помощью этого встроенного массива вы можете получить или установить позицию y данного порта просмотра. Порт просмотра - это область на экране, где рисуется вид, и вы можете иметь до 8 активных портов одновременно (массив имеет значения от 0 до 7 включительно, чтобы получить 8 портов). - портов). По умолчанию в GameMaker игровое окно (или фоновый холст) имеет тот же размер, что и комната, однако, когда вы активируете порты обзора и камеры, это поведение меняется, и используется общий размер ограничивающей области для всех портов обзора. Таким образом, если у вас есть два разных порта обзора в двух разных позициях, общая площадь, которую они охватывают, определяет размер игрового окна. Следующее изображение иллюстрирует это:

-

Если у вас есть только один порт просмотра, установка значения x или y порта может - может привести к интересным эффектам, но обычно это нецелесообразно (см. рисунок ниже), поэтому лучше сохранить положение x и y как (0,0).

-

Canvas with multiple view ports example

-

Синтаксис:

-

view_yport[0 .. 7];

-

-

Возвращается:

-

-

-

Пример:

-

view_xport[0] = 0;
view_yport[0] = 0;

-

Приведенный выше код сбрасывает позицию view port[0] в позицию (0,0) (левый верхний угол) дисплея.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/The_Game_Window.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/The_Game_Window.htm index 4cc1ebaf7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/The_Game_Window.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/The_Game_Window.htm @@ -1,75 +0,0 @@ - - - - - - Окно игры - - - - - - - - - - -

Окно игры

-

Игра, которую вы создаете, происходит в окне (даже в полноэкранном режиме), и это окно имеет ряд свойств, таких как положение, размер, является ли оно полноэкранным и т.д.. Эти параметры обычно устанавливаются автоматически на основе размера комнаты и включенных портов просмотра в сочетании с настройками из Game Options для целевой платформы, но вы можете изменить их во время игры с помощью функций, перечисленных на этой странице.

-

ПРИМЕЧАНИЕ Эти функции предназначены только для Windows, Ubuntu (Linux), macOS и целевых модулей HTML5 и могут не работать на любом другом устройстве.

-

На следующем рисунке показано, как некоторые общие функции окна соотносятся и взаимодействуют друг с другом:

-

Обратите внимание, что на изображении выше показано игровое окно, нарисованное в браузере, но для других целей браузер можно заменить дисплеем, поэтому функция типа window_get_y() вернет положение верхней части игрового окна относительно дисплея.

-

Для изменения и получения свойств игрового окна существуют следующие функции:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_center.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_center.htm index 9ad66c70d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_center.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_center.htm @@ -1,52 +0,0 @@ - - - - - - window_center - - - - - - - - - - -

window_center

-

С помощью этой функции вы можете отцентрировать окно игры на дисплее, если целевой модуль Windows, Ubuntu (Linux) или macOS, или отцентрировать его в браузере, если целевой модуль HTML5. Эта функция не имеет эффекта на любом другом устройстве.

-

ПРИМЕЧАНИЕ Если вы изменили размер окна игры на текущем шаге (например, переключившись с полноэкранного режима на оконный или используя window_set_size()), и хотите отцентрировать новое окно, эту функцию следует вызвать по крайней мере на один шаг позже (например, используя alarm), иначе она будет работать некорректно.

-

-

Синтаксис:

-

window_center();

-

-

Возвращается:

-

-

-

Пример:

-

if !window_get_fullscreen()
- {
-     window_center();
- }

-

Приведенный выше код центрирует окно игры в пределах дисплея, если оно не находится в полноэкранном режиме.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_device.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_device.htm index b990c8af1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_device.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_device.htm @@ -1,50 +0,0 @@ - - - - - - window_device - - - - - - - - - - - -

window_device

-

Эта функция вернет текущий указатель устройства d3d, который затем можно (например) передать DLL или Dylib на сайтах Windows и macOS.

-

ПРИМЕЧАНИЕ Эта функция была упразднена в GameMaker в пользу os_get_info().

-

-

Синтаксис:

-

window_device();

-

-

Возвращается:

-

Pointer

-

-

Пример:

-

gfx_pointer = window_device();

-

Приведенный выше код будет хранить указатель устройства d3d в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_caption.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_caption.htm index f1d07f382..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_caption.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_caption.htm @@ -1,52 +0,0 @@ - - - - - - window_get_caption - - - - - - - - - - - -

window_get_caption

-

Эта функция возвращает надпись окна (это текст, который появляется в верхней части окна, рядом с его значком), по умолчанию она показывает надпись комнаты, в которой вы сейчас находитесь.

-

-

Синтаксис:

-

window_get_caption();

-

-

Возвращается:

-

-

-

Пример:

-

if window_get_caption() != ""
- {
-     window_set_caption("");
- }

-

Приведенный выше код проверит надпись окна на наличие или отсутствие текста, и если текст есть, то установит его в пустую строку, чтобы надпись не отображалась.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_colour.htm index 1f6eafc25..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_colour.htm @@ -1,54 +0,0 @@ - - - - - - window_get_colour - - - - - - - - - - - -

window_get_colour

-

Эта функция возвращает цвет фона игрового окна. Этот цвет представляет собой цвет, который будет использоваться для тех областей игрового окна, которые не заняты никакими видами. Следующее изображение иллюстрирует это:

-

На изображении выше есть два вида с двумя портами обзора, каждый из которых нарисован в разных позициях. Это растягивает игровое окно, чтобы вместить оба порта, и использует цвет окна для окрашивания фона, где вид не отображается.

-

-

Синтаксис:

-

window_get_colour();

-

-

Возвращается:

-

Colour Constant

-

-

Пример:

-

if window_get_colour() != c_black
- {
-     window_set_colour(c_black);
- }

-

Приведенный выше код проверит цвет окна, чтобы увидеть, установлен ли он как черный или нет, и если нет, то установит его черным.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_cursor.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_cursor.htm index 71e85831e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_cursor.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_cursor.htm @@ -1,142 +0,0 @@ - - - - - - window_get_cursor - - - - - - - - - - - -

window_get_cursor

-

С помощью этой функции вы можете получить текущий курсор, используемый в окне игры, причем возвращаемое значение будет любой из перечисленных ниже констант (для установки текущего курсора вы можете использовать функцию window_set_cursor() которая также принимает эти константы):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Курсор Постоянная
ПостояннаяКурсор
cr_none
cr_defaultcr_default
cr_arrowcr_arrow
cr_crosscr_cross
cr_beamcr_beam
cr_size_neswcr_size_nesw
cr_size_nscr_size_ns
cr_size_nwsecr_size_nwse
cr_size_wecr_size_we
cr_uparrowcr_uparrow
cr_hourglasscr_hourglass
cr_dragcr_drag
cr_appstartcr_appstart
cr_handpointcr_handpoint
cr_size_allcr_size_all
-

-

Синтаксис:

-

window_get_cursor();

-

-

Возвращается:

-

Cursor Constant

-

-

Пример:

-

if mouse_check_button_pressed(mb_left)
- {
-     if window_get_cursor() != cr_drag window_set_cursor(cr_drag);
- }

-

Приведенный выше код изменит курсор окна на стандартный курсор перетаскивания окна, если была нажата левая кнопка мыши и он не был изменен ранее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_fullscreen.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_fullscreen.htm index a9d873904..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_fullscreen.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_fullscreen.htm @@ -1,56 +0,0 @@ - - - - - - window_get_fullscreen - - - - - - - - - - - -

window_get_fullscreen

-

Эта функция возвращает, находится ли окно игры в полноэкранном режиме (true) или нет (false).

-

-

Синтаксис:

-

window_get_fullscreen();

-

-

Возвращается:

-

-

-

Пример:

-

if window_get_fullscreen()
- {
-     draw_text(32, 32, "Fullscreen is ON");
- }
- else
- {
-     draw_text(32, 32, "Fullscreen is OFF");
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_height.htm index 62cc51ff7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_height.htm @@ -1,49 +0,0 @@ - - - - - - window_get_height - - - - - - - - - - - -

window_get_height

-

С помощью этой функции вы можете получить текущую высоту (в пикселях) окна игры.

-

-

Синтаксис:

-

window_get_height();

-

-

Возвращается:

-

-

-

Пример:

-

hh = window_get_height();

-

Приведенный выше код будет хранить текущую высоту окна в переменной "hh".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_visible_rects.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_visible_rects.htm index 84224826c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_visible_rects.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_visible_rects.htm @@ -1,75 +0,0 @@ - - - - - window_get_visible_rects - - - - - - - - - - - -

window_get_visible_rects

-

С помощью этой функции вы можете найти область перекрытия прямоугольника, определенного от (x1,y1) до (x2,y2) на каждом из подключенных дисплеев. Функция вернет массив с 8 значениями для каждого дисплея (т.е. если у вас два дисплея, массив будет иметь - 16 индексов), где значения [0 ... 3] соответствуют значениям overlapx1, overlapy1, overlapx2, overlapy2 - определяют область перекрытия на данном дисплее и будут установлены в 0,0,0,0,0, если перекрытия нет - а значения [4 ... 7] соответствуют значениям - monitorx1, monitory1, monitorx2, monitory2 - координаты дисплея в виртуальном пространстве дисплея. Это можно использовать для проверки того, будет ли сохраненная позиция окна видна или нет (пользователь мог отключить внешний монитор или - переместить окно за пределы экрана, в результате чего сохраненная позиция окна оказалась недействительной), например.

-

-

Синтаксис:

-

window_get_visible_rects(x1, y1, x2, y2);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1The left edge of the rectangle to check
y1The top edge of the rectangle to check.
x2The right edge of the rectangle to check
y2The bottom edge of the rectangle to check.
-

-

Возвращается:

-

-

-

Пример:

-

var wx = window_get_x();
var wy = window_get_y();
var ww = window_get_width();
var wh = window_get_height();
display_data = window_get_visible_rects(wx, wy, wx + ww, wy + wh);
display_num = array_length(display_data) / 8;

-

Приведенный выше код создаст одномерный массив, хранящийся в переменной display_data, содержащий информацию о дисплеях, а также создаст переменную display_num для хранения количества найденных активных дисплеев.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_width.htm index b8a865e9a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_width.htm @@ -1,49 +0,0 @@ - - - - - - window_get_width - - - - - - - - - - - -

window_get_width

-

С помощью этой функции вы можете получить текущую ширину (в пикселях) окна игры.

-

-

Синтаксис:

-

window_get_width();

-

-

Возвращается:

-

-

-

Пример:

-

ww = window_get_width();

-

Приведенный выше код будет хранить текущую ширину окна в переменной "ww".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_x.htm index 32c51084c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_x.htm @@ -1,49 +0,0 @@ - - - - - - window_get_x - - - - - - - - - - - -

window_get_x

-

С помощью этой функции вы можете получить позицию x (в пикселях) в браузере, если это игра HTML5, или в дисплее, если это игра Windows, Ubuntu (Linux) или macOS.

-

-

Синтаксис:

-

window_get_x();

-

-

Возвращается:

-

-

-

Пример:

-

wx = window_get_x();

-

Приведенный выше код сохраняет текущее положение окна по оси x в переменной "wx".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_y.htm index 135c324e3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_get_y.htm @@ -1,49 +0,0 @@ - - - - - - window_get_y - - - - - - - - - - - -

window_get_y

-

С помощью этой функции вы можете получить позицию y (в пикселях) в браузере, если это игра HTML5, или в дисплее, если это игра Windows, Ubuntu (Linux) или macOS.

-

-

Синтаксис:

-

window_get_y();

-

-

Возвращается:

-

-

-

Пример:

-

wy = window_get_y();

-

Приведенный выше код сохраняет текущее положение окна оси y в переменной "wy".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_handle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_handle.htm index 0c5060b36..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_handle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_handle.htm @@ -1,77 +0,0 @@ - - - - - - window_handle - - - - - - - - - - - -

window_handle

-

С помощью этой функции вы можете получить внутреннее значение Windows id (HWND, указатель). Эта функция действительно полезна только для авторов расширений, которым нужен window handle для вызова Windows API в коде DLL (возвращаемый указатель следует привести к строке, а затем в C++ просто привести его к HWND). В таблице ниже показаны поддерживаемые платформы и то, что они возвращают:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПлатформаВозвращает
WindowsОкно HWND
macOSКласс NSWindow
Ubuntu (Linux)XWindow handle
HTML5Идентификатор холста
GX.gamesName of canvas element
-

-

Синтаксис:

-

window_handle();

-

-

Возвращается:

-

Pointer

-

-

Пример:

-

win_id = windows_handle();

-

Приведенный выше код будет хранить идентификатор окна игры в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_has_focus.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_has_focus.htm index 6ae1b94aa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_has_focus.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_has_focus.htm @@ -1,53 +0,0 @@ - - - - - - window_has_focus - - - - - - - - - - - -

window_has_focus

-

С помощью этой функции вы можете опросить состояние окна (или вкладки), и если оно потеряло фокус, функция вернет false, в противном случае она вернет true. В большинстве случаев вы можете просто использовать os_is_paused() для проверки этого, но в некоторых специфических случаях (например, игры в Chrome Apps) эта функция не сработает, и в этом случае вместо нее следует использовать эту функцию.

-

ПРИМЕЧАНИЕ: Эта функция действительна только для HTML5, Windows, и MacOS.

-

-

Синтаксис:

-

window_has_focus();

-

-

Возвращается:

-

-

-

Пример:

-

if !window_has_focus()
- {
-     pause_game();
- }

-

Приведенный выше код проверит, находится ли окно игры в фокусе или нет, и если функция вернет false, то будет вызвана функция.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_mouse_get_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_mouse_get_x.htm index f06b2de7a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_mouse_get_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_mouse_get_x.htm @@ -1,50 +0,0 @@ - - - - - - window_mouse_get_x - - - - - - - - - - - -

window_mouse_get_x

-

С помощью этой функции вы можете получить x-позицию курсора мыши (в пикселях) в пределах браузера, если это игра HTML5, или в пределах дисплея, если это игра Windows, Ubuntu (Linux) или macOS.

-

ПРИМЕЧАНИЕ: Об обычных функциях мыши см. раздел " Ввод данных с помощью мыши".

-

-

Синтаксис:

-

window_mouse_get_x();

-

-

Возвращается:

-

-

-

Пример:

-

wx = window_mouse_get_x();

-

Приведенный выше код сохраняет текущее положение мыши в окне по оси x в переменной "wx".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_mouse_get_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_mouse_get_y.htm index 4dfbf1f5f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_mouse_get_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_mouse_get_y.htm @@ -1,50 +0,0 @@ - - - - - - window_mouse_get_y - - - - - - - - - - - -

window_mouse_get_y

-

С помощью этой функции вы можете получить позицию y курсора мыши (в пикселях) в пределах браузера, если это игра HTML5, или в пределах дисплея, если это игра Windows, Ubuntu (Linux) или macOS.

-

ПРИМЕЧАНИЕ: Об обычных функциях мыши см. раздел " Ввод данных с помощью мыши".

-

-

Синтаксис:

-

window_mouse_get_y();

-

-

Возвращается:

-

-

-

Пример:

-

wy = window_mouse_get_y();

-

Приведенный выше код сохраняет текущее положение окна мыши по оси y в переменной "wy".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_mouse_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_mouse_set.htm index 2ea49a94b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_mouse_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_mouse_set.htm @@ -1,66 +0,0 @@ - - - - - - window_mouse_set - - - - - - - - - - -

window_mouse_set

-

С помощью этой функции вы можете изменить или установить положение мыши в игровом окне, что может быть полезно, например, в играх FPS. Функция будет работать только тогда, когда игра находится в фокусе, а использование alt + tab разблокирует мышь.

-
-

ПРИМЕЧАНИЕ Об обычных функциях мыши см. раздел " Ввод мыши".

-

-

Синтаксис:

-

window_mouse_set(x, y);

- - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate in the window.
yThe y coordinate in the window.
-

-

Возвращается:

-

-

-

Пример:

-

window_mouse_set(window_get_width() / 2, window_get_height() / 2);

-

Приведенный выше код центрирует мышь в окне игры.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_caption.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_caption.htm index ad32d5c19..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_caption.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_caption.htm @@ -1,63 +0,0 @@ - - - - - - window_set_caption - - - - - - - - - - -

window_set_caption

-

С помощью этой функции вы можете изменить или установить надпись окна для комнаты, в которой вы находитесь в данный момент. Эта надпись появляется в верхней части окна, рядом со значком игры, когда игра не находится в полноэкранном режиме.

-

-

Синтаксис:

-

window_set_caption(caption);

- - - - - - - - - - - -
АргументТипОписание
captionThe new caption.
-

-

Возвращается:

-

-

-

Пример:

-

if window_get_caption() != ""
- {
-     window_set_caption("");
- }

-

Приведенный выше код проверит надпись окна на наличие или отсутствие текста, и если текст есть, то установит его в пустую строку, чтобы надпись не отображалась.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_colour.htm index 062b4349e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_colour.htm @@ -1,65 +0,0 @@ - - - - - - window_set_colour - - - - - - - - - - -

window_set_colour

-

Эта функция позволяет установить цвет фона игрового окна. Этот цвет представляет собой цвет, который будет использоваться для тех областей игрового окна, которые не заняты никакими видами. Следующее изображение иллюстрирует это:

-

На изображении выше есть два вида с двумя портами обзора, каждый из которых нарисован в разных позициях. Это растягивает игровое окно, чтобы вместить оба порта, и использует цвет окна для окрашивания фона, где вид не отображается.

-

-

Синтаксис:

-

window_set_colour(colour);

- - - - - - - - - - - -
АргументТипОписание
colourThe colour to set the region.
-

-

Возвращается:

-

-

-

Пример:

-

if window_get_colour() != c_black
- {
-     window_set_colour(c_black);
- }

-

Приведенный выше код проверит цвет окна, чтобы увидеть, установлен ли он как черный или нет, и если нет, то установит его черным.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_cursor.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_cursor.htm index 173723e18..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_cursor.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_cursor.htm @@ -1,148 +0,0 @@ - - - - - - window_set_cursor - - - - - - - - - - -

window_set_cursor

-

С помощью этой функции вы можете установить курсор для игрового окна на любую из перечисленных ниже констант (чтобы узнать текущий используемый курсор, вы можете использовать функцию window_get_cursor() которая также вернет одну из этих констант):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяКурсор
cr_none
cr_defaultcr_default
cr_arrowcr_arrow
cr_crosscr_cross
cr_beamcr_beam
cr_size_neswcr_size_nesw
cr_size_nscr_size_ns
cr_size_nwsecr_size_nwse
cr_size_wecr_size_we
cr_uparrowcr_uparrow
cr_hourglasscr_hourglass
cr_dragcr_drag
cr_appstartcr_appstart
cr_handpointcr_handpoint
cr_size_allcr_size_all
-

-

Синтаксис:

-

window_set_cursor(cursor);

- - - - - - - - - - - - - -
АргументТипОписание
cursorКурсор ПостояннаяThe cursor to set for the game window.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if mouse_check_button_pressed(mb_left)
- {
-     window_set_cursor(cr_drag);
- }

-

Приведенный выше код изменит курсор окна на стандартный курсор перетаскивания окна, если была нажата левая кнопка мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_fullscreen.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_fullscreen.htm index 9f64cd0b4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_fullscreen.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_fullscreen.htm @@ -1,70 +0,0 @@ - - - - - - window_set_fullscreen - - - - - - - - - - -

window_set_fullscreen

-

С помощью этой функции вы можете установить полноэкранный режим игрового окна (true) или нет (false). Обратите внимание, что для macOS вы должны снять флажок "Start In Fullscreen" и установить флажок "Allow the player to resize the game window" в Game Options, иначе эта функция не будет работать. Также обратите внимание, что эта функция не будет работать на HTML5, если она не добавлена в качестве "кликабельного" обратного вызова (подробнее см. здесь ).

-

-

Синтаксис:

-

window_set_fullscreen(full);

- - - - - - - - - - - -
АргументТипОписание
fullWhether to set the screen to fullscreen (true) or not (false).
-

-

Возвращается:

-

-

-

Пример:

-

if mouse_check_button_pressed(mb_left)
- {
-     if window_get_fullscreen()
-     {
-         window_set_fullscreen(false);
-     }
-     else
-     {
-         window_set_fullscreen(true);
-     }
- }

-

Приведенный выше код проверяет нажатие кнопки мыши и затем переводит окно в полноэкранный режим, если оно еще не переведено, или переводит его в оконный режим, если оно уже переведено.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_max_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_max_height.htm index 99c3d9983..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_max_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_max_height.htm @@ -1,66 +0,0 @@ - - - - - - window_set_max_height - - - - - - - - - - - -

window_set_max_height

-

Эта функция может быть использована для установки максимальной высоты окна вашей игры. Если вы включите опцию изменения размера окна в параметрах игры для целевой платформы, то игрок сможет изменить размер игрового окна до любого желаемого размера, однако с помощью этой функции - вы можете ограничить максимальную высоту указанным вами размером. Если вы хотите вернуться к поведению по умолчанию (т.е. без минимума), то используйте значение -1.

-

ПРИМЕЧАНИЕ: Эта функция доступна только на платформах Windows, macOS и Linux.

-

-

Синтаксис:

-

window_set_max_height(height);

- - - - - - - - - - - -
АргументТипОписание
heightThe maximum height in pixels for the game window.
-

-

Возвращается:

-

-

-

Пример:

-

window_set_min_width(640);
window_set_min_height(480); -
window_set_max_width(1280); -
window_set_max_height(960); -

-

Приведенный выше код установит минимальную и максимальную ширину и высоту для игрового окна.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_max_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_max_width.htm index cfbd6a240..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_max_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_max_width.htm @@ -1,66 +0,0 @@ - - - - - - window_set_max_width - - - - - - - - - - - -

window_set_max_width

-

Эта функция может быть использована для установки максимальной ширины окна вашей игры. Если вы включите опцию изменения размера окна в параметрах игры для целевой платформы, то игрок сможет изменить размер окна игры до любого желаемого размера, однако с помощью этой функции - вы можете ограничить максимальную ширину указанным вами размером. Если вы хотите вернуться к поведению по умолчанию (т.е. без минимума), то используйте значение -1.

-

ПРИМЕЧАНИЕ: Эта функция доступна только на платформах Windows, macOS и Linux.

-

-

Синтаксис:

-

window_set_max_width(width);

- - - - - - - - - - - -
АргументТипОписание
widthThe maximum width in pixels for the game window.
-

-

Возвращается:

-

-

-

Пример:

-

window_set_min_width(640);
window_set_min_height(480); -
window_set_max_width(1280); -
window_set_max_height(960); -

-

Приведенный выше код установит минимальную и максимальную ширину и высоту для игрового окна.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_min_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_min_height.htm index 750b02671..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_min_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_min_height.htm @@ -1,66 +0,0 @@ - - - - - - window_set_min_height - - - - - - - - - - - -

window_set_min_height

-

Эта функция может быть использована для установки минимальной высоты окна вашей игры. Если вы включите опцию изменения размера окна в параметрах игры для целевой платформы, то игрок сможет изменить размер игрового окна до любого желаемого размера, однако с помощью этой функции - вы можете ограничить минимальную высоту указанным вами размером. Если вы хотите вернуться к поведению по умолчанию (т.е. без минимума), то используйте значение -1.

-

ПРИМЕЧАНИЕ: Эта функция доступна только на платформах Windows, macOS и Linux.

-

-

Синтаксис:

-

window_set_min_height(height);

- - - - - - - - - - - -
АргументТипОписание
heightThe minimum height in pixels for the game window.
-

-

Возвращается:

-

-

-

Пример:

-

window_set_min_width(640);
window_set_min_height(480); -
window_set_max_width(1280); -
window_set_max_height(960); -

-

Приведенный выше код установит минимальную и максимальную ширину и высоту для игрового окна.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_min_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_min_width.htm index ab8f41437..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_min_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_min_width.htm @@ -1,66 +0,0 @@ - - - - - - window_set_min_width - - - - - - - - - - - -

window_set_min_width

-

Эта функция может быть использована для установки минимальной ширины окна вашей игры. Если вы включите опцию изменения размера окна в параметрах игры для целевой платформы, то игрок сможет изменить размер окна игры до любого желаемого размера, однако с помощью этой функции - вы можете ограничить минимальную ширину указанным вами размером. Если вы хотите вернуться к поведению по умолчанию (т.е. без минимума), используйте значение -1.

-

ПРИМЕЧАНИЕ: Эта функция доступна только на платформах Windows, macOS и Linux.

-

-

Синтаксис:

-

window_set_min_width(width);

- - - - - - - - - - - -
АргументТипОписание
widthThe minimum width in pixels for the game window.
-

-

Возвращается:

-

-

-

Пример:

-

window_set_min_width(640);
window_set_min_height(480); -
window_set_max_width(1280); -
window_set_max_height(960); -

-

Приведенный выше код установит минимальную и максимальную ширину и высоту для игрового окна.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_position.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_position.htm index c99c6bcdd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_position.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_position.htm @@ -1,65 +0,0 @@ - - - - - - window_set_position - - - - - - - - - - -

window_set_position

-

С помощью этой функции вы можете установить окно игры в определенную позицию на дисплее (на macOS, Linux(Ubuntu) и Windows) или в браузере (HTML5).

-

ПРИМЕЧАНИЕ: Если в вашей HTML5-игре используется пользовательский index.html, который устанавливает холст в фиксированное положение, то эта функция не будет влиять на положение окна.

-

-

Синтаксис:

-

window_set_position(x, y);

- - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate of where to position the window.
yThe y coordinate of where to position the window.
-

-

Возвращается:

-

-

-

Пример:

-

window_set_position(0, 0);

-

Приведенный выше код позиционирует окно игры в левом верхнем углу браузера или дисплея (в зависимости от используемого целевого модуля).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_rectangle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_rectangle.htm index 7884ad05a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_rectangle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_rectangle.htm @@ -1,73 +0,0 @@ - - - - - - window_set_rectangle - - - - - - - - - - - -

window_set_rectangle

-

С помощью этой функции вы можете задать положение игрового окна в браузере (HTML5) или на экране (Windows, Ubuntu (Linux) или macOS) , а также задать масштаб окна. Для получения дополнительной информации о положении окна и его размере см. window_set_position() и window_set_size().

-

-

Синтаксис:

-

window_set_rectangle(x, y, w, h);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xThe new x coordinate of the window.
yThe new y coordinate of the window.
wThe new width of the window.
hThe new height of the window.
-

-

Возвращается:

-

-

-

Пример:

-

window_set_rectangle(0, 0, display_get_width(), display_get_height());

-

Приведенный выше код установит окно игры так, чтобы оно занимало всю область дисплея (либо браузер, либо экран, в зависимости от целевой платформы).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_size.htm index 85a16f499..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_set_size.htm @@ -1,69 +0,0 @@ - - - - - - window_set_size - - - - - - - - - - -

window_set_size

-

С помощью этой функции вы можете изменить размер игрового окна. На настольных платформах это обычно относится к клиентской области окна, исключая строку заголовка и границы:

-

Если вы используете эту функцию для изменения размера игрового окна, содержимое окна будет масштабироваться в соотношении 1:1 с фоновым холстом, что сохранит четкость и ясность изображения (хотя оно будет масштабироваться, если размер окна отличается от размера комнаты или вида). Например, если у вас есть окно размером 200 x 150 пикселей, и игрок растягивает окно, перетаскивая границы, конечный размер окна может быть 400 x 300 пикселей, но холст рисунка все еще 200 x 150, что дает размытое изображение, поскольку соотношение пикселей теперь 1:2. Однако если вы используете эту функцию для изменения размера окна, соотношение 1:1 сохраняется, хотя изображение масштабируется в соответствии с новым размером окна.

-

-

Синтаксис:

-

window_set_size( w, h );

- - - - - - - - - - - - - - - -
АргументТипОписание
wThe new width of the window.
hThe new height of the window.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if mouse_check_button_pressed(mb_left)
- {
-     global.scale += 1;
-     window_set_size(200 * global.scale, 150 * global.scale);
- }

-

Приведенный выше код будет изменять размер окна в зависимости от значения переменной "global.scale" при нажатии кнопки мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_view_mouse_get_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_view_mouse_get_x.htm index 030d3c04a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_view_mouse_get_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_view_mouse_get_x.htm @@ -1,75 +0,0 @@ - - - - - - window_view_mouse_get_x - - - - - - - - - - - -

window_view_mouse_get_x

-

Эта функция возвращает положение мыши x относительно выбранного вида.

-

ПРИМЕЧАНИЕ: Об обычных функциях мыши см. раздел " Ввод данных с помощью мыши".

-

-

Синтаксис:

-

window_view_mouse_get_x( id );

- - - - - - - - - - - - - -
АргументТипОписание
idРеальноThe id of the view to compare the mouse position to.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if mouse_check_button_pressed(mb_left)
- {
-     var xx, yy;
-     xx = window_view_mouse_get_x(0);
-     yy = window_view_mouse_get_y(0);
-
-     if (xx > 0 && xx < 32 && yy > 0 && yy < 32)
-     {
-         b_press[0] = true;
-     }
- } -

-

Приведенный выше код проверяет, нажата ли кнопка мыши, и если да, то получает положение мыши относительно view[0] и сравнивает его, чтобы определить, нужно ли установить переменную в true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_view_mouse_get_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_view_mouse_get_y.htm index 4a0eacea1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_view_mouse_get_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_view_mouse_get_y.htm @@ -1,75 +0,0 @@ - - - - - - window_view_mouse_get_y - - - - - - - - - - - -

window_view_mouse_get_y

-

Эта функция возвращает положение мыши по оси y относительно выбранного вида.

-

ПРИМЕЧАНИЕ: Об обычных функциях мыши см. раздел " Ввод данных с помощью мыши".

-

-

Синтаксис:

-

window_view_mouse_get_y( id );

- - - - - - - - - - - - - -
АргументТипОписание
idРеальноThe id of the view to compare the mouse position to.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if mouse_check_button_pressed(mb_left)
- {
-     var xx, yy;
-     xx = window_view_mouse_get_x(0);
-     yy = window_view_mouse_get_y(0);
-
-     if (xx > 0 && xx < 32 && yy > 0 && yy < 32)
-     {
-         b_press[0] = true;
-     }
- } -

-

Приведенный выше код проверяет, нажата ли кнопка мыши, и если да, то получает положение мыши относительно view[0] и сравнивает его, чтобы определить, нужно ли установить переменную в true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_views_mouse_get_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_views_mouse_get_x.htm index ad3c43b61..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_views_mouse_get_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_views_mouse_get_x.htm @@ -1,50 +0,0 @@ - - - - - - window_views_mouse_get_x - - - - - - - - - - - -

window_views_mouse_get_x

-

Эта функция возвращает x-координату мыши относительно всех активных представлений и возвращает одно и то же значение mouse_x.

-

ПРИМЕЧАНИЕ: Об обычных функциях мыши см. раздел " Ввод мыши".

-

-

Синтаксис:

-

window_views_mouse_get_x();

-

-

Возвращается:

-

-

-

Пример:

-

myx = window_views_mouse_get_x();

-

Это установит myx в координату x мыши в окне относительно всех активных представлений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_views_mouse_get_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_views_mouse_get_y.htm index 54b848f46..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_views_mouse_get_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/The_Game_Window/window_views_mouse_get_y.htm @@ -1,50 +0,0 @@ - - - - - - window_views_mouse_get_y - - - - - - - - - - - -

window_views_mouse_get_y

-

Эта функция возвращает координату y мыши относительно всех активных представлений и возвращает одно и то же значение mouse_y.

-

ПРИМЕЧАНИЕ: Об обычных функциях мыши см. раздел " Ввод мыши".

-

-

Синтаксис:

-

window_views_mouse_get_y();

-

-

Возвращается:

-

-

-

Пример:

-

myy = window_views_mouse_get_y();

-

Это установит myy в координату y мыши в окне относительно всех активных представлений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_dpi_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_dpi_x.htm index 0293848d9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_dpi_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_dpi_x.htm @@ -1,50 +0,0 @@ - - - - - - display_get_dpi_x - - - - - - - - - - - -

display_get_dpi_x

-

Точки на дюйм (DPI) - это мера плотности точек пространственной печати или видео, в частности, количество отдельных точек, которые могут быть расположены в линию на расстоянии 1 дюйма (2,54 см). При работе на мобильных устройствах (в частности, на устройствах Android ) это важный фактор, который необходимо учитывать, поскольку то, что может подходить для одного разрешения дисплея, может не подходить для другого. Например, у вас может быть два дисплея с одинаковым разрешением 400 x 800, но разрешение дисплея 1 составляет 60 точек на дюйм, а дисплея 2 - 30 точек на дюйм. В этом случае любой текст или изображение, отображаемые на дисплее 2, будут казаться намного больше, даже если фактическое разрешение одинаково.

-

Эта функция получит значение dpi дисплея устройства по оси x (это значение также зависит от ориентации устройства). Обратите внимание, что Mac и iOS не возвращают конкретные настройки dpi, но, похоже, возвращают те же значения, что и ОС, что неверно (но придется сделать), поскольку Apple не дает правильных значений.

-

-

Синтаксис:

-

display_get_dpi_x();

-

-

Возвращается:

-

-

-

Пример:

-

dpx = display_get_dpi_x();

-

Это установит переменную "dpx" в значение dpi для оси x.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_dpi_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_dpi_y.htm index 195804996..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_dpi_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_dpi_y.htm @@ -1,53 +0,0 @@ - - - - - - display_get_dpi_y - - - - - - - - - - - -

display_get_dpi_y

-

Точки на дюйм (DPI) - это мера плотности точек пространственной печати или видео, в частности, количество отдельных точек, которые могут быть расположены в линию на расстоянии 1 дюйма (2,54 см). При работе на мобильных устройствах (в частности, на устройствах Android ) это - это важный фактор, который необходимо учитывать, поскольку то, что может подходить для одного разрешения дисплея, может не подходить для другого. Например, у вас может быть два дисплея с одинаковым разрешением 400 x 800, но дисплей 1 имеет разрешение 60 точек на дюйм, а дисплей 2 - 60 точек на дюйм. - а дисплей 2 имеет разрешение 30 точек на дюйм. В этом случае любой текст или изображение, отображаемые на дисплее 2, будут казаться намного больше, даже если фактическое разрешение одинаково.

-

Эта функция получит значение dpi дисплея устройства по оси y (это значение также зависит от ориентации устройства). Обратите внимание, что Mac и iOS не возвращают конкретные настройки dpi, но, похоже, возвращают те же значения, что и ОС, которые - не являются правильными (но их придется использовать), поскольку Apple не дает правильных значений.

-

-

Синтаксис:

-

display_get_dpi_y();

-

-

Возвращается:

-

-

-

Пример:

-

dpy = display_get_dpi_y();

-

Это установит переменную "dpy" в значение dpi для оси y.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_frequency.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_frequency.htm index c7d386a91..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_frequency.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_frequency.htm @@ -1,67 +0,0 @@ - - - - - - display_get_frequency - - - - - - - - - - -

display_get_frequency

-

Эта функция возвращает частоту (или частоту обновления) дисплея, на котором идет игра. Она возвращает реальное значение в виде кадров в секунду, поэтому, например, если ваш монитор работает на частоте 60 Гц, вы получите 60, если на частоте 144 Гц - 144 и так далее.

-

ПРИМЕЧАНИЕ Эта функция не поддерживается в HTML5.

-

-

Синтаксис:

-

display_get_frequency();

-

-

Возвращается:

-

-

-

Пример:

-

var _freq = display_get_frequency();
-
- if (_freq >= 240)
- {
-     game_set_speed(240, gamespeed_fps);
- }
- else if (_freq >= 120)
- {
-     game_set_speed(120, gamespeed_fps);
- }
- else if (_freq >= 60)
- {
-     game_set_speed(60, gamespeed_fps);
- }
- else
- {
-     game_set_speed(30, gamespeed_fps);
- } -

-

Приведенный выше код получает частоту дисплея и выполняет некоторые условия, чтобы установить игру на 240, 120, 60 или 30 кадров в секунду. Это означает, что если частота дисплея 90 Гц, то игра будет работать со скоростью 60 кадров в секунду, если 144 Гц, то со скоростью 120 кадров в секунду и т. д. Конечно, вы можете передать частоту дисплея непосредственно в game_set_speed(), чтобы она использовалась в качестве частоты кадров игры.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_gui_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_gui_height.htm index 7654d693f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_gui_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_gui_height.htm @@ -1,49 +0,0 @@ - - - - - - display_get_gui_height - - - - - - - - - - - -

display_get_gui_height

-

С помощью этой функции вы можете получить высоту (в пикселях) графического интерфейса, используемую в событии Draw GUI Event.

-

-

Синтаксис:

-

display_get_gui_height();

-

-

Возвращается:

-

Real

-

-

Пример:

-

ads_move(0, display_get_gui_height() - ads_get_display_height(0), 0);

-

Приведенный выше код установит рекламу для отображения в левом нижнем углу дисплея.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_gui_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_gui_width.htm index 5512f70a4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_gui_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_gui_width.htm @@ -1,48 +0,0 @@ - - - - - - display_get_gui_width - - - - - - - - - - -

display_get_gui_width

-

С помощью этой функции вы можете получить ширину (в пикселях) графического интерфейса, используемую в событии Draw GUI Event.

-

-

Синтаксис:

-

display_get_gui_width();

-

-

Возвращается:

-

-

-

Пример:

-

ads_move(display_get_gui_width() - ads_get_display_width(0), 0, 0);

-

Приведенный выше код установит рекламу для показа в правом верхнем углу дисплея.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_height.htm index 4fb42f9b2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_height.htm @@ -1,49 +0,0 @@ - - - - - - display_get_height - - - - - - - - - - - -

display_get_height

-

Эта функция возвращает высоту дисплея (в пикселях). Обратите внимание, что для HTML5 это значение является высотой окна браузера, а не физическим размером дисплея.

-

-

Синтаксис:

-

display_get_height();

-

-

Возвращается:

-

-

-

Пример:

-

myheight = display_get_height();

-

Это установит переменную "myheight" на высоту дисплея.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_orientation.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_orientation.htm index 719f708b0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_orientation.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_orientation.htm @@ -1,94 +0,0 @@ - - - - - - display_get_orientation - - - - - - - - - - - -

display_get_orientation

-

Эта функция возвращает одну из четырех констант GameMaker, позволяющих определить, в каком режиме находится устройство, на котором запущена игра, - альбомном или портретном (см. таблицу ниже).

-

Обратите внимание, что эта функция может неправильно определять ориентацию устройства при использовании в целевом модуле HTML5. Однако это легко имитируется с помощью следующего скрипта:

-

return (browser_width < browser_height);

-

Такая функция будет возвращать true для портрета и false для пейзажа.

-

-

Синтаксис:

-

display_get_orientation()

-

-

Возвращается:

-

Display Orientation Constant

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Ориентация дисплея Постоянная
ПостояннаяОписание
display_landscapeУстройство удерживается горизонтально, т.е. самый длинный край расположен слева направо, а кнопка меню находится справа.
display_landscape_flippedКак и выше, только теперь кнопка меню находится слева.
display_portraitУстройство удерживается вертикально, т.е. самый длинный край находится сверху вниз, а кнопка меню - внизу.
display_portrait_flippedКак и выше, только теперь кнопка меню находится вверху.
-

-

Пример:

-

if display_get_orientation() == display_landscape
- {
-     global.Config = 0;
- }
- else
- {
-     global.Config = 1;
- }

-

Приведенный выше код проверяет ориентацию устройства и устанавливает глобальную переменную в зависимости от возвращенного значения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_sleep_margin.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_sleep_margin.htm index 37e59bef8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_sleep_margin.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_sleep_margin.htm @@ -1,56 +0,0 @@ - - - - - - display_get_sleep_margin - - - - - - - - - - - -

display_get_sleep_margin

-

Эта функция может быть использована для получения текущего значения маржи сна, используемого для синхронизации рендеринга вашей игры, и возвращает значение в миллисекундах. Для получения дополнительной информации о тайминге отображения см. display_set_timing_method().

-

-

Синтаксис:

-

display_get_sleep_margin();

-

-

Возвращается:

-

-

-

Пример:

-

if display_get_timing_method() != tm_sleep
- {
-     display_set_timing_method(tm_sleep);
-     if (display_get_sleep_margin() != 20)
-     {
-         display_set_sleep_margin(20);
-     }
- }

-

Приведенный выше код проверит метод синхронизации, и если он не установлен на tm_sleep, то он будет установлен на это значение, а запас сна будет установлен на 20.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_timing_method.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_timing_method.htm index f395390db..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_timing_method.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_timing_method.htm @@ -1,82 +0,0 @@ - - - - - - display_get_timing_method - - - - - - - - - - - -

display_get_timing_method

-

Эта функция может использоваться для получения метода синхронизации, который будет использоваться для рендеринга вашей игры. Метод может быть одной из констант, перечисленных ниже.

-

Для получения дополнительной информации о различных методах определения времени см. display_set_timing_method().

-

-

Синтаксис:

-

display_get_timing_method();

-

-

Возвращается:

-

Display Timing Method Constant

- - - - - - - - - - - - - - - - - - - - - - -
Метод синхронизации дисплея Постоянный
ПостояннаяОписание
tm_sleepЗначение запаса сна является основным методом хронометража
tm_countvsyncsТайминг Vsync - основной метод тайминга (по умолчанию для всех поддерживаемых платформ)
-

-

Пример:

-

if display_get_timing_method() != tm_sleep
- {
-     display_set_timing_method(tm_sleep);
-     if (display_get_sleep_margin() != 20)
-     {
-         display_set_sleep_margin(20);
-     }
- }

-

Приведенный выше код проверит метод синхронизации, и если он не установлен на tm_sleep, то он будет установлен на это значение, а запас сна будет установлен на 20.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_width.htm index 46d2a802c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_get_width.htm @@ -1,49 +0,0 @@ - - - - - - display_get_width - - - - - - - - - - - -

display_get_width

-

Эта функция возвращает ширину дисплея (в пикселях). Обратите внимание, что для HTML5 это значение является шириной окна браузера, а не физическим размером дисплея.

-

-

Синтаксис:

-

display_get_width();

-

-

Возвращается:

-

-

-

Пример:

-

mywidth = display_get_width();

-

Это установит переменную "mywidth" на ширину дисплея.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_mouse_get_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_mouse_get_x.htm index 09744cba6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_mouse_get_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_mouse_get_x.htm @@ -1,51 +0,0 @@ - - - - - - display_mouse_get_x - - - - - - - - - - - -

display_mouse_get_x

-

Эта функция возвращает положение мыши x на экране. Следует отметить, что эта функция работает правильно только при использовании на объектах Windows и macOS.

-

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

-

Для других устройств он вернет 0, и вам следует использовать функцию device_mouse_raw_x() и device_mouse_raw_y() вместо этого.

-

-

Синтаксис:

-

display_mouse_get_x();

-

-

Возвращается:

-

Real

-

-

Пример:

-

my_x = display_mouse_get_x();

-

Это установит my_x в координату x мыши относительно дисплея.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_mouse_get_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_mouse_get_y.htm index eda03e99b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_mouse_get_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_mouse_get_y.htm @@ -1,51 +0,0 @@ - - - - - - display_mouse_get_y - - - - - - - - - - - -

display_mouse_get_y

-

Эта функция возвращает положение мыши по оси y на экране. Следует отметить, что эта функция работает правильно только при использовании на объектах Windows и macOS.

-

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

-

Для других устройств он вернет 0, и вам следует использовать функцию device_mouse_raw_x() и device_mouse_raw_y() вместо этого.

-

-

Синтаксис:

-

display_mouse_get_y();

-

-

Возвращается:

-

Real

-

-

Пример:

-

my_y = display_mouse_get_y();

-

Это установит my_y в координату y мыши относительно дисплея.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_mouse_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_mouse_set.htm index 545314fef..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_mouse_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_mouse_set.htm @@ -1,65 +0,0 @@ - - - - - - display_mouse_set - - - - - - - - - - -

display_mouse_set

-

С помощью этой функции вы можете изменить или установить положение мыши на игровом дисплее, что может быть полезно, например, в играх FPS. Функция работает, только когда игра находится в фокусе, а использование ALT + Tab разблокирует мышь.

-
-

-

Синтаксис:

-

display_mouse_set(x, y);

- - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate in the display.
yThe y coordinate in the display.
-

-

Возвращается:

-

-

-

Пример:

-

display_mouse_set(display_get_width() / 2, display_get_height() / 2);

-

Приведенный выше код центрирует мышь на игровом дисплее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_reset.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_reset.htm index a0e732fe1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_reset.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_reset.htm @@ -1,74 +0,0 @@ - - - - - - display_reset - - - - - - - - - - -

display_reset

-

Эта функция сбрасывает настройки дисплея на те, которые были установлены при запуске игры, а также позволяет изменить текущий уровень используемого полноэкранного сглаживания и использовать ли вертикальную синхронизацию. Доступные уровни сглаживания - 0, 2, 4 и 8, при этом при запуске по умолчанию установлено значение 0, а для v-sync по умолчанию установлено значение false (выключено). Включение v-sync может обеспечить более плавный игровой процесс, но при этом потребуется больше вычислительной мощности, поэтому перед использованием следует внимательно изучить его влияние. То же самое касается и сглаживания, где чем выше число, тем больше требуется обработки.

-

Поскольку не все целевые устройства одинаковы, некоторые могут не поддерживать, например, сглаживание 8x или 4x, поэтому существует переменная, доступная только для чтения, для получения различных уровней AA, которые может отображать устройство, на котором запущена игра:

-

display_aa

-

Эта переменная возвращает целочисленное значение, основанное на установке битов для различных уровней. Так, только для 2xAA она сообщит 2, для 2x и 4x доступности она сообщит 6. Для 8 и 4 будет сообщено 12. Для всех трех уровней (2, 4 и 8) она сообщит 14.

-

-

Синтаксис:

-

display_reset(aa, vsync);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
aaРеальноThe level of anti-aliasing filtering (0, 2, 4 or 8).
vsyncБулевоToggle vertical synchronisation to on (true) or off (false).
-

-

Возвращается:

-

Real

-

-

Пример:

-

if (display_aa > 12)
- {
-     display_reset(8, true);
- }

-

Приведенный выше код установит уровень сглаживания на 8, если поддерживается, и включит v-sync.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_gui_maximise.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_gui_maximise.htm index 84c628c1c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_gui_maximise.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_gui_maximise.htm @@ -1,88 +0,0 @@ - - - - - - display_set_gui_maximise - - - - - - - - - - - -

display_set_gui_maximise

-

Эта функция может быть использована для максимизации слоя GUI и установки его масштабирования и смещения относительно размеров экрана, а не положения и размеров поверхности приложения по умолчанию. По умолчанию слой GUI имеет разрешение 1:1 с разрешением поверхности приложения и рисуется в позиции (0,0) поверхности. Однако это не всегда то, что вы хотите, поэтому вы можете использовать эту функцию, чтобы установить его рисование относительно абсолютной (0,0) позиции дисплея или игрового окна. Какие аргументы вы передадите этой функции, зависит от того, какой эффект вы хотите получить от слоя GUI. При простом вызове функции без аргументов слой GUI будет отрисован в позиции (0,0) экрана или игрового окна, при этом ширина и высота будут масштабированы, чтобы вместить всю область:

-

display_set_gui_maximise();

-

Однако вы можете задать коэффициент масштабирования для слоя GUI, и ширина и высота будут масштабироваться на эту величину. Помните, что слой GUI всегда подгоняется под размер дисплея или игрового окна, или поверхности приложения, поэтому установка этого значения в любое значение, отличное от 1, в основном масштабирует количество пикселей по ширине и высоте. Если ваш дисплей имеет размер 1024x768, а вы установили масштабный коэффициент на 0,5, то ваш слой GUI будет иметь размер, равный половине размера дисплея, что фактически удваивает размер пикселей:

-

display_set_gui_maximise(0.5, 0.5);

-

Установка значений таким образом также установит позицию рисования в (0,0) окна дисплея или игры, поэтому вы можете предоставить значения смещения для "перемещения" позиции (0,0):

-

var pos = application_get_position();
- display_set_gui_maximise(0.5, 0.5, pos[0], pos[1]);

-

Наконец, вы можете сбросить слой GUI с помощью этой функции, установив коэффициенты масштабирования на -1. В результате слой GUI снова будет иметь масштаб 1:1, а позиция рисования будет установлена в положение (0,0) поверхности приложения, а не дисплея или окна.

-

display_set_gui_maximise(-1, -1);

-

-

Синтаксис:

-

display_set_gui_maximise(xscale, yscale, xoffset, yoffset);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xscaleРеальноOPTIONAL Коэффициент горизонтального масштабирования (используйте -1, чтобы вернуть значение по умолчанию).
yscaleРеальноOPTIONAL Коэффициент вертикального масштабирования (используйте -1, чтобы вернуть значение по умолчанию).
xoffsetРеальноOPTIONAL Позиция смещения x для рисования.
yoffsetРеальноOPTIONAL Позиция смещения по оси y для рисования.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

display_set_gui_size(display_get_width() / 2, display_get_height() / 2);
- display_set_gui_maximise(2, 2, 0, 0);

-

Приведенный выше код зафиксирует событие draw GUI на заданной ширине и высоте, масштабируя все компоненты для размещения на дисплее, используя эту пропорцию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_gui_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_gui_size.htm index dedb62be6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_gui_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_gui_size.htm @@ -1,70 +0,0 @@ - - - - - - display_set_gui_size - - - - - - - - - - -

display_set_gui_size

-

Эта функция влияет только на то, что рисуется в событии Draw GUI, и может быть использована для установки определенной ширины и высоты для всех компонентов GUI в этом событии, и независимо от того, какой - размер дисплея или окна используется для отображения GUI, он будет масштабирован для правильного размещения. Позиционирование GUI (т.е. позиция (0,0)) зависит от того, использовали ли вы функцию display_set_gui_maximise() или нет. Если вы не используете эту функцию (настройка по умолчанию), то слой GUI будет позиционирован с точкой (0,0) на той же позиции, что и поверхность приложения (область, где рисуется ваша игра), а ширина и высота будут - например, если установить ширину GUI 256px с помощью этой функции, когда поверхность приложения равна 512px, то эти 256 пикселей будут растянуты до нужного размера, в результате чего пикселей станет в два раза больше. Это идеально подходит для тех игр - в которых коррекция соотношения сторон установлена в глобальных настройках игры.

-

Если вы использовали функцию display_set_gui_maximise(), то позиция (0,0) для слоя GUI будет по умолчанию соответствовать левому верхнему углу окна игры или дисплея (в полноэкранном режиме или на устройствах), с коэффициентом масштабирования, установленным этой функцией, - а ширина и высота задаются этой функцией. Вы можете в любое время вернуть слой GUI к конфигурации по умолчанию, вызвав эту функцию, используя -1 в качестве ширины и высоты - это установит позицию (0, 0) на поверхности приложения, а ширина и высота будут сброшены на 1. - и высота будут сброшены на 1:1 с поверхностью.

-

-

Синтаксис:

-

display_set_gui_size(width, height);

- - - - - - - - - - - - - - - -
АргументТипОписание
widthThe width of the GUI
heightThe height of the GUI
-

-

Возвращается:

-

-

-

Пример:

-

display_set_gui_size(768, 1024);

-

Приведенный выше код зафиксирует событие draw GUI на заданной ширине и высоте, масштабируя все компоненты для размещения либо на поверхности приложения, либо на дисплее, используя эту пропорцию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_sleep_margin.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_sleep_margin.htm index 323017ea4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_sleep_margin.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_sleep_margin.htm @@ -1,119 +0,0 @@ - - - - - - display_set_sleep_margin - - - - - - - - - - -

display_set_sleep_margin

-

Эта функция может быть использована для установки значения маржи сна, используемого для синхронизации рендеринга вашей игры, и требует значения в миллисекундах. Значения по умолчанию следующие:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПлатформаМиллисекунды
Windows10
macOS10
Ubuntu10
HTML510
Android4
iOS4
Windows UWP10
Xbox10
PS410
Nintendo Switch10
-

Обратите внимание, что даже если метод синхронизации установлен на использование синхронизации vsync, маржа сна будет оказывать некоторое влияние на рендеринг игры, поэтому при установке этого значения следует соблюдать осторожность. Для получения дополнительной информации о тайминге отображения см. display_set_timing_method().

-

ПРИМЕЧАНИЕ: В дополнение к Sleep Margin, вы можете дополнительно контролировать производительность и энергопотребление на Windows, регулируя разрешение планировщика потоков во время выполнения.

-

-

Синтаксис:

-

display_set_sleep_margin(milliseconds);

- - - - - - - - - - - - - -
АргументТипОписание
millisecondsРеальноThe number of milliseconds for the sleep margin
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if display_get_timing_method() != tm_sleep
- {
-     display_set_timing_method(tm_sleep);
-     if (display_get_sleep_margin() != 20)
-     {
-         display_set_sleep_margin(20);
-     }
- }

-

Приведенный выше код проверит метод синхронизации, и если он не установлен на tm_sleep, то он будет установлен на это значение, а запас сна будет установлен на 20.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_timing_method.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_timing_method.htm index 69a3b0535..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_timing_method.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_timing_method.htm @@ -1,91 +0,0 @@ - - - - - - display_set_timing_method - - - - - - - - - - - -

display_set_timing_method

-

Эта функция может использоваться для установки метода синхронизации, который будет использоваться для рендеринга вашей игры. Метод может быть одной из следующих констант:

- - - - - - - - - - - - - - - -
ПостояннаяОписание
tm_sleepИспользуйте значение запаса сна в качестве основного метода синхронизации
tm_countvsyncsИспользовать синхронизацию vsync в качестве основного метода синхронизации (по умолчанию для всех поддерживаемых платформ)
-

Метод синхронизации vsync использует поддержку вертикальной синхронизации целевой платформой для обеспечения привязки для расчетов времени рендеринга в игре, в то время как установка режима sleep margin будет просто пытаться обеспечить, чтобы каждый кадр длился нужное количество времени (скажем, 1/30 или 1/60 секунды) путем ожидания или сна. В целом, стандартный режим vsync дает наиболее плавные результаты, но обратите внимание, что при использовании метода vsync значения маржи сна все еще важны, хотя их влияние уменьшается, и мы рекомендуем оставить значение по умолчанию при использовании этого метода.

-

По умолчанию на всех платформах, кроме PS4, Ubuntu и HTML5, GameMaker будет использовать метод синхронизации vsync, в то время как на неподдерживаемых платформах может использоваться только синхронизация sleep margin.

-

Если вы хотите установить предел сна, вы можете сделать это с помощью функции display_set_sleep_margin() и вы можете узнать, какой метод синхронизации используется в данный момент, с помощью функции display_get_timing_method().

-

-

Синтаксис:

-

display_set_timing_method(method);

- - - - - - - - - - - - - -
АргументТипОписание
methodМетод синхронизации дисплея ПостоянныйThe timing method to use (see the list of constants, above)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if display_get_timing_method() != tm_sleep
- {
-     display_set_timing_method(tm_sleep);
-     if display_get_sleep_margin() != 20
-     {
-         display_set_sleep_margin(20);
-     }
- }

-

Приведенный выше код проверит метод синхронизации, и если он не установлен на tm_sleep, то он будет установлен на это значение, а запас сна будет установлен на 20.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_ui_visibility.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_ui_visibility.htm index efd26e3a8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_ui_visibility.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/display_set_ui_visibility.htm @@ -1,63 +0,0 @@ - - - - - - display_set_ui_visibility - - - - - - - - - - -

display_set_ui_visibility

-

Эта функция может использоваться для отображения или скрытия системного пользовательского интерфейса только на Android. Функция требует, чтобы вы предоставили один или несколько системных флагов в виде целочисленного значения. Если используется более одного флага, их необходимо объединить с помощью побитового "или", как показано в примере ниже. Список системных флагов Android можно найти здесь.

-

-

Синтаксис:

-

display_set_ui_visibility(flags);

- - - - - - - - - - - - - -
АргументТипфлаги
flagsРеальноThe Android SYSTEM flags to use (as an integer value).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var flags = 1024|4096;
- display_set_ui_visibility(flags);

-

Приведенный выше код будет использовать системные флаги Android "SYSTEM_UI_FLAG_IMMERSIVE_STICKY" и "SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN" для установки видимости дисплея.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/gif_add_surface.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/gif_add_surface.htm index 91ea8a602..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/gif_add_surface.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/gif_add_surface.htm @@ -1,105 +0,0 @@ - - - - - - gif_add_surface - - - - - - - - - - -

gif_add_surface

-

С помощью этой функции вы можете сохранить кадр в GIF-файл с поверхности. Вы предоставляете идентификатор GIF-файла (возвращаемый функцией gif_open()) и идентификатор поверхности (возвращаемый функцией surface_create()), а также время задержки между кадрами. Время задержки вычисляется в 1/100 секунды, но учтите, что после создания GIF-файла, если вы используете его, например, в рекламных целях, разные браузеры могут интерпретировать задержку кадров по-разному - подробнее см. здесь. Вы можете (опционально) указать значения смещения по X и Y для поверхности, используемой для добавления в GIF, в этом случае часть, нарисованная в GIF, будет начинаться со смещения, а не с позиции по умолчанию (0,0), что позволит вам выбрать только часть поверхности для добавления. Вы также можете задать значение квантования, которое представляет собой целое число от 0 до 3, где 0 - полное квантование, а 3 - нулевое квантование (при меньших значениях качество будет ухудшаться, но GIF будет меньше). Обратите внимание, что нет большой разницы между качеством по умолчанию 2 и максимальным значением 3, а использование 3 значительно замедлит создание GIF, поэтому следует быть осторожным при использовании максимального значения.

-

Обратите внимание, что нет никаких встроенных ограничений на количество кадров или на размер этих кадров в вашем GIF, но если вы используете слишком много памяти, то функция завершится неудачей и вернет -1, в противном случае она вернет 0.

-

-

Синтаксис:

-

gif_add_surface(gif_index, surface, delay_time, [xoffset], [yoffset]);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
gif_indexGIF IDThe ID of gif to add the surface data to
surfaceИдентификатор поверхностиThe ID of the surface to use as the added frame
delay_timeРеальноThe delay time for the frame (in 100ths of a second)
[xoffset]РеальноOPTIONAL Смещение вдоль оси X поверхности, от которой нужно добавить
[yoffset]РеальноOPTIONAL Смещение по оси Y поверхности, от которой нужно добавить
[quantization]РеальноOPTIONAL Величина квантования от 0 до 3 (0 - самое низкое качество, 3 - самое высокое качество, по умолчанию 2)
-

-

Возвращается:

-

Real

-

-

Пример:

-

if save_gif == true
- {
-     if (count == 0)
-     {
-         gif_image = gif_open(room_width, room_height);
-     }
-     else if (count < 30)
-     {
-         gif_add_surface(gif_image, application_surface, 6/100);
-     }
-     else
-     {
-         gif_save(gif_image, "GameCapture.gif");
-         count = 0;
-         save_gif = false;
-     }
-     count++;
- }

-

Приведенный выше код создаст файл изображения GIF с 30 кадрами, взятыми с поверхности приложения, а затем сохранит его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/gif_open.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/gif_open.htm index 44092c2a7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/gif_open.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/gif_open.htm @@ -1,91 +0,0 @@ - - - - - - gif_open - - - - - - - - - - - -

gif_open

-

С помощью этой функции вы можете создать пустое изображение в формате GIF, готовое к добавлению данных. При вызове функции необходимо указать ширину и высоту GIF (в пикселях, причем верхнего предела размера нет, кроме доступной памяти), и функция вернет уникальное значение ID, используемое для идентификации подарка в последующих функциях, или вернет -1, если gif не удалось инициализировать (например, если ширина/высота слишком велики для доступной памяти). Вы также можете указать необязательный аргумент для задания "прозрачного цвета" для GIF. Это значение RGB (без альфа-компонента), и оно очистит GIF до этого цвета, прежде чем в него что-либо будет добавлено. Если вы не укажете аргумент "чистый цвет", по умолчанию будет использоваться черный цвет.

-

Обратите внимание, что при использовании этой функции вы должны вызвать gif_save() для завершения создания GIF перед открытием другого файла для записи (поэтому для каждого gif_open() должен быть сопроводительный gif_save()).

-

-

Синтаксис:

-

gif_open(width, height, [clear_colour]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
widthРеальноThe width of the gif to create
heightРеальноThe height of the gif to create
[clear_colour]ЦветOPTIONAL Цвет (RGB), к которому нужно очистить gif
-

-

Возвращается:

-

GIF ID

-

-

Пример:

-

if save_gif == true
- {
-     if (count == 0)
-     {
-         gif_image = gif_open(room_width, room_height);
-     }
-     else if (count < 30)
-     {
-         gif_add_surface(gif_image, application_surface, 6/100);
-     }
-     else
-     {
-         gif_save(gif_image, "GameCapture.gif");
-         count = 0;
-         save_gif = false;
-     }
-     count++;
- }

-

Приведенный выше код создаст файл изображения GIF с 30 кадрами, взятыми с поверхности приложения, а затем сохранит его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/gif_save.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/gif_save.htm index fbf459a30..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/gif_save.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/gif_save.htm @@ -1,82 +0,0 @@ - - - - - - gif_save - - - - - - - - - - -

gif_save

-

С помощью этой функции вы можете сохранить анимацию в формате GIF. Вы предоставляете индекс GIF (возвращаемый функцией gif_open()), а также имя файла для сохранения. Обратите внимание, что GameMaker не добавляет автоматически расширение файла .gif, поэтому вам следует включить его в строку имени файла, если вы хотите, чтобы сохраненный файл был идентифицирован как GIF. Созданный GIF будет палетирован с помощью универсальной палитры 884 (более подробную информацию см. здесь ).

-

Обратите внимание, что если функция успешна и GIF сохранен правильно, то она вернет 0, в противном случае она вернет -1.

-

-

Синтаксис:

-

gif_save(gif_index, fname);

- - - - - - - - - - - - - - - -
АргументТипОписание
gif_indexThe ID of gif to save
fnameThe filename to use for the gif
-

-

Возвращается:

-

-

-

Пример:

-

if save_gif == true
- {
-     if (count == 0)
-     {
-         gif_image = gif_open(room_width, room_height);
-     }
-     else if (count < 30)
-     {
-         gif_add_surface(gif_image, application_surface, 6/100);
-     }
-     else
-     {
-         gif_save(gif_image, "GameCapture.gif");
-         count = 0;
-         save_gif = false;
-     }
-     count++;
- }

-

Приведенный выше код создаст файл изображения GIF с 30 кадрами, взятыми с поверхности приложения, а затем сохранит его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/gif_save_buffer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/gif_save_buffer.htm index 97e0e0b03..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/gif_save_buffer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/gif_save_buffer.htm @@ -1,77 +0,0 @@ - - - - - - gif_save_buffer - - - - - - - - - - -

gif_save_buffer

-

С помощью этой функции вы можете сохранить анимацию в формате GIF. Вы указываете индекс GIF (возвращаемый функцией gif_open()), а функция вернет буфер роста с выравниванием в 1 байт, содержащий данные GIF. Обратите внимание, что конечные GIF-данные будут палетированы с помощью палитры Universal 884 Palette (более подробную информацию см. здесь ).

-

-

Синтаксис:

-

gif_save_buffer(gif_index);

- - - - - - - - - - - -
АргументТипОписание
gif_indexThe ID of gif to save
-

-

Возвращается:

-

Buffer ID

-

-

Пример:

-

if save_gif == true
- {
-     if (count == 0)
-     {
-         gif_image = gif_open(room_width, room_height);
-     }
-     else if (count < 30)
-     {
-         gif_add_surface(gif_image, application_surface, 6/100);
-     }
-     else
-     {
-         global.capture_buff = gif_save_buffer(gif_image);
-         count = 0;
-         save_gif = false;
-     }
-     count++;
- }

-

Приведенный выше код создаст файл изображения GIF с 30 кадрами, взятыми с поверхности приложения, а затем сохранит его в буфер.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/screen_save.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/screen_save.htm index 5479bb644..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/screen_save.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/screen_save.htm @@ -1,69 +0,0 @@ - - - - - - screen_save - - - - - - - - - - -

screen_save

-

С помощью этой функции вы можете сохранить скриншот игры в том виде, в котором он сейчас отображается в игровом окне.

-

Файл будет сохранен в рабочую директорию игры, которая в windows находится по адресу <drive>:/Users/YOURUSERNAME/AppData/Local/[Game Name]/, а в Mac - ~/Library/Application Support/[Game Name]/. Захваченное изображение будет окончательным рендером поверхности приложения игры, или (если поверхность приложения была отключена) это будет изображение всего дисплея или окна.

-

Важно отметить, что функция предназначена для вызова в событии Draw GUI End Event, которое должно давать согласованные результаты на всех платформах. Использование ее в любом другом событии может не сработать так, как ожидается, и дать разные результаты на разных платформах и даже устройствах.

-

Если вам нужно больше контроля над тем, что сохраняется, используйте функцию screen_save_part().

-

ПРИМЕЧАНИЕ Эта функция не работает на цели HTML5.

-

-

Синтаксис:

-

screen_save(fname);

- - - - - - - - - - - - - -
АргументТипОписание
fnameСтрокаThe filename for the screenshot to save
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if keyboard_check_pressed(ord("S"))
- {
-     screen_save(working_directory + "Screens\Screen_" + string(num++) + ".png")
- }

-

Приведенный выше код делает снимок экрана игры, когда пользователь нажимает клавишу "S". Этот снимок экрана сохраняется в определенном каталоге и нумеруется с помощью переменной, которая затем увеличивается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/screen_save_part.htm b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/screen_save_part.htm index 5d9287ab7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/screen_save_part.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Cameras_And_Display/screen_save_part.htm @@ -1,81 +0,0 @@ - - - - - - screen_save_part - - - - - - - - - - -

screen_save_part

-

С помощью этой функции можно сохранить скриншот части игры в том виде, в котором она отображается на экране. Координаты выделения основаны на абсолютном размере дисплея (или окна, если оно не полноэкранное), поэтому (0,0) - это всегда левый верхний угол экрана (или окна). Ниже приведено изображение, показывающее, как работает эта функция:

-

Файл будет сохранен в рабочем каталоге игры. Важно отметить, что функция предназначена для вызова в событии Draw GUI End Event, что должно дать согласованные результаты на всех платформах. Использование ее в любом другом событии может не сработать, как ожидалось, и дать разные результаты на разных платформах и даже устройствах.

-

ПРИМЕЧАНИЕ Эта функция не работает на цели HTML5.

-

-

Синтаксис:

-

screen_save_part(fname,x,y,w,h);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
fnameThe filename for the screenshot to save
xThe x coordinate of the top left corner of the area of the screen to capture
yThe y coordinate of the top left corner of the area of the screen to capture
wThe width of the area of the screen to capture
hThe height of the area of the screen to capture
-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check_pressed(ord("S"))
- {
-     screen_save_part("Screens\Screen_" + string(num++) + ".png", 0, 0, 100, 100);
- }

-

Приведенный выше код делает скриншот части игрового экрана размером 100 пикселей в квадрате, когда пользователь нажимает клавишу "S". Этот снимок экрана сохраняется в определенной папке и нумеруется с помощью переменной, которая затем увеличивается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/DS_Grids.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/DS_Grids.htm index 594ed3525..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/DS_Grids.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/DS_Grids.htm @@ -1,86 +0,0 @@ - - - - - - Решетки DS - - - - - - - - - - -

Решетки DS

-

DS-сетка - это, по сути, тип массива с двумя измерениями. Вы определяете сетку, задавая ее целочисленные ширину и высоту, которые затем задают общее количество "ячеек" внутри сетки (ширина и высота умножаются), и эти ячейки затем используются для хранения различных значений данных (вещественных чисел или строк).

-

Этот тип структуры позволяет задавать и извлекать значение ячеек в сетке, задавая их индекс x и y (который начинается с 0 для оси x и y и доходит до ширины - 1 и высоты -1). Но вы также можете устанавливать значения в определенных областях сетки, добавлять единичные значения и извлекать сумму, максимальное, минимальное и среднее значение в данной области, что делает эту структуру данных самой универсальной из всех доступных вам.

-

При обращении к структурам данных сетки DS всегда старайтесь использовать целочисленные значения для позиции ячейки, все нецелые индексы будут округлены программой GameMaker, если вы этого не сделаете. Если это не то, что вам нужно, то вам придется выполнить округление самостоятельно, прежде чем передавать индекс, который вы хотите проверить.

-

ПРИМЕЧАНИЕ Как и все динамические ресурсы, структуры данных занимают память, поэтому их всегда следует уничтожать, когда они больше не нужны, чтобы предотвратить утечку памяти, которая замедлит и в конечном итоге приведет к краху вашей игры.

-

ПРИМЕЧАНИЕ если вам нужно проверить, существует ли структура данных, вы можете использовать функцию ds_exists() функцию.

-

Помимо конкретных функций, перечисленных ниже, вы можете использовать выражение (называемое аксессором) для добавления или изменения содержимого вашей сетки DS. Этот аксессор похож на двумерный массив со следующим синтаксисом:

-

grid_index[# xpos, ypos]

-

Более подробную информацию, а также примеры можно найти на странице GML Overview, посвященной аксессорам.

-

Существуют следующие функции, работающие с сетками DS:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_add.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_add.htm index 6181b613a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_add.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_add.htm @@ -1,73 +0,0 @@ - - - - - ds_grid_add - - - - - - - - - - - -

ds_grid_add

-

Эта функция может быть использована для добавления заданного значения (вещественного или строкового) к значению заданной ячейки в сетке. Добавляемое значение должно быть того же типа, что и ячейка сетки, т.е. вы не можете добавить строку к вещественному значению или наоборот. - строк это соответствует конкатенации.

-

-

Синтаксис:

-

ds_grid_add(index, x, y, val);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
xThe x position of the cell in the grid.
yThe y position of the cell in the grid.
valThe value to add to the cell.
-

-

Возвращается:

-

-

-

Пример:

-

ds_grid_add(grid, 5, 5, 6)

-

Это добавит 6 к данной ячейке в сетке DS, на которую ссылается переменная "grid".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_add_disk.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_add_disk.htm index 8d7d18b05..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_add_disk.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_add_disk.htm @@ -1,77 +0,0 @@ - - - - - ds_grid_add_disk - - - - - - - - - - - -

ds_grid_add_disk

-

Эта функция может быть использована для добавления заданного значения (вещественного или строкового) ко всем значениям ячеек, находящихся в пределах определенной области диска сетки. Добавляемое значение должно быть того же типа, что и ячейки сетки, т.е. нельзя добавить строку к вещественному значению или наоборот. - к вещественному или наоборот, а для строк это соответствует конкатенации.

-

-

Синтаксис:

-

ds_grid_add_disk(index, xm, ym, r, val);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
xmThe x position of the disk on the grid.
ymThe y position of the disk on the grid.
rThe radius of the disk on the grid.
valThe value to add to the cells within the disk.
-

-

Возвращается:

-

-

-

Пример:

-

ds_grid_add_disk(grid, 7, 6, 5, 2)

-

Это добавит 2 ко всем значениям, хранящимся в ячейках в пределах определенной области диска сетки DS, на которую ссылается переменная "grid".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_add_grid_region.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_add_grid_region.htm index fd79047d0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_add_grid_region.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_add_grid_region.htm @@ -1,90 +0,0 @@ - - - - - ds_grid_add_grid_region - - - - - - - - - - - -

ds_grid_add_grid_region

-

Эта функция может быть использована для добавления значений всех ячеек, находящихся в исходной области сетки, к значениям в целевой сетке, как показано ниже:

-

DS grid add grid region

-

ПРИМЕЧАНИЕ Вы также можете использовать эту функцию в той же сетке для добавления значений из одной области сетки к значениям, хранящимся в другой (см. пример кода ниже).

-

-

Синтаксис:

-

ds_grid_add_grid_region(index, source, x1, y1, x2, y2, xpos, ypos);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the destination grid.
sourceThe index of the source grid.
x1The left position of the region of cells to copy from the source grid.
y1The top position of the region of cells to copy from the source grid.
x2The right position of the region of cells to copy from the source grid.
y2The bottom position of the region of cells to copy from the source grid.
xposThe x position on the destination grid to add the source region to.
yposThe y position on the destination grid to add the source region to.
-

-

Возвращается:

-

-

-

Пример:

-

ds_grid_add_grid_region(grid, grid, 0, 0, 1, 5, 2, 0)

-

Приведенный выше код копирует область ячеек с (0,0) по (1,5) сетки DS, индексированных в переменной "grid", и добавляет их к ячейкам с позиции (2,0) той же сетки DS.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_add_region.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_add_region.htm index 18d355230..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_add_region.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_add_region.htm @@ -1,81 +0,0 @@ - - - - - ds_grid_add_region - - - - - - - - - - - -

ds_grid_add_region

-

Эта функция может быть использована для добавления заданного значения (вещественного или строкового) ко всем значениям ячеек, находящихся в определенной области сетки. Добавляемое значение должно быть того же типа, что и значения в ячейках сетки, т.е. нельзя добавить строку к - вещественному или наоборот, а для строк это соответствует конкатенации.

-

-

Синтаксис:

-

ds_grid_add_region(index, x1, y1, x2, y2, val);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
x1The x position of the left of the region in the grid.
y1The y position of the top of the region in the grid.
x2The x position of the right of the region in the grid.
y2The y position of the bottom of the region in the grid.
valThe value to add to the region cells.
-

-

Возвращается:

-

-

-

Пример:

-

ds_grid_add_region(grid, 2, 4, 5, 5, ".")

-

Это добавит "." ко всем строкам, хранящимся в ячейках внутри определенной области сетки DS, на которую ссылается переменная "grid".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_clear.htm index b28888443..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_clear.htm @@ -1,65 +0,0 @@ - - - - - ds_grid_clear - - - - - - - - - - - -

ds_grid_clear

-

Эта функция может быть использована для очистки заданной сетки DS до определенного значения. После этого все ячейки сетки будут содержать это значение, которое может быть вещественным числом или строкой. На рисунке ниже показано, как это работает:

-

DS grid clear

-

-

Синтаксис:

-

ds_grid_clear(index, val);

- - - - - - - - - - - - - - - -
АргументТипОписание
indexThis index of the grid to clear.
valThe new value for all grid cells.
-

-

Возвращается:

-

-

-

Пример:

-

ds_grid_resize(global.Grid, room_width / 32, room_height / 32);
ds_grid_clear(global.Grid, -1)

-

Приведенный выше код изменит размер сетки DS, указанной в глобальной переменной "Grid", а затем очистит ее так, чтобы каждая ячейка имела значение -1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_copy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_copy.htm index dc39e774d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_copy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_copy.htm @@ -1,69 +0,0 @@ - - - - - - ds_grid_copy - - - - - - - - - - -

ds_grid_copy

-

С помощью этой функции можно скопировать содержимое одной сетки в другую. Обе сетки должны быть созданы ранее с помощью функции ds_grid_create() функция.

-

-

Синтаксис:

-

ds_grid_copy(destination, source);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
destinationDS Grid IDThis index of the grid to copy to.
sourceDS Grid IDThis index of the grid to copy from.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

n_grid = ds_grid_create(ds_grid_width(a_grid), ds_grid_height(a_grid));
- ds_grid_copy(n_grid, a_grid);
- ds_grid_clear(a_grid, -1)

-

Приведенный выше код создает новую сетку DS, основываясь на ширине и высоте ранее созданной сетки, затем копирует информацию из предыдущей сетки в новую. Наконец, он очищает старую сетку, чтобы все ячейки имели значение -1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_create.htm index 8f5e8bd2a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_create.htm @@ -1,66 +0,0 @@ - - - - - - ds_grid_create - - - - - - - - - - - -

ds_grid_create

-

С помощью этой функции вы можете создать новую структуру данных сетки DS с указанной шириной и высотой ячеек. Эта функция возвращает идентификатор, который должен использоваться во всех последующих функциях, работающих с этой сеткой DS.

-

ВАЖНО! Когда вы создаете структуру данных, значение индекса для ее идентификации является целым числом, начинающимся с 0. Это означает, что структуры данных разных типов могут иметь одинаковое значение индекса, поэтому, если вы сомневаетесь, следует использовать функцию ds_exists() функцию перед обращением к ним. Также обратите внимание, что индексы используются повторно, поэтому значение индекса уничтоженной структуры данных может быть использовано впоследствии вновь созданной.

-

-

Синтаксис:

-

ds_grid_create(w, h);

- - - - - - - - - - - - - - - -
АргументТипОписание
wThe width of the grid to be created.
hThe height of the grid to be created.
-

-

Возвращается:

-

DS Grid ID

-

-

Пример:

-

mygrid = ds_grid_create(10, 10)

-

Это создает сетку высотой 10 ячеек и шириной 10 ячеек.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_destroy.htm index e4c06efde..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_destroy.htm @@ -1,66 +0,0 @@ - - - - - - ds_grid_destroy - - - - - - - - - - -

ds_grid_destroy

-

Эта функция удалит заданную структуру данных сетки из памяти, освободив используемые ресурсы и удалив все содержащиеся в ней значения. Эту функцию всегда следует использовать, когда вы закончили работу с сеткой DS, чтобы предотвратить утечку памяти, которая может замедлить работу и привести к краху вашей игры.

-

ВАЖНО! Когда вы создаете структуру данных, значение индекса для ее идентификации является целым числом, начинающимся с 0. Это означает, что структуры данных разных типов могут иметь одинаковое значение индекса, поэтому, если вы сомневаетесь, следует использовать функцию ds_exists() функцию перед обращением к ним. Также обратите внимание, что индексы используются повторно, поэтому значение индекса уничтоженной структуры данных может быть использовано вновь созданной, поэтому мы рекомендуем после уничтожения всегда устанавливать переменную, в которой хранился индекс DS, в -1.

-

-

Синтаксис:

-

ds_grid_destroy(index);

- - - - - - - - - - - -
АргументТипОписание
indexThis index of the grid to destroy.
-

-

Возвращается:

-

-

-

Пример:

-

if (lives == 0)
- {
-     ds_grid_destroy(Wall_Grid);
-     Wall_Grid = -1;
-     room_goto(rm_Menu);
- }

-

Приведенный выше код проверит значение встроенной глобальной переменной "lives" и, если оно равно 0, уничтожит сетку DS, индексированную в переменной "Wall_Grid", а затем поменяет комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get.htm index 054c3292f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get.htm @@ -1,71 +0,0 @@ - - - - - - ds_grid_get - - - - - - - - - - - -

ds_grid_get

-

Эта функция может быть использована для получения значения из любой ячейки в заданной сетке DS. Если вы передадите в функцию недопустимые координаты сетки, то возвращаемое значение будет undefined, а в окне вывода будет показана ошибка.

-

-

Синтаксис:

-

ds_grid_get(index, x, y);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
xThe x position of the cell you want to find the value of.
yThe y position of the cell you want to find the value of.
-

-

Возвращается:

-

Variable

-

-

Пример:

-

var xx = irandom(ds_grid_width(grid) - 1);
- var yy = irandom(ds_grid_height(grid) - 1);
- val = ds_grid_get(grid, xx, yy)

-

Приведенный выше код выбирает случайную ячейку из сетки DS, индексированную в переменной "grid", и сохраняет ее значение в переменной "val".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_disk_max.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_disk_max.htm index 47c90c731..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_disk_max.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_disk_max.htm @@ -1,72 +0,0 @@ - - - - - - ds_grid_get_disk_max - - - - - - - - - - - -

ds_grid_get_disk_max

-

Эта функция может быть использована для нахождения максимального значения для всех ячеек, находящихся в пределах определенной области диска сетки, как показано на рисунке ниже:

-

DS grid get disk max

-

Синтаксис:

-

ds_grid_get_disk_max(index, xm, ym, r);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
xmThe x position of the disk center in the grid.
ymThe y position of the disk center in the grid.
rThe radius of the disk in the grid.
-

-

Возвращается:

-

Real or String

-

-

Пример:

-

val = ds_grid_get_disk_max(grid, 5, 5, 2)

-

Приведенный выше код установит переменную "val" в максимальное значение, содержащееся в данном диске сетки DS, индексируемой в переменной "grid".

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_disk_mean.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_disk_mean.htm index b9ebb743b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_disk_mean.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_disk_mean.htm @@ -1,73 +0,0 @@ - - - - - - ds_grid_get_disk_mean - - - - - - - - - - - -

ds_grid_get_disk_mean

-

Эта функция может быть использована для нахождения среднего значения для всех ячеек, находящихся в пределах определенной области диска сетки (значения всех ячеек складываются, а затем делятся на общее количество ячеек, составляющих диск), как показано на рисунке ниже:

-

DS grid get disk mean

-

-

Синтаксис:

-

ds_grid_get_disk_mean(index, xm, ym, r);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
xmThe x position of the disk on the grid.
ymThe y position of the disk on the grid.
rThe radius of the disk on the grid.
-

-

Возвращается:

-

Real or String

-

-

Пример:

-

val = ds_grid_get_disk_mean(grid, 5, 5, 2)

-

Приведенный выше код установит переменную "val" в среднее значение, содержащееся в данном диске сетки DS, индексируемой в переменной "grid".

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_disk_min.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_disk_min.htm index 9f122446d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_disk_min.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_disk_min.htm @@ -1,72 +0,0 @@ - - - - - - ds_grid_get_disk_min - - - - - - - - - - - -

ds_grid_get_disk_min

-

Эта функция может быть использована для нахождения минимального значения для всех ячеек, находящихся в пределах определенной области диска сетки, как показано на рисунке ниже:

-

Ds grid get disk min

-

Синтаксис:

-

ds_grid_get_disk_min(index, xm, ym, r);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
xmThe x position of the disk on the grid.
ymThe y position of the disk on the grid.
rThe radius of the disk on the grid.
-

-

Возвращается:

-

Real or String

-

-

Пример:

-

val = ds_grid_get_disk_min(grid, 5, 5, 2)

-

Приведенный выше код установит переменную "val" в минимальное значение, содержащееся в данном диске сетки DS, индексируемой в переменной "grid".

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_disk_sum.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_disk_sum.htm index a0ed0c5a8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_disk_sum.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_disk_sum.htm @@ -1,73 +0,0 @@ - - - - - - ds_grid_get_disk_sum - - - - - - - - - - - -

ds_grid_get_disk_sum

-

Эта функция может быть использована для суммирования всех значений всех ячеек, находящихся в пределах определенной области диска сетки, как показано на рисунке ниже:

-

DS grid get disk sum

-

-

Синтаксис:

-

ds_grid_get_disk_sum(index, xm, ym, r);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
xmThe x position of the disk on the grid.
ymThe y position of the disk on the grid.
rThe radius of the disk on the grid.
-

-

Возвращается:

-

Real or String

-

-

Пример:

-

val = ds_grid_get_disk_sum(grid, 5, 5, 2)

-

Приведенный выше код установит переменную "val" в сумму всех значений, содержащихся в данном диске сетки DS, индексированной в переменной "grid".

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_max.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_max.htm index 13429a223..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_max.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_max.htm @@ -1,76 +0,0 @@ - - - - - - ds_grid_get_max - - - - - - - - - - - -

ds_grid_get_max

-

Эта функция может быть использована для нахождения максимального значения для всех ячеек, находящихся в заданной области сетки, как показано на рисунке ниже:

-

DS grid get max

-

Синтаксис:

-

ds_grid_get_max(index, x1, y1, x2, y2);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
x1The left cell column of the region.
y1The top cell row of the region.
x2The right cell column of the region.
y2The bottom cell row of the region.
-

-

Возвращается:

-

Real or String

-

-

Пример:

-

val = ds_grid_get_max(grid, 0, 0, 5, 5)

-

Приведенный выше код установит переменную "val" в максимальное значение, содержащееся в данной области сетки DS, индексируемой в переменной "grid".

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_mean.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_mean.htm index 157f906fa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_mean.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_mean.htm @@ -1,77 +0,0 @@ - - - - - - ds_grid_get_mean - - - - - - - - - - - -

ds_grid_get_mean

-

Эта функция может быть использована для нахождения среднего значения для всех ячеек, находящихся в пределах определенной области сетки (значения всех ячеек складываются вместе, а затем делятся на общее количество ячеек, составляющих область), как показано на рисунке ниже:

-

DS grid get mean

-

-

Синтаксис:

-

ds_grid_get_mean(index, x1, y1, x2, y2);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
x1The left cell column of the region.
y1The top cell row of the region.
x2The right cell column of the region.
y2The bottom cell row of the region.
-

-

Возвращается:

-

Real or String

-

-

Пример:

-

val = ds_grid_get_mean(grid, 0, 0, 5, 5)

-

Приведенный выше код установит переменную "val" в среднее значение, содержащееся в заданной области сетки DS, индексированной в переменной "grid".

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_min.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_min.htm index 56c65071a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_min.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_min.htm @@ -1,77 +0,0 @@ - - - - - - ds_grid_get_min - - - - - - - - - - - -

ds_grid_get_min

-

Эта функция может быть использована для нахождения минимального значения для всех ячеек, находящихся в заданной области сетки, как показано на рисунке ниже:

-

Ds grid get min

-

-

Синтаксис:

-

ds_grid_get_min(index, x1, y1, x2, y2);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
x1The left cell column of the region.
y1The top cell row of the region.
x2The right cell column of the region.
y2The bottom cell row of the region.
-

-

Возвращается:

-

Real or String

-

-

Пример:

-

val = ds_grid_get_min(grid, 0, 0, 5, 5)

-

Приведенный выше код установит переменную "val" в минимальное значение, содержащееся в заданной области сетки DS, индексированной в переменной "grid".

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_sum.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_sum.htm index c8830839d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_sum.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_get_sum.htm @@ -1,78 +0,0 @@ - - - - - - ds_grid_get_sum - - - - - - - - - - - -

ds_grid_get_sum

-

Эта функция может быть использована для суммирования всех значений всех ячеек, находящихся в определенной области сетки, как показано на рисунке ниже:

-

DS grid get sum

-

-

Синтаксис:

-

ds_grid_get_sum(index, x1, y1, x2, y2);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
x1The left cell column of the region.
y1The top cell row of the region.
x2The right cell column of the region.
y2The bottom cell row of the region.
-

-

Возвращается:

-

Real or String

-

-

Пример:

-

val = ds_grid_get_sum(grid, 0, 0, 5, 5)

-

Приведенный выше код установит переменную "val" в сумму всех значений, содержащихся в данной области сетки DS, индексированной в переменной "grid".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_height.htm index dc107d40d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_height.htm @@ -1,71 +0,0 @@ - - - - - - ds_grid_height - - - - - - - - - - - -

ds_grid_height

-

Эта функция возвращает высоту заданной сетки. Это значение представляет собой количество ячеек сетки вдоль оси y и всегда является целым числом, как показано на рисунке ниже:

-

DS grid height

-

-

Синтаксис:

-

ds_grid_height(index);

- - - - - - - - - - - -
АргументТипОписание
indexThis index of the grid to find the height of.
-

-

Возвращается:

-

-

-

Пример:

-

for (var i = 0; i < ds_grid_width(grid); ++i)
- {
-     for (var j = 0; j < ds_grid_height(grid); ++j)
-     {
-         if (ds_grid_get(grid, i, j) == 1)
-         {
-             instance_create_Layer(i * 32, j * 32, "Walls", obj_Wall);
-         }
-     }
- }

-

Приведенный выше код пройдется по сетке DS, индексированной в переменной "grid", и если значение, найденное в любой конкретной ячейке, равно 1, он создаст экземпляр "obj_Wall" в соответствующей позиции в комнате.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_multiply.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_multiply.htm index 27a376651..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_multiply.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_multiply.htm @@ -1,78 +0,0 @@ - - - - - - ds_grid_multiply - - - - - - - - - - -

ds_grid_multiply

-

Эта функция умножит значение заданной ячейки сетки на указанную величину.

-

ПРИМЕЧАНИЕ Эта функция работает только с вещественными числами, а не со строками.

-

-

Синтаксис:

-

ds_grid_multiply(index, x, y, val);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexDS Grid IDThe index of the grid.
xРеальноThe x position of the cell in the grid.
yРеальноThe y position of the cell in the grid.
valРеальноThe value to multiply with the cell.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

ds_grid_multiply(mygrid, 5, 5, 2)

-

Приведенный выше код умножит значение, хранящееся в данной ячейке сетки DS, на 2.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_multiply_disk.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_multiply_disk.htm index ff91908d8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_multiply_disk.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_multiply_disk.htm @@ -1,83 +0,0 @@ - - - - - - ds_grid_multiply_disk - - - - - - - - - - -

ds_grid_multiply_disk

-

Эта функция берет все значения в заданной дискообразной области сетки DS и умножает каждое из них на заданную величину.

-

ПРИМЕЧАНИЕ Эта функция работает только с вещественными числами, а не со строками.

-

-

Синтаксис:

-

ds_grid_multiply_disk(index, xm, ym, r, val);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexDS Grid IDThe index of the grid.
xmРеальноThe x position of the disk on the grid.
ymРеальноThe y position of the disk on the grid.
rРеальноThe radius of the disk on the grid.
valРеальноThe value to multiply the cells within the disk with.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

ds_grid_multiply_disk(mygrid, 5, 5, 5, 2)

-

Приведенный выше код возьмет все значения, найденные в области круговой сетки, и умножит каждое из них на 2.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_multiply_grid_region.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_multiply_grid_region.htm index 4d76c2635..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_multiply_grid_region.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_multiply_grid_region.htm @@ -1,89 +0,0 @@ - - - - - ds_grid_multiply_grid_region - - - - - - - - - - - -

ds_grid_multiply_grid_region

-

С помощью этой функции вы можете определить область в заданной сетке DS, затем взять эти значения и перемножить их со значениями, найденными в отдельной области либо той же сетки DS, либо другой (которая была создана ранее). Исходная область - останется неизменным, в то время как область, с которой они были перемножены, будет хранить новые значения для каждой ячейки.

-

-

Синтаксис:

-

ds_grid_multiply_grid_region(index, source, x1, y1, x2, y2, xpos, ypos);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the destination grid.
sourceThe index of the source grid.
x1The left position of the region of cells to copy from the source grid.
y1The top position of the region of cells to copy from the source grid.
x2The right position of the region of cells to copy from the source grid.
y2The bottom position of the region of cells to copy from the source grid.
xposThe x position on the destination grid to multiply the source region with.
yposThe y position on the destination grid to multiply the source region with.
-

-

Возвращается:

-

-

-

Пример:

-

ds_grid_multiply_grid_region(mygrid, mygrid, 0, 0, 5, 5, 0, 0)

-

Для этого нужно взять область ячеек от (0,0) до (5,5) сетки DS "mygrid" и перемножить их с ячейками из позиции (0,0) той же сетки DS.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_multiply_region.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_multiply_region.htm index f17b775fe..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_multiply_region.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_multiply_region.htm @@ -1,88 +0,0 @@ - - - - - - ds_grid_multiply_region - - - - - - - - - - -

ds_grid_multiply_region

-

С помощью этой функции можно указать область сетки, в которой нужно умножить значение каждой ячейки на заданную величину.

-

ПРИМЕЧАНИЕ Эта функция работает только с вещественными числами, а не со строками.

-

-

Синтаксис:

-

ds_grid_multiply_region(index, x1, y1, x2, y2, val);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexDS Grid IDThe index of the grid.
x1РеальноThe x position of the left of the region in the grid.
y1РеальноThe y position of the top of the region in the grid.
x2РеальноThe x position of the right of the region in the grid.
y2РеальноThe y position of the bottom of the region in the grid.
valРеальноThe value to multiply with the region cells.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

ds_grid_multiply_region(mygrid, 5, 5, 10, 10, 2);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_read.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_read.htm index d8c5036f3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_read.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_read.htm @@ -1,76 +0,0 @@ - - - - - - ds_grid_read - - - - - - - - - - -

ds_grid_read

-

Эта функция может быть использована для преобразования строки, которая была создана ранее функцией ds_grid_write() обратно в сетку DS. Сетка DS должна быть создана ранее (см. пример ниже).

-

Обратите внимание, что если указанная строка DS была написана в среде GameMaker: Studio 1.2.x (или старше), следует указать дополнительный аргумент "legacy", установив его в значение true, поскольку после этого формат строки изменился.

-

-

Синтаксис:

-

ds_grid_read(index, string [, legacy]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexDS Grid IDThe index of the grid to read.
stringСтрокаThe string to read into the DS grid.
legacyБулевоOPTIONAL Может быть либо true, либо false, либо полностью опущен.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

grid = ds_grid_create(room_width div 32, room_height div 32);
- ini_open("Save.ini");
- ds_grid_read(grid, ini_read_string("Save", "0", ""));
- ini_close();

-

Приведенный выше код создает сетку DS на основе размера комнаты (каждый квадрат 32x32 пикселей представляет собой одну ячейку сетки), а затем считывает ранее сохраненный набор данных сетки из ini-файла в новую сетку DS.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_resize.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_resize.htm index 2166471de..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_resize.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_resize.htm @@ -1,69 +0,0 @@ - - - - - ds_grid_resize - - - - - - - - - - - -

ds_grid_resize

-

С помощью этой функции вы можете изменить размер заданной сетки DS на другую ширину и/или высоту. Если размер сетки больше, чем текущая сетка, новые ячейки будут иметь базовое значение 0, а если размер меньше, то значения, хранящиеся в ячейках, которые - больше не входят в новый размер, будут потеряны. Все остальные ячейки останутся нетронутыми.

-

-

Синтаксис:

-

ds_grid_resize(index, w, h);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThis index of the grid to resize.
wThe new width of the grid.
hThe new height of the grid.
-

-

Возвращается:

-

-

-

Пример:

-

ds_grid_resize(global.Grid, room_width / 32, room_height / 32);
ds_grid_clear(global.Grid, -1)

-

Приведенный выше код изменит размер сетки DS, указанной в глобальной переменной "Grid", а затем очистит ее так, чтобы каждая ячейка имела значение -1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_set.htm index 9c5369ddd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_set.htm @@ -1,87 +0,0 @@ - - - - - - ds_grid_set - - - - - - - - - - -

ds_grid_set

-

Эта функция может быть использована для установки заданной ячейки в заданной сетке DS на любое значение, которое может быть вещественным числом или строкой. Изображение ниже иллюстрирует это:

-

DS grid set

-

Синтаксис:

-

ds_grid_set(index, x, y, value);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThis index of the grid.
xThe x position of the cell to set.
yThe y position of the cell to set.
valueThe value with which to set the cell.
-

-

Возвращается:

-

-

-

Пример:

-

grid = ds_grid_create(5, 5);
- var i = 0;
- var j = 0;
-
- repeat (ds_grid_width(grid))
- {
-     repeat (ds_grid_height(grid))
-     {
-         ds_grid_set(grid, i, j, irandom(9));
-         j += 1;
-     }
-
-     j = 0;
-     i += 1;
- } -

-

Приведенный выше код создает сетку и сохраняет ее индекс в переменной "grid". Затем он заполняет эту сетку случайными целыми числами от 0 до 9.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_set_disk.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_set_disk.htm index ce7cf8f4b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_set_disk.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_set_disk.htm @@ -1,77 +0,0 @@ - - - - - ds_grid_set_disk - - - - - - - - - - - -

ds_grid_set_disk

-

С помощью этой функции вы можете установить круговую область сетки на определенное значение. Вам необходимо указать начальную ячейку сетки (как координаты по оси x и y), а также радиус диска для установки и значение, на которое вы хотите установить диск, как показано на рисунке ниже. - как показано на рисунке ниже:

-

DS grid set disk

-

-

Синтаксис:

-

ds_grid_set_disk(index, xm, ym, r, val);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
xmThe x position of the disk on the grid.
ymThe y position of the disk on the grid.
rThe radius of the disk on the grid.
valThe value to set with the cells within the disk.
-

-

Возвращается:

-

-

-

Пример:

-

ds_grid_set_disk(grid, ds_grid_width(grid) div 2, ds_grid_height(grid) div 2, 5, -4)

-

Приведенный выше код установит круглую область радиусом 5 ячеек в сетке DS, проиндексированной в переменной "grid", на значение -4.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_set_grid_region.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_set_grid_region.htm index 031ccb122..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_set_grid_region.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_set_grid_region.htm @@ -1,90 +0,0 @@ - - - - - ds_grid_set_grid_region - - - - - - - - - - - -

ds_grid_set_grid_region

-

Эта функция может быть использована для копирования содержимого прямоугольной области ячеек сетки из одной (ранее определенной) сетки DS в другую, или она может быть использована для копирования области из одной и той же сетки. Следующие изображения иллюстрируют оба способа - можно использовать эту функцию:

-

DS grid set grid region

-

-

Синтаксис:

-

ds_grid_set_grid_region(index, source, x1, y1, x2, y2, xpos, ypos);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the destination grid.
sourceThe index of the source grid.
x1The left position of the region of cells to copy from the source grid.
y1The top position of the region of cells to copy from the source grid.
x2The right position of the region of cells to copy from the source grid.
y2The bottom position of the region of cells to copy from the source grid.
xposThe x position on the destination grid to copy the source region to.
yposThe y position on the destination grid to copy the source region to.
-

-

Возвращается:

-

-

-

Пример:

-

ds_grid_set_grid_region(grid, t_grid, 0, 0, 5, 5, 10, 10)

-

Это скопирует область ячеек от (0,0) до (5,5) сетки, индексированной в переменной "t_grid", и скопирует их в позицию (10,10) в сетке, индексированной в переменной "grid".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_set_region.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_set_region.htm index f4ace8bc6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_set_region.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_set_region.htm @@ -1,81 +0,0 @@ - - - - - ds_grid_set_region - - - - - - - - - - - -

ds_grid_set_region

-

Эта функция может быть использована для установки прямоугольной области заданной сетки на заданное значение (которое может быть вещественным или строковым), как показано на изображении ниже:

-

DS grid set region

-

-

Синтаксис:

-

ds_grid_set_region(index, x1, y1, x2, y2, val);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
x1The x position of the left of the region in the grid.
y1The y position of the top of the region in the grid.
x2The x position of the right of the region in the grid.
y2The y position of the bottom of the region in the grid.
valThe value to set the region cells to.
-

-

Возвращается:

-

-

-

Пример:

-

ds_grid_set_region(grid, 5, 5, 10, 10, 99)

-

В результате все ячейки в области сетки, индексируемой переменной "grid" от (5,5) до (10,10), будут иметь значение 99.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_shuffle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_shuffle.htm index e47d70edb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_shuffle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_shuffle.htm @@ -1,63 +0,0 @@ - - - - - - ds_grid_shuffle - - - - - - - - - - -

ds_grid_shuffle

-

Эта функция может быть использована для рандомизации положения всех значений во всех ячейках сетки.

-

ПРИМЕЧАНИЕ Эта функция будет перетасовывать ячейки сетки на одни и те же позиции каждый раз, когда игра запускается заново, поскольку GameMaker каждый раз генерирует одно и то же начальное случайное зерно, чтобы облегчить отладку кода. Чтобы избежать - такого поведения, используйте randomise() в начале игры. Это справедливо только при тестировании и отладке игры, так как конечный исполняемый - пакет не будет демонстрировать такое поведение и будет случайным в каждой игре.

-

-

Синтаксис:

-

ds_grid_shuffle(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid to shuffle.
-

-

Возвращается:

-

-

-

Пример:

-

ds_grid_shuffle(grid)

-

Это позволит взять все значения в сетке DS, проиндексированные в переменной "grid", и перетасовать их, чтобы получить другой порядок.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_sort.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_sort.htm index 8d6badf62..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_sort.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_sort.htm @@ -1,70 +0,0 @@ - - - - - ds_grid_sort - - - - - - - - - - - - -

ds_grid_sort

-

Эта функция может быть использована для сортировки сетки DS на основе значений из заданного столбца (подобно тому, как вы сортируете файлы по дате, размеру и т.д. в проводнике файлов ОС). На следующем изображении показан пример:

-

DS grid sort

-

-

Синтаксис:

-

ds_grid_sort(index, column, ascending);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid to sort.
columnThe column to use for sorting the rows
ascendingWhether to sort lowest to highest (true), или от высшего к низшему (false).
-

-

Возвращается:

-

-

-

Пример:

-

ds_grid_sort(grid, 3, false)

-

Это позволит взять все значения в сетке DS, индексированные в переменной "grid", и отсортировать их в соответствии со значениями, находящимися в 3-м столбце сетки (как показано на изображении выше).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_disk_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_disk_exists.htm index 605bfe197..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_disk_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_disk_exists.htm @@ -1,81 +0,0 @@ - - - - - - ds_grid_value_disk_exists - - - - - - - - - - - -

ds_grid_value_disk_exists

-

С помощью этой функции можно проверить, присутствует ли определенное значение (вещественное или строковое) в пределах круговой области заданной сетки DS. Если оно присутствует, функция вернет true, в противном случае - false.

-

-

Синтаксис:

-

ds_grid_value_disk_exists(index, xm, ym, r, val);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
xmThe x position of the disk on the grid.
ymThe y position of the disk on the grid.
rThe radius of the disk on the grid.
valThe value to find.
-

-

Возвращается:

-

-

-

Пример:

-

if ds_grid_value_disk_exists(grid, 5, 5, 5, val)
- {
-     xpos = ds_grid_value_disk_x(grid, 5, 5, 5, val);
-     ypos = ds_grid_value_disk_y(grid, 5, 5, 5, val);
- }

-

Приведенный выше код проверяет сетку DS на наличие определенного значения в области диска. Если оно найдено, то сохраняет x и y позицию значения в двух переменных для последующего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_disk_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_disk_x.htm index e1e4de89f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_disk_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_disk_x.htm @@ -1,81 +0,0 @@ - - - - - - ds_grid_value_disk_x - - - - - - - - - - - -

ds_grid_value_disk_x

-

С помощью этой функции вы можете получить координату x (в пределах заданной дискообразной области сетки) искомого значения. Вы задаете индекс сетки DS (как возвращается функцией ds_grid_create()) вместе с позициями x/y для центральной ячейки диска. Затем задается радиус (как целое число) вокруг центральной ячейки для поиска, после чего задается искомое значение. Если искомое значение не существует, то функция вернет -1.

-

-

Синтаксис:

-

ds_grid_value_disk_x(index, xm, ym, r, val);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
xmThe x position of the disk on the grid.
ymThe y position of the disk on the grid.
rThe radius of the disk on the grid.
valThe value to find.
-

-

Возвращается:

-

-

-

Пример:

-

if ds_grid_value_disk_exists(grid, 5, 5, 5, val)
- {
-     xpos = ds_grid_value_disk_x(grid, 5, 5, 5, val);
-     ypos = ds_grid_value_disk_y(grid, 5, 5, 5, val);
- }

-

Приведенный выше код проверяет ds_grid на наличие определенного значения в области диска. Если оно найдено, то сохраняет x и y позицию значения в двух переменных для последующего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_disk_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_disk_y.htm index 740b69a32..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_disk_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_disk_y.htm @@ -1,81 +0,0 @@ - - - - - - ds_grid_value_disk_y - - - - - - - - - - - -

ds_grid_value_disk_y

-

С помощью этой функции вы можете получить координату y (в пределах заданной дискообразной области сетки) искомого значения. Вы задаете индекс сетки DS (как возвращается функцией ds_grid_create()) вместе с позициями x/y для центральной ячейки диска. Затем задается радиус (как целое число) вокруг центральной ячейки для поиска, после чего задается искомое значение. Если искомое значение не существует, то функция вернет -1.

-

-

Синтаксис:

-

ds_grid_value_disk_y(index, xm, ym, r, val);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
xmThe x position of the disk on the grid.
ymThe y position of the disk on the grid.
rThe radius of the disk on the grid.
valThe value to find.
-

-

Возвращается:

-

-

-

Пример:

-

if ds_grid_value_disk_exists(grid, 5, 5, 5, val)
- {
-     xpos = ds_grid_value_disk_x(grid, 5, 5, 5, val);
-     ypos = ds_grid_value_disk_y(grid, 5, 5, 5, val);
- }

-

Приведенный выше код проверяет сетку DS на наличие определенного значения в области диска. Если оно найдено, то сохраняет x и y позицию значения в двух переменных для последующего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_exists.htm index bbd45b19d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_exists.htm @@ -1,85 +0,0 @@ - - - - - - ds_grid_value_exists - - - - - - - - - - - -

ds_grid_value_exists

-

С помощью этой функции можно проверить, присутствует ли определенное значение (вещественное или строковое) в прямоугольной области заданной сетки DS. Если оно присутствует, функция вернет true, в противном случае - false.

-

-

Синтаксис:

-

ds_grid_value_exists(index, x1, y1, x2, y2, val);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
x1The x position of the left of the region in the grid.
y1The y position of the top of the region in the grid.
x2The x position of the right of the region in the grid.
y2The y position of the bottom of the region in the grid.
valThe value to find.
-

-

Возвращается:

-

-

-

Пример:

-

if ds_grid_value_exists(grid, 0, 1, 5, 6, val)
- {
-     xpos = ds_grid_value_x(grid, 0, 1, 5, 6, val);
-     ypos = ds_grid_value_y(grid, 0, 1, 5, 6, val);
- }

-

Приведенный выше код проверяет сетку DS на наличие определенного значения в прямоугольной области. Если оно найдено, то сохраняет x и y позицию значения в двух переменных для последующего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_x.htm index b0a14f848..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_x.htm @@ -1,85 +0,0 @@ - - - - - - ds_grid_value_x - - - - - - - - - - - -

ds_grid_value_x

-

С помощью этой функции вы можете получить координату x (в пределах заданной прямоугольной области сетки) искомого значения. Вы задаете индекс сетки DS (как возвращается функцией ds_grid_create()) вместе с позициями x/y для верхнего левого и нижнего правого углов области сетки для поиска, а затем вводится значение для поиска. Если искомое значение не существует, то функция вернет -1.

-

-

Синтаксис:

-

ds_grid_value_x(index, x1, y1, x2, y2, val);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
x1The x position of the left of the region in the grid, from 0 to (grid width - 1).
y1The y position of the top of the region in the grid, from 0 to (grid height - 1).
x2The x position of the right of the region in the grid, from 0 to (grid width - 1).
y2The y position of the bottom of the region in the grid, from 0 to (grid height - 1).
valThe value to find.
-

-

Возвращается:

-

-

-

Пример:

-

if ds_grid_value_exists(grid, 0, 1, 5, 6, val)
- {
-     xpos = ds_grid_value_x(grid, 0, 1, 5, 6, val);
-     ypos = ds_grid_value_y(grid, 0, 1, 5, 6, val);
- }

-

Приведенный выше код проверяет ds_grid на наличие определенного значения в прямоугольной области. Если оно найдено, то сохраняет x и y позицию значения в двух переменных для последующего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_y.htm index 087f00e20..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_value_y.htm @@ -1,85 +0,0 @@ - - - - - - ds_grid_value_y - - - - - - - - - - - -

ds_grid_value_y

-

С помощью этой функции можно получить координату y (в пределах заданной прямоугольной области сетки) искомого значения. Вы задаете индекс сетки DS (как возвращается функцией ds_grid_create()) вместе с позициями x/y для верхнего левого и нижнего правого углов области сетки для поиска, а затем вводится значение для поиска. Если искомое значение не существует, то функция вернет -1.

-

-

Синтаксис:

-

ds_grid_value_y(index, x1, y1, x2, y2, val);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid.
x1The x position of the left of the region in the grid, from 0 to (grid width - 1).
y1The y position of the top of the region in the grid, from 0 to (grid height - 1).
x2The x position of the right of the region in the grid, from 0 to (grid width - 1).
y2The y position of the bottom of the region in the grid, from 0 to (grid height - 1)
valThe value to find.
-

-

Возвращается:

-

-

-

Пример:

-

if ds_grid_value_exists(grid, 0, 1, 5, 6, val)
- {
-     xpos = ds_grid_value_x(grid, 0, 1, 5, 6, val);
-     ypos = ds_grid_value_y(grid, 0, 1, 5, 6, val);
- }

-

Приведенный выше код проверяет ds_grid на наличие определенного значения в прямоугольной области. Если оно найдено, то сохраняет x и y позицию значения в двух переменных для последующего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_width.htm index 978142847..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_width.htm @@ -1,70 +0,0 @@ - - - - - - ds_grid_width - - - - - - - - - - - -

ds_grid_width

-

Эта функция возвращает ширину заданной сетки. Это значение представляет собой количество ячеек сетки вдоль оси x и всегда является целым числом, как показано на рисунке ниже:

-

DS grid width

-

Синтаксис:

-

ds_grid_width(index);

- - - - - - - - - - - -
АргументТипОписание
indexThis index of the grid to find the width of.
-

-

Возвращается:

-

-

-

Пример:

-

for (var i = 0; i < ds_grid_width(grid); ++i)
- {
-     for (var j = 0; j < ds_grid_height(grid); ++j)
-     {
-         if (ds_grid_get(grid, i, j) == 1)
-         {
-             instance_create_layer(i * 32, j * 32, "Walls", obj_Wall);
-         }
-     }
- }

-

Приведенный выше код пройдется по сетке DS, индексированной в переменной "grid", и если значение, найденное в любой конкретной ячейке, равно 1, он создаст экземпляр "obj_Wall" в соответствующей позиции в комнате.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_write.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_write.htm index 2c3e576f8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_write.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Grids/ds_grid_write.htm @@ -1,63 +0,0 @@ - - - - - ds_grid_write - - - - - - - - - - - - -

ds_grid_write

-

Эта функция может быть использована для преобразования заданной ds_grid в строку, которая затем может быть сохранена во внешнем файле (например). Вы можете прочитать возвращаемую строку из этой функции обратно в ds_grid с помощью функции ds_grid_read().

-

ПРИМЕЧАНИЕ Возвращаемая строка не является человекочитаемой строкой, а скорее дампом содержимого структуры данных.

-

-

Синтаксис:

-

ds_grid_write(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe index of the grid to write.
-

-

Возвращается:

-

-

-

Пример:

-

ini_open("Save.ini");
ini_write_string("Save", "0", ds_grid_write(mygrid));
ini_close() -

-

Приведенный выше код откроет файл ini (создаст его, если он еще не существует), а затем запишет заданную ds_grid в виде строки в этот файл.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/DS_Lists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/DS_Lists.htm index 8c3fe829b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/DS_Lists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/DS_Lists.htm @@ -1,72 +0,0 @@ - - - - - - Списки DS - - - - - - - - - - -

Списки DS

-

Список DS - это структура данных, которая хранит информацию последовательно по мере ее добавления (подобно массиву). Списки DS - это очень гибкие структуры данных, позволяющие добавлять значения в конец или вставлять их в середину списка, а также дающие возможность перемешивать порядок (рандомизировать значения) или сортировать их по возрастанию или убыванию.

-

ПРИМЕЧАНИЕ: Рекомендуется использовать массивы вместо списков DS, так как они имеют схожие функции, проще в использовании и автоматически собирают мусор.

-

При обращении к структурам данных списка DS всегда старайтесь использовать целочисленные значения для позиции списка, и все нецелые индексы будут округлены программой GameMaker, если вы этого не сделаете. Если это не то, что вам требуется, то вам придется выполнить округление самостоятельно, прежде чем передавать индекс, который вы хотите проверить.

-

ПРИМЕЧАНИЕ: Как и все динамические ресурсы, структуры данных занимают память, поэтому их всегда следует уничтожать, когда они больше не нужны, чтобы предотвратить утечку памяти, которая замедлит и в конечном итоге приведет к краху вашей игры.

-

Помимо конкретных функций, перечисленных ниже, вы можете использовать выражение (называемое аксессором) для добавления или изменения содержимого вашего списка DS. Этот аксессор похож на массив 1D со следующим синтаксисом:

-

list_index[| index]

-

Более подробную информацию, а также примеры можно найти на странице GML Overview, посвященной аксессорам.

-

Существуют следующие функции, работающие со списками DS:

- -

-

Списки Ds могут использоваться для хранения карт DS и других списков DS, поэтому у нас есть несколько специальных функций, которые используются для "пометки" или "маркировки" позиций в списке как содержащих эти структуры данных. В общем случае это не обязательно, но имеет преимущество в том, что автоматически собирает мусор (уничтожает) помеченные структуры данных при уничтожении родительского списка, а также необходимо при использовании в сочетании с функцией json_encode() для того, чтобы список и его данные были правильно закодированы. Функциями для этого являются:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_add.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_add.htm index 9c612d08e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_add.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_add.htm @@ -1,72 +0,0 @@ - - - - - - ds_list_add - - - - - - - - - - -

ds_list_add

-

Эта функция может использоваться для добавления нового значения (вещественного или строкового) в список, который будет добавлен в конец. Функция может принимать дополнительные необязательные аргументы (столько, сколько вам нужно), что позволяет добавлять в список несколько значений последовательно за один вызов.

-

-

Синтаксис:

-

ds_list_add(id, val1 [, val2, ... max_val]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор списка DSThe id of the list to add to.
valПеременнаяThe value to add to the list.
[val2, ... max_val]ПеременнаяOptional values to be added to the list.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

ds_list_add(sc_list, score);

-

Приведенный выше код добавит значение, хранящееся в переменной "score", в список, проиндексированный в переменной "sc_list".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_clear.htm index 0b5e141d1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_clear.htm @@ -1,65 +0,0 @@ - - - - - - ds_list_clear - - - - - - - - - - -

ds_list_clear

-

С помощью этой функции вы можете очистить все данные из заданной структуры данных списка. Это НЕ уничтожает структуру данных (для этого вы должны использовать функцию ds_list_destroy()), а только стирает все данные из нее и делает список пустым (нулевого размера). Обратите внимание, что очистка списка приведет к тому, что все структуры данных, хранящиеся в нем, перестанут ссылаться, что приведет к утечке памяти, поэтому перед очисткой списка вам нужно будет пройтись по списку и уничтожить все элементы структуры данных вручную, чтобы предотвратить это. Единственный случай, когда это не требуется, это когда вы пометили элементы в списке как другой список DS или как карту DS, в этом случае эти элементы будут уничтожены (не очищены!) и их память очистится автоматически при очистке родителя.

-

-

Синтаксис:

-

ds_list_clear(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to clear.
-

-

Возвращается:

-

-

-

Пример:

-

if (count == 15) && (!ds_list_empty(command_list))
- {
-     ds_list_clear(command_list);
-     alarm[0] = room_speed;
-     ai_count = 0;
- }

-

Приведенный выше код проверяет переменную, достигла ли она определенного значения, и если достигла, то очищает список DS, индексированный в переменной "command_list", устанавливает сигнал тревоги и сбрасывает переменную в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_copy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_copy.htm index cf78d61c5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_copy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_copy.htm @@ -1,69 +0,0 @@ - - - - - - ds_list_copy - - - - - - - - - - -

ds_list_copy

-

С помощью этой функции можно скопировать содержимое одного списка в другой. Оба списка должны быть созданы ранее, и если список, в который копируется информация, уже содержит ее, то этот список будет очищен первым. В результате вы получите два независимых списка, содержащих одинаковую информацию.

-

-

Синтаксис:

-

ds_list_copy( id, source );

- - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the list being copied to.
sourceThe id of the list to be copied from.
-

-

Возвращается:

-

-

-

Пример:

-

if !ds_list_empty(main_list)
- {
-     old_list = ds_list_create();
-     ds_list_copy(old_list, main_list);
-     ds_list_clear(main_list);
- }

-

Приведенный выше код проверяет список DS на предмет его пустоты. Если он не пуст, он копируется в другой список DS (который был создан ранее), а затем исходный список очищается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_create.htm index bfb85b44b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_create.htm @@ -1,50 +0,0 @@ - - - - - - ds_list_create - - - - - - - - - - - -

ds_list_create

-

Эта функция создает новую структуру данных списка и возвращает значение индекса. Это значение должно храниться в переменной и использоваться во всех последующих вызовах функций, связанных со списком. Обратите внимание, что если вы попытаетесь получить доступ к значению в списке до того, как он будет заполнен - т.е. список будет "пустым" - то возвращаемое значение может быть равно 0, поскольку при создании списка устанавливаются первые несколько записей, чтобы минимизировать проблемы производительности при первоначальном добавлении элементов в список (хотя функция ds_list_size() функция все равно вернет 0 для только что созданного списка). Если вы хотите убедиться, что список "действительно" пуст при создании, то вам следует вызвать функцию ds_list_clear() после создания списка, тогда все значения, возвращаемые для незаполненных слотов списка, будут undefined.

-

ВАЖНО! Когда вы создаете структуру данных, значение индекса для ее идентификации является целочисленным значением, начинающимся с 0. Это означает, что структуры данных разных типов могут иметь одинаковое значение индекса, поэтому, если вы сомневаетесь, следует использовать функцию ds_exists() функцию перед обращением к ним. Также обратите внимание, что индексы используются повторно, поэтому значение индекса уничтоженной структуры данных может быть использовано вновь созданной впоследствии.

-

-

Синтаксис:

-

ds_list_create();

-

-

Возвращается:

-

DS List ID

-

-

Пример:

-

list = ds_list_create();

-

Это создаст новый список и присвоит его индекс id переменной экземпляра "list".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_delete.htm index 2ac4e1007..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_delete.htm @@ -1,70 +0,0 @@ - - - - - - ds_list_delete - - - - - - - - - - -

ds_list_delete

-

С помощью этой функции можно удалить значение, хранящееся в определенной позиции в списке.

-

-

Синтаксис:

-

ds_list_delete(id, pos);

- - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the list to change.
posWhere in the list to delete the value.
-

-

Возвращается:

-

-

-

Пример:

-

if (ds_list_size(sc_list) > 10)
- {
-     while (ds_list_size(sc_list) > 10)
-     {
-         ds_list_delete(sc_list, 0);
-     }
- }

-

Приведенный выше код проверяет размер списка DS, и если он больше десяти, он проходит по списку, удаляя верхнее значение (позиция 0), пока в списке не останется только 10 записей.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_destroy.htm index 90af74894..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_destroy.htm @@ -1,66 +0,0 @@ - - - - - - ds_list_destroy - - - - - - - - - - -

ds_list_destroy

-

Эта функция удаляет из памяти заданную структуру данных списка, освобождая используемые ею ресурсы и удаляя все содержащиеся в ней значения. Эту функцию всегда следует использовать, когда вы закончили использовать ds_list, чтобы предотвратить утечку памяти, которая может замедлить работу и привести к краху вашей игры. Обратите внимание, что при уничтожении списка все хранящиеся в нем структуры данных будут удалены, что приведет к утечке памяти, поэтому перед уничтожением списка вам нужно будет пройтись по списку и уничтожить все элементы структуры данных вручную, чтобы предотвратить это. Единственный случай, когда это не требуется, это когда вы отметили элементы в списке как другой список DS или как карту DS, в этом случае эти элементы будут уничтожены и их память также будет очищена автоматически.

-

ВАЖНО! Когда вы создаете структуру данных, значение индекса для ее идентификации является целочисленным значением, начинающимся с 0. Это означает, что структуры данных разных типов могут иметь одинаковое значение индекса, поэтому, если вы сомневаетесь, следует использовать функцию ds_exists() функцию перед обращением к ним. Также обратите внимание, что индексы используются повторно, поэтому значение индекса уничтоженной структуры данных может быть использовано вновь созданной, поэтому мы рекомендуем после уничтожения всегда устанавливать переменную, в которой хранился индекс DS, в -1.

-

-

Синтаксис:

-

ds_list_destroy(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to remove.
-

-

Возвращается:

-

-

-

Пример:

-

if (lives == 0)
- {
-     ds_list_destroy(AI_list);
-     AI_list = -1;
-     room_goto(rm_Menu);
- }

-

Приведенный выше код проверит значение встроенной глобальной переменной "lives" и, если оно равно 0, уничтожит список DS, проиндексированный в переменной "AI_list", а затем сменит комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_empty.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_empty.htm index 23394691b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_empty.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_empty.htm @@ -1,68 +0,0 @@ - - - - - - ds_list_empty - - - - - - - - - - - -

ds_list_empty

-

С помощью этой функции вы можете проверить заданный список DS на предмет того, пуст он (возвращается true) или нет (возвращается false).

-

-

Синтаксис:

-

ds_list_empty(id);

- - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор списка DSThe id of the data structure to check.
-

-

Возвращается:

-

-

-

Пример:

-

if (count == 15( && (!ds_list_empty(command_list))
- {
-     ds_list_clear(command_list);
-     alarm[0] = room_speed;
-     count = 0;
- }

-

Приведенный выше код проверяет переменную, достигла ли она определенного значения, и если достигла, то очищает список DS, индексированный в переменной "command_list", устанавливает сигнал тревоги и сбрасывает переменную в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_find_index.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_find_index.htm index f953564d4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_find_index.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_find_index.htm @@ -1,68 +0,0 @@ - - - - - - ds_list_find_index - - - - - - - - - - - -

ds_list_find_index

-

С помощью этой функции вы можете проверить заданный список на наличие значения, после чего будет возвращена позиция в списке для этого значения. Обратите внимание, что если в списке несколько записей с одинаковым значением, то может быть возвращена позиция любой из них, а если значение не существует, то будет возвращено -1.

-

-

Синтаксис:

-

ds_list_find_index(id, val);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор списка DSThe id of the list to use.
valПеременнаяThe value to find.
-

-

Возвращается:

-

Real

-

-

Пример:

-

pos = ds_list_find_index(list, "Player1");

-

Приведенный выше код проверяет список, проиндексированный в переменной "list", на наличие значения "Player1" и сохраняет возвращенную позицию в переменной "pos".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_find_value.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_find_value.htm index c1ad5db59..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_find_value.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_find_value.htm @@ -1,67 +0,0 @@ - - - - - - ds_list_find_value - - - - - - - - - - - -

ds_list_find_value

-

С помощью этой функции вы можете проверить заданную позицию списка и вернуть значение, хранящееся в списке для этой позиции. Обратите внимание, что если вы зададите позицию, которая находится за пределами заданного размера списка (например, позиция 11 в списке из 10 значений), то функция может вернуть undefined или 0. Это связано с тем, что при создании списка первые несколько записей в списке устанавливаются в 0, чтобы минимизировать проблемы с производительностью при первоначальном добавлении элементов в список (хотя функция ds_list_size() функция все равно вернет 0 для только что созданного списка). Если вы хотите убедиться, что список "действительно" пуст при создании, то вам следует вызвать функцию ds_list_clear() после создания списка, что будет означать, что все значения, возвращаемые для незаполненных слотов списка, будут undefined, которые затем можно последовательно проверить с помощью функции is_undefined() функцию.

-

-

Синтаксис:

-

ds_list_find_value(id, pos);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор списка DSThe id of the list to use.
posРеальноThe position to look at, where 0 corresponds to the very beginning of the list and the final position is ds_list_size(id)-1.
-

-

Возвращается:

-

Variable or undefined

-

-

Пример:

-

val = ds_list_find_value(list, ds_list_size(list) - 1);

-

Приведенный выше код проверяет список, проиндексированный в переменной "list", на последней позиции в списке и сохраняет возвращаемое значение в переменной "val".

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_insert.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_insert.htm index 452bcb2d7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_insert.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_insert.htm @@ -1,71 +0,0 @@ - - - - - - ds_list_insert - - - - - - - - - - -

ds_list_insert

-

Эта функция добавит заданное значение в список в заданной позиции. если список содержит больше значений после заданной позиции, их позиции будут сдвинуты на единицу вверх, чтобы освободить место, увеличивая список на единицу.

-

-

Синтаксис:

-

ds_list_insert(id, pos, val);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор списка DSThe id of the list to add to.
posРеальноThe position to add the value, where 0 corresponds to the very beginning of the list and the final position is ds_list_size(id)-1.
valПеременнаяThe value to add to the list.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

ds_list_insert(list, 9, score);

-

Приведенный выше код добавит значение, хранящееся в переменной "score", в 10-ю позицию списка, индексируемого переменной "list" (списки отсчитываются от 0, поэтому список из десяти значений нумеруется от 0 до 9).

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_is_list.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_is_list.htm index ebad0bcea..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_is_list.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_is_list.htm @@ -1,74 +0,0 @@ - - - - - - ds_list_is_list - - - - - - - - - - - -

ds_list_is_list

-

С помощью этой функции можно проверить, хранится ли другой список DS в заданной позиции внутри списка DS. Если заданная позиция содержит идентификатор списка DS, то функция возвращает true, в противном случае она возвращает false.

-

Обратите внимание, что при этом будут обнаружены только те списки, которые были помечены вручную с помощью функции ds_list_mark_as_list() .

-

-

Синтаксис:

-

ds_list_is_list(id, pos);

- - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the list to check.
posThe position within the list to check.
-

-

Возвращается:

-

-

-

Пример:

-

var size = ds_list_size(ships);
- for (var i = 0; i < size; i++)
- {
-     if (ds_list_is_list(ships, i))
-     {
-         ds_list_destroy(ships[| i]);
-     }
- }
- ds_list_destroy(ships);

-

Приведенный выше код проходит по списку DS и проверяет, не содержат ли какие-либо записи идентификаторы других списков. Если да, то эти списки уничтожаются, а после завершения цикла уничтожается основной список.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_is_map.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_is_map.htm index 371bdd9da..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_is_map.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_is_map.htm @@ -1,74 +0,0 @@ - - - - - - ds_list_is_map - - - - - - - - - - - -

ds_list_is_map

-

С помощью этой функции можно проверить, хранится ли карта DS в заданной позиции в списке DS. Если заданная позиция содержит ID карты DS, то функция вернет true, в противном случае она вернет false.

-

Обратите внимание, что при этом будут обнаружены только те карты, которые были помечены вручную с помощью функции ds_list_mark_as_map() .

-

-

Синтаксис:

-

ds_list_is_map(id, pos);

- - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the list to check.
posThe position within the list to check.
-

-

Возвращается:

-

-

-

Пример:

-

var size = ds_list_size(ships);
- for (var i = 0; i < size; i++)
- {
-     if (ds_list_is_map(ships, i))
-     {
-         ds_map_destroy(ships[| i]);
-     }
- }
- ds_list_destroy(ships);

-

Приведенный выше код проходит по списку DS и проверяет, содержат ли какие-либо записи идентификаторы карт. Если да, то эти карты уничтожаются, а после завершения цикла уничтожается основной список.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_mark_as_list.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_mark_as_list.htm index afa7a2be0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_mark_as_list.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_mark_as_list.htm @@ -1,70 +0,0 @@ - - - - - - ds_list_mark_as_list - - - - - - - - - - -

ds_list_mark_as_list

-

Эта функция "пометит" (или "отметит") заданную позицию в ранее созданном списке DS как содержащую другой список DS. Эта функция необходима при кодировании строк JSON (которые вы можете создать с помощью функции json_encode()), но также может быть полезна при вложении структур данных, поскольку помеченные таким образом элементы будут автоматически собираться в мусор (уничтожаться) при уничтожении родительского списка DS. Это означает, что вам не нужно вручную просматривать содержимое списка и уничтожать помеченные структуры данных по отдельности перед уничтожением "родительского" списка. Однако если вы удалите позицию списка по отдельности, содержащийся в ней список DS не будет собран в мусор, и вам следует вызвать соответствующую функцию уничтожения списка DS перед удалением элемента из позиции родительского списка. Также обратите внимание, что если вы вызываете функцию ds_list_clear() на списке, все элементы, помеченные как списки, также будут уничтожены при очистке списка.

-

Также стоит отметить, что если позиция, которая была отмечена, меняется в списке, "метка" перемещается вместе с ней, поэтому если вы отметили позицию 3 в списке (например), а затем вставили еще 2 элемента под ней, чтобы она переместилась на позицию 5, она все равно будет отмечена как список.

-

-

Синтаксис:

-

ds_list_mark_as_list(id, pos);

- - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the list to mark.
posThe position within the list to mark.
-

-

Возвращается:

-

DS List ID or -1 (if it fails)

-

-

Пример:

-

var j_list = ds_list_create();
- var sub_list = ds_list_create();
- ds_list_add(sub_list, health);
- ds_list_add(sub_list, lives);
- ds_list_add(sub_list, score);
- ds_list_add(j_list, sub_list);
- ds_list_mark_as_list(j_list, 0);

-

Приведенный выше код создает два списка DS, затем заполняет один из них различными значениями из глобальных переменных. Затем этот список добавляется во второй список, а позиция "помечается" как таковая, чтобы впоследствии ее можно было правильно закодировать.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_mark_as_map.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_mark_as_map.htm index aebc36642..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_mark_as_map.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_mark_as_map.htm @@ -1,68 +0,0 @@ - - - - - - ds_list_mark_as_map - - - - - - - - - - -

ds_list_mark_as_map

-

Эта функция "пометит" (или "отметит") заданную позицию в ранее созданном списке DS как содержащую карту DS. Эта функция необходима при кодировании строк JSON (которые вы можете создать с помощью функции json_encode()), но также может быть полезна при вложении структур данных, поскольку помеченные таким образом элементы будут автоматически собираться в мусор (уничтожаться) при уничтожении родительского списка DS. Это означает, что вам не нужно вручную просматривать содержимое списка и уничтожать помеченные структуры данных по отдельности перед уничтожением "родительского" списка. Однако, если вы удалите позицию списка по отдельности, содержащаяся в ней структура данных не будет собрана в мусор, и вам следует вызвать соответствующую функцию уничтожения карты DS перед удалением позиции родительского списка. Также обратите внимание, что если вы вызываете функцию ds_list_clear() на списке, все элементы, помеченные как карты, также будут уничтожены при очистке списка.

-

Также стоит отметить, что если отмеченная позиция меняется в списке, "метка" перемещается вместе с ней, поэтому если вы отметили позицию 3 в списке (например), а затем вставили еще 2 элемента под ней, чтобы она переместилась на позицию 5, она все равно будет отмечена как карта.

-

-

Синтаксис:

-

ds_list_mark_as_map(id, pos);

- - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the list to mark.
posThe position within the list to mark.
-

-

Возвращается:

-

DS Map ID or -1 (if it fails)

-

-

Пример:

-

var sub_map = ds_map_create();
- ds_map_add(sub_map, "player", player_array);
- ds_map_add(sub_map, "enemy", enemy_array);
- ds_list_add(j_list, sub_map);
- ds_list_mark_as_map(j_list, 0);

-

Приведенный выше код создает карту DS, а затем заполняет ее двумя ключами, каждый из которых содержит массив значений. Затем эта карта добавляется в заданный список DS, а позиция "помечается" как таковая, чтобы впоследствии ее можно было правильно закодировать.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_read.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_read.htm index 61310a14e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_read.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_read.htm @@ -1,80 +0,0 @@ - - - - - - ds_list_read - - - - - - - - - - -

ds_list_read

-

С помощью этой функции можно воссоздать сохраненный список DS (тот, который ранее был записан в виде строки с помощью функции ds_list_write()). Сначала необходимо создать новый список DS для чтения строки, и если список DS уже существует и в нем сохранена информация, то она будет очищена перед чтением. Эта функция имеет жизненно важное значение при создании механизмов сохранения/загрузки для вашей игры.

-

Обратите внимание, что если указанная строка DS была написана в среде GameMaker: Studio 1.2.x (или старше), необходимо указать дополнительный аргумент "legacy", установив его в значение true, поскольку после этого формат строки изменился.

-

-

Синтаксис:

-

ds_list_read(id, str [, legacy]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор списка DSThe id of the data structure to read into.
strСтрокаThe string to read from.
legacyБулевоOPTIONAL Может быть либо true, либо false, либо полностью опущен.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

list = ds_list_create();
- ini_open("save.ini");
- var str = ini_read_string("Lists", "0", "");
- if (str != "")
- {
-     ds_list_read(list, str);
- }
- ini_close();

-

Приведенный выше код создает список и сохраняет индекс в переменной "list". Затем он открывает файл ini и считывает из него строку, проверяя, что сначала строка не возвращается пустой. Затем эта строка считывается во вновь созданный список ds_list.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_replace.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_replace.htm index 33ee31c4b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_replace.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_replace.htm @@ -1,71 +0,0 @@ - - - - - - ds_list_replace - - - - - - - - - - -

ds_list_replace

-

Эта функция заменит значение в заданной позиции на другое.

-

-

Синтаксис:

-

ds_list_replace(id, pos, val);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор списка DSThe id of the list to change.
posРеальноThe position to replace the value, where 0 corresponds to the very beginning of the list and the final position is ds_list_size(id)-1.
valПеременнаяThe new value to replace the given value with.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

ds_list_replace(n_list, 3, name);

-

Приведенный выше код заменит значение, хранящееся на позиции 3 в списке, на значение, хранящееся в переменной "name".

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_set.htm index af6e42ca9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_set.htm @@ -1,75 +0,0 @@ - - - - - - ds_list_set - - - - - - - - - - -

ds_list_set

-

Эта функция может использоваться для установки ранее добавленного элемента списка. Вы указываете ID списка (полученный при создании списка) и позицию в списке, которую нужно установить, а также значение, которое нужно установить. Обратите внимание, что если устанавливаемая запись находится вне границ списка (т.е. вы установили запись списка 20, но текущий список содержит только 10 записей), то список будет заполнен до заданной позиции, а каждая запись будет установлена в 0. Эта функция аналогична использованию аксессора DS list.

-

-

-

Синтаксис:

-

ds_list_set(id, pos, val);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор списка DSThe id of the list to add to.
posПеременнаяThe position within the list to set.
[val2, ... max_val]ПеременнаяThe value to set in the list.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

for (var i = 0; i < ds_list_size(list); i++;)
- {
-     ds_list_set(list, i, -1);
- }

-

Приведенный выше код добавит значение, хранящееся в переменной "score", в список, проиндексированный в переменной "sc_list".

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_shuffle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_shuffle.htm index 7b6a6aa23..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_shuffle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_shuffle.htm @@ -1,64 +0,0 @@ - - - - - - ds_list_shuffle - - - - - - - - - - -

ds_list_shuffle

-

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

-

ПРИМЕЧАНИЕ: Эта функция будет перемешивать элементы списка на одни и те же позиции при каждом новом запуске игры, поскольку GameMaker каждый раз генерирует одно и то же начальное случайное зерно, чтобы облегчить отладку кода. Чтобы избежать такого поведения, используйте randomise() в начале игры. Это справедливо только при тестировании и отладке игры, так как конечный исполняемый пакет не будет демонстрировать такое поведение и будет случайным при каждом запуске.

-

-

Синтаксис:

-

ds_list_shuffle(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the list to shuffle.
-

-

Возвращается:

-

-

-

Пример:

-

if restart
- {
-     ds_list_shuffle(card_list);
- }

-

Приведенный выше код перетасует список, проиндексированный в переменной "card_list", если переменная "restart" отмечена как true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_size.htm index 8d8bd0294..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_size.htm @@ -1,64 +0,0 @@ - - - - - - ds_list_size - - - - - - - - - - - -

ds_list_size

-

Эта функция возвращает "размер" списка, т.е. количество элементов, которые были в него добавлены.

-

-

Синтаксис:

-

ds_list_size(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to check.
-

-

Возвращается:

-

-

-

Пример:

-

if !ds_list_empty(control_list)
- {
-     num = ds_list_size(control_list);
- }

-

Приведенный выше код проверяет список DS на то, пуст он или нет, и если нет, то получает количество элементов, которые он содержит, и сохраняет это значение в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_sort.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_sort.htm index dc7d6c2e2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_sort.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_sort.htm @@ -1,67 +0,0 @@ - - - - - - ds_list_sort - - - - - - - - - - -

ds_list_sort

-

С помощью этой функции можно отсортировать все значения в списке по возрастанию или убыванию. Если список содержит строки, они будут отсортированы в алфавитном порядке на основе английского алфавита из 26 букв.

-

-

Синтаксис:

-

ds_list_sort(id, ascend);

- - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the list to sort.
ascendWhether the values should be ascending (true) или по убыванию (false).
-

-

Возвращается:

-

-

-

Пример:

-

if newgame
- {
-     ds_list_sort(name_list, true);
- }

-

Приведенный выше код отсортирует список, индексированный в переменной "name_list", если переменная "newgame" помечена как true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_write.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_write.htm index fc877f283..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_write.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Lists/ds_list_write.htm @@ -1,65 +0,0 @@ - - - - - - ds_list_write - - - - - - - - - - - - -

ds_list_write

-

Эта функция возвращает строку, которая затем может быть сохранена или передана в другую структуру данных с помощью функции ds_list_read() функцию.

-

ПРИМЕЧАНИЕ: Возвращаемая строка не является человекочитаемой строкой, а скорее дампом содержимого структуры данных.

-

-

Синтаксис:

-

ds_list_write(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to write.
-

-

Возвращается:

-

-

-

Пример:

-

ini_open("save.ini");
var str = ds_list_write(list);
ini_write_string("Lists", "0", str);
ds_list_clear(list); -
ini_close(); -

-

Приведенный выше код открывает ini-файл, а затем записывает строку, содержащую информацию, хранящуюся в списке DS, индексированном в переменной "list". Затем список очищается, а ini-файл закрывается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/DS_Maps.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/DS_Maps.htm index e18333f67..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/DS_Maps.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/DS_Maps.htm @@ -1,87 +0,0 @@ - - - - - - Карты DS - - - - - - - - - - -

Карты DS

-

Структура данных DS map является исключительно полезной, поскольку она позволяет хранить пары ключей и значений. Например, персонаж вашей игры может иметь некоторое количество различных предметов(ключи), а для каждого отдельного предмета он может иметь некоторое их количество(значения), как в ролевой игре, где у вас может быть 10 зелий здоровья, 5 зелий маны и 100 золотых. Карты хранят такие пары все вместе в одном месте, и вы можете добавлять пары на карту и искать значение, соответствующее определенным ключам, используя некоторые простые функции. Однако есть несколько вещей, которые вы должны знать о картах, прежде чем использовать их! Карты не сортируются никаким (узнаваемым) способом, а это значит, что для поиска определенного ключа вам, возможно, придется просмотреть всю карту (что очень медленно). Также не существует способа хранения двух одинаковых ключей, и вы не можете присвоить одному ключу два значения.

-

ПРИМЕЧАНИЕ: Рекомендуется использовать структуры вместо карт DS, поскольку они имеют схожие функции, проще в использовании и автоматически собирают мусор.

-

ПРИМЕЧАНИЕ Как и все динамические ресурсы, структуры данных занимают память, поэтому их всегда следует уничтожать, когда они больше не нужны, чтобы предотвратить утечку памяти, которая замедлит и в конечном итоге приведет к краху вашей игры.

-

Помимо конкретных функций, перечисленных ниже, вы можете использовать выражение (называемое аксессором) для добавления или изменения содержимого вашей карты DS. Этот аксессор похож на массив 1D со следующим синтаксисом:

-

map_index[? key]

-

Более подробную информацию, а также примеры можно найти на странице GML Overview, посвященной аксессорам.

-

Существуют следующие функции, работающие с картами DS:

- -

-

Для сохранения и загрузки карты DS доступны еще четыре функции. Эти функции обфусцируют карту и сохраняют ее в безопасном месте на целевой платформе, используя формат файла, который означает, что конечный файл не может быть передан между устройствами:

-

- -

-

Одно из применений карт DS - работа с JSON, поэтому существует несколько специальных функций, предназначенных именно для этого:

-

- -

ПРИМЕЧАНИЕ Хотя эти функции позволяют добавлять списки и карты внутри карты, они бесполезны для чего-либо, кроме JSON, и вложенные карты и списки не будут правильно прочитаны при записи на диск или доступе любым другим способом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_add.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_add.htm index 51247f6a8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_add.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_add.htm @@ -1,75 +0,0 @@ - - - - - - ds_map_add - - - - - - - - - - - -

ds_map_add

-

Эта функция должна использоваться для добавления наборов пар ключ/значение в указанную карту DS. Вы можете проверить эту функцию, чтобы узнать, была ли она успешной или нет (она вернет true в случае успеха или false в противном случае), - так как она может потерпеть неудачу, если в карте DS уже существует такой же ключ или вы указали несуществующую карту DS в качестве ID карты для добавления. Ключи и значения, которые вы предоставляете, могут состоять из любой комбинации типов данных, так что все нижеперечисленные - и - больше - допустимы (хотя на практике чаще всего для ключа используется строка):

-

ds_map_add(map, 5, undefined);
ds_map_add(map, "level", 1);
ds_map_add(map, 89.6, "hello world");
ds_map_add(map, 5, buffer_get_address(buff));

-

Вы также можете добавить на карту, используя аксессор "?", как показано ниже:

-

map[? 5] = undefined;
map[? "level"] = 1;
map[? 89.6] = "hello world";
map[? 5] = buffer_get_address(buff);

-

ПРИМЕЧАНИЕ: В отличие от других структур данных в GameMaker, этот ключ не будет находиться в начале (или в конце) карты DS, скорее он просто будет находиться где-то в карте DS.

-

-

Синтаксис:

-

ds_map_add(id, key, val);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the map to add to.
keyThe key of the value to add.
valThe value to add to the map.
-

-

Возвращается:

-

-

-

Пример:

-

inventory = ds_map_create();
ds_map_add(inventory, "hp potion", 1);
ds_map_add(inventory, "gold", 100);

-

Это создаст новую карту, присвоив ее id переменной "inventory". Затем она добавит два новых ключа к карте, "hp potion" и "gold", и установит их начальные значения 1 и 100.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_add_list.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_add_list.htm index 5b67717ea..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_add_list.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_add_list.htm @@ -1,78 +0,0 @@ - - - - - - ds_map_add_list - - - - - - - - - - -

ds_map_add_list

-

С помощью этой функции вы можете назначить (ранее созданный) список DS ключу в заданной карте DS. Эта функция предназначена для создания карт, совместимых с JSON, которые затем кодируются с помощью функции json_encode() и должна использоваться только в сочетании с этой функцией. Если DS-карта содержит список, добавленный таким образом, уничтожение родительской карты также уничтожит содержащиеся в ней списки и освободит их память, а вызов функции ds_map_clear() на родительской карте также уничтожит и очистит все помеченные списки.

-

-

Синтаксис:

-

ds_map_add_list(id, key, value)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор карты DSThe id of the map to use.
keyСтрокаThe key for the added list.
valueИдентификатор списка DSThe id of the list to add.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var j_list = ds_list_create();
- ds_list_add(j_list, health);
- ds_list_add(j_list, lives);
- ds_list_add(j_list, score);
- var j_map = ds_map_create();
- ds_map_add_list(j_map, "list", j_list);
- var j = json_encode(j_map);
- ds_map_destroy(j_map);

-

Приведенный выше код создает список и заполняет его различными значениями глобальных переменных. Этот список затем "вложен" в карту DS, а карта затем кодируется в строку JSON, после чего карта уничтожается, удаляя ее и все содержащиеся в ней списки из памяти.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_add_map.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_add_map.htm index 667872633..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_add_map.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_add_map.htm @@ -1,78 +0,0 @@ - - - - - - ds_map_add_map - - - - - - - - - - -

ds_map_add_map

-

С помощью этой функции вы можете назначить (ранее созданную) карту DS ключу в заданной карте DS. Эта функция предназначена для создания карт, совместимых с JSON, которые вы затем будете кодировать, используя json_encode() и должна использоваться только в сочетании с этой функцией. Если в DS-карту добавлена другая карта, то уничтожение родительской карты приведет к уничтожению содержащихся в ней карт и освобождению их памяти, а вызов функции ds_map_clear() на родительской карте также уничтожит и очистит все помеченные карты.

-

-

Синтаксис:

-

ds_map_add_map(id, key, value)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор карты DSThe id of the map to use.
keyСтрокаThe key for the added map.
valueИдентификатор карты DSThe id of the map to add.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var j_map = ds_map_create();
- var j_list = ds_list_create();
- var sub_map = ds_map_create();
- ds_map_add_list(sub_map, "list", j_list);
- ds_map_add(sub_map, "array", j_array);
- ds_map_add_map(j_map, "map", sub_map);
- var j = json_encode(j_map);
- ds_map_destroy(j_map);

-

Приведенный выше код создает две карты DS, затем заполняет одну из них списком и массивом, после чего добавляет их во вторую, которая затем кодируется в строку JSON. Затем карта уничтожается, чтобы удалить ее и любые другие карты или списки, которые она содержит, из памяти.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_clear.htm index 8da07c919..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_clear.htm @@ -1,63 +0,0 @@ - - - - - - ds_map_clear - - - - - - - - - - -

ds_map_clear

-

Эта функция очистит (ранее созданную) карту DS от всех пар ключ/значение, но не удалит саму карту DS из памяти. Для этого следует использовать функцию ds_map_destroy(). Обратите внимание, что при очистке карты все структуры данных, хранящиеся в ней, будут удалены, что приведет к утечке памяти, поэтому перед очисткой карты необходимо пройтись по ней и уничтожить все элементы структуры данных вручную, чтобы избежать этого. Единственный случай, когда это не требуется, это когда вы отметили какие-либо элементы в карте как список DS или как другую карту DS, в этом случае эти элементы будут уничтожены (не очищены!) и их память очистится автоматически при очистке родительской карты.

-

-

Синтаксис:

-

ds_map_clear(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to clear.
-

-

Возвращается:

-

-

-

Пример:

-

if global.new_game
- {
-     ds_map_clear(inventory);
- }

-

Приведенная выше функция проверит глобальную переменную на истинность и, если это так, то карта DS, индексируемая в переменной экземпляра "inventory", будет очищена от всех пар ключ/значение (но не уничтожена).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_copy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_copy.htm index b4268cef4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_copy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_copy.htm @@ -1,64 +0,0 @@ - - - - - ds_map_copy - - - - - - - - - - -

ds_map_copy

-

Вы можете использовать эту функцию для копирования содержимого одной карты в другую, ранее созданную с помощью ds_map_create(). Если карта DS, в которую выполняется копирование, не пуста, - то эта функция сначала очистит ее перед копированием. При этом исходная карта DS остается неизменной.

-

-

Синтаксис:

-

ds_map_copy(id, source);

- - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the map you are copying to
sourceThe id of the map you are copying from
-

-

Возвращается:

-

-

-

Пример:

-

inventory_2 = ds_map_create();
ds_map_copy(inventory_2, inventory_1);

-

Приведенный выше код создаст новую карту и присвоит ее переменной "inventory_2". Затем в эту новую карту будет скопировано содержимое карты DS, проиндексированной в переменной "inventory_1".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_create.htm index 64c6568d6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_create.htm @@ -1,50 +0,0 @@ - - - - - - ds_map_create - - - - - - - - - - - -

ds_map_create

-

Эта функция используется для создания новой, пустой, DS карты и возвращает ее id, который затем используется для доступа к структуре данных во всех других функциях DS карты.

-

ВАЖНО! Когда вы создаете структуру данных, значение индекса для ее идентификации является целым числом, начинающимся с 0. Это означает, что структуры данных разных типов могут иметь одинаковое значение индекса, поэтому, если вы сомневаетесь, следует использовать функцию ds_exists() функцию перед обращением к ним. Также обратите внимание, что индексы используются повторно, поэтому значение индекса уничтоженной структуры данных может быть использовано впоследствии вновь созданной.

-

-

Синтаксис:

-

ds_map_create();

-

-

Возвращается:

-

DS Map ID

-

-

Пример:

-

inventory = ds_map_create();

-

Приведенный выше код создаст новую, пустую карту DS и сохранит ее индекс id в переменной "inventory".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_delete.htm index 4161a2aa9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_delete.htm @@ -1,66 +0,0 @@ - - - - - - ds_map_delete - - - - - - - - - - -

ds_map_delete

-

С помощью этой функции вы можете удалить любой заданный ключ (и соответствующее ему значение) из заданной, ранее созданной, карты DS.

-

-

Синтаксис:

-

ds_map_delete(id, key);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор карты DSThe id of the map to change.
keyСтрокаThe key to delete (along with its associated value).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

ds_map_delete(inventory, "shield");

-

Приведенный выше код удалит ключ "shield" (и значение, с которым он сопряжен) из карты DS (инвентаря).

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_destroy.htm index 184659d30..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_destroy.htm @@ -1,65 +0,0 @@ - - - - - ds_map_destroy - - - - - - - - - - -

ds_map_destroy

-

Карты DS занимают место в памяти, которая выделяется для них при создании. Это означает, что вам также необходимо освобождать эту память, когда карта DS не нужна, чтобы предотвратить ошибки, утечку памяти и снижение производительности при запуске игры. Данная функция - делает именно это. Обратите внимание, что при уничтожении карты все структуры данных, хранящиеся на карте, будут отнесены к ней, что приведет к утечке памяти, поэтому перед уничтожением карты необходимо пройтись по карте и уничтожить все элементы структуры данных вручную, чтобы предотвратить это. На - Единственный случай, когда это не требуется, это когда вы отметили какие-либо элементы в карте как список DS или как другую карту DS, в этом случае эти элементы будут уничтожены, а их память очищена. - автоматически.

-

ВАЖНО! Когда вы создаете структуру данных, значение индекса для ее идентификации является целым числом, начинающимся с 0. Это означает, что структуры данных разных типов могут иметь одинаковое значение индекса, поэтому, если вы сомневаетесь, вам следует использовать значение индекса - ds_exists() функцию перед обращением к ним. Также обратите внимание, что индексы используются повторно, поэтому значение индекса уничтоженной структуры данных может быть использовано вновь созданной, поэтому мы рекомендуем - всегда устанавливать переменную, в которой хранился индекс DS, в -1 после уничтожения.

-

-

Синтаксис:

-

ds_map_destroy(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the map to destroy.
-

-

Возвращается:

-

-

-

Пример:

-

ds_map_destroy(inventory);
inventory = -1;

-

Приведенный выше код уничтожит карту DS с id, проиндексированным в переменной "inventory".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_empty.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_empty.htm index 20621419d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_empty.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_empty.htm @@ -1,64 +0,0 @@ - - - - - - ds_map_empty - - - - - - - - - - - -

ds_map_empty

-

Эта функция просто вернет false, если указанная (ранее созданная) карта DS содержит какие-либо пары ключ/значение, или true, если нет.

-

-

Синтаксис:

-

ds_map_empty(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to check.
-

-

Возвращается:

-

-

-

Пример:

-

if ds_map_empty(inventory)
- {
-     weight = 0;
- }

-

Приведенный выше код проверяет, есть ли в карте DS, индексируемой в переменной "inventory", пары ключ/значение, и если нет, то устанавливает переменную "weight" в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_exists.htm index 74f1ad0e8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_exists.htm @@ -1,71 +0,0 @@ - - - - - - ds_map_exists - - - - - - - - - - - -

ds_map_exists

-

Эта функция вернет true, если указанный ключ существует в (ранее созданной) карте DS, и false, если нет.

-

-

Синтаксис:

-

ds_map_exists(id, key);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор карты DSThe id of the data structure to check
keyСтрокаThe key to check for
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !ds_map_exists(inventory, "potions")
- {
-     ds_map_add(inventory, "potions", 1);
- }

-

Приведенный выше код проверит карту DS, проиндексированную в переменной "inventory", на наличие ключа "potions" и, если его нет, добавит его на карту.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_first.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_first.htm index 63bd95e60..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_first.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_first.htm @@ -1,71 +0,0 @@ - - - - - - ds_map_find_first - - - - - - - - - - - -

ds_map_find_first

-

Эта функция возвращает первый ключ, хранящийся в карте DS. Это не первый ключ в том порядке, в котором вы их добавили! Карты DS не хранятся в линейной форме, для этого используется список DS, поэтому все, что делает эта функция, это находит первый ключ, сохраненный компьютером. Это может быть полезно, если вам нужно итеративно просматривать карту DS в поисках чего-либо, но по возможности этого следует избегать, так как это может быть медленным.

-

Обратите внимание, что эта функция вернет undefined, если заданная карта DS пуста.

-

-

Синтаксис:

-

ds_map_find_first(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the map to use.
-

-

Возвращается:

-

Variable or undefined

-

-

Пример:

-

var size = ds_map_size(inventory) ;
- var key = ds_map_find_first(inventory);
- for (var i = 0; i < size; i++)
- {
-     if (key != "gold")
-     {
-         key = ds_map_find_next(inventory, key);
-     }
-     else break;
- }

-

Приведенный выше код создает некоторые временные переменные, затем получает размер карты DS и находит первый ключ, сохраненный компьютером в карте. Затем с помощью цикла for выполняется итерация по карте DS в поисках значения ключа "gold". Если оно найдено, то цикл завершается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_last.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_last.htm index fad48ea25..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_last.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_last.htm @@ -1,71 +0,0 @@ - - - - - - ds_map_find_last - - - - - - - - - - - -

ds_map_find_last

-

Эта функция возвращает последний ключ, хранящийся в карте DS. Это не последний ключ в том порядке, в котором вы их добавляли! Карты DS не хранятся в линейной форме, для этого используются списки DS, поэтому все, что делает эта функция, это находит последний ключ, сохраненный компьютером. Это может быть полезно, если вам нужно итеративно просматривать DS-карту в поисках чего-либо, но по возможности этого следует избегать, так как это может быть медленным.

-

Обратите внимание, что эта функция вернет undefined, если заданная карта DS пуста.

-

-

Синтаксис:

-

ds_map_find_last(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the map to use.
-

-

Возвращается:

-

Variable or undefined

-

-

Пример:

-

var size = ds_map_size(inventory);
- var key = ds_map_find_last(inventory);
- for (var i = size; i > 0; i--)
- {
-     if (key != "gold")
-     {
-         key = ds_map_find_previous(inventory, key);
-     }
-     else break;
- }

-

Приведенный выше код создает некоторые временные переменные, затем получает размер карты DS и находит последний ключ, сохраненный компьютером в карте. Затем он использует цикл for для итерации по карте DS в поисках значения ключа "gold". Если оно найдено, то цикл завершается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_next.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_next.htm index 692d7d276..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_next.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_next.htm @@ -1,75 +0,0 @@ - - - - - - ds_map_find_next - - - - - - - - - - - -

ds_map_find_next

-

Эта функция возвращает следующий ключ, хранящийся в карте DS после указанного в функции. Это может быть полезно, если вам нужно итерационно просматривать карту DS в поисках чего-либо, но по возможности этого следует избегать, так как это может быть медленно. Если такого ключа не существует, то функция вернет undefined. Вы всегда должны проверять это с помощью is_undefined() функция.

-

-

Синтаксис:

-

ds_map_find_next(id, key);

- - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the map to use.
keyThe key to find the next one to.
-

-

Возвращается:

-

Variable or undefined

-

-

Пример:

-

var size = ds_map_size(inventory);
- var key = ds_map_find_first(inventory);
- for (var i = 0; i < size; i++;)
- {
-     if (key != "gold")
-     {
-         break;
-     }
-     
-     _key = ds_map_find_next(inventory, _key);
- }

-

Приведенный выше код создает некоторые временные переменные, затем получает размер карты DS и находит первый ключ, сохраненный компьютером в карте. Затем с помощью цикла for выполняется итерация по карте DS в поисках значения ключа "gold". Если оно найдено, то цикл завершается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_previous.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_previous.htm index 31f6694d8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_previous.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_previous.htm @@ -1,74 +0,0 @@ - - - - - - ds_map_find_previous - - - - - - - - - - - -

ds_map_find_previous

-

Эта функция возвращает предыдущий ключ, хранящийся в карте DS перед указанным в функции. Это может быть полезно, если вам приходится итерационно просматривать карту DS в поисках чего-либо, но по возможности этого следует избегать, так как это может быть медленно. Если такого ключа не существует, то функция вернет undefined. Вы всегда должны проверять это с помощью is_undefined() функция.

-

-

Синтаксис:

-

ds_map_find_previous(id, key);

- - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the map to use.
keyThe key to find the previous one to.
-

-

Возвращается:

-

Variable or undefined

-

-

Пример:

-

var size = ds_map_size(inventory) - 1;
- var key = ds_map_find_last(inventory);
- for (var i = size; i > 0; i--;)
- {
-     if (key != "gold")
-     {
-         _key = ds_map_find_previous(inventory, _key);
-     }
-     else break;
- }

-

Приведенный выше код создает некоторые временные переменные, затем получает размер ds_map и находит последний ключ, сохраненный компьютером в карте. Затем он использует цикл for для обратного итерационного просмотра карты ds_map в поисках значения ключа "gold". Если оно найдено, то цикл завершается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_value.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_value.htm index 8c029896b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_value.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_find_value.htm @@ -1,67 +0,0 @@ - - - - - - ds_map_find_value - - - - - - - - - - - -

ds_map_find_value

-

С помощью этой функции можно получить значение по заданному ключу. Входными значениями функции являются (ранее созданная) карта DS для использования и ключ для проверки.

-

ПРИМЕЧАНИЕ: Если такого ключа не существует, то функция вернет undefined. Вы всегда должны проверять это, используя is_undefined() функция

-

-

Синтаксис:

-

ds_map_find_value(id, key)

- - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the map to use.
keyThe key to find.
-

-

Возвращается:

-

Variable or undefined

-

-

Пример:

-

amount = ds_map_find_value(inventory, "food");

-

Или, используя аксессор карты "?":

-

amount = inventory[? "food"];

-

Приведенный выше код получит значение ключа "food" и сохранит его в переменной "amount".

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_is_list.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_is_list.htm index 35cee7632..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_is_list.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_is_list.htm @@ -1,76 +0,0 @@ - - - - - - ds_map_is_list - - - - - - - - - - - -

ds_map_is_list

-

С помощью этой функции вы можете проверить, хранится ли список DS в заданном ключе карты. Если заданный ключ содержит идентификатор списка DS, то функция вернет true, в противном случае она вернет false.

-

Обратите внимание, что это обнаружит только списки, которые были добавлены с помощью функции ds_map_add_list() .

-

-

Синтаксис:

-

ds_map_is_list(id, key)

- - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the map to use.
keyThe key to check.
-

-

Возвращается:

-

-

-

Пример:

-

var size = ds_map_size(inventory);
- var key = ds_map_find_first(inventory);
- for (var i = 0; i < size; i++)
- {
-     if (ds_map_is_list(inventory, key))
-     {
-         ds_list_destroy(inventory[? key]);
-     }
-     key = ds_map_find_next(inventory);
- }
- ds_map_destroy(inventory);

-

Приведенный выше код выполняет цикл по карте DS и проверяет, не являются ли какие-либо ключи в ней ключами для списка DS. Если да, то список DS уничтожается, а в конце цикла уничтожается и карта DS.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_is_map.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_is_map.htm index f44a9b1a6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_is_map.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_is_map.htm @@ -1,76 +0,0 @@ - - - - - - ds_map_is_map - - - - - - - - - - - -

ds_map_is_map

-

С помощью этой функции вы можете проверить, хранится ли карта DS в заданном ключе map. Если заданный ключ содержит идентификатор карты DS, то функция вернет true, в противном случае она вернет false.

-

Обратите внимание, что это обнаружит только те карты, которые были добавлены с помощью функции ds_map_add_map() .

-

-

Синтаксис:

-

ds_map_is_map(id, key)

- - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the map to use.
keyThe key to replace.
-

-

Возвращается:

-

-

-

Пример:

-

var size = ds_map_size(inventory);
- var key = ds_map_find_first(inventory);
- for (var i = 0; i < size; i++)
- {
-     if (ds_map_is_map(inventory, key))
-     {
-         ds_map_destroy(inventory[? key]);
-     }
-     key = ds_map_find_next(inventory);
- }
- ds_map_destroy(inventory);

-

Приведенный выше код выполняет цикл обработки карты DS и проверяет, не являются ли какие-либо ключи в ней ключами для других карт DS. Если да, то сохраненная DS-карта уничтожается, а в конце цикла уничтожается и основная DS-карта.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_keys_to_array.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_keys_to_array.htm index 921a0ae1c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_keys_to_array.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_keys_to_array.htm @@ -1,67 +0,0 @@ - - - - - - ds_map_keys_to_array - - - - - - - - - - - -

ds_map_keys_to_array

-

С помощью этой функции вы можете получить все ключи, которые содержит карта DS. Вы указываете ID карты DS, из которой нужно получить ключи (как возвращается функцией ds_map_create()), и функция вернет массив, каждая запись в котором будет ключом из карты DS. Функция имеет необязательный второй аргумент, в котором вы можете указать созданный вами массив, в этом случае данные ключей карты будут добавлены к существующим данным в массиве. Обратите внимание, что функция изменяет непосредственно массив, но также возвращает ссылку на него (или ссылку на новый массив, если он не указан).

-

-

Синтаксис:

-

ds_map_keys_to_array(id, [array])

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор карты DSThe id of the map to use.
[array]МассивOPTIONAL Массив для добавления ключей карты DS.
-

-

Возвращается:

-

Array

-

-

Пример:

-

map_keys = ds_map_keys_to_array(inventory);

-

Приведенный выше код извлекает ключи для карты DS, а затем сохраняет их в виде массива для дальнейшего использования.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_read.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_read.htm index fd02aa332..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_read.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_read.htm @@ -1,80 +0,0 @@ - - - - - - ds_map_read - - - - - - - - - - -

ds_map_read

-

Эта функция принимает строку, которая ранее была создана функцией ds_map_write() и затем считывает ее в ранее созданную карту DS. Если карта, в которую считывается строка, содержит какие-либо пары ключ/значение, они будут сначала очищены перед повторным созданием сохраненной карты.

-

Обратите внимание, что если указанная строка DS была написана в среде GameMaker: Studio 1.2.x (или старше), необходимо указать дополнительный аргумент "legacy", установив его в значение true, поскольку после этого формат строки изменился.

-

-

Синтаксис:

-

ds_map_read(id, str, [legacy]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор карты DSThe id of the data structure to read the string into
strСтрокаThe string to read
legacyБулевоOPTIONAL Может быть либо true, либо false, либо полностью опущен.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

inventory = ds_map_create();
- ini_open("map.ini");
- var _t_string = ini_read_string("Saved", "0", "");
- if (_t_string != "")
- {
-     ds_map_read(inventory, t_string);
- }
- ini_close();

-

Приведенный выше код создает новую карту DS и сохраняет ее индекс id в переменной "inventory". Затем он открывает ini-файл и считывает строку из этого файла во временную переменную "t_string". Наконец, он проверяет правильность строки (не значение по умолчанию в ini - "") и, если это так, считывает строку во вновь созданную DS-карту, после чего снова закрывает ini.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_replace.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_replace.htm index 828b70b42..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_replace.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_replace.htm @@ -1,70 +0,0 @@ - - - - - - ds_map_replace - - - - - - - - - - -

ds_map_replace

-

С помощью этой функции вы можете изменить значение для заданного ключа в карте DS. Вы передаете индекс карты (возвращаемый функцией ds_map_create()) - , затем ключ для замены - либо строку, либо целое число - и значение, на которое нужно заменить значение ключа. Если заданный ключ не существует, то он будет создан, а если существует, то текущее значение будет заменено на новое - значением. Функция вернет true, если ключ существует и значение заменено, и false, если ключ не существует и был создан новый ключ с заданным значением.

-

-

Синтаксис:

-

ds_map_replace( id, key, val );

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the map to change.
keyThe key with the value that should be replaced by the new one
valThe new value to replace the given value with
-

-

Возвращается:

-

-

-

Пример:

-

ds_map_replace(inventory, "torso", 55);

-

Приведенный выше код ищет в карте DS ключ "torso", и когда он его находит (или он создается, если его нет), текущее значение заменяется на указанное.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_replace_list.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_replace_list.htm index df9d4c3e2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_replace_list.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_replace_list.htm @@ -1,77 +0,0 @@ - - - - - - ds_map_replace_list - - - - - - - - - - -

ds_map_replace_list

-

С помощью этой функции вы можете заменить список DS, который был сохранен в заданном "ключе", на другой список, созданный ранее. Эта функция предназначена для создания карт, совместимых с JSON, которые затем кодируются с помощью функции json_encode() и должна использоваться только в сочетании с этой функцией.

-

-

Синтаксис:

-

ds_map_replace_list(id, key, value)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор карты DSThe id of the map to use.
keyСтрокаThe key to replace.
valueИдентификатор списка DSThe id of the ds_list to use to replace the one previously stored in the given key.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var j_list = ds_list_create();
- ds_list_add(j_list, health);
- ds_list_add(j_list, lives);
- ds_list_add(j_list, score);
- ds_map_replace_list(j_map, "list", j_list);
- var j = json_encode(j_map);
- ds_list_destroy(j_list);

-

Приведенный выше код создаст DS List и заполнит его значениями различных глобальных переменных, а затем заменит ранее сохраненный список в DS Map "j_map".

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_replace_map.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_replace_map.htm index c149dd543..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_replace_map.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_replace_map.htm @@ -1,76 +0,0 @@ - - - - - - ds_map_replace_map - - - - - - - - - - -

ds_map_replace_map

-

С помощью этой функции вы можете заменить карту DS Map, которая была сохранена в заданном "ключе", на другую карту, которая была создана ранее. Эта функция предназначена для создания карт, совместимых с JSON, которые затем кодируются с помощью функции json_encode() и должна использоваться только в сочетании с этой функцией.

-

-

Синтаксис:

-

ds_map_replace_map(id, key, value)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор карты DSThe id of the ds_map to use.
keyСтрокаThe key to replace.
valueИдентификатор карты DSThe id of the ds_map to use to replace the one previously stored in the given key.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var temp_map = ds_map_create();
- ds_map_add_list(temp_map, "list", j_list);
- ds_map_add(temp_map, "array", j_array);
- ds_map_replace_map(j_map, "maps", temp_map);
- var j = json_encode(j_map);
- ds_map_destroy(temp_map);

-

Приведенный выше код создаст DS Map и заполнит его массивом и DS List, а затем заменит ранее сохраненную карту в DS Map "j_map".

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_secure_load.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_secure_load.htm index 9c75017dc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_secure_load.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_secure_load.htm @@ -1,61 +0,0 @@ - - - - - - ds_map_secure_load - - - - - - - - - - -

ds_map_secure_load

-

Эта функция загружает ранее сохраненную карту DS из указанного файла. Этот файл должен быть предварительно создан с помощью функции ds_map_secure_save() и после загрузки функция вернет индекс карты DS, которая была создана на основе загруженных данных. Этот индекс карты DS должен быть сохранен в переменной и использоваться для всех последующих вызовов функции к этой карте. Обратите внимание, что если загружаемая карта DS была сохранена с массивом в качестве одного из ключевых значений, то при загрузке этот массив будет преобразован в список DS.

-

ВАЖНО! Одной из особенностей безопасного сохраненного файла является то, что он блокируется на устройстве, на котором был создан, поэтому вы не можете загрузить файл, сохраненный на одном устройстве, в проект, запущенный на другом устройстве.

-

-

Синтаксис:

-

ds_map_secure_load(filename);

- - - - - - - - - - - -
АргументТипОписание
filenameThe name of the file to load the map data from.
-

-

Возвращается:

-

DS Map ID

-

-

Пример:

-

p_map = ds_map_secure_load("p_data.dat");

-

Приведенный выше код загрузит сохраненную карту DS и сохранит значение ее индекса в переменной для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_secure_load_buffer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_secure_load_buffer.htm index 2ac9e2aec..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_secure_load_buffer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_secure_load_buffer.htm @@ -1,66 +0,0 @@ - - - - - - ds_map_secure_load_buffer - - - - - - - - - - -

ds_map_secure_load_buffer

-

Эта функция загружает сохраненную карту DS из буфера. Вы должны предварительно загрузить буфер в память (используя buffer_load()), а затем передать его в эту функцию, которая вернет карту DS, заполненную содержимым буфера. Обратите внимание, что буфер должен быть создан с помощью функции ds_map_secure_save_buffer(), чтобы функция работала правильно, а также обратите внимание, что если загружаемая DS-карта содержит массив, то при загрузке он будет преобразован в DS-список.

-

ВАЖНО! Одной из особенностей безопасного сохраненного файла является то, что он блокируется на устройстве, на котором был создан, поэтому вы не можете загрузить файл, сохраненный на одном устройстве, в проект, запущенный на другом устройстве.

-

ПРИМЕЧАНИЕ: Эта функция не поддерживается на HTML5 и UWP.

-

-

Синтаксис:

-

ds_map_secure_load_buffer(buffer);

- - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфераThe buffer ID of the buffer to load the map data from.
-

-

Возвращается:

-

DS Map ID

-

-

Пример:

-

var buff = buffer_load("save.dat");
- map = ds_map_secure_load_buffer(buff);
- buffer_delete(buff);

-

Приведенный выше код загрузит сохраненную карту DS из буфера и сохранит значение ее индекса в переменной для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_secure_save.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_secure_save.htm index 1cd085cbf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_secure_save.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_secure_save.htm @@ -1,67 +0,0 @@ - - - - - ds_map_secure_save - - - - - - - - - - - -

ds_map_secure_save

-

Эта функция сохраняет содержимое заданной карты DS в файл, который привязан к устройству, на котором он был создан (это означает, что он не может быть прочитан при передаче на любое другое устройство). Сам файл может иметь практически любое расширение (например, *.dat, - *.json, *.bin и т.д.) и будет обфусцирован и сохранен в локальном хранилище на целевой платформе. Затем вы можете повторно загрузить ds_map с помощью функции ds_map_secure_load(). Обратите внимание, что если - сохраняемая карта DS содержит массив, то при сохранении этот массив будет преобразован в список DS.

-

ВАЖНО! Одной из особенностей безопасного сохраненного файла является то, что он блокируется на устройстве, на котором был создан, поэтому вы не можете загрузить файл, сохраненный на одном устройстве, в проект, запущенный на другом устройстве.

-

-

Синтаксис:

-

ds_map_secure_save(map, filename);

- - - - - - - - - - - - - - - -
АргументТипОписание
mapThe id of the data structure to use
filenameThe name of the file to save the map to
-

-

Возвращается:

-

-

-

Пример:

-

ds_map_secure_save(purchase_map, "p_data.dat");

-

Приведенный выше код сохранит карту DS, индексированную в переменной "p_data", в заданный файл для последующего извлечения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_secure_save_buffer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_secure_save_buffer.htm index cdbeab6cc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_secure_save_buffer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_secure_save_buffer.htm @@ -1,74 +0,0 @@ - - - - - - ds_map_secure_save_buffer - - - - - - - - - - -

ds_map_secure_save_buffer

-

Эта функция сохраняет ранее созданную карту DS в буфер. Вы передаете значение ID карты DS (возвращаемое функцией ds_map_create()) и идентификатор буфера для записи (возвращаемый функцией buffer_create()). Обратите внимание, что если сохраняемая DS-карта содержит массив, то при сохранении он будет преобразован в DS-список.

-

ВАЖНО! Защищенный сохраненный файл карты DS можно загрузить только на то устройство, которое его создало, и если вы попытаетесь загрузить файл, сохраненный на другом устройстве, то он не будет работать.

-

ПРИМЕЧАНИЕ: Эта функция не поддерживается на HTML5 и UWP.

-

-

Синтаксис:

-

ds_map_secure_save_buffer(filename);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор карты DSThe DS map ID value.
bufferИдентификатор буфераThe buffer to save to.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

buff = buffer_create(128,buffer_grow,4);
- var map = ds_map_create();
- ds_map_add(map,"bob","ajob");
- ds_map_add(map,"money",10);
- ds_map_secure_save_buffer(map, buff);
- ds_map_destroy(map);

-

Приведенный выше код создаст буфер и карту DS, затем заполнит карту некоторыми значениями и запишет их в буфер перед удалением карты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_set.htm index 5a014d0aa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_set.htm @@ -1,70 +0,0 @@ - - - - - - ds_map_set - - - - - - - - - - -

ds_map_set

-

С помощью этой функции вы можете установить значение ключа в заданной карте DS. Вы передаете значение ID карты DS (возвращаемое функцией ds_map_create()), затем указываете ключ, который вы хотите установить, и значение, которое нужно установить. Ключи могут быть целыми числами или строками, и если заданный ключ не существует, то он будет создан для вас и установлен в значение. Эта функция аналогична использованию аксессора DS map для установки/создания пары ключ/значение карты. Функция ничего не возвращает, поэтому если вам нужно проверить, было ли заменено значение ключа или создан новый ключ, используйте функцию ds_map_replace().

-

-

Синтаксис:

-

ds_map_set(id, key, value)

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the map to use.
keyThe key to set.
valueThe value to set the key to.
-

-

Возвращается:

-

-

-

Пример:

-

if is_undefined(ds_map_find_value(map, "score"))
- {
-     ds_map_set(map, "score", 0);
- }

-

Приведенный выше код проверит, существует ли заданный ключ, и если нет, то он будет создан и установлен.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_size.htm index 47ef3688c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_size.htm @@ -1,64 +0,0 @@ - - - - - - ds_map_size - - - - - - - - - - - -

ds_map_size

-

С помощью этой функции вы можете узнать, сколько пар ключ/значение содержит (ранее созданная) карта DS.

-

-

Синтаксис:

-

ds_map_size(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to check.
-

-

Возвращается:

-

-

-

Пример:

-

if (ds_map_size(inventory) > 49)
- {
-     full = true;
- }

-

Приведенный выше код проверит размер карты DS (т.е. количество пар ключ/значение) и, если он больше 49, установит переменную "full" в значение true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_values_to_array.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_values_to_array.htm index cb2cd9bc7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_values_to_array.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_values_to_array.htm @@ -1,78 +0,0 @@ - - - - - - ds_map_values_to_array - - - - - - - - - - - -

ds_map_values_to_array

-

С помощью этой функции вы можете получить все значения, которые содержит карта DS для каждого ключа в карте. Вы указываете ID карты DS, из которой нужно получить ключи (как возвращается функцией ds_map_create()), и функция вернет массив, где каждая запись в массиве - это значение из карты DS (например, если карта имеет 10 ключей, то будет возвращен массив из 10 записей, каждая из которых соответствует значению ключа). Функция имеет необязательный второй аргумент, в котором вы можете указать созданный вами массив, в этом случае данные о значении ключа карты будут добавлены ко всем существующим данным в массиве. Обратите внимание, что функция изменяет непосредственно массив, но также возвращает ссылку на него (или ссылку на новый массив, если он не указан).

-

-

Синтаксис:

-

ds_map_values_to_array(id, [array])

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор карты DSThe id of the map to use.
[array]МассивOPTIONAL Массив для добавления значений карты DS.
-

-

Возвращается:

-

Array

-

-

Пример:

-

var _values = ds_map_values_to_array(lvl_score);
- var _total = 0;
- var _length = array_length(_values);
-
- for (var i = 0; i < _length; i ++)
- {
-     _total += _values[i];
- }
-
- draw_text(32, 32, "Total score for all levels: " + string(_total)); -

-

Приведенная выше команда извлекает все значения из карты DS для каждого ключа в карте и сохраняет их в локальной переменной в виде массива. Затем выполняется циклический просмотр массива и добавление каждого значения в локальную переменную, которая затем используется для отображения общей суммы всех значений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_write.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_write.htm index 5d47bb756..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_write.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Maps/ds_map_write.htm @@ -1,64 +0,0 @@ - - - - - - ds_map_write - - - - - - - - - - - - -

ds_map_write

-

Эта функция преобразует данные карты DS указанной карты в строковый формат, который затем может быть записан в файл *.ini или *.txt для удобства хранения. Эта строка может быть позже считана обратно в новую ds_map с помощью функции ds_map_read().

-

ПРИМЕЧАНИЕ: Возвращаемая строка не является человекочитаемой строкой, а скорее дампом содержимого структуры данных.

-

-

Синтаксис:

-

ds_map_write(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to use
-

-

Возвращается:

-

-

-

Пример:

-

ini_open("map.ini");
var t_string;
t_string = ds_map_write(inventory);
ini_write_string("Saved", "0", t_string);
ini_close(); -

-

Приведенный выше код открывает ini-файл, готовый к записи. Затем он использует ds_map_write() для генерации строки, которая сохраняется во временной переменной "t_string". Наконец, он записывает эту строку в ini файл, после чего закрывает его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/DS_Priority_Queues.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/DS_Priority_Queues.htm index b7b03dd70..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/DS_Priority_Queues.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/DS_Priority_Queues.htm @@ -1,59 +0,0 @@ - - - - - - Очереди приоритетов DS - - - - - - - - - - -

Очереди приоритетов DS

-

Очередь приоритетов DS - это специальная структура данных, похожая на очередь приоритетов. DS queueтолько здесь очередь значений упорядочена по приоритетам (всегда вещественные числа), которые были присвоены значениям. Эта структура может быть очень полезна для построения таблиц лидеров или информационных списков, где важность каждой записи может быть взвешена.

-

ПРИМЕЧАНИЕ: Как и все динамические ресурсы, структуры данных занимают память, поэтому их всегда следует уничтожать, когда они больше не нужны, чтобы предотвратить утечку памяти, которая замедлит и в конечном итоге приведет к краху вашей игры.

-

ПРИМЕЧАНИЕ: Если вам нужно проверить, существует ли структура данных, вы можете использовать функцию ds_exists() функцию.

-

Существуют следующие функции, работающие с очередями приоритетов DS:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_add.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_add.htm index 9dcfd13f3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_add.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_add.htm @@ -1,72 +0,0 @@ - - - - - - ds_priority_add - - - - - - - - - - -

ds_priority_add

-

С помощью этой функции вы можете добавить значение (вещественное число или строку) в очередь приоритетов, одновременно присвоив ему значение приоритета.

-

-

Синтаксис:

-

ds_priority_add(id, val, priority);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор приоритета DSThe id of the priority queue to add to.
valПеременнаяThe value to add to the priority queue.
priorityРеальноThe priority of the value to add.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

ds_priority_add(ai_priority, AI_Search, 5);

-

Приведенный выше код добавляет функцию сценария в очередь приоритетов, указанную в переменной "ai_priority", и присваивает ей приоритет 5.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_change_priority.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_change_priority.htm index ec29503b4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_change_priority.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_change_priority.htm @@ -1,75 +0,0 @@ - - - - - - ds_priority_change_priority - - - - - - - - - - -

ds_priority_change_priority

-

Эта функция принимает заданное значение и изменяет его приоритет в указанной очереди приоритетов. Заданное значение должно уже существовать в очереди приоритетов.

-

-

Синтаксис:

-

ds_priority_change_priority(id, val, priority);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор приоритета DSThe id of the priority queue to change.
valПеременнаяThe value to change the priority of.
priorityРеальноThe new priority of the value.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (global.Game_Time < 1000)
- {
-     ds_priority_change(ai_priority, AI_Search, 1);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_clear.htm index 135ea83ed..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_clear.htm @@ -1,65 +0,0 @@ - - - - - - ds_priority_clear - - - - - - - - - - -

ds_priority_clear

-

С помощью этой функции вы можете очистить все данные из заданной структуры данных очереди приоритетов. Это НЕ уничтожает структуру данных (для этого вы должны использовать функцию ds_priority_destroy()), а только стирает все данные из нее и возвращает пустую очередь приоритетов.

-

-

Синтаксис:

-

ds_priority_clear(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to clear.
-

-

Возвращается:

-

-

-

Пример:

-

if (count = 15) && (!ds_priority_empty(command_queue))
- {
-     ds_priority_clear(command_queue);
-     alarm[0] = room_speed;
-     ai_count = 0;
- }

-

Приведенный выше код проверяет переменную, достигла ли она определенного значения, и если достигла, то очищает очередь приоритетов DS, указанную в переменной "command_queue", устанавливает сигнал тревоги и сбрасывает переменную в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_copy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_copy.htm index da717d4da..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_copy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_copy.htm @@ -1,68 +0,0 @@ - - - - - - ds_priority_copy - - - - - - - - - - -

ds_priority_copy

-

Эта функция может быть использована для копирования содержимого одной очереди приоритетов в другую. Обратите внимание, что при этом НЕ удаляется содержимое исходной очереди приоритетов и не уничтожается исходная очередь приоритетов. При использовании этой функции очередь приоритетов, в которую производится копирование, должна быть создана ранее, и если она содержала какие-либо элементы до копирования, то они будут очищены первыми (то есть информация будет потеряна).

-

-

Синтаксис:

-

ds_priority_copy(id, source);

- - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the priority queue to copy to.
sourceThe id of the priority queue to copy from.
-

-

Возвращается:

-

-

-

Пример:

-

with (instance_create_layer(x, y, "Enemies", obj_Enemy))
- {
-     p_queue = ds_priority_create();
-     ds_priority_copy(p_queue, other.p_queue);
- }

-

Приведенная выше функция создает новый экземпляр, а затем в этом экземпляре создает новую очередь приоритетов DS и копирует содержимое очереди приоритетов в экземпляре, выполняющем блок кода, во вновь созданную очередь приоритетов экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_create.htm index bc4e3dbdc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_create.htm @@ -1,50 +0,0 @@ - - - - - - ds_priority_create - - - - - - - - - - - -

ds_priority_create

-

Эта функция создает новую структуру данных очереди приоритетов и возвращает значение индекса. Это значение должно храниться в переменной и использоваться во всех дальнейших вызовах функций, связанных с очередью приоритетов.

-

ВАЖНО! Когда вы создаете структуру данных, значение индекса для ее идентификации является целым числом, начинающимся с 0. Это означает, что структуры данных разных типов могут иметь одинаковое значение индекса, поэтому, если вы сомневаетесь, следует использовать функцию ds_exists() функцию перед обращением к ним. Также обратите внимание, что индексы используются повторно, поэтому значение индекса уничтоженной структуры данных может быть использовано впоследствии вновь созданной.

-

-

Синтаксис:

-

ds_priority_create();

-

-

Возвращается:

-

DS Priority ID

-

-

Пример:

-

p_queue = ds_priority_create();

-

Это создаст новую приоритетную очередь и присвоит ее индексный идентификатор переменной экземпляра "p_queue".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_delete_max.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_delete_max.htm index e6cac05fc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_delete_max.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_delete_max.htm @@ -1,64 +0,0 @@ - - - - - - ds_priority_delete_max - - - - - - - - - - - -

ds_priority_delete_max

-

Эта функция вернет значение, имеющее наивысший приоритет в очереди, а затем удалит это значение (и приоритет) из структуры данных. Если более одного значения имеют одинаковый приоритет, то любое из них может быть возвращено в любом порядке, но все остальные значения с тем же приоритетом все еще будут находиться в очереди.

-

-

Синтаксис:

-

ds_priority_delete_max(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the priority queue to use.
-

-

Возвращается:

-

(Data type stored in the priority)

-

-

Пример:

-

if ai_move
- {
-     script_execute(ds_priority_delete_max(ai_priority));
- }

-

Приведенный выше код проверяет переменную экземпляра, и если она возвращает значение true, то выполняется скрипт, проиндексированный в очереди приоритетов с наивысшим значением приоритета, а затем удаляет этот скрипт из очереди.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_delete_min.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_delete_min.htm index 5b95f492d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_delete_min.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_delete_min.htm @@ -1,64 +0,0 @@ - - - - - - ds_priority_delete_min - - - - - - - - - - - -

ds_priority_delete_min

-

Эта функция вернет значение, имеющее наименьший приоритет в очереди, а затем удалит это значение (и приоритет) из структуры данных. Если более одного значения имеют одинаковый приоритет, то любое из них может быть возвращено в любом порядке, но все остальные значения с тем же приоритетом все еще будут находиться в очереди.

-

-

Синтаксис:

-

ds_priority_delete_min(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the priority queue to use.
-

-

Возвращается:

-

(Data type stored in the priority)

-

-

Пример:

-

if ai_move
- {
-     script_execute(ds_priority_delete_min(ai_priority));
- }

-

Приведенный выше код проверяет переменную экземпляра и, если она возвращает значение true, выполняет функцию сценария, проиндексированную в очереди приоритетов с наименьшим значением приоритета, а затем удаляет этот сценарий из очереди.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_delete_value.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_delete_value.htm index 65e0e71bb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_delete_value.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_delete_value.htm @@ -1,67 +0,0 @@ - - - - - - ds_priority_delete_value - - - - - - - - - - -

ds_priority_delete_value

-

Эта функция просто удалит заданное значение вместе с его приоритетом из индексированной очереди приоритетов.

-

-

Синтаксис:

-

ds_priority_delete_value(id,val);

- - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the priority queue to use.
valThe value to delete from the priority queue.
-

-

Возвращается:

-

-

-

Пример:

-

if (ai_move == false)
- {
-     ds_priority_delete_value(ai_priority, AI_Move);
- }

-

Приведенный выше код проверяет переменную экземпляра и, если она возвращает false, то удаляет индексированную функцию сценария из очереди приоритетов.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_destroy.htm index ccead7899..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_destroy.htm @@ -1,66 +0,0 @@ - - - - - - ds_priority_destroy - - - - - - - - - - -

ds_priority_destroy

-

Эта функция удаляет из памяти заданную структуру данных очереди приоритетов, освобождая ресурсы, которые она использовала, и удаляя все содержащиеся в ней значения. Эту функцию всегда следует использовать, когда вы закончили использовать очередь приоритетов DS, чтобы предотвратить утечку памяти, которая может замедлить работу и привести к краху вашей игры.

-

ВАЖНО! Когда вы создаете структуру данных, значение индекса для ее идентификации является целочисленным значением, начинающимся с 0. Это означает, что структуры данных разных типов могут иметь одинаковое значение индекса, поэтому, если вы сомневаетесь, следует использовать функцию ds_exists() функцию перед обращением к ним. Также обратите внимание, что индексы используются повторно, поэтому значение индекса уничтоженной структуры данных может быть использовано вновь созданной, поэтому мы рекомендуем после уничтожения всегда устанавливать переменную, в которой хранился индекс DS, в -1.

-

-

Синтаксис:

-

ds_priority_destroy(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to remove.
-

-

Возвращается:

-

-

-

Пример:

-

if (lives == 0)
- {
-     ds_priority_destroy(AI_queue);
-     AI_queue = -1;
-     room_goto(rm_Menu);
- }

-

Приведенный выше код проверит значение встроенной глобальной переменной "lives", и если оно равно 0, то уничтожит приоритетную очередь DS, индексированную в переменной "AI_queue", а затем сменит комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_empty.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_empty.htm index 73e210f01..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_empty.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_empty.htm @@ -1,66 +0,0 @@ - - - - - - ds_priority_empty - - - - - - - - - - - -

ds_priority_empty

-

С помощью этой функции вы можете проверить заданную очередь приоритетов DS на предмет того, пуста она (возвращается true) или нет (возвращается false).

-

-

Синтаксис:

-

ds_priority_empty(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to check.
-

-

Возвращается:

-

-

-

Пример:

-

if (count == 15) && (!ds_priority_empty(command_queue))
- {
-     ds_priority_clear(command_queue);
-     alarm[0] = room_speed;
-     ai_count = 0;
- }

-

Приведенный выше код проверяет переменную, достигла ли она определенного значения, и если достигла, то очищает очередь приоритетов DS, указанную в переменной "command_queue", устанавливает сигнал тревоги и сбрасывает переменную в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_find_max.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_find_max.htm index 76a633a15..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_find_max.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_find_max.htm @@ -1,64 +0,0 @@ - - - - - - ds_priority_find_max - - - - - - - - - - - -

ds_priority_find_max

-

С помощью этой функции вы можете найти значение, хранящееся в очереди приоритетов с наивысшим приоритетом, а если несколько значений имеют одинаковый приоритет, то любое из них может быть возвращено в любом порядке. Однако, в отличие от ds_priority_delete_max()эта функция не удаляет значение из очереди.

-

-

Синтаксис:

-

ds_priority_find_max(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the priority queue to use.
-

-

Возвращается:

-

Real or String

-

-

Пример:

-

if ai_move
- {
-     script_execute(ds_priority_find_max(ai_priority));
- }

-

Приведенный выше код проверяет переменную экземпляра, и если она возвращает значение true, то выполняется функция сценария, проиндексированная в очереди приоритетов с наивысшим значением приоритета.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_find_min.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_find_min.htm index 0c8861236..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_find_min.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_find_min.htm @@ -1,64 +0,0 @@ - - - - - - ds_priority_find_min - - - - - - - - - - - -

ds_priority_find_min

-

С помощью этой функции можно найти значение, хранящееся в очереди приоритетов с наименьшим приоритетом, а если несколько значений имеют одинаковый приоритет, то любое из них может быть возвращено в любом порядке. Однако, в отличие от ds_priority_delete_min()эта функция не удаляет значение из очереди.

-

-

Синтаксис:

-

ds_priority_find_min(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the priority queue to use.
-

-

Возвращается:

-

Real or String

-

-

Пример:

-

if ai_move
- {
-     script_execute(ds_priority_find_min(ai_priority));
- }

-

Приведенный выше код проверяет переменную экземпляра, и если она возвращает значение true, то выполняется функция сценария, проиндексированная в очереди приоритетов с наименьшим значением приоритета.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_find_priority.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_find_priority.htm index 06fac89a8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_find_priority.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_find_priority.htm @@ -1,66 +0,0 @@ - - - - - - ds_priority_find_priority - - - - - - - - - - - -

ds_priority_find_priority

-

С помощью этой функции вы можете получить приоритет любого заданного значения. Если значение не существует в очереди приоритетов, то будет возвращено undefined.

-

-

Синтаксис:

-

ds_priority_find_priority(id, val);

- - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the priority queue to use.
valThe value to find the priority of.
-

-

Возвращается:

-

Real or undefined

-

-

-

-

Пример:

-

p = ds_priority_find_priority(ai_priority, "intelligence");

-

Приведенный выше код будет хранить возвращенный приоритет для заданного значения в переменной экземпляра "p".

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_read.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_read.htm index 1a16f4865..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_read.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_read.htm @@ -1,80 +0,0 @@ - - - - - - ds_priority_read - - - - - - - - - - -

ds_priority_read

-

С помощью этой функции вы можете воссоздать сохраненный приоритет DS (тот, который ранее был записан в виде строки с помощью функции ds_priority_write()). Вы должны сначала создать новый приоритет DS для чтения строки, и если приоритет DS уже существует и в нем сохранена информация, то она будет очищена перед чтением. Эта функция имеет жизненно важное значение при создании механизмов сохранения/загрузки для вашей игры.

-

Обратите внимание, что если указанная строка DS была написана в среде GameMaker: Studio 1.2.x (или старше), следует указать дополнительный аргумент "legacy", установив его в значение true, поскольку после этого формат строки изменился.

-

-

Синтаксис:

-

ds_priority_read(id, str, [legacy]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор приоритета DSThe id of the data structure to write.
strСтрокаThe string to read from.
legacyБулевоOPTIONAL Может быть либо true, либо false, либо полностью отсутствовать.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

p_queue = ds_priority_create();
- ini_open("save.ini");
- var str = ini_read_string("P_Queues", "0", "");
- if (str != "")
- {
-     ds_priority_read(p_queue, str);
- }
- ini_close();

-

Приведенный выше код создает приоритетную очередь и сохраняет индекс в переменной "p_queue". Затем он открывает файл ini и считывает из него строку, проверяя, что сначала строка не возвращается пустой. Затем эта строка считывается во вновь созданный приоритет DS.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_size.htm index 5e3bdb994..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_size.htm @@ -1,64 +0,0 @@ - - - - - - ds_priority_size - - - - - - - - - - - -

ds_priority_size

-

Эта функция возвращает "размер" очереди приоритетов, т.е. количество элементов, которые были в ней приоритезированы.

-

-

Синтаксис:

-

ds_priority_size(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to check.
-

-

Возвращается:

-

-

-

Пример:

-

if !ds_priority_empty(control_priority)
- {
-     num = ds_priority_size(control_priority);
- }

-

Приведенный выше код проверяет очередь приоритета DS на то, пуста она или нет, и если нет, то получает количество элементов, которые она содержит, и сохраняет это значение в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_write.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_write.htm index fda5b807c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_write.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Priority_Queues/ds_priority_write.htm @@ -1,66 +0,0 @@ - - - - - - ds_priority_write - - - - - - - - - - - -

ds_priority_write

-

Эта функция возвращает строку, которая затем может быть сохранена или передана в другую структуру данных с помощью функции ds_priority_read() функцию.

-

ПРИМЕЧАНИЕ: Возвращаемая строка не является человекочитаемой строкой, а скорее дампом содержимого структуры данных.

-

-

Синтаксис:

-

ds_priority_write(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to check.
-

-

Возвращается:

-

-

-

Пример:

-

var str;
- ini_open("save.ini");
- str = ds_priority_write(p_queue);
- ini_write_string("P_Queues", "0", str);
- ds_priority_clear(p_queue);
- ini_close();

-

Приведенный выше код открывает ini-файл, а затем записывает строку, содержащую информацию, хранящуюся в очереди приоритетов DS, проиндексированной в переменной "p_queue". Затем очередь приоритетов очищается, а ini-файл закрывается.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/DS_Queues.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/DS_Queues.htm index bf6c7334f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/DS_Queues.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/DS_Queues.htm @@ -1,55 +0,0 @@ - - - - - - Очереди DS - - - - - - - - - - -

Очереди DS

-

Очередь DS в некоторой степени похожа на стек DS, но работает по принципу "первым пришел - первым ушел" (FIFO). Значение, которое первым помещается в очередь, также первым из нее удаляется. Можно представить это как очередь в магазине для оплаты, где человек, стоящий первым в очереди, сначала платит, а затем покидает магазин. Очереди обычно используются для хранения действий или поведения (например, в виде сценариев), которые еще должны быть выполнены экземпляром, но есть и множество других применений.

-

ПРИМЕЧАНИЕ: Как и все динамические ресурсы, структуры данных занимают память, поэтому их всегда следует уничтожать, когда они больше не нужны, чтобы предотвратить утечку памяти, которая замедлит и в конечном итоге приведет к краху вашей игры.

-

ПРИМЕЧАНИЕ: если вам нужно проверить, существует ли структура данных, вы можете использовать функцию ds_exists() функцию.

-

Существуют следующие функции, работающие с очередями DS:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_clear.htm index f55ad91b3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_clear.htm @@ -1,65 +0,0 @@ - - - - - - ds_queue_clear - - - - - - - - - - -

ds_queue_clear

-

С помощью этой функции вы можете очистить все данные из заданной структуры данных очереди. Это НЕ уничтожает структуру данных (для этого вы должны использовать функцию ds_queue_destroy()), а только стирает все данные из нее и возвращает пустую очередь.

-

-

Синтаксис:

-

ds_queue_clear(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to clear.
-

-

Возвращается:

-

-

-

Пример:

-

if (count = 15) && (!ds_queue_empty(command_queue))
- {
-     ds_queue_clear(command_queue);
-     alarm[0] = room_speed;
-     ai_count = 0;
- }

-

Приведенный выше код проверяет переменную, достигла ли она определенного значения, и если достигла, то очищает очередь DS, указанную в переменной "command_queue", устанавливает сигнал тревоги и сбрасывает переменную в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_copy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_copy.htm index 931854168..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_copy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_copy.htm @@ -1,71 +0,0 @@ - - - - - - ds_queue_copy - - - - - - - - - - -

ds_queue_copy

-

Эта функция может быть использована для копирования содержимого одной очереди в другую. Обратите внимание, что при этом НЕ удаляется содержимое исходной очереди и не уничтожается исходная очередь. При использовании этой функции очередь, в которую копируется содержимое, должна быть создана ранее, и если она содержала какие-либо элементы до копирования, то они будут очищены первыми (то есть информация будет потеряна).

-

-

Синтаксис:

-

ds_queue_copy(id, source);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор очереди DSThe id of the new queue.
sourceИдентификатор очереди DSThe original queue to copy from.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

with (instance_create_layer(x, y, "Enemies", obj_Enemy))
- {
-     queue = ds_queue_create();
-     ds_queue_copy(queue, other.queue);
- }

-

Приведенная выше функция создает новый экземпляр, а затем в этом экземпляре создает новую очередь DS и копирует содержимое очереди в экземпляре, выполняющем блок кода, во вновь созданную очередь экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_create.htm index f8e18443e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_create.htm @@ -1,50 +0,0 @@ - - - - - - ds_queue_create - - - - - - - - - - - -

ds_queue_create

-

Эта функция создает новую структуру данных очереди и возвращает значение индекса. Это значение должно храниться в переменной и использоваться во всех дальнейших вызовах функций, связанных с очередью.

-

ВАЖНО! Когда вы создаете структуру данных, значение индекса для ее идентификации является целым числом, начинающимся с 0. Это означает, что структуры данных разных типов могут иметь одинаковое значение индекса, поэтому, если вы сомневаетесь, следует использовать функцию ds_exists() функцию перед обращением к ним. Также обратите внимание, что индексы используются повторно, поэтому значение индекса уничтоженной структуры данных может быть использовано впоследствии вновь созданной.

-

-

Синтаксис:

-

ds_queue_create();

-

-

Возвращается:

-

DS Queue ID

-

-

Пример:

-

queue = ds_queue_create();

-

Это создаст новую очередь и присвоит ее индекс id переменной экземпляра "queue".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_dequeue.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_dequeue.htm index 048a67149..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_dequeue.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_dequeue.htm @@ -1,66 +0,0 @@ - - - - - - ds_queue_dequeue - - - - - - - - - - -

ds_queue_dequeue

-

Эта функция удаляет головное значение из очереди DS, удаляет его из очереди и возвращает значение для хранения в переменной. Если очередь пуста, то функция возвращает константу undefined, в противном случае возвращается значение, содержащееся в очереди.

-

-

Синтаксис:

-

ds_queue_dequeue(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the queue to dequeue from.
-

-

-

Возвращается:

-

Variable (Data type value stored in the queue) or undefined

-

-

Пример:

-

if !ds_queue_empty(move_queue)
- {
-     var xx = ds_queue_dequeue(move_queue);
-     var yy = ds_queue_dequeue(move_queue);
-     move_towards_point(xx, yy, 4);
- }

-

Приведенный выше код проверяет очередь DS, указанную в переменной "move_queue", на то, пуста ли она, и если нет, то декеузирует два значения из головы очереди и использует их для задания направления движения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_destroy.htm index b430668f5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_destroy.htm @@ -1,66 +0,0 @@ - - - - - - ds_queue_destroy - - - - - - - - - - -

ds_queue_destroy

-

Эта функция удалит заданную структуру данных очереди из памяти, освободив используемые ею ресурсы и удалив все содержащиеся в ней значения. Эту функцию всегда следует использовать, когда вы закончили использовать очередь DS, чтобы предотвратить утечку памяти, которая может замедлить работу и привести к краху вашей игры.

-

ВАЖНО! Когда вы создаете структуру данных, значение индекса для ее идентификации является целым числом, начинающимся с 0. Это означает, что структуры данных разных типов могут иметь одинаковое значение индекса, поэтому, если вы сомневаетесь, следует использовать функцию ds_exists() функцию перед обращением к ним. Также обратите внимание, что индексы используются повторно, поэтому значение индекса уничтоженной структуры данных может быть использовано вновь созданной, поэтому мы рекомендуем после уничтожения всегда устанавливать переменную, в которой хранился индекс DS, в -1.

-

-

Синтаксис:

-

ds_queue_destroy(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to remove.
-

-

Возвращается:

-

-

-

Пример:

-

if (lives == 0)
- {
-     ds_queue_destroy(AI_queue);
-     AI_queue = -1;
-     room_goto(rm_Menu);
- }

-

Приведенный выше код проверит значение встроенной глобальной переменной "lives" и, если оно равно 0, уничтожит очередь DS, индексированную в переменной "AI_queue", а затем сменит комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_empty.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_empty.htm index 077f8ac1b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_empty.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_empty.htm @@ -1,66 +0,0 @@ - - - - - - ds_queue_empty - - - - - - - - - - - -

ds_queue_empty

-

С помощью этой функции вы можете проверить заданную очередь DS на предмет того, пуста она (возвращается true) или нет (возвращается false).

-

-

Синтаксис:

-

ds_queue_empty(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to check.
-

-

Возвращается:

-

-

-

Пример:

-

if (count == 15) && (!ds_queue_empty(command_queue))
- {
-     ds_queue_clear(command_queue);
-     alarm[0] = room_speed;
-     ai_count = 0;
- }

-

Приведенный выше код проверяет переменную, достигла ли она определенного значения, и если достигла, то очищает очередь DS, указанную в переменной "command_queue", устанавливает сигнал тревоги и сбрасывает переменную в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_enqueue.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_enqueue.htm index a06149232..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_enqueue.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_enqueue.htm @@ -1,70 +0,0 @@ - - - - - ds_queue_enqueue - - - - - - - - - - - -

ds_queue_enqueue

-

Эта функция добавляет значение (вещественное или строковое) в хвост очереди DS. Функция может принимать еще 14 необязательных аргументов (всего 15 возможных добавлений), что позволяет добавлять несколько значений - последовательно в хвост очереди за один вызов.

-

-

Синтаксис:

-

ds_queue_enqueue(id, val [, val2, ... val15]);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the queue to add to.
valThe value to add to the queue.
[val2, ... val15]Optional values to be added to the queue.
-

-

Возвращается:

-

-

-

Пример:

-

move_queue = ds_queue_create();
ds_queue_enqueue(move_queue, x + 200);
ds_queue_enqueue(move_queue, y);
ds_queue_enqueue(move_queue, x + 200);
ds_queue_enqueue(move_queue, y + 200);
ds_queue_enqueue(move_queue, x);
ds_queue_enqueue(move_queue, - y + 200);
ds_queue_enqueue(move_queue, x);
ds_queue_enqueue(move_queue, y);

-

Приведенный выше код создает новую очередь DS и сохраняет ее индекс в переменной "move_queue". Затем он помещает несколько значений в очередь для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_head.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_head.htm index aca569a70..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_head.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_head.htm @@ -1,61 +0,0 @@ - - - - - - ds_queue_head - - - - - - - - - - - -

ds_queue_head

-

Эта функция считывает только первое значение очереди (то, которое находится "в голове"). Она не снимает очередь с этого значения, что означает, что оно все еще может быть прочитано в будущем этой функцией или функцией ds_queue_dequeue(). Если очередь пуста, то функция вернет константу undefined, в противном случае она вернет вещественное или строковое значение, содержащееся в очереди.

-

-

Синтаксис:

-

ds_queue_head(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to read from.
-

-

Возвращается:

-

(Data type value stored in the queue)

-

-

Пример:

-

num = ds_queue_head(control_queue);

-

Приведенный выше код прочитает значение из очереди, проиндексированной в переменной "control_queue", и сохранит возвращаемое значение в переменной "num".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_read.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_read.htm index 82fe76d5c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_read.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_read.htm @@ -1,80 +0,0 @@ - - - - - - ds_queue_read - - - - - - - - - - -

ds_queue_read

-

С помощью этой функции можно воссоздать сохраненную очередь DS (ту, которая ранее была записана в виде строки с помощью функции ds_queue_write()). Сначала вы должны создать новую очередь DS для чтения строки, и если очередь DS уже существует и в ней сохранена информация, то она будет очищена перед чтением. Эта функция имеет жизненно важное значение при создании механизмов сохранения/загрузки для вашей игры.

-

Обратите внимание, что если указанная строка DS была написана в среде GameMaker: Studio 1.2.x (или старше), следует указать дополнительный аргумент "legacy", установив его в значение true, поскольку после этого формат строки изменился.

-

-

Синтаксис:

-

ds_queue_read(id, str [, legacy]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор очереди DSThe id of the data structure to read into.
strСтрокаThe string to read from.
legacyБулевоOPTIONAL Может быть либо true, либо false, либо полностью опущен.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

queue = ds_queue_create();
- ini_open("save.ini");
- var str = ini_read_string("Queues", "0", "");
- if (str != "")
- {
-     ds_queue_read(queue, str);
- }
- ini_close();

-

Приведенный выше код создает очередь и сохраняет индекс в переменной "queue". Затем он открывает файл ini и считывает из него строку, проверяя, что сначала строка не возвращается пустой. Затем эта строка считывается в только что созданную очередь DS.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_size.htm index 4e4e41243..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_size.htm @@ -1,64 +0,0 @@ - - - - - - ds_queue_size - - - - - - - - - - - -

ds_queue_size

-

Эта функция возвращает "размер" очереди, т.е. количество элементов, которые были поставлены в очередь.

-

-

Синтаксис:

-

ds_queue_size(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to check.
-

-

Возвращается:

-

-

-

Пример:

-

if !ds_queue_empty(control_queue)
- {
-     num = ds_queue_size(control_queue);
- }

-

Приведенный выше код проверяет очередь DS на то, пуста она или нет, и если нет, то получает количество элементов, которые она содержит, и сохраняет это значение в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_tail.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_tail.htm index 69e23bd9a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_tail.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_tail.htm @@ -1,61 +0,0 @@ - - - - - - ds_queue_tail - - - - - - - - - - - -

ds_queue_tail

-

Эта функция считывает только последнее значение очереди (то, которое находится "в хвосте"). Она не удаляет значение из очереди, что означает, что оно все еще может быть прочитано в будущем этой функцией или функцией ds_queue_dequeue().

-

-

Синтаксис:

-

ds_queue_tail(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to read from.
-

-

Возвращается:

-

(Data type value stored in the queue)

-

-

Пример:

-

num = ds_queue_tail(control_queue);

-

Приведенный выше код прочитает значение из очереди, проиндексированной в переменной "control_queue", и сохранит возвращаемое значение в переменной "num".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_write.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_write.htm index bec44bfa0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_write.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Queues/ds_queue_write.htm @@ -1,65 +0,0 @@ - - - - - - ds_queue_write - - - - - - - - - - - - -

ds_queue_write

-

Эта функция возвращает строку, которая затем может быть сохранена или передана в другую структуру данных с помощью функции ds_queue_read() функцию.

-

ПРИМЕЧАНИЕ: Возвращаемая строка не является человекочитаемой строкой, а скорее дампом содержимого структуры данных.

-

-

Синтаксис:

-

ds_queue_write(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to write.
-

-

Возвращается:

-

-

-

Пример:

-

ini_open("save.ini");
var str =ds_queue_write(queue);
ini_write_string("Queues", "0", str);
ds_queue_clear(queue); -
ini_close(); -

-

Приведенный выше код открывает ini-файл, а затем записывает строку, содержащую информацию, хранящуюся в очереди DS, проиндексированной в переменной "queue". Затем очередь очищается, а ini-файл закрывается.

-

-

-

- - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/DS_Stacks.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/DS_Stacks.htm index 51d38a7a9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/DS_Stacks.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/DS_Stacks.htm @@ -1,54 +0,0 @@ - - - - - - DS Stacks - - - - - - - - - - -

DS Stacks

-

DS-стек - это так называемая структура данных "последний-первый-выход" (LIFO), подобная DS-очереди. Вы можете помещать значения в стек и затем удалять их, вынимая из стека, при этом значение, которое было помещено в стек последним, первым вынимается из стека (вспомните стопку монет, где каждая монета, которую вы добавляете, сначала должна быть вынута, прежде чем вы сможете добраться до остальных монет). Стеки часто используются при обработке прерываний, рекурсивных функций или даже при создании элементарного искусственного интеллекта для ваших игр.

-

ПРИМЕЧАНИЕ: Как и все динамические ресурсы, структуры данных занимают память, поэтому их всегда следует уничтожать, когда они больше не нужны, чтобы предотвратить утечку памяти, которая замедлит и в конечном итоге приведет к краху вашей игры.

-

ПРИМЕЧАНИЕ: Если вам нужно проверить, существует ли структура данных, вы можете использовать функцию ds_exists() функцию.

-

Существуют следующие функции, работающие со стеками DS:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_clear.htm index 9bad620b9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_clear.htm @@ -1,65 +0,0 @@ - - - - - - ds_stack_clear - - - - - - - - - - -

ds_stack_clear

-

С помощью этой функции вы можете очистить все данные из заданной структуры данных стека. Это НЕ уничтожает структуру данных (для этого вы должны использовать ds_stack_destroy()), а только стирает все данные из нее и возвращает пустой стек.

-

-

Синтаксис:

-

ds_stack_clear(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to clear.
-

-

Возвращается:

-

-

-

Пример:

-

if (ai_count = 15 && !ds_stack_empty(AI_stack))
- {
-     ds_stack_clear(AI_stack);
-     alarm[0] = room_speed;
-     ai_count = 0;
- }

-

Приведенный выше код проверяет переменную, достигла ли она определенного значения, и если достигла, то очищает стек DS, указанный в переменной "AI_stack", устанавливает сигнал тревоги и сбрасывает переменную в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_copy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_copy.htm index 6b8a3ef2d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_copy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_copy.htm @@ -1,71 +0,0 @@ - - - - - - ds_stack_copy - - - - - - - - - - -

ds_stack_copy

-

Эта функция может использоваться для копирования содержимого одного стека в другой. Обратите внимание, что это НЕ удаляет содержимое из исходного стека и не уничтожает его. При использовании этой функции стек, в который копируется содержимое, должен быть создан ранее, и если он содержал какие-либо элементы до копирования, то они будут очищены первыми (это означает, что информация будет потеряна).

-

-

Синтаксис:

-

ds_stack_copy(id, source);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор стека DSThe id of the new stack.
sourceИдентификатор стека DSThe original stack to copy from.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

with (instance_create_layer(x, y, "Enemies", obj_Enemy))
- {
-     stack = ds_stack_create();
-     ds_stack_copy(stack, other.stack);
- }

-

Приведенная выше функция создает новый экземпляр, а затем в этом экземпляре создает новый стек DS и копирует содержимое стека в экземпляре, выполняющем блок кода, во вновь созданный стек экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_create.htm index 5fb3d2e33..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_create.htm @@ -1,50 +0,0 @@ - - - - - - ds_stack_create - - - - - - - - - - - -

ds_stack_create

-

Эта функция создает новую структуру данных стека и возвращает значение индекса. Это значение должно храниться в переменной и использоваться во всех дальнейших вызовах функций, связанных со стеком.

-

ВАЖНО! Когда вы создаете структуру данных, значение индекса для ее идентификации является целочисленным значением, начинающимся с 0. Это означает, что структуры данных разных типов могут иметь одинаковое значение индекса, поэтому, если вы сомневаетесь, следует использовать функцию ds_exists() функцию перед обращением к ним. Также обратите внимание, что индексы используются повторно, поэтому значение индекса уничтоженной структуры данных может быть использовано впоследствии вновь созданной.

-

-

Синтаксис:

-

ds_stack_create();

-

-

Возвращается:

-

DS Stack ID

-

-

Пример:

-

stack = ds_stack_create();

-

Это создаст новый стек и присвоит его индекс id переменной экземпляра "stack".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_destroy.htm index 68525f424..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_destroy.htm @@ -1,66 +0,0 @@ - - - - - - ds_stack_destroy - - - - - - - - - - -

ds_stack_destroy

-

Эта функция удаляет заданную структуру данных стека из памяти, освобождая используемые ресурсы и удаляя все содержащиеся в ней значения. Эту функцию всегда следует использовать, когда вы закончили использовать стек DS, чтобы предотвратить утечку памяти, которая может замедлить работу и привести к краху вашей игры.

-

ВАЖНО! Когда вы создаете структуру данных, значение индекса для ее идентификации является целым числом, начинающимся с 0. Это означает, что структуры данных разных типов могут иметь одинаковое значение индекса, поэтому, если вы сомневаетесь, следует использовать функцию ds_exists() функцию перед обращением к ним. Также обратите внимание, что индексы используются повторно, поэтому значение индекса уничтоженной структуры данных может быть использовано вновь созданной, поэтому мы рекомендуем после уничтожения всегда устанавливать переменную, в которой хранился индекс DS, в -1.

-

-

Синтаксис:

-

ds_stack_destroy(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to remove.
-

-

Возвращается:

-

-

-

Пример:

-

if (lives == 0)
- {
-     ds_stack_destroy(AI_stack);
-     AI_stack = -1;
-     room_goto(rm_Menu);
- }

-

Приведенный выше код проверит значение встроенной глобальной переменной "lives" и, если оно равно 0, уничтожит стек DS, указанный в переменной "AI_stack", а затем сменит комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_empty.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_empty.htm index ef16d5680..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_empty.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_empty.htm @@ -1,66 +0,0 @@ - - - - - - ds_stack_empty - - - - - - - - - - - -

ds_stack_empty

-

С помощью этой функции вы можете проверить заданный стек DS на предмет того, пуст он (возвращается true) или нет (возвращается false).

-

-

Синтаксис:

-

ds_stack_empty(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to check.
-

-

Возвращается:

-

-

-

Пример:

-

if (ai_count == 15 && !ds_stack_empty(AI_stack))
- {
-     ds_stack_clear(AI_stack);
-     alarm[0] = room_speed;
-     ai_count = 0;
- }

-

Приведенный выше код проверяет переменную, достигла ли она определенного значения, и если достигла, то очищает стек DS, указанный в переменной "AI_stack", устанавливает сигнал тревоги и сбрасывает переменную в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_pop.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_pop.htm index 055d7c582..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_pop.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_pop.htm @@ -1,65 +0,0 @@ - - - - - - ds_stack_pop - - - - - - - - - - -

ds_stack_pop

-

Эта функция снимает верхнее значение со стека DS, удаляет его из стека и возвращает значение для хранения в переменной. Если стек пуст, то функция вернет константу undefined, в противном случае она вернет вещественное или строковое значение, содержащееся в стеке.

-

-

Синтаксис:

-

ds_stack_pop(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to pop from.
-

-

Возвращается:

-

Variable (Data type value that is stored in the stack) or undefined

-

-

Пример:

-

if !ds_stack_empty(move_stack)
- {
-     var xx = ds_stack_pop(move_stack);
-     var yy = ds_stack_pop(move_stack);
-     move_towards_point(xx, yy, 4);
- }

-

Приведенный выше код проверяет стек DS, указанный в переменной "move_stack", на то, пуст ли он, и если нет, то извлекает два верхних значения из стека и использует их для задания направления движения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_push.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_push.htm index bba583ebe..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_push.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_push.htm @@ -1,70 +0,0 @@ - - - - - - ds_stack_push - - - - - - - - - - - -

ds_stack_push

-

Эта функция заталкивает (добавляет) значение, которое может быть любого типа данных, на вершину стека. Функция может принимать еще 14 необязательных аргументов (всего 15 возможных добавлений), позволяя вам последовательно заталкивать несколько значений - в стек за один вызов.

-

-

Синтаксис:

-

ds_stack_push(id, val [, val2, ... val15]);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to push onto.
valThe value to push onto the stack.
[val2, ... val13]Optional values to be added to the stack.
-

-

Возвращается:

-

-

-

Пример:

-

move_stack = ds_stack_create();
ds_stack_push(move_stack, x, y, x, y + 200, x + 200, y + 200, x +200, y);

-

Приведенный выше код создает новый стек DS и сохраняет его индекс в переменной "move_stack". Затем он помещает несколько значений в стек для дальнейшего использования.

-

-

-

- - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_read.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_read.htm index f8b93c283..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_read.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_read.htm @@ -1,80 +0,0 @@ - - - - - - ds_stack_read - - - - - - - - - - -

ds_stack_read

-

С помощью этой функции можно воссоздать сохраненный DS-стек (тот, который ранее был записан в виде строки с помощью функции ds_stack_write()). Сначала необходимо создать новый DS-стек для чтения строки, и если DS-стек уже существует и в нем сохранена информация, то она будет очищена перед чтением. Эта функция имеет жизненно важное значение при создании механизмов сохранения/загрузки для вашей игры.

-

Обратите внимание, что если указанная строка DS была написана в среде GameMaker: Studio 1.2.x (или старше), следует указать дополнительный аргумент "legacy", установив его в значение true, поскольку после этого формат строки изменился.

-

-

Синтаксис:

-

ds_stack_read(id, str [, legacy]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор стека DSThe id of the data structure to read into.
strСтрокаThe string to read from.
legacyБулевоOPTIONAL Может быть либо true, либо false, либо полностью отсутствовать.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

stack = ds_stack_create();
- ini_open("save.ini");
- var str = ini_read_string("Stacks", "0", "");
- if (str != "")
- {
-     ds_stack_read(stack, str);
- }
- ini_close();

-

Приведенный выше код создает стек и сохраняет индекс в переменной "stack". Затем он открывает файл ini и считывает из него строку, проверяя, что сначала строка не возвращается пустой. Затем эта строка считывается во вновь созданный стек DS .

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_size.htm index de6696e4c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_size.htm @@ -1,64 +0,0 @@ - - - - - - ds_stack_size - - - - - - - - - - - -

ds_stack_size

-

Эта функция возвращает "размер" стека, т.е. количество элементов, которые были на него помещены.

-

-

Синтаксис:

-

ds_stack_size(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to check.
-

-

Возвращается:

-

-

-

Пример:

-

if !ds_stack_empty(control_stack)
- {
-     num = ds_stack_size(control_stack);
- }

-

Приведенный выше код проверяет стек DS на то, пуст он или нет, и если нет, то получает количество элементов, которые он содержит, и сохраняет это значение в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_top.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_top.htm index 5f4676b9a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_top.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_top.htm @@ -1,61 +0,0 @@ - - - - - - ds_stack_top - - - - - - - - - - - -

ds_stack_top

-

Эта функция считывает только первое значение стека (то, которое находится "сверху"). Она не вытаскивает значение, то есть оно может быть прочитано в будущем этой функцией или функцией ds_stack_pop(). Если стек пуст, то функция вернет константу undefined, в противном случае она вернет вещественное или строковое значение, содержащееся в стеке.

-

-

Синтаксис:

-

ds_stack_top(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to read from.
-

-

Возвращается:

-

Variable (Data type value that is stored in the stack) or undefined

-

-

Пример:

-

num = ds_stack_top(control_stack);

-

Приведенный выше код будет считывать значение из стека, индексированного в переменной "control_stack", и сохранять возвращаемое значение в переменной "num".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_write.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_write.htm index d19a1806e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_write.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/DS_Stacks/ds_stack_write.htm @@ -1,65 +0,0 @@ - - - - - - ds_stack_write - - - - - - - - - - - - -

ds_stack_write

-

Эта функция возвращает строку, которая затем может быть сохранена или передана в другую структуру данных с помощью функции ds_stack_read() функцию.

-

ПРИМЕЧАНИЕ: Возвращаемая строка не является человекочитаемой строкой, а скорее дампом содержимого структуры данных.

-

-

Синтаксис:

-

ds_stack_write(id);

- - - - - - - - - - - -
АргументТипОписание
idThe id of the data structure to write.
-

-

Возвращается:

-

-

-

Пример:

-

ini_open("save.ini");
var str = ds_stack_write(stack);
ini_write_string("Stacks", "0", str);
ds_stack_clear(stack); -
ini_close(); -

-

Приведенный выше код открывает ini-файл, а затем записывает строку, содержащую информацию, хранящуюся в стеке DS, индексированном в переменной "stack". Затем стек очищается, а ini-файл закрывается.

-

-

-

- - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/Data_Structures.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/Data_Structures.htm index 5f3281dcc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/Data_Structures.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/Data_Structures.htm @@ -1,61 +0,0 @@ - - - - - - Структуры данных - - - - - - - - - - -

Структуры данных

-

В играх часто требуется хранить информацию в точном и упорядоченном виде. Например, вам может понадобиться хранить списки предметов, которые несет человек, или сетку мест, которые еще нужно посетить. Сейчас для этого можно использовать массивы, но если вы хотите выполнить более сложные операции, например, сортировку данных или поиск определенного элемента, вам придется писать большие куски кода GML, который может быть медленным в исполнении, трудным в отладке и настоящей мукой!

-

Для решения этой проблемы в GameMaker имеется ряд встроенных структур данных, доступ к которым можно получить с помощью специальных функций. Существует шесть различных типов структур данных, каждый из которых имеет свои преимущества в зависимости от типа информации, которую вы хотите хранить, и от того, как вы хотите манипулировать ею в дальнейшем: стеки, очереди, списки, карты, очереди приоритетов и сетки.

-

ПРИМЕЧАНИЕ: Рекомендуется использовать массивы и структуры вместо списков и карт DS, так как они имеют схожие функции, проще в использовании и автоматически собирают мусор.

-

По сути, все структуры данных работают одинаково - вы создаете структуру данных и сохраняете значение ее индекса в переменной. Затем вы используете этот индекс для ссылки на структуру данных во всех последующих вызовах функций, которые могут выполнять операции над ней. Наконец, когда вы закончили, вы снова уничтожаете структуру данных, чтобы удалить ее из памяти. Вы можете использовать столько структур одновременно, сколько вам нужно, и все структуры могут хранить любой из доступных типов данных.

-

ПРИМЕЧАНИЕ Как и все динамические ресурсы, структуры данных занимают память, поэтому их всегда следует уничтожать, когда они больше не нужны, чтобы предотвратить утечку памяти, которая замедлит и в конечном итоге приведет к краху вашей игры.

-

Когда вы создаете структуру данных, значение индекса, используемое для ее идентификации, является целым числом, начинающимся с 0. Это означает, что разные структуры данных могут иметь одно и то же значение индекса, поэтому, если вы сомневаетесь, вам следует использовать функцию ds_exists функцию перед обращением к ним. Также обратите внимание, что индексы используются повторно, поэтому значение индекса уничтоженной структуры данных может быть использовано впоследствии вновь созданной, и мы рекомендуем после уничтожения структуры данных установить любую переменную, содержащую индекс DS, в -1.

-

Информацию о различных структурах данных можно найти в следующих разделах:

- -

-

Прежде чем использовать структуры данных в своей игре, вы также должны знать, что существуют определенные моменты, когда из-за ошибок округления вы можете получить не тот результат, который ожидали. Это можно решить, изменив точность DS с помощью следующей функции:

- -

-

Существует также специальная функция для проверки существования структуры данных любого заданного типа:

- -

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/ds_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/ds_exists.htm index e18c8e8db..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/ds_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/ds_exists.htm @@ -1,122 +0,0 @@ - - - - - - ds_exists - - - - - - - - - - - -

ds_exists

-

С помощью этой функции вы можете проверить, существует ли структура данных заданного типа. Вы передаете значение "index" (хранящееся в переменной) и "тип" DS, который может быть любой из перечисленных ниже констант, и функция возвращает true, если структура данных существует, и false в противном случае.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип DS Постоянная
ПостояннаяОписание
ds_type_mapСтруктура данных карты
ds_type_list Списочная структура данных
ds_type_stackСтруктура данных стека
ds_type_gridСтруктура данных сетки
ds_type_queueСтруктура данных очереди
ds_type_priorityСтруктура данных о приоритетах
-

ПРИМЕЧАНИЕ Вы не можете использовать эту функцию для проверки типа структуры данных, так как один и тот же номер индекса может использоваться несколькими структурами данных разных типов.

-

-

Синтаксис:

-

ds_exists(ind, type);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indЛюбой идентификатор DSThe variable index to check for the data structure
typeТип DS ПостояннаяThe type of data structure to check for (see the list of constants above)
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !ds_exists(ai_grid, ds_type_grid)
- {
-     ai_grid = ds_grid_create(room_width / 32, room_height / 32);
- }

-

Приведенный выше код проверяет (предварительно инициализированную) переменную "ai_grid" на предмет индексации структуры данных типа DS grid, и если таковой нет, то создает ее и сохраняет ее индекс в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/ds_set_precision.htm b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/ds_set_precision.htm index 7ed9093af..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/ds_set_precision.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Data_Structures/ds_set_precision.htm @@ -1,68 +0,0 @@ - - - - - - ds_set_precision - - - - - - - - - - -

ds_set_precision

-

При сравнении значений, например, при поиске на карте или сортировке списка, GameMaker должен решить, когда два значения равны. Для строк и целых чисел это понятно, но для реальных чисел из-за ошибок округления с плавающей запятой кажущиеся равными числа могут легко стать неравными. Например, возможно, что (5 / 3) * 3 не будет равно 5! Чтобы избежать этого, во всех функциях работы с вещественными числами используется значение точности, и когда разница между двумя числами меньше этой точности, они считаются равными. По умолчанию для всех функций структур данных используется точность 0.0000001, если она не изменена этой функцией.

-

ПРИМЕЧАНИЕ: Эта точность используется во всех структурах данных, но не в других сравнениях в GML!

-

-

Синтаксис:

-

ds_set_precision(prec);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
precРеальноThe precision value (default 0.0000001)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

ds_set_precision(0.0001);

-

Приведенный выше код изменит настройку точности по умолчанию для всех функций структур данных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/Debugging.htm b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/Debugging.htm index 309dfc330..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/Debugging.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/Debugging.htm @@ -1,63 +0,0 @@ - - - - - - Отладка - - - - - - - - - - -

Отладка

-

При создании игры часто бывает очень важно знать некоторые детали игровой механики в определенные моменты времени или иметь возможность вводить определенные ключевые значения для некоторых функций, чтобы проверить различные методы и идеи для вашей игры. Для этого GameMaker предоставляет вам ряд отладочных функций, которые будут показывать сообщения и запрашивать ввод в режиме отладки (или на целевом модуле Windows ), но которые будут игнорироваться при компиляции для других целевых модулей из-за того, что эти функции переводят игру в замкнутый цикл до тех пор, пока ввод не будет разрешен.

-

ПРИМЕЧАНИЕ Хотя они могут работать на некоторых платформах, их не следует использовать для чего-либо, кроме отладки.

- -

-

Помимо этих специализированных функций, помогающих вам при создании игры, GameMaker также имеет длинный список сообщений об ошибках, которые могут быть показаны либо при написании кода игры, либо при компиляции игры, либо при запуске самой игры. Эти сообщения указывают на конкретную ошибку и могут быть использованы для выявления проблемы в определенном объекте или функции сценария, что значительно помогает в процессе отладки игры. Однако не всегда очевидно, что именно означает сообщение об ошибке, поэтому в следующих разделах перечислены все возможные сообщения и объяснено, что они означают, чтобы облегчить вам жизнь:

- -

-

Вы также можете найти дополнительную информацию о том, как отлаживать свою игру, в разделе " Отладчик".

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/code_is_compiled.htm b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/code_is_compiled.htm index 4c2f752f6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/code_is_compiled.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/code_is_compiled.htm @@ -1,52 +0,0 @@ - - - - - - code_is_compiled - - - - - - - - - - - -

code_is_compiled

-

Эта функция вернет true, если платформа компилируется вне виртуальной машины, как, например, для платформ YYC и JS.

-

-

Синтаксис:

-

code_is_compiled();

-

-

Возвращается:

-

-

-

Пример:

-

if code_is_compiled()
- {
-     show_debug_message("Compiler okay!");
- }

-

Приведенный выше код проверяет, была ли игра скомпилирована с помощью компилятора YoYo, и показывает отладочное сообщение, если это так.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/debug_event.htm b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/debug_event.htm index 8afa83e62..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/debug_event.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/debug_event.htm @@ -1,74 +0,0 @@ - - - - - - debug_event - - - - - - - - - - -

debug_event

-

Эта функция генерирует пользовательское отладочное событие, которое будет отображаться в графическом представлении отладчика, когда игра выполняется в режиме отладки. Если вам нужно, чтобы сообщения отображались не в режиме отладки, используйте функцию show_debug_message().

-

Функция также принимает две зарезервированные строки, чтобы помочь выполнить отладку с помощью внешних приложений, таких как Visual Studio. Этими строками являются:

-
    -
  • "OutputDebugOn" - Включает вызов OutputDebugString для цели Windows, что означает, что весь отладочный вывод - все, что вы видите в окне Output - может быть просмотрен Visual Studio или сторонними приложениями.
  • -
  • "OutputDebugOff" - Отключает поведение, описанное выше.
  • -
  • "BreakOnError" - Эта опция предназначена только для сборок Windows YYC и означает, что проекты не будут отображать обычный экран ошибок кода, если среда выполнения обнаружит ошибку, а вместо этого просто продолжат работу и потерпят крах. Это позволяет вам видеть трассировку стека внутри Visual Studio при отладке.
  • -
  • "ResourceCounts" - Перечисляет все активные в данный момент ресурсы, такие как структуры данных, источники времени, поверхности и т.д.
  • -
  • "DumpMemory" - Предоставляет информацию о текущем использовании памяти.
  • -
-

-

Синтаксис:

-

debug_event(string)

- - - - - - - - - - - - - -
АргументТипОписание
stringСтрокаThe custom debug event string to use.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if !surface_exists(global.EffectsSurface)
- {
-     debug_event("Recreating Effects Surface");
-     global.EffectsSurface = surface_create(room_width, room_height);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/debug_get_callstack.htm b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/debug_get_callstack.htm index 332b751e3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/debug_get_callstack.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/debug_get_callstack.htm @@ -1,79 +0,0 @@ - - - - - - debug_get_callstack - - - - - - - - - - - -

debug_get_callstack

-

Эта функция генерирует массив строк в виде "стека вызовов", где сначала перечисляется текущий сценарий, а затем все другие сценарии, которые были запущены для того, чтобы текущий сценарий был выполнен. Точный формат строк зависит от выбранной целевой платформы, но в основном это будет имя сценария/события, затем двоеточие : и номер строки, как показано ниже:

-

"gml_Script_script2:1"
- "gml_Script_script1:32"
- "gml_Script_script0:64"
- "gml_Object_object0_Create_0:1"

-

Функция позволяет передавать необязательный аргумент, который является максимальной глубиной возвращаемого стека вызовов. Это значение представляет собой количество скриптов, включенных в возвращаемый массив, начиная с текущего скрипта. Если этот аргумент не указан, то будет возвращен полный стек вызовов.

-

Обратите внимание, что возвращаемый массив всегда будет содержать 0 в своей последней позиции, после перечисления сценариев стека вызовов.

-

-

Синтаксис:

-

debug_get_callstack([maxdepth])

- - - - - - - - - - - - - -
АргументТипОписание
[maxdepth]РеальноOPTIONAL Максимальная глубина возвращаемого стека вызовов
-

-

Возвращается:

-

Array

-

-

Пример:

-

if debug_mode
- {
-     if (keyboard_check(vk_escape))
-     {
-         var _a = debug_get_callstack(4);
-         for (var i = 0; i < array_length(_a); i++)
-         {
-             show_debug_message(_a[i]);
-         }
-     }
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/debug_mode.htm b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/debug_mode.htm index 962087c72..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/debug_mode.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/debug_mode.htm @@ -1,55 +0,0 @@ - - - - - - debug_mode - - - - - - - - - - -

debug_mode

-

Эта переменная, доступная только для чтения, возвращает значение true, если игра ведется в режиме отладки, и false, если игра ведется в обычном режиме.

-

-

Синтаксис:

-

debug_mode

-

-

Возвращается:

-

-

-

Пример:

-

if debug_mode
- {
-     ini_open("Cheats.ini");
- }
- else
- {
-     ini_open("Game.ini");
- }

-

Приведенный выше код открывает разный ini файл в зависимости от значения переменной только для чтения debug_mode.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/exception_unhandled_handler.htm b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/exception_unhandled_handler.htm index d8d4f2188..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/exception_unhandled_handler.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/exception_unhandled_handler.htm @@ -1,126 +0,0 @@ - - - - - - exception_unhandled_handler - - - - - - - - - - -

exception_unhandled_handler

-

Эта функция времени выполнения может быть использована для "замены" стандартного сообщения об ошибке GameMaker при возникновении исключения времени выполнения. Вы предоставляете метод или функцию, которая будет вызвана при возникновении исключения, и ее первым аргументом будет структура (известная как Структура исключения), содержащая информацию об исключении. Эта структура имеет следующий формат:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Структура исключения
ПеременнаяТипОписание
messageСтрокаКраткое сообщение для исключения
longMessageСтрокаБолее длинное сообщение для исключения
scriptСтрокаСтрока, описывающая, откуда поступило исключение
lineРеальноНомер строки, на которой возникло исключение
stacktraceМассив из СтрокаsМассив строк, который является стеком вызовов для кадра, когда было сгенерировано исключение
-

Вы также можете указать в качестве аргумента undefined, что приведет к удалению пользовательского обработчика исключений (если он установлен) и возврату к стандартному сообщению об ошибке GameMaker.

-

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

-

Передача метода в эту функцию означает, что пользователю не будет показано сообщение об ошибке, и вы сможете самостоятельно обработать исключение. Однако вы не можете использовать эту функцию для "выхода" из исключения, чтобы продолжить игру, так как игра все равно закроется после вызова обработчика исключения. Вы также не можете вызывать функции, которые поддерживают игру дольше последнего кадра (например, game_restart()), так как игра должна закрыться после сбоя.

-

Обратите внимание, что контекст для запуска метода не находится в событии, поэтому в данный момент ничего не может быть выведено на экран. В общем, самое безопасное, что можно сделать в этот момент, это сохранить файл с контекстной информацией об исключении, чтобы его можно было, например, разобрать и обработать при следующем запуске игры, а затем разобраться с ним.

-

Обратите внимание, что если вы используете оператор return в поставляемом методе, то заданное значение будет преобразовано в целое число и использовано в качестве кода выхода из бегуна.

-

-

Синтаксис:

-

exception_unhandled_handler(user_handler);

- - - - - - - - - - - - - -
АргументТипОписание
user_handlerМетодThe method (user-defined function) to use as the exception handler, or undefined чтобы сбросить настройки по умолчанию.
-

-

Возвращается:

-

Method (or undefined)

-

-

Пример:

-

exception_unhandled_handler(function(ex)
- {
-     // Print some messages to the output log
-     show_debug_message( "--------------------------------------------------------------");
-     show_debug_message( "Unhandled exception " + string(ex) );
-     show_debug_message( "--------------------------------------------------------------");
-
-     // Write the exception struct to a file
-     if file_exists("crash.txt") file_delete("crash.txt");
-     var _f = file_text_open_write("crash.txt");
-     file_text_write_string(_f, string(ex));
-     file_text_close(_f);
-
-     // Show the error message (for debug purposes only)
-     show_message(ex.longMessage);
-
-     return 0;
- }); -

-

Приведенный выше код создаст метод обработчика исключений и использует его для сохранения файла с данными исключения; он также покажет длинное сообщение об ошибке в новом всплывающем окне для целей отладки.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/fps.htm b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/fps.htm index cfeb6f9eb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/fps.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/fps.htm @@ -1,52 +0,0 @@ - - - - - - fps - - - - - - - - - - -

fps

-

В GameMaker есть два основных способа, которые можно использовать для определения скорости, с которой работает ваша игра. Это game speed (как указано в Опциях игры) и fps (кадров в секунду). Эти значения часто путают, но в основном одно из них - это количество шагов игры, которые GameMaker должен выполнить за секунду, а другое (fps) - это количество шагов процессора, которые GameMaker фактически выполняет за секунду, вплоть до максимального значения скорости самой комнаты. Чтобы получить истинный fps, то есть фактическое количество шагов процессора на шаг игры, используйте переменную fps_real переменную.

-

Эта переменная, доступная только для чтения, возвращает текущий fps в виде целочисленного значения. Обратите внимание, что функция будет обновляться только один раз на каждом шаге вашей игры, поэтому может показаться, что значение "прыгает" от одного к другому, но это вполне нормально.

-

-

Синтаксис:

-

fps

-

-

Возвращается:

-

-

-

Пример:

-

if debug_mode
- {
-     draw_text(32, 32, "FPS = " + string(fps));
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/fps_real.htm b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/fps_real.htm index 602822cde..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/fps_real.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/fps_real.htm @@ -1,53 +0,0 @@ - - - - - - fps_real - - - - - - - - - - -

fps_real

-

В GameMaker есть два основных способа, которые можно использовать для определения скорости, с которой работает ваша игра. Это game speed (как указано в Опциях игры) и fps (кадров в секунду). Эти значения часто путают, но, по сути, одно из них - это количество игровых шагов, которые GameMaker должен выполнить за секунду (скорость игры), а другое - количество шагов процессора, которые GameMaker фактически выполняет за секунду (реальная частота кадров в секунду), и это значение обычно намного выше, чем скорость игры, но будет снижаться по мере усложнения игры и использования большей вычислительной мощности для поддержания заданной комнатной скорости.

-

Эта переменная, доступная только для чтения, возвращает текущий fps в виде целочисленного значения. Обратите внимание, что функция будет обновляться только один раз на каждом шаге вашей игры, поэтому может показаться, что значение "прыгает" от одного к другому, но это вполне нормально.

-

ПРИМЕЧАНИЕ: В HTML5-цели эта переменная будет возвращать значение, кратное частоте обновления монитора, поскольку GameMaker должен полагаться на браузер для определения времени и отправки.

-

-

Синтаксис:

-

fps_real

-

-

Возвращается:

-

-

-

Пример:

-

if debug_mode
- {
-     draw_text(32, 32, "FPS = " + string(fps_real));
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/get_integer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/get_integer.htm index 4099b47b0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/get_integer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/get_integer.htm @@ -1,69 +0,0 @@ - - - - - - get_integer - - - - - - - - - - - -

get_integer

-

Создается всплывающее окно с пользовательским сообщением, кнопкой "Ok" и предложением ввести целочисленное значение. Функция возвращает введенное целое число или значение по умолчанию, если ничего не было введено.

-

ПРИМЕЧАНИЕ Эта функция предназначена только для отладки на цели Windows, а для всех остальных целей она устарела.

-

-

Синтаксис:

-

get_integer(str, def);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
strСтрокаThe string to show in the pop-up message.
defРеальноThe default value in the text box.
-

-

Возвращается:

-

Real

-

-

Пример:

-

global.level = get_integer("Level to test?", 1);

-

Приведенный выше код отобразит сообщение, предлагающее пользователю выбрать уровень для тестирования. Возвращаемое значение будет сохранено в глобальной переменной "global.level".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/get_string.htm b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/get_string.htm index a1d51c1b7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/get_string.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/get_string.htm @@ -1,69 +0,0 @@ - - - - - - get_string - - - - - - - - - - - -

get_string

-

Это создает всплывающее окно со стандартным сообщением и кнопкой "Ok", в котором пользователю предлагается ввести строку. Функция возвращает введенную строку или значение по умолчанию, если ничего не было введено.

-

ПРИМЕЧАНИЕ Эта функция предназначена только для отладки на цели Windows, а для всех остальных целей она устарела.

-

-

Синтаксис:

-

get_string(str, def);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
strСтрокаThe string to show in the pop-up message.
defСтрокаThe default string in the text box.
-

-

Возвращается:

-

String

-

-

Пример:

-

global.test_name = get_string("Test highscore name:", "Anonymous");

-

Приведенный выше код попросит пользователя указать имя, которое затем будет сохранено в глобальной переменной "test_name". Если ничего не будет введено и пользователь просто нажмет "Ok", то будет возвращено значение по умолчанию "Anonymous".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_debug_message.htm b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_debug_message.htm index bfe554fde..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_debug_message.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_debug_message.htm @@ -1,66 +0,0 @@ - - - - - - show_debug_message - - - - - - - - - - -

show_debug_message

-

Эта функция создает пользовательское отладочное сообщение, которое отображается в окне компилятора во время выполнения программы. Обратите внимание, что сообщение может быть как строкой, так и вещественным числом, но если вам нужно и то, и другое, то число необходимо сначала преобразовать в строку с помощью функции string() (см. пример ниже) и что если число имеет более двух десятичных знаков, то следует использовать string_format() чтобы показать их, так как по умолчанию десятичные числа округляются до ближайших двух знаков после запятой (поэтому "1.2468" будет отображаться как "1.25" в окне вывода).

-

Отладочные сообщения, показанные с помощью этой функции, будут показаны в окне вывода компилятора в нижней части сайта IDE, а также в графическом окне отладчика при запуске игры в режиме отладки. Если вы хотите видеть сообщения только в режиме отладки, то вам, вероятно, следует использовать функцию debug_event() вместо этого.

-

-

Синтаксис:

-

show_debug_message(string);

- - - - - - - - - - - -
АргументТипОписание
stringThe custom debug message to show.
-

-

Возвращается:

-

-

-

Пример:

-

if !instance_exists(obj_Exit)
- {
-     show_debug_message("Exit not created!");
-     show_debug_message("Error Num: " + string(global.error));
-     game_end();
- }

-

Приведенный выше код проверяет, существует ли экземпляр, и если нет, то в окне компиляции появляется отладочное сообщение и игра завершается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_debug_overlay.htm b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_debug_overlay.htm index 6f4bc3bcf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_debug_overlay.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_debug_overlay.htm @@ -1,81 +0,0 @@ - - - - - - show_debug_overlay - - - - - - - - - - -

show_debug_overlay

-

Эта функция может использоваться для включения и выключения стандартной отладочной накладки при тестировании вашей игры и по умолчанию отключена. Отладочная накладка показывает графическую полосу использования CPU/GPU в самом игровом окне, а также текущее реальное значение fps, количество смен текстур и количество вершинных батчей (обратите внимание, что смены текстур и вершинных батчей никогда не будут равны нулю и обычно показывают значения 2 или 3, поскольку даже в пустой комнате без объектов GameMaker все равно должен рисовать и батчить).

-

Эта полоса разделена на секции, каждая из которых составляет 1/60 секунды. Как видно из изображения выше, полоса состоит из различных цветов:

-
    -
  • Зеленый - обработка ввода/вывода (т.е.: клавиатура, мышь, геймпад, сеть и т.д...)
  • -
  • Красный - Скорость обновления события шага
  • -
  • Желтый - Время, необходимое для проведения розыгрыша
  • -
  • Оранжевый -Время обновления отладки, которое обычно видно только при использовании модуля отладки
  • -
  • Белый - оставшееся время GPU, то есть время, потраченное на ожидание, пока GPU закончит рендеринг кадра, прежде чем начнется следующий.
  • -
  • Cyan - Время отрисовки текста
  • -
  • Grey - Время, необходимое для очистки экрана на каждом этапе рисования
  • -
  • Blue - Время, необходимое для работы сборщика мусора
  • -
  • Темно-красный цвет - промывка GPU, т.е. сколько времени требуется GPU для очистки изображений из памяти.
  • -
-

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

-

ПРИМЕЧАНИЕ: Эта функция не будет работать на цели HTML5 из-за того, что она работает иначе, чем все остальные цели.

-

-

Синтаксис:

-

show_debug_overlay(enable);

- - - - - - - - - - - -
АргументТипОписание
enableswitch on (true) или выключить (false) the debug overlay.
-

-

Возвращается:

-

-

-

Пример:

-

if global.debug
- {
-     show_debug_overlay(true);
- }
- else
- {
-     show_debug_overlay(false);
- }

-

Приведенный выше код будет включать или выключать отладку в зависимости от значения глобальной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_error.htm b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_error.htm index bf98e9221..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_error.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_error.htm @@ -1,72 +0,0 @@ - - - - - - show_error - - - - - - - - - - -

show_error

-

Эта функция выводит пользовательскую строку в качестве сообщения об ошибке.

-

ВАЖНО Второй аргумент существует только для обратной совместимости со старыми проектами и не влияет на отображаемый диалог ошибки.

-

ПРИМЕЧАНИЕ Эта функция предназначена только для отладки.

-

-

Синтаксис:

-

show_error(str, abort);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
strСтрокаThe string to show in the pop-up message.
abortБулевоUNUSED Должна ли ошибка прервать игру (true) или позволить игроку игнорировать ее (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (room != rm_Dungeon)
- {
-     show_error("Error: Went to wrong area. Aborting game.", true);
- }

-

Приведенный выше код проверит, является ли текущая комната rm_Dungeon, и если нет, то выдаст сообщение об ошибке.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_message.htm b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_message.htm index 2cca7f1c9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_message.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_message.htm @@ -1,69 +0,0 @@ - - - - - - show_message - - - - - - - - - - - -

show_message

-

Эта функция создает всплывающее окно сообщения, в котором отображается заданная строка и кнопка с надписью "Ok" для его закрытия.

-

ПРИМЕЧАНИЕ Эта функция предназначена только для отладки на цели Windows, а для всех остальных целей она устарела.

-

-

Синтаксис:

-

show_message(str);

- - - - - - - - - - - - - -
АргументТипОписание
strСтрокаThe string to show in the pop-up message.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var tot = 0;
- for (var i = 0; i < 10; i += 1)
- {
-     tot += inv[i];
- }
- show_message("Total = " + string(tot));

-

Приведенный выше код будет циклически просматривать значения, хранящиеся в массиве "inv", и добавлять их к переменной "tot", а затем выводить сообщение с итоговой суммой.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_question.htm b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_question.htm index 53db8b88c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_question.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Debugging/show_question.htm @@ -1,71 +0,0 @@ - - - - - - show_question - - - - - - - - - - - -

show_question

-

Эта функция создает всплывающее окно сообщения с двумя кнопками "Да" и "Нет". Она возвращает true или false в зависимости от того, какую из двух кнопок нажимает пользователь.

-

ПРИМЕЧАНИЕ Эта функция предназначена только для отладки на цели Windows, а для всех остальных целей она устарела.

-

-

Синтаксис:

-

show_question(str);

- - - - - - - - - - - - - -
АргументТипОписание
strСтрокаThe string to show in the pop-up question.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if (score > 500) && debug_mode
- {
-     if show_question("Continue to next room?")
-     {
-         room_goto(rm_Level2);
-     }
-     else game_end();
- }

-

Приведенный выше код проверит счет, и если он больше 500, то спросит пользователя, хочет ли он продолжить или нет, и если будет нажата кнопка "да", то он перейдет в другую комнату, если же будет выбрана кнопка "нет", то игра закончится.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/Basic_Forms.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/Basic_Forms.htm index 38241e3d7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/Basic_Forms.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/Basic_Forms.htm @@ -1,70 +0,0 @@ - - - - - - Основные формы - - - - - - - - - - -

Основные формы

-

ВGameMaker имеется целая коллекция функций для рисования различных форм и фигур. Эти функции должны использоваться только в событии рисования экземпляра (вы можете использовать их в других местах, но вы ничего не увидите!) и создавать чисто графические эффекты, что означает, что они не генерируют события столкновений, поскольку они могут происходить только через sprite или маску столкновений, назначенную экземпляру. Все эти функции зависят от текущего цвета рисования, альфа-канала и режима наложения (см. раздел " Цвет").

-

ВАЖНО! Линии, точки и формы всегда рисуются в соотношении 1:1 с разрешением экрана, независимо от события, в котором они рисуются.

-

ВАЖНО! Эти функции нарушают пакетную обработку вершин и увеличивают количество смен текстур в вашей игре, поэтому несколько вызовов любой из них в одном кадре рисования могут привести к проблемам с производительностью.

-

Для рисования основных фигур существуют следующие функции рисования. Обратите внимание, что эти функции вызываются медленно и поставляются только в качестве основных инструментов рисования:

- -

-

В GameMaker также включены следующие функции для настройки точности рисования и рисования некоторых очень специфических вещей:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_arrow.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_arrow.htm index 284d1bd91..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_arrow.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_arrow.htm @@ -1,81 +0,0 @@ - - - - - - draw_arrow - - - - - - - - - - - -

draw_arrow

-

Эта функция рисует стрелку из точки (x1,y1) в точку (x2,y2). Вдоль этих точек рисуется стержень стрелы, а в конце рисуется головка стрелы, причем размер головки определяется аргументом "size" и - рассчитывается как часть стебля, так что конечная точка всегда выравнивается с позицией, заданной x2,y2. Ширина наконечника стрелки рассчитывается автоматически пропорционально длине.

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но не отрисовать). - шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_arrow(x1, y1, x2, y2, size);

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1The x coordinate of the start of the line.
y1The y coordinate of the start of the line.
x2The x coordinate of the end of the line (where the arrowhead ends).
y2The y coordinate of the end of the line (where the arrowhead ends).
sizeThe length of the arrow in pixels.
-

-

Возвращается:

-

-

-

Пример:

-

draw_arrow(x, y, mouse_x, mouse_y, 10);

-

Приведенный выше код нарисует стрелку от позиции экземпляра до позиции мыши, при этом длина головки стрелки составит 10 пикселей.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_button.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_button.htm index 4d262d7a0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_button.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_button.htm @@ -1,84 +0,0 @@ - - - - - - draw_button - - - - - - - - - - - -

draw_button

-

Эта функция нарисует очень простую прямоугольную "кнопку", используя выбранный в данный момент цвет рисунка и альфа, где аргумент up определяет, как будет выглядеть эффект скошенного края, как показано на изображении ниже:

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_button(x1, y1, x2, y2, up);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the left of the button
y1РеальноThe y coordinate of the top of the button
x2РеальноThe x coordinate of the right of the button
y2РеальноThe y coordinate of the bottom of the button
upБулевоWhether the button is up (true) или вниз (false)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_button(100, 100, 200, 150, !mouse_check_button(mb_left));

-

Это нарисует кнопку, которая будет выглядеть нажатой, если удерживать левую кнопку мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_circle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_circle.htm index 148367caa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_circle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_circle.htm @@ -1,80 +0,0 @@ - - - - - - draw_circle - - - - - - - - - - - -

draw_circle

-

С помощью этой функции можно нарисовать либо контур круга, либо заполненный круг. Вы можете определить, насколько точным будет рисунок, с помощью функции draw_set_circle_precision().

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_circle(x, y, r, outline);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x coordinate of the center of the circle.
yРеальноThe y coordinate of the center of the circle.
rРеальноThe circle's radius (length from its center to its edge)
outlineБулевоWhether the circle is drawn filled (false) или в виде контура шириной в один пиксель (true).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_set_colour(c_white);
- draw_circle(100, 100, 50, true);

-

Это нарисует контур белого круга шириной один пиксель и радиусом 50 пикселей.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_circle_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_circle_colour.htm index c95f38e43..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_circle_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_circle_colour.htm @@ -1,90 +0,0 @@ - - - - - - draw_circle_colour - - - - - - - - - - - -

draw_circle_colour

-

С помощью этой функции можно нарисовать либо контур круга, либо заполненный круг, а если он заполнен, то можно задать внутренний и внешний цвета заливки. Если эти цвета не совпадают, вы получите эффект градиента от одного к другому, а настройки цвета будут зависеть от базового цвета, заданного с помощью функции draw_set_colour(). Вы можете определить, насколько точным будет рисунок, с помощью функции draw_set_circle_precision().

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_circle_colour(x, y, r, col1, col2, outline);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x coordinate of the center of the circle.
yРеальноThe y coordinate of the center of the circle.
rРеальноThe radius (distance from center to edge) of the circle in pixels.
col1ЦветThe colour at the center of the circle.
col2ЦветThe colour at the edge of the circle.
outlineБулевоWhether the circle is an outline (true) или нет (false). Если истина, то col1 не имеет значения.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_circle_colour(x, y, 100, c_white, c_black, false);

-

Это позволит нарисовать заполненный круг с центром в позиции x и y исполняющего экземпляра, с радиусом 100 пикселей, от белого в центре до черного снаружи.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_ellipse.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_ellipse.htm index 25e593f40..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_ellipse.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_ellipse.htm @@ -1,85 +0,0 @@ - - - - - - draw_ellipse - - - - - - - - - - - -

draw_ellipse

-

С помощью этой функции можно нарисовать либо контур эллипса, либо заполненный эллипс, определив прямоугольную область, под которую затем будет создан эллипс. Вы можете определить, насколько точным будет рисунок, с помощью функции draw_set_circle_precision().

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_ellipse(x1, y1, x2, y2, outline);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the left of the ellipse.
y1РеальноThe y coordinate of the top of the ellipse.
x2РеальноThe x coordinate of the right of the ellipse.
y2РеальноThe y coordinate of the bottom of the ellipse.
outlineБулевоWhether the ellipse is drawn filled (false) or as a one pixel wide outline (true).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_set_colour(c_white);
- draw_ellipse(100, 100, 300, 200, false);

-

Это позволит нарисовать заполненный эллипс в пределах заданной прямоугольной области.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_ellipse_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_ellipse_colour.htm index e8b033ac3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_ellipse_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_ellipse_colour.htm @@ -1,95 +0,0 @@ - - - - - - draw_ellipse_colour - - - - - - - - - - - -

draw_ellipse_colour

-

С помощью этой функции можно нарисовать либо контур эллипса, либо заполненный эллипс, определив прямоугольную область, под которую будет создан эллипс. В случае заливки можно задать внутренний и внешний цвета заливки. Если эти цвета не совпадают, вы получите эффект градиента от одного к другому (настройки цвета будут перекрывать базовый цвет, заданный с помощью функции draw_set_colour()). Вы можете определить, насколько точным будет рисунок, с помощью функции draw_set_circle_precision().

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_ellipse_colour(x1, y1, x2, y2, col1, col2, outline);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the left of the ellipse.
y1РеальноThe y coordinate of the top of the ellipse.
x2РеальноThe x coordinate of the right of the ellipse.
y2РеальноThe y coordinate of the bottom of the ellipse.
col1ЦветThe colour of the center.
col2ЦветThe colour of the edge.
outlineБулевоWhether the ellipse is an outline (true) or filled in (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_ellipse_colour(50, 50, 200, 100, c_black, c_white, false);

-

Это нарисует заполненный, горизонтально растянутый эллипс с черным центром и белым краем.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_healthbar.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_healthbar.htm index d56963f7a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_healthbar.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_healthbar.htm @@ -1,118 +0,0 @@ - - - - - - draw_healthbar - - - - - - - - - - - -

draw_healthbar

-

С помощью этой функции можно нарисовать цветную полосу для отображения постоянной величины. Хотя в функции используется слово "healthbar", вы можете использовать ее для отображения чего угодно, если отображаемая величина представляет собой процентное значение от 0 до 100 (процент от любого значения можно рассчитать по формуле (CURRENT_Value / MAXIMUM_value) * 100), поэтому, например, вы можете использовать ее для отображения силы, здоровья, маны, времени или чего-либо еще, что может быть полезно при отображении в виде столбика.

-

Вы можете установить различные параметры, которые изменяют визуальный аспект полосы, и они показаны на рисунке ниже (обратите внимание, что здесь используются цвета c_green для максимального значения и c_red для минимального значения, но вы можете использовать цвета по своему усмотрению):

-

Healthbar examples

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_healthbar(x1, y1, x2, y2, amount, backcol, mincol, maxcol, direction, showback, showborder);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the left of the healthbar
y1РеальноThe y coordinate of the top of the healthbar
x2РеальноThe x coordinate of the right of the healthbar
y2РеальноThe y coordinate of the bottom of the healthbar
amountРеальноThe variable which defines total health (between 0 and 100)
backcolЦветThe colour of the background for the bar
mincolЦветThe colour of the bar when at no health (0)
maxcolЦветThe colour of the bar when at full health (100)
directionРеальноWhere the bar is "anchored" (0 = left, 1 = right, 2 = top, 3 = bottom)
showbackБулевоWhether the bar's background is drawn (true) или нет (false). Если false, то аргумент backcol не принимается во внимание.
showborderБулевоWhether the bar's elements have a 1px wide black border (true) или нет (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var pc;
- pc = (hp / max_hp) * 100;
- draw_healthbar(100, 100, 500, 200, pc, c_black, c_red, c_lime, 0, true, true)

-

Приведенный выше код использует процентное значение, полученное из переменных "hp" и "hp_max", для рисования стандартной красно-зеленой панели здоровья.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_line.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_line.htm index 5ee8adb85..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_line.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_line.htm @@ -1,77 +0,0 @@ - - - - - - draw_line - - - - - - - - - - - -

draw_line

-

С помощью этой функции вы можете нарисовать линию шириной 1 пиксель между любыми двумя точками в игровой комнате. Обратите внимание, что для того, чтобы нарисованная линия имела нужные размеры, могут потребоваться разные значения (+/-1 по x, y) из-за различий на различных - поддерживаемых платформах.

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но не отрисовать). - шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_line(x1, y1, x2, y2);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1The x coordinate of the start of the line.
y1The y coordinate of the start of the line.
x2The x coordinate of the end of the line.
y2The y coordinate of the end of the line.
-

-

Возвращается:

-

-

-

Пример:

-

draw_set_colour(c_lime);
draw_line(50,50,150,50); -

-

Это позволит провести светло-зеленую горизонтальную линию от точки (50,50) до точки (150,50).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_line_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_line_colour.htm index a4b7e673c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_line_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_line_colour.htm @@ -1,85 +0,0 @@ - - - - - - draw_line_colour - - - - - - - - - - - -

draw_line_colour

-

С помощью этой функции можно нарисовать линию шириной 1 пиксель со смешением цвета между цветом 1 в первой точке и цветом 2 во второй точке. Настройки цвета отменяют базовый цвет, установленный с помощью функции draw_set_colour(). - Обратите внимание, что для рисования линии с нужными размерами могут потребоваться разные значения (+/-1 по x, y) из-за различий в различных поддерживаемых платформах.

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но не отрисовать). - шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_line_colour(x1, y1, x2, y2, col1, col2);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1The x coordinate of the start of the line.
y1The y coordinate of the start of the line.
x2The x coordinate of the end of the line.
y2The y coordinate of the end of the line.
col1The colour of the start of the line.
col2The colour of the end of the line.
-

-

Возвращается:

-

-

-

Пример:

-

draw_line_colour(50, 50, 300, 50, c_red, c_blue);

-

Это позволит нарисовать горизонтальную линию от (50,50) до (300,50) с плавным градиентом от красного к синему.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_line_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_line_width.htm index 2acc2e3a1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_line_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_line_width.htm @@ -1,80 +0,0 @@ - - - - - - draw_line_width - - - - - - - - - - - -

draw_line_width

-

С помощью этой функции можно нарисовать линию заданной ширины между любыми двумя точками в игровой комнате. Обратите внимание, что для того, чтобы нарисованная линия имела нужные размеры, могут потребоваться различные значения (+/-1 по x, y) в связи с различиями между - различных поддерживаемых платформах.

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но не отрисовать). - шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_line_width(x1, y1, x2, y2, w);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1The x coordinate of the start of the line.
y1The y coordinate of the start of the line.
x2The x coordinate of the end of the line.
y2The y coordinate of the end of the line.
wThe width of the line in pixels.
-

-

Возвращается:

-

-

-

Пример:

-

draw_set_colour(c_red);
draw_line_width(100, 100, 200, 200, 6);

-

Это позволит нарисовать красную диагональную линию шириной 6 пикселей от точки (100,100) до точки (200,200).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_line_width_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_line_width_colour.htm index 115787ffd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_line_width_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_line_width_colour.htm @@ -1,89 +0,0 @@ - - - - - - draw_line_width_colour - - - - - - - - - - - -

draw_line_width_colour

-

С помощью этой функции можно нарисовать линию определенной ширины со смешением цвета между цветом 1 в первой точке и цветом 2 во второй точке. Настройки цвета будут перекрывать базовый цвет, заданный с помощью функции draw_set_colour(). - Обратите внимание, что для построения линии с нужными размерами могут потребоваться разные значения (+/-1 по x, y) из-за различий в различных поддерживаемых платформах.

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но не отрисовать). - шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_line_width_colour(x1, y1, x2, y2, w, col1, col2);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1The x coordinate of the start of the line.
y1The y coordinate of the start of the line.
x2The x coordinate of the end of the line.
y2The y coordinate of the end of the line.
wThe width in pixels of the line.
col1The colour of the start of the line.
col2The colour of the end of the line.
-

-

Возвращается:

-

-

-

Пример:

-

draw_line_width_colour(50, 50, 300, 50, 4, c_red, c_blue);

-

Это позволит нарисовать горизонтальную линию от (50,50) до (300,50), шириной четыре пикселя, с плавным градиентом от красного к синему.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_path.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_path.htm index 408ed554a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_path.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_path.htm @@ -1,77 +0,0 @@ - - - - - - draw_path - - - - - - - - - - - -

draw_path

-

С помощью этой функции вы можете заставить GameMaker нарисовать путь на экране. Путь будет нарисован в виде простой линии и может быть как относительно вызывающего экземпляра, так и в абсолютной позиции, в которой он был создан в редакторе путей или в коде. Эта функция чрезвычайно полезна при отладке динамических путей (например, созданных для экземпляров с помощью функции mp_grid_path() функцией).

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_path(path, x, y, absolute);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
pathThe path to draw
xThe x coordinate of where the path is drawn
yThe y coordinate of where the path is drawn
absoluteWhether the path is drawn at the absolute position (true) или относительное положение (false)
-

-

Возвращается:

-

-

-

Пример:

-

if mp_grid_path(grid, path, x, y, obj_Player.x, obj_Player.y, 1)
- {
-     draw_path(path, x, y, false);
- }

-

Приведенный выше код использует функцию mp_grid_path для создания пути и сохраняет его в переменной "path". Если путь успешно создан, то он рисуется на экране в позиции относительно экземпляра, выполняющего код.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_point.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_point.htm index 8ef7b8727..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_point.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_point.htm @@ -1,66 +0,0 @@ - - - - - - draw_point - - - - - - - - - - - -

draw_point

-

С помощью этой функции вы можете нарисовать один пиксель в любом месте экрана, используя установленные в данный момент цвет рисунка и альфу.

-

-

Синтаксис:

-

draw_point(x, y);

- - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate of the point to be drawn.
yThe y coordinate of the point to be drawn.
-

-

Возвращается:

-

-

-

Пример:

-

draw_set_colour(c_yellow);
draw_point(100,100); -

-

Это нарисует желтый пиксель в позиции (100,100).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_point_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_point_colour.htm index 96b84a4ac..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_point_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_point_colour.htm @@ -1,72 +0,0 @@ - - - - - - draw_point_colour - - - - - - - - - - - -

draw_point_colour

-

С помощью этой функции вы можете нарисовать один пиксель в любом месте экрана определенным цветом. Настройки цвета будут перекрывать базовый цвет, заданный с помощью функции draw_set_colour().

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но не отрисовать). - шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_point_colour(x, y, col1);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate of the point.
yThe y coordinate of the point.
col1The colour of the point.
-

-

Возвращается:

-

-

-

Пример:

-

draw_point_colour(50, 50, c_red);

-

Это нарисует красный пиксель в точке (50,50).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_rectangle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_rectangle.htm index d44e2a596..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_rectangle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_rectangle.htm @@ -1,85 +0,0 @@ - - - - - - draw_rectangle - - - - - - - - - - - -

draw_rectangle

-

С помощью этой функции вы можете нарисовать либо контур прямоугольника, либо заполненный прямоугольник, где позиция (x1,y1) - левый верхний угол, а позиция (x2,y2) - правый нижний угол. Обратите внимание, что для того, чтобы нарисованный прямоугольник имел нужные размеры, могут потребоваться другие значения (+/-1 по x, y, ширине или высоте) из-за различий в различных поддерживаемых платформах.

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_rectangle(x1, y1, x2, y2, outline);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the top left corner of the rectangle.
y1РеальноThe y coordinate of the top left corner of the rectangle.
x2РеальноThe x coordinate of the bottom right corner of the rectangle.
y2РеальноThe y coordinate of the bottom right corner of the rectangle.
outlineБулевоWhether the rectangle is drawn filled (false) or as a one pixel wide outline (true).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_set_colour(c_yellow);
- draw_rectangle(100, 100, 300, 200, true);

-

Это позволит нарисовать контур прямоугольника, левый верхний угол которого находится в точке (100,100), а правый нижний - в точке (300,200).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_rectangle_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_rectangle_colour.htm index e0603abe6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_rectangle_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_rectangle_colour.htm @@ -1,105 +0,0 @@ - - - - - - draw_rectangle_colour - - - - - - - - - - - -

draw_rectangle_colour

-

С помощью этой функции вы можете нарисовать либо контур прямоугольника, либо заполненный прямоугольник, определив область, где позиция (x1,y1) - левый верхний угол, а позиция (x2,y2) - правый нижний угол. В случае заливки можно задать индивидуальные цвета для каждой угловой точки, и если эти цвета не совпадают, то получится эффект градиента от одного к другому (настройки цвета будут перекрывать базовый цвет, заданный с помощью функции draw_set_colour()). Обратите внимание, что для того, чтобы нарисованный прямоугольник имел нужные размеры, могут потребоваться разные значения (+/-1 по x, y, ширине или высоте) из-за различий в различных поддерживаемых платформах.

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_rectangle_colour(x1, y1, x2, y2, col1, col2, col3, col4, outline);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the left of the rectangle.
y1РеальноThe y coordinate of the top of the rectangle.
x2РеальноThe x coordinate of the right of the rectangle.
y2РеальноThe y coordinate of the bottom of the rectangle.
col1ЦветThe colour of the top left corner.
col2ЦветThe colour of the top right corner.
col3ЦветThe colour of the bottom right corner.
col4ЦветThe colour of the bottom left corner.
outlineБулевоWhether the rectangle is an outline (true) or filled in (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_rectangle_colour(50, 50, 200, 200, c_black, c_white, c_black, c_white, false);

-

Это нарисует заполненный квадрат с плавным черно-белым градиентом между углами.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_roundrect.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_roundrect.htm index 9396707d5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_roundrect.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_roundrect.htm @@ -1,85 +0,0 @@ - - - - - - draw_roundrect - - - - - - - - - - - -

draw_roundrect

-

С помощью этой функции можно нарисовать либо контур закругленного прямоугольника, либо заполненный закругленный прямоугольник, где позиция (x1,y1) - левый верхний угол, а позиция (x2,y2) - правый нижний угол. Вы можете определить, насколько точно будут прорисованы углы, с помощью функции draw_set_circle_precision(), но в данной функции для них используется фиксированный радиус (если вам нужно изменить радиус угла, используйте функцию draw_roundrect_ext()). Обратите внимание, что для рисования прямоугольника нужных размеров могут потребоваться другие значения (+/-1 по x, y, ширине или высоте) из-за различий в разных поддерживаемых платформах.

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_roundrect(x1, y1, x2, y2, outline);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the top left corner of the rounded rectangle (as if it were a normal rectangle).
y1РеальноThe y coordinate of the top left corner of the rounded rectangle (as if it were a normal rectangle).
x2РеальноThe x coordinate of the bottom right corner of the rounded rectangle (as if it were a normal rectangle).
y2РеальноThe y coordinate of the bottom right corner of the rounded rectangle (as if it were a normal rectangle).
outlineБулевоWhether the rounded rectangle is drawn filled (false) or as a one pixel wide outline (true).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_set_colour(c_lime);
- draw_roundrect(50, 100, 250, 200, 0);

-

Это нарисует заполненный закругленный прямоугольник с теоретическим (до изогнутого) верхним левым углом на (50,100) и теоретическим нижним правым углом на (250,200).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_roundrect_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_roundrect_colour.htm index db5f47db3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_roundrect_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_roundrect_colour.htm @@ -1,95 +0,0 @@ - - - - - - draw_roundrect_colour - - - - - - - - - - - -

draw_roundrect_colour

-

С помощью этой функции можно нарисовать либо контур закругленного прямоугольника, либо заполненный закругленный прямоугольник, где позиция (x1,y1) - левый верхний угол, а позиция (x2,y2) - правый нижний угол. Если прямоугольник заполнен, вы можете задать отдельные цвета для центра и краев, и если эти цвета не совпадают, вы получите эффект градиента от одного к другому (настройки цвета будут перекрывать базовый цвет, заданный с помощью функции draw_set_colour()).Вы можете определить, насколько точным будет рисование углов с помощью функции draw_set_circle_precision()но углы всегда рисуются с фиксированным радиусом. Если вам нужно изменить радиус угла, используйте функцию draw_roundrect_colour_ext(). Обратите внимание, что для рисования прямоугольника с нужными размерами могут потребоваться разные значения (+/-1 по x, y, ширине или высоте) из-за различий в разных поддерживаемых платформах.

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_roundrect_colour(x1, y1, x2, y2, col1, col2, outline);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the left of the rounded rectangle.
y1РеальноThe y coordinate of the top of the rounded rectangle.
x2РеальноThe x coordinate of the right of the rounded rectangle.
y2РеальноThe y coordinate of the bottom of the rounded rectangle.
col1ЦветThe center colour.
col2ЦветThe outside edge colour.
outlineБулевоWhether the rectangle is an outline (true) or filled in (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_roundrect_colour(50, 50, 200, 200, c_black, c_white, false);

-

Это нарисует заполненный квадрат с закругленными углами и плавным черно-белым градиентом от центра к краям.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_roundrect_colour_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_roundrect_colour_ext.htm index b24b744af..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_roundrect_colour_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_roundrect_colour_ext.htm @@ -1,107 +0,0 @@ - - - - - - draw_roundrect_colour_ext - - - - - - - - - - - -

draw_roundrect_colour_ext

-

С помощью этой функции можно нарисовать либо контур закругленного прямоугольника, либо заполненный закругленный прямоугольник, где позиция (x1,y1) - левый верхний угол, а позиция (x2,y2) - правый нижний угол. Если прямоугольник заполнен, то аргументы color будут использованы для создания цветового градиента от центра к краям, где цвет 1 - это цвет центра, а цвет 2 - цвет краев. Вы также должны указать значения радиуса для осей x и y (в пикселях), и углы будут скруглены на эти величины. Вы можете определить, насколько точно будут нарисованы углы, с помощью функции draw_set_circle_precision(). Обратите внимание, что для рисования прямоугольника нужных размеров могут потребоваться другие значения (+/-1 по осям x, y, ширине или высоте) из-за различий в разных поддерживаемых платформах.

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_roundrect_colour_ext(x1, y1, x2, y2, xrad, yrad, col1, col2, outline);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the left of the rounded rectangle.
y1РеальноThe y coordinate of the top of the rounded rectangle.
x2РеальноThe x coordinate of the right of the rounded rectangle.
y2РеальноThe y coordinate of the bottom of the rounded rectangle.
xradРеальноThe radius of the curve along the x axis from the rectangle corners.
yradРеальноThe radius of the curve along the y axis from the rectangle corners.
col1ЦветThe center colour.
col2ЦветThe outside edge colour.
outlineБулевоWhether the rectangle is an outline (true) or filled in (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var dist = point_distance(x, y, mouse_x, mouse_y) / 10;
- var col = make_colour_hsv(clamp(dist, 0, 255), 255, 255);
- draw_roundrect_colour_ext(x - 50, y - 50, x + 50, y + 50, dist, dist, col, c_white, 0);

-

В этом случае рисуется заполненный квадрат с закругленными углами, радиус которого определяется расстоянием от экземпляра, выполняющего рисование, до мыши. Это значение также используется для расчета цвета наложения центра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_roundrect_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_roundrect_ext.htm index 6a8eaa0ad..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_roundrect_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_roundrect_ext.htm @@ -1,96 +0,0 @@ - - - - - - draw_roundrect_ext - - - - - - - - - - - -

draw_roundrect_ext

-

С помощью этой функции можно нарисовать либо контур закругленного прямоугольника, либо заполненный закругленный прямоугольник, где позиция (x1,y1) - левый верхний угол, а позиция (x2,y2) - правый нижний угол. Вы также должны указать значения радиуса для осей x и y (в пикселях), и углы будут скруглены на эти величины. Вы можете определить, насколько точной будет отрисовка углов, с помощью функции draw_set_circle_precision(). Обратите внимание, что для рисования прямоугольника нужных размеров могут потребоваться другие значения (+/-1 по осям x, y, ширины или высоты) из-за различий в разных поддерживаемых платформах.

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_roundrect_ext(x1, y1, x2, y2, xrad, yrad, outline);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the top left corner of the rounded rectangle (as if it were a normal rectangle).
y1РеальноThe y coordinate of the top left corner of the rounded rectangle (as if it were a normal rectangle).
x2РеальноThe x coordinate of the bottom right corner of the rounded rectangle (as if it were a normal rectangle).
y2РеальноThe y coordinate of the bottom right corner of the rounded rectangle (as if it were a normal rectangle).
xradРеальноThe radius of the curve along the x axis from the rectangle corners.
yradРеальноThe radius of the curve along the y axis from the rectangle corners.
outlineБулевоWhether the rounded rectangle is drawn filled (false) or as a one pixel wide outline (true).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var dist = point_distance(x, y, mouse_x, mouse_y) / 10;
- draw_set_colour(c_lime);
- draw_roundrect_ext(x - 50, y - 50, x + 50, y + 50, dist, dist, 0);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_set_circle_precision.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_set_circle_precision.htm index aa92f61f4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_set_circle_precision.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_set_circle_precision.htm @@ -1,65 +0,0 @@ - - - - - - draw_set_circle_precision - - - - - - - - - - -

draw_set_circle_precision

-

Чтобы оптимизировать производительность при рисовании окружностей, GameMaker в основном рисует многоугольную форму с достаточным количеством сторон, чтобы она казалась круглой. Однако в зависимости от того, насколько большими или маленькими должны быть ваши круги, вы можете обнаружить, что изменение - этого значения может помочь увеличить производительность игры или сделать круги более красивыми. Точное значение, которое вы можете ввести в эту функцию, - это количество сторон многоугольника окружности, которое может быть любым от 4 до 64, - но должно быть числом, кратным 4, по умолчанию значение равно 24.

-

Circle precision example

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но не отрисовать). - шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_set_circle_precision(precision);

- - - - - - - - - - - -
АргументТипОписание
precisionThe precision of all circles drawn after this function is called.
-

-

Возвращается:

-

-

-

Пример:

-

draw_set_circle_precision(12);

-

Приведенный выше код нарисует все окружности, используя 12-сторонний многоугольник.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_triangle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_triangle.htm index fe8f48080..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_triangle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_triangle.htm @@ -1,95 +0,0 @@ - - - - - - draw_triangle - - - - - - - - - - - -

draw_triangle

-

С помощью этой функции можно нарисовать либо контур треугольника, либо заполненный треугольник.

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_triangle(x1, y1, x2, y2, x3, y3, outline);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the triangle's first corner.
y1РеальноThe y coordinate of the triangle's first corner.
x2РеальноThe x coordinate of the triangle's second corner.
y2РеальноThe y coordinate of the triangle's second corner.
x3РеальноThe x coordinate of the triangle's third corner.
y3РеальноThe y coordinate of the triangle's third corner.
outlineБулевоWhether the triangle is drawn filled (false) or as a one pixel wide outline (true).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_set_colour(c_aqua);
- draw_triangle(50, 50, 200, 50, 50, 200, 0);

-

В результате будет нарисован заполненный аквамаринового цвета равнобедренный прямоугольный треугольник, первый угол которого расположен в точке (50,50), второй - в точке (200,50), а третий - в точке (50,200).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_triangle_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_triangle_colour.htm index bbb90f30c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_triangle_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Basic_Forms/draw_triangle_colour.htm @@ -1,110 +0,0 @@ - - - - - - draw_triangle_colour - - - - - - - - - - - -

draw_triangle_colour

-

С помощью этой функции можно нарисовать либо контур треугольника, либо заполненный треугольник. В случае заливки можно задать индивидуальные цвета для каждой угловой точки, и если эти цвета не совпадают, то получится эффект градиента от одного к другому (настройки цвета будут перекрывать базовый цвет, заданный с помощью функции draw_set_colour()).

-

ПРИМЕЧАНИЕ: Если вы хотите нарисовать фигуру с помощью шейдера, вы должны знать, что большинство шейдеров ожидают следующих входных данных: вершина, текстура, цвет. Однако при использовании этой функции передаются только данные вершин и цвета, поэтому шейдер может ничего не нарисовать (или нарисовать, но неправильно). Если вам нужно рисовать фигуры таким образом, то шейдер должен быть настроен с учетом этого.

-

-

Синтаксис:

-

draw_triangle_colour(x1, y1, x2, y2, x3, y3, col1, col2, col3, outline);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the triangle's first corner.
y1РеальноThe y coordinate of the triangle's first corner.
x2РеальноThe x coordinate of the triangle's second corner.
y2РеальноThe y coordinate of the triangle's second corner.
x3РеальноThe x coordinate of the triangle's third corner.
y3РеальноThe y coordinate of the triangle's third corner.
col1ЦветThe colour of the first corner.
col2ЦветThe colour of the second corner.
col3ЦветThe colour of the third corner.
outlineБулевоWhether the triangle is an outline (true) or filled in (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_triangle_colour(200, 200, 300, 200, 200, 300, c_red, c_blue, c_blue, false);

-

Это позволит нарисовать заполненный равнобедренный прямоугольный треугольник с красным цветом на прямом углу и синим цветом на двух других углах.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/Colour_And_Alpha.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/Colour_And_Alpha.htm index d71861c88..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/Colour_And_Alpha.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/Colour_And_Alpha.htm @@ -1,211 +0,0 @@ - - - - - - Цвет и альфа - - - - - - - - - - -

Цвет и альфа

-

ВGameMaker имеется обширный набор функций для работы с цветом и альфой рисуемого на экране изображения. С помощью этих функций вы можете разделять цвета на составные части, создавать новые цвета и манипулировать альфой рисунка, чтобы изменить то, как различные объекты в вашей игре рисуются вместе.

-

О смешивании изображений с использованием специальных режимов наложения и других функций, специфичных для GPU, см. раздел " Управление GPU".

-

Существует также ряд констант, которые можно использовать в качестве базовых цветов в этих (и других) функциях:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Цвет
ПостояннаяЦветДесятичное значение
c_aqua 16776960
c_black 0
c_blue 16711680
c_dkgray 4210752
c_fuchsia 16711935
c_gray 8421504
c_green 32768
c_lime 65280
c_ltgray 12632256
c_maroon 128
c_navy 8388608
c_olive 32896
c_orange 4235519
c_purple 8388736
c_red 255
c_silver 12632256
c_teal 8421376
c_white 16777215
c_yellow 65535
-

Шестнадцатеричные цвета

-

Вы можете создавать цвета из шестнадцатеричных значений, используя предварительно символ $, и эти значения также можно использовать с различными цветовыми функциями для получения значений компонентов по отдельности. Шестнадцатеричное значение цвета делится на три части в следующем формате: Синий/Зеленый/Красный(или $BBGGRR), поэтому, например, для определения светло-голубого/аква цвета можно использовать:

-

col = $FFCC11;

-

Здесь FF - синий компонент, CC - зеленый компонент и 11 - красный компонент.

-
-

Вы также можете использовать "цвета CSS", которые начинаются со знака хэш/фунт(#). При этом используется формат красный/зеленый/синий(или #RRGGBB), который более широко распространен и совместим с различными другими приложениями.

-

col = #11CCFF;

-

Это тот же цвет, что и в предыдущем блоке кода, только значения RR и BB поменяны местами для соответствия формату.

-

ПРИМЕЧАНИЕ GML также поддерживает формат $AABBGGRR (с шестнадцатеричным значением альфа в начале), однако большинство цветовых функций GML смогут использовать только цветовую часть и игнорировать альфа.

-

-

Функции

-

Следующие функции можно использовать для получения компонентных оттенков, составных оттенков, насыщенности и светлоты выбранного цвета, а также альфа и других свойств:

- -

-

Эти функции можно использовать для создания цветов из необработанных входных значений цветовых компонентов:

- -

-

Следующие функции можно использовать для настройки различных параметров рисования на экране, включая альфа, цвет и смешивание:

- -

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_blue.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_blue.htm index d324f09bf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_blue.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_blue.htm @@ -1,62 +0,0 @@ - - - - - - colour_get_blue - - - - - - - - - - - -

colour_get_blue

-

Эта функция возвращает количество синего цвета, использованного для создания заданного цвета. Значение находится в диапазоне от 0 до 255, где 0 - нет синего, а 255 - весь синий. Следующее изображение иллюстрирует это:

-

Blue colour example

-

Синтаксис:

-

colour_get_blue(col);

- - - - - - - - - - - -
АргументТипОписание
colThe colour to check
-

-

Возвращается:

-

-

-

Пример:

-

b_comp = colour_get_blue(c_teal);

-

Приведенный выше код получит синюю составляющую цветовой константы "c_teal" и сохранит ее значение в переменной "b_comp".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_green.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_green.htm index 40250fa03..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_green.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_green.htm @@ -1,62 +0,0 @@ - - - - - - colour_get_green - - - - - - - - - - - -

colour_get_green

-

Эта функция возвращает количество зеленого цвета, использованного для создания заданного цвета, причем значение находится в диапазоне от 0 до 255, где 0 - нет зеленого, а 255 - весь зеленый. Следующее изображение иллюстрирует это:

-

Green colour example

-

Синтаксис:

-

colour_get_green(col);

- - - - - - - - - - - -
АргументТипОписание
colThe colour to check
-

-

Возвращается:

-

-

-

Пример:

-

g_comp = colour_get_green(c_teal);

-

Приведенный выше код получит зеленый компонент цветовой константы "c_teal" и сохранит его значение в переменной "g_comp".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_hue.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_hue.htm index e355ffe47..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_hue.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_hue.htm @@ -1,63 +0,0 @@ - - - - - - colour_get_hue - - - - - - - - - - - -

colour_get_hue

-

Эта функция возвращает оттенок заданного цвета. Это "чистый" цветовой тон, который является частью метода оттенка, насыщенности и значения (светлоты) для определения цвета. Следующее изображение иллюстрирует, как это значение соответствует - HSV шкале цвета:

-

Get hue example

-

Синтаксис:

-

colour_get_hue(col);

- - - - - - - - - - - -
АргументТипОписание
colThe colour to check
-

-

Возвращается:

-

-

-

Пример:

-

col = merge_colour(colour_get_hue(c_teal), c_white, 0.5);

-

Приведенный выше код получает оттенок, используемый для создания цветовой константы "c_teal", а затем объединяет его с белым в соотношении 50:50, сохраняя полученный цвет в переменной "col".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_red.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_red.htm index 220a1a1b4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_red.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_red.htm @@ -1,62 +0,0 @@ - - - - - - colour_get_red - - - - - - - - - - - -

colour_get_red

-

Эта функция возвращает количество красного цвета, использованного для создания заданного цвета. Значение находится в диапазоне от 0 до 255, где 0 - нет красного, а 255 - весь красный. Следующее изображение иллюстрирует это:

-

Red colour example

-

Синтаксис:

-

colour_get_red(col);

- - - - - - - - - - - -
АргументТипОписание
colThe colour to check
-

-

Возвращается:

-

-

-

Пример:

-

r_comp = colour_get_red(c_teal);

-

Приведенный выше код получит красную составляющую цветовой константы "c_teal" и сохранит значение в переменной "r_comp".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_saturation.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_saturation.htm index 945d3cd0c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_saturation.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_saturation.htm @@ -1,64 +0,0 @@ - - - - - - colour_get_saturation - - - - - - - - - - - -

colour_get_saturation

-

Эта функция возвращает насыщенность заданного цвета. Это количество цветового тона, которое смешивается в конечный цвет, и является частью метода определения цвета по оттенку, насыщенности и значению (светлоте). На следующем рисунке показано - как это значение соответствует цветовой шкале HSV:

-

Get saturation example

-

-

Синтаксис:

-

colour_get_saturation(col);

- - - - - - - - - - - -
АргументТипОписание
colThe colour to check
-

-

Возвращается:

-

-

-

Пример:

-

col = make_colour_hsv(random(255), colour_get_sat(c_teal), 255);

-

Приведенный выше код получает насыщенность, используемую для создания цветовой константы "c_teal", а затем использует это значение для установки случайного цвета с той же насыщенностью, сохраняя полученный цвет в переменной "col".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_value.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_value.htm index 6ebc9ee92..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_value.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/colour_get_value.htm @@ -1,64 +0,0 @@ - - - - - - colour_get_value - - - - - - - - - - - -

colour_get_value

-

Эта функция возвращает значение (светимость) заданного цвета. Это количество "света", которое примешивается к конечному цвету, и является частью метода определения цвета по оттенку, насыщенности и значению. Следующее изображение иллюстрирует - как это значение соответствует цветовой шкале HSV:

-

Get vcalue example

-

-

Синтаксис:

-

colour_get_value(col);

- - - - - - - - - - - -
АргументТипОписание
colThe colour to check
-

-

Возвращается:

-

-

-

Пример:

-

col = make_colour_hsv(random(255), 255, colour_get_value(c_teal));

-

Приведенный выше код получает значение, используемое для создания цветовой константы "c_teal", а затем использует это значение для установки случайного цвета с той же светлотой, сохраняя полученный цвет в переменной "col".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_clear.htm index 97017759f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_clear.htm @@ -1,60 +0,0 @@ - - - - - - draw_clear - - - - - - - - - - -

draw_clear

-

Эта функция может быть использована для очистки всего экрана (без альфа-смешения) до заданного цвета и предназначена только для использования в событии draw экземпляра (при использовании в любом другом событии она не будет отображаться). Она также может быть полезна для очистки поверхностей при их новом создании.

-

-

Синтаксис:

-

draw_clear(col);

- - - - - - - - - - - -
АргументТипОписание
colThe colour with which the screen will be cleared
-

-

Возвращается:

-

-

-

Пример:

-

draw_clear(c_blue);

-

Это очистит экран от синего цвета.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_clear_alpha.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_clear_alpha.htm index b3748c88b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_clear_alpha.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_clear_alpha.htm @@ -1,69 +0,0 @@ - - - - - - draw_clear_alpha - - - - - - - - - - -

draw_clear_alpha

-

Эта функция может использоваться для очистки всего экрана заданным цветом, при этом альфа-компонент места назначения устанавливается на заданное значение. - могут быть настроены на использование альфа-компонента назначения, который вы установили. Эта функция предназначена только для использования в событии рисования экземпляра (она не будет отображаться при использовании в любом другом событии), и она также может быть очень полезна для очистки поверхностей при их новом создании.

-

Стоит отметить, что при использовании модуля HTML5 вы можете использовать эту функцию для того, чтобы сделать фон холста прозрачным, что позволит любым изображениям, используемым в хосте HTML, быть видимыми при запуске игры поверх них. Чтобы добиться этого эффекта - сначала нужно зайти в редактор комнаты и удалить все фоновые слои из редактора комнаты, затем снять флажок с опции Clear View Background, расположенной в Свойствах вида. - Наконец, нужно создать новый объект, поместить его в первую комнату игры и присвоить ему очень большую глубину (например, 10000). Затем в событии Pre Draw используйте эту функцию, чтобы установить альфа-фактор холста на цвет и прозрачность, которые вы хотите. - которые вы хотите иметь.

-

-

Синтаксис:

-

draw_clear_alpha(col, alpha);

- - - - - - - - - - - - - - - -
АргументТипОписание
colThe colour with which the screen will be cleared
alphaThe transparency of the colour with which the screen will be cleared
-

-

Возвращается:

-

-

-

Пример:

-

draw_clear_alpha(c_red, 0.5);

-

Это очистит экран с прозрачностью 50% (0,5) и красным цветом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_get_alpha.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_get_alpha.htm index cde47a040..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_get_alpha.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_get_alpha.htm @@ -1,51 +0,0 @@ - - - - - - draw_get_alpha - - - - - - - - - - - -

draw_get_alpha

-

Эта функция возвращает текущее значение альфы рисунка, которое находится в диапазоне от 0 (полностью прозрачный) до 1 (полностью непрозрачный). Альфа рисунка влияет на прозрачность всех функций рисования и может быть установлена с помощью функции draw_set_alpha().

-

-

Синтаксис:

-

draw_get_alpha()

-

-

Возвращается:

-

-

-

Пример:

-

var _cur_alpha = draw_get_alpha();
- draw_set_alpha(text_alpha);
- draw_text(x, y, text);
- draw_set_alpha(_cur_alpha);

-

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

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_get_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_get_colour.htm index 0dc3dc805..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_get_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_get_colour.htm @@ -1,53 +0,0 @@ - - - - - - draw_get_colour - - - - - - - - - - - -

draw_get_colour

-

Эта функция возвращает текущий цвет рисования, который используется для рисования форм, текста, примитивов и нетекстурированных 3D-моделей. Его можно установить с помощью функции draw_set_colour() функция.

-

-

Синтаксис:

-

draw_get_colour()

-

-

Возвращается:

-

Colour Constant

-

-

Пример:

-

var _cur_color = draw_get_color();
- draw_set_color(text_color);
- draw_text(x, y, text);
- draw_set_color(_cur_color);

-

Приведенный выше код сохраняет текущий цвет рисунка в локальной переменной и изменяет цвет рисунка на основе переменной экземпляра. После отрисовки текста цвет возвращается к значению, сохраненному в локальной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_getpixel.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_getpixel.htm index 31caaf19b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_getpixel.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_getpixel.htm @@ -1,66 +0,0 @@ - - - - - - draw_getpixel - - - - - - - - - - - -

draw_getpixel

-

С помощью этой функции можно получить значение цвета любого пикселя, который рисуется на текущей цели рендеринга. Это означает, что результаты будут зависеть от события, в котором вызывается функция, а также от используемой целевой поверхности. Обратите внимание, что эта функция не возвращает альфа-значения, для этого следует использовать функцию draw_getpixel_ext().

-

ВАЖНО Эта функция приведет к значительному снижению производительности, поэтому ее следует использовать только в случае крайней необходимости.

-

-

Синтаксис:

-

draw_getpixel(x, y);

- - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate of the pixel to check
yThe y coordinate of the pixel to check
-

-

Возвращается:

-

Colour Constant

-

-

Пример:

-

draw_set_colour(draw_getpixel(500,200));

-

Приведенный выше код установит цвет рисунка для всего текста, форм и примитивов на цвет пикселя в точке (500,200) на игровом экране.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_getpixel_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_getpixel_ext.htm index 36e73cad1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_getpixel_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_getpixel_ext.htm @@ -1,70 +0,0 @@ - - - - - - draw_getpixel_ext - - - - - - - - - - - -

draw_getpixel_ext

-

С помощью этой функции вы можете получить полное 32-битное значение AGBR любого пикселя, который отрисовывается на текущей цели рендеринга. Это означает, что результаты будут зависеть от события, в котором вызывается функция, а также от используемой целевой поверхности.

-

ВАЖНО Эта функция приведет к значительному снижению производительности, поэтому ее следует использовать только в случае крайней необходимости.

-

-

Синтаксис:

-

draw_getpixel_ext(x, y);

- - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate of the pixel to check
yThe y coordinate of the pixel to check
-

-

Возвращается:

-

Real

-

-

Пример:

-

col = draw_getpixel_ext(mouse_x, mouse_y);
- alpha = (col >> 24) & 255;
- blue = (col >> 16) & 255;
- green = (col >> 8) & 255;
- red = col & 255;

-

Приведенный выше код получит 32-битное значение цвета в позиции мыши, а затем разделит его на составляющие значения, сохранив их в переменных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_set_alpha.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_set_alpha.htm index 582840aa3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_set_alpha.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_set_alpha.htm @@ -1,68 +0,0 @@ - - - - - - draw_set_alpha - - - - - - - - - - -

draw_set_alpha

-

С помощью этой функции вы можете установить базовый альфа-фактор рисования для игры. Это значение может быть установлено от 0 до 1, при этом 0 будет полностью прозрачным, а 1 - полностью непрозрачным (значение по умолчанию), и будет влиять на все дальнейшее рисование, включая фон, sprites, шрифты, - примитивы и 3D.

-

Обратите внимание, что если вы рисуете любой из активов и передаете аргумент альфа как часть функции (например, при использовании функции draw_sprite_ext()), то значение альфа, установленное здесь, будет - отменяется, поэтому при рисовании sprite с помощью draw_sprite_ext() с аргументом альфа, равным 1, sprite будет нарисован полностью непрозрачным, независимо от альфа, установленного в draw_set_alpha() (это будет работать так же, если использовать draw_self() и установке image_alpha экземпляра). Также обратите внимание, что если экземпляр рисует по умолчанию (т.е. у него есть sprite, но нет события Draw Event), то переменная - image_alpha переменная будет привязана к альфе, заданной с помощью draw_set_alpha(), так что при значении image_alpha равном 1 и альфе рисования 0.5 будет рисоваться sprite с альфой 0.5, а при значении image_alpha равном 0.25 и альфе рисования 0.5 будет рисоваться с альфой 0.5. - 0,5 нарисует sprite с альфой 0,25.

-

-

Синтаксис:

-

draw_set_alpha(alpha);

- - - - - - - - - - - -
АргументТипОписание
alphaThe alpha to set (between 0 and 1)
-

-

Возвращается:

-

-

-

Пример:

-

draw_set_alpha(0.5);
draw_set_colour(c_black); -
draw_text(x+5, y+5, "LEVEL 1");
draw_set_alpha(1); -
draw_set_colour(c_white); -
draw_text(x, y, "LEVEL 1");

-

Приведенный выше код нарисует текст в указанной позиции с эффектом тени, созданным измененными альфой и цветом рисунка.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_set_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_set_colour.htm index 6489c0ff4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_set_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/draw_set_colour.htm @@ -1,69 +0,0 @@ - - - - - - draw_set_colour - - - - - - - - - - -

draw_set_colour

-

С помощью этой функции вы можете установить базовый цвет рисунка для игры.

-

Это повлияет на рисование шрифтов, форм, примитивов и 3D, однако не повлияет на sprites (нарисованные вручную или экземпляром). Если все затронутые графические объекты рисуются с собственными значениями цвета, это значение будет проигнорировано.

-

-

Синтаксис:

-

draw_set_colour(col);

- - - - - - - - - - - - - -
АргументТипОписание
colЦветThe colour to set for drawing.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_set_alpha(0.5);
- draw_set_colour(c_black);
- draw_text(x+5, y+5, "LEVEL 1");
- draw_set_alpha(1);
- draw_set_colour(c_white);
- draw_text(x, y, "LEVEL 1");

-

Приведенный выше код нарисует текст в указанной позиции с эффектом тени, созданным измененными альфа и цветом рисунка.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/make_colour_hsv.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/make_colour_hsv.htm index 226f0f7fc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/make_colour_hsv.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/make_colour_hsv.htm @@ -1,71 +0,0 @@ - - - - - - make_colour_hsv - - - - - - - - - - - -

make_colour_hsv

-

GameMaker предоставляет эту функцию (а также другие) для того, чтобы пользователь мог создавать свои собственные цвета. Эта конкретная функция использует три компонента: оттенок, насыщенность и значение (также известное как "светимость") для создания желаемого цвета. Эти значения находятся в диапазоне от 0 до 255, поэтому с помощью этой функции можно создать 16 777 216 (256*256*256) цветов! Ниже показано изображение того, как выглядят эти компоненты в разделенном виде:

-

Изображение слева представляет собой разбивку отдельных компонентов функции, а справа - иллюстрацию того, как изменение этих компонентов влияет на конечный цвет. Как видите, даже не изменяя оттенок (он остается на уровне 0, красный), мы можем значительно изменить цвет с помощью двух других параметров: насыщенность заставляет тон цвета меняться от серого (0) до чистого (255), а значение - от более темного (0) до более светлого (255).

-

-

Синтаксис:

-

make_colour_hsv(hue, sat, val);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
hueThe hue of the colour
satHow saturated the colour is
valHow dark the colour is
-

-

Возвращается:

-

Colour Constant

-

-

Пример:

-

col = make_colour_hsv(100, 145, 255);

-

Приведенный выше код использует функцию для создания цвета и сохранения его значения в переменной "col" для последующего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/make_colour_rgb.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/make_colour_rgb.htm index 372c97867..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/make_colour_rgb.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/make_colour_rgb.htm @@ -1,72 +0,0 @@ - - - - - - make_colour_rgb - - - - - - - - - - - -

make_colour_rgb

-

GameMaker предоставляет эту функцию (а также другие) для того, чтобы пользователь мог создавать свои собственные цвета. Эта функция состоит из трех компонентов: красного, зеленого и синего компонентов цвета, который вы хотите создать. Эти значения принимаются в диапазоне от 0 до 255, поэтому с помощью этой функции можно создать 16 777 216 (256*256*256) цветов! Ниже показано изображение того, как выглядят эти компоненты в разделенном виде:

-

Изображение слева представляет собой разбивку отдельных компонентов функции, а справа - иллюстрацию того, как изменение этих компонентов влияет на конечный цвет.

-

-

Синтаксис:

-

make_colour_rgb(red, green, blue);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
redThe red component of the colour
greenThe green component of the colour
blueThe blue component of the colour
-

-

Возвращается:

-

Colour Constant

-

-

Пример:

-

col = make_colour_rgb(100, 145, 255);

-

Приведенный выше код использует функцию для создания цвета и сохранения его значения в переменной "col" для последующего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/merge_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/merge_colour.htm index 6005f5362..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/merge_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Colour_And_Alpha/merge_colour.htm @@ -1,70 +0,0 @@ - - - - - - merge_colour - - - - - - - - - - - -

merge_colour

-

С помощью этой функции вы можете взять два цвета и затем объединить их вместе, чтобы получить новый цвет. Количество каждого из составляющих цветов можно определить, изменив аргумент "amount", где значение 0 вернет первый цвет (col1), значение 1 вернет второй цвет (col2), а значение между ними вернет соответствующее смешение. Например, значение 0,5 смешает два цвета поровну. На следующем изображении показано, как это работает на примере слияния красного и синего цветов:

-

Mege colour example

-

Синтаксис:

-

merge_colour(col1, col2, amount);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
col1The first colour to merge
col2The second colour to merge
amountHow much of each colour should be merged. For example, 0 will return col1, 1 will return col2, and 0.5 would return a merge of both colours equally
-

-

Возвращается:

-

Colour Constant

-

-

Пример:

-

col = merge_colour(c_lime, c_orange, 0.5);

-

Приведенный выше код использует функцию для создания цвета путем слияния лайма и оранжевого 50/50, а затем сохраняет его значение в переменной "col" для последующего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Drawing.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Drawing.htm index 83b942574..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Drawing.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Drawing.htm @@ -1,59 +0,0 @@ - - - - - - Рисование - - - - - - - - - - -

Рисование

-

В этом разделе собраны все функции, связанные с рисованием в игровой комнате, а также с управлением процессом рисования (смешивание, альфа, обтравка и т.д...). Существует большое количество различных функций для рисования, и они разделены на следующие категории, чтобы облегчить поиск нужных вам функций:

- -

-

Также доступны две специальные функции, одна из которых используется для включения или отключения события Draw Event для вашего проекта, а другая - для промывки всего конвейера рисования:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/GPU_Control.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/GPU_Control.htm index c1ebe44dc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/GPU_Control.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/GPU_Control.htm @@ -1,96 +0,0 @@ - - - - - - Управление графическим процессором - - - - - - - - - - -

Управление графическим процессором

-

При рисовании предметов в помещении часто требуется более детальный контроль над тем, как именно будет происходить рисование. Вы можете пожелать, чтобы не было альфа-смешения, или вам может потребоваться обтравка, или вам нужно включить или выключить интерполяцию текстуры. Все это возможно - и многое другое! - с помощью функций контроллера GPU, перечисленных ниже. Обратите внимание, что большинство этих функций являются глобальными, и их установка или изменение повлияет на то, как все будет отрисовываться в дальнейшем.

-

Для получения значений различных свойств GPU можно использовать следующие функции:

- -

-

Следующие функции можно использовать для установки значений различных свойств GPU:

- -

-

Обратите внимание, что перед использованием функций режима наложения важно понять, как они работают, чтобы получить правильные результаты при их применении. Для этого мы создали следующее руководство:

- -

-

Наконец, существуют следующие функции, которые можно использовать для работы со стеком GPU:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_alphatestenable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_alphatestenable.htm index 3a699966f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_alphatestenable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_alphatestenable.htm @@ -1,53 +0,0 @@ - - - - - - gpu_get_alphatestenable - - - - - - - - - - - -

gpu_get_alphatestenable

-

С помощью этой функции вы можете проверить, включено ли альфа-тестирование (возвращается true) или нет (возвращается false). Для получения дополнительной информации об альфа-тестировании см. функцию gpu_set_alphatestref().

-

-

Синтаксис:

-

gpu_get_alphatestenable();

-

-

Возвращается:

-

-

-

Пример:

-

if !gpu_get_alphatestenable()
- {
-     gpu_set_alphatestenable(true);
-     gpu_set_alphatestref(128);
- }

-

Приведенный выше код проверит, включено ли альфа-тестирование, и если нет, то включит альфа-тестирование и установит порог теста на 128 (будут отрисованы только пиксели с альфой более 0,5).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_alphatestref.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_alphatestref.htm index 56f698e07..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_alphatestref.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_alphatestref.htm @@ -1,55 +0,0 @@ - - - - - - gpu_get_alphatestref - - - - - - - - - - - -

gpu_get_alphatestref

-

Вы можете использовать эту функцию, чтобы найти текущее значение для ссылки альфа-теста (по умолчанию 0, но вы можете использовать функцию gpu_set_alphatestref() чтобы установить другое значение).

-

-

Синтаксис:

-

gpu_get_alphatestref();

-

-

Возвращается:

-

(from 0 - 255)

-

-

Пример:

-

if gpu_get_alphatestenable()
- {
-     if (gpu_get_alphatestref() < 254)
-     {
-         gpu_set_alphatestref(254);
-     }
- }

-

Приведенный выше код проверяет, включено ли альфа-тестирование, и если включено, то проверяет текущее опорное значение альфа-теста и устанавливает его, если оно меньше 254.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendenable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendenable.htm index 739053195..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendenable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendenable.htm @@ -1,52 +0,0 @@ - - - - - - gpu_get_blendenable - - - - - - - - - - - -

gpu_get_blendenable

-

Эта функция может быть использована для получения состояния альфа-клинки. Если она возвращает значение true, то альфа-смешение включено, а если false, то отключено. По умолчанию она включена, поэтому функция возвращает следующее значение true

-

-

Синтаксис:

-

gpu_get_blendenable();

-

-

Возвращается:

-

-

-

Пример:

-

if gpu_get_blendenable() == false
- {
-     gpu_set_blendenable(true);
- }

-

Приведенный выше код проверяет состояние альфа-смешивания, и если оно отключено, то снова включается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode.htm index e85130472..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode.htm @@ -1,93 +0,0 @@ - - - - - - gpu_get_blendmode - - - - - - - - - - - -

gpu_get_blendmode

-

Эта функция может использоваться для получения текущего режима наложения, используемого для рисования. Возвращаемое значение будет одной из следующих констант (значение по умолчанию bm_normal):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Режим наложения Постоянный
ПостояннаяОписаниеРасширенный режим наложения
bm_normalОбычное смешивание (режим смешивания по умолчанию).(bm_src_alpha, bm_inv_src_alpha)
bm_addАддитивное смешивание. Добавляются значения светимости светлых областей.(bm_src_alpha, bm_one)
bm_subtractВычитающее смешивание. Значения светимости светлых областей вычитаются.(bm_zero, bm_inv_src_colour)
bm_maxМаксимальное смешивание. Аналогично аддитивному смешиванию.(bm_src_alpha, bm_inv_src_colour)
-

-

Синтаксис:

-

gpu_get_blendmode();

-

-

Возвращается:

-

Blend Mode Constant (see above for constants)

-

-

Пример:

-

if gpu_get_blendmode() != bm_normal
- {
-     gpu_set_blendmode(bm_normal);
- }

-

Приведенный выше код получает текущий режим наложения и, если он не bm_normal, то устанавливается на эту константу.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_dest.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_dest.htm index c2d273273..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_dest.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_dest.htm @@ -1,116 +0,0 @@ - - - - - - gpu_get_blendmode_dest - - - - - - - - - - - -

gpu_get_blendmode_dest

-

Эта функция может быть использована для получения текущего коэффициента расширенного режима наложения назначения, используемого для рисования. Возвращаемое значение будет одной из следующих констант ("s" означает значение, взятое из источника, а "d" означает значение из назначения):

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяКоэффициент смешивания (красный, зеленый, синий, альфа)
bm_zero(0, 0, 0, 0)
bm_one(1, 1, 1, 1)
bm_src_colour(Rs, Gs, Bs, As)
bm_inv_src_colour(1-Rs, 1-Gs, 1-Bs, 1-As)
bm_src_alpha(As, As, As, As, As)
bm_inv_src_alpha(1-Ас, 1-Ас, 1-Ас, 1-Ас, 1-Ас)
bm_dest_alpha(Ad, Ad, Ad, Ad, Ad)
bm_inv_dest_alpha(1-Ad, 1-Ad, 1-Ad, 1-Ad, 1-Ad)
bm_dest_colour(Rd, Gd, Bd, Ad)
bm_inv_dest_colour(1-Rd, 1-Gd, 1-Bd, 1-Ad)
bm_src_alpha_sat(f, f, f, 1), где f = min(As, 1-Ad)
-

-

Синтаксис:

-

gpu_get_blendmode_dest();

-

-

Возвращается:

-

Blend Mode Factor Constant (see above table)

-

-

Пример:

-

var bm;
- bm[0] = gpu_get_blendmode_src();
- bm[1] = gpu_get_blendmode_dest();
- gpu_set_blendmode_ext_sepalpha(bm[0], bm[1], bm_inv_src_alpha, bm_inv_dest_colour);

-

Приведенный выше код создает локальный массив и получает текущие коэффициенты смешивания источника и назначения. Этот массив затем используется для манипулирования альфа-компонентом коэффициентов смешивания.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_destalpha.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_destalpha.htm index 52207f058..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_destalpha.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_destalpha.htm @@ -1,116 +0,0 @@ - - - - - - gpu_get_blendmode_destalpha - - - - - - - - - - - -

gpu_get_blendmode_destalpha

-

Эта функция может использоваться для получения текущего альфа-фактора расширенного режима наложения назначения. Возвращаемое значение будет одной из следующих констант ("s" означает значение, взятое из источника, а "d" означает значение из назначения), при этом при рисовании будет использоваться только компонент "A":

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяКоэффициент смешивания (красный, зеленый, синий, альфа)
bm_zero(0, 0, 0, 0)
bm_one(1, 1, 1, 1)
bm_src_colour(Rs, Gs, Bs, As)
bm_inv_src_colour(1-Rs, 1-Gs, 1-Bs, 1-As)
bm_src_alpha(As, As, As, As, As)
bm_inv_src_alpha(1-Ас, 1-Ас, 1-Ас, 1-Ас, 1-Ас)
bm_dest_alpha(Ad, Ad, Ad, Ad, Ad)
bm_inv_dest_alpha(1-Ad, 1-Ad, 1-Ad, 1-Ad, 1-Ad)
bm_dest_colour(Rd, Gd, Bd, Ad)
bm_inv_dest_colour(1-Rd, 1-Gd, 1-Bd, 1-Ad)
bm_src_alpha_sat(f, f, f, 1), где f = min(As, 1-Ad)
-

-

Синтаксис:

-

gpu_get_blendmode_destalpha();

-

-

Возвращается:

-

Blend Mode Factor Constant (see above table)

-

-

Пример:

-

var bm;
- bm[0] = gpu_get_blendmode_srcalpha();
- bm[1] = gpu_get_blendmode_destalpha();
- gpu_set_blendmode_ext_sepalpha(bm_inv_src_alpha, bm_inv_dest_colour, bm[0], bm[1]);

-

Приведенный выше код создает локальный массив и получает текущие исходные и конечные коэффициенты смешивания для альфа-компонента. Затем этот массив используется для работы с RGB-компонентом коэффициентов смешивания.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_ext.htm index d8377f0f4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_ext.htm @@ -1,127 +0,0 @@ - - - - - - gpu_get_blendmode_ext - - - - - - - - - - - -

gpu_get_blendmode_ext

-

Эта функция может использоваться для получения текущего расширенного режима наложения, используемого для рисования. Функция возвращает двухэлементный массив 1D со следующими элементами:

- -

Значениями массива будут одни из следующих констант ("s" обозначает значение, взятое из источника, а "d" - значение из пункта назначения):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Коэффициент режима наложения Постоянная
ПостояннаяКоэффициент смешивания (красный, зеленый, синий, альфа)
bm_zero(0, 0, 0, 0)
bm_one(1, 1, 1, 1)
bm_src_colour(Rs, Gs, Bs, As)
bm_inv_src_colour(1-Rs, 1-Gs, 1-Bs, 1-As)
bm_src_alpha(As, As, As, As, As)
bm_inv_src_alpha(1-Ас, 1-Ас, 1-Ас, 1-Ас, 1-Ас)
bm_dest_alpha(Ad, Ad, Ad, Ad, Ad)
bm_inv_dest_alpha(1-Ad, 1-Ad, 1-Ad, 1-Ad, 1-Ad)
bm_dest_colour(Rd, Gd, Bd, Ad)
bm_inv_dest_colour(1-Rd, 1-Gd, 1-Bd, 1-Ad)
bm_src_alpha_sat(f, f, f, 1), где f = min(As, 1-Ad)
-

Обратите внимание, что вы можете изменить эти значения и передать полный массив в функцию gpu_set_blendmode_ext() функции в качестве единственного аргумента.

-

-

Синтаксис:

-

gpu_get_blendmode_ext();

-

-

Возвращается:

-

Array (2 elements only; see above for constants)

-

-

Пример:

-

var bm = gpu_get_blendmode_ext();
- bm[0] = bm_src_alpha;
- gpu_set_blendmode_ext(bm);

-

Приведенный выше код получает текущий расширенный режим наложения, изменяет источник, а затем снова устанавливает расширенный режим наложения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_ext_sepalpha.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_ext_sepalpha.htm index db7b0c0c7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_ext_sepalpha.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_ext_sepalpha.htm @@ -1,124 +0,0 @@ - - - - - - gpu_get_blendmode_ext_sepalpha - - - - - - - - - - - -

gpu_get_blendmode_ext_sepalpha

-

Эта функция может использоваться для получения текущего расширенного режима наложения, используемого для рисования, разделяя режимы наложения на две части - компонент RGB и компонент Alpha. Функция возвращает 4-элементный массив 1D со следующими элементами в нем:

-
    -
  • [0] = Режим наложения источника за вычетом альфа-компонента (по умолчанию bm_src_alpha (As, As, As)).
  • -
  • [1] = Режим наложения назначения за вычетом альфа-компонента (по умолчанию bm_inv_src_alpha (1-As, 1-As, 1-As)).
  • -
  • [2] = Альфа-компонент источника (по умолчанию bm_src_alpha (As))
  • -
  • [3] = Альфа-компонент назначения (по умолчанию bm_inv_src_alpha (1-As))
  • -
-

Значениями массива будут одни из следующих констант ("s" обозначает значение, взятое из источника, а "d" - значение из пункта назначения):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяКоэффициент смешивания (красный, зеленый, синий, альфа)
bm_zero(0, 0, 0, 0)
bm_one(1, 1, 1, 1)
bm_src_colour(Rs, Gs, Bs, As)
bm_inv_src_colour(1-Rs, 1-Gs, 1-Bs, 1-As)
bm_src_alpha(As, As, As, As, As)
bm_inv_src_alpha(1-Ас, 1-Ас, 1-Ас, 1-Ас, 1-Ас)
bm_dest_alpha(Ad, Ad, Ad, Ad, Ad)
bm_inv_dest_alpha(1-Ad, 1-Ad, 1-Ad, 1-Ad, 1-Ad)
bm_dest_colour(Rd, Gd, Bd, Ad)
bm_inv_dest_colour(1-Rd, 1-Gd, 1-Bd, 1-Ad)
bm_src_alpha_sat(f, f, f, 1), где f = min(As, 1-Ad)
-

При создании расширенных режимов наложения таким образом компоненты RGB будут взяты из одного режима наложения, а компоненты Alpha - из другого, так что, например, если вы используете bm_zero (0, 0, 0, 0, 0) в качестве режима наложения RGB и bm_one в качестве режима наложения alpha, вы получите составной режим наложения (0,0,0,0,1).

-

Обратите внимание, что вы можете изменить эти значения непосредственно в массиве и передать полный массив в функцию в качестве единственного аргумента (как показано в примере ниже).

-

-

Синтаксис:

-

gpu_get_blendmode_ext_sepalpha();

-

-

Возвращается:

-

(4 elements only; see above for constants)

-

-

Пример:

-

var bm = gpu_get_blendmode_ext_sepalpha();
- bm[0] = bm_src_alpha;
- bm[1] = bm_inv_src_alpha;
- gpu_set_blendmode_ext_sepalpha(bm);

-

Приведенный выше код создает локальный массив и получает текущий расширенный режим наложения с отдельными альфа-значениями. Затем этот массив обрабатывается и возвращается для установки режима наложения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_src.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_src.htm index a66111db2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_src.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_src.htm @@ -1,115 +0,0 @@ - - - - - - gpu_get_blendmode_src - - - - - - - - - - - -

gpu_get_blendmode_src

-

Эта функция может использоваться для получения текущего коэффициента расширенного режима наложения источника, используемого для рисования. Возвращаемое значение будет одной из следующих констант ("s" означает значение, взятое из источника, а "d" означает значение из назначения):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяКоэффициент смешивания (красный, зеленый, синий, альфа)
bm_zero(0, 0, 0, 0)
bm_one(1, 1, 1, 1)
bm_src_colour(Rs, Gs, Bs, As)
bm_inv_src_colour(1-Rs, 1-Gs, 1-Bs, 1-As)
bm_src_alpha(As, As, As, As, As)
bm_inv_src_alpha(1-Ас, 1-Ас, 1-Ас, 1-Ас, 1-Ас)
bm_dest_alpha(Ad, Ad, Ad, Ad, Ad)
bm_inv_dest_alpha(1-Ad, 1-Ad, 1-Ad, 1-Ad, 1-Ad)
bm_dest_colour(Rd, Gd, Bd, Ad)
bm_inv_dest_colour(1-Rd, 1-Gd, 1-Bd, 1-Ad)
bm_src_alpha_sat(f, f, f, 1), где f = min(As, 1-Ad)
-

-

Синтаксис:

-

gpu_get_blendmode_src();

-

-

Возвращается:

-

Blend Mode Factor Constant (see above table)

-

-

Пример:

-

var bm;
- bm[0] = gpu_get_blendmode_src();
- bm[1] = gpu_get_blendmode_dest();
- gpu_set_blendmode_ext_sepalpha(bm[0], bm[1], bm_inv_src_alpha, bm_inv_dest_colour);

-

Приведенный выше код создает локальный массив и получает текущие коэффициенты смешивания источника и назначения. Этот массив затем используется для манипулирования альфа-компонентом коэффициентов смешивания.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_srcalpha.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_srcalpha.htm index 631fcfc30..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_srcalpha.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_blendmode_srcalpha.htm @@ -1,115 +0,0 @@ - - - - - - gpu_get_blendmode_srcalpha - - - - - - - - - - - -

gpu_get_blendmode_srcalpha

-

Эта функция используется для получения текущего альфа-фактора расширенного режима наложения источника. Возвращаемое значение будет одной из следующих констант ("s" обозначает значение, взятое из источника, а "d" - значение из назначения), при этом при рисовании будет использоваться только компонент "A":

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяКоэффициент смешивания (красный, зеленый, синий, альфа)
bm_zero(0, 0, 0, 0)
bm_one(1, 1, 1, 1)
bm_src_colour(Rs, Gs, Bs, As)
bm_inv_src_colour(1-Rs, 1-Gs, 1-Bs, 1-As)
bm_src_alpha(As, As, As, As, As)
bm_inv_src_alpha(1-Ас, 1-Ас, 1-Ас, 1-Ас, 1-Ас)
bm_dest_alpha(Ad, Ad, Ad, Ad, Ad)
bm_inv_dest_alpha(1-Ad, 1-Ad, 1-Ad, 1-Ad, 1-Ad)
bm_dest_colour(Rd, Gd, Bd, Ad)
bm_inv_dest_colour(1-Rd, 1-Gd, 1-Bd, 1-Ad)
bm_src_alpha_sat(f, f, f, 1), где f = min(As, 1-Ad)
-

-

Синтаксис:

-

gpu_get_blendmode_srcalpha();

-

-

Возвращается:

-

Blend Mode Factor Constant (see above table)

-

-

Пример:

-

var bm;
- bm[0] = gpu_get_blendmode_srcalpha();
- bm[1] = gpu_get_blendmode_destalpha();
- gpu_set_blendmode_ext_sepalpha(bm_inv_src_alpha, bm_inv_dest_colour, bm[0], bm[1]);

-

Приведенный выше код создает локальный массив и получает текущие исходные и конечные коэффициенты смешивания для альфа-компонента. Затем этот массив используется для работы с RGB-компонентом коэффициентов смешивания.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_colourwriteenable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_colourwriteenable.htm index 31f413829..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_colourwriteenable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_colourwriteenable.htm @@ -1,58 +0,0 @@ - - - - - - gpu_get_colourwriteenable - - - - - - - - - - - -

gpu_get_colourwriteenable

-

Эта функция может быть использована для получения текущих значений разрешения записи цветов. Функция возвращает 4-элементный массив 1D со следующими элементами, которые будут либо true (включено), либо false (отключено). По умолчанию для записи всех цветов установлено значение true:

-
    -
  • [0] = Красный канал включен/выключен
  • -
  • [1] = Зеленый канал включен/выключен
  • -
  • [2] = Синий канал включен/выключен
  • -
  • [3] = Альфа-канал включен/выключен
  • -
-

-

Синтаксис:

-

gpu_get_colourwriteenable();

-

-

Возвращается:

-

(4 elements only; see above for details)

-

-

Пример:

-

var cw = gpu_get_colorwriteenable();
- cw[3] = false;
- gpu_set_colorwriteenable(cw);

-

Приведенный выше код получает текущие значения записи цвета, а затем устанавливает альфа-компонент на false.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_cullmode.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_cullmode.htm index b64f9fe2a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_cullmode.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_cullmode.htm @@ -1,82 +0,0 @@ - - - - - - gpu_get_cullmode - - - - - - - - - - - -

gpu_get_cullmode

-

Эта функция может быть использована для получения режима выбраковки задней поверхности. Возвращаемое значение будет одной из следующих констант (значение по умолчанию cull_noculling):

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Режим выбраковки Постоянный
ПостояннаяОписание
cull_nocullingВыбраковка не будет проводиться
cull_clockwiseВсе треугольники по часовой стрелке будут удалены
cull_counterclockwiseВсе треугольники против часовой стрелки будут удалены
-

-

Синтаксис:

-

gpu_get_cullmode();

-

-

Возвращается:

-

Culling Mode Constant (see above for constants)

-

-

Пример:

-

if gpu_get_cullmode() != cull_clockwise
- {
-     gpu_set_cullmode(cull_clockwise);
- }

-

Приведенный выше код получает текущий режим cull и, если он не cull_clockwise, то устанавливается на эту константу.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_fog.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_fog.htm index 68ff34eb5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_fog.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_fog.htm @@ -1,58 +0,0 @@ - - - - - - gpu_get_fog - - - - - - - - - - - -

gpu_get_fog

-

Эта функция может быть использована для получения настроек тумана. Функция возвращает 4-элементный массив 1D со следующей информацией:

-
    -
  • [0] = включение переключения ( булево значение, либо true, либо false), по умолчанию false
  • -
  • [1] = Постоянный цвет, по умолчанию c_black
  • -
  • [2] = начальное расстояние(Real), по умолчанию 0
  • -
  • [3] = конечное расстояние(Real), по умолчанию 1
  • -
-

Обратите внимание, что вы можете изменить эти значения и передать полный массив в функцию gpu_set_fog() функции в качестве единственного аргумента.

-

-

Синтаксис:

-

gpu_get_fog();

-

-

Возвращается:

-

Array (4 elements only; see above for details)

-

-

Пример:

-

var fog_a = gpu_get_fog();
- fog_a[1] = c_red;
- gpu_set_fog(fog_a);

-

Приведенный выше код получает текущие настройки тумана, затем устанавливает элемент color массива на c_red, после чего снова устанавливает туман, используя измененный массив.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_state.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_state.htm index 8d29f2274..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_state.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_state.htm @@ -1,49 +0,0 @@ - - - - - - gpu_get_state - - - - - - - - - - - -

gpu_get_state

-

Эта функция получает текущее состояние GPU, возвращая его в виде карты DS Map. Этой картой можно манипулировать или даже сохранить, а затем вернуть эту карту в GPU с помощью функции gpu_set_state().

-

-

Синтаксис:

-

gpu_get_state();

-

-

Возвращается:

-

DS Map ID

-

-

Пример:

-

gpu_map = gpu_get_state();

-

Приведенный выше код сохраняет текущее состояние GPU в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_texfilter.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_texfilter.htm index 8756eaa07..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_texfilter.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_texfilter.htm @@ -1,59 +0,0 @@ - - - - - - gpu_get_texfilter - - - - - - - - - - - -

gpu_get_texfilter

-

С помощью этой функции вы можете проверить, включена ли фильтрация текстуры (линейная интерполяция) (возвращается true) или нет (возвращается false). Для получения дополнительной информации о фильтрации текстур см. функцию gpu_set_texfilter().

-

ПРИМЕЧАНИЕ: На цели HTML5 эта функция будет работать только при включенном WebGL.

-

-

Синтаксис:

-

gpu_get_texfilter();

-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if gpu_get_texfilter()
- {
-     gpu_set_texfilter(false);
- }
- else
- {
-     gpu_set_texfilter(true);
- }

-

Приведенный выше код проверяет, включена или выключена фильтрация текстур, и переключает ее соответствующим образом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_texfilter_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_texfilter_ext.htm index d47ec570e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_texfilter_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_texfilter_ext.htm @@ -1,74 +0,0 @@ - - - - - - gpu_get_texfilter_ext - - - - - - - - - - - -

gpu_get_texfilter_ext

-

С помощью этой функции вы можете проверить, включена ли интерполяция текстуры (линейная интерполяция) (возвращается true) или нет (возвращается false) для данной текстуры шейдерного сэмплера.

-

ПРИМЕЧАНИЕ: На цели HTML5 эта функция будет работать только при включенном WebGL.

-

-

Синтаксис:

-

gpu_get_texfilter_ext(sampler_id);

- - - - - - - - - - - - - -
АргументТипОписание
sampler_idРучка шейдерного пробоотборникаThe sampler id from the shader.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var s_tex = shader_get_sampler_index(shader_glass, "s_NoiseSampler");
- if (gpu_get_texfilter_ext(s_tex))
- {
-     gpu_set_texfilter_ext(s_tex, false);
- }
- else
- {
-     gpu_set_texfilter_ext(s_tex, true);
- }

-

Приведенный выше код проверяет, включена или выключена фильтрация текстур для определенного ID сэмплера (хранится в локальной переменной), и переключает ее соответствующим образом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_texrepeat.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_texrepeat.htm index e578c9f05..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_texrepeat.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_texrepeat.htm @@ -1,56 +0,0 @@ - - - - - - gpu_get_texrepeat - - - - - - - - - - - -

gpu_get_texrepeat

-

С помощью этой функции вы можете проверить, включено ли повторение текстуры (возвращается true) или нет (возвращается false). Для получения дополнительной информации о повторении текстуры см. функцию gpu_set_texrepeat().

-

-

Синтаксис:

-

gpu_get_texrepeat();

-

-

Возвращается:

-

-

-

Пример:

-

if gpu_get_texrepeat()
- {
-     gpu_set_texrepeat(false);
- }
- else
- {
-     gpu_set_texrepeat(true);
- }

-

Приведенный выше код проверяет, включено или выключено повторение текстуры, и переключает его соответствующим образом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_texrepeat_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_texrepeat_ext.htm index f1cf3cc12..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_texrepeat_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_texrepeat_ext.htm @@ -1,65 +0,0 @@ - - - - - - gpu_get_texrepeat_ext - - - - - - - - - - - -

gpu_get_texrepeat_ext

-

С помощью этой функции вы можете проверить, включено ли повторение текстуры (возвращается true) или нет (возвращается false) для данной текстуры шейдерного сэмплера.

-

-

Синтаксис:

-

gpu_get_texrepeat_ext(sampler_id);

- - - - - - - - - - - -
АргументТипОписание
sampler_idThe sampler id from the shader.
-

-

Возвращается:

-

-

-

Пример:

-

var s_tex = shader_get_sampler_index(shader_glass, "s_NoiseSampler");
- if (!gpu_get_texrepeat_ext(s_tex))
- {
-     gpu_set_texrepeat_ext(s_tex, true);
- }

-

Приведенный выше код проверяет, выключена ли фильтрация текстур для определенного ID сэмплера (хранится в локальной переменной), и включает ее, если нет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_zfunc.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_zfunc.htm index b5c1a73d9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_zfunc.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_zfunc.htm @@ -1,107 +0,0 @@ - - - - - - gpu_get_zfunc - - - - - - - - - - - -

gpu_get_zfunc

-

Эта функция может быть использована для получения режима сравнения z. Возвращаемое значение будет одной из следующих констант (значение по умолчанию - cmpfunc_lessequal):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Функция сравнения Постоянная
ПостояннаяОписание
cmpfunc_neverНикогда
cmpfunc_lessМеньше
cmpfunc_equalРавный
cmpfunc_lessequalМеньше или равно
cmpfunc_greaterБольшая
cmpfunc_notequalНе равны
cmpfunc_greaterequalБольше или равно
cmpfunc_alwaysВсегда
-

-

Синтаксис:

-

gpu_get_zfunc();

-

-

Возвращается:

-

Comparison Function Constant (see table above)

-

-

Пример:

-

if gpu_get_zfunc() != cmpfunc_greater
- {
-     gpu_set_zfunc(cmpfunc_greater);
- }

-

Приведенный выше код проверяет, установлен ли метод z-тестирования на cmpfunc_greater, и если нет, то он устанавливается на эту константу.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_ztestenable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_ztestenable.htm index 50df85b2d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_ztestenable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_ztestenable.htm @@ -1,52 +0,0 @@ - - - - - - gpu_get_ztestenable - - - - - - - - - - - -

gpu_get_ztestenable

-

Эта функция может быть использована для получения информации о том, включено ли z-тестирование (функция возвращает true) или нет (функция возвращает false). По умолчанию z-тестирование отключено, поэтому функция возвращает false.

-

-

Синтаксис:

-

gpu_get_ztestenable();

-

-

Возвращается:

-

-

-

Пример:

-

if gpu_get_ztestenable() == false
- {
-     gpu_set_ztestenable(true);
- }

-

Приведенный выше код проверяет, включено или нет z-тестирование, и если оно отключено, то снова включается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_zwriteenable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_zwriteenable.htm index 8f6b2cb1d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_zwriteenable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_get_zwriteenable.htm @@ -1,52 +0,0 @@ - - - - - - gpu_get_zwriteenable - - - - - - - - - - - -

gpu_get_zwriteenable

-

Эта функция может быть использована для получения информации о том, включена ли z-запись (функция возвращает true) или нет (функция возвращает false). По умолчанию значение z-writing включено, поэтому функция возвращает true.

-

-

Синтаксис:

-

gpu_get_zwriteenable();

-

-

Возвращается:

-

-

-

Пример:

-

if gpu_get_zwriteenable() == false
- {
-     gpu_set_zwriteenable(true);
- }

-

Приведенный выше код проверяет, включена ли z-запись или нет, и если она отключена, то снова включается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_pop_state.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_pop_state.htm index 5990d11a1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_pop_state.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_pop_state.htm @@ -1,56 +0,0 @@ - - - - - - gpu_pop_state - - - - - - - - - - -

gpu_pop_state

-

Эта функция извлекает предыдущее состояние GPU из стека и применяет его. См. gpu_push_state() для получения дополнительной информации.

-

-

Синтаксис:

-

gpu_pop_state();

-

-

Возвращается:

-

-

-

Пример:

-

gpu_push_state();
- gpu_set_blendmode(bm_add);
- gpu_set_blendenable(false);
- gpu_set_cullmode(true);
- with (obj_Effect_Parent)
- {
-     draw_self();
- }
- gpu_pop_state();

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_push_state.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_push_state.htm index c5ecfb47e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_push_state.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_push_state.htm @@ -1,56 +0,0 @@ - - - - - - gpu_push_state - - - - - - - - - - -

gpu_push_state

-

С помощью этой функции вы можете переместить текущее состояние GPU в стек, чтобы использовать его позже. Обычно вы используете эту функцию, если хотите "сохранить" текущее состояние GPU (такие вещи, как режим наложения, запись альфа-канала, свертывание и т.д... будут перемещены в стек), затем нарисовать что-то с другими настройками, а затем сбросить стек GPU на прежний уровень (вызвав функцию gpu_pop_state()).

-

-

Синтаксис:

-

gpu_push_state();

-

-

Возвращается:

-

-

-

Пример:

-

gpu_push_state();
- gpu_set_blendmode(bm_add);
- gpu_set_blendenable(false);
- gpu_set_cullmode(true);
- with (obj_Effect_Parent)
- {
-     draw_self();
- }
- gpu_pop_state();

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_alphatestenable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_alphatestenable.htm index 3d6ef21d7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_alphatestenable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_alphatestenable.htm @@ -1,66 +0,0 @@ - - - - - - gpu_set_alphatestenable - - - - - - - - - - -

gpu_set_alphatestenable

-

Эта функция включает или отключает альфа-тестирование вашей игры (по умолчанию она отключена). Включив альфа-тестирование, вы можете использовать сопутствующую функцию gpu_set_alphatestref() для установки значения "отсечки", при котором все значения альфа-спектра будут установлены в 0. На изображении ниже показана разница, которую можно увидеть при включении и выключении альфа-тестирования:

-

Alpha test example

-

ПРИМЕЧАНИЕ: Эта функция может негативно повлиять на производительность на устройствах iOS и Android.

-

-

Синтаксис:

-

gpu_set_alphatestenable(enable);

- - - - - - - - - - - -
АргументТипОписание
enableEnable or disable alpha testing (true / false)
-

-

Возвращается:

-

-

-

Пример:

-

if !gpu_get_alphatestenable()
- {
-     gpu_set_alphatestenable(true);
-     gpu_set_alphatestref(128);
- }

-

Приведенный выше код проверит, включено ли альфа-тестирование, и если нет, то включит альфа-тестирование и установит порог теста на 128 (будут отрисованы только пиксели с альфой более 0,5).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_alphatestref.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_alphatestref.htm index b213ac148..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_alphatestref.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_alphatestref.htm @@ -1,66 +0,0 @@ - - - - - - gpu_set_alphatestref - - - - - - - - - - -

gpu_set_alphatestref

-

Эта функция устанавливает опорное значение для альфа-тестирования (если оно было включено с помощью кнопки gpu_set_alphatestenable()). Это порог "отсечения", при котором пиксели с альфой не будут отрисовываться.

-

В принципе, если у вас это значение установлено в 0, а линейная интерполяция включена (либо в Опциях игры, либо с помощью функции gpu_set_texfilter()), вы все равно можете получить визуальные ошибки на краях перекрывающихся объектов. Это происходит потому, что у вас могут быть почти полностью прозрачные области, которые блокируют то, что нарисовано за ними, но если вы установите это опорное значение, например, 254 (т.е. на единицу ниже максимального), это гарантирует, что будут нарисованы только 100% непрозрачные пиксели. Вы также можете отключить интерполяцию текстур, что обычно позволяет использовать значения по умолчанию без проблем и без необходимости использовать эту функцию вообще, однако многое зависит от исходного произведения искусства.

-

ПРИМЕЧАНИЕ: Это расширенная функция рисования, поэтому если вы не уверены, нужна ли она вам или нет, или не знаете точно, что она делает, вам, вероятно, лучше не использовать ее, так как она может серьезно испортить то, как рисуется ваша игра.

-

-

Синтаксис:

-

gpu_set_alphatestref(val);

- - - - - - - - - - - -
АргументТипОписание
valSets the reference value for alpha testing from 0 to 255 (default value is 0)
-

-

Возвращается:

-

-

-

Пример:

-

if !gpu_get_alphatestenable()
- {
-     gpu_set_alphatestenable(true);
-     gpu_set_alphatestref(128);
- }

-

Приведенный выше код проверит, включено ли альфа-тестирование, и если нет, то включит альфа-тестирование и установит порог теста на 128 (будут отрисованы только пиксели с альфой более 0,5).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_blendenable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_blendenable.htm index 1804c9ef9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_blendenable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_blendenable.htm @@ -1,62 +0,0 @@ - - - - - - gpu_set_blendenable - - - - - - - - - - -

gpu_set_blendenable

-

Эта функция может использоваться для включения и выключения альфа-смешения. В принципе, если установить значение false, все рисуемые изображения будут на 100% непрозрачными, то есть все прозрачные или полупрозрачные области sprite или фона будут видны как сплошной цвет. - будут видны как сплошной цвет. Хорошей идеей является отключение альфа-смешивания при любой возможности (особенно при разработке для мобильных устройств), так как это значительно увеличивает скорость отрисовки.

-

Alpha blend example

-

Синтаксис:

-

gpu_set_blendenable(enable);

- - - - - - - - - - - -
АргументТипОписание
enableEnable or disable alpha blending value (true или false).
-

-

Возвращается:

-

-

-

Пример:

-

gpu_set_blendenable(false);
draw_sprite(spr_Background, 0, 0, 0);
gpu_set_blendenable(true); -

-

Приведенный выше код отключает альфа-смешивание для рисования фона sprite, а затем снова включает его для продолжения рисования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_blendmode.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_blendmode.htm index 4587b7908..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_blendmode.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_blendmode.htm @@ -1,105 +0,0 @@ - - - - - - gpu_set_blendmode - - - - - - - - - - -

gpu_set_blendmode

-

Когда GameMaker рисует пиксель, есть исходный цвет (цвет пикселя, который мы собираемся нарисовать) и цвет назначения (цвет, который уже есть в пикселе, к которому мы рисуем), поэтому при определении нового цвета пикселя исходный и конечный цвета рассчитываются в соответствии с выбранным режимом наложения. Каждый компонент цвета хранится как значение с плавающей точкой между 0 и 1, а новый цвет вычисляется путем умножения каждого компонента исходного цвета на некоторый коэффициент и умножения каждого компонента цвета назначения на другой коэффициент, а затем сложения результатов по компонентам.

-

Эта функция позволяет установить режим наложения четырьмя основными способами, используя следующие константы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписаниеРасширенный режим наложения
bm_normalОбычное смешивание (режим смешивания по умолчанию).(bm_src_alpha, bm_inv_src_alpha)
bm_addАддитивное смешивание. Добавляются значения светимости светлых областей.(bm_src_alpha, bm_one)
bm_subtractВычитающее смешивание. Значения светимости светлых областей вычитаются.(bm_zero, bm_inv_src_colour)
bm_maxМаксимальное смешивание. Аналогично аддитивному смешиванию.(bm_src_alpha, bm_inv_src_colour)
-

Как видно из приведенной выше таблицы, эти четыре режима наложения на самом деле являются композициями расширенных режимов наложения, которые можно найти на странице с описанием gpu_set_blendmode_ext().

-

Чтобы максимально использовать режимы наложения и понять, как они работают и как влияют на конечное изображение, выводимое на экран, мы рекомендуем вам ознакомиться со следующим руководством:

- -

-

Синтаксис:

-

gpu_set_blendmode(mode);

- - - - - - - - - - - - - -
АргументТипОписание
modeРежим наложения ПостоянныйThe blend mode to use (see the table above)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

gpu_set_blendmode(bm_add);
- draw_circle_colour(100, 100, 50, c_white, c_black, 0);
- gpu_set_blendmode(bm_normal);

-

Это превратит черный цвет в прозрачность, создавая эффект "свечения" за счет того, что белый цвет сильно выражен снаружи и постепенно ослабевает от центра круга. Режим наложения сбрасывается после рисования круга, чтобы аддитивное смешивание не применялось ко всему остальному после него.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_blendmode_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_blendmode_ext.htm index 275438fa3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_blendmode_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_blendmode_ext.htm @@ -1,151 +0,0 @@ - - - - - - gpu_set_blendmode_ext - - - - - - - - - - -

gpu_set_blendmode_ext

-

Когда GameMaker рисует пиксель, есть исходный цвет (цвет пикселя, который мы собираемся нарисовать) и цвет назначения (цвет, который уже есть в пикселе, к которому мы рисуем), поэтому при определении нового цвета пикселя исходный и конечный цвета рассчитываются в соответствии с выбранным режимом наложения. Каждый компонент цветов хранится как значение с плавающей точкой между 0 и 1, а новый цвет вычисляется путем умножения каждого компонента исходного цвета на некоторый коэффициент и умножения каждого компонента цвета назначения на другой коэффициент, а затем суммирования результатов по компонентам.

-

Эта функция позволяет установить различные компоненты, которые должны быть сложены вместе для создания пользовательского режима наложения. Источник и место назначения имеют красный, зеленый, синий и альфа компоненты, и на следующей диаграмме RGBA источника считаются (Rs, Gs, Bs, As), а место назначения - (Rd, Gd, Bd, Ad). Одиннадцать констант, доступных для использования, могут быть как источником, так и получателем (или обоими) при использовании в этой функции.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяКоэффициент смешивания (красный, зеленый, синий, альфа)
bm_zero(0, 0, 0, 0)
bm_one(1, 1, 1, 1)
bm_src_colour(Rs, Gs, Bs, As)
bm_inv_src_colour(1-Rs, 1-Gs, 1-Bs, 1-As)
bm_src_alpha(As, As, As, As, As)
bm_inv_src_alpha(1-Ас, 1-Ас, 1-Ас, 1-Ас, 1-Ас)
bm_dest_alpha(Ad, Ad, Ad, Ad, Ad)
bm_inv_dest_alpha(1-Ad, 1-Ad, 1-Ad, 1-Ad, 1-Ad)
bm_dest_colour(Rd, Gd, Bd, Ad)
bm_inv_dest_colour(1-Rd, 1-Gd, 1-Bd, 1-Ad)
bm_src_alpha_sat(f, f, f, 1), где f = min(As, 1-Ad)
-

ВАЖНО! HTML5 без включенного WebGL не сможет корректно отображать следующие режимы:

-
    -
  • bm_src_colour
  • -
  • bm_inv_src_colour
  • -
  • bm_dest_colour
  • -
  • bm_inv_dest_colour
  • -
  • bm_src_alpha_sat
  • -
-

-

Обратите внимание, что вы можете передать этой функции либо два отдельных аргумента, либо массив аргументов (как возвращает функция gpu_get_blendmode_ext() например). В случае предоставления массива он должен содержать следующие два элемента:

-
    -
  • [0] = Режим наложения источника (по умолчанию bm_src_alpha)
  • -
  • [1] = Режим наложения по месту назначения (по умолчанию bm_inv_src_alpha)
  • -
-

Чтобы максимально использовать режимы наложения и понять, как они работают и как влияют на конечное изображение, выводимое на экран, мы рекомендуем вам ознакомиться со следующим руководством:

- -

-

Синтаксис:

-

gpu_set_blendmode_ext(src, dest);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
srcКоэффициент режима наложения ПостояннаяSource blend mode factor (see constants above).
destКоэффициент режима наложения ПостояннаяDestination blend mode factor (see constants above)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

gpu_set_blendmode_ext(bm_src_alpha, bm_one);
- draw_circle_colour(100, 100, 50, c_white, c_black, 0);
- gpu_set_blendmode(bm_normal);

-

Это превратит черный цвет в прозрачность, создавая эффект "свечения" за счет того, что белый цвет сильно выражен снаружи и постепенно ослабевает от центра круга. Режим наложения сбрасывается после рисования круга, чтобы аддитивное смешивание не применялось ко всему остальному после него.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_blendmode_ext_sepalpha.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_blendmode_ext_sepalpha.htm index ffa0d0f47..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_blendmode_ext_sepalpha.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_blendmode_ext_sepalpha.htm @@ -1,165 +0,0 @@ - - - - - - gpu_set_blendmode_ext_sepalpha - - - - - - - - - - -

gpu_set_blendmode_ext_sepalpha

-

Когда GameMaker рисует пиксель, есть исходный цвет (цвет пикселя, который мы собираемся нарисовать) и цвет назначения (цвет, который уже есть в пикселе, к которому мы рисуем), поэтому при определении нового цвета пикселя исходный и конечный цвета рассчитываются в соответствии с выбранным режимом наложения. Каждый компонент цвета хранится как значение с плавающей точкой между 0 и 1, а новый цвет вычисляется путем умножения каждого компонента исходного цвета на некоторый коэффициент и умножения каждого компонента цвета назначения на другой коэффициент, а затем суммирования результатов по компонентам.

-

Эта функция позволяет задать различные компоненты, которые должны быть сложены вместе для создания пользовательского режима наложения, выбирая различные части различных коэффициентов режима наложения для компонентов RGB и компонента Alpha. Таким образом, аргументы "src" и "dest" будут использовать первые 3 значения режима наложения (RGB), а аргументы "alphasrc" и "alphadest" - последнюю часть коэффициента режима наложения. Например, если вы задали источник RGB как bm_zero, то будет использоваться (0, 0, 0). Если затем задать для источника Alpha значение bm_one, то будет использовано значение (1), что даст окончательный режим наложения источника (0, 0, 0, 0, 1).

-

На следующей диаграмме показаны значения RGBA для каждого режима наложения, где (Rs, Gs, Bs, As) считаются исходными значениями, а (Rd, Gd, Bd, Ad) - конечными. Одиннадцать констант, доступных для использования, могут быть как исходными, так и конечными (или и теми, и другими) при использовании в этой функции.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяКоэффициент смешивания (красный, зеленый, синий, альфа)
bm_zero(0, 0, 0, 0)
bm_one(1, 1, 1, 1)
bm_src_colour(Rs, Gs, Bs, As)
bm_inv_src_colour(1-Rs, 1-Gs, 1-Bs, 1-As)
bm_src_alpha(As, As, As, As, As)
bm_inv_src_alpha(1-Ас, 1-Ас, 1-Ас, 1-Ас, 1-Ас)
bm_dest_alpha(Ad, Ad, Ad, Ad, Ad)
bm_inv_dest_alpha(1-Ad, 1-Ad, 1-Ad, 1-Ad, 1-Ad)
bm_dest_colour(Rd, Gd, Bd, Ad)
bm_inv_dest_colour(1-Rd, 1-Gd, 1-Bd, 1-Ad)
bm_src_alpha_sat(f, f, f, 1), где f = min(As, 1-Ad)
-

ВАЖНО! HTML5 без включенного WebGL не сможет корректно отображать следующие режимы:

-
    -
  • bm_src_colour
  • -
  • bm_inv_src_colour
  • -
  • bm_dest_colour
  • -
  • bm_inv_dest_colour
  • -
  • bm_src_alpha_sat
  • -
-

-

Обратите внимание, что вы можете либо предоставить четыре отдельных аргумента этой функции, либо массив аргументов (как возвращает функция gpu_get_blendmode_ext_sepalpha() например). В случае предоставления массива он должен состоять из следующих четырех элементов:

-
    -
  • [0] = Режим наложения источника за вычетом альфа-компонента (по умолчанию bm_src_alpha (As, As, As)).
  • -
  • [1] = Режим наложения назначения за вычетом альфа-компонента (по умолчанию bm_inv_src_alpha (1-As, 1-As, 1-As)).
  • -
  • [2] = Альфа-компонент источника (по умолчанию bm_src_alpha (As))
  • -
  • [3] = Альфа-компонент назначения (по умолчанию bm_inv_src_alpha (1-As))
  • -
-

Чтобы максимально использовать режимы наложения и понять, как они работают и как влияют на конечное изображение, выводимое на экран, мы рекомендуем вам ознакомиться со следующим руководством:

- -

-

Синтаксис:

-

gpu_set_blendmode_ext_sepalpha(src, dest, alphasrc, alphadest);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
srcКоэффициент режима наложения ПостояннаяSource blend mode factor for RGB (see constants above).
destКоэффициент режима наложения ПостояннаяDestination blend mode factor for RGB (see constants above)
alphasrcКоэффициент режима наложения ПостояннаяSource blend mode factor Alpha (see constants above).
alphadestКоэффициент режима наложения ПостояннаяDestination blend mode factor Alpha (see constants above)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var bm = gpu_get_blendmode_ext_sepalpha();
- bm[0] = bm_src_alpha;
- bm[1] = bm_inv_src_alpha;
- gpu_set_blendmode_ext_sepalpha(bm);

-

Приведенный выше код создает локальный массив и получает текущий расширенный режим наложения с отдельными альфа-значениями. Затем этот массив обрабатывается и возвращается для установки режима наложения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_colourwriteenable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_colourwriteenable.htm index 6c14df77c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_colourwriteenable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_colourwriteenable.htm @@ -1,86 +0,0 @@ - - - - - - gpu_set_colourwriteenable - - - - - - - - - - -

gpu_set_colourwriteenable

-

С помощью этой функции можно включить или выключить цветовые каналы и альфа-канал для всего дальнейшего рисования. Например, вы можете использовать эту функцию для создания поверхностей только с альфа-каналом (отключите запись RGB перед использованием поверхности) или для создания специальных эффектов при рисовании на экране. Значение по умолчанию для каждого из компонентов равно true, и может быть предоставлено либо как четыре уникальных аргумента, либо как 4-элементный одномерный массив со следующими элементами, которые будут либо true (включен), либо false (отключен):

-
    -
  • [0] = Красный канал включен/выключен
  • -
  • [1] = Зеленый канал включен/выключен
  • -
  • [2] = Синий канал включен/выключен
  • -
  • [3] = Альфа-канал включен/выключен
  • -
-

-

Синтаксис:

-

gpu_set_colourwriteenable(red, green, blue, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
redБулевоEnable/disable the red channel
greenБулевоEnable/disable the green channel
blueБулевоEnable/disable the blue channel
alphaБулевоEnable/disable the alpha channel
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var cw = gpu_get_colorwriteenable();
- cw[3] = false;
- gpu_set_colorwriteenable(cw);

-

Приведенный выше код получает текущие значения записи цвета, а затем устанавливает альфа-компонент на false.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_cullmode.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_cullmode.htm index 2078c5582..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_cullmode.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_cullmode.htm @@ -1,89 +0,0 @@ - - - - - - gpu_set_cullmode - - - - - - - - - - -

gpu_set_cullmode

-

Эта функция используется для установки режима отбраковки задней стороны. Многоугольник (примитив) имеет переднюю и заднюю стороны. Передней считается та сторона, где вершины определены в порядке против часовой стрелки. Обычно рисуются обе стороны, но если вы создаете замкнутую форму (например, пирамиду), то это пустая трата вычислительной мощности, поскольку обратная сторона треугольника никогда не будет видна. Именно в таких случаях можно включить отбраковку обратной стороны, так как это экономит примерно половину времени рисования, хотя это означает, что вы должны определить многоугольники правильным образом, чтобы избежать проблем.

-

Используемое значение cull mode должно быть одной из следующих констант (значение по умолчанию - cull_noculling):

- - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
cull_nocullingВыбраковка не будет проводиться
cull_clockwiseВсе треугольники по часовой стрелке будут удалены
cull_counterclockwiseВсе треугольники против часовой стрелки будут удалены
-

-

Синтаксис:

-

gpu_set_cullmode(cullmode);

- - - - - - - - - - - - - -
АргументТипОписание
cullmodeРежим выбраковки ПостоянныйThe cull mode to use (see list above)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if gpu_get_cullmode() != cull_clockwise
- {
-     gpu_set_cullmode(cull_clockwise);
- }

-

Приведенный выше код получает текущий режим cull и, если он не cull_clockwise, то устанавливается на эту константу.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_fog.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_fog.htm index 6fa01fcb3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_fog.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_fog.htm @@ -1,88 +0,0 @@ - - - - - - gpu_set_fog - - - - - - - - - - -

gpu_set_fog

-

Эта функция может использоваться для включения или отключения рисования тумана. Туман можно использовать в 3D-играх, чтобы объекты вдали выглядели блеклыми или даже невидимыми, что помогает создать атмосферу и скрыть тот факт, что вы не рисуете объекты, находящиеся далеко.

-

Вы задаете, включен ли он (true) или выключен (false), цвет, который туман должен использовать для смешивания, а также начальное и конечное расстояния рисования. Значения расстояния - это, по сути, значения глубины в пикселях, и они относятся к положению камеры.

-

Например, позиция 0 является ближайшей к камере, и с каждым увеличением она становится все дальше. По умолчанию камера вида располагается на глубине -16000, поэтому если вы хотите, чтобы туман начинался на глубине 0 и заканчивался на глубине 1000, установите начальное расстояние 16000, а конечное - 17000.

-

Функция может принимать четыре отдельных аргумента (приведенных выше) или один массив со следующей структурой (в примере кода ниже показан этот метод):

-
    -
  • [0] = включение переключения (булево значение, либо true, либо false), по умолчанию false
  • -
  • [1] = цвет (реальный), по умолчанию c_black
  • -
  • [2] = начальное расстояние (реальное), по умолчанию 0
  • -
  • [3] = конечное расстояние (реальное), по умолчанию 1
  • -
-

-

Синтаксис:

-

gpu_set_fog(enable, colour, start, end);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
enableБулевоEnable or disable fog
colourЦветThe fog colour
startРеальноThe distance to start applying fog from (relative to the camera)
endРеальноThe distance to end the fog (relative to the camera)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var fog_a = gpu_get_fog();
- fog_a[1] = c_red;
- gpu_set_fog(fog_a);

-

Приведенный выше код получает текущие настройки тумана, затем устанавливает элемент color массива на c_red, после чего снова устанавливает туман, используя измененный массив.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_state.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_state.htm index cb2161746..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_state.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_state.htm @@ -1,60 +0,0 @@ - - - - - - gpu_set_state - - - - - - - - - - -

gpu_set_state

-

Эта функция устанавливает текущее состояние GPU, используя переданную карту DS Map. Переданная карта может быть создана с помощью функции gpu_get_state().

-

-

Синтаксис:

-

gpu_set_state(ds_map);

- - - - - - - - - - - -
АргументТипОписание
ds_mapThe GPU state to set as a DS Map.
-

-

Возвращается:

-

-

-

Пример:

-

gpu_set_state(gpu_map);

-

Приведенный выше код устанавливает состояние GPU, используя карту, заданную в переменной "gpu_map".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_texfilter.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_texfilter.htm index 27fa64f02..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_texfilter.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_texfilter.htm @@ -1,70 +0,0 @@ - - - - - - gpu_set_texfilter - - - - - - - - - - -

gpu_set_texfilter

-

Эта функция может быть использована для настройки фильтрации текстур (линейной интерполяции) всех изображений, рисуемых на игровом экране. Если эта функция включена (true), то все текстуры будут сглаживаться при отрисовке (сюда входит и sprites, так как они тоже считаются текстурами), что означает, что при масштабировании или перемещении, если соотношение пикселей не 1:1, будет наблюдаться "размазывание" по различным пикселям, из-за чего изображения могут выглядеть размытыми в зависимости от используемого художественного стиля. Если этот параметр отключен (false), то при масштабировании или перемещении изображения будут отрисовываться по ближайшему пикселю, что может привести к появлению "блочных" изображений. Значение по умолчанию - false, его также можно изменить в глобальных опциях игры для отдельных целевых платформ.

-

ПРИМЕЧАНИЕ:Эта настройка отменяет любую интерполяцию текстурной стадии, установленную для шейдеров с помощью функции gpu_set_texfilter_ext().

-

ПРИМЕЧАНИЕ: На цели HTML5 эта функция будет работать только при включенном WebGL.

-

-

Синтаксис:

-

gpu_set_texfilter(enable);

- - - - - - - - - - - -
АргументТипОписание
enableEnable or disable texture filtering (true / false)
-

-

Возвращается:

-

-

-

Пример:

-

if gpu_get_texfilter()
- {
-     gpu_set_texfilter(false);
- }
- else
- {
-     gpu_set_texfilter(true);
- }

-

Приведенный выше код проверяет, включена или выключена фильтрация текстур, и переключает ее соответствующим образом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_texfilter_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_texfilter_ext.htm index c641d3eb6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_texfilter_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_texfilter_ext.htm @@ -1,75 +0,0 @@ - - - - - - gpu_set_texfilter_ext - - - - - - - - - - -

gpu_set_texfilter_ext

-

Эта функция может использоваться для установки линейной интерполяции для одного "слота" сэмплера при использовании шейдеров в GameMaker. Если эта функция включена (true), текстура сэмплера будет сглажена, а если отключена (false), то изображения будут рисоваться на основе ближайшего пикселя. По умолчанию используется значение, установленное в Глобальных игровых параметрах вашей игры, или значение, установленное с помощью функции gpu_set_texfilter().

-

ПРИМЕЧАНИЕ: Эта настройка будет отменена значением, установленным при вызове функции gpu_set_texfilter().

-

ПРИМЕЧАНИЕ: На цели HTML5 эта функция будет работать только при включенном WebGL.

-

-

Синтаксис:

-

gpu_set_texfilter_ext(sampler_id, enable);

- - - - - - - - - - - - - - - -
АргументТипОписание
sampler_idThe sampler id from the shader.
enableEnable or disable texture filtering (true / false)
-

-

Возвращается:

-

-

-

Пример:

-

var s_tex = shader_get_sampler_index(shader_glass, "s_NoiseSampler");
- if (gpu_get_texfilter_ext(s_tex))
- {
-     gpu_set_texfilter_ext(s_tex, false);
- }
- else
- {
-     gpu_set_texfilter_ext(s_tex, true);
- }

-

Приведенный выше код проверяет, включена или выключена фильтрация текстур для определенного ID сэмплера (хранится в локальной переменной), и переключает ее соответствующим образом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_texrepeat.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_texrepeat.htm index a707fe9d5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_texrepeat.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_texrepeat.htm @@ -1,70 +0,0 @@ - - - - - - gpu_set_texrepeat - - - - - - - - - - -

gpu_set_texrepeat

-

Эта функция может быть использована для указания GameMaker, должны ли текстуры повторяться (true) или нет (false) при использовании для моделей и примитивов. Обычно ширина и высота текстуры лежат в диапазоне 0 - 1, но если вы укажете значение больше 1, то по умолчанию остаток не отрисовывается (вся текстура будет отрисована с "пустым" участком, соответствующим проценту больше 1, который используется. Таким образом, значение 2 для ширины или высоты текстуры нарисует текстуру на половине пространства, а вторая половина останется пустой). Однако при использовании этой функции для установки параметра repeat в true текстура автоматически повторяется для всех моделей и примитивов. Скорее всего, эти функции используются для повторения текстуры в 3D, но для того, чтобы они работали и не вытягивали изображения с остальной страницы текстуры, используемый sprite должен быть помечен как "отдельная страница текстуры" в редакторе Sprite.

-

ПРИМЕЧАНИЕ: Sprites и фоны всегда рисуются без повторений, поэтому после рисования sprite или фона это значение сбрасывается на false. Такое поведение по умолчанию не влияет на настройки сцены текстуры (т.е. вызов функции влияет, а внутреннее значение false - нет).

-

ПРИМЕЧАНИЕ: Эта настройка отменяет любые повторы стадий текстуры, установленные для шейдеров при использовании функции gpu_set_texrepeat_ext().

-

-

Синтаксис:

-

gpu_set_texrepeat(enable);

- - - - - - - - - - - -
АргументТипОписание
enableEnable or disable texture filtering (true / false)
-

-

Возвращается:

-

-

-

Пример:

-

if gpu_get_texrepeat()
- {
-     gpu_set_texrepeat(false);
- }
- else
- {
-     gpu_set_texrepeat(true);
- }

-

Приведенный выше код проверяет, включено или выключено повторение текстуры, и переключает его соответствующим образом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_texrepeat_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_texrepeat_ext.htm index a9e358653..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_texrepeat_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_texrepeat_ext.htm @@ -1,74 +0,0 @@ - - - - - - gpu_set_texrepeat_ext - - - - - - - - - - -

gpu_set_texrepeat_ext

-

Эта функция позволяет установить, повторяет ли один "слот" сэмплера заданную текстуру при использовании шейдеров в GameMaker. Если установить значение true, текстура будет повторяться, если uv-координаты находятся вне диапазона 0-1, в то время как значение false означает отсутствие повторения. Скорее всего, эти функции будут использоваться для повторения текстуры в 3D, но для того, чтобы они работали и не вытягивали изображения из остальной страницы текстуры, используемый sprite должен быть помечен как "отдельная страница текстуры" в редакторе Sprite.

-

ПРИМЕЧАНИЕ Эта настройка будет отменена значением, установленным при вызове функции gpu_set_texrepeat().

-

-

Синтаксис:

-

gpu_set_texrepeat_ext(sampler_id, enable);

- - - - - - - - - - - - - - - -
АргументТипОписание
sampler_idThe sampler id from the shader.
enableEnable or disable texture filtering (true / false)
-

-

Возвращается:

-

-

-

Пример:

-

var s_tex = shader_get_sampler_index(shader_glass, "s_NoiseSampler");
- if (gpu_get_texrepeat_ext(s_tex))
- {
-     gpu_set_texrepeat_ext(s_tex, false);
- }
- else
- {
-     gpu_set_texrepeat_ext(s_tex, true);
- }

-

Приведенный выше код проверяет, включена или выключена фильтрация текстур для определенного ID сэмплера (хранится в локальной переменной), и переключает ее соответствующим образом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_zfunc.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_zfunc.htm index 9d25da9ec..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_zfunc.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_zfunc.htm @@ -1,117 +0,0 @@ - - - - - - gpu_set_zfunc - - - - - - - - - - -

gpu_set_zfunc

-

Эта функция может использоваться для установки режима сравнения тестирования z-буфера (см. gpu_set_ztestenable() для получения дополнительной информации). Доступными для использования значениями являются любые из следующих констант (значение по умолчанию - cmpfunc_lessequal):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
cmpfunc_neverНикогда
cmpfunc_lessМеньше
cmpfunc_equalРавный
cmpfunc_lessequalМеньше или равно
cmpfunc_greaterБольшая
cmpfunc_notequalНе равны
cmpfunc_greaterequalБольше или равно
cmpfunc_alwaysВсегда
-

-

Синтаксис:

-

gpu_set_zfunc(cmp_func);

- - - - - - - - - - - - - -
АргументТипОписание
cmp_funcФункция сравнения ПостояннаяThe comparison mode to use (see list above)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

gpu_set_ztestenable(true);
- gpu_set_zfunc(cmpfunc_always);
- draw_sprite(spr_Background, 0, 0, 0);
- gpu_set_ztestenable(false);

-

Приведенный выше код включает проверку z-буфера и устанавливает его режим сравнения перед рисованием фона sprite, а затем снова выключает его для продолжения рисования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_ztestenable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_ztestenable.htm index bcd403c85..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_ztestenable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_ztestenable.htm @@ -1,64 +0,0 @@ - - - - - - gpu_set_ztestenable - - - - - - - - - - -

gpu_set_ztestenable

-

Эта функция может быть использована для включения или выключения тестирования z-буфера, что влияет на то, как будут отрисовываться объекты (в общем случае это полезно только при работе с 3D-проектами). По сути, по умолчанию, когда z-тестирование выключено и у вас есть два объекта, рисующих в одно и то же пространство, - оба объекта будут отрисованы независимо от того, будет ли один из них перерисовывать другой, что приведет к ненужным вызовам рисования. Если включить эту функцию, то z-буфер проверяется на то, будет ли объект "видимым", и не отрисовывается, если это не так. - нет. Обратите внимание, что это поведение по умолчанию, но вы можете изменить его, изменив тип сравнения, используемого для тестирования z-буфера (см. функцию gpu_set_zfunc().

-

По умолчанию тестирование z-буфера выключено (false).

-

-

Синтаксис:

-

gpu_set_ztestenable(enable);

- - - - - - - - - - - -
АргументТипОписание
enableEnable or disable z-buffer testing (true или false).
-

-

Возвращается:

-

-

-

Пример:

-

gpu_set_ztestenable(true);
draw_sprite(spr_Background, 0, 0, 0);
gpu_set_ztestenable(false); -

-

Приведенный выше код включает проверку z-буфера для рисования фона sprite, а затем снова выключает ее для продолжения рисования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_zwriteenable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_zwriteenable.htm index 6d97b0727..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_zwriteenable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/GPU_Control/gpu_set_zwriteenable.htm @@ -1,66 +0,0 @@ - - - - - - gpu_set_zwriteenable - - - - - - - - - - -

gpu_set_zwriteenable

-

Эта функция может использоваться для включения (true) и выключения (false) упорядочивания глубины с помощью z-буфера. При рендеринге экземпляра в GameMaker глубина сгенерированного пикселя (его координата z) сохраняется в z-буфере, затем, если на тот же пиксель должен быть отрендерен другой экземпляр сцены, эти две глубины сравниваются (z-тестирование - см. gpu_set_ztestenable()), и та, что ближе к наблюдателю, сохраняется в z-буфере, заменяя старую. Однако это не всегда то, что вы хотите, и бывают моменты, когда вы хотите, чтобы что-то было нарисовано поверх всего остального, независимо от того, каково его значение z. В таких случаях вы можете использовать эту функцию, чтобы отключить запись в z-буфер и таким образом заставить то, что рисуется, рисоваться поверх всего остального. Обратите внимание, что описание, приведенное здесь, относится к режиму сравнения z-тестирования по умолчанию, но его можно изменить.

-

По умолчанию z-буферизация включена (true).

-

-

Синтаксис:

-

gpu_set_zwriteenable(enable);

- - - - - - - - - - - -
АргументТипОписание
enableThe comparison mode to use (see list above)
-

-

Возвращается:

-

-

-

Пример:

-

gpu_set_zwriteenable(false);
- with (obj_menu_containers)
- {
-     draw_self();
- }
- gpu_set_zwriteenable(true);

-

Приведенный выше код отключает запись в z-буфер, рисует несколько объектов, а затем снова включает его для продолжения рисования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/Lighting.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/Lighting.htm index d6c435eef..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/Lighting.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/Lighting.htm @@ -1,48 +0,0 @@ - - - - - - Освещение - - - - - - - - - - -

Освещение

-

При работе с 3D-сценами то, что вы рисуете с помощью функций GameMaker, может выглядеть довольно "плоским" из-за отсутствия освещения, придающего им реалистичность и жизнь. Это означает, что цвет примитивных лиц одинаков везде, независимо от их ориентации или положения, поэтому для создания более реалистично выглядящих сцен необходимо включить освещение и разместить огни в правильных местах 3D-мира. В этом разделе описаны доступные функции, которые помогут вам достичь этого:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_get_lighting.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_get_lighting.htm index a14878080..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_get_lighting.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_get_lighting.htm @@ -1,52 +0,0 @@ - - - - - - draw_get_lighting - - - - - - - - - - - -

draw_get_lighting

-

Эта функция возвращает, включено ли освещение (true) или нет (false) для всей сцены.

-

-

Синтаксис:

-

draw_get_lighting()

-

-

Возвращается:

-

-

-

Пример:

-

if !draw_get_lighting()
- {
-     draw_set_lighting(true);
- }

-

Приведенный выше код проверит, включено ли освещение для сцены, и если нет, то включит его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_define_ambient.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_define_ambient.htm index 62e046683..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_define_ambient.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_define_ambient.htm @@ -1,61 +0,0 @@ - - - - - - draw_light_define_ambient - - - - - - - - - - -

draw_light_define_ambient

-

Эта функция используется для управления окружающим светом сцены, то есть светом, который есть в сцене даже без определения точечных или направленных источников света. Это общий цвет и яркость (или темнота) сцены. - По умолчанию используется цвет c_black.

-

-

Синтаксис:

-

draw_light_define_ambient(col);

- - - - - - - - - - - -
АргументТипОписание
colThe colour to use (either a constant, a real or a hex value).
-

-

Возвращается:

-

-

-

Пример:

-

draw_light_define_ambient(c_white);

-

Приведенный выше код определяет окружающее освещение как белое.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_define_direction.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_define_direction.htm index 77faf451c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_define_direction.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_define_direction.htm @@ -1,79 +0,0 @@ - - - - - - draw_light_define_direction - - - - - - - - - - -

draw_light_define_direction

-

Эта функция предназначена для определения направленного света, где направление и интенсивность задаются значениями, введенными для единичного вектора x, y и z (это означает, что они должны быть между -1 и 1, где 1 или -1 - полная интенсивность, а 0 - отсутствие интенсивности). На сайте - можно задать цвет, который также влияет на воспринимаемую интенсивность света, так как некоторые цвета кажутся "темнее" других. Вы также должны присвоить свету индексный номер, который будет использоваться в других функциях для ссылки на него. - на него.

-

ПРИМЕЧАНИЕ: Имеется только 8 аппаратных светильников, поэтому в любой момент времени могут быть включены только 8 определенных светильников (хотя можно определить и больше).

-

-

Синтаксис:

-

draw_light_define_direction(ind, x, y, z, col);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indThe index number of the light (arbitrary)
xThe x component of the light vector
yThe y component of the light vector
zThe z component of the light vector
colThe colour to use for the light (either a constant, a real or a hex value).
-

-

Возвращается:

-

-

-

Пример:

-

draw_set_lighting(true);
draw_light_define_direction(1, 0, 1, 0, c_white);
draw_light_enable(1, true);

-

Приведенный выше код включит освещение для всей сцены, затем определит белый направленный свет в пространстве комнаты и, наконец, включит этот свет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_define_point.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_define_point.htm index b35238caf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_define_point.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_define_point.htm @@ -1,82 +0,0 @@ - - - - - - draw_light_define_point - - - - - - - - - - -

draw_light_define_point

-

Эта функция предназначена для определения позиционного света, где вы можете определить положение света по x, y и z, диапазон освещенности и его цвет (что также влияет на воспринимаемую интенсивность света, так как некоторые цвета кажутся "темнее", чем другие). - другие). Вы также должны присвоить свету индексный номер, который будет использоваться в других функциях для ссылки на него.

-

ПРИМЕЧАНИЕ: Имеется только 8 аппаратных светильников, поэтому одновременно могут быть включены только 8 определенных светильников (хотя можно определить и больше).

-

-

Синтаксис:

-

draw_light_define_point(ind, x, y, z, range, col);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indThe index number of the light (arbitrary)
xThe x position of the light
yThe y position of the light
zThe z position of the light
rangeThe light range (in pixels)
colThe colour to use for the light (either a constant, a real or a hex value).
-

-

Возвращается:

-

-

-

Пример:

-

draw_set_lighting(true);
draw_light_define_point(1, 200, 123, 50, 2000, c_white);
draw_light_enable(1, true);

-

Приведенный выше код включит освещение для всей сцены, затем определит белый свет в определенной точке пространства комнаты и, наконец, включит этот свет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_enable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_enable.htm index fb503b4b7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_enable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_enable.htm @@ -1,70 +0,0 @@ - - - - - - draw_light_enable - - - - - - - - - - -

draw_light_enable

-

Эта функция используется для включения определенного освещения. Когда вы определяете позиционный или направленный свет, вы должны присвоить ему индексный номер, который затем используется этой функцией для включения или выключения света. По умолчанию отключен (false).

-

ПРИМЕЧАНИЕ: Имеется только 8 аппаратных светильников, поэтому одновременно могут быть включены только 8 определенных светильников (хотя можно определить и больше).

-

-

Синтаксис:

-

draw_light_enable(ind, enable);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indРеальноThe index number of the light (from 0 to 7)
enableБулевоEnable or disable all lighting (true или false)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_set_lighting(true);
- draw_light_define_direction(1, 0, 1, 0, c_white);
- draw_light_enable(1, true);

-

Приведенный выше код включит освещение для всей сцены, затем определит белый направленный свет в пространстве комнаты и, наконец, включит этот свет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_get.htm index fa24e6681..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_get.htm @@ -1,101 +0,0 @@ - - - - - - draw_light_get - - - - - - - - - - - -

draw_light_get

-

Эта функция получит указанные параметры света в виде массива со следующими 6 элементами -...

-
    -
  • [0] = включен / выключен (true / false)
  • -
  • [1] = Тип освещения Постоянная (см. таблицу ниже)
  • -
  • [2] = x позиция
  • -
  • [3] = положение y
  • -
  • [4] = положение z
  • -
  • [5] = радиус света (только для точечных светильников, для направленных будет 0)
  • -
  • [6] = светлый цвет (настоящий)
  • -
-

Тип света (элемент [1]) может быть одной из следующих двух констант:

- - - - - - - - - - - - - - - - - - - - - - -
Тип освещения Постоянный
ПостояннаяОписание
lighttype_dirСвет является направленным
lighttype_pointСвет точечный
-

-

Синтаксис:

-

draw_light_get(ind);

- - - - - - - - - - - - - -
АргументТипОписание
indРеальноThe index number of the light (from 0 to 7)
-

-

Возвращается:

-

Array

-

-

Пример:

-

light_a = draw_light_get(1);
- if (light_a[5] < 200)
- {
-     light_a[5] += 5;
-     draw_light_define_point(1, 200, 123, 50, light_a[5], c_white);
- }

-

Приведенный выше код получит значения, используемые для определения света, индексированного как "1", затем проверит радиус, и если он меньше 200, то он будет увеличен, а радиус света установлен на новое значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_get_ambient.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_get_ambient.htm index 2a1ebb9f2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_get_ambient.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_light_get_ambient.htm @@ -1,49 +0,0 @@ - - - - - - draw_light_get_ambient - - - - - - - - - - - -

draw_light_get_ambient

-

Эта функция возвращает текущий цвет, используемый для окружающего освещения.

-

-

Синтаксис:

-

draw_light_get_ambient()

-

-

Возвращается:

-

Colour Constant

-

-

Пример:

-

light_col = draw_light_get_ambient();

-

Приведенный выше код получит текущий цвет окружающего освещения и сохранит его в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_set_lighting.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_set_lighting.htm index b7b4ff2a8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_set_lighting.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Lighting/draw_set_lighting.htm @@ -1,64 +0,0 @@ - - - - - - draw_set_lighting - - - - - - - - - - -

draw_set_lighting

-

Эта функция используется для включения всех эффектов освещения. По умолчанию отключена (false).

-

-

Синтаксис:

-

draw_set_lighting(enable);

- - - - - - - - - - - - - -
АргументТипОписание
enableБулевоEnable or disable all lighting (true или false)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_set_lighting(true);
- draw_light_define_direction(1, 0, 1, 0, c_white);
- draw_light_enable(1, true);

-

Приведенный выше код включит освещение для всей сцены, затем определит белый направленный свет в пространстве комнаты и, наконец, включит этот свет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/Mipmapping.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/Mipmapping.htm index e604c2730..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/Mipmapping.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/Mipmapping.htm @@ -1,70 +0,0 @@ - - - - - - Mipmapping - - - - - - - - - - -

Mipmapping

-

Этот раздел содержит все функции, связанные с использованием функций mipmapping. Перед использованием этих функций вы должны включить mipmapping для необходимых текстурных страниц в Texture Group Editor и/или включить mipmapping для тех sprites, которые были настроены на использование только одной текстурной страницы в General Game Options. На изображении ниже показана разница, которую может внести mipmapping при рендеринге вашего проекта:

-

После того как вы включили mipmapping для проекта или страницы текстуры, вы можете использовать следующие функции для получения и установки значений, которые изменят внешний вид проекта при запуске.

-

Перечисленные ниже функции можно использовать для получения различных значений, связанных с мипмаппингом в GameMaker:

- -

-

Перечисленные ниже функции можно использовать для установки различных значений, связанных с мипмэппингом в GameMaker:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_max_aniso.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_max_aniso.htm index 2f23ec1aa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_max_aniso.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_max_aniso.htm @@ -1,52 +0,0 @@ - - - - - - gpu_get_tex_max_aniso - - - - - - - - - - - -

gpu_get_tex_max_aniso

-

С помощью этой функции можно получить текущий максимальный уровень анизотропии при использовании режима фильтра tf_anisotropic (см. gpu_get_tex_mip_filter() для более подробной информации). Возвращаемое значение будет находиться в диапазоне от 1 до 16.

-

-

Синтаксис:

-

gpu_get_tex_max_aniso();

-

-

Возвращается:

-

(default: 16)

-

-

Пример:

-

if gpu_get_tex_max_aniso() != 8
- {
-     gpu_set_tex_max_aniso(8);
- }

-

Приведенный выше код проверит текущий максимальный уровень анизотропной фильтрации, и если он не равен 8, то будет установлен на 8.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_max_aniso_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_max_aniso_ext.htm index 0dfac7cd7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_max_aniso_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_max_aniso_ext.htm @@ -1,69 +0,0 @@ - - - - - - gpu_get_tex_max_aniso_ext - - - - - - - - - - - -

gpu_get_tex_max_aniso_ext

-

С помощью этой функции можно получить текущий максимальный уровень анизотропии при использовании режима фильтра tf_anisotropic (см. gpu_get_tex_mip_filter() дополнительную информацию) на шейдерном сэмплере. Вы передаете значение индекса шейдерного сэмплера (как возвращается функцией shader_get_sampler_index(), и функция вернет значение в диапазоне от 1 до 16.

-

-

Синтаксис:

-

gpu_get_tex_max_aniso_ext(sampler_index);

- - - - - - - - - - - -
АргументТипОписание
sampler_indexThe index of the shader sampler to get
-

-

Возвращается:

-

(default: 16)

-

-

Пример:

-

var _sampleIndex = shader_get_sampler_index(shd_Glass, "s_Background");
- var _spriteTex = sprite_get_texture(sprite_index, 0);
- shader_set(shd_Glass);
- if (gpu_get_tex_max_aniso_ext(_sampleIndex) != 8)
- {
-     gpu_set_tex_max_aniso_ext(_sampleIndex, 8);
- }
- texture_set_stage(_sampleIndex , _spriteTex);
- shader_reset();

-

Приведенный выше код устанавливает максимальный уровень анизотропии на 8 для данного шейдерного текстурного сэмплера, если он еще не установлен на 8.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_max_mip.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_max_mip.htm index 0d058afb3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_max_mip.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_max_mip.htm @@ -1,52 +0,0 @@ - - - - - - gpu_get_tex_max_mip - - - - - - - - - - - -

gpu_get_tex_max_mip

-

С помощью этой функции вы можете получить установленный на данный момент максимальный уровень mipmap, который должен быть использован, где значение 0 - самое высокое разрешение, 1 - использование первого mipmap, 2 - второго и т.д.. Обратите внимание, что это может быть полезно для предотвращения артефактов растекания при рендеринге текстур, например, установив границу страницы текстуры на 8px и затем установив максимальный уровень mipmap на 3, вы не получите никаких проблем с растеканием на больших расстояниях рендеринга.

-

-

Синтаксис:

-

gpu_get_tex_max_mip();

-

-

Возвращается:

-

(default: 16)

-

-

Пример:

-

if gpu_get_tex_max_mip() != 4
- {
-     gpu_set_tex_max_mip(4);
- }

-

Приведенный выше код проверит текущий максимальный уровень mipmap, и если он не равен 4, то будет установлен на 4.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_max_mip_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_max_mip_ext.htm index 44c1676dd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_max_mip_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_max_mip_ext.htm @@ -1,69 +0,0 @@ - - - - - - gpu_get_tex_max_mip_ext - - - - - - - - - - - -

gpu_get_tex_max_mip_ext

-

С помощью этой функции вы можете получить установленный на данный момент максимальный уровень mipmap, который будет использоваться для данного шейдерного сэмплера. Вы вводите значение индекса шейдерного сэмплера (как возвращается функцией shader_get_sampler_index(), и функция вернет текущий максимальный уровень mipmap, где значение 0 - самое высокое разрешение, 1 - использование первого mipmap, 2 - второго и т.д.. Обратите внимание, что это может быть полезно для предотвращения артефактов растекания при рендеринге текстур, например, установив границу страницы текстуры на 8px и затем установив максимальный уровень mipmap на 3, вы не получите никаких проблем с растеканием на больших расстояниях рендеринга.

-

-

Синтаксис:

-

gpu_get_tex_max_mip_ext(sampler_index);

- - - - - - - - - - - -
АргументТипОписание
sampler_indexThe index of the shader sampler to get
-

-

Возвращается:

-

(default: 16)

-

-

Пример:

-

var _sampleIndex = shader_get_sampler_index(shd_Glass, "s_Background");
- var _spriteTex = sprite_get_texture(sprite_index, 0);
- shader_set(shd_Glass);
- if (gpu_get_tex_max_mip_ext(_sampleIndex) != 4)
- {
-     gpu_set_tex_max_mip_ext(_sampleIndex, 4);
- }
- texture_set_stage(_sampleIndex , _spriteTex);
- shader_reset();

-

Приведенный выше код устанавливает максимальный уровень mipmap на 4 для данного шейдерного текстурного сэмплера, если он еще не установлен на 4.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_min_mip.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_min_mip.htm index d62a33739..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_min_mip.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_min_mip.htm @@ -1,52 +0,0 @@ - - - - - - gpu_get_tex_min_mip - - - - - - - - - - - -

gpu_get_tex_min_mip

-

С помощью этой функции вы можете получить минимальный уровень mipmap, который используется в настоящее время, где значение 0 - самое высокое разрешение, 1 - использование первого mipmap, 2 - второго и т.д..

-

-

Синтаксис:

-

gpu_get_tex_min_mip();

-

-

Возвращается:

-

(default: 0)

-

-

Пример:

-

if gpu_get_tex_min_mip() != 0
- {
-     gpu_set_tex_min_mip(0);
- }

-

Приведенный выше код проверит текущий минимальный уровень mipmap и, если он не равен 0, то будет установлен на 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_min_mip_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_min_mip_ext.htm index e0edd42e1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_min_mip_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_min_mip_ext.htm @@ -1,69 +0,0 @@ - - - - - - gpu_get_tex_min_mip_ext - - - - - - - - - - - -

gpu_get_tex_min_mip_ext

-

С помощью этой функции вы можете получить минимальный уровень mipmap, который в настоящее время используется для данного шейдерного сэмплера. Вы вводите значение индекса шейдерного сэмплера (как возвращает функция shader_get_sampler_index(), и функция вернет значение 0 для полного разрешения, 1 для первого мипмапа, 2 для второго и т.д....

-

-

Синтаксис:

-

gpu_get_tex_min_mip_ext(sampler_index);

- - - - - - - - - - - -
АргументТипОписание
sampler_indexThe index of the shader sampler to get
-

-

Возвращается:

-

(default: 0)

-

-

Пример:

-

var _sampleIndex = shader_get_sampler_index(shd_Glass, "s_Background");
- var _spriteTex = sprite_get_texture(sprite_index, 0);
- shader_set(shd_Glass);
- if (gpu_get_tex_min_mip_ext(_sampleIndex) != 0)
- {
-     gpu_set_tex_min_mip_ext(_sampleIndex, 0);
- }
- texture_set_stage(_sampleIndex , _spriteTex);
- shader_reset();

-

Приведенный выше код устанавливает минимальный уровень mipmap в 0 для данного шейдерного текстурного сэмплера, если он еще не установлен в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_bias.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_bias.htm index 58d0000fd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_bias.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_bias.htm @@ -1,52 +0,0 @@ - - - - - - gpu_get_tex_mip_bias - - - - - - - - - - - -

gpu_get_tex_mip_bias

-

С помощью этой функции можно получить значение смещения mipmap, где значение 0 равно отсутствию смещения, 1 равно первой mipmap, 2 равно второй mipmap и т.д.. Это контролирует скорость смены мип-карт и обычно делает рендеринг текстур более размытым, чем выше значение и чем больше "расстояние". Обратите внимание, что этот параметр может возвращать и отрицательные значения, в этом случае отрисованные текстуры будут более четкими на большем расстоянии, чем меньше значение.

-

-

Синтаксис:

-

gpu_get_tex_mip_bias();

-

-

Возвращается:

-

(default: 0)

-

-

Пример:

-

if gpu_get_tex_mip_bias() != 0
- {
-     gpu_set_tex_mip_bias(0);
- }

-

Приведенный выше код проверяет текущее смещение mipmap и, если оно не равно 0, то устанавливается в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_bias_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_bias_ext.htm index e7bd668bf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_bias_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_bias_ext.htm @@ -1,69 +0,0 @@ - - - - - - gpu_get_tex_mip_bias_ext - - - - - - - - - - - -

gpu_get_tex_mip_bias_ext

-

С помощью этой функции вы можете получить значение смещения mipmap для заданного шейдерного сэмплера. Вы передаете значение индекса шейдерного сэмплера (как возвращается функцией shader_get_sampler_index(), и функция вернет значение 0.0 для отсутствия смещения, или большее значение, где 1 равно первому mipmap, 2 равно второму mipmap и т.д. ... Это контролирует скорость, с которой меняется мип-карта, и, как правило, текстуры шейдера будут более размытыми, чем выше значение и чем больше "расстояние", на которое смотрят. Обратите внимание, что этот параметр может возвращать и отрицательные значения, в этом случае шейдерные текстуры будут более четкими на большем расстоянии, чем меньше значение.

-

-

Синтаксис:

-

gpu_get_tex_mip_bias_ext(sampler_index);

- - - - - - - - - - - -
АргументТипОписание
sampler_indexThe index of the shader sampler to get
-

-

Возвращается:

-

(default: 0)

-

-

Пример:

-

var _sampleIndex = shader_get_sampler_index(shd_Glass, "s_Background");
- var _spriteTex = sprite_get_texture(sprite_index, 0);
- shader_set(shd_Glass);
- if (gpu_get_tex_mip_bias_ext(_sampleIndex) != 0)
- {
-     gpu_set_tex_mip_bias_ext(_sampleIndex, 0);
- }
- texture_set_stage(_sampleIndex , _spriteTex);
- shader_reset();

-

Приведенный выше код устанавливает смещение фильтра mip в 0 для данного шейдерного текстурного сэмплера, если оно еще не установлено в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_enable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_enable.htm index 66f8fbdde..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_enable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_enable.htm @@ -1,82 +0,0 @@ - - - - - - gpu_get_tex_mip_enable - - - - - - - - - - - -

gpu_get_tex_mip_enable

-

С помощью этой функции можно узнать, выключен ли mipmapping, включен ли он для всего или включен только для групп текстур, выбранных в менеджере групп текстур. Функция возвращает одну из перечисленных ниже констант, по умолчанию это mip_markedonly.

-

-

Синтаксис:

-

gpu_get_tex_mip_enable();

-

-

Возвращается:

-

Constant

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Mipmapping Constant
ПостояннаяОписание
mip_offMipmapping отключен.
mip_onMipmapping для всех текстур включен.
mip_markedonlyMipmapping включается для текстур, у которых он включен в опциях группы текстур (по умолчанию).
-

-

Пример:

-

if gpu_get_tex_mip_enable != mip_on
- {
-     gpu_set_tex_mip_enable(mip_on);
- }

-

Приведенный выше код проверит, включен ли mipmapping, и если нет, то включит его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_enable_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_enable_ext.htm index 1346bdf9a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_enable_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_enable_ext.htm @@ -1,94 +0,0 @@ - - - - - - gpu_get_tex_mip_enable_ext - - - - - - - - - - - -

gpu_get_tex_mip_enable_ext

-

С помощью этой функции вы можете узнать, выключен ли mipmapping, включен ли он для всего или включен только для групп текстур, выбранных в менеджере групп текстур на шейдерном сэмплере. Вы передаете значение индекса шейдерного сэмплера (как возвращается функцией shader_get_sampler_index(), а функция вернет одну из перечисленных ниже констант.

-

-

Синтаксис:

-

gpu_get_tex_mip_enable_ext(sampler_index);

- - - - - - - - - - - - - -
АргументТипОписание
sampler_indexРучка шейдерного пробоотборникаThe index of the shader sampler to get
-

-

Возвращается:

-

Constant

- - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
mip_offMipmapping отключен.
mip_onMipmapping для всех текстур включен.
mip_markedonlyMipmapping включен для текстур, у которых он включен в параметрах группы текстур.
-

-

Пример:

-

var _sampleIndex = shader_get_sampler_index(shd_Glass, "s_Background");
- var _spriteTex = sprite_get_texture(sprite_index, 0);
- shader_set(shd_Glass);
- if (gpu_get_tex_mip_enable_ext(_sampleIndex) != mip_on)
- {
-     gpu_set_tex_mip_enable_ext(_sampleIndex, mip_on);
- }
- texture_set_stage(_sampleIndex , _spriteTex);
- shader_reset();

-

Приведенный выше код включает mipmapping для данного шейдерного текстурного сэмплера, если он еще не включен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_filter.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_filter.htm index 0f817b287..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_filter.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_filter.htm @@ -1,87 +0,0 @@ - - - - - - gpu_get_tex_mip_filter - - - - - - - - - - - -

gpu_get_tex_mip_filter

-

С помощью этой функции можно получить текущий режим работы фильтра mip. Значение режима, возвращаемое функцией, будет одной из перечисленных ниже констант.

-

-

Синтаксис:

-

gpu_get_tex_mip_filter();

-

-

Возвращается:

-

Mipmapping Filter Constant (listed below):

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Mipmapping Filter Constant
ПостояннаяОписание
tf_pointЭто означает, что смешивание между уровнями mipmap отключено, что может привести к заметным переходам текстуры, но дает наилучшую производительность.
tf_linearЭто означает, что включено смешивание между уровнями mipmap (это также известно как трилинейная фильтрация), что сглаживает переходы текстур, но это незначительно снижает производительность.
tf_anisotropicЭто означает, что включена анизотропная фильтрация, которая значительно улучшает качество перехода текстур и может уменьшить размытие, видимое при других режимах фильтрации, но она оказывает наибольшее влияние на производительность.
-

-

Пример:

-

if keyboard_check(vk_enter)
- {
-     switch(gpu_get_tex_mip_filter())
-     {
-         case tf_point: gpu_set_tex_mip_filter(tf_linear); break;
-         case tf_linear: gpu_set_tex_mip_filter(tf_anisotropic); break;
-         case tf_anisotropic: gpu_set_tex_mip_filter(tf_point); break;
-     }
- }

-

Приведенный выше код проверяет клавиатуру, и если указанная клавиша нажата, то он получит текущий mip-фильтр и переключит значение на следующий, циклически перебирая различные режимы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_filter_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_filter_ext.htm index 5e5dbed33..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_filter_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_get_tex_mip_filter_ext.htm @@ -1,93 +0,0 @@ - - - - - - gpu_get_tex_mip_filter_ext - - - - - - - - - - - -

gpu_get_tex_mip_filter_ext

-

С помощью этой функции вы можете получить текущий режим mip-фильтра для заданного шейдерного сэмплера. Вы передаете значение индекса шейдерного сэмплера (как возвращается функцией shader_get_sampler_index(), а функция вернет одну из констант значения режима, перечисленных ниже.

-

-

Синтаксис:

-

gpu_get_tex_mip_filter_ext(sampler_index);

- - - - - - - - - - - -
АргументТипОписание
sampler_indexThe index of the shader sampler to get
-

-

Возвращается:

-

Mipmapping Filter Constant (listed below):

- - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
tf_pointЭто означает, что смешивание между уровнями mipmap отключено, что может привести к заметным переходам текстуры, но дает наилучшую производительность.
tf_linearЭто означает, что включено смешивание между уровнями mipmap (это также известно как трилинейная фильтрация), что сглаживает переходы текстур, но это незначительно снижает производительность.
tf_anisotropicЭто означает, что включена анизотропная фильтрация, которая значительно улучшает качество перехода текстур и может уменьшить размытие, видимое при других режимах фильтрации, но она оказывает наибольшее влияние на производительность.
-

-

-

Пример:

-

var _sampleIndex = shader_get_sampler_index(shd_Glass, "s_Background");
- var _spriteTex = sprite_get_texture(sprite_index, 0);
- shader_set(shd_Glass);
- if (gpu_get_tex_mip_filter_ext(_sampleIndex) != tf_point)
- {
-     gpu_set_tex_mip_filter_ext(_sampleIndex, tf_point);
- }
- texture_set_stage(_sampleIndex , _spriteTex);
- shader_reset();

-

Приведенный выше код устанавливает режим mip-фильтра на tf_point (отключение mipmapping) для данного шейдерного текстурного сэмплера, если он еще не установлен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_max_aniso.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_max_aniso.htm index 67e56f66d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_max_aniso.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_max_aniso.htm @@ -1,64 +0,0 @@ - - - - - - gpu_set_tex_max_aniso - - - - - - - - - - - -

gpu_set_tex_max_aniso

-

С помощью этой функции можно установить текущий максимальный уровень анизотропии при использовании режима фильтра tf_anisotropic (см. gpu_get_tex_mip_filter() для более подробной информации). Вводимое значение должно находиться в диапазоне от 1 до 16.

-

-

Синтаксис:

-

gpu_set_tex_max_aniso(maxaniso);

- - - - - - - - - - - -
АргументТипОписание
maxanisoThe maximum level for anisotropic filtering (default: 16)
-

-

Возвращается:

-

-

-

Пример:

-

if gpu_get_tex_max_aniso() != 8
- {
-     gpu_set_tex_max_aniso(8);
- }

-

Приведенный выше код проверит текущий максимальный уровень анизотропной фильтрации, и если он не равен 8, то будет установлен на 8.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_max_aniso_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_max_aniso_ext.htm index a6ef45975..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_max_aniso_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_max_aniso_ext.htm @@ -1,73 +0,0 @@ - - - - - - gpu_set_tex_max_aniso_ext - - - - - - - - - - - -

gpu_set_tex_max_aniso_ext

-

С помощью этой функции можно задать максимальный уровень анизотропии при использовании режима фильтра tf_anisotropic (см. gpu_get_tex_mip_filter() дополнительную информацию) на шейдерном сэмплере. Вы вводите значение индекса шейдерного сэмплера (возвращаемое функцией shader_get_sampler_index(), а затем значение в диапазоне от 1 до 16 для установки уровня.

-

-

Синтаксис:

-

gpu_set_tex_max_aniso_ext(sampler_index, maxaniso);

- - - - - - - - - - - - - - - -
АргументТипОписание
sampler_indexThe index of the shader sampler to get
maxanisoThe maximum anisotropic level to use (default: 16).
-

-

Возвращается:

-

-

-

Пример:

-

var _sampleIndex = shader_get_sampler_index(shd_Glass, "s_Background");
- var _spriteTex = sprite_get_texture(sprite_index, 0);
- shader_set(shd_Glass);
- if (gpu_get_tex_max_aniso_ext(_sampleIndex) != 8)
- {
-     gpu_set_tex_max_aniso_ext(_sampleIndex, 8);
- }
- texture_set_stage(_sampleIndex , _spriteTex);
- shader_reset();

-

Приведенный выше код устанавливает максимальный уровень анизотропии на 8 для данного шейдерного текстурного сэмплера, если он еще не установлен на 8.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_max_mip.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_max_mip.htm index 0bb0a7f4e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_max_mip.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_max_mip.htm @@ -1,64 +0,0 @@ - - - - - - gpu_set_tex_max_mip - - - - - - - - - - - -

gpu_set_tex_max_mip

-

С помощью этой функции вы можете установить максимальный уровень mipmap, который будет использоваться, где значение 0 - самое высокое разрешение, 1 - использование первого mipmap, 2 - второго и т.д.. Обратите внимание, что это может быть полезно для предотвращения артефактов растекания при рендеринге текстур, например, установив границу страницы текстуры на 8px и затем установив максимальный уровень mipmap на 3, вы не получите никаких проблем с растеканием на больших расстояниях рендеринга.

-

-

Синтаксис:

-

gpu_set_tex_max_mip(maxmip);

- - - - - - - - - - - -
АргументТипОписание
maxmipThe maximum mipmap level (default: 16)
-

-

Возвращается:

-

-

-

Пример:

-

if gpu_get_tex_max_mip() != 4
- {
-     gpu_set_tex_max_mip(4);
- }

-

Приведенный выше код проверит текущий максимальный уровень mipmap, и если он не равен 4, то будет установлен на 4.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_max_mip_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_max_mip_ext.htm index 418fa1573..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_max_mip_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_max_mip_ext.htm @@ -1,73 +0,0 @@ - - - - - - gpu_set_tex_max_mip_ext - - - - - - - - - - - -

gpu_set_tex_max_mip_ext

-

С помощью этой функции вы можете получить установленный на данный момент максимальный уровень mipmap, который будет использоваться для данного шейдерного сэмплера. Вы вводите значение индекса шейдерного сэмплера (как возвращается функцией shader_get_sampler_index(), и функция вернет текущий максимальный уровень mipmap, где значение 0 - самое высокое разрешение, 1 - использование первого mipmap, 2 - второго и т.д.. Обратите внимание, что это может быть полезно для предотвращения артефактов растекания при рендеринге текстур, например, установив границу страницы текстуры на 8px и затем установив максимальный уровень mipmap на 3, вы не получите никаких проблем с растеканием на больших расстояниях рендеринга.

-

-

Синтаксис:

-

gpu_set_tex_max_mip_ext(sampler_index, maxmip);

- - - - - - - - - - - - - - - -
АргументТипОписание
sampler_indexThe index of the shader sampler to get
maxmipThe maximum mipmap level value to use (default: 16)
-

-

Возвращается:

-

-

-

Пример:

-

var _sampleIndex = shader_get_sampler_index(shd_Glass, "s_Background");
- var _spriteTex = sprite_get_texture(sprite_index, 0);
- shader_set(shd_Glass);
- if (gpu_get_tex_max_mip_ext(_sampleIndex) != 4)
- {
-     gpu_set_tex_max_mip_ext(_sampleIndex, 4);
- }
- texture_set_stage(_sampleIndex , _spriteTex);
- shader_reset();

-

Приведенный выше код устанавливает максимальный уровень mipmap на 4 для данного шейдерного текстурного сэмплера, если он еще не установлен на 4.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_min_mip.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_min_mip.htm index 8b3f4e63a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_min_mip.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_min_mip.htm @@ -1,64 +0,0 @@ - - - - - - gpu_set_tex_min_mip - - - - - - - - - - - -

gpu_set_tex_min_mip

-

С помощью этой функции вы можете установить минимальный уровень mipmap, который используется в настоящее время, где значение 0 - это самое высокое разрешение, 1 - использование первого mipmap, 2 - второго и т.д....

-

-

Синтаксис:

-

gpu_set_tex_min_mip(minmip);

- - - - - - - - - - - -
АргументТипОписание
minmipThe minimum mipmap level to use
-

-

Возвращается:

-

-

-

Пример:

-

if gpu_get_tex_min_mip() != 0
- {
-     gpu_set_tex_min_mip(0);
- }

-

Приведенный выше код проверит текущий минимальный уровень mipmap и, если он не равен 0, то будет установлен на 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_min_mip_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_min_mip_ext.htm index 1a13e015d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_min_mip_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_min_mip_ext.htm @@ -1,73 +0,0 @@ - - - - - - gpu_set_tex_min_mip_ext - - - - - - - - - - - -

gpu_set_tex_min_mip_ext

-

С помощью этой функции вы можете установить минимальный уровень mipmap, который в настоящее время используется для данного шейдерного сэмплера. Вы вводите значение индекса шейдерного сэмплера (как возвращается функцией shader_get_sampler_index(), а затем задаете значение, где 0 - для полного разрешения, 1 - для первого мипмапа, 2 - для второго и т.д....

-

-

Синтаксис:

-

gpu_set_tex_min_mip_ext(sampler_index, minmip);

- - - - - - - - - - - - - - - -
АргументТипОписание
sampler_indexThe index of the shader sampler to get
minmipThe minimum mipmap level to use
-

-

Возвращается:

-

-

-

Пример:

-

var _sampleIndex = shader_get_sampler_index(shd_Glass, "s_Background");
- var _spriteTex = sprite_get_texture(sprite_index, 0);
- shader_set(shd_Glass);
- if (gpu_get_tex_min_mip_ext(_sampleIndex) != 0)
- {
-     gpu_set_tex_min_mip_ext(_sampleIndex, 0);
- }
- texture_set_stage(_sampleIndex , _spriteTex);
- shader_reset();

-

Приведенный выше код устанавливает минимальный уровень mipmap в 0 для данного шейдерного текстурного сэмплера, если он еще не установлен в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_bias.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_bias.htm index e9730e123..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_bias.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_bias.htm @@ -1,63 +0,0 @@ - - - - - - gpu_set_tex_mip_bias - - - - - - - - - - -

gpu_set_tex_mip_bias

-

С помощью этой функции вы можете установить значение смещения мипмапы, где значение 0 равно отсутствию смещения, 1 равно первой мипмапе, 2 равно второй мипмапе и т.д.. Это контролирует скорость смены мип-карт и обычно делает рендеринг текстур более размытым, чем выше значение и чем больше "расстояние". Обратите внимание, что эта функция может принимать и отрицательные значения, в этом случае отрисованные текстуры будут более четкими на большем расстоянии, чем меньше значение.

-

-

Синтаксис:

-

gpu_set_tex_mip_bias(bias);

- - - - - - - - - - - -
АргументТипОписание
biasThe mipmap bias value to use (default: 0)
-

-

Возвращается:

-

-

-

Пример:

-

if gpu_get_tex_mip_bias() != 0
- {
-     gpu_set_tex_mip_bias(0);
- }

-

Приведенный выше код проверяет текущее смещение mipmap и если оно не равно 0, то устанавливается на 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_bias_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_bias_ext.htm index 7248a4d8e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_bias_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_bias_ext.htm @@ -1,72 +0,0 @@ - - - - - - gpu_set_tex_mip_bias_ext - - - - - - - - - - -

gpu_set_tex_mip_bias_ext

-

С помощью этой функции вы можете установить значение смещения mipmap для данного шейдерного сэмплера. Вы вводите значение индекса шейдерного сэмплера (возвращаемое функцией shader_get_sampler_index(), а затем значение смещения, где 0 - без смещения, 1 - для первого мипмапа, 2 - для второго мипмапа и т.д.. Эта функция контролирует скорость смены карт мипов и обычно делает текстуры шейдера более размытыми, чем выше значение и чем больше "расстояние", на котором происходит просмотр. Обратите внимание, что эта функция может принимать и отрицательные значения, в этом случае шейдерные текстуры будут более четкими на большем расстоянии, чем меньше значение.

-

-

Синтаксис:

-

gpu_set_tex_mip_bias_ext(sampler_index, bias);

- - - - - - - - - - - - - - - -
АргументТипОписание
sampler_indexThe index of the shader sampler to get
biasThe mipmap bias value to use (default: 0)
-

-

Возвращается:

-

-

-

Пример:

-

var _sampleIndex = shader_get_sampler_index(shd_Glass, "s_Background");
- var _spriteTex = sprite_get_texture(sprite_index, 0);
- shader_set(shd_Glass);
- if (gpu_get_tex_mip_bias_ext(_sampleIndex) != 0)
- {
-     gpu_set_tex_mip_bias_ext(_sampleIndex, 0);
- }
- texture_set_stage(_sampleIndex , _spriteTex);
- shader_reset();

-

Приведенный выше код устанавливает смещение фильтра mip в 0 для данного шейдерного текстурного сэмплера, если оно еще не установлено в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_enable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_enable.htm index 674e3c0c8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_enable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_enable.htm @@ -1,88 +0,0 @@ - - - - - - gpu_set_tex_mip_enable - - - - - - - - - - -

gpu_set_tex_mip_enable

-

С помощью этой функции можно изменить, будет ли мипмаппинг выключен, включен для всего или включен только для групп текстур, выбранных в менеджере групп текстур. Для работы функции требуется одна из перечисленных ниже констант.

- - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
mip_offMipmapping отключен.
mip_onMipmapping для всех текстур включен.
mip_markedonlyMipmapping включен для текстур, у которых он включен в опциях группы текстур (по умолчанию).
-

-

Синтаксис:

-

gpu_set_tex_mip_enable(setting);

- - - - - - - - - - - - - -
АргументТипОписание
settingMipmapping ConstantThe mipmap setting (a constant, default: mip_markedonly)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if gpu_get_tex_mip_enable != mip_on
- {
-     gpu_set_tex_mip_enable(mip_on);
- }

-

Приведенный выше код проверит, включен ли mipmapping, и если нет, то включит его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_enable_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_enable_ext.htm index 09ab27e45..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_enable_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_enable_ext.htm @@ -1,98 +0,0 @@ - - - - - - gpu_set_tex_mip_enable_ext - - - - - - - - - - -

gpu_set_tex_mip_enable_ext

-

С помощью этой функции вы можете установить, будет ли mipmapping выключен, включен для всего или включен только для групп текстур, выбранных в менеджере групп текстур на шейдерном сэмплере. Вы вводите значение индекса шейдерного сэмплера (возвращаемое функцией shader_get_sampler_index(), а затем одну из перечисленных ниже констант.

- - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
mip_offMipmapping отключен.
mip_onMipmapping для всех текстур включен.
mip_markedonlyMipmapping включается для текстур, у которых он включен в опциях группы текстур (по умолчанию).
-

-

Синтаксис:

-

gpu_set_tex_mip_enable_ext(sampler_index, setting);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
sampler_indexРучка шейдерного пробоотборникаThe index of the shader sampler to get
settingMipmapping ConstantThe mipmap setting (a constant, default: mip_markedonly)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _sampleIndex = shader_get_sampler_index(shd_Glass, "s_Background");
- var _spriteTex = sprite_get_texture(sprite_index, 0);
- shader_set(shd_Glass);
- if (gpu_get_tex_mip_enable_ext(_sampleIndex) != mip_on)
- {
-     gpu_set_tex_mip_enable_ext(_sampleIndex, mip_on);
- }
- texture_set_stage(_sampleIndex , _spriteTex);
- shader_reset();

-

Приведенный выше код включает mipmapping для данного шейдерного текстурного сэмплера, если он еще не включен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_filter.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_filter.htm index 4d875d7b7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_filter.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_filter.htm @@ -1,93 +0,0 @@ - - - - - - gpu_set_tex_mip_filter - - - - - - - - - - -

gpu_set_tex_mip_filter

-

С помощью этой функции вы можете установить текущий режим фильтрации mip на один из трех поддерживаемых типов. Вы указываете константу, которая ссылается на требуемый режим фильтрации mip, где вы можете выбрать между точечной фильтрацией (установка по умолчанию, означающая отсутствие фильтрации), линейной фильтрацией (это также известно как трилинейная фильтрация) или аниостропической фильтрацией (см. таблицу констант ниже).

- - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
tf_pointЭто отключит фильтрацию между уровнями mipmap, что может привести к заметным переходам текстуры, но дает наилучшую производительность.
tf_linearЭто позволит включить линейную фильтрацию между уровнями mipmap (это также известно как трилинейная фильтрация), которая сглаживает переходы текстур, но это незначительно снижает производительность.
tf_anisotropicЭто позволит включить анизотропную фильтрацию между уровнями mipmap, что значительно улучшает качество перехода текстуры и может уменьшить размытие, видимое при других режимах фильтрации, но это сильно сказывается на производительности.
-

-

Синтаксис:

-

gpu_set_tex_mip_filter(filter);

- - - - - - - - - - - - - -
АргументТипОписание
filterMipmapping Filter ConstantThe mip filter mode to use (a constant, default: tf_point).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if keyboard_check(vk_enter)
- {
-     switch(gpu_get_tex_mip_filter())
-     {
-         case tf_point: gpu_set_tex_mip_filter(tf_linear); break;
-         case tf_linear: gpu_set_tex_mip_filter(tf_anisotropic); break;
-         case tf_anisotropic: gpu_set_tex_mip_filter(tf_point); break;
-     }
- }

-

Приведенный выше код проверяет клавиатуру, и если указанная клавиша нажата, то он получит текущий mip-фильтр и переключит значение на следующий, циклически перебирая различные режимы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_filter_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_filter_ext.htm index cd9a8cc7b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_filter_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Mipmapping/gpu_set_tex_mip_filter_ext.htm @@ -1,100 +0,0 @@ - - - - - - gpu_set_tex_mip_filter_ext - - - - - - - - - - -

gpu_set_tex_mip_filter_ext

-

С помощью этой функции вы можете установить режим mip-фильтра для данного шейдерного сэмплера. Вы передаете значение индекса для шейдерного сэмплера (как возвращается функцией shader_get_sampler_index(), а затем одну из констант значения режима, перечисленных ниже.

-

- - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
tf_pointЭто означает, что смешивание между уровнями mipmap отключено, что может привести к заметным переходам текстуры, но дает наилучшую производительность.
tf_linearЭто означает, что включено смешивание между уровнями mipmap (это также известно как трилинейная фильтрация), что сглаживает переходы текстур, но это незначительно снижает производительность.
tf_anisotropicЭто означает, что включена анизотропная фильтрация, которая значительно улучшает качество перехода текстур и может уменьшить размытие, видимое при других режимах фильтрации, но она оказывает наибольшее влияние на производительность.
-

-

Синтаксис:

-

gpu_set_tex_mip_filter_ext(sampler_index, filter);

-

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
sampler_indexРучка шейдерного пробоотборникаThe index of the shader sampler to get.
filterMipmapping Filter ConstantThe mip filter mode to use (a constant, default: tf_point).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _sampleIndex = shader_get_sampler_index(shd_Glass, "s_Background");
- var _spriteTex = sprite_get_texture(sprite_index, 0);
- shader_set(shd_Glass);
- if (gpu_get_tex_mip_filter_ext(_sampleIndex) != tf_point)
- {
-     gpu_set_tex_mip_filter_ext(_sampleIndex, tf_point);
- }
- texture_set_stage(_sampleIndex, _spriteTex);
- shader_reset();

-

Приведенный выше код устанавливает режим mip-фильтра на tf_point (отключение mipmapping) для данного шейдерного текстурного сэмплера, если он еще не установлен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/Particle_Emitters.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/Particle_Emitters.htm index bb1a4cb51..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/Particle_Emitters.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/Particle_Emitters.htm @@ -1,49 +0,0 @@ - - - - - - Излучатели частиц - - - - - - - - - - -

Излучатели частиц

-

Эмиттеры частиц используются в GameMaker для испускания частиц на область экрана, которые могут иметь различную форму и распределение. Они также могут либо создавать непрерывный поток частиц, либо выбрасывать несколько частиц одновременно, в зависимости от того, как используются функции.

-

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

-

Для настройки эмиттеров и для того, чтобы они могли создавать частицы, доступны следующие функции. Обратите внимание, что каждая из них получает в качестве первого аргумента индекс системы частиц, к которой она принадлежит.

- -

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_burst.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_burst.htm index 18db1f54c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_burst.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_burst.htm @@ -1,77 +0,0 @@ - - - - - - part_emitter_burst - - - - - - - - - - -

part_emitter_burst

-

Эта функция позволяет настроить эмиттер на выброс определенного типа частиц и обычно используется в событиях тревоги и уничтожения, поскольку это одноразовый код, который создает указанное количество частиц одновременно, следуя распределению, форме и положению, заданным функцией. part_emitter_region(). Если вам нужно, чтобы частицы появлялись каждый шаг, вам следует использовать функцию part_emitter_stream() а не вызывать эту функцию на каждом шаге.

-

-

Синтаксис:

-

part_emitter_burst(ps, ind, parttype, number);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
psИдентификатор системы частицThe particle system that the emitter is in.
indИдентификатор излучателя частицThe index of the emitter to burst from.
parttypeИдентификатор типа частицыThe index (type) of the particles to be created.
numberРеальноThe number of particles to create.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_emitter_burst(global. Sname, p_emit1, p1, 30 + irandom(30));

-

Приведенный выше код выпустит случайное количество частиц от 30 до 60 из выбранного эмиттера.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_clear.htm index c3c858a16..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_clear.htm @@ -1,67 +0,0 @@ - - - - - - part_emitter_clear - - - - - - - - - - -

part_emitter_clear

-

С помощью этой функции вы можете очистить данный эмиттер от указанной системы частиц и вернуть его в состояние по умолчанию. Это также остановит все частицы, которые в данный момент поступают из эмиттера, и если вы хотите использовать эмиттер снова, вам нужно будет установить позицию региона и тип частиц с помощью функции part_emitter_region() функцию.

-

-

Синтаксис:

-

part_emitter_clear(ps, ind);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
psИдентификатор системы частицThe particle system that the emitter is in.
indИдентификатор излучателя частицThe index of the emitter to clear.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_emitter_clear(Sname, p_emit1 );

-

Приведенный выше код очистит эмиттер частиц, индексированный в переменной "p_emit1".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_create.htm index 2449953b3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_create.htm @@ -1,63 +0,0 @@ - - - - - - part_emitter_create - - - - - - - - - - - -

part_emitter_create

-

Эта функция используется для создания нового эмиттера частиц в заданной системе частиц. Функция возвращает значение индекса для нового эмиттера, которое должно храниться в переменной и использоваться во всех дальнейших функциях, ссылающихся на эмиттер, а сам эмиттер должен быть уничтожен, если он больше не используется, чтобы предотвратить утечку памяти (это можно сделать с помощью специальных функций уничтожения эмиттера или путем уничтожения всей системы частиц, к которой принадлежит эмиттер).

-

ПРИМЕЧАНИЕ Идентификаторы эмиттеров, возвращаемые этой функцией, используются повторно, например, если вы сначала создадите три эмиттера частиц, им будут присвоены идентификаторы 0, 1 и 2. Если вы затем уничтожите второй эмиттер (который получил ID 1) с помощью функции part_emitter_destroy и затем создадите другой эмиттер, то этот эмиттер будет повторно использовать ID 1. Поскольку ID эмиттера 2 используется, следующий эмиттер получит ID 3, и так далее.

-

Синтаксис:

-

part_emitter_create(ps);

- - - - - - - - - - - - - -
АргументТипОписание
psИдентификатор системы частицThe particle system to create the emitter in.
-

-

Возвращается:

-

Particle Emitter ID

-

-

Пример:

-

p_emit1 = part_emitter_create(Sname);

-

Это создаст новый эмиттер частиц и сохранит его индекс в переменной "p_emit".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_destroy.htm index ecedef071..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_destroy.htm @@ -1,70 +0,0 @@ - - - - - - part_emitter_destroy - - - - - - - - - - -

part_emitter_destroy

-

Эта функция удалит указанный эмиттер из данной системы и очистит его из памяти (это также остановит производство любых частиц данным эмиттером, но НЕ удалит их из комнаты). Эту функцию всегда следует вызывать, когда данный эмиттер больше не нужен системе, чтобы предотвратить утечку памяти и ошибки.

-

-

Синтаксис:

-

part_emitter_destroy( ps, ind );

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
psИдентификатор системы частицThe particle system to destroy the emitter from.
indИдентификатор излучателя частицThe index of the emitter to destroy.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if part_emitter_exists(global.Sname, p_emit)
- {
-     part_emitter_destroy(global.Sname, p_emit);
- }

-

Приведенный выше код проверит, существует ли эмиттер частиц, указанный в переменной "p_emit", в системе частиц give, и если да, то он будет уничтожен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_destroy_all.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_destroy_all.htm index 6b9aa68d1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_destroy_all.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_destroy_all.htm @@ -1,64 +0,0 @@ - - - - - - part_emitter_destroy_all - - - - - - - - - - -

part_emitter_destroy_all

-

Эта функция удалит все определенные эмиттеры из данной системы и очистит их из памяти (это также остановит производство любых частиц данным эмиттером, но НЕ удалит их из комнаты). Эту функцию всегда следует вызывать, когда эмиттеры больше не нужны системе, чтобы предотвратить утечку памяти и ошибки.

-

-

Синтаксис:

-

part_emitter_destroy_all( ps );

- - - - - - - - - - - -
АргументТипОписание
psThe particle system to destroy all emitters from.
-

-

Возвращается:

-

-

-

Пример:

-

if lives == 0
- {
-     part_emitter_destroy_all(global.Sname);
-     room_goto(rm_Menu);
- }

-

Приведенный выше код проверяет встроенную глобальную переменную "lives", и если она равна 0, то уничтожает все излучатели частиц, а затем меняет комнату.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_exists.htm index d09554867..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_exists.htm @@ -1,71 +0,0 @@ - - - - - - part_emitter_exists - - - - - - - - - - - -

part_emitter_exists

-

С помощью этой функции вы можете проверить, существует ли данный эмиттер частиц с заданным индексом в данной системе или нет. Обратите внимание, что если проверяемая переменная является неинициализированной переменной (которой эмиттер частиц в противном случае был бы присвоен его индекс), это приведет к ошибке.

-

-

Синтаксис:

-

part_emitter_exists(ps, ind);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
psИдентификатор системы частицThe particle system to check for an emitter.
indИдентификатор излучателя частицThe index of the emitter to search for.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if part_emitter_exists(sname, p_emit1)
- {
-     part_emitter_burst(sname, p_emit1, part_1, 30);
- }

-

Приведенный выше код проверит наличие эмиттера, указанного в переменной "permit", и если он существует, то выпустит из него 30 частиц.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_region.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_region.htm index 5b799c100..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_region.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_region.htm @@ -1,167 +0,0 @@ - - - - - - part_emitter_region - - - - - - - - - - -

part_emitter_region

-

Эта функция используется для задания положения излучателя частиц в текущей комнате. Вы указываете граничную область в функции, а затем используете любую из ряда констант для определения конечной формы излучателя в пределах этой граничной области, а также распределения частиц внутри формы. Доступные константы для форм распределения перечислены ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Форма излучателя частиц Постоянная
ПостояннаяОписание
ps_shape_rectangleПрямоугольная форма, заполняющая заданную область.
ps_shape_ellipseЭллипс, ширина и высота которого определяется площадью.
ps_shape_diamondФорма ромба с точками на половине ширины и половине высоты.
ps_shape_lineОдиночная линия, начальная точка которой находится слева и сверху, а конечная точка - справа и снизу.
-

-

Помимо форм распределения, вы также можете определить кривую распределения для частиц, которые будут испускаться. Доступные константы для кривых распределения перечислены ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Константа распределения излучателей частиц
ПостояннаяОписание
ps_distr_linearЛинейное распределение, при котором все частицы имеют равные шансы появиться в любой точке области.
ps_distr_gaussianГауссово распределение, в котором больше частиц генерируется в центре, а не по краям.
ps_distr_invgaussianОбратное гауссово распределение, при котором на краях образуется больше частиц, чем в центре.
-

-

Emitter Shapes

-

ПРИМЕЧАНИЕ: Если вам нужно, чтобы эмиттер двигался вместе с экземпляром, вам придется использовать эту функцию в событии шага и обновлять положение эмиттера таким образом. Также стоит отметить, что для точечных выбросов, где не нужно создавать частицы по площади или с определенным распределением, часто проще использовать функцию part_particles_create().

-

-

Синтаксис:

-

part_emitter_region(ps, ind, xmin, xmax, ymin, ymax, shape, distribution);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
psИдентификатор системы частицThe particle system that the emitter is in.
indИдентификатор излучателя частицThe index of the emitter to set.
xminРеальноThe x coordinate of the left side of the region.
xmaxРеальноThe x coordinate of the right side.
yminРеальноThe y coordinate of the top of the region.
ymaxРеальноThe y coordinate of the bottom of the region.
shapeФорма излучателя частиц ПостояннаяThe shape of the region.
distributionКонстанта распределения излучателей частицThe distribution style of the particles.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_emitter_region(global.Sname , emit_1, x - 50, x + 50, y - 50, y + 50, ps_shape_ellipse, ps_distr_linear);

-

Приведенный выше код установит эмиттер в эллиптическую форму высотой 100px и шириной 100px вокруг текущей позиции (x,y) экземпляра, выполняющего код.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_stream.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_stream.htm index e67795cbb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_stream.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Emitters/part_emitter_stream.htm @@ -1,77 +0,0 @@ - - - - - - part_emitter_stream - - - - - - - - - - -

part_emitter_stream

-

Эта функция позволяет настроить эмиттер на поток частиц определенного типа и обычно используется в событии create, поскольку это одноразовый код, который устанавливает эмиттер на генерацию заданного количества частиц на каждом последующем шаге игры. Частицы испускаются в соответствии с распределением, формой и положением, заданными функцией part_emitter_region(). Вы можете установить количество излучаемых частиц на ноль и вызвать эту функцию снова, чтобы "выключить" поток частиц, также функция будет принимать отрицательные числа для количества, в этом случае эмиттер будет генерировать частицы на основе случайности. Например, если количество частиц установлено на -5, то вероятность того, что частица будет производиться каждый шаг, составляет 1:5. Если вам нужно, чтобы частицы появлялись все сразу, а не на каждом шаге, используйте функцию part_emitter_burst().

-

-

Синтаксис:

-

part_emitter_stream(ps, ind, parttype, number);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
psИдентификатор системы частицThe particle system that the emitter is in.
indИдентификатор излучателя частицThe index of the emitter to burst from.
parttypeИдентификатор типа частицыThe index (type) of the particles to be created.
numberРеальноThe number of particles to create per step.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_emitter_stream(global. Sname, p_emit1, p1, 1);

-

Приведенный выше код будет передавать по 1 частице на каждом шаге игры, пока эмиттер не будет уничтожен или поток не установится на 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/Particle_Systems.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/Particle_Systems.htm index b6933c962..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/Particle_Systems.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/Particle_Systems.htm @@ -1,68 +0,0 @@ - - - - - - Системы частиц - - - - - - - - - - -

Системы частиц

-

Прежде чем создавать частицы, необходимо создать систему частиц. Это "контейнер", куда вы помещаете ваши частицы и эмиттеры (если они вам нужны), готовые к использованию, и вы можете поместить в одну систему столько частиц или меньше, сколько считаете нужным, и у вас может быть столько систем, сколько вы считаете нужным. Однако всегда лучше, чтобы это число было как можно меньше, поскольку каждая система, эмиттер и частица занимают память, и их количество может замедлить работу игры или вызвать проблемы. Например, если вам нужно, чтобы одни эффекты появлялись над объектами, а другие - под ними, создайте две системы и установите их глубину, чтобы получить желаемый эффект, при этом все частицы, добавляемые в каждую систему, будут рисоваться на указанной вами глубине.

-

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

-

Ниже перечислены основные функции для настройки системы частиц:

- -

-

Как только частицы добавлены в систему частиц и затем врываются в комнату, они обычно автоматически обновляются на каждом шаге и отрисовываются на основе параметров, которые вы использовали для их определения. Однако иногда бывает необходимо контролировать, когда и как обновляется система, а также как она должна быть отрисована, и для этого в GameMaker предусмотрены следующие функции:

- -

-

Вы можете использовать излучатели частиц, чтобы вырывать частицы из области, но во многих случаях в них нет необходимости, и лучше просто создавать частицы напрямую с помощью следующих функций:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_particles_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_particles_clear.htm index 87e0f617a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_particles_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_particles_clear.htm @@ -1,66 +0,0 @@ - - - - - - part_particles_clear - - - - - - - - - - -

part_particles_clear

-

С помощью этой функции вы можете удалить из комнаты все частицы, созданные системой в данный момент. Она не сбрасывает и не удаляет сами типы частиц, только их визуальное представление, и если у вас есть какой-либо объект, излучающий частицы из эмиттера, эти частицы исчезнут, но начнут появляться снова на следующем шаге после вызова этого кода.

-

-

Синтаксис:

-

part_particles_clear(ind);

- - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор системы частицThe index of the particle system.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (lives <= 0)
- {
-     part_particles_clear(global.Sname);
-     room_goto(rm_intro);
- }

-

Приведенный выше код проверит значение переменной "lives" и, если оно равно 0, очистит все частицы из системы, а затем сменит комнату.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_particles_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_particles_count.htm index e591de448..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_particles_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_particles_count.htm @@ -1,67 +0,0 @@ - - - - - - part_particles_count - - - - - - - - - - - -

part_particles_count

-

С помощью этой функции вы можете проверить, есть ли в системе частиц в данный момент частицы, созданные в комнате, и она также вернет их количество.

-

-

Синтаксис:

-

part_particles_count(ind);

- - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор системы частицThe index of the particle system.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if (part_particles_count(Sname) == 0)
- {
-     part_system_destroy(Sname);
-     instance_destroy();
- }

-

Приведенный выше код проверит количество частиц в локальной системе частиц, указанной в переменной "Sname", и если их нет, то уничтожит систему, а затем и экземпляр.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_particles_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_particles_create.htm index 7ec10afa7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_particles_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_particles_create.htm @@ -1,86 +0,0 @@ - - - - - - part_particles_create - - - - - - - - - - - -

part_particles_create

-

Эта функция идеально подходит для тех эффектов, которые не требуют функциональности, предлагаемой эмиттерами частиц (например, для создания дыма от ракеты или простого эффекта взрыва), поскольку она позволяет быстро и легко создавать частицы в любом месте игровой комнаты. Обратите внимание, что для использования этой функции необходимо предварительно создать систему частиц и тип частиц.

-

-

Синтаксис:

-

part_particles_create(ind, x, y, parttype, number);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор системы частицThe index of the particle system.
xРеальноThe x coordinate of where to create the particles.
yРеальноThe y coordinate of where to create the particles.
parttypeИдентификатор типа частицыThe index (type) of the particles to be created.
numberРеальноThe number of particles to create.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if mouse_check_button(mb_left)
- {
-     part_particles_create(sname, mouse_x, mouse_y, p_CursorEffect, 5);
- }

-

Приведенный выше код проверяет, нажата ли кнопка мыши, и если он возвращает true, то генерирует 5 частиц в позиции мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_particles_create_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_particles_create_colour.htm index aaca88294..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_particles_create_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_particles_create_colour.htm @@ -1,93 +0,0 @@ - - - - - - part_particles_create_colour - - - - - - - - - - - -

part_particles_create_colour

-

Эта функция идеально подходит для тех эффектов, которые не требуют функциональности, предлагаемой эмиттерами частиц (например, для создания дыма от ракеты или простого эффекта взрыва), поскольку она позволяет быстро и легко создавать частицы в любом месте игровой комнаты. Вы также можете окрашивать частицы "на лету", когда они создаются с помощью этой функции, и этот цвет будет перекрывать предопределенный цвет частицы, но он не будет смешиваться с цветом в течение всего времени жизни частицы. Обратите внимание, что для использования этой функции необходимо предварительно создать систему частиц и тип частиц.

-

-

Синтаксис:

-

part_particles_create_colour(ind, x, y, parttype, colour, number);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор системы частицThe index of the particle system.
xРеальноThe x coordinate of where to create the particles.
yРеальноThe y coordinate of where to create the particles.
parttypeИдентификатор типа частицыThe index (type) of the particles to be created.
colourЦветThe colour blending for the particles.
numberРеальноThe number of particles to create.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (speed > 1)
- {
-     var _c = choose(c_aqua, c_lime, c_fuchsia, c_orange);
-     part_particles_create_colour(sname, x, y, p_Smoke, _c, 1);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_automatic_draw.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_automatic_draw.htm index 0585184f8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_automatic_draw.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_automatic_draw.htm @@ -1,68 +0,0 @@ - - - - - - part_system_automatic_draw - - - - - - - - - - -

part_system_automatic_draw

-

Эта функция может быть использована для отключения отрисовки системы частиц, так что любые обновления системы (автоматические или иные) не будут видны. Это чисто визуальная опция, и когда она установлена на false, вы не сможете увидеть частицы, поскольку они не отрисованы, но они все еще существуют и меняют положение, цвет и т.д., как это происходит обычно. Когда автоматическое рисование выключено, вы можете явно приказать GameMaker нарисовать текущее состояние системы частиц с помощью функции part_system_drawit()и если вы снова установите эту функцию на true, то сможете снова включить автоматическое рисование.

-

Следует отметить, что если вы используете простые эффекты, созданные функциями effect_create_above() или effect_create_below() то вы можете использовать значения 0 (для эффектов ниже) или 1 (для эффектов выше) в качестве индекса системы частиц и таким образом переключить автоматическое рисование для них (это также работает для переключения рисования для эффектов частиц GML Visual).

-

-

Синтаксис:

-

part_system_automatic_draw(ind, automatic);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор системы частицThe index of the particle system to change.
automaticБулевоWhether automatic drawing is on (true) or not (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_system_automatic_draw(global.Sname, false);

-

Приведенный выше код отключает автоматическое рисование для системы частиц, проиндексированной в глобальной переменной "Sname".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_automatic_update.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_automatic_update.htm index 5673bc848..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_automatic_update.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_automatic_update.htm @@ -1,71 +0,0 @@ - - - - - - part_system_automatic_update - - - - - - - - - - -

part_system_automatic_update

-

Эта функция управляет тем, должен ли GameMaker автоматически обновлять систему частиц или нет. Обычно вам не нужно использовать эту функцию, поскольку значение по умолчанию true (автоматическое обновление включено) - это то, что вы хотите, чтобы произошло. Однако для специальных эффектов или для приостановки игры вы можете установить значение false, и это предотвратит любое обновление данной системы частиц, если не будет дана явная команда с помощью функции part_system_update() или вы снова используете эту функцию для включения автоматического обновления. Отсутствие обновления означает, что частицы, созданные в этой системе, больше не будут менять положение, цвет или любой другой параметр, и эмиттеры тоже перестанут работать, "заморозив" систему в той самой точке, в которой автоматическое обновление было установлено на false.

-

Следует отметить, что если вы используете простые эффекты, созданные функциями effect_create_above() или effect_create_below() то вы можете использовать значения 0 (для эффектов ниже) или 1 (для эффектов выше) в качестве индекса системы частиц и таким образом переключить автоматическое обновление для них (это также работает для переключения обновления для эффектов визуальных частиц GML ).

-

-

Синтаксис:

-

part_system_automatic_update(ind, automatic);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор системы частицThe index of the particle system to change.
automaticБулевоWhether automatic updating is on (true) или нет (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if global.Pause
- {
-     part_system_automatic_update(global.Sname, false);
- }

-

Приведенный выше код отключит обновление частиц, если глобальная переменная "Paused" равна true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_clear.htm index 2b3e7a4ca..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_clear.htm @@ -1,64 +0,0 @@ - - - - - - part_system_clear - - - - - - - - - - -

part_system_clear

-

С помощью этой функции вы можете очистить индексированную систему до состояния по умолчанию, удалив все эмиттеры и сбросив глубину и положение (если они были изменены). Будьте осторожны при использовании этой функции, так как если у вас есть установка экземпляра, разрыв или любое другое действие, использующее эмиттер, связанный с этой системой, вы получите ошибку, если только вы не используете функцию part_emitter_exists() для проверки. Также нет необходимости вызывать функцию part_emitter_destroy(), так как это происходит автоматически.

-

ПРИМЕЧАНИЕ: эта функция очистит видимые частицы в комнате, но она не очищает свойства частиц и не удаляет их из памяти. Для этого следует использовать функции part_type_clear() и part_type_destroy().

-

-

Синтаксис:

-

part_system_clear(ind);

- - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор системы частицThe index of the particle system to clear.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_system_clear(global.Sname);

-

Приведенный выше код очистит систему частиц, индексированную в глобальной переменной "Sname", до состояния по умолчанию.

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_create.htm index 0689391e9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_create.htm @@ -1,49 +0,0 @@ - - - - - - part_system_create - - - - - - - - - - - -

part_system_create

-

Эта функция используется для создания новой системы частиц и возвращает уникальный индексный номер, который должен быть сохранен и использован во всех дальнейших функциях, относящихся к этой системе. Системе будет присвоен управляемый слой и установлена глубина 0. Управляемые слои недоступны для пользователя и используются только для внутреннего управления, когда вместо слоев используется глубина. Обычно вы используете функцию part_system_create_layer() вместо этой.

-

-

Синтаксис:

-

part_system_create();

-

-

Возвращается:

-

Particle System ID

-

-

Пример:

-

global.Sname = part_system_create();

-

Это создаст новую систему частиц и сохранит индекс в глобальной переменной "Sname".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_create_layer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_create_layer.htm index 5d29f8016..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_create_layer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_create_layer.htm @@ -1,70 +0,0 @@ - - - - - - part_system_create_layer - - - - - - - - - - - -

part_system_create_layer

-

Эта функция создаст новую систему частиц на заданном слое. Вы указываете уникальный идентификатор слоя, возвращаемый функцией layer_create() или имя слоя в виде строки - например, "instance_layer" - и затем отмечаете систему как постоянную или нет. Если система не помечена как постоянная, то она будет автоматически уничтожена в конце комнаты, в которой она была создана (это то же самое, как если бы вы вызвали функцию part_system_destroy() и также уничтожит все эмиттеры, связанные с системой). Однако, если система помечена как постоянная, то при смене комнаты она будет перенесена в следующую комнату, и если в следующей комнате нет слоя с таким же именем или глубиной, как у назначенного слоя, то для системы будет создан новый слой, сохраняющийся во всех комнатах, и он будет назван так же, как исходный слой. При смене комнаты, если в следующих комнатах есть другой слой с таким же именем, то сохраняемый экземпляр будет назначен слою с таким именем, независимо от глубины слоя. Наконец, если сохраняемая система перемещается в комнату со слоем на той же глубине, что и слой, на котором была создана система, она не будет назначена этому слою, а вместо этого будет создан новый слой на той же глубине (с тем же именем, что и исходный слой).

-

Функция вернет уникальное значение ID для системы частиц, которое следует использовать во всех дальнейших вызовах функции, где требуется указать ID системы.

-

ВАЖНО! Если вы отметите систему частиц как постоянную, то ее (и все эмиттеры, назначенные ей) нужно будет очищать вручную с помощью соответствующих функций уничтожения, когда она не используется, иначе вы рискуете получить утечку памяти, которая негативно повлияет на конечную игру.

-

-

Синтаксис:

-

part_system_create_layer(layer_id, persistent);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
layerСтрока или идентификатор слояThe layer ID (or name) to assign the particle system to (can be any layer type)
persistentБулевоFlag the particle system as persistent (set to true) или нет (установлено на false)
-

-

Возвращается:

-

Particle System ID

-

-

Пример:

-

global.p_sys = part_system_create_layer("effects_layer", true);

-

Приведенный выше код создаст новую систему частиц на данном слое и пометит ее как сохраняющуюся в последующих комнатах. Идентификатор системы частиц сохраняется в глобальной переменной области видимости для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_depth.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_depth.htm index ce2b9406e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_depth.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_depth.htm @@ -1,68 +0,0 @@ - - - - - - part_system_depth - - - - - - - - - - -

part_system_depth

-

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

-

-

Синтаксис:

-

part_system_depth( ind, depth );

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор системы частицThe index of the particle system to change.
depthРеальноThe depth at which to set the particle system.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

global.Sname = part_system_create();
- part_system_depth(global.Sname, -1000 );

-

Приведенный выше код создаст систему частиц и сохранит ее индекс в глобальной переменной "Sname". Затем этой системе присваивается малая глубина прорисовки -1000, что означает, что она будет отображаться поверх всего, что имеет большую глубину прорисовки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_destroy.htm index d9a972747..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_destroy.htm @@ -1,67 +0,0 @@ - - - - - - part_system_destroy - - - - - - - - - - -

part_system_destroy

-

С помощью этой функции вы можете уничтожить данную систему частиц и удалить ее из памяти. Эта функция всегда должна вызываться, когда система больше не нужна, например, в конце комнаты или в событии destroy экземпляра, иначе вы можете получить частицы, появляющиеся в последующих комнатах и не имеющие возможности их удалить, а также утечку памяти, которая в конечном итоге приведет к краху вашей игры.

-

ПРИМЕЧАНИЕ: Эта функция также уничтожит и удалит все эмиттеры, которые могли быть созданы и связаны с уничтожаемой системой.

-

-

Синтаксис:

-

part_system_destroy(ind);

- - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор системы частицThe index of the particle system to destroy.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (global.player_hp <= 0)
- {
-     part_system_destroy(p_sys);
-     room_goto_next();
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_draw_order.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_draw_order.htm index 488e569e1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_draw_order.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_draw_order.htm @@ -1,71 +0,0 @@ - - - - - - part_system_draw_order - - - - - - - - - - - -

part_system_draw_order

-

С помощью этой функции вы можете задать способ отрисовки частиц при их создании на экране. Система по умолчанию использует старый > новый вид (функция установлена на true), где старые частицы рисуются на большей глубине, чем новые, и поэтому появляются "под" новыми частицами, но, установив эту функцию на false, вы можете изменить этот порядок, и новые частицы будут рисоваться выше, и поэтому появятся "под" старыми. Приведенные ниже изображения иллюстрируют это, причем изображение слева имеет значение по умолчанию true, а изображение справа - false:

-
Old to new particle example New to old particle example
-

ПРИМЕЧАНИЕ: Когда частицы рисуются с аддитивным режимом наложения, эффект от этой функции не всегда очевиден.

-

-

Синтаксис:

-

part_system_draw_order(ind, oldtonew);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор системы частицThe index of the particle system to change.
oldtonewБулевоWhether old particles should be drawn behind newer ones (true) or vice versa (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

mysystem = part_system_create();
- part_system_draw_order(mysystem, true);

-

Это создаст новую систему частиц с индексом "mysystem", а затем установит частицы, чтобы новые частицы рисовались поверх старых.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_drawit.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_drawit.htm index f8d3e710a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_drawit.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_drawit.htm @@ -1,67 +0,0 @@ - - - - - - part_system_drawit - - - - - - - - - - -

part_system_drawit

-

С помощью этой функции вы можете заставить систему частиц нарисовать все текущие частицы на экране. Если part_system_automatic_draw() выключена, то эта функция покажет частицы при использовании в событии draw экземпляра, или она может быть использована, когда цель рисования установлена на поверхность (с помощью surface_set_target()), чтобы нарисовать частицы в системе на этой поверхности.

-

-

Синтаксис:

-

part_system_drawit(ind);

- - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор системы частицThe index of the particle system to draw the particles of.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if surface_exists(surf)
- {
-     surface_set_target(surf);
-     part_system_drawit(global.psys);
-     surface_reset_target();
- }

-

Приведенный выше код проверяет, существует ли поверхность, указанная в переменной "surf", и если существует, то устанавливает цель рисования на поверхность, рисует систему частиц с идентификатором, сохраненным в глобальной переменной, а затем сбрасывает цель рисования, чтобы на экране снова появилась обычная отрисовка.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_exists.htm index d0668bece..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_exists.htm @@ -1,66 +0,0 @@ - - - - - - part_system_exists - - - - - - - - - - - -

part_system_exists

-

С помощью этой функции вы можете проверить, существует ли данная система частиц в игре или нет. Обратите внимание, что если проверяемая переменная является неинициализированной переменной (которой система частиц в противном случае присвоила бы свой индекс), это приведет к ошибке.

-

-

Синтаксис:

-

part_system_exists(ind);

- - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор системы частицThe index of the particle system to check for.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !part_system_exists(global.Sname)
- {
-     global.Sname = part_system_create();
- }

-

Приведенный выше код проверяет, существует ли система частиц, на которую ссылается глобальная переменная, и если нет, то она создается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_get_layer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_get_layer.htm index 1a719fffe..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_get_layer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_get_layer.htm @@ -1,66 +0,0 @@ - - - - - - part_system_get_layer - - - - - - - - - - - -

part_system_get_layer

-

Эта функция может использоваться для получения уникального значения ID слоя для заданной системы частиц. Вы передаете значение ID системы частиц (возвращаемое функцией part_system_create_layer()), а функция вернет значение ID слоя.

-

-

Синтаксис:

-

part_system_get_layer(ind);

- - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор системы частицThe particle system ID value to get the layer ID of
-

-

Возвращается:

-

Layer ID or 0 (if the layer is an internally managed one)

-

-

Пример:

-

if (part_system_get_layer(global.p_sys) != "effects_layer")
- {
-     part_system_layer(global.p_sys, _effects_layer);
- }

-

Приведенный выше код проверит систему частиц, чтобы узнать, на каком слое она находится, и если она не находится на заданном слое, то она будет изменена.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_layer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_layer.htm index 95a649e9d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_layer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_layer.htm @@ -1,70 +0,0 @@ - - - - - - part_system_layer - - - - - - - - - - -

part_system_layer

-

Эта функция может использоваться для переключения системы частиц с текущего слоя на новый. Вы передаете значение ID системы частиц (возвращаемое функцией part_system_create_layer()), а затем уникальный идентификатор слоя (возвращаемый функцией layer_create() или имя слоя в виде строки - например, "instance_layer" - как определено в редакторе комнат), и система будет перемещена на новый слой.

-

-

Синтаксис:

-

part_system_layer(ps, layer);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
psИдентификатор системы частицThe particle system ID
layerСтрока или идентификатор слояThe new layer ID
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (part_system_get_layer(global.p_sys) != "effects_layer")
- {
-     part_system_layer(global.p_sys, "effects_layer";
- }

-

Приведенный выше код проверит систему частиц, чтобы узнать, на каком слое она находится, и если она не находится на заданном слое, то она будет изменена.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_position.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_position.htm index fe10f62b1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_position.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_position.htm @@ -1,76 +0,0 @@ - - - - - - part_system_position - - - - - - - - - - -

part_system_position

-

С помощью этой функции вы можете установить базовую позицию для системы частиц относительно позиции (0,0) в комнате. Это означает, что все последующие функции частиц, относящиеся к этой системе, теперь будут рисоваться относительно новой позиции. По умолчанию это положение всегда (0,0), но в некоторых особых обстоятельствах вы можете захотеть изменить его на что-то другое.

-

ПРИМЕЧАНИЕ: Эта функция изменит все в системе частиц, поэтому если у вас есть эмиттер в позиции (100,100), а затем вы установите позицию системы частиц на (0,100), эмиттер теперь будет рисоваться в позиции (100,200). То же самое произойдет, если вы сместите систему, а затем создадите эмиттер, так как даже если вы создадите его в позиции (100,100), он будет нарисован в позиции (100,200).

-

-

Синтаксис:

-

part_system_position(ind, x, y);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор системы частицThe index of the particle system to change.
xРеальноThe new x coordinate of the particle system.
yРеальноThe new y coordinate of the particle system.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if mouse_check_button_pressed(mb_left)
- {
-     part_system_position(global.Sname, mouse_x, mouse_y);
- }

-

Приведенный выше код будет проверять нажатие кнопки мыши, и если он обнаружит таковое, система частиц, индексированная в глобальной переменной "Sname", будет смещена в позицию x/y мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_update.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_update.htm index cb2b8d86b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_update.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Systems/part_system_update.htm @@ -1,65 +0,0 @@ - - - - - - part_system_update - - - - - - - - - - -

part_system_update

-

Эта функция продвигает заданную систему частиц на один шаг в игровом времени и может использоваться для имитации поведения системы частиц, когда автоматическое обновление выключено, или для продвижения системы частиц к определенной точке за один шаг. Например, если у вас есть система частиц для снега, и вы хотите, чтобы казалось, что снег падает с того момента, как игрок входит в комнату, то вы можете продвинуть частицы снега на несколько секунд в событии создания экземпляра, чтобы при первом рисовании частицы были по всему экрану (пример кода ниже показывает это). Вы также можете использовать эту функцию, когда автоматическое обновление системы отключено функцией part_system_automatic_update() для перемещения системы.

-

-

Синтаксис:

-

part_system_update(ind);

- - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор системы частицThe index of the particle system to update.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

repeat (room_speed * 3)
- {
-     part_system_update(global.RainSys);
- }

-

Приведенный выше код продвинет систему частиц, индексированную в глобальной переменной "RainSys", на 3 секунды.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/Particle_Types.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/Particle_Types.htm index da800a5fb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/Particle_Types.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/Particle_Types.htm @@ -1,88 +0,0 @@ - - - - - - Типы частиц - - - - - - - - - - -

Типы частиц

-

Частицы - это графические эффекты, которые могут быть созданы с помощью систем частиц в игре. Частицы, которые вы определяете с помощью этих функций, могут быть использованы в любой созданной вами системе, и обычной процедурой является определение всех частиц один раз в начале игры и сохранение их индексных значений в глобальных переменных. Затем эти глобальные переменные можно использовать для всплеска, испускания или создания частиц в любое время на протяжении всей игры. Вы также можете создавать, использовать и затем уничтожать частицы по мере необходимости, если память является проблемой, или если вы хотите иметь много различных типов, но только в определенные моменты игры. Что бы вы ни выбрали, частицы - это очень универсальный ресурс!

-

Частицы должны быть созданы, а их индекс сохранен в переменной, чтобы все последующие процедуры работы с частицами могли правильно к ним обращаться. Следующие функции используются для создания, проверки, очистки и уничтожения типов частиц:

- -

-

После создания типа частицы необходимо придать ей форму. Это может быть одна из 14 встроенных форм, которые представляют собой 64x64 пикселя sprites с альфа-смешиванием, или вы можете использовать свою собственную sprites, которая может быть анимированной, статичной или использовать случайные суб-изображения. Следующие функции определяют визуальную базовую форму каждой частицы:

- -

-

На следующем изображении показаны 14 встроенных типов частиц, которые вы можете выбрать:

-

После того как вы выбрали sprite для типа частицы (либо форму по умолчанию, либо свою собственную), вы можете указать ее размер и масштаб. Размер может быть указан как диапазон, и все частицы будут созданы с размером, выбранным из заданного диапазона. Масштаб - это "базовое" значение для масштаба частицы по осям x и y до добавления любых изменений размера, и для управления этими значениями используются следующие функции:

- -

-

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

- -

-

После того, как вы определились со стилем и движением частиц, вы можете задать их цвет и альфа-значения, которые могут быть заданы как абсолютное значение в течение всего времени жизни частицы или как шкала значений, постепенно переходящих от одного к другому. Обратите внимание, что существует также специальная функция, позволяющая задать смешивание частиц и их окружения, которое может быть обычным или аддитивным и дает фантастические эффекты. Функции, управляющие цветом, альфой и смешиванием, следующие:

- -

-

Частицы существуют на экране ограниченное количество времени, которое называется их "временем жизни". Время жизни частиц измеряется в шагах и (как и предыдущие функции) выражается в виде диапазона значений, из которого частице будет присвоено определенное время жизни. Есть также несколько интересных функций, которые можно использовать для того, чтобы заставить частицы генерировать другие частицы, либо на каждом шаге, либо когда они "умирают" (т.е. удаляются с экрана), но будьте очень осторожны с этими функциями, так как они могут быстро создать тысячи частиц и вывести игру из строя! Функции, которые устанавливают время жизни и излучение при шаге или смерти, следующие:

- -

-

Стоит отметить, что создание частиц с помощью кода часто может быть трудоемким и длительным процессом из-за большого количества параметров, которые можно изменять и настраивать. По этой причине рекомендуется поискать и приобрести какой-нибудь конструктор частиц (или сделать его самому!), чтобы избавиться от трудоемкого процесса создания частиц.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_alpha1.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_alpha1.htm index 1638e7ae7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_alpha1.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_alpha1.htm @@ -1,67 +0,0 @@ - - - - - - part_type_alpha1 - - - - - - - - - - -

part_type_alpha1

-

Эта функция используется для установки типа частиц, чтобы они имели одно значение альфа (прозрачность) в течение всего времени жизни каждой отдельной частицы, и это значение может быть от 0 (прозрачный) до 1 (непрозрачный).

-

-

Синтаксис:

-

part_type_alpha1(ind, alpha1);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
alpha1РеальноThe alpha of the particle.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_alpha1(global.Snow_Part, 0.5);

-

Приведенный выше код установит для всех созданных частиц типа частицы, указанного в глобальной переменной "Snow_Part", значение альфа 0,5 (полупрозрачный).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_alpha2.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_alpha2.htm index c5b4e387d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_alpha2.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_alpha2.htm @@ -1,72 +0,0 @@ - - - - - - part_type_alpha2 - - - - - - - - - - -

part_type_alpha2

-

Эта функция может быть использована для установки градиента альфа-значения (прозрачности) для каждой созданной частицы заданного типа. Первая альфа - это та, с которой все частицы будут начинаться, а вторая альфа - та, с которой частица будет заканчиваться, и будет происходить плавное градиентное изменение альфы по времени жизни частиц от одной к другой. Это значение может быть от 0 (прозрачный) до 1 (непрозрачный).

-

-

Синтаксис:

-

part_type_alpha2(ind, alpha1, alpha2);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
alpha1РеальноThe start alpha of the particle.
alpha2РеальноThe end alpha of the particle.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_alpha2(global.Snow_Part, 0, 1);

-

Приведенный выше код установит для всех созданных частиц типа частиц, индексированных в глобальной переменной "Snow_Part", альфа-значение 0 (прозрачный), а в конце их жизни альфа-значение станет равным 1 (непрозрачный).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_alpha3.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_alpha3.htm index 7876fa364..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_alpha3.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_alpha3.htm @@ -1,77 +0,0 @@ - - - - - - part_type_alpha3 - - - - - - - - - - -

part_type_alpha3

-

Эта функция может быть использована для установки градиента с тремя значениями альфа (прозрачности) для каждой созданной частицы данного типа. Первая альфа - это та, с которой будут начинаться все частицы, вторая альфа - это та, которая будет смешиваться до половины времени жизни частицы, а третья альфа - это та, с которой частица будет заканчиваться. В течение жизни частицы будет происходить плавное изменение градиента от одной альфы к другой.

-

-

Синтаксис:

-

part_type_alpha3(ind, alpha1, alpha2, alpha3);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
alpha1РеальноThe starting alpha of the particle.
alpha2РеальноThe halfway point alpha of the particle.
alpha3РеальноThe ending alpha of the particle.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_alpha3( part_Health, 0.5, 1, 0);

-

Приведенный выше код заставит все созданные частицы типа, указанного в переменной "part_Health", иметь альфа-смесь от 0.5 до 1 до 0 в течение их жизни.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_blend.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_blend.htm index f6b0c8285..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_blend.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_blend.htm @@ -1,67 +0,0 @@ - - - - - - part_type_blend - - - - - - - - - - -

part_type_blend

-

С помощью этой функции вы можете заставить ваши частицы рисоваться с аддитивным режимом наложения (true) или нет (false). Аддитивное наложение - это специальный режим наложения, который добавляет значения светимости каждой частицы по мере их наложения, так что светлые цвета постепенно становятся светлее (пока не покажутся белыми) по мере их наложения, а темные цвета становятся все более прозрачными, а черный цвет практически невидим. Эта функция может дать некоторые красивые эффекты частиц, но не всегда это необходимо. Например, в эффекте дыма аддитивное смешивание будет выключено, чтобы сохранить эффект серого цвета, но в эффекте пламени оно, вероятно, будет включено, чтобы сделать частицы более прозрачными и яркими.

-

-

Синтаксис:

-

part_type_blend(ind, additive);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
additiveБулевоWhether the particles should be blended additively (true) or normally (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_blend(part_Fire, true);

-

Приведенный выше код установит для всех созданных частиц типа частиц, указанного в переменной "part_Fire", аддитивный режим наложения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_clear.htm index 650b7044a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_clear.htm @@ -1,62 +0,0 @@ - - - - - - part_type_clear - - - - - - - - - - -

part_type_clear

-

С помощью этой функции вы можете "сбросить" частицу, вернув все значения для каждой из функций, относящихся к частице (жизнь, цвет, альфа, ориентация и т.д.), к значениям по умолчанию. Обратите внимание, что эта функция не удаляет с экрана частицы, видимые в данный момент в комнате, для этого следует использовать функцию part_particles_clear().

-

-

Синтаксис:

-

part_type_clear(ind);

- - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to clear.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_clear(global.explode_part);

-

Приведенный выше код очистит тип частицы, указанный в глобальной переменной "explode_part", до значений по умолчанию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour1.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour1.htm index ee7a78956..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour1.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour1.htm @@ -1,68 +0,0 @@ - - - - - - part_type_colour1 - - - - - - - - - - -

part_type_colour1

-

Эта функция используется для установки типа частицы, чтобы она была одного цвета в течение всего времени жизни каждой отдельной частицы.

-

-

Синтаксис:

-

part_type_colour1(ind, colour1);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
colour1ЦветThe single colour to make the particle type.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_colour1(global.Snow_Part, c_white);

-

Приведенный выше код установит, что все частицы, созданные по типу частиц, индексированных в глобальной переменной "Snow_Part", будут только белыми.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour2.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour2.htm index c82e59abc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour2.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour2.htm @@ -1,73 +0,0 @@ - - - - - - part_type_colour2 - - - - - - - - - - -

part_type_colour2

-

Эта функция может быть использована для установки двухцветного градиента для каждой созданной частицы заданного типа. Первый цвет - это цвет, с которого будут начинаться все частицы, а второй цвет - это цвет, на котором частица будет заканчиваться, и плавное градиентное изменение цвета будет происходить на протяжении всего времени жизни частицы от одного цвета к другому.

-

-

Синтаксис:

-

part_type_colour2(ind, colour1, colour2);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
colour1ЦветThe colour the particle will start at.
colour2ЦветThe colour the particle will end at.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_colour2( part_Health, c_red, c_white);

-

Приведенный выше код заставит все созданные частицы типа, указанного в переменной "part_Health", менять цвет от красного к белому в течение их жизни.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour3.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour3.htm index 6cb2f0ca1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour3.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour3.htm @@ -1,78 +0,0 @@ - - - - - - part_type_colour3 - - - - - - - - - - -

part_type_colour3

-

Эта функция может быть использована для установки трехцветного градиента для каждой созданной частицы заданного типа. Первый цвет - это цвет, с которого все частицы будут начинаться, второй цвет - это цвет, который будет смешиваться до половины времени жизни частицы, а третий цвет - это цвет, с которым частица будет заканчиваться. На протяжении жизни частицы будет происходить плавное градиентное изменение цветов от одного к другому.

-

-

Синтаксис:

-

part_type_colour3( ind, colour1, colour2, colour3 );

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
colour1ЦветThe colour the particle will start at.
colour2ЦветThe colour the particle will be halfway through its lifespan.
colour3ЦветThe colour the particle will end at.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_colour3( part_Health, c_red, c_white, c_maroon);

-

Приведенный выше код заставит все частицы, созданные по типу, указанному в переменной "part_Health", иметь смесь цветов от красного до белого и бордового в течение их жизни.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour_hsv.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour_hsv.htm index f0749ec40..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour_hsv.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour_hsv.htm @@ -1,93 +0,0 @@ - - - - - - part_type_colour_hsv - - - - - - - - - - -

part_type_colour_hsv

-

С помощью этой функции вы можете задать оттенок, насыщенность и диапазон значений для всех частиц данного типа. Вы задаете минимальное значение и максимальное значение для каждого из трех компонентов, и созданные частицы будут иметь случайный цвет, основанный на заданном диапазоне параметров. Таким образом, вы можете создавать частицы одного оттенка, но разной насыщенности, или разных оттенков, но одинаковой величины (светимость) и т.д.. Все значения должны быть в диапазоне от 0 до 255.

-

-

Синтаксис:

-

part_type_colour_hsv(ind, hmin, hmax, smin, smax, vmin, vmax);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
hminРеальноThe minimum the final colour's hue component can be.
hmaxРеальноThe maximum the final colour's hue component can be.
sminРеальноThe minimum the final colour's saturation component can be.
smaxРеальноThe maximum the final colour's saturation component can be.
vminРеальноThe minimum the final colour's value component can be.
vmaxРеальноThe maximum the final colour's value component can be.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_hsv(global.Stars, 0, 255, 0, 255, 255, 255 );

-

Приведенный выше код устанавливает для каждой испускаемой частицы типа частицы, индексируемой в глобальной переменной "Stars", разные цвета и насыщенность, но одинаковое значение (светимость).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour_mix.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour_mix.htm index 3b712847a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour_mix.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour_mix.htm @@ -1,73 +0,0 @@ - - - - - - part_type_colour_mix - - - - - - - - - - -

part_type_colour_mix

-

С помощью этой функции вы можете задать для заданного типа частиц случайное смешение двух цветов.

-

-

Синтаксис:

-

part_type_colour_mix(ind, colour1, colour2);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
colour1ЦветThe first colour the blend will take from.
colour2ЦветThe second colour the blend will take from.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_colour_mix(global.P_Damage, c_red, c_yellow);

-

Приведенный выше код установит цвет для каждой частицы, испускаемой частицей типа, указанного в глобальной переменной "P_Damage", как случайную смесь между красным и желтым цветами.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour_rgb.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour_rgb.htm index aefb59f35..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour_rgb.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_colour_rgb.htm @@ -1,93 +0,0 @@ - - - - - - part_type_colour_rgb - - - - - - - - - - -

part_type_colour_rgb

-

С помощью этой функции вы можете задать сочетание красного, зеленого и синего цветов для всех создаваемых частиц данного типа. Вы задаете минимальное значение и максимальное значение для каждого из трех компонентов, и созданные частицы будут иметь случайный цвет, основанный на заданном диапазоне параметров. Все значения должны быть в диапазоне от 0 до 255.

-

-

Синтаксис:

-

part_type_colour_rgb(ind, rmin, rmax, gmin, gmax, bmin, bmax p>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
rminРеальноThe minimum the final colour's red component can be.
rmaxРеальноThe maximum the final colour's red component can be.
gminРеальноThe minimum the final colour's green component can be.
gmaxРеальноThe maximum the final colour's green component can be.
bminРеальноThe minimum the final colour's blue component can be.
bmaxРеальноThe maximum the final colour's blue component can be.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_rgb(global.Blood_Part, 0, 255, 0, 0, 0, 0);

-

Приведенный выше код устанавливает, что каждая частица, испускаемая типом частицы, проиндексированным в глобальной переменной "Blood_Part", имеет только различные оттенки красного цвета.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_create.htm index ec1796c53..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_create.htm @@ -1,49 +0,0 @@ - - - - - - part_type_create - - - - - - - - - - - -

part_type_create

-

С помощью этой функции вы можете создать новый тип частицы, а возвращаемое значение должно быть сохранено в переменной для использования во всех последующих функциях частиц.

-

-

Синтаксис:

-

part_type_create();

-

-

Возвращается:

-

Particle Type ID

-

-

Пример:

-

mypart = part_type_create();

-

Это создаст новый тип частицы, сохранив ее индекс в переменной "mypart".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_death.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_death.htm index 86d1ea63f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_death.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_death.htm @@ -1,97 +0,0 @@ - - - - - - part_type_death - - - - - - - - - - -

part_type_death

-

Эта функция может быть использована для того, чтобы заставить вашу частицу взорваться частицей другого типа в конце ее жизни.

-

ПРИМЕЧАНИЕ: НИКОГДА не используйте один и тот же тип частиц, так как это вызовет бесконечный цикл и может привести к краху игры в считанные секунды! Кроме того, будьте очень осторожны при использовании этой функции, так как она может значительно увеличить количество частиц на экране одновременно и привести к заметному замедлению игры.

-

-

Синтаксис:

-

part_type_death(ind, death_number, death_type);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
death_numberРеальноThe quantity of the new particle to create at the particle death. If a negative value, it will instead create a fraction chance one is created (eg -3 would mean that one is created every 3 or so steps).
death_typeИдентификатор типа частицыThe index of the particle type to create at death.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

particle1 = part_type_create();
- part_type_shape(particle1, pt_shape_flare);
- part_type_size(particle1, 0.20, 0.30, 0.50, 0);
- part_type_scale(particle1, 0.10, 0.20);
- part_type_colour3(particle1, 33023, 8454143, 33023);
- part_type_alpha3(particle1, 0.30, 0.50, 0);
- part_type_speed(particle1, 0.40, 1, 0, 0);
- part_type_direction(particle1, 0, 359, 0, 20);
- part_type_gravity(particle1, 0.20, 90);
- part_type_orientation(particle1, 90, 90, 0, 0, 1);
- part_type_blend(particle1, 1);
- part_type_life(particle1, 1, 40);
- particle2 = part_type_create();
- part_type_shape(particle2, pt_shape_smoke);
- part_type_size(particle2, 1, 1, 0, 0);
- part_type_scale(particle2, 0.50, 0.50);
- part_type_colour1(particle2, 12632256);
- part_type_alpha3(particle2, 0.10, 0.40, 0);
- part_type_speed(particle2, 0.50, 0.50, 0, 0);
- part_type_direction(particle2, 0, 359, 0, 0);
- part_type_gravity(particle2, 0.20, 90);
- part_type_orientation(particle2, 0, 359, 0, 1, 1);
- part_type_blend(particle2, 0);
- part_type_life(particle2, 60, 60);
- part_type_death(particle1, 1, particle2);

-

Приведенный выше код создает и определяет две частицы и устанавливает частицу, индексированную в переменной "particle1", для создания 1 частицы "particle2" в конце ее времени жизни.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_destroy.htm index 966018709..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_destroy.htm @@ -1,68 +0,0 @@ - - - - - - part_type_destroy - - - - - - - - - - -

part_type_destroy

-

С помощью этой функции вы можете удалить из игры частицу указанного типа. При использовании этой функции все частицы указанного типа исчезнут из комнаты, а сама частица будет удалена из памяти, поэтому эту функцию следует использовать только тогда, когда частица больше не нужна.

-

-

Синтаксис:

-

part_type_destroy(ind);

- - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to destroy.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if part_particles_count(smoke_sys) = 0
- {
-     part_type_destroy(smoke_part);
-     part_system_destroy(smoke_sys);
-     instance_destroy();
- }
- else alarm[0] = 1;

-

Приведенный выше код проверяет систему частиц на предмет того, видны ли в данный момент в комнате какие-либо частицы, и если нет, то частицы, система и экземпляр уничтожаются.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_direction.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_direction.htm index 166e33ec9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_direction.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_direction.htm @@ -1,94 +0,0 @@ - - - - - - part_type_direction - - - - - - - - - - -

part_type_direction

-

Эта функция используется для определения направления частицы при ее создании, а также может использоваться для того, чтобы частица увеличивала или уменьшала свое направление в течение жизни. Минимальное и максимальное значения направления по умолчанию равны 0, что означает, что частица будет двигаться вправо без изменений, но эти значения можно изменить, чтобы ограничить направление движения в соответствии со стандартными направлениями GameMaker: 0 - вправо, 90 - вверх, 180 - влево и 270 - вниз. Если вы установите одинаковые значения, частицы будут двигаться только в одном направлении.

-

Вы также можете задать значение приращения, которое будет добавлять (если это положительное число) или вычитать (если это отрицательное число) количество градусов к направлению в течение срока службы. Это значение может составлять минимум (+/-) 0,01.

-

Наконец, вы можете задать коэффициент "вихляния". Это значение, которое будет случайным образом добавляться или вычитаться к направлению на каждом шаге жизни частиц. Очевидно, что большие значения более выражены, чем меньшие, и это значение может быть даже отрицательным с максимальным диапазоном от -20 до 20.

-

-

Синтаксис:

-

part_type_direction(ind, dir_min, dir_max, dir_incr, dir_wiggle);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
dir_minРеальноThe minimum direction the particle can start at.
dir_maxРеальноThe maximum direction the particle can start at.
dir_incrРеальноHow much the particle direction should increase or decrease per step.
dir_wiggleРеальноHow much should randomly be added or subtracted from the particle's direction per step.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_shape(particle1, pt_shape_pixel);
- part_type_size(particle1, 0.19, 0.79, 0.01, 0);
- part_type_scale(particle1, 5, 5);
- part_type_colour3(particle1, 32768, 8454016, 8454016);
- part_type_alpha3(particle1, 0, 0.80, 0);
- part_type_speed(particle1, 8, 10, -0.50, 1);
- part_type_direction(particle1, 0, 359, 1, 20);
- part_type_gravity(particle1, 0, 270);
- part_type_orientation(particle1, 0, 359, 0, 0, 1);
- part_type_blend(particle1, 1);
- part_type_life(particle1, 10, 50);

-

Приведенный выше код установит различные значения частиц, включая направление, которое будет случайным значением от 0 до 359 градусов. Оно также будет увеличиваться на 1 градус с каждым шагом, и к нему будет добавляться случайная величина от 0 до 20 с каждым шагом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_exists.htm index 9ebc1f16a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_exists.htm @@ -1,66 +0,0 @@ - - - - - - part_type_exists - - - - - - - - - - - -

part_type_exists

-

С помощью этой функции вы можете проверить, существует ли в игре данный тип частиц с индексом или нет. Обратите внимание, что если проверяемая переменная является неинициализированной переменной (которой тип частиц в противном случае присвоил бы свой индекс), это приведет к ошибке.

-

-

Синтаксис:

-

part_type_exists(ind);

- - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to check for.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !part_type_exists(global.p1)
- {
-     global.p1 = part_type_create();
- }

-

Приведенный выше код проверяет, хранит ли глобальная переменная "p1" индекс типа частицы, и если нет, то создает его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_gravity.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_gravity.htm index 782d7a858..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_gravity.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_gravity.htm @@ -1,82 +0,0 @@ - - - - - - part_type_gravity - - - - - - - - - - -

part_type_gravity

-

Эта функция устанавливает силу тяжести, которая будет действовать на каждую создаваемую частицу данного типа. Значение силы гравитации прибавляется к скорости частицы на каждом шаге и обычно составляет небольшое значение, например 0,5, а направление - это направление гравитационного "притяжения" и соответствует стандартным направлениям GameMaker: 0° - вправо, 90° - вверх, 180° - влево и 270° - вниз.

-

-

Синтаксис:

-

part_type_gravity(ind, grav_amount, grav_direction);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
grav_amountРеальноStrength of the gravity.
grav_directionРеальноThe direction of the gravity.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_shape(global.p1, pt_shape_pixel);
- part_type_size(global.p1, 1, 3, 0, 0);
- part_type_scale(global.p1, 1, 1);
- part_type_colour1(global.p1, c_white);
- part_type_alpha2(global.p1, 1, 0);
- part_type_speed(global.p1, 2, 4, 0, 0);
- part_type_direction(global.p1, 0, 180, 0, 0);
- part_type_gravity(global.p1, 0.20, 270);
- part_type_orientation(global.p1, 0, 0, 0, 0, 1);
- part_type_blend(global.p1, 1);
- part_type_life(global.p1, 15, 60);

-

Приведенный выше код установит различные значения частиц, включая гравитацию, которая будет добавлять 0,2 к скорости каждый шаг с направлением 270º, таким образом, частица будет тянуться "вниз" к нижней части экрана.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_life.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_life.htm index 7e4705b18..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_life.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_life.htm @@ -1,72 +0,0 @@ - - - - - - part_type_life - - - - - - - - - - -

part_type_life

-

Это функция, которая определяет, как долго каждая отдельная частица указанного типа остается на экране. Как и в других функциях частиц, вы задаете минимальное и максимальное значение (в шагах), и время жизни каждой частицы будет случайным числом шагов из указанного диапазона. Чтобы все частицы имели одинаковое время жизни, установите эти два значения одинаковыми.

-

-

Синтаксис:

-

part_type_life(ind, life_min, life_max);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
life_minРеальноThe minimum lifespan of the particles.
life_maxРеальноThe maximum lifespan of the particles.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_life(part_Flare, room_speed, room_speed * 2);

-

Приведенный выше код установит для всех созданных частиц типа частиц, указанного в переменной "part_Flare", время жизни от 1 до 2 секунд, основанное на текущей скорости комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_orientation.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_orientation.htm index e39f8ab1c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_orientation.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_orientation.htm @@ -1,99 +0,0 @@ - - - - - - part_type_orientation - - - - - - - - - - -

part_type_orientation

-

Эта функция используется для определения ориентации частицы sprite при ее создании, а также может быть использована для того, чтобы ориентация частицы увеличивалась или уменьшалась в течение ее жизни. Минимальное и максимальное значения ориентации по умолчанию равны 0, но эти значения можно изменить, чтобы изменить ориентацию в случайном порядке, следуя стандартным направлениям GameMaker: 0 градусов - вправо, 90 градусов - вверх, 180 градусов - влево и 270 градусов - вниз. Если вы установите одинаковое значение, все частицы будут созданы с одинаковой ориентацией.

-

Вы также можете задать значение приращения, которое будет добавлять (если это положительное число) или вычитать (если это отрицательное число) количество градусов к ориентации в течение ее срока службы. Это значение может составлять минимум (+/-) 0,01.

-

Вы также можете задать коэффициент "вихляния", как и в других функциях частиц. Это значение, которое будет случайным образом добавляться или вычитаться к ориентации на каждом шаге жизни частицы. Очевидно, что большие значения более выражены, чем меньшие, и это значение может быть даже отрицательным с максимальным диапазоном от -20 до 20.

-

Наконец, вы можете выбрать относительную или нет ориентацию, что означает, что пока частица имеет направление (и скорость), частица sprite будет ориентирована вокруг этого вектора. Имейте в виду, что если скорость частицы установлена на уменьшение и достигает 0, отсутствие скорости устанавливает направление на значение по умолчанию 0°, поэтому относительная ориентация заставит частицу sprite "прыгнуть" на другой угол.

-

-

Синтаксис:

-

part_type_orientation( ind, ang_min, ang_max, ang_incr, ang_wiggle, ang_relative );

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
ang_minРеальноThe minimum starting angle of the particles.
ang_maxРеальноThe maximum starting angle of the particles.
ang_incrРеальноThe increase (or decrease if set negative) of the angle in degrees per step.
ang_wiggleРеальноThe amount the angle wiggles clockwise/counterclockwise per step.
ang_relativeРеальноWhether to set its angle relative to the direction of the particle's motion (true) or not (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_shape(particle2, pt_shape_spark);
- part_type_size(particle2, 0.10, 0.50, 0.01, 0);
- part_type_scale(particle2, 0.30, 0.30);
- part_type_colour1(particle2, 8454143);
- part_type_alpha1(particle2, 0.50);
- part_type_speed(particle2, 4, 4, -0.07, 1);
- part_type_direction(particle2, 0, 359, 0, 20);
- part_type_orientation(particle2, 0, 359, 0, 20, 1);
- part_type_blend(particle2, 1);
- part_type_life(particle2, 1, 5);

-

Приведенный выше код установит различные значения частиц, включая ориентацию, которая будет случайным значением в диапазоне от 0º до 359º. Кроме того, на каждом шаге к ней будет добавляться случайная величина от 0 до 20, а ориентация будет относиться к направлению движения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_scale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_scale.htm index 3d7be0fb2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_scale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_scale.htm @@ -1,81 +0,0 @@ - - - - - - part_type_scale - - - - - - - - - - -

part_type_scale

-

Эта функция устанавливает горизонтальный и вертикальный масштаб частицы до того, как будут произведены другие изменения размера. Эта функция работает на соотношении размеров sprite, поэтому значение 1 (значение по умолчанию) - это соотношение 1:1, то есть 0,5 будет половиной, а 2 - удвоением.

-

-

Синтаксис:

-

part_type_scale(ind, xscale, yscale);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
xscaleРеальноThe horizontal scaling of the base particle.
yscaleРеальноThe vertical scaling of the base particle.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_shape(particle1, pt_shape_flare);
- part_type_size(particle1, 2, 2, 0.10, 1);
- part_type_scale(particle1, 8, 0.50);
- part_type_colour3(particle1, 8388608, 4227327, 8454143);
- part_type_alpha3(particle1, 0.10, 0.10, 0);
- part_type_speed(particle1, 0, 1, 0.18, 20);
- part_type_direction(particle1, 0, 359, 0, 0);
- part_type_orientation(particle1, 0, 0, 0, 0, 1);
- part_type_blend(particle1, 1);
- part_type_life(particle1, 10, 40);

-

Приведенный выше код установит различные значения частиц, включая масштаб, который устанавливает xscale в восемь раз больше размера, а yscale в половину размера.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_shape.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_shape.htm index 76ef51375..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_shape.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_shape.htm @@ -1,164 +0,0 @@ - - - - - - part_type_shape - - - - - - - - - - -

part_type_shape

-

С помощью этой функции можно задать форму sprite для типа частиц, при этом допустимы следующие константы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Константа формы частиц
ПостояннаяОписание
pt_shape_pixelПиксель 1x1. (Это настройка по умолчанию).
pt_shape_diskЗаполненный круг.
pt_shape_squareЗаполненный квадрат.
pt_shape_lineГоризонтальная линия шириной 8px.
pt_shape_starПятиконечная заполненная звезда.
pt_shape_circleОчерченный круг размером 3px.
pt_shape_ringКруг с внутренним свечением (выглядит как пузырь).
pt_shape_sphereКруг с исходящим свечением ' твердый в центре, светящийся наружу.
pt_shape_flareРезко светящаяся точка (выглядит как настоящая звезда в ночи).
pt_shape_sparkЭффект искры ' как звезда с несколькими точками, угасающая.
pt_shape_explosionКвадратное облако дыма ' требует нескольких цветов, чтобы напоминать взрыв.
pt_shape_cloudТонкое облако требует увеличения масштаба и множества частиц, чтобы походить на облако.
pt_shape_smokeСглаженная версия эффекта взрыва. Используйте несколько для создания дымового облака.
pt_shape_snowОбычная форма снежинки.
-

Particle Shapes

-

-

Синтаксис:

-

part_type_shape(ind, shape);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to set.
shapeКонстанта формы частицThe shape to choose.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

global.p1 = part_type_create();
- part_type_shape(global.p1, pt_shape_square);
- part_type_size(global.p1, 1, 3, 0, 0);
- part_type_scale(global.p1, 1, 1);
- part_type_colour1(global.p1, c_white);
- part_type_alpha2(global.p1, 1, 0);
- part_type_speed(global.p1, 2, 4, 0, 0);
- part_type_direction(global.p1, 0, 180, 0, 0);
- part_type_gravity(global.p1, 0.20, 270);
- part_type_orientation(global.p1, 0, 0, 0, 0, 1);
- part_type_blend(global.p1, 1);
- part_type_life(global.p1, 15, 60);

-

Приведенный выше код устанавливает тип частицы, указанный в глобальной переменной "p1", в форму квадрата, а затем устанавливает различные другие свойства частицы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_size.htm index 388179106..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_size.htm @@ -1,93 +0,0 @@ - - - - - - part_type_size - - - - - - - - - - -

part_type_size

-

Эта функция используется для определения размера частицы при ее создании, а также может быть использована для того, чтобы частица увеличивалась или уменьшалась в размере в течение своего времени жизни. Минимальное и максимальное значения размера по умолчанию равны 1 (это означает, что размер имеет то же соотношение, что и базовая частица после part_type_scale() и если они установлены в одно и то же значение, начальный размер для всех частиц будет одинаковым, но если они установлены в разные значения, каждая частица будет начинаться со случайным размером из диапазона, например, если вы установили минимальное значение 0.5 и максимальное 2, все частицы будут созданы с размером между половиной и удвоенной базовой шкалой.

-

Вы также можете задать значение приращения, которое заставит частицу sprite увеличиваться (если это положительное число) или уменьшаться (если это отрицательное число) в течение времени жизни частицы, при этом заданное значение будет добавляться к размеру частицы на каждом шаге. Это значение может составлять минимум (+/-)0,01.

-

Наконец, вы можете задать коэффициент "вихляния". Это значение, которое будет случайным образом добавляться или вычитаться к размеру на каждом шаге времени жизни частиц. Очевидно, что большие значения более выражены, чем меньшие, и это значение может быть даже отрицательным с максимальным диапазоном от -20 до 20.

-

-

Синтаксис:

-

part_type_size(ind, size_min, size_max, size_incr, size_wiggle);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
size_minРеальноThe minimum size the particle can start at.
size_maxРеальноThe maximum size the particle can start at.
size_incrРеальноHow much the particle should increase or decrease per step.
size_wiggleРеальноHow much should randomly be added or subtracted from the particles size per step.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_shape(particle1, pt_shape_explosion);
- part_type_size(particle1, 2, 2, 0.10, 0.01);
- part_type_scale(particle1, 1, 1);
- part_type_colour2(particle1, 16777215, 12632256);
- part_type_alpha3(particle1, 0, 0.20, 0);
- part_type_speed(particle1, 0.20, 0.20, 0, 0);
- part_type_direction(particle1, 0, 359, 0, 20);
- part_type_orientation(particle1, 0, 359, 0, 0, 1);
- part_type_blend(particle1, 0);
- part_type_life(particle1, 40, 60);

-

Приведенный выше код установит различные значения частиц, включая размер, который при создании каждой частицы устанавливается в двойном размере, а затем увеличивает размер на 0,01 каждый шаг с колебанием в 0,1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_speed.htm index 546dae31d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_speed.htm @@ -1,94 +0,0 @@ - - - - - - part_type_speed - - - - - - - - - - -

part_type_speed

-

Эта функция используется для установки скорости движения частицы при ее создании, а также может использоваться для увеличения или уменьшения скорости частицы в течение ее жизни. Минимальное и максимальное значения скорости по умолчанию равны 1, что означает, что частица будет перемещаться на 1 пиксель каждый шаг. Если они установлены в одно и то же значение, начальная скорость для всех частиц будет одинаковой, но если они установлены в разные значения, каждая частица будет стартовать со случайной скоростью из заданного диапазона. Например, если вы задали минимальное значение 3 и максимальное 6, все частицы будут созданы со скоростью от трех до шести пикселей за шаг.

-

Вы также можете задать значение приращения, которое заставит частицу двигаться быстрее (если число положительное) или медленнее (если число отрицательное) в течение ее жизни, причем заданное значение будет добавляться к скорости частицы на каждом шаге. Это значение может составлять минимум (+/-)0,01.

-

Наконец, вы можете задать коэффициент "вихляния". Это значение, которое будет случайным образом прибавляться или вычитаться к скорости на каждом шаге времени жизни частиц. Очевидно, что большие значения более выражены, чем меньшие, и это значение может быть даже отрицательным с максимальным диапазоном от -20 до 20.

-

-

Синтаксис:

-

part_type_speed(ind, speed_min, speed_max, speed_incr, speed_wiggle);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
speed_minРеальноThe minimum speed the particle can start at.
speed_maxРеальноThe maximum speed the particle can start at.
speed_incrРеальноHow much the particle speed should increase or decrease per step.
speed_wiggleРеальноHow much should randomly be added or subtracted from the particle's speed per step.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

part_type_shape(particle2, pt_shape_flare);
- part_type_size(particle2, 0.01, 0.50, 0.01, 20);
- part_type_scale(particle2, 0.10, 0.10);
- part_type_colour3(particle2, 4210816, 4227327, 8240895);
- part_type_alpha3(particle2, 0.20, 0.80, 0);
- part_type_speed(particle2, 5, 10, -0.20, 20);
- part_type_direction(particle2, 0, 359, -1, 20);
- part_type_gravity(particle2, 0, 270);
- part_type_orientation(particle2, 0, 359, 0, 20, 1);
- part_type_blend(particle2, 1);
- part_type_life(particle2, 1, 20);

-

Приведенный выше код установит различные значения частиц, включая скорость, которая устанавливает минимальную скорость 5 и максимальную скорость 10, при этом скорость замедляется на значение -0,2 каждый шаг. Скорость также будет колебаться на случайное значение от 0 до 20 на каждом шаге.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_sprite.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_sprite.htm index 6633d449e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_sprite.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_sprite.htm @@ -1,92 +0,0 @@ - - - - - - part_type_sprite - - - - - - - - - - -

part_type_sprite

-

Эта функция может быть использована для установки типа частиц, чтобы использовать пользовательский sprite из игровых активов. Вы можете выбрать sprite и затем указать GameMaker использовать sprite и анимировать его или нет, а если вы выберете анимированный, то вы также можете выбрать, чтобы под-изображения менялись с интервалом так, чтобы анимация начиналась и заканчивалась в начале и конце времени жизни каждой созданной частицы (таким образом, если у вас время жизни установлено на 15 шагов минимум и 30 шагов максимум, независимо от того, какое значение имеет время жизни, анимация будет сделана в соответствии с ним, причем она будет работать быстрее для более коротких времен жизни и медленнее для более длинных). Вы также можете выбрать случайное суб-изображение, так что если sprite не анимирован, то для создания sprite будет случайно выбрано другое изображение, или если частица анимирована, то анимация начнется в случайной точке.

-

-

Синтаксис:

-

part_type_sprite(ind, sprite, animate, stretch, random);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
spriteАктив спрайтаThe index of the sprite to set the particle type to.
animateБулевоWhether to follow the sprite's animation normally (true) or not (false).
stretchБулевоWhether to stretch the sprite's animation to match the particle lifespan (true) or not (false).
randomБулевоWhether to choose a random sub-image (true) or not (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

global.p1 = part_type_create();
- part_type_sprite(global.p1 , spr_Coins, 1, 0, 0);
- part_type_size(global.p1, 1, 3, 0, 0);
- part_type_scale(global.p1, 1, 1);
- part_type_colour1(global.p1, c_white);
- part_type_alpha2(global.p1, 1, 0);
- part_type_speed(global.p1, 2, 4, 0, 0);
- part_type_direction(global.p1, 0, 180, 0, 0);
- part_type_gravity(global.p1, 0.20, 270);
- part_type_orientation(global.p1, 0, 0, 0, 0, 1);
- part_type_blend(global.p1, 1);
- part_type_life(global.p1, 15, 60);

-

Приведенный выше код устанавливает тип частицы, указанный в глобальной переменной "p1", на форму sprite, указанную в "spr_Coins", а затем устанавливает различные другие свойства частицы.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_step.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_step.htm index b039274c5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_step.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particle_Types/part_type_step.htm @@ -1,97 +0,0 @@ - - - - - - part_type_step - - - - - - - - - - -

part_type_step

-

Эта функция может быть использована для того, чтобы заставить ваш тип частицы испускать другой тип на каждом шаге до конца срока ее жизни. Вы можете задать отрицательное значение для номера шага, и частица будет испускаться через случайный интервал, основанный на этом значении, так что, например, при значении -3 вероятность испускания частицы на каждом шаге будет 1:3.

-

ПРИМЕЧАНИЕ: НИКОГДА не используйте один и тот же тип частиц, так как это вызовет бесконечный цикл и может привести к краху игры в считанные секунды! Кроме того, будьте очень осторожны при использовании этой функции, так как она может значительно увеличить количество частиц на экране одновременно и привести к заметному замедлению игры.

-

-

Синтаксис:

-

part_type_step(ind, step_number, step_type);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор типа частицыThe index of the particle type to change.
step_numberРеальноThe quantity of the new particle to create per step.
step_typeИдентификатор типа частицыThe index of the particle type to create per step.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

particle2 = part_type_create();
- part_type_shape(particle2, pt_shape_smoke);
- part_type_size(particle2, 0.01, 0.01, 0.01, 0);
- part_type_scale(particle2, 1, 1);
- part_type_colour3(particle2, 4227327, 8454143, 4227327);
- part_type_alpha3(particle2,1, 0.50, 0.80);
- part_type_speed(particle2, 0, 0, 0, 0);
- part_type_direction(particle2, 0, 359, 0, 0);
- part_type_gravity(particle2, 0, 270);
- part_type_orientation(particle2, 0, 0, -2, 0, 1);
- part_type_blend(particle2, 1);
- part_type_life(particle2, 160, 160);
- particle3 = part_type_create();
- part_type_shape(particle3, pt_shape_flare);
- part_type_size(particle3, 0.20, 0.20, 0.02, 0);
- part_type_scale(particle3, 1, 1);
- part_type_colour3(particle3, 16777215, 8454143, 16777215);
- part_type_alpha3(particle3, 0, 0.50, 0);
- part_type_speed(particle3, 3, 3, -0.03, 0);
- part_type_direction(particle3, 0, 359, 0, 0);
- part_type_gravity(particle3, 0, 270);
- part_type_orientation(particle3, 0, 0, 0, 0, 1);
- part_type_blend(particle3, 1);
- part_type_life(particle3, 40, 80);
- part_type_step(particle2, 2, particle3);

-

Приведенный выше код создает и определяет две частицы и устанавливает частицу, индексированную в переменной "particle2", для создания 2 частиц "particle3" на каждом шаге ее жизни.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particles.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particles.htm index c83a80680..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particles.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/Particles.htm @@ -1,75 +0,0 @@ - - - - - - Частицы - - - - - - - - - - -

Частицы

-

Для сложных вещей в GameMaker вы обычно имеете объект и создаете экземпляры этого объекта по всей комнате. Однако для графических эффектов это может быть дорого, поскольку каждый экземпляр требует "затрат" на обработку из-за переменных, которые он содержит, и кодов, которые он имеет в различных событиях. Вы можете снизить эти затраты, обратившись к слоям tilemap и слоям активов для рисования графики, но они, как правило, статичны и не могут быть изменены или сильно перемещены. Однако есть еще один вариант для создания быстрых и в то же время универсальных графических эффектов в ваших играх - это использование частиц.

-

Частицы - это графические ресурсы, обладающие определенными свойствами, которые задаются в системе частиц. Этими свойствами нельзя управлять непосредственно для отдельных частиц, они изменяются с помощью кода, который используется для определения отдельной частицы и системы, к которой она принадлежит. Они очень полезны для создания красивых и ярких эффектов (или тонких и незаметных!), таких как взрывы, деколи, дождь, снег, звездные поля и обломки в игре без перегрузки процессора, которую несет использование экземпляров.

-

Базовая настройка системы частиц состоит из трех этапов, причем третий этап является необязательным в зависимости от того, как вы хотите создать эффекты частиц в помещении:

-
    -
  • Создайте систему частиц: Система частиц - это как контейнер, который мы будем использовать для хранения различных типов частиц, готовых к использованию. Мы используем код для определения ряда визуальных аспектов и поведения наших частиц, а затем помещаем их в "контейнер", чтобы впоследствии мы могли достать их и использовать в любое время и в любом месте.
  • -
  • Создайте типы частиц: Типы частиц - это сам графический эффект. У вас может быть множество различных типов, каждый со своим диапазоном цветов, альфа, размеров и движений, но важно отметить, что у вас нет контроля над отдельными частицами. Вы задаете ряд параметров, и частица будет создана со случайным набором моделей поведения, выбранных из них.
  • -
  • Создайте эмиттеры: Эмиттеры - это опция, которая может быть использована для всплеска или потока частиц в очень четко определенных пределах. Они необязательны, потому что вы можете создавать частицы из любого экземпляра с помощью функций part_particles_create() и part_particles_create_colour() но они не всегда подходят для любой ситуации.
  • -
-

Хотя частицы являются отличным инструментом для создания эффектов, они имеют определенные ограничения и хорошие практики, которые необходимо соблюдать, если вы не хотите, чтобы ваша игра страдала от низкой производительности или даже потенциально аварийно завершалась:

-
    -
  • Системы частиц, частицы и эмиттеры занимают память, поэтому следует быть очень осторожным в их использовании, так как очень легко вызвать утечку памяти, что приведет к замедлению и, в конечном счете, к краху вашей игры. Один из способов справиться с этим - иметь глобальную систему, в которой все определяется в начале игры и удаляется в конце, но если вы хотите иметь динамическую систему, то каждая частица и эмиттер (и сама система) должны быть уничтожены в тот момент, когда они не нужны.
  • -
  • Частицы могут быть быстрыми и легкими для процессора, но они все равно требуют некоторой обработки, поэтому не стоит иметь 40 000 частиц, разлетающихся по экрану одновременно. Ограничьте их количество теми, которые необходимы для достижения определенного эффекта, и не более.
  • -
  • Если вы определяете свои собственные частицы sprite вместо того, чтобы использовать одну из 14 включенных sprites, постарайтесь сделать их как можно меньше, чтобы добиться нужного эффекта.
  • -
  • Частицы ни с чем не взаимодействуют. Если вам нужно, чтобы они взаимодействовали с пользователем или другими объектами в вашей игре, вам следует рассмотреть возможность использования объектов вместо них, поскольку частицы являются чисто графическими.
  • -
  • Несмотря на то, что не существует технических ограничений на количество систем, эмиттеров и частиц, которые вы можете создать в одной игре, вы должны попытаться ограничить все до минимально возможного количества, чтобы сохранить как можно меньшее использование памяти.
  • -
  • На мобильных устройствах будьте осторожны с частицами, так как их отрисовка может быть медленной, если они занимают большую площадь экрана (чрезмерная отрисовка на мобильных устройствах является одной из основных причин замедления).
  • -
  • В HTML5 нет аддитивного смешивания, и если у вас не включен WebGL, вы также не можете использовать смешивание цветов.
  • -
-

Самый простой способ создания частиц в вашей игре с помощью GameMaker - это использование встроенного механизма эффектов. Эти эффекты создаются с помощью внутренней системы частиц, которая, по сути, является очень быстрым методом рисования только графических эффектов, и поэтому вам не нужно беспокоиться обо всех деталях (например, об управлении памятью) при использовании этих функций. Вы просто указываете тип эффекта, позицию, где он должен быть создан, размер, который вы хотите, чтобы он был, и, наконец, его цвет, а затем позволяете GameMaker сделать всю работу.

-

Для создания встроенных эффектов частиц существуют следующие функции:

- -

-

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

-

Однако истинный потенциал частиц заключается в проектировании и создании собственных эффектов с использованием мощных функций, которые предоставляет вам GameMaker Language. Вы можете узнать больше из каждого из следующих разделов:

- -

-

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/effect_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/effect_clear.htm index fb595416c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/effect_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/effect_clear.htm @@ -1,48 +0,0 @@ - - - - - - effect_clear - - - - - - - - - - -

effect_clear

-

Это очистит все частицы, видимые в данный момент в комнате, которые были сделаны с помощью либо effect_create_above() или effect_create_below().

-

-

Синтаксис:

-

effect_clear();

-

-

Возвращается:

-

-

-

Пример:

-

effect_clear();

-

Вызов этой функции очистит комнату от любых частиц, созданных с помощью функций effect_create_*.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/effect_create_above.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/effect_create_above.htm index bbc757b55..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/effect_create_above.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/effect_create_above.htm @@ -1,177 +0,0 @@ - - - - - - effect_create_above - - - - - - - - - - -

effect_create_above

-

С помощью этой функции вы можете создать простой эффект над всеми экземплярами вашей комнаты (на самом деле он создается на глубине -100000). Если эффект не ef_rain или ef_snow, то вы можете определить позицию x/y для создания эффекта, а размер может быть значением 0, 1 или 2, где 0 - маленький, 1 - средний и 2 - большой.

-

Стоит отметить, что эти эффекты можно включать и выключать, а также приостанавливать их отрисовку с помощью функций part_system_automatic_draw() и part_system_automatic_update() с соответствующим значением индекса системы частиц (где 0 - для эффектов ниже, а 1 - для эффектов выше).

-

Доступными константами для различных видов частиц являются:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип эффекта Постоянная
ПостояннаяПримерОписание
ef_cloudcloud effect exampleAn effect that creates random cloud particles of varying sizes
ef_ellipseellipse effect exampleAn effect that creates expanding ellipses
ef_explosionexplosion effect exampleAn effect that creates expanding fading explosions
ef_fireworkfirework effect exampleAn effect that creates multiple small particles to generate a firework explosion
ef_flareflare effect exampleAn effect that generates a brilliant point that flares up and fades out
ef_rainrain effect exampleAn effect that generates rain particles coming down from the top of the screen
ef_ringcircle effect exampleAn effect that generates expanding and fading circles
ef_smokesmoke effect exampleAn effect that generates little puffs of smoke
ef_smokeuprising smoke effect exampleAn effect that creates a smoke plume that rises up the screen
ef_snowsnow effect exampleAn effect that generates multiple snow particles falling down the screen
ef_sparkspark effect exampleAn effect that generates a small spark
ef_starstar effect exampleAn effect that generates star particles
-

-

Синтаксис:

-

effect_create_above(kind, x, y, size, colour);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
kindТип эффекта ПостояннаяThe kind of effect (use one of the constants listed above).
xРеальноThe x positioning of the effect if relevant.
yРеальноThe y positioning of the effect if relevant.
sizeРеальноThe size of the effect.
colourЦветThe colour of the effect.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if health <= 0
- {
-     effect_create_above(ef_explosion, x, y, 1, c_yellow);
-     instance_destroy();
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/effect_create_below.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/effect_create_below.htm index 8ebc46c25..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/effect_create_below.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Particles/effect_create_below.htm @@ -1,168 +0,0 @@ - - - - - - effect_create_below - - - - - - - - - - -

effect_create_below

-

С помощью этой функции вы можете создать простой эффект под всеми экземплярами вашей комнаты (на самом деле он создается на глубине 100000). Если эффект не ef_rain или ef_snow, то вы можете определить позицию x/y для создания эффекта, а размер может быть равен 0, 1 или 2, где 0 - маленький, 1 - средний и 2 - большой.

-

Стоит отметить, что эти эффекты можно включать и выключать, а также приостанавливать их отрисовку с помощью функций part_system_automatic_draw() и part_system_automatic_update() с соответствующим значением индекса системы частиц (где 0 - для эффектов ниже, а 1 - для эффектов выше).

-

Доступными константами для различных видов частиц являются:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяПримерОписание
ef_cloudcloud effect exampleAn effect that creates random cloud particles of varying sizes
ef_ellipseellipse effect exampleAn effect that creates expanding ellipses
ef_explosionexplosion effect exampleAn effect that creates expanding fading explosions
ef_fireworkfirework effect exampleAn effect that creates multiple small particles to generate a firework explosion
ef_flareflare effect exampleAn effect that generates a brilliant point that flares up and fades out
ef_rainrain effect exampleAn effect that generates rain particles coming down from the top of the screen
ef_ringcircle effect exampleAn effect that generates expanding and fading circles
ef_smokesmoke effect exampleAn effect that generates little puffs of smoke
ef_smokeuprising smoke effect exampleAn effect that creates a smoke plume that rises up the screen
ef_snowsnow effect exampleAn effect that generates multiple snow particles falling down the screen
ef_sparkspark effect exampleAn effect that generates a small spark
ef_starstar effect exampleAn effect that generates star particles
-

-

Синтаксис:

-

effect_create_below(kind, x, y, size, colour);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
kindТип эффекта ПостояннаяThe kind of effect (use one of the constants listed above).
xРеальноThe x positioning of the effect if relevant.
yРеальноThe y positioning of the effect if relevant.
sizeРеальноThe size of the effect.
colourЦветThe colour of the effect.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if speed > 0
- {
-     effect_create_below(ef_smoke, x, y, 0, c_gray);
- }

-

Приведенный выше код будет создавать небольшую струйку серого дыма на каждом шаге, когда скорость экземпляра больше 0 в координатах x,y экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/Primitives_And_Vertex_Formats.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/Primitives_And_Vertex_Formats.htm index 0b9181cfc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/Primitives_And_Vertex_Formats.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/Primitives_And_Vertex_Formats.htm @@ -1,92 +0,0 @@ - - - - - - Примитивы и форматы вершин - - - - - - - - - - -

Примитивы и форматы вершин

-

Примитив - это тип рисунка, созданный с помощью точек для определения того, что отображается на экране. Они могут состоять из отдельных точек, линий или треугольников, могут быть цветными, иметь альфа-смешение и даже текстуру, что означает, что они могут быть использованы для создания некоторых очень интересных эффектов в 2D-игре! Например, вы можете создать прямоугольник, используя несколько треугольных примитивов, затем текстурировать его флагом sprite и в событии рисования экземпляра заставить этот флаг "развеваться" на ветру и исказить используемый вами sprite, просто изменив точки, образующие примитив.

-

ВНИМАНИЕ! Эти функции не работают с модулем HTML5, если вы не включили OpenGL в Опциях игры.

-

Информацию о примитивах рисования можно найти на следующих страницах:

- -

-

GameMaker позволяет вам определять собственные форматы вершин, на основе которых вы можете создавать свои собственные примитивы. Это может значительно ускорить работу шейдеров или расширить их возможности и создать неожиданные эффекты. Информацию об этом вы найдете в следующих разделах:

- -

-

После создания формата вершин (см. раздел выше) вы можете использовать его для создания примитивов, которые вы хотите нарисовать, используя следующие функции буфера veretx:

- -

ВАЖНО! Примитивы, которые вы строите, должны соответствовать формату, который вы задали с помощью функций Vertex Format, поэтому если вы определили формат вершин только с позиционными данными, нет смысла строить примитив с цветовыми данными. Следует отметить, что порядок добавления свойств в создаваемый примитив определяется порядком добавления этих свойств при создании вершинного формата, поэтому если вы определили векторный формат с порядком позиция, цвет и координата текстуры, то вы должны добавить эти свойства в создаваемый примитив в том же порядке, иначе вы получите ошибки.

-

Обзор того, как строить примитивы с помощью функций вершин, см. в статье:

- -

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_primitive_begin.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_primitive_begin.htm index 3c3e8043b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_primitive_begin.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_primitive_begin.htm @@ -1,120 +0,0 @@ - - - - - - draw_primitive_begin - - - - - - - - - - -

draw_primitive_begin

-

Эта функция должна быть вызвана до того, как вы сможете определить какие-либо примитивы. Существует 6 типов примитивов, которые можно определить как следующие константы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Примитивный тип Константа
ПостояннаяОписание
pr_pointlistСписок пунктов
pr_linelistСписок строк
pr_linestripЛинейная полоса
pr_trianglelistСписок треугольников
pr_trianglestripТреугольная полоса
pr_trianglefanТреугольный веер
-

-

На следующем изображении показано, как они должны выглядеть, а также порядок, в котором следует определять вершины:

-

Обратите внимание, что на некоторых платформах (Windows, UWP, XBox) тип pr_trianglefan не поддерживается изначально, поэтому GameMaker выполняет преобразование при компиляции игры, чтобы заставить их работать. Это означает, что на этих платформах тип pr_trianglefan будет использоваться гораздо медленнее, чем на других. Также обратите внимание, что для использования этой функции на HTML5 необходимо включить WebGL в опциях игры.

-

-

Синтаксис:

-

draw_primitive_begin(kind)

- - - - - - - - - - - - - -
АргументТипОписание
kindПримитивный тип КонстантаThe kind of primitive you are going to draw.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _steps = 20;
- var _xx = 50;
- var _yy = 50;
- var _radius = 30;
- draw_primitive_begin(pr_trianglefan);
- draw_vertex(_xx, _yy);
- for(var i = 0; i <= _steps; ++i)
- {
-     draw_vertex(_xx + lengthdir_x(_radius, 270 * i / _steps), _yy + lengthdir_y(_radius, 270 * i / _steps));
- }
- draw_primitive_end();

-

Приведенный выше код нарисует три четверти окружности, созданной из примитивов.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_primitive_begin_texture.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_primitive_begin_texture.htm index 86adb1d23..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_primitive_begin_texture.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_primitive_begin_texture.htm @@ -1,75 +0,0 @@ - - - - - - draw_primitive_begin_texture - - - - - - - - - - -

draw_primitive_begin_texture

-

Эта функция должна быть вызвана до того, как вы определите вершины текстурированного примитива. Вы должны указать тип используемого примитива (см. draw_primitive_begin() для дополнительной информации) и идентификатор текстуры, которая может быть активом sprite или фоновым изображением. Идентификатор актива можно получить из функций sprite_get_texture()например (используйте -1 для отсутствия текстуры).

-

ПРИМЕЧАНИЕ Для того чтобы текстура повторялась, ее размер должен быть равен степени двойки, т.е.: 32x32, 128x128 и т.д..

-

-

Синтаксис:

-

draw_primitive_begin_texture(kind, tex)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
kindПримитивный тип КонстантаThe kind of primitive you are going to draw.
texУказатель текстурыThe texture to use with the primitive.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_set_colour(c_white);
- var _tex = sprite_get_texture(spr_Background, 0);
- draw_primitive_begin_texture(pr_trianglestrip, _tex);
- draw_vertex_texture(0, 0, 0, 0);
- draw_vertex_texture(640, 0, 1, 0);
- draw_vertex_texture(0, 480, 0, 1);
- draw_vertex_texture(640, 480, 1, 1);
- draw_primitive_end();

-

Приведенный выше код нарисует полосу треугольника с 4 вершинами (образуя прямоугольник), текстурированную текстурой, хранящейся в переменной "tex", и вся текстура будет использована для покрытия готового примитива.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_primitive_end.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_primitive_end.htm index d449b2593..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_primitive_end.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_primitive_end.htm @@ -1,50 +0,0 @@ - - - - - draw_primitive_end - - - - - - - - - - -

draw_primitive_end

-

Эта функция должна быть вызвана, когда вы закончили определять точки вашего примитива. Если вы не вызовете эту функцию, ничего не будет нарисовано, так как она фактически сообщает GameMaker, что вы закончили и теперь он может - рисовать определенный примитив.

-

-

Синтаксис:

-

draw_primitive_end()

-

-

Возвращается:

-

-

-

Пример:

-

draw_set_colour(c_white);
var tex = sprite_get_texture(spr_Background, 0);
draw_primitive_begin_texture(pr_trianglestrip, tex);
draw_vertex_texture(0, 0, 0, 0);
draw_vertex_texture(640, 0, 1, 0);
draw_vertex_texture(0, 480, - 0, 1);
draw_vertex_texture(640, 480, 1, 1);
draw_primitive_end(); -

-

Приведенный выше код нарисует полосу треугольника с 4 вершинами, текстурированную текстурой, хранящейся в переменной "tex".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_vertex.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_vertex.htm index 457b76fad..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_vertex.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_vertex.htm @@ -1,67 +0,0 @@ - - - - - - draw_vertex - - - - - - - - - - - -

draw_vertex

-

Эта функция определяет положение вершины для примитива. Окончательный вид примитива будет зависеть от типа примитива, выбранного для рисования, и порядка добавления вершин к нему. См. draw_primitive_begin() для - дополнительную информацию. Чтобы завершить и нарисовать примитив, необходимо вызвать команду draw_primitive_end().

-

-

Синтаксис:

-

draw_vertex(x, y)

- - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate of the vertex.
yThe y coordinate of the vertex.
-

-

Возвращается:

-

-

-

Пример:

-

draw_primitive_begin(pr_trianglelist);
draw_vertex(100, 100);
draw_vertex(100, 200);
draw_vertex(150, 150);
draw_primitive_end(); -

-

Приведенный выше код нарисует простой примитив треугольника.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_vertex_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_vertex_colour.htm index 8b34355a4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_vertex_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_vertex_colour.htm @@ -1,75 +0,0 @@ - - - - - - draw_vertex_colour - - - - - - - - - - - -

draw_vertex_colour

-

Эта функция определяет положение вершины для примитива, с ее собственным цветом и настройкой альфа. Окончательный вид примитива будет зависеть от типа примитива, выбранного для рисования, и порядка добавления вершин к нему (см. draw_primitive_begin() более подробную информацию), и вершины с разными цветами и альфа будут плавно переходить одна в другую. Чтобы завершить и нарисовать примитив, необходимо вызвать команду draw_primitive_end().

-

-

Синтаксис:

-

draw_vertex_colour(x, y, col, alpha)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate of the vertex.
yThe y coordinate of the vertex.
colThe colour to draw this vertex with.
alphaThe alpha to draw this vertex with (0-1).
-

-

Возвращается:

-

-

-

Пример:

-

draw_primitive_begin(pr_trianglelist);
draw_vertex_colour(100, 100, c_blue, 0.1);
draw_vertex_colour(100, 200, c_red, 0.1);
draw_vertex_colour(150, 150, c_green, 1);
draw_primitive_end(); -

-

Приведенный выше код нарисует полупрозрачный треугольник, каждая вершина которого окрашена в свой цвет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_vertex_texture.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_vertex_texture.htm index c7c875e16..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_vertex_texture.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_vertex_texture.htm @@ -1,88 +0,0 @@ - - - - - - draw_vertex_texture - - - - - - - - - - - -

draw_vertex_texture

-

Эта функция определяет положение текстурированной вершины для примитива. Окончательный вид примитива будет зависеть от типа примитива, выбранного для рисования (см. draw_primitive_begin() более подробную информацию), порядка добавления вершин и положения начальной точки, заданной для текстуры. Чтобы завершить и нарисовать примитив, необходимо вызвать команду draw_primitive_end().

-

Вы также можете выбрать рисование только части текстуры на поверхности примитива, установив соответствующую xtex/ytex позицию для выборки (эти координаты также известны как UV-точки ). Эта точка определяется значением от 0 до 1, причем левый верхний угол используемого изображения является точкой (0,0), а правый нижний угол - точкой (1,1). Таким образом, можно текстурировать примитив, используя только часть исходного изображения.

-

При рисовании текстурированного примитива текстура будет смешиваться с цветом, заданным параметром draw_set_colour. Это означает, что для рисования текстуры без смешивания следует установить значение c_white, как показано в примере ниже.

-

ПРИМЕЧАНИЕ Для того чтобы текстура повторялась, ее размер должен быть равен степени двойки, т.е.: 32x32, 128x128 и т.д..

-

-

Синтаксис:

-

draw_vertex_texture(x, y, xtex, ytex)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x coordinate of the vertex.
yРеальноThe y coordinate of the vertex.
xtexРеальноThe width of the texture sample to use.
ytexРеальноThe height of the texture sample to use.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_set_colour(c_white);
- var tex = sprite_get_texture(spr_Background, 0);
- draw_primitive_begin_texture(pr_trianglestrip, tex);
- draw_vertex_texture(0, 0, 0, 0);
- draw_vertex_texture(640, 0, 1, 0);
- draw_vertex_texture(0, 480, 0, 1);
- draw_vertex_texture(640, 480, 1, 1);
- draw_primitive_end();

-

Приведенный выше код нарисует полосу треугольника с 4 вершинами (образуя прямоугольник), текстурированную текстурой, хранящейся в переменной "tex", и вся текстура будет использована для покрытия готового примитива.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_vertex_texture_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_vertex_texture_colour.htm index e46fb8a18..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_vertex_texture_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/draw_vertex_texture_colour.htm @@ -1,86 +0,0 @@ - - - - - draw_vertex_texture_colour - - - - - - - - - - - -

draw_vertex_texture_colour

-

Эта функция определяет положение текстурированной вершины для примитива. Окончательный вид примитива будет зависеть от типа примитива, выбранного для рисования (см. draw_primitive_begin() для получения дополнительной информации), - порядка добавления к нему вершин, положения начальной и конечной точек, которые вы задаете для образца текстуры, а также от установленных вами значений цвета и альфа. Для сохранения внешнего вида текстуры при изменении только альфа, значение - -1 (или c_white) может быть использовано для аргумента цвета. Чтобы завершить и нарисовать примитив, необходимо вызвать команду draw_primitive_end().

-

ПРИМЕЧАНИЕ Для того чтобы текстура повторялась, ее размер должен быть равен степени двойки, т.е.: 32x32, 128x128 и т.д..

-

-

Синтаксис:

-

draw_vertex_texture_colour(x, y, xtex, ytex, col, alpha)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate of the vertex.
yThe y coordinate of the vertex.
xtexThe x coordinate within the texture.
ytexThe y coordinate within the texture.
colThe colour to blend with the texture at this vertex (-1 or c_white для отсутствия смешивания).
alphaThe alpha to draw this vertex with (0-1).
-

-

Возвращается:

-

-

-

Пример:

-

draw_set_colour(c_white);
var tex = sprite_get_texture(spr_Background, 0);
draw_primitive_begin_texture(pr_trianglestrip, tex);
draw_vertex_texture_colour(0, 0, 0, 0, c_fuchsia, 1);
draw_vertex_texture_colour(640, 0, 1, 0, c_yellow, - 1);
draw_vertex_texture_colour(0, 480, 0, 1, c_aqua, 1);
draw_vertex_texture_colour(640, 480, 1, 1, c_lime, 1);
draw_primitive_end(); -

-

Приведенный выше код нарисует полосу треугольника с 4 вершинами (образуя прямоугольник), текстурированную текстурой, хранящейся в переменной "tex", и вся текстура будет использована для покрытия готового примитива, и она будет смешана с четырьмя различными цветами.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_argb.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_argb.htm index 28560ff73..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_argb.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_argb.htm @@ -1,67 +0,0 @@ - - - - - - vertex_argb - - - - - - - - - - -

vertex_argb

-

Эта функция устанавливает значения ARGB для вершины, определяемой в данный момент для пользовательского примитива. Вы предоставляете буфер для записи данных, а также значения красного, зеленого, синего и альфа, которые вы хотите использовать, в виде одного 32-битного целого без знака - альфа в старших 8 битах, затем красный, зеленый и, наконец, синий в младших 8 битах. Вы можете использовать шестнадцатеричную нотацию ($AARRGGBB) как вещественное число или использовать любую из функций make_colour_*() для определения значения цвета.

-

-

Синтаксис:

-

vertex_argb(buffer, argb);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe buffer to write the information to.
argbЦветThe ARGB value to set.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

vertex_argb(buff, $FFFFFFFF);

-

Приведенный выше код установит значения ARGB определяемой вершины в белый цвет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_begin.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_begin.htm index 227e35f62..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_begin.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_begin.htm @@ -1,73 +0,0 @@ - - - - - - vertex_begin - - - - - - - - - - -

vertex_begin

-

С помощью этой функции вы начинаете определение пользовательского примитива. Вы назначаете буфер для записи примитива и формат вершин, который будет использоваться (предварительно определенный с помощью функций формата вершин). Затем вы определяете необходимые точки для каждой вершины примитива перед вызовом функции vertex_end() для завершения создания примитива.

-

-

Синтаксис:

-

vertex_begin(buffer, format);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe buffer to be written to.
formatИдентификатор формата вершиныThe vertex format to use.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

vertex_format_begin();
- vertex_format_add_position();
- vertex_format_add_colour();
- vertex_format_add_textcoord();
- v_format = vertex_format_end();
- v_buff = vertex_create_buffer();
- vertex_begin(v_buff, v_format);

-

Приведенный выше код определит новый формат вершин, создаст новый буфер и запустит процесс определения нового примитива.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_colour.htm index ade4eac82..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_colour.htm @@ -1,73 +0,0 @@ - - - - - - vertex_colour - - - - - - - - - - -

vertex_colour

-

Если определенный вами формат вершины принимает значение цвета, вы можете использовать эту функцию для добавления этих данных к вершине, определяемой для текущего примитива. Функция требует буфера для хранения данных и принимает либо цветовую константу, либо шестнадцатеричное значение (используя стандартный формат GameMaker BGR, например: $FF0000 для синего цвета), а также значение альфа от 0 (прозрачный) до 1 (полностью непрозрачный).

-

-

Синтаксис:

-

vertex_colour(buffer, colour, alpha);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe buffer to write the information to.
colourЦветThe colour for this vertex (can be a constant or a hex value).
alphaРеальноThe alpha value for the vertex (from 0 to 1).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

vertex_colour(b, c_white, 1);

-

Приведенный выше код установит для определяемой вершины белый цвет с альфа-значением 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_create_buffer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_create_buffer.htm index 75a11e1ba..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_create_buffer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_create_buffer.htm @@ -1,50 +0,0 @@ - - - - - - vertex_create_buffer - - - - - - - - - - - -

vertex_create_buffer

-

С помощью этой функции вы можете создать новый вершинный буфер. Это специальный растущий буфер, созданный GameMaker, который предварительно отформатирован для использования при построении примитивов (например, для использования с шейдерами). Функция вернет индекс буфера, который будет использоваться во всех последующих обращениях к нему.

-

При использовании буфера вершин, созданного с помощью этой функции, вы просто вызываете функцию vertex_begin() чтобы начать присваивать ему вершинные данные для определения вашего пользовательского примитива, который затем будет храниться в буфере, готовый к передаче в шейдер. Буфер может быть повторно использован при необходимости (если вы не использовали функцию vertex_freeze() ), при этом каждый вызов vertex_begin() стирает предыдущие данные буфера, готовые к приему новых данных.

-

-

Синтаксис:

-

vertex_create_buffer();

-

-

Возвращается:

-

Vertex Buffer ID

-

-

Пример:

-

v_buff = vertex_create_buffer();

-

Приведенный выше код создаст новый буфер вершин и сохранит его хэндл в переменной "v_buff".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_create_buffer_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_create_buffer_ext.htm index ead937835..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_create_buffer_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_create_buffer_ext.htm @@ -1,61 +0,0 @@ - - - - - - vertex_create_buffer_ext - - - - - - - - - - - -

vertex_create_buffer_ext

-

Как и в случае с функцией vertex_create_buffer()эта функция создаст новый буфер вершин. Это специальный растущий буфер, созданный GameMaker, который предварительно отформатирован для использования при создании примитивов для использования с шейдерами. Вы можете указать начальный размер буфера (в байтах), и функция вернет индекс буфера, который будет использоваться во всех последующих обращениях к буферу.

-

-

Синтаксис:

-

vertex_create_buffer_ext(size);

- - - - - - - - - - - -
АргументТипОписание
sizeThe initial size of the buffer (in bytes).
-

-

Возвращается:

-

Vertex Buffer ID

-

-

Пример:

-

v_buff = vertex_create_buffer_ext(1024 * 1024);

-

Приведенный выше код создаст новый буфер вершин, первоначально размером 1 МБ, и сохранит его хэндл в переменной "v_buff".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_create_buffer_from_buffer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_create_buffer_from_buffer.htm index fb5a92b93..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_create_buffer_from_buffer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_create_buffer_from_buffer.htm @@ -1,73 +0,0 @@ - - - - - - vertex_create_buffer_from_buffer - - - - - - - - - - - -

vertex_create_buffer_from_buffer

-

Как и в случае с функцией vertex_create_buffer()эта функция создаст новый вершинный буфер, только теперь вершинные данные, хранящиеся в нем, копируются из обычного буфера, указанного в качестве источника. Создаваемый буфер - это специальный растущий буфер, который предварительно отформатирован в вершинном формате для построения примитивов для использования (например) в шейдерах. Эта функция требует, чтобы вы указали указатель на ранее созданный обычный буфер и формат вершин, который должен быть применен к скопированным данным.

-

-

Синтаксис:

-

vertex_create_buffer_from_buffer(buffer, format);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфераThe buffer to create the vertex buffer from.
formatПримитивный тип КонстантаThe primitive vertex format to use.
-

-

Возвращается:

-

Vertex Buffer ID

-

-

Пример:

-

vertex_format_begin();
- vertex_format_add_position_3d();
- vertex_format_add_colour();
- vertex_format_add_textcoord();
- var my_format = vertex_format_end();
- v_buff = vertex_create_buffer_from_buffer(global.modelBuff, myFormat);

-

Приведенный выше код создаст новый формат вершин, затем создаст новый буфер вершин из ранее созданного обычного буфера, применив к нему пользовательский формат вершин.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_create_buffer_from_buffer_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_create_buffer_from_buffer_ext.htm index 95b88fcef..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_create_buffer_from_buffer_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_create_buffer_from_buffer_ext.htm @@ -1,83 +0,0 @@ - - - - - - vertex_create_buffer_from_buffer_ext - - - - - - - - - - - -

vertex_create_buffer_from_buffer_ext

-

Как и в случае с функцией vertex_create_buffer()эта функция создаст новый буфер вершин, только теперь данные вершин, которые в нем хранятся, копируются из обычного буфера, указанного в качестве источника. Буфер предварительно отформатирован в соответствии с форматом вершин для построения примитивов для использования (например) с шейдерами, также можно указать смещение в исходном буфере для копирования и количество вершин, которое должно быть в конечном буфере. Обратите внимание, что если количество вершин не совпадает с копируемыми, вы можете получить поврежденные вершинные данные.

-

-

Синтаксис:

-

vertex_create_buffer_from_buffer_ext(buffer, format, src_offset, vert_num);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфераThe buffer to create the vertex buffer from.
formatПримитивный тип КонстантаThe primitive vertex format to use.
src_offsetРеальноThe offset within the the source buffer to copy from.
vert_numРеальноThe number of vertices the buffer should have.
-

-

Возвращается:

-

Vertex Buffer ID

-

-

Пример:

-

vertex_format_begin();
- vertex_format_add_position_3d();
- vertex_format_add_colour();
- vertex_format_add_textcoord();
- var my_format = vertex_format_end();
- v_buff = vertex_create_buffer_from_buffer(global.modelBuff, myFormat, 0, 512);

-

Приведенный выше код создаст новый вершинный формат, затем создаст новый вершинный буфер из ранее созданного обычного буфера, применив к нему пользовательский вершинный формат со смещением 0. Функция сообщает новому вершинному буферу, что он должен ожидать 512 вершин.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_delete_buffer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_delete_buffer.htm index 533cf53c2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_delete_buffer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_delete_buffer.htm @@ -1,62 +0,0 @@ - - - - - - vertex_delete_buffer - - - - - - - - - - -

vertex_delete_buffer

-

Эта функция может быть использована для удаления ранее созданного буфера вершин (см. vertex_create_buffer()) из системной памяти. При этом также удаляются все вершинные данные для всех пользовательских примитивов, которые в нем содержались.

-

-

Синтаксис:

-

vertex_delete_buffer(buffer);

- - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe vertex buffer to be removed.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

vertex_delete_buffer(v_buff);

-

Приведенный выше код удалит из памяти буфер, индексированный в переменной "v_buff".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_end.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_end.htm index 5e9cf0f45..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_end.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_end.htm @@ -1,62 +0,0 @@ - - - - - - vertex_end - - - - - - - - - - -

vertex_end

-

С помощью этой функции вы завершаете создание пользовательского примитива. После вызова этой команды примитив может быть использован в функции vertex_submit() для использования в шейдере или вы можете заморозить буфер (делая вершинный буфер доступным только для чтения и намного быстрее) с помощью функции vertex_freeze().

-

-

Синтаксис:

-

vertex_end(buffer);

- - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe buffer to end writing to.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

vertex_end(buff);

-

Приведенный выше код завершает определение пользовательского примитива.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_float1.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_float1.htm index a5fbcf668..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_float1.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_float1.htm @@ -1,67 +0,0 @@ - - - - - - vertex_float1 - - - - - - - - - - -

vertex_float1

-

Эта функция добавляет значение с плавающей точкой к данным вершины. Вершина должна быть правильно отформатирована, чтобы принять это значение с помощью функции vertex_format_add_custom() функция.

-

-

Синтаксис:

-

vertex_float1(buffer, float);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe buffer to write the information to.
floatРеальноThe input value.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

vertex_float1(buff, 0.05);

-

Приведенный выше код добавит значение с плавающей точкой к определяемым вершинным данным.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_float2.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_float2.htm index f3fe4604b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_float2.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_float2.htm @@ -1,72 +0,0 @@ - - - - - - vertex_float2 - - - - - - - - - - -

vertex_float2

-

Эта функция добавит два значения с плавающей точкой к данным вершины. Вершина должна быть правильно отформатирована, чтобы принять ее с помощью функции vertex_format_add_custom() функция.

-

-

Синтаксис:

-

vertex_float2(buffer, float, float);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe buffer to write the information to.
floatРеальноThe first input value.
floatРеальноThe second input value.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

vertex_float2(buff, 0.05, 0.01);

-

Приведенный выше код добавит два значения с плавающей точкой к определяемым данным вершин.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_float3.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_float3.htm index 23dcc0f2b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_float3.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_float3.htm @@ -1,77 +0,0 @@ - - - - - - vertex_float3 - - - - - - - - - - -

vertex_float3

-

Эта функция добавит три значения с плавающей точкой к данным вершины. Вершина должна быть правильно отформатирована, чтобы принять ее с помощью функции vertex_format_add_custom() функция.

-

-

Синтаксис:

-

vertex_float3(buffer, float, float, float);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe buffer to write the information to.
floatРеальноThe first input value.
floatРеальноThe second input value.
floatРеальноThe third input value.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

vertex_float3(buff, 0.05, 0.01, room_width / x);

-

Приведенный выше код добавит три значения с плавающей точкой к определяемым данным вершин.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_float4.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_float4.htm index 3e1a1ee37..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_float4.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_float4.htm @@ -1,82 +0,0 @@ - - - - - - vertex_float4 - - - - - - - - - - -

vertex_float4

-

Эта функция добавит четыре значения с плавающей точкой к данным вершины. Вершина должна быть правильно отформатирована, чтобы принять ее с помощью функции vertex_format_add_custom() функция.

-

-

Синтаксис:

-

vertex_float4(buffer, float, float, float, float);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe buffer to write the information to.
floatРеальноThe first input value.
floatРеальноThe second input value.
floatРеальноThe third input value.
floatРеальноThe fourth input value.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

vertex_float4(buff, 0.05, 0.01, room_width / x, room_height / y);

-

Приведенный выше код добавит четыре значения с плавающей точкой к определяемым данным вершин.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_colour.htm index 3bb6dff29..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_colour.htm @@ -1,51 +0,0 @@ - - - - - - vertex_format_add_colour - - - - - - - - - - -

vertex_format_add_colour

-

Сообщите GameMaker, чтобы он принимал данные о цвете как часть создаваемого нового формата вершин.

-

-

Синтаксис:

-

vertex_format_add_colour();

-

-

Возвращается:

-

-

-

Пример:

-

vertex_format_begin();
vertex_format_add_colour(); -
vertex_format_add_position(); -
my_format = vertex_format_end();

-

Приведенный выше код создаст новый формат вершин, содержащий только значения цвета и позиции, а затем сохранит идентификатор формата в переменной "my_format".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_custom.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_custom.htm index a75f14646..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_custom.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_custom.htm @@ -1,214 +0,0 @@ - - - - - - vertex_format_add_custom - - - - - - - - - - -

vertex_format_add_custom

-

Эта функция позволяет использовать пользовательский тип данных для определенных атрибутов формата вершин как часть создаваемого нового формата вершин. Доступные для использования значения определяются выбранной вами константой типа данных, перечисленной ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип данных вершины Константа
ПостояннаяОписание
vertex_type_float1Одно значение с плавающей запятой
vertex_type_float2Два значения с плавающей запятой
vertex_type_float3Три значения с плавающей запятой
vertex_type_float4Четыре значения с плавающей запятой
vertex_type_colourЗначения четырех компонентов (r, g, b, a)
vertex_type_ubyte4Четырехкомпонентные беззнаковые байтовые значения (от 0 до 255)
-


- Также необходимо определить, как будут использоваться эти константы, чтобы значения можно было правильно "привязать" в создаваемом шейдере. Это необходимо в связи с тем, что DX и OpenGL имеют разные требования, поэтому если вы не свяжете их должным образом, они не будут правильно отображаться в шейдере. Доступные константы использования, которые вы можете выбрать, перечислены ниже, и их использование будет зависеть от специфики создаваемого шейдера:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип использования вершин Константа
ПостояннаяОписание
vertex_usage_positionзначения положения (x, y, z)
vertex_usage_colourзначения цветов (r, g, b, a)
vertex_usage_normalнормальные значения вершин (nx, ny, nz)
vertex_usage_textcoordУльтрафиолетовые координаты (u, v)
vertex_usage_blendweightвес смеси входной матрицы (например, для скелетной анимации)
vertex_usage_blendindicesиндексы матриц для использования (например, для скелетной анимации)
vertex_usage_depthзначение буфера глубины вершины
vertex_usage_tangentзначения касательных
vertex_usage_binormalбинормальные значения
vertex_usage_fogзначения тумана
vertex_usage_sampleиндекс пробоотборника
-


- Есть несколько важных моментов, на которые следует обратить внимание при использовании таких пользовательских форматов:

-
    -
  • Функция vertex_format_add_custom() поддерживает только vertex_usage_position, vertex_usage_colour, vertex_usage_normal и vertex_usage_textcoord при использовании шейдеров GLSL. Они будут отображаться на атрибуты шейдеров in_Position, in_Colour[0 - ...], in_Normal соответственно (все, что не является одним из этих трех атрибутов - например, координаты текстуры - может быть отображено на любой атрибут, который вы определите).
  • -
  • В общем случае для всех дополнительных параметров следует использовать vertex_usage_textcoord, так как типы vertex_usage_blendweight и vertex_usage_tangent близки к устаревшим в большинстве шейдерных языков и, вероятно, не будут правильно конвертироваться. Вместо этого используйте vec, vec2, vec3 или vec4, типы vertex_usage_textcoord, и все будет работать нормально.
  • -
  • GLSL ES не поддерживает целочисленные атрибуты, поэтому передача ivec4's не работает (этот тип обычно используется при передаче vertex_usage_blendindices). Вам нужно передать текстурные координаты, а затем в шейдере преобразовать их в ivec4 следующим образом:
  • -
-

-

attribute vec3 in_Position;
- attribute vec4 in_BlendIndices;
- attribute vec4 in_BlendWeights;
-
- varying vec4 v_vColour;
- varying mat4 v_mat;
-
- void main()
- {
-     gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * vec4( in_Position.xyz, 1.0);
-     v_vColour = in_BlendWeights;
-     ivec4 t = ivec4(in_BlendIndices);
-     v_mat = gm_Matrices[ t.x ];
- } -

-
    -
  • Веса смесей обычно хранятся в массиве, а доступ к ним осуществляется с помощью индексов смесей, но здесь вы можете видеть, что вместо определения in_BlendIndices как атрибута ivec4, это vec4, затем в коде он приводится к ivec4. Это затем используется для индексации массива, созданного с помощью gm_Matrix (доступ к массиву можно получить только с помощью значения INT - не float).
  • -
    - -
-

Синтаксис:

-

vertex_format_add_custom(type, usage);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
typeТип данных вершины КонстантаThe data type that this custom vertex data will hold (see the type constants listed above).
usageТип использования вершин КонстантаThe use that the data will get(see the usage constants listed above).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

vertex_format_begin();
- vertex_format_add_textcoord();
- vertex_format_add_custom(vertex_type_float3, vertex_usage_position);
- my_format = vertex_format_end();

-

Приведенный выше код создаст новый формат вершин, содержащий только текстуру и 3 пользовательских значения с плавающей точкой для позиции. Затем он сохраняет идентификатор формата в переменной "my_format".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_normal.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_normal.htm index 53e494ff8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_normal.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_normal.htm @@ -1,50 +0,0 @@ - - - - - - vertex_format_add_normal - - - - - - - - - - -

vertex_format_add_normal

-

Сообщите GameMaker, чтобы он принимал данные нормалей поверхности (nx, ny и nz) как часть создаваемого нового формата вершин.

-

-

Синтаксис:

-

vertex_format_add_normal();

-

-

Возвращается:

-

-

-

Пример:

-

vertex_format_begin();
vertex_format_add_textcoord(); -
vertex_format_add_normal(); -
my_format = vertex_format_end();

-

Приведенный выше код создаст новый формат вершин, содержащий только значения текстуры и нормали поверхности, а затем сохранит идентификатор формата в переменной "my_format".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_position.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_position.htm index 0898d6cab..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_position.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_position.htm @@ -1,50 +0,0 @@ - - - - - - vertex_format_add_position - - - - - - - - - - -

vertex_format_add_position

-

Сообщите GameMaker, чтобы он принимал 2D позиционные данные (x и y) как часть создаваемого нового формата вершин.

-

-

Синтаксис:

-

vertex_format_add_position();

-

-

Возвращается:

-

-

-

Пример:

-

vertex_format_begin();
vertex_format_add_colour(); -
vertex_format_add_position(); -
my_format = vertex_format_end();

-

Приведенный выше код создаст новый формат вершин, содержащий только значения цвета и позиции, а затем сохранит идентификатор формата в переменной "my_format".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_position_3d.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_position_3d.htm index 64c8b4718..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_position_3d.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_position_3d.htm @@ -1,50 +0,0 @@ - - - - - - vertex_format_add_position_3d - - - - - - - - - - -

vertex_format_add_position_3d

-

Сообщите GameMaker, чтобы он принимал данные о позиционировании в 3D (x, y и z) как часть создаваемого нового формата вершин.

-

-

Синтаксис:

-

vertex_format_add_position_3d();

-

-

Возвращается:

-

-

-

Пример:

-

vertex_format_begin();
vertex_format_add_colour(); -
vertex_format_add_position_3d(); -
my_format = vertex_format_end();

-

Приведенный выше код создаст новый формат вершин, содержащий только значения цвета и позиции, а затем сохранит идентификатор формата в переменной "my_format".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_texcoord.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_texcoord.htm index 0ca8f4511..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_texcoord.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_add_texcoord.htm @@ -1,53 +0,0 @@ - - - - - - vertex_format_add_texcoord - - - - - - - - - - - -

vertex_format_add_texcoord

-

Сообщите GameMaker, чтобы он принимал данные о положении текстуры (u и v) как часть создаваемого нового формата вершин.

-

-

Синтаксис:

-

vertex_format_add_texcoord();

-

-

Возвращается:

-

-

-

Пример:

-

vertex_format_begin();
- vertex_format_add_texcoord();
- vertex_format_add_position_3d();
- my_format = vertex_format_end();

-

Приведенный выше код создаст новый формат вершин только со значениями текстуры и позиции, а затем сохранит идентификатор формата в переменной "my_format".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_begin.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_begin.htm index 1b19ba35e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_begin.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_begin.htm @@ -1,50 +0,0 @@ - - - - - - vertex_format_begin - - - - - - - - - - -

vertex_format_begin

-

Прежде чем вы сможете определить новый формат вершин, вы должны сообщить GameMaker, что делаете это с помощью данной функции. Вы должны сначала вызвать эту функцию, затем определить значения формата с помощью соответствующих функций и, наконец, вызвать функцию vertex_format_end() чтобы завершить определение и вернуть "handle" нового формата.

-

-

Синтаксис:

-

vertex_format_begin();

-

-

Возвращается:

-

-

-

Пример:

-

vertex_format_begin();
vertex_format_add_colour(); -
vertex_format_add_position(); -
my_format = vertex_format_end();

-

Приведенный выше код создаст новый формат вершин, содержащий только значения цвета и позиции, а затем сохранит идентификатор формата в переменной "my_format".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_delete.htm index 8b1e36f6e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_delete.htm @@ -1,62 +0,0 @@ - - - - - - vertex_format_delete - - - - - - - - - - -

vertex_format_delete

-

Эта функция должна вызываться каждый раз, когда вы закончили использовать созданные векторные форматы. Вы предоставляете значение идентификатора формата (возвращаемое функцией vector_format_end()), и эта функция освободит связанную с ним память. Обратите внимание, что если после вызова этой функции вы попытаетесь снова использовать этот формат, вы получите ошибку.

-

-

Синтаксис:

-

vertex_format_delete(formatID);

- - - - - - - - - - - - - -
АргументТипОписание
formatIDИдентификатор формата вершиныThe vertex format to delete
-

-

Возвращается:

-

N/A

-

-

Пример:

-

vertex_format_delete(myFormat);

-

Приведенный выше код удалит из памяти формат вершин, созданный в переменной "myFormat".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_end.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_end.htm index 19e2b4f8d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_end.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_format_end.htm @@ -1,51 +0,0 @@ - - - - - - vertex_format_end - - - - - - - - - - -

vertex_format_end

-

Эта функция должна быть вызвана после определения любого нового формата вершин. Она возвращает "handle" (индекс) нового формата, который должен использоваться во всех последующих вершинных функциях, обращающихся к этому новому формату.

-

-

Синтаксис:

-

vertex_format_end();

-

-

Возвращается:

-

Vertex Format ID

-

-

Пример:

-

vertex_format_begin();
- vertex_format_add_colour();
- vertex_format_add_position();
- my_format = vertex_format_end();

-

Приведенный выше код создаст новый формат вершин, содержащий только значения цвета и позиции, а затем сохранит идентификатор формата в переменной "my_format".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_freeze.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_freeze.htm index d83815540..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_freeze.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_freeze.htm @@ -1,64 +0,0 @@ - - - - - - vertex_freeze - - - - - - - - - - -

vertex_freeze

-

Эта функция может быть использована для "замораживания" буфера вершин. Этот буфер становится доступным только для чтения, то есть, если вам понадобится изменить его, вам придется удалить весь буфер и создать его заново. Замороженный буфер может быть передан в шейдер быстрее, чем обычный динамический буфер, и рекомендуется для тех эффектов, которые требуют неизменного пользовательского примитива на протяжении всего уровня или игры.

-

Функция вернет 0 при успешном замораживании указанного вершинного буфера, однако если по какой-либо причине это не удалось, она вернет -1.

-

-

Синтаксис:

-

vertex_freeze(buffer);

- - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe vertex buffer to freeze.
-

-

Возвращается:

-

Real (0 for success, -1 for failure)

-

-

Пример:

-

// Create event
- vertex_freeze(vbuff);

-

Приведенный выше код заморозит заданный буфер вершин в событии Create, чтобы его можно было использовать как "статический" буфер в других событиях для более быстрого доступа.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_get_buffer_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_get_buffer_size.htm index 12270f629..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_get_buffer_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_get_buffer_size.htm @@ -1,63 +0,0 @@ - - - - - - vertex_get_buffer_size - - - - - - - - - - - -

vertex_get_buffer_size

-

С помощью этой функции вы можете получить размер заданного вершинного буфера в байтах.

-

-

Синтаксис:

-

vertex_get_buffer_size(buffer);

- - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe buffer to get the size of.
-

-

Возвращается:

-

Real

-

-

Пример:

-

bufferBytes = vertex_get_buffer_size(buff);

-

Приведенный выше код получит количество байт, используемых данным вершинным буфером, и сохранит это значение в переменной "bufferBytes".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_get_number.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_get_number.htm index 29fc4cfbf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_get_number.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_get_number.htm @@ -1,63 +0,0 @@ - - - - - - vertex_get_number - - - - - - - - - - - -

vertex_get_number

-

С помощью этой функции можно узнать количество отдельных вершин, определенных в любом данном вершинном буфере.

-

-

Синтаксис:

-

vertex_get_number(buffer);

- - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe vertex buffer to check.
-

-

Возвращается:

-

Real

-

-

Пример:

-

v_num = vertex_get_number(v_buffer);

-

Приведенный выше код сохранит в переменной количество вершин, хранящихся в данном вершинном буфере.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_normal.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_normal.htm index a3ca52f96..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_normal.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_normal.htm @@ -1,77 +0,0 @@ - - - - - - vertex_normal - - - - - - - - - - -

vertex_normal

-

Эта функция добавит данные о нормали поверхности к вершине, определяемой в данный момент для пользовательского примитива. Вы предоставляете буфер для записи данных, а также x, y и z компоненты нормали.

-

-

Синтаксис:

-

vertex_normal(buffer, nx, ny, nz);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe buffer to write the information to.
nxРеальноThe x component of the surface normal.
nyРеальноThe y component of the surface normal.
nzРеальноThe z component of the surface normal.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

vertex_normal(buff, 0, 1, 1);

-

Приведенный выше код установит нормаль поверхности определяемой вершины.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_position.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_position.htm index fdee424b4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_position.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_position.htm @@ -1,72 +0,0 @@ - - - - - - vertex_position - - - - - - - - - - -

vertex_position

-

Эта функция добавит данные о двумерной позиции к вершине, которая в данный момент определена для пользовательского примитива. Вы предоставляете буфер для записи данных, а также позиции x и y для рисования.

-

-

Синтаксис:

-

vertex_position(buffer, x, y);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe buffer to write the information to.
xРеальноThe x position.
yРеальноThe y position.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

vertex_position(buff, x - 100, y - 125);

-

Приведенный выше код установит позицию определяемой вершины.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_position_3d.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_position_3d.htm index 8b325008b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_position_3d.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_position_3d.htm @@ -1,77 +0,0 @@ - - - - - - vertex_position_3d - - - - - - - - - - -

vertex_position_3d

-

Эта функция добавит данные о трехмерной позиции к вершине, которая в данный момент определяется для пользовательского примитива. Вы предоставляете буфер для записи данных, а также позиции x, y и z для рисования.

-

-

Синтаксис:

-

vertex_position_3d(buffer, x, y, z);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe buffer to write the information to.
xРеальноThe x position.
yРеальноThe y position.
zРеальноThe z position.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

vertex_position_3d(buff, x - 100, y - 125, 0);

-

Приведенный выше код установит позицию определяемой вершины.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_submit.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_submit.htm index feafb843f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_submit.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_submit.htm @@ -1,110 +0,0 @@ - - - - - - vertex_submit - - - - - - - - - - -

vertex_submit

-

Вы можете использовать эту функцию для передачи содержимого вершинного буфера в графический конвейер для использования в шейдере. Вы указываете индекс буфера, базовый тип примитива (см. константы ниже) и текстуру, которая будет использоваться. Базовый тип примитива используется только для назначения порядка, в котором вершины, сохраненные в буфере, будут рисоваться и соединяться, но фактические данные, используемые для каждой из вершин, будут теми, которые вы определили при создании буфера вершин.

-

ПРИМЕЧАНИЕ: Эта функция может быть использована только в событии Draw Event.

-

В качестве наглядного примера различных доступных базовых примитивов см. рисунок ниже:

-

The different primitive types

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
pr_pointlistПримитив, состоящий из списка точек.
pr_linelistПримитив, состоящий из отдельных строк в списке.
pr_linestripПримитив, состоящий из последовательной полосы линий.
pr_trianglelistПримитив, состоящий из отдельных треугольников в списке.
pr_trianglestripПримитив, состоящий из последовательной полосы треугольников.
-

-

Синтаксис:

-

vertex_submit(buffer, primitive, texture);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe buffer to use.
primitiveПримитивный тип КонстантаThe primitive base type.
textureУказатель текстурыThe texture to use (or -1 for no texture).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

shader_set(shader_prim);
- vertex_submit(buff, pr_trianglelist, sprite_get_texture(sprite_index));
- shader_reset();

-

Приведенный выше код передаст буфер вершин, индексированный в переменной "buff", для отрисовки шейдером "shader_prim", используя список треугольников в качестве базового примитива и текстуру sprite для экземпляра, выполняющего код.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_texcoord.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_texcoord.htm index 1215a5ba2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_texcoord.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_texcoord.htm @@ -1,73 +0,0 @@ - - - - - - vertex_texcoord - - - - - - - - - - - -

vertex_texcoord

-

Эта функция устанавливает координаты текстуры для вершины, которая в данный момент определена для пользовательского примитива. Вы предоставляете буфер для записи данных, а также позицию UV в текстуре, которую необходимо использовать.

-

-

Синтаксис:

-

vertex_texcoord(buffer, u, v);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe buffer to write the information to.
uРеальноThe first texture coordinate to use (0 - 1).
vРеальноThe second texture coordinate to use (0 - 1).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

vertex_texcoord(buff, 0, 0);

-

Приведенный выше код установит значения UV для определяемой вершины.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_ubyte4.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_ubyte4.htm index a57397570..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_ubyte4.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Primitives/vertex_ubyte4.htm @@ -1,82 +0,0 @@ - - - - - - vertex_ubyte4 - - - - - - - - - - -

vertex_ubyte4

-

Эта функция добавит к данным вершины четыре беззнаковых байтовых значения (0 - 255). Вершина должна быть правильно отформатирована, чтобы принять ее с помощью функции vertex_format_add_custom() функцию.

-

-

Синтаксис:

-

vertex_ubyte4(buffer, byte, byte, byte, byte);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфера вершинThe buffer to write the information to.
byteРеальноThe first input value.
byteРеальноThe second input value.
byteРеальноThe third input value.
byteРеальноThe fourth input value.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

vertex_ubyte4(buff, irandom(255), irandom(255), irandom(255), 127);

-

Приведенный выше код добавит четыре значения к определяемым данным вершин.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/Sprites_And_Tiles.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/Sprites_And_Tiles.htm index 2be51226a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/Sprites_And_Tiles.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/Sprites_And_Tiles.htm @@ -1,73 +0,0 @@ - - - - - - Спрайты и плитки - - - - - - - - - - -

Спрайты и плитки

-

Несмотря на то, что вы можете устанавливать фоны в редакторе комнат и назначать sprites экземплярам, часто это недостаточно гибко для создаваемой вами игры. Например, если у вас есть экземпляр, который должен рисовать меню, вы можете захотеть отображать различные кнопки sprites одновременно, или если у вас игра с прокручивающимися параллаксными фонами, вам нужно будет иметь возможность устанавливать их через код в каком-либо экземпляре контроллера. В этих ситуациях вам следует использовать следующие функции, которые могут рисовать sprite и фоновые активы в любом месте комнаты, причем некоторые из функций также позволяют манипулировать формой, размером, цветом и альфой sprite для достижения специальных эффектов.

-

Вы можете присвоить экземпляру sprite, и по умолчанию GameMaker будет рисовать его со свойствами, заданными различными переменными спрайта, однако если вы добавите что-либо в событие рисования, вы "возьмете управление в свои руки" и должны будете указать GameMaker, что именно рисовать. Это означает, что вы должны использовать следующие функции, чтобы определить, что именно должен нарисовать экземпляр и в каком месте комнаты он должен это сделать:

- -

-

Если вы используете формат SWF sprites, то существуют также дополнительные возможности управления сглаживанием, используемым при рисовании (более подробную информацию об этих типах смотрите в разделе Импорт небитовых спрайтов sprites). Обратите внимание, что эти функции работают на глобальном уровне и устанавливают AA на всех векторных SWF sprites, отрисованных после их вызова.

- -

-

Помимо перечисленных выше функций, существуют также две специальные функции, предназначенные для использования со скелетной анимацией (см. раздел Импорт небитовых спрайтов для получения дополнительной информации об этих типах sprites, а также раздел Скелетная анимация для получения информации о конкретных функциях, связанных с этими типами sprites):

- -

-

Плитки рисуются автоматически на основе данных, которые они содержат, используемого набора плиток и свойств карты плиток. Однако вы можете рисовать отдельные плитки или карты плиток с помощью следующих функций:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_enable_swf_aa.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_enable_swf_aa.htm index 31b57dd5a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_enable_swf_aa.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_enable_swf_aa.htm @@ -1,64 +0,0 @@ - - - - - - draw_enable_swf_aa - - - - - - - - - - -

draw_enable_swf_aa

-

С помощью этой функции вы можете включить или отключить сглаживание (AA) для векторного формата SWF sprites. AA просто сглаживает края векторных изображений, чтобы придать им более приятный вид. Количество используемого сглаживания зависит от значения, установленного с помощью функции draw_set_swf_aa_level(). По умолчанию эта функция отключена.

-

-

Синтаксис:

-

draw_enable_swf_aa(enable);

- - - - - - - - - - - -
АргументТипОписание
enableEnable (true) или отключить (false) AA для всех SWF sprites.
-

-

Возвращается:

-

-

-

Пример:

-

if draw_get_swf_aa_level() == 0
- {
-     draw_enable_swf_aa(true);
-     draw_set_swf_aa_level(0.5);
- }

-

Приведенный выше код проверит значение AA для формата SWF sprites, и если оно равно 0, то включит AA и установит значение 0,5.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_get_swf_aa_level.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_get_swf_aa_level.htm index 0796bcae9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_get_swf_aa_level.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_get_swf_aa_level.htm @@ -1,53 +0,0 @@ - - - - - - draw_get_swf_aa_level - - - - - - - - - - - -

draw_get_swf_aa_level

-

Эта функция может использоваться для получения уровня сглаживания (AA) для вектора формата SWF sprites. Возвращаемое значение находится в диапазоне от 0 до 1 и показывает, насколько "гладкими" будут отрисованные края этих sprites. Вы можете установить уровень AA с помощью функции draw_set_swf_aa_level().

-

-

Синтаксис:

-

draw_get_swf_aa_level();

-

-

Возвращается:

-

-

-

Пример:

-

if draw_get_swf_aa_level() == 0
- {
-     draw_enable_swf_aa(true);
-     draw_set_swf_aa_level(0.5);
- }

-

Приведенный выше код проверит значение AA для формата SWF sprites, и если оно равно 0, то включит AA и установит значение 0,5.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_self.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_self.htm index 094b8e2b5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_self.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_self.htm @@ -1,50 +0,0 @@ - - - - - - draw_self - - - - - - - - - - - -

draw_self

-

Эта функция рисует sprite, назначенный данному экземпляру, точно так, как он был бы нарисован, если бы событие draw не содержало никакого кода или действий, и отражает изменения, которые были сделаны в переменных спрайта в других событиях.

-

ПРИМЕЧАНИЕ: Если экземпляру не присвоен адрес sprite, эта функция выдаст ошибку!

-

-

Синтаксис:

-

draw_self();

-

-

Возвращается:

-

-

-

Пример:

-

draw_self();

-

Это заставляет экземпляр рисовать себя со свойствами, определенными встроенными переменными sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_set_swf_aa_level.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_set_swf_aa_level.htm index 90d32b4e2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_set_swf_aa_level.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_set_swf_aa_level.htm @@ -1,64 +0,0 @@ - - - - - - draw_set_swf_aa_level - - - - - - - - - - -

draw_set_swf_aa_level

-

Эта функция может использоваться для установки уровня сглаживания (AA) для векторного формата SWF sprites. Это может быть вещественное значение от 0 до 1 и будет "сглаживать" края этих sprites. Обратите внимание, что для того, чтобы увидеть этот эффект, вы должны сначала включить AA с помощью функции draw_enable_swf_aa().

-

-

Синтаксис:

-

draw_set_swf_aa_level(AA);

- - - - - - - - - - - -
АргументТипОписание
AAThe anti-aliasing value to use from 0 to 1.
-

-

Возвращается:

-

-

-

Пример:

-

if draw_get_swf_aa_level() == 0
- {
-     draw_enable_swf_aa(true);
-     draw_set_swf_aa_level(0.5);
- }

-

Приведенный выше код проверит значение AA для формата SWF sprites, и если оно равно 0, то включит AA и установит значение 0,5.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite.htm index fc8597636..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite.htm @@ -1,80 +0,0 @@ - - - - - - draw_sprite - - - - - - - - - - - -

draw_sprite

-

Эта функция рисует заданное sprite и суб-изображение в позиции внутри игровой комнаты. Для sprite вы можете использовать переменную экземпляра sprite_index чтобы получить текущий sprite, который назначен экземпляру, выполняющему код, или вы можете использовать любой другой актив sprite. То же самое относится и к суб-изображению, поскольку оно также может быть задано переменной экземпляра image_index которая установит субизображение, выбранное для текущего экземпляра sprite (обратите внимание, что вы можете нарисовать другой sprite и все равно использовать значение субизображения для текущего экземпляра), или вы можете использовать любое другое значение для этого, чтобы нарисовать конкретное субизображение выбранного sprite. Если значение больше, чем количество субизображений, то GameMaker будет автоматически перебирать номера для выбора соответствующего изображения (например, если рисуемый sprite имеет 5 субизображений, пронумерованных от 0 до 4, и мы установили значение индекса равным 7, то функция нарисует субизображение 3, пронумерованное 0). Наконец, позиция x и y - это положение в комнате, в котором будет рисоваться sprite, и оно центрируется на смещении sprite по x и y.

-

ПРИМЕЧАНИЕ Эта функция может работать не так, как ожидается, при использовании скелетной анимации sprites, и вы можете обнаружить, что функция рисует только первый кадр позы по умолчанию. Вместо нее следует использовать функции draw_skeleton_*.

-

-

Синтаксис:

-

draw_sprite(sprite, subimg, x, y);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
spriteАктив спрайтаThe index of the sprite to draw.
subimgРеальноThe sub-image (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).
xРеальноThe x coordinate of where to draw the sprite.
yРеальноThe y coordinate of where to draw the sprite.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_sprite(sprite_index, image_index, x, y);
- draw_sprite(spr_Halo, 0, x, y-32);

-

Это нарисует экземпляр, назначенный sprite (sprite_index) с текущим суб-изображением в позиции x и y экземпляра в комнате. Затем будет нарисован первый кадр sprite с индексом "spr_Halo" в том же положении x и y, но на 32 пикселя "выше".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_ext.htm index e81da2f36..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_ext.htm @@ -1,97 +0,0 @@ - - - - - - draw_sprite_ext - - - - - - - - - - - -

draw_sprite_ext

-

Эта функция рисует заданный sprite, как в функции draw_sprite() но с дополнительными опциями для изменения масштаба, смешивания, поворота и альфа-функции рисуемого sprite. Изменение этих значений никак не изменяет ресурс (только то, как он рисуется), и вы можете использовать любую из доступных переменных спрайта вместо прямых значений для всех аргументов в функции. На рисунке ниже показано, как различные значения влияют на отрисовку спрайта:

-

sraw_sprite_ext examples

-

-

ПРИМЕЧАНИЕ: Смешивание цветов рекомендуется только для HTML5-цели, когда включен WebGL, хотя вы можете установить цвет смешивания, если он не включен, и он будет смешивать sprite как обычно. Однако при таком смешивании создается дубликат sprite, который затем сохраняется в кэше и используется при необходимости. Это далеко не оптимально, и если вы используете многократное изменение цвета, это замедлит производительность вашей игры, если вы не активируете WebGL. Если вы не хотите использовать WebGL, тогда вы можете установить размер кэша шрифтов, чтобы попытаться ограничить это, если это необходимо, используя функцию sprite_set_cache_size().

-

ПРИМЕЧАНИЕ: Эта функция может работать не так, как ожидается, при использовании скелетной анимации sprites, и вы можете обнаружить, что функция рисует только первый кадр позы по умолчанию. Вместо нее следует использовать функции draw_skeleton_*.

-

-

Синтаксис:

-

draw_sprite_ext( sprite, subimg, x, y, xscale, yscale, rot, colour, alpha );

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
spriteThe index of the sprite to draw.
subimgThe subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).
xThe x coordinate of where to draw the sprite.
yThe y coordinate of where to draw the sprite.
xscaleThe horizontal scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...
yscaleThe vertical scaling of the sprite as a multiplier: 1 = normal scaling, 0.5 is half etc...
rotThe rotation of the sprite. 0=right way up, 90=rotated 90 degrees counter-clockwise etc...
colourThe colour with which to blend the sprite. c_white это отображать его в обычном режиме.
alphaThe alpha of the sprite (from 0 to 1 where 0 is transparent and 1 opaque).
-

-

Возвращается:

-

-

-

Пример:

-

draw_sprite_ext(sprite_index, image_index, x, y, image_xscale, image_yscale, image_angle, image_blend, image_alpha);

-

В результате будут нарисованы экземпляры, которым присвоен sprite со всеми его значениями по умолчанию (по сути, это то же самое, что и использование draw_self).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_general.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_general.htm index debc47bf4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_general.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_general.htm @@ -1,126 +0,0 @@ - - - - - - draw_sprite_general - - - - - - - - - - - -

draw_sprite_general

-

Эта функция объединяет функцию draw_sprite_ext() с функцией draw_sprite_part(), добавляя некоторые дополнительные параметры смешивания, чтобы каждый угол - sprite может быть смешана с отдельным цветом.

-

ПРИМЕЧАНИЕ: Смешивание цветов рекомендуется только для HTML5-цели, когда включен WebGL, хотя вы можете задать цвет смешивания, если он не включен, и он будет смешивать sprite как обычно. Однако любое смешивание таким образом создает дубликат - sprite который затем сохраняется в кэше и используется при необходимости. Это далеко не оптимально, и если вы используете многократное изменение цвета, это замедлит производительность вашей игры, если вы не активируете WebGL. если вы не хотите использовать WebGL, то вы можете установить - размер кэша шрифтов, чтобы попытаться ограничить это, если потребуется, используя функцию sprite_set_cache_size().

-

ПРИМЕЧАНИЕ: Эта функция может работать не так, как ожидается, при использовании скелетной анимации sprites, и вы можете обнаружить, что функция рисует только первый кадр позы по умолчанию. Вместо нее следует использовать функции draw_skeleton_*.

-

-

Синтаксис:

-

draw_sprite_general(sprite, subimg, left, top, width, height, x, y, xscale, yscale, rot, c1, c2, c3, c4, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
spriteThe index of the sprite to draw.
subimgThe subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).
leftThe x position on the sprite of the top left corner of the area to draw.
topThe y position on the sprite of the top left corner of the area to draw.
widthThe width of the area to draw.
heightThe height of the area to draw.
xThe x coordinate of where to draw the sprite.
yThe y coordinate of where to draw the sprite.
xscaleThe horizontal scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...
yscaleThe vertical scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...
rotThe rotation of the sprite. 0=normal, 90=turned 90 degrees counter-clockwise etc.
c1The colour with which to blend the top left area of the sprite.
c2The colour with which to blend the top right area of the sprite.
c3The colour with which to blend the bottom right area of the sprite.
c4The colour with which to blend the bottom left area of the sprite.
alphaThe alpha of the sprite (from 0 to 1 where 0 is transparent and 1 opaque).
-

-

Возвращается:

-

-

-

Пример:

-

draw_sprite_general(sprite_index, image_index, 8, 8, sprite_width-16, sprite_height-16, x, y, 2, 0.5, 180, c_white, c_white, c_black, c_black, 1);

-

При этом будет нарисован экземпляр, назначенный sprite (sprite_index) и его текущий кадр анимации (image_index), но при этом будет сбрито 8px поле со всех четырех сторон sprite. Он будет растянут на двойную ширину, но половину своей обычной высоты. - Оно будет непрозрачным и перевернутым. Верхняя область sprite будет смешанной белой и, следовательно, нормальной, но нижняя область будет черной, то есть sprite будет переходить от нормального к силуэту вниз в плавном градиенте.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_part.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_part.htm index 6c35b344b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_part.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_part.htm @@ -1,96 +0,0 @@ - - - - - - draw_sprite_part - - - - - - - - - - - -

draw_sprite_part

-

С помощью этой функции можно нарисовать часть любого sprite в заданном положении в помещении. Как и в случае с draw_sprite() вы можете указать sprite и под-изображение для рисования, затем вы должны указать относительные координаты в пределах sprite области, которую нужно выбрать для рисования. Это означает, что левая позиция 0 и верхняя позиция 0 будут левым верхним углом sprite, и все дальнейшие координаты должны быть взяты из этой позиции. На рисунке ниже показан пример - как это работает:

-

Следует отметить, что если страница текстуры допускает автоматическое кадрирование, то эта функция может работать не так, как ожидается, - поскольку при создании текстурной страницы будет удалено дополнительное "пустое" пространство вокруг sprite. Чтобы решить эту проблему, необходимо в настройках страницы текстуры (в редакторе группы текстур) - отключить опцию Автоматическое кадрирование.

-

ПРИМЕЧАНИЕ: При рисовании с помощью этой функции смещение sprite по x и y игнорируется, и деталь sprite будет нарисована с левым верхним углом в заданном положении x / y в помещении.

-

ПРИМЕЧАНИЕ: Эта функция полезна только для растровых изображений sprites и не работает с SWF или JSON (Spine) sprites.

-

-

Синтаксис:

-

draw_sprite_part(sprite, subimg, left, top, width, height, x, y);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
spriteThe index of the sprite to draw.
subimgThe subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).
leftThe x position on the sprite of the top left corner of the area to draw.
topThe y position on the sprite of the top left corner of the area to draw.
widthThe width of the area to draw.
heightThe height of the area to draw.
xThe x coordinate of where to draw the sprite.
yThe y coordinate of where to draw the sprite.
-

-

Возвращается:

-

-

-

Пример:

-

draw_sprite_part(sprite_index, image_index, 4, 0, sprite_width-16, sprite_height-16, x, y );

-

Это отрисует назначенный экземпляр sprite (sprite_index) и его текущий кадр анимации (image_index), однако при этом будет сбрито 4px поля по ширине с обеих сторон и 8 pixel поля по высоте от нижней части оригинального 24x24 - пикселей sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_part_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_part_ext.htm index 0f022e4ef..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_part_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_part_ext.htm @@ -1,114 +0,0 @@ - - - - - - draw_sprite_part_ext - - - - - - - - - - - -

draw_sprite_part_ext

-

Эта функция нарисует часть выбранного sprite в заданном месте, следуя тем же правилам, что и при использовании функции draw_sprite_part()только теперь вы можете масштабировать часть, смешивать с ней цвет или изменять ее альфа-фактор, когда - (так же, как и при рисовании sprite с помощью функции draw_sprite_ext()). Следует отметить, что если страница текстуры допускает автоматическое кадрирование, то эта функция может работать не так, как ожидается, поскольку - дополнительное "пустое" пространство вокруг sprite будет удалено при создании текстурной страницы. Чтобы решить эту проблему, необходимо в настройках страницы текстуры (в редакторе группы текстур) - отключить автоматическое кадрирование.

-

ПРИМЕЧАНИЕ При рисовании с помощью этой функции смещение sprite по x и y игнорируется, и деталь sprite будет нарисована с левым верхним углом в заданном положении x / y в помещении.

-

ПРИМЕЧАНИЕ: Эта функция полезна только для растровых изображений sprites и не работает с SWF или JSON (Spine) sprites.

-

ПРИМЕЧАНИЕ: Смешивание цветов рекомендуется только для HTML5-цели, когда включен WebGL, хотя вы можете задать цвет смешивания, если он не включен, и он будет смешивать sprite как обычно. Однако любое смешивание таким образом создает дубликат - sprite который затем сохраняется в кэше и используется при необходимости. Это далеко не оптимально, и если вы используете многократное изменение цвета, это замедлит производительность вашей игры, если вы не активируете WebGL. если вы не хотите использовать WebGL, то вы можете установить - размер кэша шрифтов, чтобы попытаться ограничить это, если потребуется, используя функцию sprite_set_cache_size().

-

-

Синтаксис:

-

draw_sprite_part_ext(sprite, subimg, left, top, width, height, x, y, xscale, yscale, colour, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
spriteThe index of the sprite to draw.
subimgThe subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).
leftThe x position on the sprite of the top left corner of the area to draw.
topThe y position on the sprite of the top left corner of the area to draw.
widthThe width of the area to draw.
heightThe height of the area to draw.
xThe x coordinate of where to draw the sprite.
yThe y coordinate of where to draw the sprite.
xscaleThe horizontal scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...
yscaleThe vertical scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc...
colourThe colour with which to blend the sprite. c_white is to display it normally.
alphaThe alpha of the sprite (from 0 to 1 where 0 is transparent and 1 opaque).
-

-

Возвращается:

-

-

-

Пример:

-

draw_sprite_part_ext(sprite_index, image_index, 8, 8, sprite_width-16, sprite_height-16, x, y, 2, 0.5, c_black, 1);

-

Это нарисует назначенный экземпляр sprite (sprite_index) и его текущий кадр анимации (image_index), но при этом сбреет 8px поля со всех четырех сторон sprite. Затем он будет растянут на двойную ширину, но половину своей обычной высоты. - и хотя альфа все еще равна 1, она будет смешана с черным цветом (превращаясь в силуэт).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_pos.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_pos.htm index a96da0bb6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_pos.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_pos.htm @@ -1,107 +0,0 @@ - - - - - - draw_sprite_pos - - - - - - - - - - - -

draw_sprite_pos

-

С помощью этой функции можно нарисовать sprite, искаженное в области, определенной четырьмя угловыми координатами. Первыми двумя аргументами являются sprite для рисования и субизображение sprite (такое же, как в функции draw_sprite()) - , а следующие - те, которые определяют положение каждого из четырех углов ограничивающего поля данного sprite. Их следует указывать по часовой стрелке, поэтому первой координатой будет верхняя левая, затем верхняя правая, затем нижняя правая и, наконец, нижняя левая. - правая и, наконец, нижняя левая. Вы также можете задать значение альфа для sprite, чтобы нарисовать его прозрачным. На рисунке ниже показано, как работает эта функция:

-

draw_sprite_pos example

-

ВНИМАНИЕ! Изображение выше приведено только для примера, и если вы используете эту функцию на sprite, вы получите другие результаты и можете столкнуться со "сдвигом" текстуры из-за того, что sprite строится из квадрокоптера примитивов.

-

ПРИМЕЧАНИЕ: Эта функция полезна только для растровых изображений sprites и не работает с SWF или JSON (Spine) sprites.

-

ПРИМЕЧАНИЕ: При использовании этой функции параметр Автоматически обрезать для текстурных страниц должен быть отключен.

-

-

Синтаксис:

-

draw_sprite_pos(sprite, subimg, x1, y1, x2, y2, x3, y3, x4, y4, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
spriteThe index of the sprite to draw.
subimgThe subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).
x1The first x coordinate.
y1The first y coordinate.
x2The second x coordinate.
y2The second y coordinate.
x3The third x coordinate.
y3The third y coordinate.
x4The fourth x coordinate.
y4The fourth y coordinate.
alphaThe alpha of the sprite (from 0 to 1 where 0 is transparent and 1 opaque).
-

-

Возвращается:

-

-

-

Пример:

-

draw_sprite_pos(sprite_index, image_index, x - 100, y - 50, x - 50, y +150, x + 100, y + 200, x + 100, y, 1);

-

Приведенный выше код нарисует sprite, связанный с экземпляром, выполняющим код, с искажением вокруг x / y позиции экземпляра и с полностью непрозрачной альфой.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_stretched.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_stretched.htm index dce4899c3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_stretched.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_stretched.htm @@ -1,76 +0,0 @@ - - - - - - draw_sprite_stretched - - - - - - - - - - - -

draw_sprite_stretched

-

Эта функция просто берет ресурс sprite и растягивает его по заданной ширине и высоте так, чтобы он занимал эту область. Как и в случае с draw_sprite() вы можете указать sprite и суб-изображение для рисования, затем x / y позицию в комнате, в которой будет рисоваться sprite, и, наконец, ширину и высоту (которые должны быть пиксельными значениями). На рисунке ниже показан результат работы этой функции с разными наборами аргументов:

-

draw_sprite_stretched example

-

ПРИМЕЧАНИЕ При рисовании с помощью этой функции смещение sprite по x и y (или начало координат) игнорируются, и sprite рисуется с левым верхним углом в заданном положении x/y в помещении.

-

-

-

Синтаксис:

-

draw_sprite_stretched(sprite, subimg, x, y, w, h);

- - - - - - - - - - - - - - - - - - - - - - - - -
АргументТип Описание
sprite The index of the sprite to draw.
subimg The subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).
x The x coordinate of where to draw the sprite.
y The y coordinate of where to draw the sprite.
w The width of the area the stretched sprite will occupy.
h The height of the area the stretched sprite will occupy.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_sprite_stretched(sprite_index, image_index, x, y, sprite_width, sprite_height / 2);

-

В результате будет нарисовано назначенное экземпляру sprite и его подизображение с левым углом в позиции x/y экземпляра. Его ширина устанавливается равной ширине sprite, а высота - высоте sprite, деленной на два.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_stretched_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_stretched_ext.htm index cd0954304..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_stretched_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_stretched_ext.htm @@ -1,82 +0,0 @@ - - - - - - draw_sprite_stretched_ext - - - - - - - - - - - -

draw_sprite_stretched_ext

-

Эта функция делает то же самое, что и draw_sprite_stretched() с добавлением возможности установить смешивание цветов и значение альфа для sprite при его рисовании (аналогично функции draw_sprite_ext()).

-

ПРИМЕЧАНИЕ При рисовании с помощью этой функции смещение sprite по x и y (или начало координат) игнорируются, и sprite рисуется с левым верхним углом в заданном положении x/y в помещении.

-

ПРИМЕЧАНИЕ Смешивание цветов рекомендуется только для цели HTML5, когда включен WebGL, хотя вы можете установить цвет смешивания, если он не включен, и он будет смешивать sprite как обычно. Однако при таком смешивании создается дубликат sprite, который затем сохраняется в кэше и используется при необходимости. Это далеко не оптимально, и если вы используете многократное изменение цвета, это замедлит производительность вашей игры, если вы не активируете WebGL. Если вы не хотите использовать WebGL, тогда вы можете установить размер кэша шрифтов, чтобы попытаться ограничить это, если это необходимо, используя функцию sprite_set_cache_sizee().

-

-

Синтаксис:

-

draw_sprite_stretched_ext(sprite, subimg, x, y, w, h, colour, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТип Описание
sprite The index of the sprite to draw.
subimg The subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).
x The x coordinate of where to draw the sprite.
y The y coordinate of where to draw the sprite.
w The width of the area the stretched sprite will occupy.
h The height of the area the stretched sprite will occupy.
colour The colour with which to blend the sprite. c_white is to display it normally.
alpha The alpha of the sprite (from 0 to 1 where 0 is transparent and 1 opaque).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_sprite_stretched_ext(sprite_index, image_index, x, y, sprite_width, sprite_height / 2, c_white, 0.5);

-

В результате будет нарисован экземпляр sprite и его подизображение с левым углом в позиции x /y экземпляра. Его ширина устанавливается такой же, как у sprite, а высота равна высоте sprite, деленной на два. Он также будет нормально смешиваться, но будет иметь частично прозрачное альфа-значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_tiled.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_tiled.htm index 9e60a752a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_tiled.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_tiled.htm @@ -1,75 +0,0 @@ - - - - - - draw_sprite_tiled - - - - - - - - - - - -

draw_sprite_tiled

-

Эта функция принимает sprite и затем многократно чередует его по всему виду (или комнате, если вид не определен), начиная с координат, которые вы задаете в функции. Плитка основывается на ширине и высоте sprite, как определено переменными - sprite переменных экземпляра, выполняющего код. Эта функция предназначена только для 2D (ортографических) проекций и не будет работать корректно, если используется 3D - проекции камеры.

-

-

Синтаксис:

-

draw_sprite_tiled(sprite, subimg, x, y);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
spriteThe index of the sprite to draw.
subimgThe subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).
xThe x coordinate of where to draw the sprite.
yThe y coordinate of where to draw the sprite.
-

-

Возвращается:

-

-

-

Пример:

-

draw_sprite_tiled(sprite_index, image_index, x, y);

-

Это нарисует назначенный экземпляр sprite (sprite_index) и его текущий кадр анимации (image_index) в собственном положении экземпляра по x и y и в виде плитки по горизонтали и вертикали по всему представлению.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_tiled_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_tiled_ext.htm index e2b0121ae..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_tiled_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_sprite_tiled_ext.htm @@ -1,93 +0,0 @@ - - - - - - draw_sprite_tiled_ext - - - - - - - - - - - -

draw_sprite_tiled_ext

-

Эта функция берет sprite и затем многократно чередует его по всему виду (или комнате, если вид не определен), начиная с координат, которые вы задаете в функции, с масштабированием каждой плитки, смешиванием цветов и альфой, которую вы определяете. - (эти свойства такие же, как те, что используются в функции draw_sprite_ext()). Эта функция предназначена только для 2D (ортографических) проекций и не будет работать правильно, если используется проекция 3D-камеры.

-

ПРИМЕЧАНИЕ: Смешивание цветов рекомендуется только для HTML5-цели, когда включен WebGL, хотя вы можете задать цвет смешивания, если он не включен, и он будет смешивать sprite как обычно. Однако любое смешивание таким образом создает дубликат - sprite который затем сохраняется в кэше и используется при необходимости. Это далеко не оптимально, и если вы используете многократное изменение цвета, это замедлит производительность вашей игры, если вы не активируете WebGL. если вы не хотите использовать WebGL, то вы можете установить - размер кэша шрифтов, чтобы попытаться ограничить это, если потребуется, используя функцию sprite_set_cache_size().

-

-

Синтаксис:

-

draw_sprite_tiled_ext(sprite, subimg, x, y, xscale, yscale, colour, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
spriteThe index of the sprite to draw.
subimgThe subimg (frame) of the sprite to draw (image_index or -1 correlate to the current frame of animation in the object).
xThe x coordinate of where to draw the sprite.
yThe y coordinate of where to draw the sprite.
xscaleThe horizontal scaling of the sprite. A multiplier ' 1 = normal scaling, 0.5 is half etc.
yscaleThe vertical scaling of the sprite. A multiplier ' 1 = normal scaling, 0.5 is half etc.
colourThe colour with which to blend the sprite. c_white is to display it normally.
alphaThe alpha of the sprite (from 0 to 1 where 0 is transparent and 1 opaque).
-

-

Возвращается:

-

-

-

Пример:

-

draw_sprite_tiled_ext(sprite_index, image_index, x, y, 2, 2, c_red, 0.5);

-

Это нарисует назначенный экземпляр sprite (sprite_index) и его текущий кадр анимации (image_index) в собственной позиции x и y экземпляра, но в масштабе, вдвое превышающем обычный размер, с красной смесью и с половиной обычного альфа. Изображение sprite будет расположено - горизонтально и вертикально по всему представлению.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_tile.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_tile.htm index 7fa8863b4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_tile.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_tile.htm @@ -1,118 +0,0 @@ - - - - - - draw_tile - - - - - - - - - - -

draw_tile

-

С помощью этой функции вы можете нарисовать любую заданную плитку из набора плиток - соревнуясь с вращениями, переворотами и зеркалами - задавая рамку (если она анимирована) и положение в комнате. Значение ID набора плиток - это индекс набора плиток, заданный на сайте IDE, а данные плитки - это "сгусток" данных, содержащий всю информацию об индексе плитки и примененных преобразованиях. Вы можете использовать функцию tilemap_get() для получения данных тайла, которыми затем можно манипулировать с помощью функций тайла, или создать их самостоятельно, используя следующие константы тайла вместе со значением индекса создаваемого тайла:

- - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
tile_rotateИспользуется для установки/получения бита поворота блока данных плитки.
tile_mirrorИспользуется для установки/получения зеркального бита блока данных плитки.
tile_flipИспользуется для установки/получения флип-бита блоба данных плитки.
tile_index_maskСпециальная константа, которая используется для "и"-соединения с блобом данных плитки для извлечения индекса плитки.
-


- Побитовое "или" этих констант со значением индекса плитки для получения окончательных плиточных данных:

-

var tiledata = 8 | tile_rotate | tile_flip;

-

Приведенный выше код просто создает локальную переменную для хранения данных плитки с индексом 8 в наборе плиток, поворачивает и переворачивает ее. Это не связано с каким-либо слоем tilemap, и плитка будет нарисована на глубине слоя экземпляра, выполняющего рисование, в позиции x/y, которую вы укажете в комнате. Обратите внимание, что вы также можете задать рамку для рисования. Если индексируемая плитка является частью анимационного набора, то здесь можно задать номер кадра (от 0 до количества кадров - 1), и индексируемая плитка будет просто индикатором того, какой набор анимированных плиток вы используете, а рисоваться будет именно данный кадр. Если плитка не является частью анимированного набора, то кадр должен быть равен 0.

-

-

Синтаксис:

-

draw_tile(tileset, tiledata, frame, x, y)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
tilesetАктивы набора плитокThe ID of the tile set to use
tiledataДанные о плиткеThe tile data to use
frameРеальноThe frame number for the animated tile to use (default 0 for non-animated tiles)
xРеальноThe x position within the room to draw at
yРеальноThe y position within the room to draw at
-

-

Возвращается:

-

Real

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_sky");
- var map_id = layer_tilemap_get_id(lay_id);
- var data = tilemap_get(map_id, 0, 0);
- tile_set_flip(data, true);
- draw_tile(set_Wall, data, 0, x, y);

-

Приведенный выше код получит данные о плитке из заданного tilemap, затем установит флаг "flip" и использует эти данные для отрисовки плитки, перевернутой в позиции экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_tilemap.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_tilemap.htm index 945121165..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_tilemap.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Sprites_And_Tiles/draw_tilemap.htm @@ -1,74 +0,0 @@ - - - - - - draw_tilemap - - - - - - - - - - -

draw_tilemap

-

Эта функция может быть использована для рисования заданного tilemap в любом месте комнаты. Вы передаете ID элемента tilemap (который вы получаете при создании элемента tilemap с помощью функции layer_tilemap_create() или при использовании функции layer_tilemap_get_id()), затем указываете позицию x/y для рисования (в комнате). Обратите внимание, что это просто нарисует тайлмап в указанной точке, используя глубину слоя экземпляра, вызывающего функцию. Это не перемещает тайлмап, не изменяет его каким-либо образом, и не имеет значения, отмечен ли тайлмап как видимый или нет.

-

-

Синтаксис:

-

draw_tilemap(tilemap_element_id, x, y);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
tilemap_element_idИдентификатор элемента карты плиткиThe unique ID value of the tilemap element to draw
xРеальноThe x position within the room to draw at
yРеальноThe y position within the room to draw at
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var lay_id = layer_get_id("Tiles_Effects");
- var map_id = layer_tilemap_get_id(lay_id);
- draw_tilemap(map_id, mouse_x, mouse_y);

-

Приведенный выше код получает идентификатор слоя, затем использует его для получения определенного идентификатора тайлмапа, который, в свою очередь, используется для рисования тайлмапа в позиции мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/Surfaces.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/Surfaces.htm index 41633216b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/Surfaces.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/Surfaces.htm @@ -1,158 +0,0 @@ - - - - - - Поверхности - - - - - - - - - - -

Поверхности

-

При обычных событиях рисования GameMaker не рисует непосредственно на экране, а рисует на поверхности, называемой поверхностью приложения. Эта поверхность представляет собой чистый "холст", которым можно манипулировать перед выводом на экран, когда это необходимо, и в большинстве случаев GameMaker делает это за вас (хотя вы можете и сами манипулировать ею в коде для создания шейдеров, масштабирования и многих других вещей - подробности описаны ниже).

-

Однако, помимо этой прикладной поверхности, вы также можете создавать свои собственные поверхности и использовать их для создания потрясающих или тонких специальных эффектов в вашей игре. Например, вы можете использовать поверхности для "захвата" экземпляров, которые затем могут быть уничтожены, и таким образом вы можете создать эффект декали, где sprite для экземпляра отображается на поверхности, как если бы он все еще существовал, позволяя создавать графические эффекты, такие как обломки, кровь и т.д... без каких-либо реальных затрат на обработку. Еще одна вещь, которую можно сделать с поверхностями - использовать их как текстуры, которыми можно манипулировать, или создавать sprites "на лету", или создавать сложные наложения. на самом деле, возможности использования поверхностей бесконечны!

-

Нормальные поверхности довольно просты в использовании, но есть несколько основных правил, которые необходимо соблюдать при их использовании:

-
    -
  • Во-первых, вы должны понимать, что поверхности(кроме поверхности приложения) являются "непостоянными". Это означает, что если устройство или окно теряет фокус или сворачивается (хороший пример - когда вы нажимаете ALT +Tab на другое окно и обратно в Windows, или на устройстве Android, когда приложение теряет фокус из-за вызова), то поверхность может быть уничтожена. Это происходит потому, что она хранится только в памяти текстур(VRAM) и может быть перезаписана, когда целевой платформе понадобится эта память для чего-то другого. всегда иметь некоторый тип отказоустойчивого кода на месте, обычно с помощью surface_exists() функция.
  • -
-

ПРИМЕЧАНИЕ Кажется, что этого не происходит с sprites или другими визуальными активами (но на самом деле происходит!), поскольку они также хранятся в обычной памяти (RAM), и когда они удаляются из памяти текстур (VRAM), они немедленно восстанавливаются из обычной памяти, когда игра восстанавливает фокус.

-
    -
  • Во-вторых, следует учитывать, что поверхности могут требовать большого количества VRAM для использования, поэтому их следует стараться делать как можно меньше. Обычно их размер не должен превышать размер окна просмотра или дисплея.
  • -
  • В-третьих, поверхности следует создавать только в событии draw. Если вы создадите поверхность в событии Create экземпляра, вы можете получить тот же индекс, что и application_surface. Это может вызвать множество проблем и путаницу, поскольку вы думаете, что используете свою собственную поверхность, а на самом деле вы используете текущую цель рендеринга. Вы также всегда должны стараться ограничивать рисование на поверхность в событии draw, поскольку из-за оптимизированного способа, которым GameMaker рисует на экране, рекомендуется держать все функции рисования в событии draw - это включает очистку поверхности при ее первом создании и т.д.. Рисование на поверхность вне события draw возможно и даже может быть необходимо для некоторых эффектов, но это не то, как это должно быть сделано.
  • -
  • В-четвертых, при рисовании на поверхности вручную поверхность всегда находится в позиции (0,0). Это означает, что вам может понадобиться преобразовать абсолютные координаты в относительные координаты поверхности. Например, если у вас есть поверхность размером с камеру и вы хотите нарисовать на этой поверхности то, что в данный момент видно в камеру, вам нужно вычесть координаты x и y вида камеры из фактических координат x и y, чтобы получить относительную позицию по отношению к позиции поверхности (0,0). Таким образом, код будет выглядеть примерно так:
  • -
-

if view_current = 0
- {
-     surface_set_target(surf);
-     with (obj_effect)
-     {
-         var _vx = camera_get_view_x(view_camera[1]);
-         var _vy = camera_get_view_y(view_camera[1]);
-         draw_sprite(sprite_index, image_index, x - _vx, y - _vy);
-     }
-     surface_reset_target();
- }
- else
- {
-     draw_surface(surf, 0, 0);
- }

-
    -
  • Наконец, стоит отметить, что при рисовании на поверхность учитывается цвет и альфа-компонент каждого пикселя, как самой поверхности, так и того, что на нее рисуется. Это может привести к довольно неинтуитивным результатам (например, при рисовании sprite с альфой 0,5 на поверхность с альфой 0 итоговая альфа составит 0,25). Причины этого объясняются на следующей странице, и мы рекомендуем вам прочитать ее перед началом работы с поверхностями: Руководство по использованию блендмодов
  • -
-

ПРИМЕЧАНИЕ Это не относится к поверхности приложения, только к поверхностям, созданным пользователем.

-

Основное использование поверхности может быть следующим:

-
    -
  • Сначала вы создаете поверхность и присваиваете ее индекс переменной.
  • -
  • В этом случае цель рисования будет задана на поверхности, а не на дисплее.
  • -
  • Далее вы рисуете то, что хотите, а также выполняете любые другие манипуляции.
  • -
  • После завершения работы вы сбрасываете цель рисования, чтобы все дальнейшее рисование снова происходило на экране.
  • -
  • Наконец, вы нарисуете поверхность (или используете ее в шейдере, или что-то еще).
  • -
-

Следует отметить, что если вам требуется отрисовать весь дисплей на поверхность (включая плитки, фон и т.д.), вы можете просто обратиться к самой поверхности приложения (подробнее см. ниже) или назначить поверхность порту представления с помощью переменной view_surface_id[0..7] в этом случае все, что видно в данном порту представления, будет отрисовано на соответствующей поверхности.

-

Для работы с поверхностями существуют следующие функции (эти функции предназначены для создания и манипулирования поверхностями, но для того, чтобы нарисовать их на экране, необходимо использовать специальные функции рисования, которые можно найти ниже):

- -

-

Для рисования поверхностей существуют следующие функции:

-

ПРИМЕЧАНИЕ При работе с поверхностями существует вероятность того, что они могут перестать существовать в любой момент, поскольку хранятся в памяти текстур. Вы должны ВСЕГДА проверять существование поверхности с помощью функции surface_exists() перед непосредственным обращением к ней.

- -

-

Наконец, у вас есть две функции для хранения и извлечения поверхностей в буферах:

- -

-

Как упоминалось выше, в GameMaker большинство вещей не выводится непосредственно на экран, вместо этого они выводятся на поверхность приложения. По сути, это поверхность - такая же, как и любая другая, которую вы можете создать сами, используя функции поверхности, - и поэтому ею можно манипулировать, рисовать на ней, посылать шейдерам и т.д.. В принципе, все, что вы обычно делаете с созданной вами поверхностью, можно применить и к поверхности приложения.

-

ПРИМЕЧАНИЕ: Единственное, что вы не можете сделать с поверхностью приложения, - это освободить ее. Она всегда существует, хотя значение индекса для доступа к ней может меняться.

-

Когда вы запускаете свою игру, эта поверхность создается при первом вызове события draw в каждой новой комнате, в которую вы входите, что означает, что до этого момента ничего не рисуется. Однако вы все равно можете получить положение поверхности приложения и изменить ее размер в событии Create или любом другом событии без каких-либо ошибок, а используемые значения будут относиться к поверхности в момент ее создания. Фактическая последовательность событий для создания и рисования поверхности приложения выглядит следующим образом:

-
    -
  • Событие перед жеребьевкой
    - --- > создается поверхность приложения (если она не существует) и устанавливается цель рендеринга
  • -
  • Для каждого видимого порта представления, или, если ни один порт представления не активен, один раз -
      -
    • Событие начала рисования
    • -
    • Событие начала рисования
    • -
    • Событие окончания рисования
      - --- > цель рендеринга поверхности приложения сбрасывается здесь
    • -
    -
  • -
  • Событие после жеребьевки
    - --- > Поверхность приложения теперь по умолчанию рисуется в буфер дисплея
    - (хотя вы можете отключить это с помощью
    application_surface_draw_enable())
  • -
  • Событие начала рисования графического интерфейса
  • -
  • Событие рисования графического интерфейса
  • -
  • Событие окончания рисования графического интерфейса
  • -
-

Использование этой поверхности означает, что вы можете легко создавать невероятные переходы с помощью шейдеров, или взять экран и обернуть его вокруг 3D-формы, или просто масштабировать игру с низким разрешением до экрана любого разрешения... Возможности безграничны!

-

Для доступа к этой поверхности необходимо использовать встроенную глобальную переменную application_surface, которая описана на следующей странице:

- -

-

У вас также есть несколько специализированных функций, предназначенных только для работы с поверхностью приложения:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_get_position.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_get_position.htm index ffb0be0c3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_get_position.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_get_position.htm @@ -1,53 +0,0 @@ - - - - - - application_get_position - - - - - - - - - - - -

application_get_position

-

Если в опциях игры для целевой платформы отмечена опция "поддерживать соотношение сторон", GameMaker автоматически установит позицию рисования для поверхности приложения так, чтобы она отображалась правильно центрированной и масштабированной на - заданном дисплее. Однако если вы работаете с этой поверхностью и хотите нарисовать ее самостоятельно, то эта функция дает вам простой способ найти точное место в дисплее или окне, где была нарисована поверхность, чтобы затем вы могли - нарисовать ее там самостоятельно, или выровнять по ней изображения GUI или изображения post draw.

-

Функция вернет массив с четырьмя ключами, где ключи 0 и 1 - это x и y верхнего левого угла поверхности, а ключи 2 и 3 - x и y нижнего правого угла поверхности. - поверхности, все относительно размера дисплея или окна.

-

-

Синтаксис:

-

application_get_position();

-

-

Возвращается:

-

-

-

Пример:

-

var a = application_get_position();
xx = a[0];
yy = a[1];
ww = a[2] - a[0];
hh = a[3] - a[1];

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_surface.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_surface.htm index 07c2b5e8d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_surface.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_surface.htm @@ -1,49 +0,0 @@ - - - - - - application_surface - - - - - - - - - - -

application_surface

-

Эта глобальная встроенная переменная может быть использована для доступа к поверхности приложения для использования в любой из функций поверхности. Эта поверхность постоянно доступна и является местом, где игра рисуется GameMaker.

-

Обычные события Draw(Draw Begin, Draw и Draw End) по умолчанию рисуют на этой поверхности. Другие события Draw (например, Pre/Post Draw и Draw GUI) не рисуют на поверхности приложения. Дополнительные сведения о работе этих событий см. в разделе События рисования.

-

-

Синтаксис:

-

application_surface

-

-

Возвращается:

-

Surface ID

-

-

Пример:

-

surface_resize(application_surface, display_get_gui_width(), display_get_gui_height())

-

Приведенный выше код изменит размер поверхности приложения так, чтобы соотношение с слоем GUI было 1:1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_surface_draw_enable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_surface_draw_enable.htm index ac9b0fe00..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_surface_draw_enable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_surface_draw_enable.htm @@ -1,65 +0,0 @@ - - - - - - application_surface_draw_enable - - - - - - - - - - -

application_surface_draw_enable

-

С помощью этой функции можно включить или отключить автоматическое рисование поверхности приложения. По умолчанию эта функция включена, но во многих случаях вы захотите взять на себя ответственность за то, когда и как будет рисоваться поверхность (например, при использовании шейдеров), и в этом случае - вы можете использовать эту функцию для установки значения false, чтобы вы могли рисовать поверхность самостоятельно, когда и как вам нужно. Важно отметить, что когда вы отключаете автоматическое рисование и рисуете поверхность приложения самостоятельно, могут возникнуть определенные проблемы - с альфа-компонентом sprites и самой поверхностью. Это происходит потому, что GameMaker рисует поверхность приложения без альфа-смешения, когда автоматическое рисование включено. Если вы отключите автоматическое рисование, то вам нужно - сделать это самостоятельно, используя следующий код (для примера):

-

gpu_set_blendenable(false);
draw_surface_ext(application_surface, 0, 0, 1, 1, 0, c_white, 1);
gpu_set_blendenable(true); -

-

-

Синтаксис:

-

application_surface_draw_enable(flag);

- - - - - - - - - - - -
АргументТипОписание
flagThe flag will be either true (включено, значение по умолчанию) или false (отключено).
-

-

Возвращается:

-

-

-

Пример:

-

application_surface_draw_enable(false);

-

Приведенный выше код отключит автоматическое рисование поверхности приложения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_surface_enable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_surface_enable.htm index 8d776923c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_surface_enable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_surface_enable.htm @@ -1,72 +0,0 @@ - - - - - - application_surface_enable - - - - - - - - - - -

application_surface_enable

-

С помощью этой функции вы можете включить или выключить поверхность приложения. По умолчанию поверхность приложения включена, и все рисование для событий Draw будет выполняться на ней, а поверхность будет рисоваться на экране. Однако на некоторых старых устройствах и определенных чипсетах это может привести к снижению производительности. В таких случаях можно отключить отрисовку на поверхность приложения, и тогда все отрисовки по событиям Draw будут выполняться непосредственно в буфер экрана.

-

Вы можете использовать эту функцию для включения или отключения поверхности приложения в любое время в вашей игре, но следует учитывать, что для вступления изменений в силу требуется не менее одного кадра (шага). Выключение отключит всю коррекцию соотношения сторонкак установлено в Опциях игры для целевой платформы. Это означает, что у вас должен быть установлен метод, который масштабирует игру до размеров требуемого устройства, окна или экрана. Если вы снова включите его, то на следующем шаге снова вступят в силу параметры игры.

-

Рекомендуется использовать эту функцию осторожно, поскольку она влияет на то, как все рисуется на экране. В общем случае ее лучше использовать в качестве опции в меню игры или вызывать только один раз в начале игры и писать код в зависимости от того, включена она или выключена.

-

-

Синтаксис:

-

application_surface_enable(enable);

- - - - - - - - - - - -
АргументТипОписание
enableSet to enable (true) или отключить (false) поверхность приложения.
-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check_pressed(vk_space)
- {
-     if (application_surface_is_enabled())
-     {
-         application_surface_enable(false);
-     }
-     else
-     {
-         application_surface_enable(true);
-     }
- }

-

Приведенный выше код проверяет нажатие клавиши и включает или выключает поверхность приложения в зависимости от ее состояния (как в меню опций).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_surface_is_enabled.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_surface_is_enabled.htm index c5b26ba62..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_surface_is_enabled.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/application_surface_is_enabled.htm @@ -1,59 +0,0 @@ - - - - - - application_surface_is_enabled - - - - - - - - - - - -

application_surface_is_enabled

-

Эта функция возвращает true, если для рисования используется поверхность приложения, или false, если используется буфер экрана.

-

-

Синтаксис:

-

application_surface_is_enabled();

-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check_pressed(vk_space)
- {
-     if application_surface_is_enabled()
-     {
-         application_surface_enable(false);
-     }
-     else
-     {
-         application_surface_enable(true);
-     }
- }

-

Приведенный выше код проверяет нажатие клавиши и включает или выключает поверхность приложения в зависимости от ее состояния (как в меню опций).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface.htm index c84b5dd01..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface.htm @@ -1,76 +0,0 @@ - - - - - - draw_surface - - - - - - - - - - - -

draw_surface

-

С помощью этой функции можно нарисовать поверхность в заданном положении в помещении, при этом левый верхний угол поверхности будет нарисован в заданном положении x/y.

-
-

-

Синтаксис:

-

draw_surface(id, x, y);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор поверхностиThe unique ID value of the surface to draw.
xРеальноThe x position of where to draw the surface.
yРеальноThe y position of where to draw the surface.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _vx = camera_get_view_x(view_camera[0]);
- var _vy = camera_get_view_y(view_camera[0]);
- draw_surface(surf, _vx, _vy);

-

Приведенный выше код рисует поверхность, индексированную в "surf", в той же позиции, что и камера view[0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_ext.htm index 93aa04486..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_ext.htm @@ -1,99 +0,0 @@ - - - - - - draw_surface_ext - - - - - - - - - - - -

draw_surface_ext

-

Эта функция рисует заданную поверхность, как в функции draw_surface() но с дополнительными опциями для изменения масштаба, смешивания, вращения и альфа-функции рисуемой поверхности. Изменение этих значений никак не изменяет ресурс (только способ его рисования).

-
-

-

Синтаксис:

-

draw_surface_ext(id, x, y, xscale, yscale, rot, col, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор поверхностиThe unique ID value of the surface to draw.
xРеальноThe x position of where to draw the surface.
yРеальноThe y position of where to draw the surface.
xscaleРеальноThe horizontal scale.
yscaleРеальноThe vertical scale.
rotРеальноThe rotation or angle to draw the surface.
colЦветThe colour with which to blend the surface.
alphaРеальноThe alpha transparency for drawing the surface.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_surface_ext(surf, 0, 0, 2, 2, 0, c_red, 0.5);

-

Приведенный выше код нарисует поверхность, индексированную в переменной "surf" в позиции (0,0) в комнате, с удвоенным исходным масштабом, с красной и полупрозрачной смесью.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_general.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_general.htm index d08dddd34..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_general.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_general.htm @@ -1,135 +0,0 @@ - - - - - - draw_surface_general - - - - - - - - - - - -

draw_surface_general

-

Эта функция объединяет функцию draw_surface_ext() с функцией draw_surface_part()но добавляет некоторые дополнительные опции смешивания, так что каждый угол конечной части поверхности может быть смешен с отдельным цветом.

-

ПРИМЕЧАНИЕ Градиентное смешивание недоступно для цели HTML5, если не включен WebGL.

-
-

-

Синтаксис:

-

draw_surface_general(id, left, top, w, h, x, y, xscale, yscale, rot, c1, c2, c3, c4, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор поверхностиThe unique ID value of the surface to draw.
leftРеальноThe left position in the surface of the part to be drawn.
topРеальноThe top position in the surface of the part to be drawn.
wРеальноThe width of the part to be draw, from left.
hРеальноThe height of the part to be draw, from top.
xРеальноThe x position of where to draw the surface.
yРеальноThe y position of where to draw the surface.
xscaleРеальноThe horizontal scaling to draw the surface with.
yscaleРеальноThe vertical scaling to draw the surface with.
rotРеальноThe rotation or angle to draw the surface with.
c1ЦветThe colour of the top left corner of the surface.
c2ЦветThe colour of the top right corner of the surface.
c3ЦветThe colour of the bottom right corner of the surface.
c4ЦветThe colour of the bottom left corner of the surface.
alphaРеальноThe alpha transparency to draw the surface with..
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_surface_general(surf, 8, 8, 32, 32, x, y, 2, 0.5, 180, c_white, c_white, c_black, c_black, 1);

-

Это нарисует на поверхности область размером 32x32 пикселя из 8x8 пикселей. Она будет растянута в два раза по ширине, но в два раза по высоте. Она будет непрозрачной и перевернутой. Верхняя область поверхности будет смешанной белой и, следовательно, нормальной, но нижняя область будет черной, то есть поверхность будет переходить от нормали к силуэту вниз плавным градиентом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_part.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_part.htm index adae55ebf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_part.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_part.htm @@ -1,94 +0,0 @@ - - - - - - draw_surface_part - - - - - - - - - - - -

draw_surface_part

-

С помощью этой функции можно нарисовать часть любой поверхности в заданном положении в помещении. Как и в случае с draw_surface(), вы можете указать поверхность, но затем вам нужно указать относительные координаты внутри поверхности области, которую нужно выбрать для рисования. Это означает, что левая позиция 0 и верхняя позиция 0 будут левым верхним углом поверхности, и все дальнейшие координаты должны быть взяты из этой позиции.

-
-

-

Синтаксис:

-

draw_surface_part(id, left, top, w, h, x, y);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор поверхностиThe unique ID value of the surface to draw.
leftРеальноThe left position in the surface of the part to be drawn.
topРеальноThe top position in the surface of the part to be drawn.
wРеальноThe width of the part to be draw, from left.
hРеальноThe height of the part to be drawn, from top.
xРеальноThe x position of where to draw the surface.
yРеальноThe y position of where to draw the surface.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_surface_part(surf, 8, 8, 32, 32, x, y);

-

Это нарисует область 32x32 размером 8px на 8px слева вверху от поверхности, индексированной в "surf", в позиции экземпляра (x,y).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_part_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_part_ext.htm index 758a99279..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_part_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_part_ext.htm @@ -1,114 +0,0 @@ - - - - - - draw_surface_part_ext - - - - - - - - - - - -

draw_surface_part_ext

-

Эта функция нарисует часть выбранной поверхности в заданной позиции по тем же правилам, что и функция draw_surface_part()только теперь вы можете масштабировать часть, смешивать с ней цвет или изменять ее альфа-коэффициент при выводе на экран (так же, как при рисовании поверхности с помощью функции draw_surface_ext()).

-
-

-

Синтаксис:

-

draw_surface_part_ext(id, left, top, w, h, x, y, xscale, yscale, colour, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор поверхностиThe unique ID value of the surface to draw.
leftРеальноThe left position in the surface of the part to be drawn.
topРеальноThe top position in the surface of the part to be drawn.
wРеальноThe width of the part to be draw, from left.
hРеальноThe height of the part to be drawn, from top.
xРеальноThe x position of where to draw the surface.
yРеальноThe y position of where to draw the surface.
xscaleРеальноThe horizontal scaling the part should be drawn with.
yscaleРеальноThe vertical scaling the part should be drawn with.
colourЦветThe colour blending the part should be drawn with.
alphaРеальноThe alpha transparency the part should be drawn with.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_surface_part_ext(surf, 8, 8, 32, 32, x, y, 2, 0.5, c_black, 1);

-

Это нарисует область размером 32x32 пикселя из 8x8 пикселей на поверхности, индексированной в переменной "surf". Она будет растянута до двойной обычной ширины, но в два раза меньше обычной высоты. Она будет непрозрачной и будет смешана с черным цветом (превращая ее в силуэт).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_stretched.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_stretched.htm index 4611f43a7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_stretched.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_stretched.htm @@ -1,84 +0,0 @@ - - - - - - draw_surface_stretched - - - - - - - - - - - -

draw_surface_stretched

-

Эта функция просто берет поверхность и растягивает ее по заданной ширине и высоте так, чтобы она заняла заданную область. Как и в случае с draw_surface() вы можете указать поверхность, затем позицию x / y в комнате, в которой будет нарисована поверхность, и, наконец, ширину и высоту (которые должны быть пиксельными значениями).

-
-

-

Синтаксис:

-

draw_surface_stretched(id, x, y, w, h);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор поверхностиThe unique ID value of the surface to draw.
xРеальноThe x position of where to draw the surface.
yРеальноThe y position of where to draw the surface.
wРеальноThe width at which to draw the surface.
hРеальноThe height at which to draw the surface.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_surface_stretched(surf, 10, 10, 100, 100);

-

Это нарисует поверхность, индексированную в переменной "surf", с левым углом в точке (10,10). Ее ширина и высота установлены в 100, то есть столько места она будет занимать независимо от фактической ширины и высоты поверхности.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_stretched_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_stretched_ext.htm index 4fd9afedd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_stretched_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_stretched_ext.htm @@ -1,94 +0,0 @@ - - - - - - draw_surface_stretched_ext - - - - - - - - - - - -

draw_surface_stretched_ext

-

Эта функция делает то же самое, что и draw_surface_stretched() с добавлением возможности установить смешивание цветов и значение альфа для поверхности при ее рисовании (аналогично функции draw_surface_ext()).

-
-

-

Синтаксис:

-

draw_surface_stretched_ext(id, x, y, w, h, col, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор поверхностиThe unique ID value of the surface to draw.
xРеальноThe x position of where to draw the surface.
yРеальноThe y position of where to draw the surface.
wРеальноThe width at which to draw the surface.
hРеальноThe height at which to draw the surface.
colourЦветThe colour with which to colour the surface.
alphaРеальноThe alpha with which to blend the surface.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_surface_stretched_ext(surf, x, y, 200, 200, c_white, 0.5);

-

Это нарисует заданную поверхность с левым углом в позиции экземпляра x/y, и она будет растянута на область 200x200 пикселей без наложения, но с частичной прозрачностью.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_tiled.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_tiled.htm index 3d8632866..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_tiled.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_tiled.htm @@ -1,74 +0,0 @@ - - - - - - draw_surface_tiled - - - - - - - - - - - -

draw_surface_tiled

-

Эта функция возьмет поверхность и многократно проложит плитку по всей комнате, начиная с координат, которые вы укажете в функции.

-
-

-

Синтаксис:

-

draw_surface_tiled(id, x, y);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор поверхностиThe unique ID value of the surface to draw.
xРеальноThe x position of where to draw the surface.
yРеальноThe y position of where to draw the surface.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_surface_tiled(surf, x, y);

-

Это нарисует поверхность, индексированную в "surf", в собственном положении экземпляра по x и y, а также плитку во всех направлениях в комнате.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_tiled_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_tiled_ext.htm index ac39b0cf4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_tiled_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/draw_surface_tiled_ext.htm @@ -1,94 +0,0 @@ - - - - - - draw_surface_tiled_ext - - - - - - - - - - - -

draw_surface_tiled_ext

-

Эта функция возьмет поверхность и многократно проложит плитку по всей комнате, начиная с координат, заданных в функции, с масштабированием каждой плитки, смешиванием цветов и с альфой, которую вы зададите (эти свойства такие же, как те, что используются в функции draw_surface_ext()).

-
-

-

Синтаксис:

-

draw_surface_tiled_ext(id, x, y, xscale, yscale, col, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор поверхностиThe unique ID value of the surface to draw.
xРеальноThe x coordinate of where to draw the surface.
yРеальноThe y coordinate of where to draw the surface.
xscaleРеальноThe horizontal scaling of the surface.
yscaleРеальноThe vertical scaling of the surface.
colЦветThe colour with which to blend the surface.
alphaРеальноThe alpha of the surface.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_surface_tiled_ext(surf, x, y, 2, 2, c_red, 0.5);

-

Это нарисует поверхность с индексом "surf" в собственной позиции x и y экземпляра, удвоит ее сохраненный размер и выложит плитками во всех направлениях в комнате, а также закрасит красным цветом и сделает частично прозрачной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_copy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_copy.htm index 9b669c150..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_copy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_copy.htm @@ -1,85 +0,0 @@ - - - - - - surface_copy - - - - - - - - - - -

surface_copy

-

Эта функция просто берет изображение с одной поверхности и копирует его на другую поверхность в указанной локальной позиции внутри этой поверхности (где позиция (0,0) - левый верхний угол поверхности назначения). Если на поверхности назначения уже есть информация, она будет перезаписана копией, при этом функция никак не изменяет исходную поверхность.

-

ПРИМЕЧАНИЕ: При работе с поверхностями существует вероятность того, что они могут перестать существовать в любой момент, поскольку хранятся в памяти текстуры. Вы должны ВСЕГДА проверять существование поверхности с помощью функции surface_exists() перед непосредственным обращением к ней.

-

-

Синтаксис:

-

surface_copy(destination, x, y, source);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
destinationИдентификатор поверхностиThe ID of the surface to copy the other surface to.
xРеальноThe x position to copy to.
yРеальноThe y position to copy to.
sourceИдентификатор поверхностиThe ID of surface to be copied.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if view_current == 0
- {
-     surface_copy(surf, 0, 0, temp_surf);
- }
- else
- {
-     draw_surface(surf, 0, 0);
- }

-

Приведенный выше код проверяет текущий вид и, если это вид[0], копирует поверхность, индексированную в переменной "temp_surf", на поверхность, индексированную в переменной "surf". Если текущий вид не является видом[0], то на экран выводится поверхность "surf".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_copy_part.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_copy_part.htm index e537ea33b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_copy_part.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_copy_part.htm @@ -1,108 +0,0 @@ - - - - - - surface_copy_part - - - - - - - - - - -

surface_copy_part

-

Эта функция просто берет изображение с одной поверхности и копирует его на другую поверхность в указанной локальной позиции внутри этой поверхности (где позиция (0,0) - это левый верхний угол целевой поверхности). Вы можете указать локальную позицию x и y для копирования, а также ширину и высоту участка. Обратите внимание, что это координаты, основанные на размере поверхности, а не на положении, в котором поверхность рисуется в комнате. Если на поверхности назначения уже есть информация, она будет перезаписана копией, и функция никак не изменит исходную поверхность.

-

ПРИМЕЧАНИЕ: При работе с поверхностями существует вероятность того, что они могут перестать существовать в любой момент, поскольку хранятся в памяти текстуры. Вы должны ВСЕГДА проверять существование поверхности с помощью функции surface_exists() перед непосредственным обращением к ней.

-

-

Синтаксис:

-

surface_copy_part(destination, x, y, source, xs, ys, ws, hs);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
destinationИдентификатор поверхностиThe ID of the surface to copy the other surface to.
xРеальноThe x position to copy to.
yРеальноThe y position to copy to.
sourceИдентификатор поверхностиThe ID of the surface to be copied.
xsРеальноThe x position in the source surface to copy from.
ysРеальноThe y position in the source surface to copy from.
wsРеальноThe width of the area in the source surface to copy from.
hsРеальноThe height of the area in the source surface to copy from.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if view_current == 0
- {
-     var _cam1_x = camera_get_view_x(view_camera[1]);
-     var _cam1_y = camera_get_view_y(view_camera[1]);
-
-     surface_copy_part(surf, 0, 0, temp_surf, 0, 0, _cam1_x - mouse_x, _cam1_y - mouse_y);
- }
- else
- {
-     draw_surface(surf, 0, 0);
- }

-

Приведенный выше код проверяет текущий вид, и если это вид[0], то копирует поверхность, индексированную в переменной "temp_surf", на поверхность, индексированную в переменной "surf". Скопированная область соответствует прямоугольнику, образованному относительным положением мыши в пределах поверхности, как это было бы нарисовано в представлении[1]. Если текущий вид не является видом[0], то поверхность "surf" рисуется на экране.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_create.htm index 1674c2242..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_create.htm @@ -1,73 +0,0 @@ - - - - - - surface_create - - - - - - - - - - - -

surface_create

-

Эта функция используется для создания поверхности и возвращает индекс поверхности, который должен быть сохранен в переменной для последующих вызовов функции. Когда поверхность создается впервые, она может содержать "шум", так как по сути это просто область памяти, отведенная для этой цели (и эта память может все еще содержать информацию), поэтому вы можете захотеть очистить поверхность перед использованием с помощью функции типа draw_clear_alpha().

-

Настоятельно рекомендуется создавать все поверхности с размером, равным степени 2, то есть, например, 16, 128, 512 или 1024 пикселей. Это не совсем обязательно на некоторых платформах (например, Windows и MacOS), но это, безусловно, повысит совместимость на этих платформах, в то время как для HTML5 и устройств это необходимо, и очень важно, чтобы вы помнили об этом, иначе вы можете столкнуться с проблемами в дальнейшем.

-

-

Синтаксис:

-

surface_create(w, h);

- - - - - - - - - - - - - - - -
АргументТипОписание
wThe width of the surface to be created.
hThe height of the surface to be created.
-

-

Возвращается:

-

Surface ID

-

-

Пример:

-

if !surface_exists(surf)
- {
-     surf = surface_create(1024, 1024);
-     surface_set_target(surf);
-     draw_clear_alpha(c_black, 0);
-     surface_reset_target();
-     view_surface_id[0] = surf;
- }

-

Приведенный выше код проверяет, существует ли поверхность, и если нет, то создает поверхность шириной 1024 пикселя и высотой 1024 пикселя, присваивая индекс переменной "surf". Затем цель рисования устанавливается на новую поверхность, которая очищается и становится прозрачной, после чего цель рисования сбрасывается на дисплей. Наконец, поверхности присваивается вид.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_create_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_create_ext.htm index b732f51b0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_create_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_create_ext.htm @@ -1,75 +0,0 @@ - - - - - - surface_create_ext - - - - - - - - - - - -

surface_create_ext

-

Эта функция позволяет прикрепить поверхность к элементу холста, который уже существует на вашей веб-странице, что означает, что вы можете эффективно разделить части вашей игры для рисования в различных местах страницы. Для этого вы должны правильно определить элемент холста на странице *.html вашей игры, используя правильные размеры и имена, соответствующие поверхностям, которые вы хотите создать. Таким образом, у вас есть "главный" холст, а затем элементы холста вторичных поверхностей, которые будут назначены с помощью этой функции нужным поверхностям. Следующее изображение является примером того, как будет настроена страница с тремя элементами холста:

-

Разметка страницы может быть непростой задачей, особенно если вы хотите, чтобы все элементы выстраивались правильно, но после того, как трудная задача создания макета будет выполнена, вы можете добавить этот файл html в качестве файла страницы по умолчанию для игры, используя вкладку HTML5 в опциях игры. Следующее, что вы должны сделать, это настроить комнату и виды, поскольку каждая поверхность должна быть связана с определенным видом для "захвата" игровых изображений (см. переменную вида view_surface_id[0...7]). На рисунке ниже показано, как будет устроена игровая комната для приведенного выше примера холста:

-

Наконец, с помощью этой функции можно создать поверхности, имя которых будет таким же, как у элементов холста, а размер будет соответствовать размеру холста. Функция возвращает индекс поверхности, который следует сохранить в переменной для последующих вызовов функции. Когда поверхность создается впервые, она может содержать "шум", так как по сути это просто область памяти, отведенная для этой цели (и эта память все еще может содержать информацию), поэтому вы можете захотеть очистить поверхность перед использованием с помощью функции типа draw_clear_alpha().

-

ПРИМЕЧАНИЕ: Эта функция доступна только для использования с модулем HTML5.

-

-

Синтаксис:

-

surface_create_ext(name, w, h);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
nameThe name of the canvas element to link the surface to.
wThe width of the surface to be created.
hThe height of the surface to be created.
-

-

Возвращается:

-

Surface ID

-

-

Пример:

-

s1 = surface_create_ext("surface1", 192, 550);
- s2 = surface_create_ext("surface2", 608, 186);
- view_surface_id[1] = s1;
- view_surface_id[2] = s2;

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_depth_disable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_depth_disable.htm index a229e2ee6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_depth_disable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_depth_disable.htm @@ -1,72 +0,0 @@ - - - - - - surface_depth_disable - - - - - - - - - - -

surface_depth_disable

-

Эта функция отключает автоматическое создание буфера глубины для всех поверхностей, которые создаются после ее отключения. Обычно все поверхности имеют буферы глубины, поэтому если вы рисуете 3D объекты на них, то они будут правильно отсортированы по глубине, чтобы - для поддержания функционального паритета между рендерингом на поверхности и рендерингом в обратный буфер, однако выделение буферов глубины, по сути, удваивает объем памяти, требуемый для поверхностей, что может быть чрезмерным и ненужным накладным расходом. - особенно если ваша игра очень требовательна к памяти, а для 2D игр они обычно не нужны.

-

Чтобы использовать эту функцию, нужно вызвать ее перед созданием поверхности, а затем снова включить ее после (если потребуется). Все поверхности, созданные при отключенном буфере глубины, больше не будут использовать буфер глубины при отрисовке, что приводит к тому. - что приводит к тому, что объекты, нарисованные на поверхности, имеют паритет глубины. Изображения ниже иллюстрируют это на практике:

-

На изображении выше мы рисуем прямоугольник и треугольник, используя буфер вершин в 3D. Координаты - координаты для красного треугольника располагают его позади зеленого прямоугольника, но код для рисования треугольника вызывается после кода для прямоугольника, и когда включен буфер глубины, треугольник все равно рисуется позади прямоугольника. - поскольку соблюдается 3D-глубина. Однако когда мы отключаем буфер глубины для поверхности, соблюдается только порядок кода, поэтому треугольник рисуется поверх прямоугольника.

-

ПРИМЕЧАНИЕ: Чтобы правильно сохранять глубину в 3D при использовании поверхностей, необходимо не только включить буфер глубины, но и включить z-запись и z-тестирование. См. функции gpu_set_ztestenable() и gpu_set_zwriteenable() для получения дополнительной информации.

-

ПРИМЕЧАНИЕ: Если ваша игра на 100% 2D или вы знаете, что вам не нужен буфер глубины поверхности, то вполне достаточно вызвать эту функцию один раз в начале игры, чтобы отключить буфер.

-

-

Синтаксис:

-

surface_depth_disable(disable);

- - - - - - - - - - - -
АргументТипОписание
disableIf set to true буфер глубины будет отключен для созданных поверхностей.
-

-

Возвращается:

-

-

-

Пример:

-

var _depth_setting = surface_get_depth_disable();
surface_depth_disable(false); -
surface_with_depth = surface_create(room_width, room_height);
surface_depth_disable(true); -
surface_without_depth = surface_create(room_width, room_height);
surface_depth_disable(_depth_setting); -

-

Приведенный выше код сохраняет текущую настройку буфера глубины в переменной, а затем создает две поверхности, одну с включенной буферизацией глубины, а другую без нее, после чего снова восстанавливает исходную настройку.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_exists.htm index 9075f91ed..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_exists.htm @@ -1,71 +0,0 @@ - - - - - - surface_exists - - - - - - - - - - - -

surface_exists

-

Эта функция необходима при работе с поверхностями из-за их изменчивой природы. Поверхности всегда хранятся в памяти текстур, что означает, что они могут быть уничтожены в один момент времени (например, при запуске заставки на окнах или при сворачивании на устройстве Android ), поэтому вы всегда должны проверять существование поверхности, прежде чем что-либо с ней делать (это включает рисование на экране). В приведенном ниже примере кода показано типичное использование этой команды в событии draw экземпляра для проверки наличия поверхности и ее повторного создания, если она была удалена (обратите внимание, что поверхность была первоначально создана в событии create объекта).

-

-

Синтаксис:

-

surface_exists(surface_id);

- - - - - - - - - - - -
АргументТипОписание
surface_idThe ID of the surface to check.
-

-

Возвращается:

-

-

-

Пример:

-

if !surface_exists(surf)
- {
-     surf = surface_create(1024, 1024);
- }
- else
- {
-     if view_current = 1
-     {
-         draw_surface(surf,0,0);
-     }
- }

-

Приведенный выше код проверит, существует ли поверхность, индексированная в переменной "surf", и если нет, то создаст ее заново. Если она существует, то проверяется, какой вид в данный момент рисуется, и если это вид[1], то рисуется поверхность.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_free.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_free.htm index d74e5bc46..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_free.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_free.htm @@ -1,65 +0,0 @@ - - - - - - surface_free - - - - - - - - - - -

surface_free

-

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

-

ПРИМЕЧАНИЕ: При работе с поверхностями существует вероятность того, что они могут перестать существовать в любой момент, поскольку хранятся в памяти текстуры. Вы должны ВСЕГДА проверять существование поверхности с помощью функции surface_exists() перед непосредственным обращением к ней.

-

-

Синтаксис:

-

surface_free(surface_id);

- - - - - - - - - - - -
АргументТипОписание
surface_idThe ID of the surface to be freed.
-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check_pressed(vk_escape)
- {
-     surface_free(surf);
-     room_goto(rm_Menu);
- }

-

Приведенный выше код проверяет наличие нажатия клавиши и, если обнаруживает его, освобождает память, зарезервированную для поверхности, индексированной в переменной "surf", а затем меняет комнату.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_depth_disable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_depth_disable.htm index 230a1c855..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_depth_disable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_depth_disable.htm @@ -1,56 +0,0 @@ - - - - - - surface_get_depth_disable - - - - - - - - - - - -

surface_get_depth_disable

-

Эта функция проверяет, включена ли автоматическая генерация буферов глубины для поверхностей. Обычно все поверхности имеют буферы глубины, поэтому если вы рисуете 3D объекты на них, то они будут правильно сортироваться по глубине, однако выделение буферов глубины, по сути, удваивает размер поверхностей, что может быть чрезмерным и ненужным накладным расходом, особенно если ваша игра очень требовательна к памяти или преимущественно 2D. В таких случаях вы можете проверить это с помощью данной функции и при необходимости отключить буфер глубины для поверхностей с помощью функции surface_depth_disable().

-

-

Синтаксис:

-

surface_get_depth_disable();

-

-

Возвращается:

-

-

-

Пример:

-

if (!surface_exists(surf))
- {
-     if surface_get_depth_disable() == false
-     {
-         surface_depth_disable(true);
-     }
-     surf = surface_create(room_width, room_height);
- }

-

Приведенный выше код проверит, существует ли заданная поверхность, и если нет, то проверит текущее состояние буфера глубины поверхности, и если он включен, то отключит его, после чего окончательно создаст поверхность.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_height.htm index fe4ef0167..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_height.htm @@ -1,62 +0,0 @@ - - - - - - surface_get_height - - - - - - - - - - - -

surface_get_height

-

Эта функция просто возвращает высоту, в пикселях, индексированной поверхности. Следует отметить, что если вы вызовете эту функцию для проверки application_surface сразу после изменения ее размера с помощью функции surface_resize() она не вернет новое значение, так как для полной обработки изменения требуется шаг или два. После ожидания одного шага он должен корректно вернуть новый размер.

-

ПРИМЕЧАНИЕ: При работе с поверхностями существует вероятность того, что они могут перестать существовать в любой момент, поскольку хранятся в памяти текстур. Вы должны ВСЕГДА проверять существование поверхности с помощью функции surface_exists() перед непосредственным обращением к ней.

-

-

Синтаксис:

-

surface_get_height(surface_id);

- - - - - - - - - - - -
АргументТипОписание
surface_idThe ID of the surface to get the height of.
-

-

Возвращается:

-

-

-

Пример:

-

sh = surface_get_height(surf);

-

Приведенный выше код будет хранить высоту поверхности, проиндексированной в переменной "surf", в переменной "sh".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_target.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_target.htm index 1d0d05316..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_target.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_target.htm @@ -1,55 +0,0 @@ - - - - - - surface_get_target - - - - - - - - - - - -

surface_get_target

-

С помощью этой функции можно получить идентификатор текущей поверхности, на которую производится отрисовка. Если вы создали эту поверхность с помощью функции surface_create()то это будет целое положительное число, которое является уникальным идентификатором этой поверхности.

-

Если пользовательская поверхность не установлена, но при этом включено значение application_surface по умолчанию, то функция обычно возвращает 0. Однако, если вы ранее манипулировали с application_surface, вы можете проверить, что полученный вами ID не совпадает с текущим значением переменной application_surface, в случае если это значение больше не 0.

-

Если пользовательская поверхность не задана, и поверхность по умолчанию application_surface также была отключена, то функция вернет -1.

-

-

Синтаксис:

-

surface_get_target();

-

-

Возвращается:

-

Surface ID or -1 (if no target surface is set)

-

-

Пример:

-

if surface_get_target() != -1
- {
-     surface_reset_target();
- }
- draw_surface(surf, 0, 0);

-

Приведенный выше код проверяет, является ли текущая цель рендеринга поверхностью или нет, и если да, то сбрасывает цель, а затем рисует поверхность.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_target_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_target_ext.htm index 59f0c21a9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_target_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_target_ext.htm @@ -1,64 +0,0 @@ - - - - - - surface_get_target_ext - - - - - - - - - - - -

surface_get_target_ext

-

Эта функция извлекает идентификатор поверхности, назначенной одной из 4 целей рендеринга, доступных для поверхностей. Вы указываете индекс цели рендеринга для проверки, и функция вернет -1, если поверхность не назначена, или целочисленное значение >= 0, представляющее ID назначенной поверхности (как возвращается функцией surface_create()).

-

-

Синтаксис:

-

surface_get_target_ext(index);

- - - - - - - - - - - -
АргументТипОписание
indexThe render target index to check (from 0 to 3).
-

-

Возвращается:

-

Surface ID or -1 (if no target surface is set)

-

-

Пример:

-

if surface_get_target_ext(0) == -1
- {
-     surface_set_target_ext(0, global.Surf);
- }

-

Приведенный выше код сначала проверит, была ли шейдер render target 0 установлен на поверхность, и если нет, то назначит ее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_texture.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_texture.htm index 082588944..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_texture.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_texture.htm @@ -1,72 +0,0 @@ - - - - - - surface_get_texture - - - - - - - - - - - -

surface_get_texture

-

Эта функция возвращает специальный указатель на текстуру поверхности. Это значение может быть использовано в других функциях рисования, в частности, в общих функциях 3D и некоторых функциях 2D-примитивов.

-

ПРИМЕЧАНИЕ При работе с поверхностями существует вероятность того, что они могут перестать существовать в любой момент, поскольку хранятся в памяти текстуры. Вы должны ВСЕГДА проверять существование поверхности с помощью функции surface_exists() перед непосредственным обращением к ней.

-
-

-

Синтаксис:

-

surface_get_texture(surface_id);

- - - - - - - - - - - - - -
АргументТипОписание
surface_idИдентификатор поверхностиThe ID of the surface to get the width of.
-

-

Возвращается:

-

Texture

-

-

Пример:

-

var tex;
- tex = surface_get_texture(surf);
- draw_primitive_begin_texture(pr_trianglestrip, tex);
- draw_vertex_texture(0, 480, 0, 0);
- draw_vertex_texture(640, 480, 1, 0);
- draw_vertex_texture(640, 480, 1, 1);
- draw_vertex_texture(0, 480, 0, 1);
- draw_primitive_end();

-

Приведенный выше код нарисует полосу треугольника с 4 вершинами, текстурированную текстурой, хранящейся в переменной "tex", которая сама берется из ранее созданной поверхности.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_width.htm index eaf3a0e74..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_get_width.htm @@ -1,62 +0,0 @@ - - - - - - surface_get_width - - - - - - - - - - - -

surface_get_width

-

Эта функция просто возвращает ширину, в пикселях, индексированной поверхности. Следует отметить, что если вы вызовете эту функцию для проверки application_surface сразу после изменения ее размера с помощью функции surface_resize() она не вернет новое значение, так как для полной обработки изменения требуется шаг или два. После ожидания одного шага он должен корректно вернуть новый размер.

-

ПРИМЕЧАНИЕ: При работе с поверхностями существует вероятность того, что они могут перестать существовать в любой момент, поскольку хранятся в памяти текстур. Вы должны ВСЕГДА проверять существование поверхности с помощью функции surface_exists() перед непосредственным обращением к ней.

-

-

Синтаксис:

-

surface_get_width(surface_id);

- - - - - - - - - - - -
АргументТипОписание
surface_idThe ID of the surface to get the width of.
-

-

Возвращается:

-

-

-

Пример:

-

sw = surface_get_width(surf);

-

Приведенный выше код будет хранить ширину поверхности, проиндексированной в переменной "surf", в переменной "sw".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_getpixel.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_getpixel.htm index 3cd32ac1f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_getpixel.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_getpixel.htm @@ -1,70 +0,0 @@ - - - - - - surface_getpixel - - - - - - - - - - - -

surface_getpixel

-

Эта функция может использоваться для получения цвета определенного пикселя на поверхности, используя локальные координаты поверхности, где (0,0) - левый верхний угол. Эту функцию не следует использовать очень часто, так как она работает очень медленно и может вызвать паузу в игре.

-

ПРИМЕЧАНИЕ: При работе с поверхностями существует вероятность того, что они могут перестать существовать в любой момент, поскольку хранятся в памяти текстуры. Вы должны ВСЕГДА проверять существование поверхности с помощью функции surface_exists() перед непосредственным обращением к ней.

-

-

Синтаксис:

-

surface_getpixel(surface_id, x, y);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
surface_idThe ID of the surface.
xThe x position on the surface from which to get the pixel.
yThe y position on the surface from which to get the pixel.
-

-

Возвращается:

-

Colour Constant

-

-

Пример:

-

col = surface_getpixel(surf, 56, 78 );

-

Это вернет цвет пикселя в координатах (56,78) поверхности, индексированной в переменной "surf".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_getpixel_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_getpixel_ext.htm index f78c3a996..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_getpixel_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_getpixel_ext.htm @@ -1,70 +0,0 @@ - - - - - - surface_getpixel_ext - - - - - - - - - - - -

surface_getpixel_ext

-

С помощью этой функции можно получить полное abgr 32-битное значение любого пикселя (ранее созданной) поверхности.

-

ПРИМЕЧАНИЕ: Эта функция сильно снижает производительность, поэтому ее следует использовать только в случае крайней необходимости.

-

-

Синтаксис:

-

surface_getpixel_ext(surface_id, x, y);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
surface_idThe ID of the surface to use.
xThe x coordinate of the pixel to check
yThe y coordinate of the pixel to check
-

-

Возвращается:

-

-

-

Пример:

-

col = surface_getpixel_ext(mouse_x, mouse_y);
alpha = (col >> 24) & 255;
blue = (col >> 16) & 255;
green = (col >> 8) & 255;
red = col & 255;

-

Приведенный выше код получит 32-битное значение цвета в позиции мыши, а затем разделит его на составляющие значения, сохранив их в переменных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_reset_target.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_reset_target.htm index 144cef5ef..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_reset_target.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_reset_target.htm @@ -1,61 +0,0 @@ - - - - - - surface_reset_target - - - - - - - - - - -

surface_reset_target

-

С помощью этой функции вы сбрасываете все дальнейшее рисование с целевой поверхности обратно на экран. Обратите внимание, что для начала рисования на поверхности вы должны сначала вызвать функцию surface_set_target() и затем эту функцию после завершения работы для каждой заданной поверхности, иначе на экране ничего не будет нарисовано, так как все дальнейшее рисование (даже в других случаях) будет выполняться на поверхности. Вы также должны понимать, что ничего не будет видно, если сама поверхность не будет нарисована на экране в событии draw экземпляра.

-

ПРИМЕЧАНИЕ: Если вы ранее не задали цель рендеринга с помощью функции surface_set_target()то использование этой функции молча (т.е. без сообщений об ошибках) завершит дальнейшее выполнение кода для этого события.

-

-

Синтаксис:

-

surface_reset_target();

-

-

Возвращается:

-

-

-

Пример:

-

if view_current = 0
- {
-     surface_set_target(surf);
-     with (obj_effect)
-     {
-         draw_self();
-     }
-     surface_reset_target();
- }
- else
- {
-     draw_surface(surf, 0, 0);
- }

-

Приведенный выше код проверяет, какой вид в данный момент рисуется, и если это вид[0], он устанавливает цель рисования на поверхность и рисует все экземпляры объекта "obj_Effect", после чего снова сбрасывает цель рисования. Если вид не является видом[0], то поверхность рисуется на экране.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_resize.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_resize.htm index 9a81da343..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_resize.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_resize.htm @@ -1,72 +0,0 @@ - - - - - - surface_resize - - - - - - - - - - -

surface_resize

-

Эта функция изменит размер поверхности до заданных размеров (в пикселях). В качестве "surface_id" указывается ранее созданная поверхность, или номер поверхности application_suface, и функция изменит размер этой поверхности. Обратите внимание, что функция не обрезает и не растягивает содержимое поверхности, а уничтожает текущую поверхность и воссоздает ее заново с той же ручкой (surface_id) с новыми размерами, что означает, что ее нужно будет очистить и нарисовать заново (если только это не application_surface, в этом случае GameMaker сделает это автоматически).

-

ПРИМЕЧАНИЕ: Если вы изменяете размер поверхности приложения, эти изменения не будут зарегистрированы до начала следующего кадра рисования, что означает, что вызов функции surface_get_width() или surface_get_height() в том же событии или шаге вернет предыдущие значения.

-

-

Синтаксис:

-

surface_resize(surface_id, w, h);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
surface_idThe ID of the surface to change.
wThe width of the new surface.
hThe height of the new surface.
-

-

Возвращается:

-

-

-

Пример:

-

if view_wport[0] != surface_get_width(application_surface) || view_hport[0] != surface_get_height(application_surface)
- {
-     surface_resize(application_surface, view_wport[0],view_hport[0]);
- }

-

Приведенный выше код проверяет размер порта представления на соответствие размеру поверхности "aplication_surface", и если они отличаются, то размер поверхности изменяется.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_save.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_save.htm index ca7480813..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_save.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_save.htm @@ -1,67 +0,0 @@ - - - - - - surface_save - - - - - - - - - - -

surface_save

-

Эта функция сохраняет поверхность на диск с заданным именем файла. Поверхность должна быть сохранена как файл формата *.png.

-

-

Синтаксис:

-

surface_save(surface_id, fname);

- - - - - - - - - - - - - - - -
АргументТипОписание
surface_idThe ID of the surface to set as the drawing target.
fnameThe name of the saved image file.
-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check_pressed(ord("S")
- {
-     surface_save(surf, "test.png");
- }

-

Приведенный выше код проверит, нажимает ли пользователь клавишу "S" на клавиатуре, и если нажимает, то сохранит поверхность, проиндексированную в переменной "surf", на диск.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_save_part.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_save_part.htm index 2699c7090..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_save_part.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_save_part.htm @@ -1,83 +0,0 @@ - - - - - - surface_save_part - - - - - - - - - - -

surface_save_part

-

Эта функция сохранит часть поверхности на диск, используя заданное имя файла. Поверхность должна быть сохранена как файл формата *.png, а положение (x,y) должно быть задано как локальные координаты поверхности, учитывая, что левый верхний угол поверхности всегда (0,0).

-

-

Синтаксис:

-

surface_save_part(surface_id, fname, x, y, width, height);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
surface_idThe ID of the surface to set as the drawing target.
fnameThe name of the saved image file.
xThe starting x position within the surface.
yThe starting y position within the surface.
widthThe width of the part to save.
heightThe height of the part to save.
-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check_pressed(ord("S")
- {
-     surface_save_part(surf, "test.png", 0, 0, 100, 100);
- }

-

Приведенный выше код проверит, нажимает ли пользователь клавишу "S" на клавиатуре, и если нажимает, то сохранит часть поверхности, проиндексированной в переменной "surf", на диск.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_set_target.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_set_target.htm index 0be81e7b4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_set_target.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_set_target.htm @@ -1,93 +0,0 @@ - - - - - - surface_set_target - - - - - - - - - - -

surface_set_target

-

С помощью этой функции вы устанавливаете все дальнейшее рисование на целевую поверхность, а не на экран, и таким образом вы можете указать GameMaker рисовать только определенные вещи на указанной поверхности. Обратите внимание, что если вы не вызовете функцию surface_reset_target() после завершения работы, на экране ничего не будет нарисовано, так как все дальнейшее рисование (даже в других случаях) будет происходить на поверхности. Вы также должны понимать, что ничего не будет видно, если сама поверхность не будет нарисована на экране в событии draw экземпляра. Вы также можете проверить возвращаемое значение этой функции в качестве инструмента отладки, чтобы проверить, была ли установлена цель поверхности или нет. Возвращаемое значение 0 означает неудачу в установке цели, а любое другое положительное значение - успех.

-

Следует отметить, что поверхности складываются в стек, поэтому вы не можете переходить от цели к цели, а затем вернуться к обычной цели рисования в конце, но скорее вы должны открывать и закрывать цели рендеринга. Например, это не будет работать правильно:

-

surface_set_target(surf1);
- draw_text(32, 32, "surface1");
- surface_set_target(surf2);
- draw_text(32, 64, "surface2");
- surface_reset_target();

-

Вместо этого вы должны сбросить цель для каждой из заданных поверхностей, точно так же, как вы должны использовать открывающие и закрывающие скобки {} для блоков кода. Таким образом, вышеприведенное должно быть написано либо так, либо так:

-

surface_set_target(surf1);
- draw_text(32, 32, "surface1");
- surface_reset_target();
- surface_set_target(surf2);
- draw_text(32, 64, "surface2");
- surface_reset_target();

-

или вот так:

-

surface_set_target(surf1);
- draw_text(32, 32, "surface1");
- surface_set_target(surf2);
- draw_text(32, 64, "surface2");
- surface_reset_target();
- surface_reset_target();

-

ПРИМЕЧАНИЕ: При работе с поверхностями существует вероятность того, что они могут перестать существовать в любой момент, поскольку хранятся в памяти текстур. Вы должны ВСЕГДА проверять существование поверхности с помощью функции surface_exists() перед непосредственным обращением к ней.

-

-

Синтаксис:

-

surface_set_target(surface_id);

- - - - - - - - - - - -
АргументТипОписание
surface_idThe ID of the surface to set as the drawing target.
-

-

Возвращается:

-

-

-

Пример:

-

if view_current = 0
- {
-     surface_set_target(surf);
-     with (obj_effect)
-     {
-         draw_self();
-     }
-     surface_reset_target();
- }
- else
- {
-     draw_surface(surf, 0, 0);
- }

-

Приведенный выше код проверяет, какой вид в данный момент рисуется, и если это вид[0], то устанавливает цель рисования на поверхность и рисует все экземпляры объекта "obj_Effect", после чего снова сбрасывает цель рисования. Если вид не является видом[0], то поверхность рисуется на экране.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_set_target_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_set_target_ext.htm index 0c6315637..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_set_target_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Surfaces/surface_set_target_ext.htm @@ -1,65 +0,0 @@ - - - - - - surface_set_target_ext - - - - - - - - - - -

surface_set_target_ext

-

Эта функция предназначена для использования с функциями шейдеров и устанавливает MRT (0 - 3) для шейдеров родного уровня (DX9, DX11, OpenGL).

-

ПРИМЕЧАНИЕ: При работе с поверхностями существует вероятность того, что они могут перестать существовать в любой момент, поскольку хранятся в памяти текстур. Вы должны ВСЕГДА проверять существование поверхности с помощью функции surface_exists() перед непосредственным обращением к ней.

-

-

Синтаксис:

-

surface_set_target_ext(index, surface_id);

- - - - - - - - - - - - - - - -
АргументТипОписание
indexThe render target index to use (from 0 to 3).
surface_idThe ID of the surface to use.
-

-

Возвращается:

-

-

-

Пример:

-

surface_set_target_ext(0, surf);

-

Приведенный выше код установит цель рендеринга 0 на идентификатор поверхности, указанный в переменной "surf".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/Text.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/Text.htm index 174d25dcd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/Text.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/Text.htm @@ -1,64 +0,0 @@ - - - - - - Текст - - - - - - - - - - -

Текст

-

Существует ряд функций для рисования текста в различных формах. Следует отметить, что некоторые из этих функций динамически изменяют цвета и размеры текста при рисовании, но при работе с HTML5 или устройствами эти функции могут замедлить работу игры или выглядеть некачественно, поэтому лучше иметь ресурсы шрифтов разного размера, а не использовать масштабированное рисование, или иметь ресурсы крупных шрифтов и рисовать их в уменьшенном, а не увеличенном масштабе. Кроме того, если вам нужно раскрасить большие блоки текста, лучше использовать функции draw_set_colour() и draw_set_alpha() вместе с простой функцией draw_text, а не те расширенные функции, которые содержат цветовой компонент.

-

Следующие функции предназначены для установки шрифта, который будет использоваться при рисовании, а также позиционирования текста при рисовании:

- -

-

Эти функции можно использовать для рисования текста на экране, простого или с преобразованиями и цветом:

- -

-

Существует также следующая функция, предназначенная для рисования рейтингов, созданных с помощью встроенной системы рейтингов:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_get_font.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_get_font.htm index 7e9ad645e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_get_font.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_get_font.htm @@ -1,71 +0,0 @@ - - - - - - draw_get_font - - - - - - - - - - - -

draw_get_font

-

Эта функция получает шрифт, назначенный в настоящее время для рисования текста. Функция вернет -1, если шрифт не установлен, или значение ID (целое положительное число) для назначенного актива шрифта.

-

-

Синтаксис:

-

draw_get_font();

-

-

Возвращается:

-

Font Asset or -1

-

-

Пример:

-

var _cur_font = draw_get_font();
- var _y_offset = 0;
-
- switch (_cur_font)
- {
-     case ft_small:
-         _y_offset = 10;
-     break;
-
-     case ft_medium:
-         _y_offset = 22;
-     break;
-
-     case ft_big:
-         _y_offset = 34;
-     break;
-
-     default:
-         _y_offset = 8;
- }
-
- draw_text(room_width / 2, 200 + _y_offset, "MENU"); -

-

Приведенный выше код получает текущий шрифт и выполняет оператор switch, применяя к нему различное значение смещения Y в зависимости от шрифта. Затем он использует это значение смещения при рисовании текста.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_get_halign.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_get_halign.htm index 304983a59..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_get_halign.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_get_halign.htm @@ -1,88 +0,0 @@ - - - - - - draw_get_halign - - - - - - - - - - - -

draw_get_halign

-

Эта функция используется для получения настройки выравнивания текста по горизонтальной оси и возвращает одну из перечисленных ниже констант.

-

-

Синтаксис:

-

draw_get_halign();

-

-

Возвращается:

-

Constant

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Горизонтальное выравнивание Постоянная
ПостояннаяВыравнивание
fa_leftfa_left example
fa_centerfa_center example
fa_rightfa_right example
-

-

Пример:

-

var _cur_halign = draw_get_halign();
- var _cur_valign = draw_get_valign();
-
- draw_set_halign(fa_right);
- draw_set_valign(fa_bottom);
-
- draw_text(100, 32, "Score: " + string(score));
-
- draw_set_halign(_cur_halign);
- draw_set_valign(_cur_valign); -

-

Приведенный выше код сохраняет текущие значения "halign" и "valign" в локальных переменных, а затем изменяет выравнивание, чтобы нарисовать текст. После рисования текста он возвращает выравнивания обратно к значениям, сохраненным в локальных переменных.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_get_valign.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_get_valign.htm index 14331fa10..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_get_valign.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_get_valign.htm @@ -1,88 +0,0 @@ - - - - - - draw_get_valign - - - - - - - - - - - -

draw_get_valign

-

Эта функция используется для получения настройки выравнивания текста по вертикальной оси и возвращает одну из перечисленных ниже констант.

-

-

Синтаксис:

-

draw_get_valign();

-

-

Возвращается:

-

Constant

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Выравнивание по вертикали Постоянная
ПостояннаяВыравнивание
fa_topfa_top example
fa_middlefa_middle example
fa_bottomfa_bottom example
-

-

Пример:

-

var _cur_halign = draw_get_halign();
- var _cur_valign = draw_get_valign();
-
- draw_set_halign(fa_right);
- draw_set_valign(fa_bottom);
-
- draw_text(100, 32, "Score: " + string(score));
-
- draw_set_halign(_cur_halign);
- draw_set_valign(_cur_valign); -

-

Приведенный выше код сохраняет текущие значения "halign" и "valign" в локальных переменных, а затем изменяет выравнивание, чтобы нарисовать текст. После рисования текста он возвращает выравнивания обратно к значениям, сохраненным в локальных переменных.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_highscore.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_highscore.htm index 464402b13..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_highscore.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_highscore.htm @@ -1,74 +0,0 @@ - - - - - - draw_highscore - - - - - - - - - - - -

draw_highscore

-

Эта простая функция нарисует текущий список внутренних рейтингов, используя установленные в данный момент шрифт, цвет и альфа-значения, в указанном прямоугольнике. Вы указываете координаты левого верхнего угла и правого нижнего угла прямоугольной области для рисования текста. - прямоугольной области для рисования текста, а GameMaker позаботится обо всем остальном, расстояние и положение будут выполнены автоматически.

-

-

Синтаксис:

-

draw_highscore( x1, y1, x2, y2 );

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1The x coordinate of the left of the highscore rectangle.
y1The y coordinate of the top of the highscore rectangle.
x2The x coordinate of the right of the highscore rectangle.
y2The y coordinate of the bottom of the highscore rectangle.
-

-

Возвращается:

-

-

-

Пример:

-

draw_highscore(100, 100, room_width - 100, room_height - 100);

-

Это нарисует таблицу высоких результатов в прямоугольнике в центре комнаты с границей в 100px.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_set_font.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_set_font.htm index 80443828b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_set_font.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_set_font.htm @@ -1,62 +0,0 @@ - - - - - - draw_set_font - - - - - - - - - - -

draw_set_font

-

Эта функция устанавливает шрифт, который будет использоваться для дальнейшего рисования текста. Этот шрифт должен быть добавлен в шрифтовые активы игры или создан с помощью функции font_add() или font_add_sprite().

-

-

Синтаксис:

-

draw_set_font(font);

- - - - - - - - - - - -
АргументТипОписание
fontThe name of the font to use.
-

-

Возвращается:

-

-

-

Пример:

-

draw_set_colour(c_blue);
- draw_set_font(fnt_Game);
- draw_text(200, 200, "Hello World");

-

Приведенный выше код нарисует заданный текст, используя шрифт, индексированный в переменной "fnt_Game" и окрашенный в синий цвет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_set_halign.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_set_halign.htm index 216b57878..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_set_halign.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_set_halign.htm @@ -1,88 +0,0 @@ - - - - - - draw_set_halign - - - - - - - - - - -

draw_set_halign

-

Эта функция используется для выравнивания текста по горизонтальной оси, и изменение горизонтального выравнивания изменит положение и направление, в котором будет рисоваться весь дальнейший текст; значение по умолчанию - fa_left. Принимаются следующие константы:

- - - - - - - - - - - - - - - - - - - -
ПостояннаяВыравнивание
fa_leftfa_left example
fa_centerfa_center example
fa_rightfa_right example
-

-

Синтаксис:

-

draw_set_halign(halign);

- - - - - - - - - - - - - -
АргументТипОписание
halignГоризонтальное выравнивание ПостояннаяHorizontal alignment constant (from the table above).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_set_halign(fa_left);
- draw_text(100, 32, "Score: " + string(score));
- draw_set_halign(fa_right);
- draw_text(room_width - 100, 32, "Health: " + string(health));

-

Приведенный выше код нарисует две строки на одной линии, причем счет будет выровнен по левому краю, а здоровье - по правому.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_set_valign.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_set_valign.htm index b0edef911..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_set_valign.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_set_valign.htm @@ -1,87 +0,0 @@ - - - - - - draw_set_valign - - - - - - - - - - -

draw_set_valign

-

Эта функция используется для выравнивания текста по вертикальной оси, и изменение вертикального выравнивания изменит положение и направление, в котором будет рисоваться весь дальнейший текст. По умолчанию используется значение fa_top. Принимаются следующие константы:

- - - - - - - - - - - - - - - - - - - -
ПостояннаяВыравнивание
fa_topfa_top example
fa_middlefa_middle example
fa_bottomfa_bottom example
-

-

Синтаксис:

-

draw_set_valign(valign);

- - - - - - - - - - - - - -
АргументТипОписание
valignВыравнивание по вертикали ПостояннаяVertical alignment constant (from the table above).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_set_halign(fa_center);
- draw_set_valign(fa_middle);
- draw_text(100, 32, "Score: " + string(score));

-

Приведенный выше код нарисует оценку, центрированную по самому центру текста.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text.htm index 6d69212f8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text.htm @@ -1,70 +0,0 @@ - - - - - - draw_text - - - - - - - - - - - -

draw_text

-

С помощью этой функции вы можете нарисовать любую строку в любой позиции в пределах комнаты (для рисования вещественных чисел следует использовать функцию string() для преобразования их в текст). Для объединения строк можно использовать + (см. пример ниже), а также \n в строке для добавления разрыва строки, чтобы она рисовалась в несколько строк (информацию о том, как правильно форматировать строку и какие управляющие символы можно использовать, смотрите здесь). Цвет текста и альфа определяются текущими базовыми значениями альфа и цвета, заданными в параметрах draw_set_alpha() и draw_set_colour().

-

ПРИМЕЧАНИЕ: Фактическое положение текста будет зависеть от значений выравнивания, заданных параметрами draw_set_halign() и draw_set_valign().

-

-

Синтаксис:

-

draw_text(x, y, string);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate of the drawn string.
yThe y coordinate of the drawn string.
stringThe string to draw.
-

-

Возвращается:

-

-

-

Пример:

-

draw_text(x, y, "Hello, " + global.Name + "!\nI hope you are well!");

-

Приведенный выше код нарисует строку в позиции экземпляра x/y, которая будет использовать строку, хранящуюся в глобальной переменной "Name", и разделит ее на две строки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_colour.htm index c1f0d4bcf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_colour.htm @@ -1,94 +0,0 @@ - - - - - - draw_text_colour - - - - - - - - - - - -

draw_text_colour

-

Эта функция будет рисовать текст аналогично функции draw_text() только теперь вы можете выбрать цвета для окрашивания текста, а также значение альфа, и эти новые значения будут использоваться вместо - базового цвета рисунка и альфа-значения.

-

ПРИМЕЧАНИЕ: Градиентное смешивание недоступно для HTML5, если не включен WebGL, хотя вы все равно можете задать цвета смешивания, и шрифт будет смешиваться с первым заданным цветом. Однако при таком смешивании создается дубликат - шрифта, который затем сохраняется в кэше и используется по мере необходимости, что далеко не оптимально, а если вы используете многократное изменение цвета, это замедлит производительность вашей игры. Вы можете установить размер кэша шрифтов, чтобы попытаться ограничить это в случае необходимости - используя функцию font_set_cache_size().

-

-

Синтаксис:

-

draw_text_colour(x, y, string, c1, c2, c3, c4, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate of the drawn string.
yThe y coordinate of the drawn string.
stringThe string to draw.
c1The colour for the top left of the drawn text.
c2The colour for the top right of the drawn text.
c3The colour for the bottom right of the drawn text.
c4The colour for the bottom left of the drawn text.
alphaThe alpha for the text.
-

-

Возвращается:

-

-

-

Пример:

-

draw_set_colour(c_white);
draw_text(100, 100, "Health");
draw_text_colour(100, 200, string(health), c_lime, c_lime, c_green, c_green, 1);

-

Приведенный выше код рисует два участка текста на одной линии, причем первый текст рисуется белым (так как это базовый цвет рисунка), а второй текст рисуется с градиентом от лаймово-зеленого к обычному зеленому.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_ext.htm index 41f65e549..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_ext.htm @@ -1,80 +0,0 @@ - - - - - - draw_text_ext - - - - - - - - - - - -

draw_text_ext

-

Эта функция будет рисовать текст аналогично функции draw_text() только теперь вы можете задать пространство между каждой строкой текста - если текст занимает более одной строки - и ограничить ширину (в пикселях) - строки в строке, так что если любая строка превысит это значение, GameMaker автоматически разделит текст на следующую строку в ближайшем доступном месте (если в тексте нет свободного места, он превысит это максимальное значение). - значение ширины). Обратите внимание, что любое белое пространство в начале строки будет вычеркнуто перед разбором для отрисовки. Также обратите внимание, что при значении -1 для аргумента разделения строк по умолчанию будет установлено разделение, основанное на значении - высоты символа "M" в выбранном шрифте.

-

-

Синтаксис:

-

draw_text_ext(x, y, string, sep, w);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate of the drawn string.
yThe y coordinate of the drawn string.
stringThe string to draw.
sepThe distance in pixels between lines of text.
wThe maximum width in pixels of the string before a line break.
-

-

Возвращается:

-

-

-

Пример:

-

draw_text_ext(100, 50, keyboard_string, 3, 300);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_ext_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_ext_colour.htm index d712740bc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_ext_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_ext_colour.htm @@ -1,115 +0,0 @@ - - - - - - draw_text_ext_colour - - - - - - - - - - - -

draw_text_ext_colour

-

Эта функция представляет собой комбинацию базовой draw_text() функции с draw_text_ext() и draw_text_colour() позволяет задавать цвета градиента для текста, а также межстрочный интервал и максимальную ширину строки.

-

ПРИМЕЧАНИЕ Градиентное смешивание недоступно для HTML5, если не включен WebGL, хотя вы все равно можете задать цвета смешивания, и шрифт будет смешиваться с первым заданным цветом. Однако при таком смешивании создается дубликат шрифта, который затем сохраняется в кэше и используется при необходимости, что далеко не оптимально, а если вы используете многократное изменение цвета, это замедлит производительность вашей игры. Вы можете установить размер кэша шрифтов, чтобы попытаться ограничить это, если это необходимо, используя функцию font_set_cache_size().

-

-

Синтаксис:

-

draw_text_ext_colour(x, y, string, sep, w, c1, c2, c3, c4, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x coordinate of the drawn string.
yРеальноThe y coordinate of the drawn string.
stringСтрокаThe string to draw.
sepРеальноThe distance in pixels between lines of text.
wРеальноThe maximum width in pixels of the string before a line break.
c1ЦветThe colour for the top left of the drawn text.
c2ЦветThe colour for the top right of the drawn text.
c3ЦветThe colour for the bottom right of the drawn text.
c4ЦветThe colour for the bottom left of the drawn text.
alphaРеальноThe alpha for the text.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

draw_text_ext_colour(200, 200, keyboard_string, 5, 300, c_blue, c_blue, c_navy, c_navy, 1);

-

Приведенный выше код будет рисовать текст, который пользователь набирает на клавиатуре, разбивая его на новые строки каждый раз, когда длина строки превышает 300 пикселей. Код также будет поддерживать разделение в 5 пикселей между строками, если это произойдет. Каждая строка текста будет окрашена с помощью синего градиента: светло-синий вверху и темно-синий внизу.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_ext_transformed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_ext_transformed.htm index abfec1849..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_ext_transformed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_ext_transformed.htm @@ -1,91 +0,0 @@ - - - - - - draw_text_ext_transformed - - - - - - - - - - - -

draw_text_ext_transformed

-

Эта функция представляет собой комбинацию базовой draw_text() функции с draw_text_ext() и draw_text_transformed() позволяет масштабировать и поворачивать текст, сохраняя при этом определенный межстрочный интервал и максимальную ширину строки. Обратите внимание, что аргумент "ширина" основан на масштабе, равном 1, поэтому, если масштаб другой, это значение должно быть изменено - пропорционально. Например, если базовая ширина для переноса строки равна 300, а вы установили масштаб 2, то текст будет выглядеть неправильно, выходя за пределы заданной ширины. Вместо этого вам следовало бы установить ширину 150, чтобы компенсировать масштабирование.

-

-

Синтаксис:

-

draw_text_ext_transformed(x, y, string, sep, w, xscale, yscale, angle);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate of the drawn string.
yThe y coordinate of the drawn string.
stringThe string to draw.
sepThe distance in pixels between lines of text.
wThe maximum width in pixels of the string before a line break.
xscaleThe horizontal scale.
yscaleThe vertical scale.
angleThe angle of the text.
-

-

Возвращается:

-

-

-

Пример:

-

draw_set_halign(fa_center);
draw_set_valign(fa_middle); -
image_angle += 1;
draw_text_ext_transformed(room_width / 2, room_height / 2, keyboard_string, 10, 300, 2, 2, image_angle);

-

Приведенный выше код нарисует заданный текст в центре комнаты, с максимальной длиной строки 300 пикселей, расстоянием между каждой строкой 10 пикселей, вращающийся по кругу и масштабированный до удвоенного исходного размера.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_ext_transformed_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_ext_transformed_colour.htm index 7ab9c961c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_ext_transformed_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_ext_transformed_colour.htm @@ -1,117 +0,0 @@ - - - - - - draw_text_ext_transformed_colour - - - - - - - - - - - -

draw_text_ext_transformed_colour

-

Эта функция представляет собой комбинацию базовой draw_text() функции с draw_text_ext(), draw_text_transformed() и draw_text_colour() функциями. Как таковая, это наиболее общая из всех функций для рисования текста и дает большую гибкость при рисовании. Обратите внимание, что аргумент "ширина" - основан на масштабе, равном 1, поэтому если масштаб другой, это значение должно быть изменено пропорционально. Например, если базовая ширина для переноса строки равна 300, а масштаб установлен на 2, то текст будет выглядеть неправильно, выходя за заданную - ширину. Вместо этого вам следовало бы установить ширину 150, чтобы компенсировать масштабирование.

-

ПРИМЕЧАНИЕ: Градиентное смешивание недоступно для HTML5, если не включен WebGL, хотя вы все равно можете задать цвета смешивания, и шрифт будет смешиваться с первым заданным цветом. Однако при таком смешивании создается дубликат - шрифта, который затем сохраняется в кэше и используется по мере необходимости, что далеко не оптимально, а если вы используете многократное изменение цвета, это замедлит производительность вашей игры. Вы можете установить размер кэша шрифтов, чтобы попытаться ограничить это в случае необходимости - используя функцию font_set_cache_size().

-

-

Синтаксис:

-

draw_text_ext_transformed_colour(x, y, string, sep, w, xscale, yscale, angle, c1, c2, c3, c4, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate of the drawn string.
yThe y coordinate of the drawn string.
stringThe string to draw.
sepThe distance in pixels between lines of text.
wThe maximum width in pixels of the string before a line break.
xscaleThe horizontal scale.
yscaleThe vertical scale.
angleThe angle of the text.
c1The colour for the top left of the drawn text.
c2The colour for the top right of the drawn text.
c3The colour for the bottom right of the drawn text.
c4The colour for the bottom left of the drawn text.
alphaThe alpha for the text.
-

-

Возвращается:

-

-

-

Пример:

-

draw_set_halign(fa_center);
draw_set_valign(fa_middle); -
draw_text_ext_transformed_colour(200, 200, "My name is" + global.name +".", 20, 200, 0.5, 0.5, 180, c_blue, c_blue, c_navy, c_navy, 1);

-

В результате будет нарисован заданный текст с нисходящим градиентом от синего к темно-синему, в позиции (200,200) в комнате, повернутый вверх ногами и с размером шрифта вдвое меньше обычного. Между каждой линией должно быть 20 пикселей, если нарисовано более - одна линия, а максимальная ширина каждой линии составляет 200 пикселей.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_transformed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_transformed.htm index bd80a3b0d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_transformed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_transformed.htm @@ -1,83 +0,0 @@ - - - - - - draw_text_transformed - - - - - - - - - - - -

draw_text_transformed

-

Эта функция рисует текст аналогично функции draw_text() только теперь вы можете выбрать масштаб текста по горизонтальной или вертикальной оси (эффективно растягивая или сжимая его), а также заставить - GameMaker рисовать его под углом (где 0 - нормальный, а каждый градус больше 0 поворачивает текст против часовой стрелки).

-

-

Синтаксис:

-

draw_text_transformed(x, y, string, xscale, yscale, angle);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate of the drawn string.
yThe y coordinate of the drawn string.
stringThe string to draw.
xscaleThe horizontal scale (default 1).
yscaleThe vertical scale(default 1).
angleThe angle of the text.
-

-

Возвращается:

-

-

-

Пример:

-

draw_set_halign(fa_center);
draw_set_valign(fa_middle); -
image_angle += 1;
draw_text_transformed(room_width / 2, room_height / 2, "GAME OVER!", 2, 2, image_angle);

-

Приведенный выше код нарисует заданный текст в центре комнаты, вращаясь по кругу и масштабируя его до удвоенного исходного размера.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_transformed_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_transformed_colour.htm index 35cd2ef98..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_transformed_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Text/draw_text_transformed_colour.htm @@ -1,106 +0,0 @@ - - - - - - draw_text_transformed_colour - - - - - - - - - - - -

draw_text_transformed_colour

-

Эта функция представляет собой комбинацию базовой draw_text() функции с draw_text_transformed() и draw_text_colour() позволяет масштабировать и поворачивать текст, а также окрашивать его градиентной заливкой и изменять значение альфа, игнорируя базовые настройки альфа и цвета для рисования.

-

ПРИМЕЧАНИЕ Градиентное смешивание недоступно для HTML5, если не включен WebGL, хотя вы все равно можете задать цвета смешивания, и шрифт будет смешиваться с первым заданным цветом. Однако при таком смешивании создается дубликат - шрифта, который затем сохраняется в кэше и используется по мере необходимости, что далеко не оптимально, а если вы используете многократное изменение цвета, это замедлит производительность вашей игры. Вы можете установить размер кэша шрифтов, чтобы попытаться ограничить это в случае необходимости - используя функцию font_set_cache_size().

-

-

Синтаксис:

-

draw_text_transformed_colour(x, y, string, xscale, yscale, angle, c1, c2, c3, c4, alpha);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate of the drawn string.
yThe y coordinate of the drawn string.
stringThe string to draw.
xscaleThe horizontal scale.
yscaleThe vertical scale.
angleThe angle of the text.
c1The colour for the top left of the drawn text.
c2The colour for the top right of the drawn text.
c3The colour for the bottom right of the drawn text.
c4The colour for the bottom left of the drawn text.
alphaThe alpha for the text.
-

-

Возвращается:

-

-

-

Пример:

-

draw_set_halign(fa_center);
draw_set_valign(fa_middle); -
image_angle += 1;
draw_text_transformed_colour(room_width / 2, room_height / 2, keyboard_string, 2, 2, image_angle, c_red, c_red, c_yellow, c_yellow, 0.5);

-

Приведенный выше код нарисует заданный текст в центре комнаты, вращаясь по кругу и масштабируя его до удвоенного исходного размера, с градиентом цвета от желтого к красному, а также с альфой 0,5.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/Textures.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/Textures.htm index 22f2c8396..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/Textures.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/Textures.htm @@ -1,69 +0,0 @@ - - - - - - Текстуры - - - - - - - - - - -

Текстуры

-

Следующие функции связаны с "текстурами", т.е. изображениями, которые хранятся в памяти VRAM для использования в качестве sprites или других объектов в вашей игре. Первый набор функций используется для получения информации о конкретных изображениях, их положении или размере на странице текстур, а также для установки определенных характеристик текстур:

- -

-

GameMaker также имеет ряд функций, связанных с управлением VRAM, связанным с отдельными текстурами, а также целыми группами текстур:

- -

-

Наконец, у нас есть следующие функции, которые в основном используются для отладки проекта и обеспечения эффективного использования текстурной памяти:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/draw_texture_flush.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/draw_texture_flush.htm index 6aee2b101..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/draw_texture_flush.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/draw_texture_flush.htm @@ -1,52 +0,0 @@ - - - - - - draw_texture_flush - - - - - - - - - - - -

draw_texture_flush

-

С помощью этой функции вы можете удалить все текстуры из видеопамяти, после чего они будут перезагружены при первом использовании. Это единственный эффективный способ управления видеопамятью, когда у вас есть несколько текстурных страниц для игры, и вы должны промывать текстурную память - между уровнями игры и организовывать графику с помощью функции группы текстур, чтобы обеспечить использование минимального количества текстур.

-

Стоит отметить, что по умолчанию на всех объектах текстурные страницы будут загружаться только по мере необходимости, и вы можете использовать различные функции prefetch и flush для sprites (можно найти здесь). - для управления процессом, а также эту функцию.

-

-

Синтаксис:

-

draw_texture_flush();

-

-

Возвращается:

-

-

-

Пример:

-

draw_texture_flush();

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_debug_messages.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_debug_messages.htm index 5ef5e1052..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_debug_messages.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_debug_messages.htm @@ -1,63 +0,0 @@ - - - - - - texture_debug_messages - - - - - - - - - - -

texture_debug_messages

-

Эта функция может быть использована для включения или отключения отладочных сообщений текстуры. Если функция включена (установлено значение true), в окно вывода будет отправляться дополнительная информация об использовании страницы текстуры. Установите значение false, чтобы снова отключить этот вывод.

-

-

Синтаксис:

-

texture_debug_messages(enable);

- - - - - - - - - - - -
АргументТипОписание
enableEnable or disable the texture debug messages
-

-

Возвращается:

-

-

-

Пример:

-

if global.debug
- {
-     texture_debug_messages(true);
- }

-

Приведенный выше код проверит значение глобальной переменной, и если она имеет значение true, то отладочные сообщения текстуры будут включены.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_flush.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_flush.htm index e16854c74..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_flush.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_flush.htm @@ -1,66 +0,0 @@ - - - - - - texture_flush - - - - - - - - - - -

texture_flush

-

Эта функция может использоваться для "прошивки" текстурной страницы или группы текстурных страниц, т.е. для удаления их из VRAM, когда они больше не нужны. Вы можете указать уникальный ID текстурной страницы (возвращаемый функциями texturegroup_* ), чтобы прошить одну страницу, или указать имя группы текстур (определенное в редакторе групп текстур), чтобы прошить все текстурные страницы в группе.

-

-

Синтаксис:

-

texture_flush(tex_id);

- - - - - - - - - - - - - -
АргументТипОписание
tex_idУказатель текстуры или строкаThe texture page pointer or a texture group name (a string)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _tex_array = texturegroup_get_textures( "MainMenu");
- for (var i = 0; i < array_length(_tex_array); ++i)
- {
-     texture_flush(_tex_array[i]);
- }

-

Приведенный выше код прошьет все страницы текстур под группой текстур "MainMenu".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_height.htm index 272ade91a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_height.htm @@ -1,63 +0,0 @@ - - - - - - texture_get_height - - - - - - - - - - - -

texture_get_height

-

Возвращает высоту текстуры с заданным id, который всегда является значением в диапазоне 0 - 1. Это значение можно использовать при отображении текстур на модели или примитивы.

-

-

Синтаксис:

-

texture_get_height(tex);

- - - - - - - - - - - - - -
АргументТипОписание
texУказатель текстурыThe texture page asset pointer to use
-

-

Возвращается:

-

Real

-

-

Пример:

-

tex_h = texture_get_height(surface_get_texture(global.Surf));

-

Приведенный выше код получит высоту текстуры, взятой из ранее созданной поверхности.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_texel_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_texel_height.htm index 36c107960..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_texel_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_texel_height.htm @@ -1,65 +0,0 @@ - - - - - - texture_get_texel_height - - - - - - - - - - - -

texture_get_texel_height

-

Тексель, или элемент текстуры, - это фундаментальная единица текстурного пространства, используемая в компьютерной графике. Текстуры представлены массивами текселей, так же как изображения представлены массивами пикселей, и эта функция возвращает высоту одного текселя из текстурной страницы используемого актива изображения.

-

-

Синтаксис:

-

texture_get_texel_height(tex);

- - - - - - - - - - - - - -
АргументТипОписание
texУказатель текстурыThe texture page asset pointer to use
-

-

Возвращается:

-

Real

-

-

Пример:

-

var tex = sprite_get_texture(sprite_index, 0);
- tex_w = texture_get_texel_width(tex);
- tex_h = texture_get_texel_height(tex);

-

Приведенный выше код получит ширину и высоту текселя текстуры, взятой из актива sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_texel_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_texel_width.htm index 1af6c1af1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_texel_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_texel_width.htm @@ -1,65 +0,0 @@ - - - - - - texture_get_texel_width - - - - - - - - - - - -

texture_get_texel_width

-

Тексель, или элемент текстуры, - это фундаментальная единица текстурного пространства, используемая в компьютерной графике. Текстуры представлены массивами текселей, так же как изображения представлены массивами пикселей, и эта функция возвращает ширину одного текселя из текстурной страницы используемого актива изображения.

-

-

Синтаксис:

-

texture_get_texel_width(tex);

- - - - - - - - - - - - - -
АргументТипОписание
texУказатель текстурыThe texture page asset pointer to use
-

-

Возвращается:

-

Real

-

-

Пример:

-

var tex = sprite_get_texture(sprite_index, 0);
- tex_w = texture_get_texel_width(tex);
- tex_h = texture_get_texel_height(tex);

-

Приведенный выше код получит ширину и высоту текселя текстуры, взятой из актива sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_uvs.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_uvs.htm index 3c224ef7c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_uvs.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_uvs.htm @@ -1,79 +0,0 @@ - - - - - - texture_get_uvs - - - - - - - - - - - -

texture_get_uvs

-

Эта функция возвращает одномерный массив с 4 элементами, представляющими УФ-координаты для заданного указателя текстуры, заполняя массив следующими значениями:

-
    -
  • [0] = левый
  • -
  • [1] = верх
  • -
  • [2] = право
  • -
  • [3] = низ
  • -
  • [4] = количество пикселей, которые компилятор активов обрезал с левой стороны sprites (только для активовsprite ).
  • -
  • [5] = количество пикселей, которые компилятор активов обрезал с верхней стороны sprites (только для активовsprite ).
  • -
  • [6] = нормализованный процент пиксельных данных от исходной ширины sprites, сохраненных на странице текстуры (только для активовsprite ).
  • -
  • [7] = нормализованный процент пиксельных данных от исходной высоты sprites, сохраненных на странице текстуры (только для активовsprite ).
  • -
-

Затем это значение можно использовать в других функциях рисования, особенно в общих функциях 3D и некоторых функциях 2D примитивов, а также в функциях шейдера. Если вам нужен UVS для sprite, то вы можете использовать sprite_get_uvs() и для шрифта, font_get_uvs().

-

-

Синтаксис:

-

texture_get_uvs(texid)

- - - - - - - - - - - - - -
АргументТипОписание
texidТекстураThe texture pointer to get the UVS for
-

-

Возвращается:

-

Array (4 - 8 elements)

-

-

Пример:

-

var _tex = surface_get_texture(surf_back);
- var _uvs = texture_get_uvs(tex);
- var _uvs_left = _uvs[0];
- var _uvs_top = _uvs[1];
- var _uvs_right = _uvs[2];
- var _uvs_bottom = _uvs[3];

-

Приведенный выше код сначала извлекает текстуру поверхности, хранящуюся в surf_back, а затем получает UV-координаты для этой текстуры. Затем из полученного массива извлекаются левая, верхняя, правая и нижняя UV-координаты и сохраняются в локальных переменных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_width.htm index ae27cdfbf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_get_width.htm @@ -1,63 +0,0 @@ - - - - - - texture_get_width - - - - - - - - - - - -

texture_get_width

-

Возвращает ширину текстуры с заданным id, который всегда является значением в диапазоне 0 - 1. Это значение можно использовать при отображении текстур на модели или примитивы.

-

-

Синтаксис:

-

texture_get_width(tex);

- - - - - - - - - - - - - -
АргументТипОписание
texУказатель текстурыThe texture page asset pointer to use
-

-

Возвращается:

-

Real

-

-

Пример:

-

tex_w = texture_get_width(sprite_get_texture(spr_Model_tex, 0));

-

Приведенный выше код получит ширину текстуры, взятой из актива sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_global_scale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_global_scale.htm index a4330a8b4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_global_scale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_global_scale.htm @@ -1,70 +0,0 @@ - - - - - - texture_global_scale - - - - - - - - - - -

texture_global_scale

-

Эта функция позволяет вам управлять масштабированием текстурных страниц при загрузке из WAD-файла, который является частью конечного исполняемого файла вашей игры. Вводимое значение должно быть степенью двойки и будет работать так:

-
    -
  • Чтобы установить текстурные страницы в соотношении 1:1, используйте texture_global_scale(1)
  • -
  • Чтобы постоянно использовать половину текстур, используйте texture_global_scale(2)
  • -
  • Для их четвертования используйте texture_global_scale(4), и т.д..
  • -
-

Таким образом, вы можете лучше контролировать использование памяти текстурных страниц на платформах с низким уровнем памяти. Обратите внимание, что страницы текстур создаются по запросу из WAD, поэтому вы можете либо вызывать эту функцию в начале игры, чтобы загрузить все текстуры в масштабе, либо - можно вызывать ее в определенное время для загрузки определенных текстур, и в этом случае вы, вероятно, захотите вызвать функцию draw_texture_flush() перед вызовом этой функции, а затем использовать функции предварительной выборки, чтобы получить нужные - страницы текстур в память.

-

-

Синтаксис:

-

texture_global_scale(pow2integer);

- - - - - - - - - - - -
АргументТипОписание
pow2integerThe scale factor to use (1, no scale, 2, half scale, 4, quarter scale, etc...)
-

-

Возвращается:

-

-

-

Пример:

-

draw_texture_flush();
texture_global_scale(2); -
sprite_prefetch(spr_Trees); -

-

Приведенный выше код очистит все текстуры из памяти, затем установит масштабирование текстур на 2 (таким образом, страницы текстур будут вдвое меньше) и, наконец, предварительно получит страницу текстуры, в которой находится sprite "spr_Trees".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_is_ready.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_is_ready.htm index 6fec19429..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_is_ready.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_is_ready.htm @@ -1,70 +0,0 @@ - - - - - - texture_is_ready - - - - - - - - - - - -

texture_is_ready

-

Эта функция может быть использована для проверки того, была ли распакована и готова к использованию определенная текстурная страница или группа текстурных страниц была распакована и готова к использованию. Вы передаете уникальный ID текстурной страницы (как возвращается функциями texturegroup_* ) или строку ID текстурной группы (как определено в Texture Group Editor), и функция возвращает true, если они были распакованы, или false в противном случае.

-

-

Синтаксис:

-

texture_is_ready(tex_id);

- - - - - - - - - - - - - -
АргументТипОписание
tex_idУказатель текстуры или строкаThe texture page pointer or a texture group name (a string)
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var _tex_array = texturegroup_get_textures( "MainMenu");
- for (var i = 0; i < array_length(_tex_array); ++i)
- {
-     if !texture_is_ready(_tex_array[i])
-     {
-         texture_prefetch(_tex_array[i]);
-     }
- }

-

Приведенный выше код получит идентификаторы текстурных страниц для группы текстур "MainMenu", затем проверит, распакованы ли они, и если нет, то они будут префетишированы в VRAM.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_prefetch.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_prefetch.htm index dd12a35ce..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_prefetch.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_prefetch.htm @@ -1,66 +0,0 @@ - - - - - - texture_prefetch - - - - - - - - - - -

texture_prefetch

-

Эта функция может использоваться для "предварительной выборки" текстурной страницы или группы текстурных страниц, то есть для загрузки их в VRAM по мере необходимости. Вы предоставляете уникальный ID текстурной страницы (возвращаемый функциями texturegroup_* ) для предварительной выборки одной страницы, или вы можете предоставить имя группы текстур (как определено в редакторе групп текстур) для предварительной выборки всех текстурных страниц в группе.

-

-

Синтаксис:

-

texture_prefetch(tex_id);

- - - - - - - - - - - - - -
АргументТипОписание
tex_idУказатель текстуры или строкаThe texture page pointer or a texture group name (a string)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _tex_array = texturegroup_get_textures( "MainMenu");
- for (var i = 0; i < array_length(_tex_array); ++i)
- {
-     texture_prefetch(_tex_array[i]);
- }

-

Приведенный выше код будет предварительно получать все страницы текстур под группой текстур "MainMenu".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_set_stage.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_set_stage.htm index 46602b78e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_set_stage.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texture_set_stage.htm @@ -1,72 +0,0 @@ - - - - - - texture_set_stage - - - - - - - - - - -

texture_set_stage

-

Эта функция задаст заданному "слоту" сцены текстуру, которая будет использоваться. Количество доступных "слотов" сцены зависит от платформы, под которую вы компилируете, максимум 8 для Windows, Mac и Linux, но на более дешевых устройствах Android (например) это количество может быть всего 2. Стоит также отметить, что первый слот сцены (1) всегда автоматически используется GameMaker.

-

ПРИМЕЧАНИЕ: Эта функция ничего не делает вне контекста запущенного шейдера! Более подробную информацию смотрите в разделе Шейдеры .

-

-

Синтаксис:

-

texture_set_stage(stage, tex);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
stageРеальноThe texture "slot" to use.
texУказатель текстурыThe texture to use.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

glassshader_bgsampler = shader_get_sampler_index(GlassShader, "s_BackgroundSampler")
- spr = sprite_get_texture(sprite_index, 0);
- shader_set(GlassShader);
- texture_set_stage(glassshader_bgsampler, spr);
- shader_reset();

-

Приведенный выше код получит хэндл для сэмплера в шейдере с индексом "GlassShader", а затем установит константу этого шейдера на заданную текстуру sprite.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_fonts.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_fonts.htm index a56fe7ee3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_fonts.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_fonts.htm @@ -1,67 +0,0 @@ - - - - - - texturegroup_get_fonts - - - - - - - - - - - -

texturegroup_get_fonts

-

С помощью этой функции вы можете получить индекс шрифта каждого из шрифтов, назначенных текстурным страницам в заданной группе текстур. Вы передаете строку ID текстурной группы (как определено в редакторе текстурных групп), и функция возвращает массив 1D, каждая запись которого содержит индекс шрифта для ресурса шрифта. Если функция не работает - т.е. задана неверная группа, или группа не имеет назначенной ей текстуры - то массив будет пуст (длина 0).

-

-

Синтаксис:

-

texturegroup_get_fonts(tex_id);

- - - - - - - - - - - - - -
АргументТипОписание
texСтрокаThe name of the texture group to check (a string)
-

-

Возвращается:

-

Array

-

-

Пример:

-

var _tex_array = texturegroup_get_fonts( "MainMenu");
- for (var i = 0; i < array_length(_tex_array); ++i)
- {
-     show_debug_message("Font " + string(i) + " Index:" + string(tex_array[i]));
- }

-

Приведенный выше код получит индексы шрифтов для группы текстур "MainMenu", а затем отобразит эти идентификаторы в окне консольного вывода.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_names.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_names.htm index 706479764..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_names.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_names.htm @@ -1,50 +0,0 @@ - - - - - - texturegroup_get_names - - - - - - - - - - -

texturegroup_get_names

-

This function returns an array containing the names of all Texture Groups contained in the game.

-

 The texture group that GameMaker adds the fallback texture to is included. Empty texture groups may not be included as they're filtered by the asset compiler.

-

 

-

Syntax:

-

texturegroup_get_names()

-

 

-

Returns:

-

Array of String

-

 

-

Example:

-

var _arr_names = texturegroup_get_names();
- show_debug_message("Texture Groups:\n--------------");
- array_foreach(_arr_names, show_debug_message);

-

The above code gets the names of all texture groups using texturegroup_get_names and lists them in the debug output.

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_sprites.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_sprites.htm index 5f1c505d2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_sprites.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_sprites.htm @@ -1,67 +0,0 @@ - - - - - - texturegroup_get_sprites - - - - - - - - - - - -

texturegroup_get_sprites

-

С помощью этой функции вы можете получить sprite индекс каждой из sprites, назначенных текстурным страницам в заданной текстурной группе. Вы вводите строку ID группы текстур (как определено в редакторе групп текстур), и функция возвращает одномерный массив, каждая запись которого содержит индекс sprite для ресурса sprite. Если функция не работает - т.е. указана неверная группа, или группа не имеет текстуры, назначенной ей - то массив будет пуст (длина 0).

-

-

Синтаксис:

-

texturegroup_get_sprites(tex_id);

- - - - - - - - - - - - - -
АргументТипОписание
texСтрокаThe name of the texture group to check (a string)
-

-

Возвращается:

-

Array

-

-

Пример:

-

var _tex_array = texturegroup_get_sprites( "MainMenu");
- for (var i = 0; i < array_length(_tex_array); ++i)
- {
-     show_debug_message("Sprite " + string(i) + " Index:" + string(tex_array[i]));
- }

-

Приведенный выше код получит индексы sprite для группы текстур "MainMenu", а затем отобразит эти идентификаторы в окне консольного вывода.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_textures.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_textures.htm index 8dbb4a98c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_textures.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_textures.htm @@ -1,70 +0,0 @@ - - - - - - texturegroup_get_textures - - - - - - - - - - - -

texturegroup_get_textures

-

Эта функция может использоваться для получения идентификаторов текстурных страниц отдельных страниц, составляющих группу текстур. Вы передаете строку ID группы текстур (как определено в редакторе групп текстур), и функция возвращает массив 1D, где каждая запись в массиве - это ID одной страницы текстуры. Если функция не работает - т.е. указана неверная группа, или группа не имеет назначенной ей текстуры - массив будет пуст (длина 0).

-

-

Синтаксис:

-

texturegroup_get_textures(tex_id);

- - - - - - - - - - - - - -
АргументТипОписание
tex_idСтрокаThe name of the texture group to check (a string)
-

-

Возвращается:

-

Array of Texture Pointers

-

-

Пример:

-

var _tex_array = texturegroup_get_textures( "MainMenu");
- for (var i = 0; i < array_length(_tex_array); ++i)
- {
-     if texture_is_ready(_tex_array[i])
-     {
-         texture_prefetch(_tex_array[i]);
-     }
- }

-

Приведенный выше код получит идентификаторы текстурных страниц для группы текстур "MainMenu", затем проверит, распакованы ли они, и если да, то поместит их в VRAM.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_tilesets.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_tilesets.htm index 8d54695e7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_tilesets.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Textures/texturegroup_get_tilesets.htm @@ -1,67 +0,0 @@ - - - - - - texturegroup_get_tilesets - - - - - - - - - - - -

texturegroup_get_tilesets

-

С помощью этой функции вы можете получить индекс тайлсета каждого из тайлсетов, назначенных текстурным страницам в данной группе текстур. Вы передаете строку ID текстурной группы (как определено в редакторе текстурных групп), и функция возвращает одномерный массив, каждая запись которого содержит индекс тайлсета для ресурса тайлсета. Если функция не работает - т.е. указана неверная группа, или группа не имеет текстуры, назначенной ей - то массив будет пуст (длина 0).

-

-

Синтаксис:

-

texturegroup_get_tilesets(tex_id);

- - - - - - - - - - - - - -
АргументТипОписание
texСтрокаThe name of the texture group to check (a string)
-

-

Возвращается:

-

Array

-

-

Пример:

-

var _tex_array = texturegroup_get_tilesets( "MainMenu");
- for (var i = 0; i < array_length(_tex_array); ++i)
- {
-     show_debug_message("Tileset " + string(i) + " Index:" + string(tex_array[i]));
- }

-

Приведенный выше код получит индексы тайлсета для группы текстур "MainMenu", а затем отобразит эти идентификаторы в окне консольного вывода.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/Videos.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/Videos.htm index 1c7bb48a7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/Videos.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/Videos.htm @@ -1,112 +0,0 @@ - - - - - - - Воспроизведение видео - - - - - - - - - - - -

Воспроизведение видео

-

Как воспроизводить видео?

-

Выполните следующие шаги, чтобы загрузить видео во время выполнения и воспроизвести его:

-
    -
  • Добавьте видеофайл в каталог Included Files(/datafiles ) вашего проекта.
  • -
  • Загрузите видео с помощью video_open(). -
      -
    • В качестве альтернативы загрузите видео из URL-адреса.
    • -
    -
  • -
  • Нарисуйте ее в событии Draw, используя video_draw(). -
      -
    • Эта функция рисует видео на внутренней поверхности, которую она возвращает как часть своего возвращаемого массива.
    • -
    • Вы должны нарисовать эту поверхность вручную с помощью draw_surface(), чтобы видео появилось. -
        -
      • Для рисования YUV-видео потребуются дополнительные шаги.
      • -
      -
    • -
    -
  • -
  • Когда видео закончится, удалите его из памяти, вызвав video_close(). - -
  • -
-

Видеокодеки и лицензирование

-

GameMaker не поставляется с какими-либо кодеками и использует кодеки, присутствующие на платформе, на которой работает игра. Это означает, что ваше видео должно быть закодировано в формате, который может быть декодирован на целевой платформе (платформах).

-

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

-

Обратите внимание, что видеоформаты (такие как .mp4, .avi, .mkv и т.д.) - это просто контейнеры, в которые упакованы видео- и аудиопотоки, оба из которых могут быть закодированы отдельно и могут требовать отдельных лицензий.

-

Для распространения на консольных платформах уточните у своего представителя, какие форматы вам разрешено использовать без необходимости платить дополнительные лицензионные сборы.

-

Форматы

-

Форматы видео, которые вы сможете загружать и воспроизводить в своей игре, будут зависеть от вашей целевой платформы и кодеков, которые поддерживаются на этой платформе.

-

Функции

-

Вы можете загружать, воспроизводить и манипулировать видеофайлами во время выполнения программы, используя следующие функции:

- -

-

Следующие функции используются для получения информации о текущем загруженном видео:

- -

Асинхронные обратные вызовы

-

Событие Async Social срабатывает на указанных ниже этапах, при этом ключ "type" в его карте async_load устанавливается на заданное значение:

-
    -
  • "video_start": Когда видео начинает воспроизводиться, то есть когда его статус меняется с video_status_preparing на video_status_playing.
  • -
  • "video_end": Когда видео заканчивается. Это не срабатывает, если видео установлено на цикл.
  • -
-

Вот пример события Async Social, прослушивающего обратные вызовы видео:

-

var _type = async_load[? "type"];
-
- if (_type == "video_start")
- {
-     obj_video.display_video = true;
- }
- else if (_type == "video_end")
- {
-     obj_video.display_video = false;
-     video_close();
- } -

-

Приведенный выше код считывает тип из карты async_load. Когда видео запускается, он устанавливает переменную в объекте в true, чтобы можно было отобразить видео.

-

Когда видео заканчивается, он устанавливает ту же переменную в false, а затем вызывает video_close(), чтобы удалить видео из памяти.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/YUV_Videos.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/YUV_Videos.htm index 22d6c54ce..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/YUV_Videos.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/YUV_Videos.htm @@ -1,132 +0,0 @@ - - - - - - - YUV Видео - - - - - - - - - - - -

YUV Видео

-

Платформы, использующие цветовой формат YUV для видео, требуют дополнительных действий для отрисовки этих видео. Это включает использование шейдера для рисования двух поверхностей на примитивном квадрокоптере.

-

Сначала прочитайте справочную страницу video_draw(), чтобы узнать, какие данные возвращает эта функция для YUV-видео, а затем продолжите чтение ниже, чтобы получить инструкции по использованию этих данных для рисования видео.

-

Шейдер YUV

-

Создайте актив шейдера в своем проекте и замените его код Fragment Shader (.fsh) на следующий:

-
//
-// CUSTOM шейдер фрагмента для обработки YUV-контента
-//
-изменяющийся vec2 v_vTexcoord;
-изменяющийся vec4 v_vColour;
-равномерный сэмплер2D v_chroma;
-const float x = 1.164383;
-const float y = 1.138393;
-const float z = 1.138393;
-const vec3 src_bias = vec3(16.0 / 255.0, 128.0 / 255.0, 128.0 / 255.0);
-const mat3 src_xform = mat3(1.00000000 * x, 0.00000000 * y, 1.57480000 * z,
-                            1.00000000 * x, -0.18732427 * y, -0.46812427 * z,
-			    1.00000000 * x, 1.85560000 * y, 0.00000000 * z);
-void main()
-{
-    float yy = texture2D(gm_BaseTexture, vec2(v_vTexcoord.x, v_vTexcoord.y)).r;
-    vec2 cbcr = texture2D(v_chroma, vec2(v_vTexcoord.x, v_vTexcoord.y)).rg;
-    vec3 yuv = vec3(yy, cbcr);
-    yuv -= src_bias;
-    yuv *= src_xform;
-    gl_FragColor = vec4(yuv, 1.0);
-}
-  
-
-

Получить пробник

-

В событии Create вашего объекта получите ID сэмплера шейдера v_chroma, только если видео является YUV:

-
var _format = video_get_format();
-if (_format == video_format_yuv)
-{
-    videochromasampler = shader_get_sampler_index(shader_YUV, "v_chroma");
-}
-
-

Нарисованное видео

-

В событии Draw вашего объекта вызовите video_draw(), и если первая позиция массива равна 0 (это означает, что видео воспроизводится), отрисуйте видео.

-

В приведенном ниже коде мы используем оператор switch в функции video_get_format(). Если видео использует формат RGBA, то просто рисуется поверхность в позиции [1] массива.

-

Если видео использует формат YUV, шейдер рисует две поверхности (в позициях [1] и [2]) на примитиве quad.

-
var _data = video_draw();
-if(_data[0] == 0)
-{
-	switch(video_get_format())
-	{
-		case video_format_rgba:
-			var _surf = _data[1];
-			draw_surface(_surf,0,0);
-		break;
-	
-		// #### YUV ЧАСТЬ ЗДЕСЬ ####
-		case video_format_yuv:
-			var _surf = _data[1];
-			var _chromasurf = _data[2];
-			if(surface_exists(_surf) and surface_exists(_chromasurf))
-			{
-				shader_set(shader_YUV);
-			
-				var _tex_id = surface_get_texture(_surf);
-				var _chroma_tex_id = surface_get_texture(_chromasurf);
-				texture_set_stage(videochromasampler, _chroma_tex_id);
-				gpu_set_texfilter(false);
-			
-				draw_primitive_begin_texture(pr_trianglestrip, _tex_id);
-			        draw_vertex_texture(0, 0, 0, 0, 0);
-				draw_vertex_texture(surface_get_width(_chromasurf), 0, 1, 0);
-				draw_vertex_texture(0, surface_get_height(_chromasurf), 0, 1);
-				draw_vertex_texture(surface_get_width(_chromasurf), surface_get_height(_chromasurf), 1, 1);
-				draw_primitive_end();
-			
-				gpu_set_texfilter(true);
-				shader_reset();
-			}
-		break;
-	}
-}
-  
-

Код под case video_format_yuv: делает следующее:

-
    -
  • Получает поверхность видео(_surf) и поверхность цветности(_chromasurf).
  • -
  • Убеждается в их существовании, используя surface_exist() -
      -
    • Устанавливает шейдер на shader_YUV (это наш недавно созданный шейдер YUV).
    • -
    • Получает текстуры обеих поверхностей
    • -
    • Присваивает текстуру поверхности chroma сэмплеру, который мы получили в событии Create
    • -
    • Отключает фильтрацию текстур
    • -
    • Начинает рисовать примитив треугольной полосы с присвоенной ему текстурой видеоповерхности
    • -
    • Рисует прямоугольник для покрытия видеоповерхности, использует ширину и высоту поверхности цветности для этого прямоугольника
    • -
    • Завершает примитив
    • -
    • Вновь включает фильтрацию текстуры и сбрасывает шейдер
    • -
    -
  • -
-

Здесь основная видеоповерхность рисуется примитивом, а поверхность цветности накладывается на нее шейдером. Именно по этой причине текстура поверхности цветности была передана в шейдер через сэмплер.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_close.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_close.htm index 7300272ae..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_close.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_close.htm @@ -1,52 +0,0 @@ - - - - - - - video_close - - - - - - - - - - - -

video_close

-

Эта функция закрывает загруженный в данный момент видеофайл. Убедитесь, что эта функция вызывается только после вызова video_open(), иначе она ничего не сделает.

-

-

Синтаксис:

-

video_close();

-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (keyboard_check_pressed(vk_escape))
- {
-     video_close();
- }

-

Приведенный выше код закрывает видео при нажатии клавиши Escape.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_enable_loop.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_enable_loop.htm index a42ac0b15..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_enable_loop.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_enable_loop.htm @@ -1,65 +0,0 @@ - - - - - - - video_enable_loop - - - - - - - - - - - -

video_enable_loop

-

Эта функция включает или выключает зацикливание для текущего загруженного видео. Установите аргумент enable в true, чтобы включить зацикливание, и false, чтобы отключить его.

-

По умолчанию зацикливание отключено.

-

-

Синтаксис:

-

video_enable_loop(enable);

- - - - - - - - - - - - - -
АргументТипОписание
enableБулевоWhether to enable (true) или отключить(false) зацикливание
-

-

Возвращается:

-

N/A

-

-

Пример:

-

video_open("Loading.mp4");
- video_enable_loop(true);

-

Приведенный выше код загружает видео и включает его зацикливание.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_duration.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_duration.htm index 6ed335574..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_duration.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_duration.htm @@ -1,64 +0,0 @@ - - - - - - - video_get_duration - - - - - - - - - - - -

video_get_duration

-

Эта функция возвращает длительность текущего загруженного видео, в миллисекундах.

-

-

Синтаксис:

-

video_get_duration();

-

-

Возвращается:

-

Real

-

-

Пример:

-

if (keyboard_check_pressed(vk_right))
- {
-     var _video_position = video_get_position();
-     _video_position += 2000;
-
-     if (_video_position < video_get_duration()) 
-     {
-         video_seek_to(_video_position);
-     }
-     else
-     {
-         video_close();
-     }
- } -

-

Приведенный выше код перемещает воспроизводимое видео на 2 секунды вперед при нажатии клавиши со стрелкой вправо, и новая позиция меньше длительности видео. Однако если она не укладывается в длительность, видео закрывается.

-

В этом примере video_get_duration() используется в условии, чтобы проверить, меньше ли новая позиция, чем возвращенная длительность.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_format.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_format.htm index 124beec47..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_format.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_format.htm @@ -1,68 +0,0 @@ - - - - - - - video_get_format - - - - - - - - - - - -

video_get_format

-

Эта функция возвращает формат цвета текущего загруженного видео. Это может быть любая из следующих констант:

- - - - - - - - - - - - - - - - - - -
Формат видео Постоянный
ПостояннаяОписание
video_format_rgbaВидеоповерхность использует цветовую модель RGBA
video_format_yuvВидеоповерхность использует цветовую модель YUV
-

Windows, macOS, Opera GX, Android, iOS и HTML5 используют модель RGBA для видео. Все остальные платформы используют модель YUV.

-

Поскольку методы рисования для RGBA и YUV видео отличаются, возвращаемое значение этой функции может быть использовано для запуска различного кода в зависимости от формата воспроизводимого видео. Пример приведен в разделе Draw Video.

-

-

Синтаксис:

-

video_get_format();

-

-

Возвращается:

-

Video Format Constant

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_position.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_position.htm index c27d1cb76..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_position.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_position.htm @@ -1,64 +0,0 @@ - - - - - - - video_get_position - - - - - - - - - - - -

video_get_position

-

Эта функция возвращает текущую позицию загруженного видео, в миллисекундах. Это показывает, сколько видео было воспроизведено из всей его продолжительности.

-

-

Синтаксис:

-

video_get_position();

-

-

Возвращается:

-

Real

-

-

Пример:

-

if (keyboard_check_pressed(vk_right))
- {
-     var _video_position = video_get_position();
-     _video_position += 2000;
-
-     if (_video_position < video_get_duration()) 
-     {
-         video_seek_to(_video_position);
-     }
-     else
-     {
-         video_close();
-     }
- } -

-

Приведенный выше код перемещает воспроизводимое видео на 2 секунды вперед при нажатии клавиши со стрелкой вправо, и новая позиция меньше длительности видео. Однако если она не укладывается в длительность, видео закрывается.

-

В этом примере video_get_position() используется для возврата позиции воспроизводимого видео.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_status.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_status.htm index 1abd9c56a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_status.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_status.htm @@ -1,93 +0,0 @@ - - - - - - - video_get_status - - - - - - - - - - - -

video_get_status

-

Эта функция возвращает статус текущего загруженного видео. Статус может быть любой из следующих констант:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Состояние видео Постоянная
ПостояннаяОписание
video_status_closedВ настоящее время видео не загружено, или видео было закрыто с помощью функции video_close()
video_status_preparingВидео находится в стадии подготовки и еще не начало воспроизводиться
video_status_playingВидео в настоящее время воспроизводится
video_status_pausedВидео приостанавливается (см. video_pause()).
-

-

Синтаксис:

-

video_get_status();

-

-

Возвращается:

-

Video Status Constant

-

-

Пример:

-

var _status = video_get_status();
-
- if (keyboard_check_pressed(vk_space))
- {
-     if (_status == video_status_playing)
-     {
-         video_pause();
-     }
-     else if (status == video_status_paused)
-     {
-         video_resume();
-     }
- } -

-

Приведенный выше код получает статус видео, а затем проверяет, нажал ли игрок кнопку Space. В этом случае он приостанавливает видео, если оно воспроизводится, и возобновляет его, если оно приостановлено.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_volume.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_volume.htm index 224f5dd97..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_volume.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_get_volume.htm @@ -1,56 +0,0 @@ - - - - - - - video_get_volume - - - - - - - - - - - -

video_get_volume

-

Эта функция возвращает громкость текущего загруженного видео, которая представляет собой значение между 0 и 1. Вы можете изменить громкость загруженного видео с помощью video_set_volume().

-

-

Синтаксис:

-

video_get_volume();

-

-

Возвращается:

-

Real

-

-

Пример:

-

/// Step event
- var _video_volume = video_get_volume();
-
- if (_video_volume < 1) {
-     _video_volume += 0.02;
-     video_set_volume(_video_volume);
- } -

-

Приведенный выше код будет выполняться в событии Step. Он получает значение громкости воспроизводимого видео и, если оно меньше 1, увеличивает его на 0,02, постепенно повышая громкость до максимального уровня.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_is_looping.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_is_looping.htm index 5d070009a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_is_looping.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_is_looping.htm @@ -1,51 +0,0 @@ - - - - - - - video_is_looping - - - - - - - - - - - -

video_is_looping

-

Эта функция возвращает, настроен ли загруженный в данный момент видеоролик на зацикливание(true) или нет(false). Вы можете установить видео на цикл, вызвав video_enable_loop().

-

-

Синтаксис:

-

video_is_looping();

-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if (video_is_looping()) {
-     obj_player.control_enabled = false;
- }

-

Приведенный выше код проверяет, не зацикливается ли загруженное видео, и в этом случае отключает элементы управления плеера, устанавливая пользовательскую переменную экземпляра в false.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_pause.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_pause.htm index cfb51a49f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_pause.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_pause.htm @@ -1,62 +0,0 @@ - - - - - - - video_pause - - - - - - - - - - - -

video_pause

-

Эта функция приостанавливает загруженный в данный момент видеофайл. Вы можете возобновить его, вызвав video_resume() в любое время после этой функции.

-

-

Синтаксис:

-

video_pause();

-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _status = video_get_status();
-
- if (keyboard_check_pressed(vk_space))
- {
-     if (_status == video_status_playing)
-     {
-         video_pause();
-     }
-     else if (status == video_status_paused)
-     {
-         video_resume();
-     }
- } -

-

Приведенный выше код получает статус видео, а затем проверяет, нажал ли игрок кнопку Space. В этом случае он приостанавливает видео, если оно воспроизводится, и возобновляет его, если оно приостановлено.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_resume.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_resume.htm index a6ed1d9df..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_resume.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_resume.htm @@ -1,62 +0,0 @@ - - - - - - - video_resume - - - - - - - - - - - -

video_resume

-

Эта функция возобновляет загрузку видеофайла, который загружен в данный момент. Перед вызовом этой функции он должен быть приостановлен с помощью video_pause().

-

-

Синтаксис:

-

video_resume();

-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _status = video_get_status();
-
- if (keyboard_check_pressed(vk_space))
- {
-     if (_status == video_status_playing)
-     {
-         video_pause();
-     }
-     else if (status == video_status_paused)
-     {
-         video_resume();
-     }
- } -

-

Приведенный выше код получает статус видео, а затем проверяет, нажал ли игрок кнопку Space. В этом случае он приостанавливает видео, если оно воспроизводится, и возобновляет его, если оно приостановлено.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_seek_to.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_seek_to.htm index d5c0ac491..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_seek_to.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/Videos/video_seek_to.htm @@ -1,79 +0,0 @@ - - - - - - - video_seek_to - - - - - - - - - - - -

video_seek_to

-

Эта функция позволяет выполнить поиск до заданной позиции в текущем загруженном видео. Вы указываете значение времени для поиска, которое выражается в миллисекундах.

-

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

-

-

Синтаксис:

-

video_seek_to(time);

- - - - - - - - - - - - - -
АргументТипОписание
timeРеальноThe time to seek to (in milliseconds).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (keyboard_check_pressed(vk_right))
- {
-     var _video_position = video_get_position();
-     _video_position += 2000;
-
-     if (_video_position < video_get_duration()) 
-     {
-         video_seek_to(_video_position);
-     }
-     else
-     {
-         video_close();
-     }
- } -

-

Приведенный выше код перемещает воспроизводимое видео на 2 секунды вперед при нажатии клавиши со стрелкой вправо, и новая позиция меньше длительности видео. Однако если она не укладывается в длительность, видео закрывается.

-

В этом примере video_seek_to() используется для поиска видео в новой позиции.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/draw_enable_drawevent.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/draw_enable_drawevent.htm index 9b7c16809..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/draw_enable_drawevent.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/draw_enable_drawevent.htm @@ -1,69 +0,0 @@ - - - - - - draw_enable_drawevent - - - - - - - - - - -

draw_enable_drawevent

-

С помощью этой функции вы можете включить (true) или выключить (false) событие рисования для всех экземпляров в игре, таким образом, вы получаете контроль над тем, как и когда рисуются объекты, что полезно, если вы хотите реализовать технику "пропуска кадров". Обратите внимание, что это не просто предотвращает рисование экземпляров на экране, а полностью подавляет событие draw, что означает, что следует быть осторожным, поскольку любая игровая логика, присутствующая в этом событии, также не будет запущена.

-

Важно понимать, что если вы вызовете эту функцию в самом начале игры, до того, как будет отрисован начальный кадр (т.е.: событие Create первого объекта в первой комнате игры), то окно игры не будет отрисовано. Это может быть полезно для многопользовательских проектов, требующих выделенного сервера, которому не нужно ничего рендерить, однако имейте в виду, что это не делает игру безголовой, так как GameMaker не поддерживает этого - поэтому вы не сможете запустить ее на сервере, не имеющем графического интерфейса.

-

-

Синтаксис:

-

draw_enable_drawevent(enable);

- - - - - - - - - - - -
АргументТипОписание
EnableSet to true или false.
-

-

Возвращается:

-

-

-

Пример:

-

frame_skip ++;
- if (frame_skip mod 5) == 0
- {
-     draw_enable_drawevent(true);
- }
- else
- {
-     draw_enable_drawevent(false);
- }

-

Приведенный выше код проверяет переменную и, если она возвращает значение true, включает событие draw, в противном случае событие draw отключается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/draw_flush.htm b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/draw_flush.htm index c3095012e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Drawing/draw_flush.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Drawing/draw_flush.htm @@ -1,54 +0,0 @@ - - - - - - draw_flush - - - - - - - - - - -

draw_flush

- -

С помощью этой функции можно очистить весь конвейер рисования. Эта функция предназначена только для отладки, и в целом ее не следует использовать без указания сотрудника службы поддержки YoYo Games. - так как беспорядочное использование приведет к серьезным проблемам с производительностью вашей игры.

- -

-

Синтаксис:

-

draw_flush();

-

-

-

Возвращается:

-

-

-

Пример:

-

draw_flush();

- -

Приведенный выше код промывает конвейер рисования.

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/Binary_Files.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/Binary_Files.htm index 1b6c24b49..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/Binary_Files.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/Binary_Files.htm @@ -1,50 +0,0 @@ - - - - - - Двоичные файлы - - - - - - - - - - -

Двоичные файлы

-

В редких ситуациях вам может понадобиться прочитать данные из двоичных файлов. Эти функции могут быть использованы для этой цели, хотя в целом мы рекомендуем вам использовать специальные функции буфера для создания, сохранения и загрузки двоичных данных, а не эти функции.

-

ПРИМЕЧАНИЕ: Эти функции не работают, если целевым модулем является HTML5.

-

Для этого существуют следующие низкоуровневые процедуры:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_close.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_close.htm index 5c883da80..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_close.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_close.htm @@ -1,63 +0,0 @@ - - - - - - file_bin_close - - - - - - - - - - -

file_bin_close

-

Закрывает ранее открытый двоичный файл. Вы предоставляете значение идентификатора файла, возвращаемое функцией file_bin_open().

-

ПРИМЕЧАНИЕ: Эти функции не работают, если целевым модулем является HTML5.

-

-

Синтаксис:

-

file_bin_close(binfile);

- - - - - - - - - - - -
АргументТипОписание
binfileThe ID of the file to close.
-

-

Возвращается:

-

-

-

Пример:

-

file = file_bin_open("myfile.bin", 2);
file_bin_rewrite(file); -
file_bin_close(file); -

-

Это позволит открыть файл из того же каталога, что и игра, и присвоить его индекс переменной "file". Затем файл перезаписывается (очищается от данных) и снова закрывается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_open.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_open.htm index 27d021db6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_open.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_open.htm @@ -1,76 +0,0 @@ - - - - - - file_bin_open - - - - - - - - - - - -

file_bin_open

-

Эта функция откроет двоичный файл с указанным именем. Режим указывает, что можно сделать с файлом:

-
    -
  • 0 = чтение
  • -
  • 1 = запись
  • -
  • 2 = и чтение, и письмо
  • -
-

Если файл не существует, он создается, и функция возвращает id файла, который должен быть использован в других функциях. Вы можете одновременно открывать несколько файлов (не более 32), но не забудьте закрыть их, когда закончите работу с ними.

-

ВНИМАНИЕ! Эта функция может работать не так, как вы ожидаете, из-за того, что GameMaker находится в "песочнице"! Пожалуйста, обратитесь к разделу о файловой системе для получения дополнительной информации.

-

ПРИМЕЧАНИЕ: Эти функции не работают, если целевым модулем является HTML5.

-

-

Синтаксис:

-

file_bin_open(fname, mode);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
fnameСтрокаThe name of the file to read from.
modeРеальноThe indicator of what can be done with the file.
-

-

Возвращается:

-

Binary File ID

-

-

Пример:

-

file = file_bin_open("myfile.bin", 2);

-

Это откроет файл из той же директории, что и игра, и присвоит его индекс переменной "file".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_position.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_position.htm index a409d44d1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_position.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_position.htm @@ -1,62 +0,0 @@ - - - - - - file_bin_position - - - - - - - - - - - -

file_bin_position

-

Эта функция возвращает текущую позицию в байтах, где 0 - первая позиция, файла с заданным идентификатором файла. Вы передаете значение идентификатора файла, возвращаемое функцией file_bin_open().

-

ПРИМЕЧАНИЕ: Эти функции не работают, если целевым модулем является HTML5.

-

-

Синтаксис:

-

file_bin_position(binfile);

- - - - - - - - - - - -
АргументТипОписание
binfileThe ID of the file to get the position in.
-

-

Возвращается:

-

-

-

Пример:

-

pos = file_bin_position(file);

-

Это сохранит текущую позицию в переменной "pos".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_read_byte.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_read_byte.htm index 7bf767bfd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_read_byte.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_read_byte.htm @@ -1,62 +0,0 @@ - - - - - - file_bin_read_byte - - - - - - - - - - -

file_bin_read_byte

-

Эта функция возвращает байт данных из текущей позиции в файле с заданным идентификатором файла. Вы передаете значение ID файла, возвращаемое функцией file_bin_open().

-

ПРИМЕЧАНИЕ: Эти функции не работают, если целевым модулем является HTML5.

-

-

Синтаксис:

-

file_bin_read_byte(binfile);

- - - - - - - - - - - -
АргументТипОписание
binfileThe ID of the file to get the data from.
-

-

Возвращается:

-

-

-

Пример:

-

file = file_bin_open("myfile.bin", 2);
data = file_bin_read_byte(file);
file_bin_close(file); -

-

Это позволит открыть файл из того же каталога, что и игра, и получить из него байт данных, после чего снова закрыть его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_rewrite.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_rewrite.htm index 978b0164d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_rewrite.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_rewrite.htm @@ -1,62 +0,0 @@ - - - - - - file_bin_rewrite - - - - - - - - - - -

file_bin_rewrite

-

Эта функция принимает имя файла, возвращенное функцией file_bin_open() и затем переписывает файл, очищая его от всех предыдущих данных, чтобы начать запись с начала файла.

-

ПРИМЕЧАНИЕ: Эти функции не работают, если целевым модулем является HTML5.

-

-

Синтаксис:

-

file_bin_rewrite(binfile);

- - - - - - - - - - - -
АргументТипОписание
binfileThe ID of the file to rewrite.
-

-

Возвращается:

-

-

-

Пример:

-

file = file_bin_open("myfile.bin", 2);
file_bin_rewrite(file); -

-

Это позволит открыть файл из того же каталога, что и игра, и присвоить его индекс переменной "file". Затем он перезапишет файл (очистив его от данных).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_seek.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_seek.htm index 870876482..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_seek.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_seek.htm @@ -1,66 +0,0 @@ - - - - - - file_bin_seek - - - - - - - - - - -

file_bin_seek

-

Эта функция перемещает текущую позицию чтения в файле на указанную позицию. Вы передаете значение идентификатора файла, возвращаемое функцией file_bin_open()и для добавления файла переместите позицию на величину - размер файла перед записью.

-

ПРИМЕЧАНИЕ: Эти функции не работают, если целевым модулем является HTML5.

-

-

Синтаксис:

-

file_bin_seek(binfile, pos);

- - - - - - - - - - - - - - - -
АргументТипОписание
binfileThe ID of the file to read from.
posThe position in the file to move to.
-

-

Возвращается:

-

-

-

Пример:

-

file = file_bin_open("myfile.bin", 2);
size = file_bin_size(file);
file_bin_seek(file, size);

-

Это позволит открыть файл из той же директории, что и игра, и присвоить его индекс переменной "file", затем получить размер файла и установить следующую позицию записи на этот размер.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_size.htm index 950951897..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_size.htm @@ -1,63 +0,0 @@ - - - - - - file_bin_size - - - - - - - - - - - -

file_bin_size

-

Эта функция возвращает размер (в байтах) файла, который был открыт для чтения и/или записи. Идентификатором файла является значение, возвращаемое функцией file_bin_open().

-

ПРИМЕЧАНИЕ: Эти функции не работают, если целевым модулем является HTML5.

-

-

Синтаксис:

-

file_bin_size(binfile);

- - - - - - - - - - - -
АргументТипОписание
binfileThe ID of the file to get the size of.
-

-

Возвращается:

-

-

-

Пример:

-

file = file_bin_open("myfile.bin", 2);
size = file_bin_size(file);
file_bin_close(file); -

-

Это позволит открыть файл из локального каталога игры и присвоить его индекс переменной "file". Затем он получит размер этого файла и снова закроет его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_write_byte.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_write_byte.htm index 95e0016e9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_write_byte.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Binary_Files/file_bin_write_byte.htm @@ -1,65 +0,0 @@ - - - - - - file_bin_write_byte - - - - - - - - - - -

file_bin_write_byte

-

Эта функция записывает байт данных в файл, идентифицированный идентификатором файла, в текущей позиции записи. Вы передаете значение идентификатора файла, возвращаемое функцией file_bin_open() и байт данных для записи.

-

ПРИМЕЧАНИЕ: Эти функции не работают, если целевым модулем является HTML5.

-

-

Синтаксис:

-

file_bin_write_byte(binfile, byte);

- - - - - - - - - - - - - - - -
АргументТипОписание
binfileThe ID of the file to write to.
byteThe data to write.
-

-

Возвращается:

-

-

-

Пример:

-

file_bin_write_byte(file, data);

-

Это запишет байт в выбранный файл.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/Encoding_And_Hashing.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/Encoding_And_Hashing.htm index 33b549cfe..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/Encoding_And_Hashing.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/Encoding_And_Hashing.htm @@ -1,65 +0,0 @@ - - - - - - Кодирование и хэширование - - - - - - - - - - -

Кодирование и хэширование

-

При работе с внешними файлами всегда существует вероятность того, что конечный пользователь может открыть и изменить содержащуюся в них информацию и тем самым изменить вашу игру. Это может привести к поломке игровых элементов или подделке оценок в режиме онлайн (например), поэтому GameMaker предоставляет вам некоторые базовые функции кодирования, а также функции для выполнения проверки хэширования строк и файлов, чтобы убедиться, что они сохранили свою целостность перед использованием. Есть также несколько функций для кодирования и декодирования строк в формате JSON.

-

ПРИМЕЧАНИЕ Кодирование - это НЕ шифрование! Кодировка base64 делает файл нечитаемым невооруженным глазом и требует усилий со стороны пользователя для декодирования, но она не защищает от взлома. Рекомендуется сочетать эти функции с собственным шифрованием (в Интернете можно найти множество форм шифрования и скриптовых функций для GameMaker ).

- -

-

Стоит отметить, что существует также ряд функций, связанных с кодированием и хэшированием буферов, которые вы можете найти по следующим ссылкам:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/base64_decode.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/base64_decode.htm index 8b204571e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/base64_decode.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/base64_decode.htm @@ -1,62 +0,0 @@ - - - - - base64_decode - - - - - - - - - - - -

base64_decode

-

Эта функция преобразует строку, закодированную ранее с использованием формата base64, в стандартный текст. Base64 - это широко используемая схема кодирования, которая часто применяется для любых носителей, которые должны храниться или передаваться через Интернет в виде текста, и делает - нечитаемым для человеческого глаза.

-

-

Синтаксис:

-

base64_decode(string)

- - - - - - - - - - - -
АргументТипОписание
stringThe string to decode.
-

-

Возвращается:

-

-

-

Пример:

-

var str, file;
str = base64_encode(game_data);
file = file_text_open_read("save.txt");
str = file_text_read_string(file); level_data = base64_decode(str);
file_text_close(file); -

-

Приведенный выше код открывает текстовый файл и считывает из него строку в локальную переменную "str". Затем эта строка декодируется, и результат сохраняется в переменной экземпляра "level_data".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/base64_encode.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/base64_encode.htm index cba1d47ba..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/base64_encode.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/base64_encode.htm @@ -1,62 +0,0 @@ - - - - - base64_encode - - - - - - - - - - - -

base64_encode

-

Эта функция преобразует строку в строку, закодированную в формате base64. Это широко используемая схема кодирования, которая часто применяется для любых носителей, которые должны храниться или передаваться через Интернет в виде текста, и делает вывод нечитаемым для - человеческим глазом.

-

-

Синтаксис:

-

base64_encode(string)

- - - - - - - - - - - -
АргументТипОписание
stringThe string to encode.
-

-

Возвращается:

-

-

-

Пример:

-

var str, file;
str = base64_encode(game_data);
file = file_text_open_write("save.txt");
file_text_write_string(file, str);
file_text_close(file); -

-

Приведенный выше код преобразует строку, хранящуюся в "game_data", в строку в кодировке base64, которая затем сохраняется во внешнем текстовом файле.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/json_decode.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/json_decode.htm index dfa906a91..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/json_decode.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/json_decode.htm @@ -1,90 +0,0 @@ - - - - - - - json_decode - - - - - - - - - -

json_decode

-

ВАЖНО! Эта функция - хотя она все еще актуальна - была заменена функцией json_parse(), и мы рекомендуем использовать ее только для поддержки старых версий.

-

JSON (JavaScript Object Notation) - это легкий формат обмена данными, который легко читать и писать как людям, так и машинам. Он построен на двух основных структурах:

-
    -
  • Коллекция пар имя/значение, называемая DS Map в GameMaker, но также известна как "словарь" или "объект".
  • -
  • Упорядоченный список значений, называемый DS List в GameMaker, но его также можно назвать "массивом" или "последовательностью".
  • -
-

С помощью этой функции вы можете декодировать кусок JSON и преобразовать его в DS Map, готовый для использования в GameMaker. Если декодируемый JSON требует иерархии списков и карт внутри центральной карты DS, они также декодируются и создаются для вас, используя следующие правила (обратите внимание, что эти правила применяются только к структуре верхнего уровня):

-
    -
  • JSON - одно значение - возвращает карту DS с единственной записью "default", которая является значением
  • -
  • JSON - массив объектов или значений - возвращает DS карту с единственной записью "default", которая является DS списком объектов или значений
  • -
  • JSON - объект - возвращает карту DS, в которой содержатся записи об объекте
  • -
-

ПРИМЕЧАНИЕ: При декодировании массивов JSON существует карта с ключом "default" ТОЛЬКО когда массив является структурой верхнего уровня, и ТОЛЬКО для этого массива верхнего уровня. Внутренние списки декодируются непосредственно в DS map, не будучи заключенными в DS map.

-

ПРИМЕЧАНИЕ: Если вы записали массивы GameMaker в верхний уровень, или как содержимое DS map или DS list, они будут декодированы как DS lists, а не массивы.

-

Обычно вы знаете, в какие ключи расшифровывается JSON, но если это не так, то вы можете воспользоваться функцией ds_map_size(), ds_map_find_first() и ds_map_find_next() для разбора карты и получения необходимой информации.

-

ПРИМЕЧАНИЕ: GameMaker создает необходимые DS карты и списки из JSON, а для очистки достаточно удалить карту или список верхнего уровня, и GameMaker автоматически удалит из памяти все карты и списки под ними.

-

ПРИМЕЧАНИЕ: Эта функция позволяет загружать файлы JSON с максимальным пределом вложенности 128.

-

ВАЖНО: Вы не можете иметь 64-битные числа в вашем JSON, так как они не будут работать правильно из-за того, что они не обрабатываются форматом JSON.

-

-

Синтаксис:

-

json_decode(string)

- - - - - - - - - - - -
АргументТипОписание
stringThe JSON format string that you are passing to the function for decoding
-

-

Возвращается:

-

DS Map ID or -1 (if it fails)

-

-

Пример:

-

var resultMap = json_decode(requestResult);
- var list = ds_map_find_value(resultMap, "default");
- var size = ds_list_size(list);
- for (var n = 0; n < ds_list_size(list); n++)
- {
-     var map = ds_list_find_value(list, n);
-     var curr = ds_map_find_first(map);
-     while (is_string(curr))
-     {
-         global.Name[n] = ds_map_find_value(map, "name");
-         curr = ds_map_find_next(map, curr);
-     }
- }
- ds_map_destroy(resultMap);

-

Приведенный выше код декодирует строку JSON и разбирает ее для создания глобального массива.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/json_encode.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/json_encode.htm index 5b927a632..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/json_encode.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/json_encode.htm @@ -1,80 +0,0 @@ - - - - - - json_encode - - - - - - - - - - - -

json_encode

-

ВАЖНО! Эта функция, хотя и остается актуальной, была заменена функцией json_stringify(), и мы рекомендуем использовать ее только для поддержки старых версий.

-

JSON (JavaScript Object Notation) - это легкий формат обмена данными, который легко читать и писать как людям, так и машинам. Он построен на двух основных структурах:

-
    -
  • Коллекция пар имя/значение, называемая DS Map в GameMaker, но также известна как "словарь" или "объект" в других языках программирования.
  • -
  • Упорядоченный список значений, называемый DS List в GameMaker, но в других языках программирования его также можно назвать "массивом" или "последовательностью".
  • -
-

json_encode() принимает карту DS или массив, который вы ранее создали, и кодирует его как строку JSON, которую вы можете использовать в качестве (например) части вызова. http_post_string() или - чтобы ее можно было хранить снаружи - записать в файл. Если в качестве структуры верхнего уровня используется массив, то массив может содержать только допустимые значения или другие массивы, но не структуры данных. Для этого следует использовать соответствующие функции DS.

-

ВАЖНО! JSON не имеет отношения к числам. В любом языке программирования может быть множество типов чисел различной емкости и дополнений, фиксированных или плавающих, двоичных или десятичных. Это может затруднить обмен между различными языками программирования. Вместо этого JSON предлагает только то представление чисел, которое используют люди: последовательность цифр. Все языки программирования знают, как понять последовательность цифр, даже если они не согласны с внутренними представлениями. Для получения дополнительной информации см. стандарт ECMA JSON.

-

Обратите внимание, что при записи JSON в ini-файл следует соблюдать осторожность, так как спецификации ini могут вызвать проблемы при использовании кавычек и управляющих символов. См. функцию ini_write_string() для получения дополнительной информации. Также обратите внимание, что если вы закодируете int64 в JSON, он запишет его как int, если он находится в допустимом диапазоне для int32, как double, если он может сделать это без потери точности, или (если ни один из этих случаев не применим) как строку с идентификатором "@i64@" до него и "$i64$" после него. Когда вы будете декодировать JSON в карту, GameMaker перехватит эти идентификаторы и преобразует значение в int64. Это означает, что если JSON предназначен для сервера или другой цели, не связанной с GameMaker, эти значения не подойдут и их следует избегать.

-

ПРИМЕЧАНИЕ: Иерархическая функциональность JSON доступна через специальные функции DS map и DS list (например, ds_map_add_list() или ds_list_mark_as_map()), поэтому вы можете кодировать вложенные списки и карты.

-

-

Синтаксис:

-

json_encode(map)

- - - - - - - - - - - - - -
АргументТипОписание
mapИдентификатор карты DSA DS map with the information to encode (or an array)
-

-

Возвращается:

-

String

-

-

Пример:

-

var hiscore_map, i, str;
- hiscore_map = ds_map_create();
- for (i = 0; i < 10; i ++;)
- {
-     ds_map_add(_hiscore_map, name[i], score[i]);
- }
- str = json_encode(hiscore_map);
- get[0] = http_post_string("http://www.angusgames.com/game?game_id=" + string(global.game_id), str)
- ds_map_destroy(hiscore_map);

-

Приведенный выше код создает карту DS, а затем циклически просматривает массивы имен и баллов, добавляя каждую пару ключ/значение в новую карту. Затем эта карта кодируется с помощью json_encode() и сохраняется как строка в переменной "str". Затем эта строка отправляется на веб-сервер с помощью http_post_string(), а карта DS уничтожается, чтобы предотвратить утечку памяти, поскольку она больше не нужна.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/json_parse.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/json_parse.htm index 934419530..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/json_parse.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/json_parse.htm @@ -1,115 +0,0 @@ - - - - - - json_parse - - - - - - - - - - - -

json_parse

-

Эта функция может быть использована для разбора строки JSON (либо созданной ранее с помощью функции json_stringify или из любого корректного источника) и преобразовать ее в коллекцию массивов или структур, где массив - это эквивалент массива JSON, а структура - эквивалент объекта JSON. Вы передаете строку для разбора, и функция возвращает массив или структуру верхнего уровня, которые затем можно использовать в вашем коде. Если вы не уверены в содержимом JSON, вы можете использовать различные функции переменных (такие как typeof() и variable_struct_get_names() в случае со структурой) для проверки возвращаемого содержимого. Обратите внимание, что попытка разобрать недопустимое значение (т.е. не строку) приведет к ошибке исключения.

-

При использовании этой функции следует обратить внимание на некоторые важные моменты:

-
    -
  • Если предоставленная строка JSON содержит undefined в качестве значения для какого-либо свойства, то при разборе она будет преобразована в pointer_null.
  • -
  • Эта функция позволяет загружать только файлы JSON с максимальным пределом вложенности 128.
  • -
-

-

Синтаксис:

-

json_parse(json)

- - - - - - - - - - - -
АргументТипОписание
jsonThe JSON string to parse
-

-

Возвращается:

-

Struct or Array

-

-

Пример:

-

json = "{\"myObj\": { \"apples\":10, \"oranges\":12, \"potatoes\":100000, \"avocados\":0 }, \"myArray\":[0, 1, 2, 2, 4, 0, 1, 5, 1]}";
-
- var data = json_parse(json);
- show_debug_message(data); -

-

Приведенный выше код создает новую строку, содержащую правильный объект JSON, а затем вызывает json_parse() для преобразования этой строки в структуру GML. Затем он печатает результат в журнал отладки.

-

ПРИМЕЧАНИЕ Вы заметите, что строка JSON содержит обратную косую черту(\) перед каждой двойной кавычкой (") внутри нее:
-
- json = "{ \ " myObj
-
- Это делается для того, чтобы двойная кавычка читалась как реальный символ в строке, а не как часть кода и не закрывала строку преждевременно. Таким образом, мы используем обратную косую черту, чтобы "спасти" двойную кавычку.
-
- Однако если вы загружаете JSON из внешнего файла, нет необходимости экранировать символы в этом файле, и это может привести к ошибкам при разборе. -

-
-

После разбора приведенной выше строки JSON, если вы знаете ее структуру, вы можете использовать различные функции переменных для проверки и чтения ее содержимого:

-

data = json_parse(json);
-
- // Check if the struct has myObj variable
- if (struct_exists(data, "myObj"))
- {
-     // Check if it's a struct
-     if (is_struct(data.myObj))
-     {
-         // Print all struct members to the log
-         var _names = struct_get_names(data.myObj);
-         var _str = "";
-         for (var i = 0; i < array_length(_names); i++)
-         {
-             _str = _names[i] + ": " + string(struct_get(data.myObj, _names[i]));
-             show_debug_message(_str);
-         }
-     }
- }
-
- // Check if the struct has myArray variable
- if (struct_exists(data, "myArray"))
- {
-     // Check if it's an array
-     if (is_array(data.myArray))
-     {
-         show_debug_message(data.myArray);
-     }
- } -

-

Приведенный выше код разберет заданную строку JSON, выдав следующий консольный вывод:

-

oranges: 12
- potatoes: 100000
- avocados: 0
- apples: 10
- [ 0,1,2,2,4,0,1,5,1 ]

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/json_stringify.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/json_stringify.htm index 6d94e88b5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/json_stringify.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/json_stringify.htm @@ -1,102 +0,0 @@ - - - - - - json_stringify - - - - - - - - - - - -

json_stringify

-

С помощью этой функции вы можете преобразовать одиночные или вложенные структуры и массивы в правильную строку JSON. Вы задаете исходное значение (индекс массива или ссылку на структуру), а затем функция "строчит" его, преобразуя в строку JSON (преобразуя массивы GameMaker в массивы JSON, а структуры GameMaker в объекты JSON).

-

При использовании этой функции следует обратить внимание на некоторые важные моменты:

-
    -
  • Эта функция не преобразует карты DS, списки или любые другие структуры данных в JSON, а просто сохраняет значение внутреннего индекса структуры (что малополезно, так как индекс будет меняться между запусками игры), и поэтому не следует пытаться строчить любые значения, которые могут содержать ссылки на структуры данных (для этого есть json_encode()).
  • -
  • Эта функция преобразует практически любое значение в "правильную" строку JSON, однако фактические значения, содержащиеся в строке, могут быть не совсем такими, как вы ожидаете, из-за особенностей работы стандарта JSON:
    -
    - "JSON не имеет отношения к числам. В любом языке программирования может быть множество типов чисел различной емкости и комплектации, фиксированных или плавающих, двоичных или десятичных. Это может затруднить обмен между различными языками программирования. Вместо этого JSON предлагает только то представление чисел, которое используют люди: последовательность цифр. Все языки программирования знают, как понять последовательность цифр, даже если они не согласны с внутренними представлениями".
    -
    - Для получения дополнительной информации см. стандарт ECMA JSON. -
  • -
  • Если вы включите int64 в значения для преобразования в JSON, он запишет его как int, если оно находится в допустимом диапазоне для int32, как double, если он может сделать это без потери точности, или (если ни один из этих случаев не применим) как строку с идентификатором "@i64@" перед ним и "$i64$" после него. Когда вы снова придете разбирать JSON, GameMaker перехватит эти идентификаторы и преобразует значение обратно в int64. Это означает, что если JSON предназначен для сервера или другой цели, не связанной с GameMaker, эти значения не подойдут, поэтому их следует избегать.
  • -
  • Если вы включите infinity, -infinity или NaN в значения для преобразования в JSON, они будут закодированы как строки, поскольку эти значения не являются частью стандарта JSON, и при разборе полученного JSON они не будут преобразованы обратно в свои значения времени выполнения и останутся в виде строк. Обратите внимание, что NaN будет преобразован в "nan" (в нижнем регистре) при структурировании.
  • -
  • Следует быть осторожным при записи любой возвращаемой строки JSON в файл ini, так как спецификации ini могут вызвать проблемы при использовании кавычек и управляющих символов. См. функцию ini_write_string() для получения дополнительной информации.
  • -
-

-

-

-

Синтаксис:

-

json_stringify(val)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
valСтруктура или массивThe reference value for a struct or array to convert into a JSON string
filter_funcFunction  Filter function that processes each item. Syntax: function(key, value) -> new_value
-

-

Возвращается:

-

String

-

-

Пример:

-

var _contents =
- {
-     version : "1.0.0",
-     data:
-     {
-         coins : 4,
-         mana : 15,
-         playername : "Gurpreet",
-         items :
-         [
-             ITEM.SWORD,
-             ITEM.BOW,
-             ITEM.GUITAR
-         ]
-     }
- };
-
- var _json_string = json_stringify(_contents); -

-

Приведенный выше код преобразует структуру _contents в строку JSON и сохранит ее в переменной. Возвращенная строка будет выглядеть следующим образом:

-

{ "data": { "items": [ 0.0, 1.0, 2.0 ], "coins": 4.0, "mana": 15.0, "playername": "Gurpreet" }, "version": "1.0.0" }

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/load_csv.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/load_csv.htm index 69bcc2a64..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/load_csv.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/load_csv.htm @@ -1,78 +0,0 @@ - - - - - - load_csv - - - - - - - - - - - -

load_csv

-

Эта функция загрузит файл формата CSV и преобразует его в сетку DS, возвращая уникальное значение ID для созданной сетки.

-

Ваш CSV-файл должен соответствовать спецификации CSV. Если синтаксис вашего CSV не соответствует требованиям, вы получите неожиданные результаты при загрузке файла.

-

-

Синтаксис:

-

load_csv(filename)

- - - - - - - - - - - - - -
АргументТипОписание
filenameСтрокаThe name of the file to open (as a string)
-

-

Возвращается:

-

DS Grid ID

-

-

Пример:

-

file_grid = load_csv("spreadsheet.csv");
- var ww = ds_grid_width(file_grid);
- var hh = ds_grid_height(file_grid);
- var xx = 32;
- var yy = 32;
- for (var i = 0; i < ww; i++)
- {
-     for (var j = 0; j < hh; j++)
-     {
-         draw_text(xx, yy, file_grid[# i, j]);
-         yy += 32;
-     }
-     yy = 32;
-     xx += 32;
- }

-

Приведенный выше код открывает заданный CSV-файл и сохраняет полученную сетку DS в переменной "file_grid". Затем эта сетка будет разобрана в нескольких for и содержимое выведено на экран.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/md5_file.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/md5_file.htm index 036d17c32..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/md5_file.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/md5_file.htm @@ -1,63 +0,0 @@ - - - - - - md5_file - - - - - - - - - - - -

md5_file

-

В криптографии MD5 (Message-Digest algorithm 5) - это широко используемая криптографическая хэш-функция со 128-битным хэш-значением, которая применяется в самых разных приложениях безопасности. Она также часто используется для проверки целостности файлов и строк. - Эта функция берет заданный файл и генерирует уникальный MD5 для этого файла, который затем можно сохранить для последующего использования.

-

ПРИМЕЧАНИЕ: MD5 не является полностью безопасным и может быть взломан. См. эту страницу для получения дополнительной информации.

-

-

Синтаксис:

-

md5_file(filename)

- - - - - - - - - - - -
АргументТипОписание
filenameThe file to generate the MD5 hash for.
-

-

Возвращается:

-

-

-

Пример:

-

hash = md5_file(working_directory + "game_data.ini")

-

Приведенный выше код сгенерирует хэш MD5 для указанного файла и сохранит возвращаемое значение в переменной "hash".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/md5_string_unicode.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/md5_string_unicode.htm index 962973c7f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/md5_string_unicode.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/md5_string_unicode.htm @@ -1,66 +0,0 @@ - - - - - - md5_string_unicode - - - - - - - - - - - -

md5_string_unicode

-

В криптографии MD5 (Message-Digest algorithm 5) - это широко используемая криптографическая хэш-функция со 128-битным хэш-значением, которая применяется в самых разных приложениях безопасности. Она также часто используется для проверки целостности файлов и строк. - Эта функция принимает на вход строку unicode (16 бит для каждого символа) и возвращает 32-символьный шестнадцатеричный хэш MD5, уникальный для этой строки. Таким образом, вы можете сгенерировать безопасный ключ, который можно хранить и использовать для проверки целостности - информации, отправляемой на внешний сервер (или получаемой от него) (например).

-

ПРИМЕЧАНИЕ Для кодировки MD5 существует два формата: UTF-8 и unicode. Оба формата предусмотрены для облегчения взаимодействия с различными настройками сервера, но чаще всего используется unicode.

-

ПРИМЕЧАНИЕ: MD5 не является полностью безопасным и может быть взломан. См. эту страницу для получения дополнительной информации.

-

-

Синтаксис:

-

md5_string_unicode(string)

- - - - - - - - - - - -
АргументТипОписание
stringThe string to hash.
-

-

Возвращается:

-

-

-

Пример:

-

var hash, str;
str = base64_encode(game_data);
hash = md5_string_unicode(str);
http_get("http://www.MacSweeneyGames.com/CatchTheHaggis/gamedata?hash=" + hash); http_get("http://www.MacSweeneyGames.com/CatchTheHaggis/gamedata?data=" - + str);

-

Приведенный выше код кодирует строку в base64, а затем генерирует хэш MD5. Наконец, хэш и закодированная строка отправляются на сервер.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/md5_string_utf8.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/md5_string_utf8.htm index 67f51ceda..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/md5_string_utf8.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/md5_string_utf8.htm @@ -1,67 +0,0 @@ - - - - - - md5_string_utf8 - - - - - - - - - - - -

md5_string_utf8

-

В криптографии MD5 (Message-Digest algorithm 5) - это широко используемая криптографическая хэш-функция со 128-битным хэш-значением, которая применяется в самых разных приложениях безопасности. Она также часто используется для проверки целостности файлов и строк. - Эта функция принимает на вход строку UTF-8 (которая имеет переменное количество байт на символ) и возвращает 32-символьный шестнадцатеричный хэш MD5, уникальный для этой строки. Таким образом, вы можете сгенерировать безопасный ключ, который можно хранить и использовать - для проверки целостности информации, отправляемой (или получаемой) на внешний сервер (например).

-

ПРИМЕЧАНИЕ: Существует два формата кодировки MD5 - UTF-8 и unicode. Оба формата предусмотрены для облегчения взаимодействия с различными настройками сервера, но чаще всего используется unicode.

-

ПРИМЕЧАНИЕ: MD5 не является полностью безопасным и может быть взломан. См. эту страницу для получения дополнительной информации.

-

Синтаксис:

-

md5_string_utf8(string)

- - - - - - - - - - - -
АргументТипОписание
stringThe string to hash.
-

-

Возвращается:

-

-

-

Пример:

-

var hash, str;
str = json_encode(hiscore_map);
hash = md5_string_utf8(str);
ini_open("local.ini"); -
ini_write_string("info", "0", hash);
ini_close(); -
get[0] = http_post_string("http://www.MacSweeney Games.com/CatchTheHaggis?game_hiscores=" + string(global.game_id), str)

-

Приведенный выше код кодирует карту DS в строку JSON. Затем генерируется хэш MD5 и сохраняется в ini-файле, чтобы впоследствии его можно было использовать для проверки целостности JSON при получении той же информации от сервера. JSON - затем отправляется.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/sha1_file.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/sha1_file.htm index 260814e57..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/sha1_file.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/sha1_file.htm @@ -1,64 +0,0 @@ - - - - - - sha1_file - - - - - - - - - - - -

sha1_file

-

В криптографии SHA-1 - это криптографическая хэш-функция, разработанная Агентством национальной безопасности США и используемая в нескольких широко распространенных приложениях, таких как Git, где она используется для проверки изменений файлов, а также в протоколах TLS и SSL, PGP, SSH, S/MIME и IPsec. Эта функция принимает входной файл и возвращает 160-битный дайджест сообщения в формате ASCII, уникальный для этого файла, который можно использовать для проверки целостности в любое время.

-

ПРИМЕЧАНИЕ: SHA-1 не является полностью безопасным и может быть взломан. См. эту страницу для получения дополнительной информации.

-

-

Синтаксис:

-

sha1_file(filename)

- - - - - - - - - - - - - -
АргументТипОписание
filenameСтрокаThe file to generate the sha1 hash for.
-

-

Возвращается:

-

String

-

-

Пример:

-

hash = sha1_file(working_directory + "game_data.ini")

-

Приведенный выше код сгенерирует хэш sha1 для указанного файла и сохранит возвращаемое значение в переменной "hash".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/sha1_string_unicode.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/sha1_string_unicode.htm index fd21a61e2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/sha1_string_unicode.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/sha1_string_unicode.htm @@ -1,67 +0,0 @@ - - - - - - sha1_string_unicode - - - - - - - - - - - -

sha1_string_unicode

-

В криптографии SHA-1 - это криптографическая хэш-функция, разработанная Агентством национальной безопасности США и используемая в нескольких широко распространенных приложениях и протоколах, таких как популярный Git, где она используется для проверки изменений файлов. - Эта функция принимает на вход строку в формате unicode и возвращает 160-битный дайджест сообщения в формате ASCII, например:

-

sha1 input string = "The quick brown fox jumps over the lazy dog"
sha1 output hash = "2fd4e1c6 7a2d28fc ed849ee1 bb76e739 1b93eb12"

-

Таким образом, вы можете генерировать безопасный ключ, который можно хранить и использовать для проверки целостности информации, отправляемой на внешний сервер (или получаемой с него) (например).

-

ПРИМЕЧАНИЕ: Существует два формата кодировки sha1 - UTF-8 и unicode. Оба формата предусмотрены для облегчения взаимодействия с различными настройками сервера, но чаще всего используется unicode.

-

ПРИМЕЧАНИЕ: SHA-1 не является полностью безопасным и может быть взломан. См. эту страницу для получения дополнительной информации.

-

-

Синтаксис:

-

sha1_string_unicode(string)

- - - - - - - - - - - -
АргументТипОписание
stringThe string to hash.
-

-

Возвращается:

-

-

-

Пример:

-

var hash, str;
str = base64_encode(game_data);
hash = sha1_string_unicode(str);
http_get("http://www.MacSweeneyGames.com/CatchTheHaggis/gamedata?hash=" + hash); http_get("http://www.MacSweeneyGames.com/CatchTheHaggis/gamedata?data=" - + str);

-

Приведенный выше код кодирует строку в base64, а затем генерирует хэш sha1. Наконец, хэш и закодированная строка отправляются на сервер.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/sha1_string_utf8.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/sha1_string_utf8.htm index 326a04961..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/sha1_string_utf8.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/sha1_string_utf8.htm @@ -1,69 +0,0 @@ - - - - - - sha1_string_utf8 - - - - - - - - - - - -

sha1_string_utf8

-

В криптографии SHA-1 - это криптографическая хэш-функция, разработанная Агентством национальной безопасности США и используемая в нескольких широко распространенных приложениях и протоколах, таких как популярный Git, где она используется для проверки изменений файлов. - Эта функция принимает на вход строку UTF-8 (которая имеет переменное количество байт на символ) и возвращает 160-битный дайджест сообщения в формате ASCII, например:

-

sha1 input string = "The quick brown fox jumps over the lazy dog"
sha1 output hash = "2fd4e1c6 7a2d28fc ed849ee1 bb76e739 1b93eb12"

-

Таким образом, вы можете генерировать безопасный ключ, который можно хранить и использовать для проверки целостности информации, отправляемой на внешний сервер (или получаемой с него) (например).

-

ПРИМЕЧАНИЕ: Существует два формата кодировки sha1 - UTF-8 и unicode. Оба формата предусмотрены для облегчения взаимодействия с различными настройками сервера, но чаще всего используется unicode.

-

ПРИМЕЧАНИЕ: SHA-1 не является полностью безопасным и может быть взломан. См. эту страницу для получения дополнительной информации.

-

-

Синтаксис:

-

sha1_string_utf8(string)

- - - - - - - - - - - -
АргументТипОписание
stringThe string to hash.
-

-

Возвращается:

-

-

-

Пример:

-

var hash, str;
str = json_encode(hiscore_map);
hash = sha1_string_utf8(str);
ini_open("local.ini"); -
ini_write_string("info", "0", hash);
ini_close(); -
get[0] = http_post_string("http://www.MacSweeney Games.com/CatchTheHaggis?game_hiscores=" + string(global.game_id), str)

-

Приведенный выше код кодирует карту DS в строку JSON. Затем генерируется хэш sha1 и сохраняется в ini-файле, чтобы впоследствии его можно было использовать для проверки целостности JSON в случае получения той же информации от сервера. JSON - затем отправляется.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/zip_unzip.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/zip_unzip.htm index 4b8105eb5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/zip_unzip.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Encoding_And_Hashing/zip_unzip.htm @@ -1,70 +0,0 @@ - - - - - - zip_unzip - - - - - - - - - - - -

zip_unzip

-

Эта функция откроет сохраненный zip-файл и извлечет его содержимое в указанный каталог. Обратите внимание, что если вы не указали полный путь к директории ZIP, то будет использован корень текущего диска, а если вы хотите поместить его в относительный путь к рабочей директории пакета игры, то вам следует использовать переменную working_directory как часть пути (относительные пути с использованием "." или "." не будут работать так, как ожидается, поэтому их следует избегать). Обратите внимание, что zip-файл должен быть либо частью игрового пакета (т.е. включенным файлом), либо загружен в область хранения с помощью http_get_file().

-

Функция вернет значение, указывающее на количество извлеченных файлов, или вернет 0 или меньше, если извлечение не удалось.

-

-

Синтаксис:

-

zip_unzip(zip_file, target_directory)

- - - - - - - - - - - - - - - -
АргументТипОписание
zip_fileThe zip file to open
target_directoryThe target directory to extract the files to
-

-

Возвращается:

-

-

-

Пример:

-

var num = zip_unzip("/downloads/level_data.zip", working_directory + "extracted/");
- if (num <= 0)
- {
-     show_debug_message("Extraction Failed!");
- }

-

Приведенный выше код откроет zip-файл, хранящийся в каталоге "downloads", и извлечет его содержимое в каталог "extracted" (создав этот каталог, если он еще не существует), а затем проверит правильность извлечения, показав отладочное сообщение в случае неудачи.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/File_Directories.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/File_Directories.htm index 36d0793c6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/File_Directories.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/File_Directories.htm @@ -1,46 +0,0 @@ - - - - - - Файловые директории - - - - - - - - - - -

Файловые директории

-

При работе с файлами могут возникнуть моменты, когда вам потребуется указать каталог, в котором хранятся файлы, и в GameMaker есть некоторые специальные функции и переменные, относящиеся к различным возможным каталогам, которые могут вам понадобиться:

- -

ПРИМЕЧАНИЕ Вы не можете создавать или уничтожать каталоги на HTML5.

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/directory_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/directory_create.htm index 84994629c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/directory_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/directory_create.htm @@ -1,65 +0,0 @@ - - - - - - directory_create - - - - - - - - - - -

directory_create

-

Эта функция создаст каталог с заданным именем в области сохранения.

-

ПРИМЕЧАНИЕ: Эта функция не будет работать на HTML5, так как вы не можете создавать или удалять каталоги в локальном хранилище браузера.

-

ВНИМАНИЕ! Эта функция может работать не так, как вы ожидаете, из-за того, что GameMaker находится в "песочнице"! Пожалуйста, обратитесь к разделу о файловой системе для получения дополнительной информации.

-

-

Синтаксис:

-

directory_create(dname)

- - - - - - - - - - - -
АргументТипОписание
dnameThe name of the directory to create.
-

-

Возвращается:

-

-

-

Пример:

-

if !directory_exists("Games")
- {
-     directory_create("Games");
- }

-

Это позволит проверить, существует ли указанный каталог в локальной папке данных, и, если нет, создать его для вас.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/directory_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/directory_destroy.htm index c5c2680f1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/directory_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/directory_destroy.htm @@ -1,65 +0,0 @@ - - - - - - directory_destroy - - - - - - - - - - -

directory_destroy

-

Эта функция удалит каталог с заданным именем в области сохранения.

-

ПРИМЕЧАНИЕ: Эта функция не будет работать на HTML5, так как вы не можете создавать или удалять каталоги в локальном хранилище браузера.

-

ВНИМАНИЕ! Эта функция может работать не так, как вы ожидаете, из-за того, что GameMaker находится в "песочнице"! Пожалуйста, обратитесь к разделу о файловой системе для получения дополнительной информации.

-

-

Синтаксис:

-

directory_destroy(dname)

- - - - - - - - - - - -
АргументТипОписание
dnameThe name of the directory to remove.
-

-

Возвращается:

-

-

-

Пример:

-

if directory_exists("DLC")
- {
-     directory_destroy("DLC");
- }

-

При этом проверяется, существует ли указанный каталог в локальной папке данных, и если да, то он удаляется.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/directory_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/directory_exists.htm index 7fb6fa6b9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/directory_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/directory_exists.htm @@ -1,64 +0,0 @@ - - - - - - directory_exists - - - - - - - - - - - -

directory_exists

-

Эта функция возвращает true, если указанный каталог существует, или false, если не существует. Указанное имя должно включать полный путь, а не относительный, и по умолчанию вы не можете получить доступ к каталогам, находящимся вне пакета игры, так как все игры находятся в песочнице (см. раздел о файловой системе для получения дополнительной информации).

-

-

Синтаксис:

-

directory_exists(dname)

- - - - - - - - - - - -
АргументТипОписание
dnameThe name of the directory to look for.
-

-

Возвращается:

-

-

-

Пример:

-

if directory_exists(working_directory + "Saves/")
- {
-     file = file_find_first(working_directory + "Saves/*.doc", fa_readonly);
- }

-

Эта программа проверит, существует ли указанный каталог, затем, если существует, перейдет туда и вернет первый найденный файл "только для чтения" doc.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/program_directory.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/program_directory.htm index d6b6cf5b6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/program_directory.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/program_directory.htm @@ -1,50 +0,0 @@ - - - - - - program_directory - - - - - - - - - - -

program_directory

-

Это вернет каталог, в котором хранится исполняемый файл игры. Однако это не всегда может быть полезно, особенно потому, что некоторые устройства запускают exe из *.zip-файла, так что это возвращает одно и то же, независимо от того, откуда на самом деле запущена игра.

-

ВНИМАНИЕ! Эта функция может работать не так, как вы ожидаете, из-за того, что GameMaker находится в "песочнице"! Пожалуйста, обратитесь к разделу о файловой системе для получения дополнительной информации.

-

ПРИМЕЧАНИЕ: Если вы отключите песочницу, вы все равно не сможете записывать в этот каталог, чтобы предотвратить возможные проблемы с удалением необходимых файлов игры.

-

-

Синтаксис:

-

program_directory

-

-

Возвращается:

-

-

-

Пример:

-

dir = program_directory;

-

Это сохранит каталог, в котором находится исполняемый файл, в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/temp_directory.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/temp_directory.htm index 967c89807..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/temp_directory.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/temp_directory.htm @@ -1,50 +0,0 @@ - - - - - - temp_directory - - - - - - - - - - -

temp_directory

-

Это можно использовать для возврата временного каталога, создаваемого для вашей игры при каждом запуске (корень не содержит конечного "\"). В этом каталоге будут храниться файлы, к которым можно получить доступ во время работы игры, но он будет удален (вместе со всеми файлами, которые в нем содержатся), когда игра будет закрыта. - вместе со всеми файлами, которые он содержит), когда игра будет закрыта.

-

ВНИМАНИЕ! Эта функция может работать не так, как вы ожидаете, из-за того, что GameMaker находится в "песочнице"! Пожалуйста, обратитесь к разделу о файловой системе для получения дополнительной информации.

-

-

Синтаксис:

-

temp_directory

-

-

Возвращается:

-

-

-

Пример:

-

ini_open(temp_directory + "\temp_ini.ini");

-

Это откроет ini-файл во временном каталоге игры (создав его, если он еще не существует).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/working_directory.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/working_directory.htm index d3474b0b0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/working_directory.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Directories/working_directory.htm @@ -1,57 +0,0 @@ - - - - - - working_directory - - - - - - - - - - -

working_directory

-

Working_directory может возвращать два разных значения в зависимости от того, для чего вы его используете.

-

Если вы записываете файл на диск, working_directory указывает на область локального хранилища, зарезервированную для вашей игры на целевом устройстве (в Windows это "%LOCALAPPDATA%/gamedir/", где "gamedir" - каталог с именем вашей игры).

-

Однако при чтении с диска working_directory может быть либо локальным хранилищем (game_save_id) , либо областью, где хранятся Включенные файлы.

-

ПРИМЕЧАНИЕ Переменная working_directory возвращает путь, включая последний обратный слэш.

-

Например, если вы включили в игру файл по умолчанию *.txt и считываете его в память с помощью working_directory, то этот файл будет взят из области, где хранятся файлы Included Files. Если затем вы решите записать эту информацию в текстовый файл с помощью working_directory, то файл будет записан в локальное хранилище целевой платформы, откуда он будет считан в следующий раз, если только вы не дадите GameMaker указание удалить файл, в этом случае working_directory снова будет указывать на область, где хранятся Включенные файлы.

-

Стоит отметить, что в общем случае вам не нужно использовать это и достаточно просто указать само имя файла (плюс любую дополнительную информацию о пути), чего вполне достаточно. Например, это:

-

file_text_open_read(working_directory + "my_file.txt");

-

было бы лучше сделать так:

-

file_text_open_read("my_file.txt");

-

ПРЕДУПРЕЖДЕНИЕ Эта функция может работать не так, как вы ожидаете, из-за того, что GameMaker находится в "песочнице"! Пожалуйста, обратитесь к разделу о файловой системе для получения дополнительной информации.

-

-

Синтаксис:

-

working_directory

-

-

Возвращается:

-

String

-

-

Пример:

-

ini_open(working_directory + "temp_ini.ini");

-

Это откроет ini-файл из рабочего каталога игры (создав его, если он еще не существует). Это может быть локальное хранилище или область, где находятся включенные файлы, в зависимости от того, существует ли искомый файл в любом из этих мест.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Handling.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Handling.htm index 04a16b836..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Handling.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_Handling.htm @@ -1,85 +0,0 @@ - - - - - - Работа с файлами - - - - - - - - - - -

Работа с файлами

-

В какой-то момент при создании игры возникнет необходимость хранить информацию во внешнем пространстве и иметь возможность ее извлечения. Например, вы можете захотеть сохранить данные для входа в систему, или результаты игры, или продвижение игрока по уровням. Независимо от причины, вам необходимо знать, как использовать различные функции файлов, которые доступны вам при работе с GameMaker.

-

Очень важно понимать, что GameMaker по умолчанию является "песочницей" , что означает наличие ряда ограничений и незначительных сложностей при использовании доступных функций файловой системы, а также то, что файловая система будет работать несколько иначе в зависимости от платформы, на которую вы ориентируетесь. Для получения дополнительной информации об этом см. следующий раздел:

- -

Вы можете отключить песочницу для настольных целей (Windows, macOS и Ubuntu (Linux)) в Опциях игры для выбранной платформы, что означает, что вы можете сохраняться и загружаться из любого места в пределах разрешений ОС.

-

Если вы получили разрешение от Steam на использование их специального API в вашей игре, вы обнаружите, что вам также доступен новый набор файловых функций. Они описаны в разделе Steam API данного руководства.

-

Наконец, следует также отметить, что между некоторыми целевыми платформами существуют явные различия, которые необходимо учитывать при использовании файловых функций. К ним относятся:

-
    -
  • iOS: На платформе iOS, если вы загружаете включенный файл из папки, т.е. с путем типа "Backgrounds/background1.png", вам НЕ нужно указывать папку как часть пути и достаточно просто указать имя файла. На всех других платформах вы должны указать папку(и) как часть пути к файлу.
  • -
  • macOS и Ubuntu (Linux): На этих платформах macOS и Ubuntu имена файлов и пути чувствительны к регистру, поэтому, чтобы предотвратить возможные проблемы, GameMaker автоматически сделает все имена/пути по умолчанию в нижнем регистре.
  • -
  • HTML5: В HTML5 сохранение и загрузка в локальное хранилище и из него будут работать так, как это объясняется на страницах различных функций, однако если вы загружаете файл с сервера, вы должны использовать только функцию buffer_load_async(), поскольку синхронная загрузка уже устарела в большинстве браузеров и со временем будет отменена. Также обратите внимание, что вы не можете создавать или уничтожать каталоги в локальном хранилище браузера.
  • -
-

Информацию о различных функциях файлов можно найти на следующих страницах:

- -

-

GameMaker также включает ряд функций для кодирования и хеширования файлов и данных, с которыми вы можете ознакомиться здесь:

- -

-

Также обратите внимание, что существуют некоторые базовые функции файлов для сохранения игр, доступные на следующих страницах (имейте в виду, что эти функции предназначены для новичков, чтобы как можно быстрее запустить базовую систему сохранения, но для более сложных проектов вы должны создать свою собственную систему сохранения, используя функции, перечисленные в разделах выше):

- -

-

Наконец, на следующих страницах вы найдете более продвинутые функции буфера, которые можно использовать для загрузки и сохранения данных:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/File_System.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/File_System.htm index 281e45cec..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/File_System.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/File_System.htm @@ -1,69 +0,0 @@ - - - - - - Файловая система - - - - - - - - - - -

Файловая система

-

В GameMaker существует ряд функций, которые позволяют манипулировать файлами всех типов различными способами:

- -

-

Для изменения имен файлов можно использовать следующие функции:

-

ПРИМЕЧАНИЕ Эти функции не работают с реальными файлами! Они работают только со строками, связанными с различными элементами пути, и должны использоваться вместе с другими файловыми функциями.

- -

-

Наконец, есть несколько специальных функций для получения имен файлов, которые можно использовать для загрузки и сохранения файлов с фильтрами типа файла. Эти функции откроют окно проводника и, следовательно, заставят игру потерять фокус. Это означает, что любой ввод, от которого зависит игра, может быть неправильно зарегистрирован, и поэтому мы рекомендуем (при использовании этих функций в событии клавиатуры) использовать событие " вверх", а не "вниз" или "нажато".

-

ПРИМЕЧАНИЕ Эти функции доступны только для Windows и macOS.

-

ПРЕДУПРЕЖДЕНИЕ Эти функции могут работать не так, как вы ожидаете, из-за того, что GameMaker находится в "песочнице"! Пожалуйста, обратитесь к разделу о файловой системе для получения дополнительной информации.

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_attributes.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_attributes.htm index 386227f5c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_attributes.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_attributes.htm @@ -1,110 +0,0 @@ - - - - - - file_attributes - - - - - - - - - - -

file_attributes

-

Вы можете использовать эту функцию для проверки атрибутов заданного файла. Вы можете сложить следующие константы, чтобы узнать тип нужных вам файлов:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
fa_readonlyФайлы только для чтения
fa_hiddenСкрытые файлы
fa_sysfileСистемные файлы
fa_volumeidФайлы с идентификатором тома
fa_directoryСправочники
fa_archiveАрхивные файлы
-

-

ПРИМЕЧАНИЕ: Это функция только для сайта Windows.

-

-

Синтаксис:

-

file_attributes(fname, attr);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
fnameСтрокаThe name of the file to check.
attrАтрибут файла ПостояннаяThe attributes to check for.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !file_attributes(file, fa_hidden)
- {
-     file_delete(file);
- }

-

Это позволит проверить файл на предмет того, скрыт он или нет, и если нет, то он будет удален.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_copy.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_copy.htm index 2dc7d524b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_copy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_copy.htm @@ -1,67 +0,0 @@ - - - - - - file_copy - - - - - - - - - - -

file_copy

-

Эта функция скопирует указанный файл, присвоив ему новое имя, которое вы выберете.

-

Если вы копируете файл на Android из области Included Files (которая будет находиться внутри вашего APK), он сначала будет скопирован в память, поэтому имейте в виду, что копирование очень больших файлов из APK может привести к нехватке памяти на устройствах. На HTML5-цели мы используем HTML5 Local Storage API для сохранения на стороне клиента, и эти функции не поддерживают операции с двоичными файлами, поэтому предполагается, что вы копируете текстовый файл.

-

Функция завершится неудачно, если файл с новым именем уже существует.

-

ВНИМАНИЕ! Эта функция может работать не так, как вы ожидаете, из-за того, что GameMaker является "песочницей"! Пожалуйста, обратитесь к разделу " Ограничения файловой системы " для получения дополнительной информации.

-

-

Синтаксис:

-

file_copy(fname, newname);

- - - - - - - - - - - - -
АргументТип Описание
fname The name of the file to copy.
newname The name of the new, copied file.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if file_exists("level1.txt")
- {
-     file_copy("level1.txt", "level2.txt");
- }

-

Это позволит проверить наличие файла и, если он существует, скопировать его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_delete.htm index 6db6a3aa1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_delete.htm @@ -1,64 +0,0 @@ - - - - - - file_delete - - - - - - - - - - -

file_delete

-

Эта функция удалит указанный файл из системы. Следует отметить, что эта функция удалит только те файлы, которые GameMaker может создать и разобрать: ini файлы, текстовые файлы и бинарные файлы, или файлы, созданные для хранения ресурсов, созданных игрой, например, sprites или поверхностей. Однако она не будет удалять никакие другие файлы. Функция также вернет true, если файл был успешно удален, или false при любых других обстоятельствах.

-

ВНИМАНИЕ! Эта функция может работать не так, как вы ожидаете, из-за того, что GameMaker является "песочницей"! Пожалуйста, обратитесь к разделу " Ограничения файловой системы " для получения дополнительной информации.

-

-

Синтаксис:

-

file_delete(fname);

- - - - - - - - - - - -
АргументТипОписание
fnameThe name of the file to delete.
-

-

Возвращается:

-

-

-

Пример:

-

if file_exists("level.txt")
- {
-     file_delete("level.txt");
- }

-

Это позволит проверить наличие файла и, если он существует, удалить его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_exists.htm index 829a8248b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_exists.htm @@ -1,64 +0,0 @@ - - - - - - file_exists - - - - - - - - - - - -

file_exists

-

Эта функция возвращает true, если указанный файл существует, и false, если не существует. Обратите внимание, что функция может быть использована только для проверки локальных файлов, но не любых файлов, хранящихся на удаленном сервере.

-

-

Синтаксис:

-

file_exists(fname);

- - - - - - - - - - - -
АргументТипОписание
fnameThe name of the file to check for.
-

-

Возвращается:

-

-

-

Пример:

-

if file_exists("level.txt")
- {
-     file = file_text_open_read("level.txt");
- }

-

Это позволит проверить наличие файла и, если он существует, открыть его для чтения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_find_close.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_find_close.htm index 6e569bdd1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_find_close.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_find_close.htm @@ -1,68 +0,0 @@ - - - - - - file_find_close - - - - - - - - - - -

file_find_close

-

Эта функция должна быть вызвана после обработки файлов, открытых с помощью функций file_find_first() и file_find_next() для освобождения памяти. Функции поиска файлов открывают дескрипторы в каталог файлов, и они занимают минимальное количество памяти, которое (со временем) увеличивается. Поэтому вы всегда должны вызывать эту функцию после нахождения нужных вам файлов, чтобы "закрыть" эти дескрипторы.

-

-

Синтаксис:

-

file_find_close();

-

-

Возвращает

-

-

-

Пример:

-

if directory_exists("\User Content")
- {
-     fileA = file_find_first("/User Content/*.doc", fa_readonly);
-     fileB = file_find_next();
-     fileC = file_find_next();
-     file_find_close();
- }

-

Этот код проверяет, существует ли указанный каталог, и если да, то идет туда и возвращает первый найденный файл "только для чтения" .doc. Затем он ищет еще два файла и закрывает программу поиска файлов.

-

Вы можете искать любое количество файлов с помощью while цикл:

-

var files = [];
- var file_name = file_find_first("/User Content/*.doc", fa_readonly);
-
- while (_file_name != "")
- {
-     array_push(_files, _file_name);
-
-     _file_name = file_find_next();
- }
-
- file_find_close(); -

-

Приведенный выше код создает пустой массив для хранения всех найденных имен файлов и начинает поиск файлов .doc, доступных только для чтения. Если имя файла не является пустой строкой, он помещает его в массив files, а затем пытается найти следующий файл. Цикл будет повторяться до тех пор, пока не будет найдена пустая строка (это означает, что больше нет подходящих файлов), после чего цикл завершается и закрывает программу поиска файлов.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_find_first.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_find_first.htm index aa6daa8b8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_find_first.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_find_first.htm @@ -1,136 +0,0 @@ - - - - - - file_find_first - - - - - - - - - - -

file_find_first

-

Эта функция возвращает имя первого файла, который удовлетворяет маске и атрибутам. Если такого файла не существует, то возвращается пустая строка.

-

Маска может содержать путь с подстановочными знаками, например, C:\temp\*.doc.

-

Атрибуты задают дополнительные файлы, которые вы хотите увидеть, поэтому обычные файлы всегда возвращаются, если они удовлетворяют маске. Вы можете сложить следующие константы, чтобы увидеть нужный вам тип файлов (с помощью |). Если вы не хотите добавлять никаких атрибутов, используйте 0.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Атрибут файла Постоянная
ПостояннаяОписание
fa_readonlyФайлы только для чтения
fa_hiddenСкрытые файлы
fa_sysfileСистемные файлы
fa_volumeidФайлы с идентификатором тома
fa_directoryСправочники
fa_archiveАрхивные файлы
-

Атрибуты можно использовать только на Windows. Для всех остальных платформ используйте 0.

-

ПРЕДУПРЕЖДЕНИЕ Эта функция может работать не так, как вы ожидаете, из-за того, что GameMaker находится в "песочнице"! Пожалуйста, обратитесь к разделу о файловой системе для получения дополнительной информации.

-

ПРИМЕЧАНИЕ Эта функция вообще не будет работать на HTML5-цели.

-

-

Синтаксис:

-

file_find_first(mask, attr);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
maskСтрокаThe mask to use for searching.
attrАтрибут файла Постоянная(s)The specific file attribute to look for.
-

-

Возвращается:

-

String

-

-

Пример:

-

if directory_exists("\User Content")
- {
-     fileA = file_find_first("/User Content/*.doc", fa_readonly);
-     fileB = file_find_next();
-     fileC = file_find_next();
-     file_find_close();
- }

-

Этот код проверяет, существует ли указанный каталог, и если да, то идет туда и возвращает первый найденный файл "только для чтения" .doc. Затем он ищет еще два файла и закрывает программу поиска файлов.

-

Вы можете искать любое количество файлов с помощью while цикл:

-

var files = [];
- var file_name = file_find_first("/User Content/*.doc", fa_readonly);
-
- while (_file_name != "")
- {
-     array_push(_files, _file_name);
-
-     _file_name = file_find_next();
- }
-
- file_find_close(); -

-

Приведенный выше код создает пустой массив для хранения всех найденных имен файлов и начинает поиск файлов .doc, доступных только для чтения. Если имя файла не является пустой строкой, он помещает его в массив files, а затем пытается найти следующий файл. Цикл будет повторяться до тех пор, пока не будет найдена пустая строка (это означает, что больше нет подходящих файлов), после чего цикл завершается и закрывает программу поиска файлов.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_find_next.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_find_next.htm index bc7ae2d67..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_find_next.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_find_next.htm @@ -1,70 +0,0 @@ - - - - - - file_find_next - - - - - - - - - - -

file_find_next

-

Эта функция возвращает имя следующего файла, который удовлетворяет заданной ранее маске и атрибутам (определенным через file_find_first()). Если такого файла не существует, возвращается пустая строка.

-

ПРЕДУПРЕЖДЕНИЕ Эта функция может работать не так, как вы ожидаете, из-за того, что GameMaker находится в "песочнице"! Пожалуйста, обратитесь к разделу о файловой системе для получения дополнительной информации.

-

ПРИМЕЧАНИЕ Эта функция работает на всех целевых платформах C++ (Windows, Mac, iOS, Android), НО флаги фильтрации работают только на Windows.

-

-

Синтаксис:

-

file_find_next();

-

-

Возвращается:

-

-

-

Пример:

-

if directory_exists("\User Content")
- {
-     fileA = file_find_first("/User Content/*.doc", fa_readonly);
-     fileB = file_find_next();
-     fileC = file_find_next();
-     file_find_close();
- }

-

Этот код проверяет, существует ли указанный каталог, и если да, то идет туда и возвращает первый найденный файл "только для чтения" .doc. Затем он ищет еще два файла и закрывает программу поиска файлов.

-

Вы можете искать любое количество файлов с помощью while цикл:

-

var files = [];
- var file_name = file_find_first("/User Content/*.doc", fa_readonly);
-
- while (_file_name != "")
- {
-     array_push(_files, _file_name);
-
-     _file_name = file_find_next();
- }
-
- file_find_close(); -

-

Приведенный выше код создает пустой массив для хранения всех найденных имен файлов и начинает поиск файлов .doc, доступных только для чтения. Если имя файла не является пустой строкой, он помещает его в массив files, а затем пытается найти следующий файл. Цикл будет повторяться до тех пор, пока не будет найдена пустая строка (это означает, что больше нет подходящих файлов), после чего цикл завершается и закрывает программу поиска файлов.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_rename.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_rename.htm index bcd7187ee..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_rename.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/file_rename.htm @@ -1,68 +0,0 @@ - - - - - - file_rename - - - - - - - - - - -

file_rename

-

Эта функция переименует указанный файл с указанным именем. Функция возвращает true, если файл был успешно переименован, или false при любых других обстоятельствах.

-

ВНИМАНИЕ! Эта функция может работать не так, как вы ожидаете, из-за того, что GameMaker находится в "песочнице"! Пожалуйста, обратитесь к разделу о файловой системе для получения дополнительной информации.

-

-

Синтаксис:

-

file_rename(oldname, newname);

- - - - - - - - - - - - - - - -
АргументТипОписание
oldnameThe name of the file to change.
newnameThe new name to give the file.
-

-

Возвращается:

-

-

-

Пример:

-

if file_exists("level1.txt")
- {
-     file_rename("level1.txt", "level.txt");
- }

-

Это позволит проверить наличие файла и, если он существует, переименовать его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_change_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_change_ext.htm index 77453b3f0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_change_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_change_ext.htm @@ -1,64 +0,0 @@ - - - - - - filename_change_ext - - - - - - - - - - -

filename_change_ext

-

Эта функция возвращает указанное имя файла с расширением (включая точку), измененным на новое расширение. Используя пустую строку в качестве нового расширения, вы можете полностью удалить часть расширения.

-

-

Синтаксис:

-

filename_change_ext(fname, newext);

- - - - - - - - - - - - - - - -
АргументТипОписание
fnameThe file to use.
newextThe new extension to use.
-

-

Возвращается:

-

-

-

Пример:

-

ext = filename_change_ext(file_find_first(working_directory + "*.*", 0), "");

-

Приведенный выше код получает имя файла (в виде строки) с удаленной частью расширения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_dir.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_dir.htm index a6abc5559..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_dir.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_dir.htm @@ -1,61 +0,0 @@ - - - - - - filename_dir - - - - - - - - - - - -

filename_dir

-

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

-

-

Синтаксис:

-

filename_dir(fname);

- - - - - - - - - - - -
АргументТипОписание
fnameThe file to use.
-

-

Возвращается:

-

-

-

Пример:

-

dir = filename_dir("Test.ini");

-

Приведенный выше код получает каталог (в виде строки) указанного файла.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_drive.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_drive.htm index d34075423..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_drive.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_drive.htm @@ -1,61 +0,0 @@ - - - - - - filename_drive - - - - - - - - - - - -

filename_drive

-

Эта функция возвращает информацию о приводе имени файла.

-

-

Синтаксис:

-

filename_drive(fname);

- - - - - - - - - - - -
АргументТипОписание
fnameThe file to use.
-

-

Возвращается:

-

-

-

Пример:

-

drive = filename_drive(file_find_first(working_directory + "*.doc", 0));

-

Приведенный выше код получает информацию о диске (в виде строки) указанного файла.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_ext.htm index ce1d50548..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_ext.htm @@ -1,61 +0,0 @@ - - - - - - filename_ext - - - - - - - - - - - -

filename_ext

-

Эта функция возвращает часть расширения указанного имени файла, включая ведущую точку.

-

-

Синтаксис:

-

filename_ext(fname);

- - - - - - - - - - - -
АргументТипОписание
fnameThe file to use.
-

-

Возвращается:

-

-

-

Пример:

-

ext = filename_ext(file_find_first("*.*", 0));

-

Приведенный выше код получает расширение (в виде строки) указанного файла.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_name.htm index 00c3963c2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_name.htm @@ -1,61 +0,0 @@ - - - - - - filename_name - - - - - - - - - - - -

filename_name

-

Эта функция возвращает часть имени указанного файла с расширением, но без пути.

-

-

Синтаксис:

-

filename_name(fname);

- - - - - - - - - - - -
АргументТипОписание
fnameThe file to use.
-

-

Возвращается:

-

String

-

-

Пример:

-

name = filename_name(file_find_first("C:/Games/*.doc", 0));

-

Приведенный выше код получает имя (в виде строки) первого файла типа "doc", найденного в указанном каталоге.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_path.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_path.htm index 3f7ef4152..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_path.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/filename_path.htm @@ -1,61 +0,0 @@ - - - - - - filename_path - - - - - - - - - - - -

filename_path

-

Эта функция возвращает часть пути указанного файла, включая последний обратный слэш.

-

-

Синтаксис:

-

filename_path(fname);

- - - - - - - - - - - -
АргументТипОписание
fnameThe file name and path to use.
-

-

Возвращается:

-

-

-

Пример:

-

path = filename_path(working_directory + "Test.ini");

-

Приведенный выше код получает путь (в виде строки) к указанному файлу.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/get_open_filename.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/get_open_filename.htm index 07a2e3b02..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/get_open_filename.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/get_open_filename.htm @@ -1,71 +0,0 @@ - - - - - - get_open_filename - - - - - - - - - - -

get_open_filename

-

Эта функция открывает диалог и запрашивает у игрока имя файла, который нужно открыть с помощью заданного фильтра. Фильтр имеет вид "name1|mask1|name2|mask2|... ", где маска может содержать различные варианты с точкой с запятой между ними, а также вы можете использовать "*" для обозначения любой строки. Например: "bitmaps|*.bmp;*.wmf", попросит пользователя выбрать имя растрового файла из системы, но только тех, которые имеют два указанных расширения (bmp и png). эта функция не открывает сам файл! Она только возвращает строку с полным именем и путем к файлу. Если пользователь нажимает кнопку "Отмена", возвращается пустая строка "".

-

При использовании этой функции важно отметить, что она предоставляет вам определенные права доступа к этому файлу на время игры. Таким образом, получив путь к файлу от пользователя, вы сможете обращаться к нему снова и снова без необходимости спрашивать. Однако, поскольку эта функция предназначена для чтения файла, предоставленные разрешения предназначены только для чтения, а сохранение не будет разрешено ОС. Если вам потребуется чтение и запись в файл, вы можете получить разрешение с помощью функции get_save_filename().

-

ПРИМЕЧАНИЕ: Эта функция действительна только для целей Windows и macOS.

-

-

Синтаксис:

-

get_open_filename(filter, fname);

- - - - - - - - - - - - - - - -
АргументТипОписание
filterThe file type filter and/or name.
fnameThe suggested filename to use.
-

-

Возвращается:

-

-

-

Пример:

-

var file;
- file = get_open_filename("text file|*.txt", "");
- if (file != "")
- {
-     file_text_open_read(file);
- }

-

Приведенный выше код попросит пользователя выбрать текстовый файл для открытия, затем проверит имя и путь к файлу, и если он существует, то откроет файл для чтения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/get_open_filename_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/get_open_filename_ext.htm index a91dcd54e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/get_open_filename_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/get_open_filename_ext.htm @@ -1,80 +0,0 @@ - - - - - - get_open_filename_ext - - - - - - - - - - - -

get_open_filename_ext

-

Эта функция открывает диалог и запрашивает у игрока имя файла, который нужно открыть с помощью заданного фильтра. Фильтр имеет вид "name1|mask1|name2|mask2|... ", где маска может содержать различные варианты с точкой с запятой между ними, а также вы можете использовать "*" для обозначения любой строки. Например: "bitmaps|*.bmp;*.wmf", попросит пользователя выбрать имя растрового файла из системы, но только тех, которые имеют два указанных расширения (bmp и png). эта функция не открывает сам файл! Она только возвращает строку с полным именем и путем к файлу. Если пользователь нажимает кнопку "Отмена", возвращается пустая строка "". Вы также можете добавить каталог, с которого будет начинаться поиск, и надпись, которая будет отображаться в верхней части окна вместо стандартной.

-

При использовании этой функции важно отметить, что она предоставляет вам определенные права доступа к этому файлу на время игры. Таким образом, получив путь к файлу от пользователя, вы сможете обращаться к нему снова и снова без необходимости спрашивать. Однако, поскольку эта функция предназначена для чтения файла, предоставленные разрешения предназначены только для чтения, а сохранение не будет разрешено ОС. Если вам потребуется чтение и запись в файл, вы можете получить разрешение с помощью функции get_save_filename().

-

ПРИМЕЧАНИЕ: Эта функция действительна только для целей Windows и macOS.

-

-

Синтаксис:

-

get_open_filename_ext(filter, fname, directory, caption);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
filterThe file type filter and/or name.
fnameThe suggested filename to use.
directoryThe directory to start the search from.
captionThe caption for the window.
-

-

Возвращается:

-

-

-

Пример:

-

var file;
- file = get_open_filename_ext("text file|*.txt", "", working_directory, "Open a saved level");
- if (file != "")
- {
-     file_text_open_read(file);
- }

-

Приведенный выше код попросит пользователя выбрать текстовый файл для открытия с сайта working_directory, затем проверит имя и путь к файлу, и если он существует, то откроет файл для чтения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/get_save_filename.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/get_save_filename.htm index 172f2be79..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/get_save_filename.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/get_save_filename.htm @@ -1,71 +0,0 @@ - - - - - - get_save_filename - - - - - - - - - - -

get_save_filename

-

Эта функция открывает диалог и запрашивает у игрока имя файла для сохранения с заданным фильтром. Фильтр имеет вид "name1|mask1|name2|mask2|... ", где маска может содержать различные варианты с точкой с запятой между ними, а также вы можете использовать "*" для обозначения любой строки. Например: "bitmaps|*.bmp;*.wmf", попросит пользователя выбрать имя растрового файла из системы, но только тех, которые имеют два указанных расширения (bmp и png). эта функция не сохраняет сам файл! Она только возвращает строку с полным именем и путем к файлу. Если пользователь нажимает кнопку "Отмена", возвращается пустая строка "".

-

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

-

ПРИМЕЧАНИЕ: Эта функция действительна только для целей Windows и macOS.

-

-

Синтаксис:

-

get_save_filename(filter, fname);

- - - - - - - - - - - - - - - -
АргументТипОписание
filterThe file type filter and/or name.
fnameThe suggested filename to use.
-

-

Возвращается:

-

-

-

Пример:

-

var file;
- file = get_save_filename("screenshot|*.png", "");
- if (file != "")
- {
-     screen_save(_file);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/get_save_filename_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/get_save_filename_ext.htm index 73d381a31..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/get_save_filename_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/File_System/get_save_filename_ext.htm @@ -1,80 +0,0 @@ - - - - - - get_save_filename_ext - - - - - - - - - - - -

get_save_filename_ext

-

Эта функция открывает диалог и запрашивает у игрока имя файла для сохранения с заданным фильтром. Фильтр имеет вид "name1|mask1|name2|mask2|... ", где маска может содержать различные варианты с точкой с запятой между ними, а также вы можете использовать "*" для обозначения любой строки. Например: "bitmaps|*.bmp;*.wmf", попросит пользователя выбрать имя растрового файла из системы, но только тех, которые имеют два указанных расширения (bmp и png). эта функция не сохраняет сам файл! Она только возвращает строку с полным именем и путем к файлу. Если пользователь нажимает кнопку "Отмена", возвращается пустая строка "". Вы также можете добавить каталог, с которого будет начинаться поиск, и надпись, которая будет отображаться в верхней части окна вместо стандартной.

-

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

-

ПРИМЕЧАНИЕ: Эта функция действительна только для целей Windows и macOS.

-

-

Синтаксис:

-

get_save_filename_ext(filter, fname, directory, caption);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
filterThe file type filter and/or name.
fnameThe suggested filename to use.
directoryThe directory to start the search from.
captionThe caption for the window.
-

-

Возвращается:

-

-

-

Пример:

-

var file;
- file = get_save_filename_ext("screenshot|*.png", "", working_directory, "Save a level here");
- if (file != "")
- {
-     screen_save(_file);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/Ini_Files.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/Ini_Files.htm index e0654e55e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/Ini_Files.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/Ini_Files.htm @@ -1,54 +0,0 @@ - - - - - - Файлы Ини - - - - - - - - - - -

Файлы Ини

-

Файлы INI - это небольшие, легкие файлы, совместимые с большинством платформ. Они идеально подходят для хранения небольших фрагментов информации, например, предпочтений интерфейса, локальных высоких результатов, данных об уровнях и т.д... и как таковые являются отличным и простым способом начать сохранять информацию из ваших игр. Если вы ищете более продвинутые способы сохранения информации в файлы, вам стоит обратить внимание на некоторые другие функции файлов, такие как текстовые файлы, двоичные файлы и буферы.

-

ВАЖНО! Все проекты GameMaker имеют файл с именем "options.ini", поэтому вы не можете назвать какой-либо файл таким именем (вы получите ошибку uid при попытке скомпилировать ваш игровой проект).

-

Обратите внимание, что для игр с локализацией очень важно, чтобы акцентированные буквы могли быть прочитаны из внешних файлов. Это означает, что вам следует сначала создать ini-файл в формате UTF8, а затем добавить его в GameMaker как включенный файл, чтобы он экспортировался при запуске игры и использовался вместо стандартного ini-файла в формате ANSI, который создается функциями ini по умолчанию, если он не был предоставлен ранее. Таким образом, вы сможете читать и писать в нем правильно, с сохранением всех ударений и нелатинских букв.

-

Для файлов ini существуют следующие функции:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_close.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_close.htm index b13ced753..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_close.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_close.htm @@ -1,51 +0,0 @@ - - - - - - ini_close - - - - - - - - - - -

ini_close

-

Эта функция должна быть вызвана в тот момент, когда вы закончили чтение или запись в любой открытый ini-файл. Если вы не используете эту функцию после использования любой из функций записи ini, то на диск ничего не будет записано, так как информация о файле хранится в памяти до вызова этой функции, которая принудительно выполняет запись. Если вы попытаетесь открыть ini, не закрыв предварительно другой (или тот же самый), вы также получите ошибку.

-

Функция также возвращает строку с закодированным в ней ini-файлом. Эту строку можно сохранить на сервере и/или использовать снова вместе с функцией ini_open_from_string() для повторного создания ini.

-

-

Синтаксис:

-

ini_close();

-

-

Возвращается:

-

String

-

-

Пример:

-

ini_open("savedata.ini");
- score = ini_read_real("save1", "score", 0);
- ini_close();

-

Это откроет файл "savedata.ini" и прочитает значение из секции "save1" с ключом "score", затем закроет ini-файл. Если в разделе "save1" нет значения "score" или отсутствует файл "savedata.ini", будет возвращен 0 и создан новый ini-файл.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_key_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_key_delete.htm index ae4cf4bd0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_key_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_key_delete.htm @@ -1,67 +0,0 @@ - - - - - - ini_key_delete - - - - - - - - - - -

ini_key_delete

-

С помощью этой функции вы можете удалить выбранный ключ (и соответствующее ему значение) из ini-файла.

-

-

Синтаксис:

-

ini_key_delete(section, key);

- - - - - - - - - - - - - - - -
АргументТипОписание
sectionThe section to delete a key from.
keyThe key to delete.
-

-

Возвращается:

-

-

-

Пример:

-

ini_open("savedata.ini");
ini_write_real("save1","Score",score); -
ini_key_delete("save1","Score"); -
ini_close(); -

-

Этот пример откроет файл "savedata.ini" и запишет значение в "save1" > "Score". Затем он удалит ключ "Score" и закроет файл .ini.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_key_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_key_exists.htm index 117559f32..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_key_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_key_exists.htm @@ -1,70 +0,0 @@ - - - - - - ini_key_exists - - - - - - - - - - - -

ini_key_exists

-

Эта функция проверяет, существует ли ключ в текущем открытом ini, и возвращает true, если существует, или false в противном случае. Эта проверка не является необходимой для предотвращения ошибок, поскольку, если ключ не существует, чтение из несуществующего ключа просто вернет значение по умолчанию. Однако это может быть полезно, чтобы узнать, сохранил ли ini файл определенные данные и некоторые другие вещи.

-

-

Синтаксис:

-

ini_key_exists(section, key);

- - - - - - - - - - - - - - - -
АргументТипОписание
sectionThe section in the open .ini file to check a key in.
keyThe key to check for.
-

-

Возвращается:

-

-

-

Пример:

-

ini_open("savedata.ini");
- if (!ini_key_exists("save1", "name"))
- {
-     global.name = "Player1";
- }
- ini_close();

-

Это установит переменную global.name в значение "Player1", если не существует такого ключа "name".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_open.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_open.htm index 287d871d8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_open.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_open.htm @@ -1,66 +0,0 @@ - - - - - - ini_open - - - - - - - - - - -

ini_open

-

Это открывает ini_файл для чтения и/записи. Если ini_файл не существует в проверяемом месте, GameMaker может создать его, но только если вы запишите в него данные. Если вы только считываете информацию из ini-файла, то - будут возвращены значения по умолчанию для функции read, но файл ini фактически создан не будет.

-

Обратите внимание, что одновременно у вас может быть открыт только один файл ini, и не забывайте использовать кнопку ini_close() после завершения чтения/записи из .ini файла, так как информация не сохраняется на диске до этого момента (она также хранится в памяти до закрытия файла). - диск до этого момента (она также хранится в памяти до закрытия файла).

-

ВНИМАНИЕ! Эта функция может работать не так, как вы ожидаете, из-за того, что GameMaker находится в "песочнице"! Пожалуйста, обратитесь к разделу о файловой системе для получения дополнительной информации.

-

-

Синтаксис:

-

ini_open(name);

- - - - - - - - - - - -
АргументТипОписание
nameThe filename for the .ini file.
-

-

Возвращается:

-

-

-

Пример:

-

ini_open("Settings/savedata.ini");
score = ini_read_real("save1", "score", 0);
ini_close(); -

-

Это откроет файл 'savedata.ini' и прочитает значение очков в разделе "save1" с ключом "score" в нем, затем снова закройте .ini. Если в разделе "save1" нет значения "score" или отсутствует файл "savedata.ini" - файла, счет будет установлен на 0 (значение по умолчанию). Обратите внимание, что файл ini был помещен в подкаталог "Settings", который является папкой, содержащей файл ini во включенных файлах Asset Browser.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_open_from_string.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_open_from_string.htm index fe554a811..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_open_from_string.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_open_from_string.htm @@ -1,63 +0,0 @@ - - - - - - ini_open_from_string - - - - - - - - - - - -

ini_open_from_string

-

Эта функция создаст временный ini-файл из строки и откроет его для чтения/записи. Строка должна быть правильно отформатирована как ini файл (т.е. с секциями, разрывами строк ключами и значениями), иначе ini файл не будет создан правильно. Обратите внимание, что этот ini файл является временным и будет удален из памяти в момент закрытия, потеряв всю информацию, которая была в нем сохранена, однако функция ini_close() возвращает строку полного ini файла, который затем может быть сохранен на сервере или на диске.

-

-

Синтаксис:

-

ini_open_from_string(string);

- - - - - - - - - - - -
АргументТипОписание
stringThe string containing all the ini information.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

ini_open_from_string(str)
- global.sound = ini_read_string("Options", "Sound", true);
- ini_close();

-

Приведенный выше код создает временный ini для хранения информации из строки "str", затем читает из ini, прежде чем снова закрыть его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_read_real.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_read_real.htm index 52b1c914b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_read_real.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_read_real.htm @@ -1,71 +0,0 @@ - - - - - - ini_read_real - - - - - - - - - - - -

ini_read_real

-

Вы можете использовать эту функцию для чтения числа из файла данных ini. Ini файлы разбиваются на секции, а затем каждая секция разбивается на пары ключ - значение. Таким образом, типичный ini файл выглядит следующим образом:

-

Ini file contents example

-

Синтаксис:

-

ini_read_real(section, key, default);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
sectionThe section of the .ini to read from.
keyThe key within the relevant section of the .ini to read from.
defaultThe value to return if a value is not found in the defined place (or the .ini file does not exist). Must be a real number.
-

-

Возвращается:

-

-

-

Пример:

-

ini_open("savedata.ini");
score = ini_read_real("save1", "score", 0 );
ini_close(); -

-

Это откроет файл "savedata.ini" и установит значение score в значение в разделе "save1" > "score" в нем, затем снова закроет .ini. Если в разделе "save1" > "score" нет значения, или файл "savedata.ini" отсутствует. - файла, счет будет установлен на 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_read_string.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_read_string.htm index 8f16d2f73..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_read_string.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_read_string.htm @@ -1,76 +0,0 @@ - - - - - - ini_read_string - - - - - - - - - - - -

ini_read_string

-

Вы можете использовать эту функцию для чтения строки (текста) из файла данных ini. Ini файлы разбиваются на секции, а затем каждая секция разбивается на пары ключ - значение. Таким образом, типичный ini файл будет выглядеть примерно так:

-

Ini file contents example

-

-

Синтаксис:

-

ini_read_string(section, key, default);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
sectionСтрокаThe section of the .ini to read from.
keyСтрокаThe key within the relevant section of the .ini to read from.
defaultСтрокаThe string to return if a string is not found in the defined place (or the .ini file does not exist). Must be a string.
-

-

Возвращается:

-

String

-

-

Пример:

-

ini_open("savedata.ini");
- global.name = ini_read_string("player", "name', "Player1");
- ini_close();

-

Это откроет файл "savedata.ini" и установит global.name в строку "save1" > "Name" в нем, затем снова закройте .ini. Если в строке "save1" > "Name" нет строки, или отсутствует файл "savedata.ini", global.name будет установлен на "Player1".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_section_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_section_delete.htm index cb62541d2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_section_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_section_delete.htm @@ -1,62 +0,0 @@ - - - - - - ini_section_delete - - - - - - - - - - -

ini_section_delete

-

С помощью этой функции вы можете удалить целый раздел ini-файла, при этом будут удалены все пары ключ-значение, которые с ним связаны.

-

-

Синтаксис:

-

ini_section_delete(section);

- - - - - - - - - - - -
АргументТипОписание
sectionThe section to delete.
-

-

Возвращается:

-

-

-

Пример:

-

ini_open("savedata.ini");
ini_write_real("save1", "Score", score );
ini_section_delete("save1"); -
ini_close(); -

-

Этот пример откроет файл "savedata.ini" и запишет значение в "save1" > "Score". Затем он удалит раздел "save1" и закроет файл .ini.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_section_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_section_exists.htm index 7db7eeeb6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_section_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_section_exists.htm @@ -1,66 +0,0 @@ - - - - - - ini_section_exists - - - - - - - - - - - -

ini_section_exists

-

Эта функция проверяет, существует ли раздел в текущем открытом ini, и возвращает true, если существует, или false в противном случае. Это не является необходимой проверкой для предотвращения ошибок, поскольку, если раздел не существует, чтение из несуществующего раздела просто вернет значение по умолчанию, однако это может быть полезно, чтобы узнать, сохранил ли ini файл определенные данные.

-

-

Синтаксис:

-

ini_section_exists(section);

- - - - - - - - - - - -
АргументТипОписание
sectionThe section in the open .ini file to check for.
-

-

Возвращается:

-

-

-

Пример:

-

ini_open("savedata.ini");
- if (!ini_section_exists("save1"))
- {
-     global.savegame = "1";
- }
- ini_close();

-

Это установит переменную global.savegame в значение "1", если "save1" НЕ найден. С помощью цикла for это можно использовать как основной способ определения количества сохранений для игры (т.е. создать систему для нескольких одновременных сохранений для одной игры).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_write_real.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_write_real.htm index dd140892a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_write_real.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_write_real.htm @@ -1,72 +0,0 @@ - - - - - - ini_write_real - - - - - - - - - - -

ini_write_real

-

Эту функцию можно использовать для записи значения (числового) в файл данных ini. Ini файлы разбиваются на секции, а затем каждая секция разбивается на пары ключ - значение. Таким образом, типичный ini файл будет выглядеть примерно так:

-

Ini file contents example

-

-

Синтаксис:

-

ini_write_real(section, key, value);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
sectionThe section of the .ini to write to.
keyThe key within the relevant section of the .ini to write to.
valueThe real value to write to the relevant destination.
-

-

Возвращается:

-

-

-

Пример:

-

score = 1000;
ini_open("savedata.ini"); -
ini_write_real("save1", "Score", score );
score2 = ini_read_real("save1", "Score", 0 );
ini_close(); -

-

Это установит score в 1000, затем откроет "savedata.ini" и запишет это значение в "save1" > "Score". Затем в "save1" > "score" будет установлено значение score2, равное 1000, и закроется файл .ini. - снова. Если бы он не нашел это значение, счет2 в итоге был бы равен 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_write_string.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_write_string.htm index 2f4dc3058..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_write_string.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Ini_Files/ini_write_string.htm @@ -1,77 +0,0 @@ - - - - - - ini_write_string - - - - - - - - - - -

ini_write_string

-

Вы можете использовать эту функцию для записи строки (текста) в файл данных ini. Ini файлы разбиваются на секции, а затем каждая секция разбивается на пары ключ - значение. Таким образом, типичный ini файл будет выглядеть примерно так:

-

Стоит отметить, что использование кавычек и управляющих символов при записи строк ini может привести к проблемам при последующем чтении данных, так как они могут быть преждевременно усечены. Например, при записи этого файла возникнут проблемы:

-

ini_write_string("test2", "section", "hello \"Fritz\"");

-

-

-

Синтаксис:

-

ini_write_string(section, key, value);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
sectionСтрокаThe section of the .ini to write to.
keyСтрокаThe key within the relevant section of the .ini to write to.
valueСтрокаThe string to write to the relevant destination.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

ini_open("savedata.ini");
- ini_write_string("Save", "Player", global.Name);
- ini_close();

-

Приведенный выше код открывает ini-файл для чтения и записи, затем записывает строку, хранящуюся в глобальной переменной "Name", в раздел "Save" с ключом "Player", после чего снова закрывает файл.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/Text_Files.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/Text_Files.htm index 0e104b0c9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/Text_Files.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/Text_Files.htm @@ -1,55 +0,0 @@ - - - - - - Текстовые файлы - - - - - - - - - - -

Текстовые файлы

-

Текстовые файлы - это полезный способ хранения больших объемов данных вне игры. В отличие от ini файлов, вы можете иметь до 32 текстовых файлов, открытых одновременно, и вы можете читать и записывать в них большие куски данных. Однако вы сами решаете, как эти данные должны быть структурированы, поскольку здесь нет установленной структуры "секций" или "ключей", как в файлах*.ini .

-

Обратите внимание, что для игр с локализацией очень важно, чтобы акцентированные буквы могли быть прочитаны из внешних файлов. Это означает, что вам следует сначала создать txt-файл в формате UTF8, а затем добавить его в GameMaker в качестве включенного файла, чтобы он экспортировался при запуске игры и использовался вместо стандартного txt-файла в формате ANSI, который создается файловыми функциями GameMaker, если файл не был предоставлен ранее. Таким образом, вы сможете читать и писать в нем правильно, с сохранением всех ударений и нелатинских букв.

-

Существуют следующие функции, работающие с файлами:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_close.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_close.htm index c056cd5f2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_close.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_close.htm @@ -1,66 +0,0 @@ - - - - - - file_text_close - - - - - - - - - - -

file_text_close

-

После завершения работы с файлом (чтения из него или записи в него) вы должны закрыть его снова, иначе вы рискуете потерять содержащуюся в нем информацию. Это также предотвращает утечку памяти и гарантирует, что вы никогда не превысите лимит файлов, имея более 32 открытых файлов.

-

-

Синтаксис:

-

file_text_close(fileid);

- - - - - - - - - - - -
АргументТипОписание
fileidThe id of the file to close.
-

-

Возвращается:

-

-

-

Пример:

-

var file = file_text_open_write(working_directory + "Game_Data.txt");
- while (!file_text_eof(file))
- {
-     file_text_readln(file);
- }
- file_text_write_string(file, level_data);
- file_text_close(file);

-

Приведенный выше код открывает файл для записи, затем циклически просматривает строки текста, уже записанные в файл, пока не дойдет до конца. В этот момент он записывает строку, а затем снова закрывает файл.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_eof.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_eof.htm index 44df62225..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_eof.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_eof.htm @@ -1,67 +0,0 @@ - - - - - - file_text_eof - - - - - - - - - - - -

file_text_eof

-

Эта функция возвращает true, если достигнут конец заданного открытого текстового файла, или false, если нет.

-

-

Синтаксис:

-

file_text_eof(fileid);

- - - - - - - - - - - -
АргументТипОписание
fileidThe id of the file to check.
-

-

Возвращается:

-

-

-

Пример:

-

var num = 0;
- var file = file_text_open_read(working_directory + "Game_Data.txt");
- while (!file_text_eof(file))
- {
-     str[num++] = file_text_readln(file);
- }
- file_text_close(file);

-

Приведенный выше код открывает файл для записи, затем циклически просматривает строки текста, уже записанные в файл, пока не достигнет конца, сохраняя каждую строку в массиве "str".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_eoln.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_eoln.htm index 3817f4ed4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_eoln.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_eoln.htm @@ -1,66 +0,0 @@ - - - - - - file_text_eoln - - - - - - - - - - -

file_text_eoln

-

С помощью этой функции вы можете заставить GameMaker проверить текущий открытый файл на предмет завершения чтения строки. Функция возвращает true, если конец строки достигнут, и false в противном случае.

-

-

Синтаксис:

-

file_text_eoln(fileid);

- - - - - - - - - - - -
АргументТипОписание
fileidThe id of the file to check.
-

-

Возвращается:

-

-

-

Пример:

-

var file = file_text_open_read(working_directory + "Game_Data.txt");
- var num = 0; while (!file_text_eoln(file))
- {
-     score_array[num] = file_text_read_real(file);
-     num++;
- }
- file_text_close(file);

-

Приведенный выше код открывает файл для чтения, затем считывает значения из одной строки в массив.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_open_append.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_open_append.htm index 09cdcdae9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_open_append.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_open_append.htm @@ -1,66 +0,0 @@ - - - - - - file_text_open_append - - - - - - - - - - - -

file_text_open_append

-

Эта функция открывает текстовый файл с указанным именем для записи (если файл не существует, он создается), возвращая уникальный идентификатор файла, который следует сохранить в переменной, так как он будет использоваться для всех дальнейших действий с этим файлом. Позиция в файле для записи устанавливается на последнюю строку текста, которую содержит файл, поэтому все существующие данные не перезаписываются.

-

Обратите внимание, что если файл не может быть создан (например, из-за недопустимого имени файла), функция вернет -1.

-

ПРИМЕЧАНИЕ: Одновременно может быть открыто не более 32 файлов. Вы также должны всегда закрывать файлы после завершения работы, так как при этом записывается информация и освобождается память, связанная с файлом.

-

ВНИМАНИЕ! Эта функция может работать не так, как вы ожидаете, из-за того, что GameMaker находится в "песочнице"! Пожалуйста, обратитесь к разделу о файловой системе для получения дополнительной информации.

-

-

Синтаксис:

-

file_text_open_append(fname);

- - - - - - - - - - - - - -
АргументТипОписание
fnameСтрокаThe name of the file to append to.
-

-

Возвращается:

-

Text File ID or -1

-

-

Пример:

-

file = file_text_open_append(working_directory + "save.txt");

-

Это откроет файл "save.txt" из той же директории, что и игра, и сохранит идентификатор файла в переменной "file".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_open_from_string.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_open_from_string.htm index 05ab80eab..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_open_from_string.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_open_from_string.htm @@ -1,62 +0,0 @@ - - - - - file_text_open_from_string - - - - - - - - - - - -

file_text_open_from_string

-

Эта функция создает текстовый файл из строки и открывает его для чтения, возвращая "handle" файла, который должен использоваться во всех последующих вызовах функции file для чтения из этого файла. Обратите внимание, что этот файл является временным и предназначен только для чтения, и как таковой он будет удален из памяти в момент его закрытия.

-

ПРИМЕЧАНИЕ: Одновременно может быть открыто не более 32 файлов. Вы также должны всегда закрывать файлы после завершения работы, так как при этом записывается информация и освобождается память, связанная с файлом.

-

ВНИМАНИЕ! Эта функция может работать не так, как вы ожидаете, из-за того, что GameMaker находится в "песочнице"! Пожалуйста, обратитесь к разделу о файловой системе для получения дополнительной информации.

-

-

Синтаксис:

-

file_text_open_from_string(string);

- - - - - - - - - - - -
АргументТипОписание
stringThe string to create the file from.
-

-

Возвращается:

-

File ID or -1

-

-

Пример:

-

file = file_text_open_from_string(reset_str);

-

Приведенный выше код берет строку, хранящуюся в переменной "reset_str", и использует ее для создания текстового файла, доступного только для чтения. Затем "handle" этого файла сохраняется в переменной "file" для использования всеми дальнейшими файловыми функциями.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_open_read.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_open_read.htm index 1b2875ea7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_open_read.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_open_read.htm @@ -1,63 +0,0 @@ - - - - - - file_text_open_read - - - - - - - - - - - -

file_text_open_read

-

Эта функция открывает текстовый файл с указанным именем только для чтения, возвращая уникальный идентификатор файла, который следует сохранить в переменной, так как он будет использоваться для всех дальнейших действий с этим файлом. Если файл не существует, то функция вернет значение -1.

-

ПРИМЕЧАНИЕ: Одновременно может быть открыто не более 32 файлов. Вы также должны всегда закрывать файлы после завершения работы, так как при этом записывается информация и освобождается память, связанная с файлом.

-

ВНИМАНИЕ! Эта функция может работать не так, как вы ожидаете, из-за того, что GameMaker находится в "песочнице"! Пожалуйста, обратитесь к разделу о файловой системе для получения дополнительной информации.

-

-

Синтаксис:

-

file_text_open_read(fname);

- - - - - - - - - - - -
АргументТипОписание
fnameThe name of the file to read from.
-

-

Возвращается:

-

Text File ID or -1

-

-

Пример:

-

file = file_text_open_read(working_directory + "level.txt");

-

Это откроет файл "level.txt" из той же директории, что и игра, и сохранит идентификатор файла в переменной "file".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_open_write.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_open_write.htm index 482559000..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_open_write.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_open_write.htm @@ -1,70 +0,0 @@ - - - - - - file_text_open_write - - - - - - - - - - - -

file_text_open_write

-

Эта функция открывает текстовый файл с указанным именем только для записи (если файл не существует, он создается), возвращая уникальный идентификатор файла, который следует сохранить в переменной, так как он будет использоваться для всех дальнейших действий с этим файлом.

-

Обратите внимание, что если файл не может быть создан (например, из-за недопустимого имени файла), функция вернет -1.

-

Если файл уже существует, использование этой функции приведет к его перезаписи при сохранении данных. Если вы хотите добавить данные в файл, сохранив его существующее содержимое нетронутым, используйте функцию file_text_open_append().

-

ПРИМЕЧАНИЕ: Одновременно может быть открыто не более 32 файлов. Вы также должны всегда закрывать файлы после завершения работы, так как при этом записывается информация и освобождается память, связанная с файлом.

-

ВНИМАНИЕ! Эта функция может работать не так, как вы ожидаете, из-за того, что GameMaker находится в "песочнице"! Пожалуйста, обратитесь к разделу о файловой системе для получения дополнительной информации.

-

-

Синтаксис:

-

file_text_open_write(fname);

- - - - - - - - - - - - - -
АргументТипОписание
fnameСтрокаThe name of the file to write to.
-

-

Возвращается:

-

Text File ID or -1

-

-

Пример:

-

var file;
- file = file_text_open_write(working_directory + "level.txt");
- file_text_write_string(file, level_data);
- file_text_close(file);

-

Приведенный выше код откроет файл "level.txt" для записи, а затем запишет строку, хранящуюся в переменной "level_data", после чего снова закроет файл.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_read_real.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_read_real.htm index a1db71344..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_read_real.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_read_real.htm @@ -1,68 +0,0 @@ - - - - - - file_text_read_real - - - - - - - - - - -

file_text_read_real

-

С помощью этой функции можно считать значение вещественного числа из текстового файла, а функция возвращает это значение для использования или хранения в переменной.

-

-

Синтаксис:

-

file_text_read_real(fileid);

- - - - - - - - - - - -
АргументТипОписание
fileidThe id of the file to read from.
-

-

Возвращается:

-

-

-

Пример:

-

var file = file_text_open_read(working_directory + "hiscore.txt");
- for (var i = 0; i < 10; ++i)
- {
-     scr[i] = file_text_read_real(file);
-     file_text_readln(file);
-     scr_name[i] = file_text_read_string(file);
-     file_text_readln(file);
- }
- file_text_close(file);

-

Приведенный выше код открывает файл для чтения, а затем циклически просматривает строки файла, считывая поочередно значение вещественного числа и строку в два разных массива для дальнейшего использования. После завершения цикла файл закрывается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_read_string.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_read_string.htm index 74c118f9e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_read_string.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_read_string.htm @@ -1,68 +0,0 @@ - - - - - - file_text_read_string - - - - - - - - - - -

file_text_read_string

-

С помощью этой функции вы можете прочитать строку из текстового файла, а функция возвращает это значение для использования или хранения в переменной.

-

-

Синтаксис:

-

file_text_read_string(fileid);

- - - - - - - - - - - -
АргументТипОписание
fileidThe id of the file to read from.
-

-

Возвращается:

-

-

-

Пример:

-

var file = file_text_open_read(working_directory + "hiscore.txt");
- for (var i = 0; i < 10; ++i)
- {
-     scr[i] = file_text_read_real(file);
-     file_text_readln(file);
-     scr_name[i] = file_text_read_string(file);
-     file_text_readln(file);
- }
- file_text_close(file);

-

Приведенный выше код открывает файл для чтения, а затем циклически просматривает строки файла, считывая поочередно значение вещественного числа и строку в два разных массива для дальнейшего использования. После завершения цикла файл закрывается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_readln.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_readln.htm index 76da8061b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_readln.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_readln.htm @@ -1,68 +0,0 @@ - - - - - - file_text_readln - - - - - - - - - - -

file_text_readln

-

С помощью этой функции вы можете пропустить остаток текущей строки из данного открытого текстового файла и перейти к началу следующей. Функция также возвращает всю строку в виде строки, что делает ее удобной для чтения полных "кусков" данных для последующего разбора.

-

-

Синтаксис:

-

file_text_readln(fileid);

- - - - - - - - - - - -
АргументТипОписание
fileidThe id of the file to read from.
-

-

Возвращается:

-

-

-

Пример:

-

var file = file_text_open_read(working_directory + "hiscore.txt");
- for (var i = 0; i < 10; ++i)
- {
-     scr[i] = file_text_read_real(file);
-     file_text_readln(file);
-     scr_name[i] = file_text_read_string(file);
-     file_text_readln(file);
- }
- file_text_close(file);

-

Приведенный выше код открывает файл для чтения, а затем циклически просматривает строки файла, считывая поочередно значение вещественного числа и строку в два разных массива для дальнейшего использования. После завершения цикла файл закрывается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_write_real.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_write_real.htm index 0b5ee4a6e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_write_real.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_write_real.htm @@ -1,73 +0,0 @@ - - - - - - file_text_write_real - - - - - - - - - - -

file_text_write_real

-

С помощью этой функции вы можете записать число в ранее открытый текстовый файл. Обратите внимание, что поскольку записываемое значение может быть вещественным числом, все десятичные знаки будут записаны с точкой "." в качестве разделителя. Если файл уже содержит информацию, эта информация будет стерта, а строка будет записана в начало файла, если только вы не открыли файл с помощью функции file_text_open_append(). Вы также можете избежать этого, используя file_text_readln() вместе с функцией file_text_eof() для перебора содержимого файла до конца, а затем начать запись.

-

Важно отметить, что при записи очень больших чисел в текстовый файл с помощью этой функции они могут быть переведены в стандартный упрощенный формат, например, "6.6624e+003", который не может быть правильно считан обратно в GameMaker. Чтобы избежать подобных проблем, вместо этого преобразуйте значение в строку и используйте функцию file_text_write_string() вместо этого.

-

-

Синтаксис:

-

file_text_write_real(fileid, val);

- - - - - - - - - - - - - - - -
АргументТипОписание
fileidThe id of the file to edit.
valThe real value to write to the file.
-

-

Возвращается:

-

-

-

Пример:

-

var file = file_text_open_write(working_directory + "hiscore.txt");
- for (var i = 0; i < 10; ++i)
- {
-     file_text_write_real(file, scr[i]);
-     file_text_writeln(file);
-     file_text_write_string(file, scr_name[i]);
-     file_text_writeln(file);
- }
- file_text_close(file);

-

Приведенный выше код открывает файл для записи, а затем в цикле просматривает два массива, записывая каждое значение массива в новую строку файла. После завершения цикла файл закрывается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_write_string.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_write_string.htm index 79d65f029..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_write_string.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_write_string.htm @@ -1,72 +0,0 @@ - - - - - - file_text_write_string - - - - - - - - - - -

file_text_write_string

-

С помощью этой функции вы можете записать строку в ранее открытый текстовый файл. Если файл уже содержит информацию, эта информация будет стерта, а строка будет записана в начало файла, если только вы не открыли файл с помощью функции file_text_open_append(). Вы также можете избежать этого, используя file_text_readln() вместе с функцией file_text_eof() чтобы просмотреть содержимое файла до конца, а затем начать запись.

-

-

Синтаксис:

-

file_text_write_string(fileid, str);

- - - - - - - - - - - - - - - -
АргументТипОписание
fileidThe id of the file to edit.
strThe string to write to the file.
-

-

Возвращается:

-

-

-

Пример:

-

var file = file_text_open_write(working_directory + "hiscore.txt");
- for (var i = 0; i < 10; ++i)
- {
-     file_text_write_real(file, scr[i]);
-     file_text_writeln(file);
-     file_text_write_string(file, scr_name[i]);
-     file_text_writeln(file);
- }
- file_text_close(file);

-

Приведенный выше код открывает файл для записи, а затем в цикле просматривает два массива, записывая каждое значение массива в новую строку файла. После завершения цикла файл закрывается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_writeln.htm b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_writeln.htm index ce0709a00..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_writeln.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/File_Handling/Text_Files/file_text_writeln.htm @@ -1,68 +0,0 @@ - - - - - - file_text_writeln - - - - - - - - - - -

file_text_writeln

-

С помощью этой функции можно записать новую строку в открытый текстовый файл. Таким образом, вы можете пропускать строки или записывать информацию построчно (см. пример кода ниже).

-

-

Синтаксис:

-

file_text_writeln(fileid);

- - - - - - - - - - - -
АргументТипОписание
fileidThe id of the file to edit.
-

-

Возвращается:

-

-

-

Пример:

-

var file = file_text_open_write(working_directory + "hiscore.txt");
- for (var i = 0; i < 10; ++i)
- {
-     file_text_write_real(file, scr[i]);
-     file_text_writeln(file);
-     file_text_write_string(file, scr_name[i]);
-     file_text_writeln(file);
- }
- file_text_close(file);

-

Приведенный выше код открывает файл для записи, а затем в цикле просматривает два массива, записывая каждое значение массива в новую строку файла. После завершения цикла файл закрывается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/GML_Reference.htm b/Manual/contents/GameMaker_Language/GML_Reference/GML_Reference.htm index d64de4cbe..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/GML_Reference.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/GML_Reference.htm @@ -1,67 +0,0 @@ - - - - - - Справочник по {GML_Code} - - - - - - - - - - - - -

Справочник по GML Code

-

Этот раздел руководства представляет собой справочное руководство для GameMaker Language (GML). Здесь вы найдете все доступные функции, документированные вместе с необходимыми аргументами и примерами кода, показывающими, как их можно использовать. Для получения информации о том, как использовать GML, пожалуйста, обратитесь к разделу Обзор GML раздел руководства.

-

ПРИМЕЧАНИЕ Везде, где в руководстве в качестве возвращаемого значения функции указано "N/A", это означает, что функция не предназначена для возврата какого-либо значения в рамках своей работы. Если вы попытаетесь проверить возвращаемое значение из этих функций, то получите значение undefined.

- -

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/GXC/Challenges/gxc_pause_movie_recording.htm b/Manual/contents/GameMaker_Language/GML_Reference/GXC/Challenges/gxc_pause_movie_recording.htm index d589f2b0e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/GXC/Challenges/gxc_pause_movie_recording.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/GXC/Challenges/gxc_pause_movie_recording.htm @@ -1,51 +0,0 @@ - - - - - - gxc_pause_movie_recording - - - - - - - - - - -

gxc_pause_movie_recording

-

Эта функция используется для приостановки записи GXC, которая ранее была начата с помощью gxc_start_movie_recording().

-

-

Синтаксис:

-

gxc_pause_movie_recording();

-

-

Возвращается:

-

-

-

Пример:

-

if (keyboard_check_pressed(vk_escape))
- {
-     gxc_pause_movie_recording();
- }

-

Это приостановит запись видеоролика GXC, если нажата клавиша escape.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/GXC/Challenges/gxc_resume_movie_recording.htm b/Manual/contents/GameMaker_Language/GML_Reference/GXC/Challenges/gxc_resume_movie_recording.htm index 60c9e545a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/GXC/Challenges/gxc_resume_movie_recording.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/GXC/Challenges/gxc_resume_movie_recording.htm @@ -1,51 +0,0 @@ - - - - - - gxc_resume_movie_recording - - - - - - - - - - -

gxc_resume_movie_recording

-

Эта функция используется для возобновления записи GXC, которая ранее была приостановлена с помощью gxc_pause_movie_recording().

-

-

Синтаксис:

-

gxc_resume_movie_recording();

-

-

Возвращается:

-

-

-

Пример:

-

if (keyboard_check_pressed(vk_enter))
- {
-     gxc_resume_movie_recording();
- }

-

Это возобновит приостановленную в данный момент запись видеоролика GXC, если нажать клавишу ввода.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/GXC/Challenges/gxc_start_movie_recording.htm b/Manual/contents/GameMaker_Language/GML_Reference/GXC/Challenges/gxc_start_movie_recording.htm index 41c5ab081..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/GXC/Challenges/gxc_start_movie_recording.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/GXC/Challenges/gxc_start_movie_recording.htm @@ -1,82 +0,0 @@ - - - - - - gxc_start_movie_recording - - - - - - - - - - -

gxc_start_movie_recording

-

Эта функция используется для начала записи вашего испытания на GXC. Вы указываете ширину, высоту и частоту кадров записи, а также булево значение для того, нужно ли записывать звук или нет.

-

-

Синтаксис:

-

gxc_start_movie_recording(width, height, fps, record_audio);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
widthРеальноThe width of the recording
heightРеальноThe height of the recording
fpsРеальноThe frame rate (frames-per-second) of the recording
record_audioБулевоWhether audio should be recorded (true) или нет (false)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

gxc_start_movie_recording(320, 240, 4, false);

-

При этом начнется запись видео с разрешением 320x240 при частоте 4 кадра в секунду, без записи звука.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/GXC/Challenges/gxc_stop_movie_recording.htm b/Manual/contents/GameMaker_Language/GML_Reference/GXC/Challenges/gxc_stop_movie_recording.htm index 36b38e816..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/GXC/Challenges/gxc_stop_movie_recording.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/GXC/Challenges/gxc_stop_movie_recording.htm @@ -1,75 +0,0 @@ - - - - - - gxc_stop_movie_recording - - - - - - - - - - -

gxc_stop_movie_recording

-

Эта функция используется для остановки записи GXC, ранее начатой с помощью gxc_start_movie_recording(). Она также отправляет запись на URL, указанный в аргументах, однако поведение отличается в зависимости от типа указанной строки:

-
    -
  • Если вы укажете имя файла, запись будет сохранена с этим именем в папке "Загрузки".
  • -
  • Если вы укажете URL, запись будет загружена на этот URL.
  • -
-

Метод URL следует использовать, когда запись необходимо загрузить в GXC, а файл следует сохранить локально только для проверки успешности записи.

-

-

Синтаксис:

-

gxc_stop_movie_recording(filename);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
filenameСтрокаThe file name or URL where the recording is to be saved or uploaded
-

-

Возвращается:

-

N/A

-

-

Пример:

-

gxc_submit_challenge_score(_score, function(_status, _result) {
-     var _uploadUrl = _result.data.gameplayVideoUploadUrl;
-     gxc_stop_movie_recording(_uploadUrl);
- });

-

Приведенный выше код использует библиотеку API GXC для загрузки оценки в активный в данный момент вызов, а когда в его методе обратного вызова получен ответ, он извлекает URL-адрес загрузки видео и загружает запись в него.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/Device_Input.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/Device_Input.htm index 36ae27c1b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/Device_Input.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/Device_Input.htm @@ -1,99 +0,0 @@ - - - - - - Ввод устройства - - - - - - - - - - -

Ввод устройства

-

Если ваша игра предназначена для платформ, поддерживающих мультитач, вам следует использовать эти функции. Они работают так же, как работали бы на ПК, если бы к нему было подключено несколько мышей, а константы, которые проверяются, такие же, как и для стандартных функций мыши:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
mb_leftЛевая кнопка мыши
mb_middleСредняя кнопка мыши (это может быть актуально не для всех целевых платформ)
mb_rightПравая кнопка мыши
mb_side1*Боковая кнопка мыши 1
mb_side2*Боковая кнопка мыши 2
mb_anyЛюбая из кнопок мыши
mb_noneОтсутствие кнопки мыши
-

ПРИМЕЧАНИЕ * Кнопки mb_side1 и mb_side2 доступны только на сайтах Windows, macOS, Ubuntu и HTML5.

-

Все функции могут принимать значение "касание", соответствующее прикосновению к дисплею устройства, однако максимальное количество прикосновений, которое может быть обнаружено, во многом зависит от устройства и используемой ОС. Например, некоторые бюджетные устройства Android могут распознавать только 2-3 прикосновения одновременно, в то время как UWP-устройства могут распознавать до 10 прикосновений. Обратите внимание, что на устройствах с сенсорным экраном двойное нажатие возвращается как эквивалент события правой кнопки мыши. Поэтому, если вам нужно обнаружить, например, несколько нажатий в быстрой последовательности, вам нужно будет проверить как mb_left, так и mb_right. Эту функциональность можно включить или выключить с помощью функции device_mouse_dbclick_enable().

-

Ниже приведен список всех функций управления, характерных для конкретного устройства:

- -

-

Обратите внимание, что на мобильных устройствах (Android, iOS и Windows Phone) вы можете использовать кнопку назад в любое время, так как она сопоставлена с клавиатурной клавишей backspace, которая является клавиатурной константой GameMaker vk_backspace, поэтому вы можете делать проверки для этой клавиши и выполнять действия на этих устройствах, как если бы использовалась кнопка назад.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_get_tilt_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_get_tilt_x.htm index 818240344..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_get_tilt_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_get_tilt_x.htm @@ -1,56 +0,0 @@ - - - - - - device_get_tilt_x - - - - - - - - - - - -

device_get_tilt_x

-

Эта функция возвращает значение от -1 до 1 в зависимости от угла "наклона" устройства. Фактическое соотношение между градусами наклона и возвращаемым значением зависит от устройства и используемой ОС, но обычно значение 1 или -1 соответствует +/-90°. На рисунке ниже показано, как каждая из доступных функций связана с устройством:

-

Tilt X/Y/Z on mobile devices

-

Синтаксис:

-

device_get_tilt_x()

-

-

Возвращается:

-

-

-

Пример:

-

if display_get_orientation() = display_landscape
- {
-     x += sign(device_get_tilt_y());
- }
- else
- {
-     x += sign(device_get_tilt_x());
- }

-

Приведенный выше код проверяет ориентацию дисплея, а затем использует соответствующее значение наклона для перемещения игрока вдоль оси x.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_get_tilt_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_get_tilt_y.htm index 387376191..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_get_tilt_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_get_tilt_y.htm @@ -1,56 +0,0 @@ - - - - - - device_get_tilt_y - - - - - - - - - - - -

device_get_tilt_y

-

Эта функция возвращает значение от -1 до 1 в зависимости от угла "наклона" устройства. Фактическое соотношение между градусами наклона и возвращаемым значением зависит от устройства и используемой ОС, но обычно значение 1 или -1 соответствует +/-90°. На рисунке ниже показано, как каждая из доступных функций связана с устройством:

-

Tilt X/Y/Z on mobile devices

-

Синтаксис:

-

device_get_tilt_y()

-

-

Возвращается:

-

-

-

Пример:

-

if display_get_orientation() = display_landscape
- {
-     x += sign(device_get_tilt_y());
- }
- else
- {
-     x += sign(device_get_tilt_x());
- }

-

Приведенный выше код проверяет ориентацию дисплея, а затем использует соответствующее значение наклона для перемещения игрока вдоль оси x.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_get_tilt_z.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_get_tilt_z.htm index d8b4452b8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_get_tilt_z.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_get_tilt_z.htm @@ -1,49 +0,0 @@ - - - - - device_get_tilt_z - - - - - - - - - - - -

device_get_tilt_z

-

Эта функция возвращает значение от -1 до 1 в зависимости от угла "наклона" устройства. Фактическое соотношение между градусами наклона и возвращаемым значением зависит от устройства и используемой ОС, но обычно значение 1 или - -1 - это то же самое, что +/-90°. На рисунке ниже показано, как каждая из доступных функций связана с устройством:

-

Tilt X/Y/Z on mobile devices

-

Синтаксис:

-

device_get_tilt_z()

-

-

Возвращается:

-

-

-

Пример:

-

y += sign(device_get_tilt_z());

-

Приведенный выше код использует значение наклона для перемещения игрока вдоль оси y.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_is_keypad_open.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_is_keypad_open.htm index 31873147e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_is_keypad_open.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_is_keypad_open.htm @@ -1,57 +0,0 @@ - - - - - - device_is_keypad_open - - - - - - - - - - - -

device_is_keypad_open

-

Эта функция проверяет устройство на наличие клавиатуры, и если таковая имеется, возвращает true, в противном случае возвращает false. Обратите внимание, что эта функция предназначена в основном для использования с устройствами Android.

-

Для пользователей Sony Xperia Play в GameMaker есть настройка карты кнопок и клавиш, поэтому вы можете использовать клавиатурные константы vk_up, vk_down, vk_left, vk_right для клавиш джойпада, а треугольник - ord("T"), квадрат - ord("S"), круг - vk_alt + vk_backspace, а кнопка назад - просто vk_backspace, крестик - vk_space, Select - vk_return и Start - vk_rshift, триггер L - ord("L") и триггер R - ord("R").

-

-

Синтаксис:

-

device_is_keypad_open -

-

Возвращается:

-

-

-

Пример:

-

if device_is_keypad_open()
- {
-      global.Setting = 2;
- }
- else
- {
-      global.Setting = 1;
- }

-

Приведенный выше код проверяет наличие клавиатуры, затем изменяет глобальную переменную в зависимости от возвращаемого значения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_check_button.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_check_button.htm index d3d21b94d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_check_button.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_check_button.htm @@ -1,70 +0,0 @@ - - - - - - device_mouse_check_button - - - - - - - - - - - -

device_mouse_check_button

-

Эта функция возвращает true или false в зависимости от того, удерживается ли заданная кнопка мыши на данном устройстве. Для кнопки мыши вы можете задать одну из констант, перечисленных на этой странице.

-

Эта функция может использоваться для сенсорных экранов, а аргумент устройства может быть от 0 до n, где n - максимальное количество "пальцев", которые могут касаться экрана одновременно (максимальное количество касаний, которые могут быть обнаружены, будет сильно зависеть от используемого устройства, но большинство устройств должны определять как минимум до 4. - будет обнаружено, во многом зависит от используемого устройства и ОС, под управлением которой оно работает, но большинство устройств должны обнаруживать не менее 4). Обратите внимание, что mb_right будет обнаружен только при двойном касании (это поведение можно отключить с помощью функции - функция device_mouse_dbclick_enable()).

-

-

Синтаксис:

-

device_mouse_check_button(device, button);

- - - - - - - - - - - - - - - -
АргументТипОписание
deviceThe device (from 0 - n) that is being checked
buttonThe button of the device that is being checked.
-

-

Возвращается:

-

-

-

Пример:

-

if device_mouse_check_button(0, mb_left) && device_mouse_check_button(1, mb_left)
{ -
    room_goto(rm_Menu);
} -

-

Приведенный выше код проверяет, удерживаются ли два касания одновременно, и если да, то переходит в другую комнату.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_check_button_pressed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_check_button_pressed.htm index 45860ec4c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_check_button_pressed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_check_button_pressed.htm @@ -1,68 +0,0 @@ - - - - - - device_mouse_check_button_pressed - - - - - - - - - - - -

device_mouse_check_button_pressed

-

Эта функция возвращает true или false в зависимости от того, было ли указанное вами устройство "затронуто" (нажато) или нет. Аргумент device указывает на номер касания, который может быть от 0 до n, а максимальное количество касаний, которое может быть обнаружено, будет сильно зависеть от используемого устройства и ОС, под управлением которой оно работает (большинство устройств поддерживают не менее 4 одновременных касаний). Эта функция срабатывает только один раз при фактическом нажатии, и для проверки кнопок мыши можно использовать константы, перечисленные на этой странице. Обратите внимание, что mb_right будет обнаружен только в случае двойного касания и удержания при втором касании (это поведение можно отключить с помощью функции device_mouse_dbclick_enable()).

-

-

Синтаксис:

-

device_mouse_check_button_pressed(device, button);

- - - - - - - - - - - - - - - -
АргументТипОписание
deviceThe device (from 0 - n) that is being checked.
buttonThe button of the device that is being checked.
-

-

Возвращается:

-

-

-

Пример:

-

if device_mouse_check_button_pressed(0, mb_left)
- {
-     press = true;
- }

-

Приведенный выше код проверяет, было ли нажато устройство, и устанавливает переменную в true, если да.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_check_button_released.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_check_button_released.htm index f567c9275..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_check_button_released.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_check_button_released.htm @@ -1,68 +0,0 @@ - - - - - - device_mouse_check_button_released - - - - - - - - - - - -

device_mouse_check_button_released

-

Эта функция возвращает true или false в зависимости от того, было ли отпущено указанное вами касание устройства или нет. Аргумент device указывает на номер касания устройства, который может быть от 0 до n. Обратите внимание, что максимальное количество касаний, которое может быть обнаружено, сильно зависит от используемого устройства и ОС, под управлением которой оно работает (большинство устройств поддерживают не менее 4 одновременных касаний). Эта функция срабатывает только один раз при фактическом действии отпускания, и для проверки кнопок мыши можно использовать константы, перечисленные на этой странице. Обратите внимание, что mb_right будет обнаружен только в том случае, если обнаружено двойное касание и удерживается второе касание перед отпусканием (это поведение можно отключить с помощью функции device_mouse_dbclick_enable()).

-

-

Синтаксис:

-

device_mouse_check_button_released(device, button);

- - - - - - - - - - - - - - - -
АргументТипОписание
deviceThe device (from 0 - n) that is being checked.
buttonThe button of the device that is being checked.
-

-

Возвращается:

-

-

-

Пример:

-

if device_mouse_check_button_released(0, mb_left)
- {
-     press = false;
- }

-

Приведенный выше код проверяет, было ли нажато устройство, и устанавливает переменную в false, если было.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_dbclick_enable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_dbclick_enable.htm index 8e6e84937..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_dbclick_enable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_dbclick_enable.htm @@ -1,66 +0,0 @@ - - - - - - device_mouse_dbclick_enable - - - - - - - - - - -

device_mouse_dbclick_enable

-

С помощью этой функции можно настроить устройство на распознавание двойного нажатия mb_left (левой кнопки мыши) как ввода mb_right (правой кнопки мыши).

-

По умолчанию это значение установлено на true, что означает, что каждый раз, когда пользователь дважды быстро и последовательно касается экрана устройства, возвращаемое значение будет таким же, как если бы была нажата правая кнопка мыши. Если этот параметр включен, первое касание будет определено как mb_left, а второе - как mb_right, поэтому убедитесь, что используемый вами код учитывает это.

-

-

Синтаксис:

-

device_mouse_dbclick_enable(bool);

- - - - - - - - - - - - - -
АргументТипОписание
boolБулевоSet double-click detection on (true) или выключить (false).
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if os_type == os_windows || os_type == os_mac
- {
-     device_mouse_dbclick_enable(false);
- }

-

Приведенный выше код проверяет, является ли устройство, на котором запущена игра, ПК Windows или Mac, и если это одно из них, то отключает функцию двойного нажатия.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_raw_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_raw_x.htm index 457bb8ded..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_raw_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_raw_x.htm @@ -1,66 +0,0 @@ - - - - - - device_mouse_raw_x - - - - - - - - - - - -

device_mouse_raw_x

-

Эта функция возвращает необработанную x-позицию касания на устройстве. Это означает, что она возвращает фактическое определение устройства для позиции x касания, а не определение GameMaker, и поэтому игнорирует такие вещи, как положение вида и масштабирование. Обратите внимание, что максимальное количество касаний, которое может быть обнаружено, будет сильно зависеть от используемого устройства и ОС, под управлением которой оно работает.

-

ПРИМЕЧАНИЕ: Эта функция очень сильно зависит от устройства, и вам следует сначала поэкспериментировать с желаемым целевым модулем и устройством, чтобы увидеть, что именно будет возвращено.

-

-

Синтаксис:

-

device_mouse_raw_x(device);

- - - - - - - - - - - -
АргументТипОписание
deviceThe device (from 0 - n) that is being checked.
-

-

Возвращается:

-

-

-

Пример:

-

if device_mouse_check_button(0, mb_left) && device_mouse_check_button(1, mb_left)
- {
-     x_av = mean(device_mouse_raw_x(0), device_mouse_raw_x(1));
-     y_av = mean(device_mouse_raw_y(0), device_mouse_raw_y(1));
- }

-

Приведенный выше код проверяет, нажимаются ли устройства device1 и device2, и если да, то вычисляет среднее положение координат x/y между каждой точкой нажатия.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_raw_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_raw_y.htm index 1b9c83d33..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_raw_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_raw_y.htm @@ -1,66 +0,0 @@ - - - - - - device_mouse_raw_y - - - - - - - - - - - -

device_mouse_raw_y

-

Эта функция возвращает необработанную позицию y касания на устройстве. Это означает, что она возвращает фактическое определение позиции y устройства, к которому производится прикосновение, а не определение GameMaker, и поэтому игнорирует такие вещи, как положение вида и масштабирование. Обратите внимание, что максимальное количество касаний устройства, которое может быть обнаружено, будет сильно зависеть от используемого устройства и ОС, под управлением которой оно работает.

-

ПРИМЕЧАНИЕ: Эта функция очень сильно зависит от устройства, и вам следует сначала поэкспериментировать с желаемым целевым модулем и устройством, чтобы увидеть, что именно будет возвращено.

-

-

Синтаксис:

-

device_mouse_raw_y(device);

- - - - - - - - - - - -
АргументТипОписание
deviceThe device (from 0 - n) that is being checked.
-

-

Возвращается:

-

-

-

Пример:

-

if device_mouse_check_button(0, mb_left) && device_mouse_check_button(1, mb_left)
- {
-     x_av = mean(device_mouse_raw_x(0), device_mouse_raw_x(1));
-     y_av = mean(device_mouse_raw_y(0), device_mouse_raw_y(1));
- }

-

Приведенный выше код проверяет, нажимаются ли устройства device1 и device2, и если да, то вычисляет среднее положение координат x/y между каждой точкой нажатия.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_x.htm index 7f3d1481e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_x.htm @@ -1,71 +0,0 @@ - - - - - - device_mouse_x - - - - - - - - - - - -

device_mouse_x

-

Эта функция возвращает x-позицию касания на устройстве. Если вы работаете на модулях HTML5 или PC и Mac, то это значение обновляется постоянно, пока устройство (обычно мышь) подключено, однако для мобильных устройств это значение будет обновляться только во время касания экрана. Обратите внимание, что максимальное количество касаний, которое может быть обнаружено, будет сильно зависеть от используемого устройства и ОС, на которой оно работает.

-

-

Синтаксис:

-

device_mouse_x(device);

- - - - - - - - - - - -
АргументТипОписание
deviceThe device (from 0 - n) that is being checked.
-

-

Возвращается:

-

-

-

Пример:

-

if device_mouse_check_button(0, mb_left)
- {
-     if (device_mouse_x(0) > x-32 && device_mouse_x(0) < x+32)
-     {
-         pressed = true;
-     }
-     else
-     {
-         pressed = false;
-     }
- }

-

Приведенный выше код проверяет, нажимается ли устройство, и если да, то опрашивает положение x устройства, чтобы проверить, находится ли оно в пределах параметров. Если да, то переменная "pressed" устанавливается в true, в противном случае - в false.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_x_to_gui.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_x_to_gui.htm index 08413b30f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_x_to_gui.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_x_to_gui.htm @@ -1,71 +0,0 @@ - - - - - - device_mouse_x_to_gui - - - - - - - - - - - -

device_mouse_x_to_gui

-

Эта функция возвращает x-позицию касания на устройстве по отношению к слою GUI. Поскольку слой GUI может иметь различные размеры независимо от разрешения экрана и размера комнаты, иногда бывает сложно определить точную точку на слое GUI, в которой пользователь коснулся экрана. С помощью этой функции вы можете получить эту позицию на основе фактического размера GUI, что упрощает создание и взаимодействие с кнопками GUI и элементами HUD. Если вы используете эту функцию на модулях HTML5 или PC и Mac, то это значение обновляется постоянно, пока устройство (обычно мышь) подключено, однако для мобильных устройств это значение будет обновляться только во время касания экрана, и обратите внимание, что максимальное количество касаний, которое может быть обнаружено, будет сильно зависеть от используемого устройства и ОС, на которой оно работает.

-

-

Синтаксис:

-

device_mouse_x_to_gui(device);

- - - - - - - - - - - -
АргументТипОписание
deviceThe device (from 0 - n) that is being checked.
-

-

Возвращается:

-

-

-

Пример:

-

if device_mouse_check_button(0, mb_left)
- {
-     if (device_mouse_x_to_gui(0) > 0 && device_mouse_x_to_gui(0) < 32)
-     {
-         pressed = true;
-     }
-     else
-     {
-         pressed = false;
-     }
- }

-

Приведенный выше код проверяет, нажимается ли мышь устройства, и если да, то опрашивает позицию x устройства на слое GUI, чтобы проверить, находится ли она в пределах параметров. Если да, то переменная "pressed" устанавливается в true, в противном случае - в false.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_y.htm index efbbde408..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_y.htm @@ -1,71 +0,0 @@ - - - - - - device_mouse_y - - - - - - - - - - - -

device_mouse_y

-

Эта функция возвращает положение y касания на устройстве. Если вы работаете на модулях HTML5 или PC и Mac, то это значение обновляется постоянно, пока устройство (обычно мышь) подключено, однако для мобильных устройств это значение будет обновляться только во время касания экрана. Обратите внимание, что максимальное количество касаний, которое может быть обнаружено, будет сильно зависеть от используемого устройства и ОС, на которой оно работает.

-

-

Синтаксис:

-

device_mouse_y(device);

- - - - - - - - - - - -
АргументТипОписание
deviceThe device (from 0 - n) that is being checked.
-

-

Возвращается:

-

-

-

Пример:

-

if device_mouse_check_button(0, mb_left)
- {
-     if (device_mouse_y(0) > y-32 && device_mouse_y(0) < y+32)
-     {
-         pressed = true;
-     }
-     else
-     {
-         pressed = false;
-     }
- }

-

Приведенный выше код проверяет, нажимается ли устройство, и если да, то опрашивает положение y устройства, чтобы проверить, находится ли оно в пределах параметров. Если да, то переменная "pressed" устанавливается в true, в противном случае - в false.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_y_to_gui.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_y_to_gui.htm index b677c62d9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_y_to_gui.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Device_Input/device_mouse_y_to_gui.htm @@ -1,71 +0,0 @@ - - - - - - device_mouse_y_to_gui - - - - - - - - - - - -

device_mouse_y_to_gui

-

Эта функция возвращает положение y касания на устройстве по отношению к слою GUI. Поскольку слой GUI может иметь различные размеры независимо от разрешения экрана и размера комнаты, иногда бывает сложно определить точную точку на слое GUI, в которой пользователь коснулся экрана. С помощью этой функции вы можете получить эту позицию на основе фактического размера GUI, что упрощает создание и взаимодействие с кнопками GUI и элементами HUD. Если вы используете эту функцию на модулях HTML5 или PC и Mac, то это значение обновляется постоянно, пока устройство (обычно мышь) подключено, однако для мобильных устройств это значение будет обновляться только во время касания экрана, и обратите внимание, что максимальное количество касаний, которое может быть обнаружено, будет сильно зависеть от используемого устройства и ОС, на которой оно работает.

-

-

Синтаксис:

-

device_mouse_y_to_gui(device);

- - - - - - - - - - - -
АргументТипОписание
deviceThe device (from 0 - n) that is being checked.
-

-

Возвращается:

-

-

-

Пример:

-

if device_mouse_check_button(0, mb_left)
- {
-     if (device_mouse_y_to_gui(0) > 0 && device_mouse_y_to_gui(0) < 32)
-     {
-         pressed = true;
-     }
-     else
-     {
-         pressed = false;
-     }
- }

-

Приведенный выше код проверяет, нажимается ли мышь устройства, и если да, то опрашивает позицию x устройства на слое GUI, чтобы проверить, находится ли она в пределах параметров. Если да, то переменная "pressed" устанавливается в true, в противном случае - в false.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/Gamepad_Input.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/Gamepad_Input.htm index c31d1c2fe..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/Gamepad_Input.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/Gamepad_Input.htm @@ -1,288 +0,0 @@ - - - - - - Вход геймпада - - - - - - - - - - -

Вход геймпада

-

ВGameMaker есть ряд специальных функций, которые можно использовать для обнаружения аналоговых и цифровых элементов управления от нескольких подключенных геймпадов. Эти функции работают аналогично входам устройства, поскольку вы можете обнаружить до четырех различных подключенных геймпадов XInput (и до 8 геймпадов DirectInput) и обрабатывать входные данные от каждого из них с помощью одних и тех же функций. Обратите внимание, что когда геймпад подключается к вашему устройству (или отсоединяется), запускается асинхронное системное событие, в котором вы можете разобраться с ситуацией с помощью соответствующих функций.

-

Слоты для геймпадов индексируются от 0 вверх, и фактический слот, назначенный геймпаду, зависит от множества факторов, не последним из которых является ОС, на которой работает проект. В проекте для Windows слоты 0 - 3 включительно предназначены только для геймпадов Xinput, то есть контроллеров Xbox360 и совместимых с ними. Однако вы также можете проверить слоты 4 - 11 включительно для геймпадов DirectInput, что означает, что вы можете обнаружить множество других моделей контроллеров при подключении через эти слоты. На других платформах планшеты могут быть обнаружены в любом слоте, назначенном ОС, который может быть слотом 3, слотом 20 или более. Например, устройства Android сохраняют bluetooth-геймпады в слоте и затем резервируют этот слот для этого геймпада в будущем, независимо от того, подключен он или нет, поэтому нельзя считать, что один подключенный геймпад подключен к слоту 0, так как это, скорее всего, не так.

-

Стоит отметить, что при использовании геймпадов DirectInput на Windows, или общих геймпадов на других платформах, приведенные ниже константы могут не совпадать с кнопками, которые вы ожидаете при нажатии, из-за фрагментарного и нестандартизированного способа реализации API производителями контроллеров. В связи с этим рекомендуется иметь в играх экран настройки геймпада, где люди могут переопределять кнопки геймпада на основе ввода от любого подключенного устройства, чтобы уменьшить любые проблемы (существуют функции "отображения" геймпада, которые могут помочь в этом для целей Windows Desktop, Ubuntu, macOS и Android, в то время как для всех остальных вам придется сделать это самостоятельно с помощью кода).

-

Входные константы

-

При работе с функциями геймпада ввод может осуществляться через оси, кнопки или шляпы, которые GameMaker присваивает следующим встроенным константам (обратите внимание, что "шляпы" обычно обнаруживаются только на нестандартных контроллерах):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Постоянная кнопка геймпада
ПостояннаяОписание
gp_face1Верхняя кнопка 1 (соответствует кнопке "A" на контроллере Xbox 360 и кресту на контроллере PS)
gp_face2Верхняя кнопка 2 (соответствует кнопке "B" на контроллере Xbox 360 и кругу на контроллере PS)
gp_face3Верхняя кнопка 3 (соответствует "X" на контроллере Xbox 360 и квадрату на контроллере PS)
gp_face4Верхняя кнопка 4 (соответствует букве "Y" на контроллере Xbox 360 и треугольнику на контроллере PS)
gp_shoulderlПуговица на левом плече
gp_shoulderlbСпусковой крючок левого плеча
gp_shoulderrПравая плечевая кнопка
gp_shoulderrbСпусковой крючок правого плеча
gp_selectКнопка выбора (на контроллере DS4 она срабатывает при нажатии сенсорной панели вниз)
gp_startКнопка запуска (это кнопка "опции" на контроллере PS4)
gp_sticklЛевый стик нажат (как кнопка)
gp_stickrПравый стик нажат (как кнопка)
gp_paduD-пад вверх
gp_paddD-пад вниз
gp_padlD-pad влево
gp_padrD-pad вправо
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Постоянная оси геймпада
ПостояннаяОписание
gp_axislhГоризонтальная ось левого стика (аналоговая)
gp_axislvВертикальная ось левого стика (аналоговая)
gp_axisrhГоризонтальная ось правого стика (аналоговая)
gp_axisrvВертикальная ось правого стика (аналоговая)
Приведенные ниже константы можно использовать только с геймпадом DualSense на PS4 или PS5.
gp_axis_acceleration_x*Ускорение геймпада по оси X
gp_axis_acceleration_y*Ускорение геймпада по оси Y
gp_axis_acceleration_z*Ускорение геймпада по оси Z
gp_axis_angular_velocity_x*Угловая скорость геймпада по оси X
gp_axis_angular_velocity_y*Угловая скорость геймпада по оси Y
gp_axis_angular_velocity_z*Угловая скорость геймпада по оси Z
gp_axis_orientation_x*Ориентация геймпада по оси X
gp_axis_orientation_y*Ориентация геймпада по оси Y
gp_axis_orientation_z*Ориентация геймпада по оси Z
gp_axis_orientation_w*Ориентация геймпада по оси W
-

ПРИМЕЧАНИЕ Ориентация геймпада - это кватернион, поэтому он имеет четыре значения (X, Y, Z и W).
-
- * Эти константы поддерживаются только на PS4 и PS5, при использовании на других платформах функции ввода вернут 0, даже при использовании геймпада DualSense. -

-

Чтобы лучше понять, какую именно часть контроллера представляет каждая константа, вы можете обратиться к следующему изображению стандартного геймпада XInput:

-

Xinput gamepad illustration

-

Функции

-

Ниже приведен список всех функций геймпада:

- -

-

Существуют также следующие функции геймпада, которые используются для переназначения встроенных констант на прямые физические входы данного геймпада. Эти функции предназначены только для целевых платформ Windows Desktop, Ubuntu, macOS и Android, а на Windows они будут действительны только для устройств прямого ввода. Хотя GameMaker поставляется с отображениями для ряда различных геймпадов на основе SDL Gamepad Controller DB, однако из-за огромного количества типов и марок контроллеров невозможно сопоставить константы GML с правильными входами для каждой марки и модели, поэтому с помощью этих функций у вас есть возможность создать свои собственные отображения.

- -

-

Стоит отметить, что геймпады с прямым вводом работают в кооперативном режиме, что означает, что ваша игра имеет к ним доступ только тогда, когда она является приложением переднего плана, что, в свою очередь, приведет к тому, что контроллеры прямого ввода будут "потеряны", если игра потеряет фокус, а затем "найдены" снова, когда она вернется в фокус (это может быть обнаружено в системном событии и устранено). Аналогично, никакой ввод от геймпадов не будет обнаружен, пока игра не в фокусе, и мы рекомендуем вам использовать функцию os_is_paused() или window_has_focus() чтобы обнаружить это и поставить игру на паузу или что-то подобное, поскольку любая кнопка, удерживаемая в момент, когда игра теряет фокус, будет удерживаться до тех пор, пока игра не восстановит фокус.

-

Совместимость

-

В приведенном ниже списке указана текущая совместимость платформ (обратите внимание, что она будет меняться с будущими обновлениями):

-
    -
  • Windows полностью поддерживается, при этом одновременно можно подключить до 12 устройств (нумерация от 0 до 11, где 0 - 3 - устройства XInput, а 4 - 11 - DirectInput). Также разрешено переназначение констант контроллера.
  • -
  • ВmacOS поддерживается не более 4 подключенных устройств одновременно, и эти устройства могут быть ТОЛЬКО типа Playstation3 или Xbox 360. Обратите внимание, что опция "Build for Mac AppStore" в Mac Game Options должна быть выключена, чтобы поддержка пэдов работала. Также разрешено переназначение констант контроллера.
  • -
  • Ubuntu также поддерживает ввод с геймпада, но вам может потребоваться установить дополнительные библиотеки из репозитория Ubuntu. Это можно легко сделать, открыв терминал командной строки и набрав следующее (это установит поддержку GUI для джойстика/геймпада, а также сам API джойстика/геймпада - изменение констант контроллера не допускается): -

    sudo apt-get install jstest-gtk
    - sudo apt-get install joystick.

    -
  • -
  • HTML5-игры с использованием геймпадов поддерживаются большинством основных браузеров, кроме Safari. Переназначение констант контроллера не допускается.
  • -
  • Веб-браузеры обнаруживают геймпады только при нажатии кнопки или перемещении оси, поэтому они могут быть недоступны в момент непосредственного начала игры. Это относится к целевым платформам Opera GX и HTML .
  • -
  • Поддержка геймпада также распространяется на iOS с корпусом iCade. Левая ось соответствует стику контроллера (хотя вход цифровой, а не аналоговый), четыре "лицевые" кнопки соответствуют передним кнопкам корпуса, а четыре плечевые кнопки соответствуют кнопкам на задней панели корпуса.
  • -
  • ЭкспортAndroid Amazon Fire) поддерживает контроллеры NYKO и общие контроллеры Bluetooth, но только если они включены, то есть вам придется отметить опцию iCade/Bluetooth в разделе " Общие" на странице Android "Параметры игры". Для их полноценной работы требуется уровень API 12, и следует отметить, что GameMaker будет регистрировать как подключенные любые Bluetooth-устройства, с которыми сопряжено ваше устройство, независимо от того, подключено оно на самом деле или нет. Поэтому это следует учитывать при назначении и проверке "слотов". Обратите внимание, что переназначение констант контроллера также разрешено.
  • -
  • На PS4, если вы хотите использовать сенсорную панель для отслеживания, вам нужно использовать device_mouse_* кнопки. Переназначение констант контроллера не допускается.
  • -
  • В целях Windows UWP, XBoxOne и Nintendo Switch геймпады полностью поддерживаются, но ремаппинг констант контроллера не допускается.
  • -
-

В идеале, на всех целевых платформах вы хотите перечислить список доступных "слотов" для геймпадов, а затем проверить, обнаружены ли какие-либо устройства, примерно так:

-

var _maxpads = gamepad_get_device_count();
-
- for (var i = 0; i < _maxpads; i++)
- {
-     if (gamepad_is_connected(i))
-     {
-         // do stuff with pad "i"
-     }
- } -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_axis_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_axis_count.htm index 615270ac4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_axis_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_axis_count.htm @@ -1,60 +0,0 @@ - - - - - gamepad_axis_count - - - - - - - - - - - -

gamepad_axis_count

-

Эта функция возвращает количество элементов управления "axis" на проверяемом устройстве. Эти элементы управления представляют собой аналоговые "палочки" направления на большинстве контроллеров.

-

-

Синтаксис:

-

gamepad_axis_count(device);

- - - - - - - - - - - -
АргументТипОписание
deviceWhich gamepad device "slot" to check.
-

-

Возвращается:

-

-

-

Пример:

-

axis = gamepad_axis_count(0))

-

Приведенный выше код сохраняет в переменной "axis" количество осей, доступных для геймпада, подключенного к устройству "slot" 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_axis_value.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_axis_value.htm index a8b1134c1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_axis_value.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_axis_value.htm @@ -1,72 +0,0 @@ - - - - - - gamepad_axis_value - - - - - - - - - - - -

gamepad_axis_value

-

Вы можете использовать эту функцию для получения значений различных осей от заданного слота геймпада. Вы указываете индекс слота геймпада для проверки, а также либо константу индекса оси (как указано здесь), либо целое значение между 0 и gamepad_axis_count()-1. Возвращаемое значение будет находиться между -1 и 1 для каждой из доступных горизонтальных и вертикальных осей.

-

Обратите внимание, что возвращаемое значение нормализуется с учетом значения, установленного для мертвой зоны оси (с помощью функции gamepad_set_axis_deadzone()), и поэтому всегда будет находиться между -1 и 0 и 0 и 1. Например, если установить мертвую зону на 0.2 означает, что нажатие стика вправо начнет возвращать значение от 0 до 1 только тогда, когда необработанное значение оси превысит 0,2 - например, когда необработанное значение равно 0,2, возвращаемое значение будет равно 0, когда необработанное значение равно 0,5, возвращаемое значение будет равно 0,375, или если необработанное значение равно 0,9, то возвращаемое значение будет равно 0,875.

-

-

Синтаксис:

-

gamepad_axis_value(device, axisIndex);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
deviceРеальноWhich gamepad device "slot" to check.
axisIndexПостоянная оси геймпадаThe axis index to check (see the constants list).
-

-

Возвращается:

-

Real

-

-

Пример:

-

var haxis = gamepad_axis_value(0, gp_axislh);
- var vaxis = gamepad_axis_value(0, gp_axislv);
- direction = point_direction(0, 0, haxis, vaxis);
- speed = point_distance(0 ,0, haxis, vaxis) * 5;

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_check.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_check.htm index de176e48f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_check.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_check.htm @@ -1,77 +0,0 @@ - - - - - - gamepad_button_check - - - - - - - - - - - -

gamepad_button_check

-

Эта функция вернет true или false в зависимости от того, определена ли данная кнопка геймпада как удерживаемая или нет. Если вы проверяете аналоговую кнопку, то проверка будет учитывать пороговое значение и вернет true только в том случае, если необработанное значение входа превышает заданный порог (вы можете получить это необработанное значение с помощью функции gamepad_button_value()).

-

-

Синтаксис:

-

gamepad_button_check(device, button);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
deviceРеальноWhich gamepad device "slot" to check.
buttonПостоянная кнопка геймпадаWhich gamepad button constant to check for.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if gamepad_button_check(0, gp_face1)
- {
-     if (canshoot = true)
-     {
-         audio_play_sound(snd_Shoot, 0, false);
-         instance_create_layer(x, y, "Bullets", obj_Bullet)
-         canshoot = false;
-         alarm[0] = room_speed / 2;
-     }
- }

-

Приведенный выше код определит, удерживается ли нижняя кнопка верхней грани (кнопка "X" на контроллере ps3), и если да, то выстрелит "пулей" и подаст сигнал тревоги.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_check_pressed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_check_pressed.htm index 7aa7f645e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_check_pressed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_check_pressed.htm @@ -1,73 +0,0 @@ - - - - - - gamepad_button_check_pressed - - - - - - - - - - - -

gamepad_button_check_pressed

-

Эта функция возвращает значение true или false в зависимости от того, была ли обнаружена нажатой данная кнопка геймпада или нет. Обратите внимание, что эта функция сработает только один раз при первом нажатии кнопки. Чтобы она сработала повторно, кнопку нужно сначала отпустить, а затем нажать снова. Если вам нужно проверить непрерывное нажатие кнопки, следует использовать функцию gamepad_button_check().

-

Если вы проверяете аналоговую кнопку, то проверка будет учитывать установку порога и вернет значение true только тогда, когда необработанное значение входа превысит заданный порог (вы можете получить это необработанное значение с помощью функции gamepad_button_value()).

-

-

Синтаксис:

-

gamepad_button_check_pressed(device, button);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
deviceРеальноWhich gamepad device "slot" to check.
buttonПостоянная кнопка геймпадаWhich gamepad button constant to check for.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if gamepad_button_check_pressed(0, gp_start)
- {
-     audio_play_sound(snd_Start, 0, false);
-     room_goto(rm_Level_1);
- }

-

Приведенный выше код определит, была ли нажата кнопка "start" геймпада, подключенного к устройству "slot" 0, или нет, и изменит комнату, если это произошло.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_check_released.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_check_released.htm index 68fe6059e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_check_released.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_check_released.htm @@ -1,72 +0,0 @@ - - - - - - gamepad_button_check_released - - - - - - - - - - - -

gamepad_button_check_released

-

Эта функция возвращает значение true или false в зависимости от того, была ли обнаружена отпущенной данная кнопка геймпада или нет. Обратите внимание, что эта функция сработает только один раз для кнопки в тот момент, когда она была отпущена. Чтобы она сработала снова, кнопка должна быть сначала нажата, а затем отпущена еще раз. Если вы проверяете аналоговую кнопку, то при проверке будет учитываться настройка порога срабатывания и функция вернет значение true только в том случае, если необработанное входное значение окажется ниже заданного порога (необработанное значение можно получить с помощью функции gamepad_button_value()).

-

-

Синтаксис:

-

gamepad_button_check_released(device, button);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
deviceРеальноWhich gamepad device "slot" to check.
buttonПостоянная кнопка геймпадаWhich gamepad button constant to check for.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if gamepad_button_check_released(0, gp_select)
- {
-     audio_play_sound(snd_Button, 0, false);
-     global.Pause = !global.Pause;
- }

-

Приведенный выше код определит, была ли нажата кнопка "select" геймпада, подключенного к устройству "slot" 0, и переключит глобальную переменную "Pause".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_count.htm index 0b7717c22..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_count.htm @@ -1,60 +0,0 @@ - - - - - gamepad_button_count - - - - - - - - - - - -

gamepad_button_count

-

Эта функция вернет общее количество кнопок, доступных для геймпада, подключенного к заданному "слоту" устройства.

-

-

Синтаксис:

-

gamepad_button_count(device);

- - - - - - - - - - - -
АргументТипОписание
deviceWhich gamepad device "slot" to check.
-

-

Возвращается:

-

-

-

Пример:

-

b_num = gamepad_button_count(0);

-

Приведенный выше код вернет количество кнопок, доступных на геймпаде, подключенном к устройству "slot" 0, и сохранит значение в переменной "b_num".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_value.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_value.htm index cd9870b88..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_value.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_button_value.htm @@ -1,69 +0,0 @@ - - - - - - gamepad_button_value - - - - - - - - - - - -

gamepad_button_value

-

С помощью этой функции вы можете получить текущее значение аналоговой кнопки, от 0 до 1, где 0 - отсутствие нажатия, а 1 - полное нажатие. Вы указываете индекс слота геймпада для проверки, а также либо константу кнопки (как указано здесь), либо целочисленное значение от 0 до gamepad_button_count() - 1.

-

Обратите внимание, что это возвращает необработанное значение для кнопки и не учитывает настройки порога (более подробную информацию о порогах см. здесь ).

-

-

Синтаксис:

-

gamepad_button_value(device, button);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
deviceРеальноWhich gamepad device "slot" to check.
buttonПостоянная кнопка геймпадаWhich gamepad button constant to check for.
-

-

Возвращается:

-

Real

-

-

Пример:

-

speed = gamepad_button_value(0, gp_shoulderrb) * 4;

-

Приведенный выше код использует значение аналогового триггера от геймпада, подключенного к устройству "слот" 0, для установки скорости экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_axis_deadzone.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_axis_deadzone.htm index b3a5b70cb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_axis_deadzone.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_axis_deadzone.htm @@ -1,64 +0,0 @@ - - - - - - gamepad_get_axis_deadzone - - - - - - - - - - - -

gamepad_get_axis_deadzone

-

Эта функция может использоваться для получения значения "мертвой зоны" оси джойстика. Вы указываете слот устройства, который необходимо получить, и функция возвращает значение от 0 до 1, где значение отражает порог, при котором ось джойстика считается находящейся в 0.

-

-

Синтаксис:

-

gamepad_get_axis_deadzone(device);

- - - - - - - - - - - -
АргументТипОписание
deviceWhich gamepad device "slot" to check.
-

-

Возвращается:

-

-

-

Пример:

-

if gamepad_get_axis_deadzone(global.PadId) != 0.5
- {
-     gamepad_set_axis_deadzone(global.PadId, 0.5);
- }

-

Приведенный выше код проверяет пороговое значение аналоговой оси геймпада, подключенного к устройству "slot", хранящееся в глобальной переменной, и если оно не равно значению по умолчанию 0,5, то оно устанавливается на это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_button_threshold.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_button_threshold.htm index dbc0fca40..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_button_threshold.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_button_threshold.htm @@ -1,64 +0,0 @@ - - - - - - gamepad_get_button_threshold - - - - - - - - - - - -

gamepad_get_button_threshold

-

Эта функция может использоваться для определения текущей пороговой настройки аналоговых кнопок для данного устройства. По умолчанию порог для всех аналоговых кнопок составляет 0,5, а диапазон - от 0 до 1. Порог определяет, в какой момент кнопка считается "нажатой" для игр, которые требуют, чтобы она действовала как цифровая кнопка.

-

-

Синтаксис:

-

gamepad_get_button_threshold(device);

- - - - - - - - - - - -
АргументТипОписание
deviceWhich gamepad device "slot" to check.
-

-

Возвращается:

-

-

-

Пример:

-

if gamepad_get_button_threshold(0) != 0.5
- {
-     gamepad_set_button_threshold(0, 0.5);
- }

-

Приведенный выше код проверяет пороговое значение аналоговой кнопки геймпада, подключенного к устройству "slot" 0, и если оно не равно значению по умолчанию 0,5, то оно устанавливается на это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_description.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_description.htm index d5235cc03..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_description.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_description.htm @@ -1,73 +0,0 @@ - - - - - - gamepad_get_description - - - - - - - - - - - -

gamepad_get_description

-

Эта функция возвращает строку с описанием данного геймпада, например, контроллер PS3 может вернуть строку, подобную "PLAYSTATION(R)3 Controller", или контроллер XBox360 может вернуть "Xbox 360 Controller (XInput STANDARD GAMEPAD)". Эта строка зависит от аппаратного обеспечения, и возвращаемое значение будет зависеть от геймпада, подключенного к проверяемому "слоту" устройства.

-

-

Синтаксис:

-

gamepad_get_description(device);

- - - - - - - - - - - -
АргументТипОписание
deviceWhich gamepad "slot" to get the name of.
-

-

Возвращается:

-

-

-

Пример:

-

var gp_num = gamepad_get_device_count();
- for (var i = 0; i < gp_num; i++;)
- {
-     var _gamepad = gamepads[i];
-     if (gamepad_is_connected(_gamepad))
-     {
-         draw_text(32, 32 + (i * 32), gamepad_get_description(_gamepad));
-     }
-     else
-     {
-         draw_text(32, 32 + (i * 32), "Gamepad not found");
-     }
- }

-

Приведенный выше код пройдется по всем слотам геймпада для проверки наличия подключенных устройств, а затем нарисует текст на экране в зависимости от того, подключен ли геймпад к слоту или нет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_device_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_device_count.htm index f4160e42a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_device_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_device_count.htm @@ -1,61 +0,0 @@ - - - - - - gamepad_get_device_count - - - - - - - - - - - -

gamepad_get_device_count

-

Эта функция показывает либо количество подключенных игровых планшетов, либо количество доступных "слотов" для подключения игровых планшетов.

-

Фактическое возвращаемое значение будет зависеть от платформы и внутренней конфигурации этой платформы, поэтому данную функцию следует использовать вместе с функцией gamepad_is_connected() чтобы быть уверенным в точном количестве подключенных планшетов в любой момент времени.

-

-

Синтаксис:

-

gamepad_get_device_count();

-

-

Возвращается:

-

Real

-

-

Пример:

-

var gp_num = gamepad_get_device_count();
- for (var i = 0; i < gp_num; i++)
- {
-     if (gamepad_is_connected(i))
-     {
-         global.gp[i] = true;
-     }
-     else
-     {
-         global.gp[i] = false;
-     }
- }

-

Приведенный выше код перебирает доступные геймпады (или слоты для геймпадов) и затем проверяет каждый из них на наличие подключенного геймпада. возвращаемое значение затем используется для установки глобального массива на true или false для использования в будущих проверках.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_guid.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_guid.htm index 962c8808a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_guid.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_guid.htm @@ -1,88 +0,0 @@ - - - - - - gamepad_get_guid - - - - - - - - - - - -

gamepad_get_guid

-

С помощью этой функции вы можете получить GUID для геймпада, подключенного к заданному индексу слота. Вы указываете слот геймпада для проверки (от 0 до 11), и функция возвращает одну из следующих строк:

-
    -
  • "none", если нет GUID или не подключен геймпад
  • -
  • "индекс устройства вне диапазона", если индекс слота геймпада находится вне диапазона
  • -
  • Строка GUID, что-то вроде "050000005e040000fd020000ffff3f00", если слоту назначен геймпад и для него можно получить GUID
  • -
-

Эта функция обычно используется в сочетании с функцией gamepad_get_description() для генерации части SDL-строки, необходимой для ремаппинга контроллеров на сайтах Windows, Android и macOS.

- - - - - - - - - - - - - - - - - - -
Примечания, относящиеся к конкретной платформе
ПлатформаПримечание
Opera GXНа целевой платформе Opera GX эта функция всегда будет возвращать значение "none" для устройств, не являющихся устройствами с прямым вводом.
-

-

Синтаксис:

-

gamepad_get_guid(index);

- - - - - - - - - - - -
АргументТипОписание
indexWhich gamepad "slot" index to check
-

-

Возвращается:

-

-

-

Пример:

-

var _guid = gamepad_get_guid(global.PadIndex);
- var _desc = gamepad_get_description(global.PadIndex);
- global.GamepadID = _guid + "," + _desc;

-

Приведенный выше код получает строки описания GUID и имени, затем объединяет их и сохраняет итоговую строку в глобальной переменной для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_mapping.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_mapping.htm index bc0b40a31..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_mapping.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_mapping.htm @@ -1,69 +0,0 @@ - - - - - gamepad_get_mapping - - - - - - - - - - - -

gamepad_get_mapping

-

Эта функция используется для получения строки сопоставления для геймпада. Эта строка будет либо:

-
    -
  • Текущая строка карты для геймпада, например: -

    "050000005e040000fd020000ffff3f00,Xbox Wireless Controller,a:b0,b:b1,start:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:android"

    -
  • -
  • Строка с "no mapping", если нет установленного отображения (это не то же самое, что когда отображение недоступно).
  • -
  • Строка с "индекс устройства вне диапазона", если индекс слота не является допустимым индексом геймпада
  • -
  • Пустая строка "", если для подключенного геймпада нет привязки.
  • -
-

Для получения дополнительной информации о форматировании возвращаемой строки карты, пожалуйста, обратитесь к функции gamepad_test_mapping().

-

-

Синтаксис:

-

gamepad_get_mapping(index);

- - - - - - - - - - - -
АргументТипОписание
indexWhich gamepad index "slot" to get the mapping from.
-

-

Возвращается:

-

-

-

Пример:

-

var _gpMap = gamepad_get_mapping(global.PadIndex);
show_debug_message("Gamepad Mapping = " + _gpMap);

-

Приведенный выше код получает строку карты для заданного слота геймпада, а затем выводит ее в консоль для отладки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_option.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_option.htm index 72a068828..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_option.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_get_option.htm @@ -1,96 +0,0 @@ - - - - - - gamepad_get_option - - - - - - - - - - - -

gamepad_get_option

-

Эта функция может быть использована для получения заданного значения опции. Вы указываете "слот" геймпада для проверки, а также строку опции, и функция возвращает соответствующее значение. Доступная строка опций зависит от платформы, на которой выполняется проект, как указано ниже:

- - - - - - - - - - - - - - - - - - - - - -
ВариантПлатформаОписаниеВозвращает
"allow_rotation"tvOSВозвращает, будет ли пульт Siri Remote заблокирован на вращение (т.е. может использоваться только вертикально) или нет. При разблокировке вращение пульта изменит ввод, например, поворот на 90º влево заставит "правую" сторону сенсорной панели вернуться "вверх" и т.д... таким образом, весь ввод будет относиться к ориентации устройства.Булево
"dpad_absolute"tvOSВозвращает, принимает ли сенсорная панель Siri Remote абсолютный ввод или относительный. В абсолютном режиме центром сенсорной панели считается позиция (0,0) - т.е. место, где аналоговый стик находится в состоянии покоя или где был бы центр дпада - и движение вокруг этой позиции будет генерировать ввод. Если установлено относительное значение, то позиция (0,0) будет рассматриваться как место, где было сделано первоначальное касание тачпада, и весь ввод будет генерироваться из этой позиции, а не из центра тачпада.Булево
-

-

Синтаксис:

-

gamepad_get_option(device, option_name);

- - - - - - - - - - - - - - - -
АргументТипОписание
deviceWhich gamepad device "slot" to check.
option_nameThe name of the option to get the value from (a string, see the table above)
-

-

Возвращается:

-

Boolean, Real, String, or N/A (depends on platform and option)

-

-

Пример:

-

for(var i = 0; i < 12; ++i;)
- {
-     if (gamepad_is_connected(i) && gamepad_get_description(i) == "tvOS Siri Remote")
-     {
-         if (gamepad_get_option(i, "allow_rotation") == false)
-         {
-             gamepad_set_option(i, "allow_rotation", true);
-         }
-     }
- }

-

Приведенный выше код перебирает все слоты геймпада и проверяет наличие "Siri Remote" на платформе tvOS. Если таковой обнаружен, он устанавливает пульт так, чтобы разрешить вращение ввода.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_hat_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_hat_count.htm index b491567d1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_hat_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_hat_count.htm @@ -1,66 +0,0 @@ - - - - - - gamepad_hat_count - - - - - - - - - - - - - - - -

gamepad_hat_count

-

Эта функция возвращает общее количество шапок, доступных для геймпада, подключенного к заданному "слоту" устройства. Под шляпами обычно подразумеваются кнопки вверх/вниз/влево/вправо, и обратите внимание, что на сайте Windows шляпы доступны только для контроллеров с прямым вводом. - контроллеров (то есть, начиная со слота 4 и выше).

-

-

Синтаксис:

-

gamepad_hat_count(device);

- - - - - - - - - - - -
АргументТипОписание
deviceWhich gamepad device "slot" to check.
-

-

Возвращается:

-

-

-

Пример:

-

h_num = gamepad_hat_count(4);

-

Приведенный выше код вернет количество шапок, доступных на геймпаде, подключенном к устройству "slot" 4, и сохранит значение в переменной "h_num".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_hat_value.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_hat_value.htm index b2558be0f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_hat_value.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_hat_value.htm @@ -1,86 +0,0 @@ - - - - - - gamepad_hat_value - - - - - - - - - - - -

gamepad_hat_value

-

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

-
    -
  • Вверх = 1
  • -
  • Право = 2
  • -
  • Вниз = 4
  • -
  • Левая = 8
  • -
-

Обратите внимание, что их можно комбинировать (например, при индексе шляпы, равном 3, проверка будет происходить вверх и вправо, или вы можете использовать оператор | для объединения различных значений), но одновременно могут быть нажаты не более 2 битов. Функция возвращает вещественное значение от 0 до 1, где 0 - не нажата, а 1 - полностью нажата (могут быть и промежуточные значения в зависимости от того, поддерживает ли геймпад аналоговый ввод для шляп).

-

-

Синтаксис:

-

gamepad_hat_value(device, hatindex);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
deviceРеальноWhich gamepad device "slot" to check.
hatindexРеальноWhich gamepad hat (or hats) to check for.
-

-

Возвращается:

-

Real

-

-

Пример:

-

var _dir = gamepad_hat_value(global.PadIndex, 0);
- switch (_dir)
- {
-     case 1: y -= 3; break;
-     case 2: x += 3; break;
-     case 3: y -= 3; x += 3; break;
-     case 4: x -= 3; break;
-     case 6: y += 3; x += 3; break;
-     case 8: y += 3; break;
-     case 9: y -= 3; x -= 3; break;
-     case 12: y += 3; x -= 3; break;
- }

-

Приведенный выше код сохраняет состояние шляпы "0" в локальной переменной, затем проверяет возвращаемое значение и действует соответствующим образом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_is_connected.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_is_connected.htm index cdeaa76b4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_is_connected.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_is_connected.htm @@ -1,69 +0,0 @@ - - - - - - gamepad_is_connected - - - - - - - - - - - -

gamepad_is_connected

-

Эта функция возвращает, подключен ли геймпад к данному "слоту" (возвращает true) или нет (возвращает false). Обычно эта функция используется вместе с функцией gamepad_get_device_count() для получения правильного количества доступных геймпадов и/или "слотов" для геймпадов. Обратите внимание, что может возникнуть небольшая задержка между подключением геймпада пользователем и обнаружением GameMaker его подключения (это особенно актуально при работе с контроллерами, подключенными по bluetooth).

-

ПРИМЕЧАНИЕ: На некоторых платформах - особенно консолях - эта функция может вернуть false сразу после подключения/выбора геймпада и может потребовать проверки в тревоге несколькими кадрами (шагами) позже, чтобы она правильно определила геймпад.

-

-

Синтаксис:

-

gamepad_is_connected(numb);

- - - - - - - - - - - -
АргументТипОписание
deviceWhich gamepad "slot" to check.
-

-

Возвращается:

-

-

-

Пример:

-

var gp_num = gamepad_get_device_count();
- for (var i = 0; i < gp_num; i++)
- {
-     if gamepad_is_connected(i)
-         global.gp[i] = true
-     else
-         global.gp[i] = false;
- }

-

Приведенный выше код перебирает доступные геймпады (или слоты для геймпадов) и затем проверяет каждый из них на наличие подключенного геймпада. возвращаемое значение затем используется для установки глобального массива на true или false для использования в будущих проверках.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_is_supported.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_is_supported.htm index 032d69210..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_is_supported.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_is_supported.htm @@ -1,53 +0,0 @@ - - - - - - gamepad_is_supported - - - - - - - - - - - - - - - -

gamepad_is_supported

-

С помощью этой функции можно узнать, поддерживает ли целевая платформа геймпады (возвращается true) или нет (возвращается false).

-

-

Синтаксис:

-

gamepad_is_supported();

-

-

Возвращается:

-

-

-

Пример:

-

global.GP = gamepad_is_supported();

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_remove_mapping.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_remove_mapping.htm index 2d3f1b239..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_remove_mapping.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_remove_mapping.htm @@ -1,63 +0,0 @@ - - - - - - gamepad_remove_mapping - - - - - - - - - - -

gamepad_remove_mapping

-

Эта функция используется для удаления текущего отображения устройства из заданного индекса слота геймпада. После ее вызова индекс слота необходимо изменить с помощью функции gamepad_test_mapping() если вы хотите иметь возможность использовать константы геймпада для корректного определения ввода (прямой ввод всегда можно получить, используя функции gamepad_axis/button/hat_count() и gamepad_axis/button/hat_value() вместе).

-

-

Синтаксис:

-

gamepad_remove_mapping(index);

- - - - - - - - - - - -
АргументТипОписание
indexWhich gamepad index "slot" to remove the mapping from.
-

-

Возвращается:

-

-

-

Пример:

-

if remap == true
- {
-     gamepad_remove_mapping(global.PadIndex);
- }

-

Приведенный выше код удалит отображение из заданного слота индекса геймпада на основе значения переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_axis_deadzone.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_axis_deadzone.htm index c7dcae0de..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_axis_deadzone.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_axis_deadzone.htm @@ -1,69 +0,0 @@ - - - - - - gamepad_set_axis_deadzone - - - - - - - - - - -

gamepad_set_axis_deadzone

-

Эта функция может использоваться для установки "мертвой зоны" оси джойстика. Вы указываете слот устройства для настройки, а затем задаете значение от 0 до 1, и если входная величина меньше заданного значения, то считается, что ось джойстика находится в 0. - Обратите внимание, что это глобальная настройка, которая будет влиять на все оси всех джойстиков, подключенных к указанному слоту устройства.

-

Использование этой функции не означает, что значение оси будет начинаться со значения мертвой зоны, так как функция gamepad_axis_value() всегда будет возвращать нормализованное значение между -1 - Например, установка мертвой зоны на 0,2 означает, что нажатие стика вправо начнет возвращать значение от 0 до 1 только тогда, когда необработанное значение оси превысит 0,2 - таким образом, когда необработанное значение равно 0,2, возвращаемое значение будет равно 0, - когда необработанное значение равно 0.5, возвращаемое значение будет 0.375, или если необработанное значение равно 0.9, то возвращаемое значение будет 0.875.

-

-

Синтаксис:

-

gamepad_set_axis_deadzone(device, deadzone);

- - - - - - - - - - - - - - - -
АргументТипОписание
deviceWhich gamepad device "slot" to check.
deadzoneThe dead zone value from 0 to 1.
-

-

Возвращается:

-

-

-

Пример:

-

if gamepad_is_connected(0) gamepad_set_axis_deadzone(0, 0.05);
if gamepad_is_connected(1) gamepad_set_axis_deadzone(1, 0.05);
if gamepad_is_connected(2) gamepad_set_axis_deadzone(2, 0.05);
if gamepad_is_connected(3) gamepad_set_axis_deadzone(3, - 0.05);

-

Приведенный выше код установит мертвую зону оси джойстика на любом из 4 подключенных устройств на 0,05.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_button_threshold.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_button_threshold.htm index 6de0e2bb2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_button_threshold.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_button_threshold.htm @@ -1,72 +0,0 @@ - - - - - - gamepad_set_button_threshold - - - - - - - - - - -

gamepad_set_button_threshold

-

С помощью этой функции можно установить текущее пороговое значение аналоговых кнопок для данного устройства. По умолчанию порог для всех аналоговых кнопок составляет 0,5, а диапазон - от 0 до 1.

-

Порог определяет, в какой момент кнопка считается "нажатой" для игр, в которых они должны действовать как цифровая кнопка.

-

Эта функция влияет на состояния проверки, нажатия и отпускания для аналоговых кнопок, но не влияет на значение, возвращаемое функцией gamepad_button_value()которая всегда будет возвращать исходное значение для кнопки.

-

-

Синтаксис:

-

gamepad_set_button_threshold(device, threshold);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
deviceРеальноWhich gamepad device "slot" to check.
thresholdРеальноThe new threshold value (from 0 - 1, default 0.5).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if gamepad_get_button_threshold(0) != 0.5
- {
-     gamepad_set_button_threshold(0, 0.5);
- }

-

Приведенный выше код проверяет пороговое значение аналоговой кнопки геймпада, подключенного к устройству "slot" 0, и если оно не равно значению по умолчанию 0,5, то оно устанавливается на это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_colour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_colour.htm index 20f46058c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_colour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_colour.htm @@ -1,68 +0,0 @@ - - - - - - gamepad_set_colour - - - - - - - - - - -

gamepad_set_colour

-

Эта функция может использоваться для установки цвета светодиодов в контроллере PlayStation. Вы указываете слот устройства для установки, а затем задаете цвет, который может быть любой из цветовых констант или значением цвета, созданным с помощью специальных цветовых функций, или HEX-значением (например, $FFFFFFF).

-

-

Синтаксис:

-

gamepad_set_colour(device, colour);

- - - - - - - - - - - - - - - -
АргументТипОписание
deviceWhich gamepad device "slot" to set.
colourThe colour to use.
-

-

Возвращается:

-

-

-

Пример:

-

if health < 10
- {
-     gamepad_set_colour(0, c_red);
- }

-

Приведенный выше код установит светодиоды контроллера PlayStation в красный цвет, если переменная health упадет ниже 10.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_option.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_option.htm index 750017072..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_option.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_option.htm @@ -1,104 +0,0 @@ - - - - - - gamepad_set_option - - - - - - - - - - -

gamepad_set_option

-

Эта функция может быть использована для установки любой из доступных опций геймпада. Вы указываете "слот" геймпада для установки опции, а также строку опции, которую нужно установить, и значение, которое нужно использовать. Доступная строка опций зависит от платформы, на которой выполняется проект, как указано ниже:

-

- - - - - - - - - - - - - - - - - - - - - -
ВариантПлатформаОписаниеЗначение
"allow_rotation"tvOSУстановите, будет ли пульт Siri Remote заблокирован на вращение (т.е. может использоваться только в вертикальном положении) или нет. При разблокировке (значение true) вращение пульта изменит ввод, например, поворот на 90º влево заставит "правую" сторону сенсорной панели вернуться "вверх" и т.д... таким образом, весь ввод будет осуществляться относительно ориентации устройства. При блокировке (значение false) ввод не будет изменяться относительно положения контроллера и всегда будет рассматриваться так, как будто контроллер находится в вертикальном положении.Булево
"dpad_absolute"tvOSУстанавливает, принимает ли сенсорная панель Siri Remote абсолютный или относительный ввод. В абсолютном режиме (значение true) центром сенсорной панели считается положение (0,0) - т.е. место, где аналоговый стик находится в состоянии покоя, или место, где был бы центр dpad - и движение вокруг этого положения будет генерировать ввод. Если установлено относительное значение (значение false ), то позиция (0,0) будет рассматриваться как место, где было сделано первоначальное прикосновение к тачпаду, и весь ввод будет генерироваться из этой позиции, а не из центра тачпада.Булево
-

-

Синтаксис:

-

gamepad_set_option(device, option_name, value);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
deviceРеальноWhich gamepad device "slot" to set.
option_nameСтрокаThe name of the option to set (a string, see the table above)
valueВещественный, булевский или строковыйThe value to set the option to (can be boolean, real or string - see the table above)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

for(var i = 0; i < 12; ++i;)
- {
-     if (gamepad_is_connected(i) && gamepad_get_description(i) == "tvOS Siri Remote")
-     {
-         if (gamepad_get_option(i, "allow_rotation") == false)
-         {
-             gamepad_set_option(i, "allow_rotation", true);
-         }
-     }
- }

-

Приведенный выше код перебирает все слоты геймпада и проверяет наличие "Siri Remote" на платформе tvOS. Если таковой обнаружен, он устанавливает пульт так, чтобы разрешить вращение ввода.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_vibration.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_vibration.htm index 3a2217dde..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_vibration.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_set_vibration.htm @@ -1,73 +0,0 @@ - - - - - - gamepad_set_vibration - - - - - - - - - - -

gamepad_set_vibration

-

С помощью этой функции вы можете настроить вибрацию моторов геймпада, причем для каждого из моторов используется значение от 0 (без вибрации) до 1 (полная вибрация). Обратите внимание, что в этой функции нет ограничения по времени, поэтому вам нужно будет использовать переменную или сигнал тревоги, чтобы отключить вибрацию (установить моторы в 0) по истечении заданного времени, иначе геймпад будет продолжать вибрировать бесконечно.

-

ПРИМЕЧАНИЕ: В настоящее время эта функция доступна только для стандартных целевых модулей Windows, PS4 и Xbox One.

-

-

Синтаксис:

-

gamepad_set_vibration(device, left_motor, right_motor);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
deviceWhich gamepad device "slot" to check.
left_motorThe amount of vibration from the left motor from 0 to 1.
right_motorThe amount of vibration from the right motor from 0 to 1.
-

-

Возвращается:

-

-

-

Пример:

-

if lives = 0
- {
-     gamepad_set_vibration(0, 1, 1);
-     alarm[0] = room_speed / 2;
- }

-

Приведенный выше код можно использовать (например) в событии столкновения, чтобы заставить геймпад, подключенный к "гнезду" 0, вибрировать в течение половины секунды, а установленный сигнал тревоги будет использоваться для его повторного отключения по истечении этого времени.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_test_mapping.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_test_mapping.htm index 28108f730..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_test_mapping.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/GamePad_Input/gamepad_test_mapping.htm @@ -1,184 +0,0 @@ - - - - - - gamepad_test_mapping - - - - - - - - - - - -

gamepad_test_mapping

-

Эта функция может быть использована для установки отображения геймпада на тех целях, которые это позволяют. Вы передаете индекс "slot" для геймпада, который нужно установить, а затем строку map, которая должна быть создана с использованием формата SDL со следующими полями:

-

<guid>,<description>,platform:<platform-name>,<bindings>

-

В каждом из этих полей должны быть указаны следующие данные:

-
    -
  • guid - строка цифр и букв, которая однозначно идентифицирует тип устройства (ее можно получить с помощью функции gamepad_get_guid() функция)
  • -
  • description - описание устройства в формате Ascii (его можно получить с помощью функции gamepad_get_description() функция)
  • -
  • platform-name - будет либо "platform:android", "platform:windows", "linux", либо "mac" (обратите внимание, что это будет автоматически добавлено к строке при вызове этой функции, и поэтому вам не нужно указывать это при построении собственных строк отображения)
  • -
  • bindings - набор записей, разделенных символом ',' для привязки фактического ввода к определенным константам GML.
  • -
-

Список записей, разделенных запятыми, соответствует определенному формату для каждой записи:

-

<abstract-gp-name>:<value-binding>

-

Здесь <value-binding> (т.е. прямой вход геймпада) может быть любым из следующих:

-
    -
  • a<N> - Представляет собой ось геймпада, где <N> - одна из осей от 0 до gamepad_axis_count() -1
  • -
  • b<N> - Представляет собой кнопку геймпада, где <N> - одна из кнопок от 0 до gamepad_button_count() -1
  • -
  • h<N>.<mask> - Это представляет шапку геймпада, где <N> представляет шапку от 0 до gamepad_hat_count() -1, а <mask> будет либо 1, либо 2, либо 4, либо 8.
  • -
-

Каждое входное значение должно быть связано с именем SDL, которое выражается в виде <>abstract-gp-name>, которое, в свою очередь, связано с константой GML. В таблице ниже показана эквивалентность между именем SDL и константой GameMaker:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Название SDLИмя GML
agp_face1
bgp_face2
xgp_face3
ygp_face4
leftshouldergp_shoulderl
lefttriggergp_shoulderlb
rightshouldergp_shoulderr
righttriggergp_shoulderrb
guidegp_select
startgp_start
leftstickgp_stickl
rightstickgp_stickr
dpupgp_padu
dpdowngp_padl
dpleftgp_padr
dprightgp_padd
leftxgp_axislh
leftygp_axislv
rightxgp_axisrh
rightygp_axisrv
-


- Когда вы построите строку сопоставления, она должна выглядеть примерно так:

-

"050000005e040000fd020000ffff3f00,Xbox Wireless Controller,a:b0,b:b1,start:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:android"

-

-

Синтаксис:

-

gamepad_test_mapping(index, mapping_string);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexРеальноWhich gamepad index "slot" to set.
mapping_stringСтрокаThe map string to use (see the description for more information).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var mapping = gamepad_get_guid(global.padIndex) + "," + gamepad_get_description(global.padIndex);
- var len = array_length(global.PadInstances);
- for (i = 0; i < len; i += 2)
- {
-     var left = global.PadInstances[i];
-     var right = global.PadInstances[i+1];
-     mapping += "," + left.sdlLabel + ":" + right.binding;
- }
- gamepad_test_mapping(global.padIndex, mapping);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Game_Input.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Game_Input.htm index 207a7b675..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Game_Input.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Game_Input.htm @@ -1,48 +0,0 @@ - - - - - - Игровой ввод - - - - - - - - - - -

Игровой ввод

-

Главное, что делает игру игрой, - это взаимодействие с игроком. Это достигается различными способами, с помощью клавиатуры и мыши на компьютерах, с помощью сенсорного экрана и наклона устройства на мобильных, или даже с помощью геймпада на всех платформах!

-

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

-

В играх существует огромное количество функций для ввода и управления игрой, поэтому они были разделены на разделы, связанные с конкретными методами ввода, чтобы было легче найти то, что вам нужно. Доступны следующие разделы:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/Gesture_Input.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/Gesture_Input.htm index 749aeae6d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/Gesture_Input.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/Gesture_Input.htm @@ -1,64 +0,0 @@ - - - - - - Ввод с помощью жестов - - - - - - - - - - -

Ввод с помощью жестов

-

Функции ввода устройства хорошо подходят для работы с простыми касаниями экрана или ориентацией устройства, но иногда вам нужно, чтобы ваши проекты определяли более сложные вещи, например, возможность перетаскивать или "листать" экземпляр по комнате. Это можно сделать с помощью функций Device, но для облегчения работы GameMaker имеет полный набор функций Gesture Events для обнаружения двойных касаний, перетаскивания, щелчков, щипков и поворотов, как на уровне экземпляра, так и на глобальном уровне, а также для возврата информации о событии. Все перечисленные здесь функции предназначены для обеспечения большего контроля над тем, как и когда эти события будут вызываться.

-

ВАЖНО Эти функции не будут работать на целевой платформе HTML5. Они не выдадут ошибку при использовании, а просто будут проигнорированы.

-

Доступны следующие различные функции жестов:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/event_data.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/event_data.htm index 662cb923f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/event_data.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/event_data.htm @@ -1,60 +0,0 @@ - - - - - - event_data - - - - - - - - - - -

event_data

-

Эта переменная является глобальной и используется для хранения карты DS, когда она используется в соответствующем событии (например, события жестов и широковещательные сообщения), и -1 во всех остальных случаях. Фактическое содержимое карты DS зависит от типа события, которое ее вызвало, поэтому обратитесь к отдельным разделам, посвященным этим событиям.

-

-

Синтаксис:

-

event_data

-

-

Возвращается:

-

DS Map ID

-

-

Пример:

-

isFlick = event_data[?"isflick"];
-
- if (isFlick)
- {
-     flickVelX = event_data[?"diffX"];
-     flickVelY = event_data[?"diffY"];
- }
- else
- {
-     flickVelX = 0;
-     flickVelY = 0;
- } -

-

Приведенный выше код берется из события жеста Drag End и проверяет, является ли это событие "flick", и если да, то извлекает необходимые данные из карты event_data DS и использует их для установки некоторых переменных. Если событие "flick" не обнаружено, то те же переменные устанавливаются в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_double_tap_distance.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_double_tap_distance.htm index e06ae3de8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_double_tap_distance.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_double_tap_distance.htm @@ -1,64 +0,0 @@ - - - - - - gesture_double_tap_distance - - - - - - - - - - - -

gesture_double_tap_distance

-

Эта функция используется для установки расстояния, в пределах которого необходимо повторно коснуться/нажать на экран после одного касания, чтобы сработал жест двойного касания. Расстояние измеряется в дюймах и по умолчанию имеет значение 0,1.

-

-

Синтаксис:

-

gesture_double_tap_distance(distance);

- - - - - - - - - - - -
АргументТипОписание
distanceThe distance (in inches) to set for double tap gesture event detection.
-

-

Возвращается:

-

-

-

Пример:

-

if gesture_get_double_tap_distance() != 0.1
- {
-     gesture_get_double_tap_distance(0.1);
- }

-

Приведенный выше код проверяет, установлено ли расстояние двойного касания для жестов в 0,1 дюйма, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_double_tap_time.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_double_tap_time.htm index 72a1b1739..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_double_tap_time.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_double_tap_time.htm @@ -1,65 +0,0 @@ - - - - - - gesture_double_tap_time - - - - - - - - - - -

gesture_double_tap_time

-

Эта функция используется для установки времени, которое должно пройти между двумя касаниями/щелчками, чтобы вызвать событие жеста двойного касания. Время измеряется в секундах и по умолчанию имеет значение 0,16.

-

-

Синтаксис:

-

gesture_double_tap_time(time);

- - - - - - - - - - - - - -
АргументТипОписание
timeРеальноThe time (in seconds) to set for double tap gesture event detection.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if gesture_get_double_tap_time() != 0.16
- {
-     gesture_get_double_tap_time(0.16);
- }

-

Приведенный выше код проверяет, установлено ли время двойного нажатия для жестов на 0,16 секунды, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_drag_distance.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_drag_distance.htm index bfd35e0d6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_drag_distance.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_drag_distance.htm @@ -1,64 +0,0 @@ - - - - - - gesture_drag_distance - - - - - - - - - - - -

gesture_drag_distance

-

Эта функция используется для установки расстояния, необходимого для срабатывания события жеста перетаскивания при прикосновении или щелчке. Расстояние измеряется в дюймах и имеет значение по умолчанию 0,1.

-

-

Синтаксис:

-

gesture_drag_distance(distance);

- - - - - - - - - - - -
АргументТипОписание
distanceThe distance (in inches) to set for drag gesture event detection.
-

-

Возвращается:

-

-

-

Пример:

-

if gesture_get_drag_distance() != 0.1
- {
-     gesture_drag_distance(0.1);
- }

-

Приведенный выше код проверяет, установлено ли расстояние перетаскивания для жестов в 0,1 дюйма, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_drag_time.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_drag_time.htm index 613433a2b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_drag_time.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_drag_time.htm @@ -1,63 +0,0 @@ - - - - - - gesture_drag_time - - - - - - - - - - -

gesture_drag_time

-

Эта функция используется для установки времени, в течение которого событие жеста Drag будет вызвано прикосновением или щелчком. Это время также влияет на то, как будет срабатывать событие касания, поскольку касание/щелчок и отпускание до истечения этого времени будет считаться касанием. Время измеряется в секундах и по умолчанию имеет значение 0,16.

-

-

Синтаксис:

-

gesture_drag_time(time);

- - - - - - - - - - - -
АргументТипОписание
timeThe time (in seconds) to set for drag gesture event detection.
-

-

Возвращается:

-

-

-

Пример:

-

if gesture_get_drag_time() != 0.16
- {
-     gesture_drag_time(0.16);
- }

-

Приведенный выше код проверяет, установлено ли время перетаскивания для жестов на 0,16 секунды, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_flick_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_flick_speed.htm index 6f5cecd04..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_flick_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_flick_speed.htm @@ -1,63 +0,0 @@ - - - - - - gesture_flick_speed - - - - - - - - - - -

gesture_flick_speed

-

Эта функция используется для установки скорости, необходимой для срабатывания события Flick Gesture при нажатии или отпускании кнопки. Скорость измеряется в дюймах в секунду и имеет значение по умолчанию 2,0.

-

-

Синтаксис:

-

gesture_flick_speed(speed);

- - - - - - - - - - - -
АргументТипОписание
speedThe speed (in inches per second) to set for flick gesture event detection.
-

-

Возвращается:

-

-

-

Пример:

-

if gesture_get_flick_speed() != 2
- {
-     gesture_flick_speed(2);
- }

-

Приведенный выше код проверяет, установлена ли скорость щелчка для жестов на 2 дюйма в секунду, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_double_tap_distance.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_double_tap_distance.htm index ae74f7be1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_double_tap_distance.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_double_tap_distance.htm @@ -1,52 +0,0 @@ - - - - - - gesture_get_double_tap_distance - - - - - - - - - - - -

gesture_get_double_tap_distance

-

Эта функция используется для получения расстояния, в пределах которого необходимо повторно коснуться/нажать на экран после одного касания, чтобы сработать жест двойного касания. Расстояние измеряется в дюймах и по умолчанию имеет значение 0,1.

-

-

Синтаксис:

-

gesture_get_double_tap_distance();

-

-

Возвращается:

-

(inches)

-

-

Пример:

-

if gesture_get_double_tap_distance() != 0.1
- {
-     gesture_double_tap_distance(0.1);
- }

-

Приведенный выше код проверяет, установлено ли расстояние двойного касания для жестов в 0,1 дюйма, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_double_tap_time.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_double_tap_time.htm index 64d345f38..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_double_tap_time.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_double_tap_time.htm @@ -1,52 +0,0 @@ - - - - - - gesture_get_double_tap_time - - - - - - - - - - - -

gesture_get_double_tap_time

-

Эта функция используется для получения времени, которое требуется между двумя касаниями/щелчками для запуска события жеста двойного касания. Время измеряется в секундах и имеет значение по умолчанию 0,10.

-

-

Синтаксис:

-

gesture_get_double_tap_time();

-

-

Возвращается:

-

Real (seconds)

-

-

Пример:

-

if gesture_get_double_tap_time() != 0.16
- {
-     gesture_double_tap_time(0.16);
- }

-

Приведенный выше код проверяет, установлено ли время двойного касания для жестов на 0,16 секунды, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_drag_distance.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_drag_distance.htm index fa42f23f8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_drag_distance.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_drag_distance.htm @@ -1,52 +0,0 @@ - - - - - - gesture_get_drag_distance - - - - - - - - - - - -

gesture_get_drag_distance

-

Эта функция используется для получения расстояния, необходимого для срабатывания события жеста перетаскивания при прикосновении или щелчке. Расстояние измеряется в дюймах и имеет значение по умолчанию 0,1.

-

-

Синтаксис:

-

gesture_get_drag_distance();

-

-

Возвращается:

-

(inches)

-

-

Пример:

-

if gesture_get_drag_distance() != 0.1
- {
-     gesture_drag_distance(0.1);
- }

-

Приведенный выше код проверяет, установлено ли расстояние перетаскивания для жестов в 0,1 дюйма, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_drag_time.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_drag_time.htm index 7052789d0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_drag_time.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_drag_time.htm @@ -1,52 +0,0 @@ - - - - - - gesture_get_drag_time - - - - - - - - - - - -

gesture_get_drag_time

-

Эта функция используется для получения времени, необходимого для того, чтобы событие жеста Drag Start было вызвано прикосновением или щелчком. Это время также влияет на то, как будет срабатывать событие касания, поскольку касание/щелчок и отпускание до истечения этого времени будет считаться касанием. Время измеряется в секундах и по умолчанию имеет значение 0,16.

-

-

Синтаксис:

-

gesture_get_drag_time();

-

-

Возвращается:

-

(time in seconds)

-

-

Пример:

-

if gesture_get_drag_time() != 0.16
- {
-     gesture_drag_time(0.16);
- }

-

Приведенный выше код проверяет, установлено ли время перетаскивания для жестов на 0,16 секунды, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_flick_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_flick_speed.htm index 875905c82..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_flick_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_flick_speed.htm @@ -1,52 +0,0 @@ - - - - - - gesture_get_flick_speed - - - - - - - - - - - -

gesture_get_flick_speed

-

Эта функция используется для получения скорости, необходимой для срабатывания события Flick Gesture при нажатии или отпускании кнопки мыши. Скорость измеряется в дюймах в секунду и имеет значение по умолчанию 2,0.

-

-

Синтаксис:

-

gesture_get_flick_speed();

-

-

Возвращается:

-

(inches per second)

-

-

Пример:

-

if gesture_get_flick_speed() != 2
- {
-     gesture_flick_speed(2);
- }

-

Приведенный выше код проверяет, установлена ли скорость щелчка для жестов на 2 дюйма в секунду, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_pinch_angle_away.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_pinch_angle_away.htm index 3660294c9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_pinch_angle_away.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_pinch_angle_away.htm @@ -1,52 +0,0 @@ - - - - - - gesture_get_pinch_angle_away - - - - - - - - - - - -

gesture_get_pinch_angle_away

-

Эта функция используется для получения угла, в пределах которого прикосновение должно удаляться от другого прикосновения, прежде чем потенциально может быть запущен жест Pinch Out. Угол измеряется в градусах и имеет значение по умолчанию 45°.

-

-

Синтаксис:

-

gesture_get_pinch_angle_away();

-

-

Возвращается:

-

(inches)

-

-

Пример:

-

if gesture_get_pinch_angle_away() != 45
- {
-     gesture_pinch_angle_away(45);
- }

-

Приведенный выше код проверяет, установлен ли угол отведения для жестов в 45°, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_pinch_angle_towards.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_pinch_angle_towards.htm index f8857358a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_pinch_angle_towards.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_pinch_angle_towards.htm @@ -1,52 +0,0 @@ - - - - - - gesture_get_pinch_angle_towards - - - - - - - - - - - -

gesture_get_pinch_angle_towards

-

Эта функция используется для получения угла, в пределах которого прикосновение должно двигаться к другому прикосновению, прежде чем потенциально может быть запущен жест Pinch In. Угол измеряется в градусах и имеет значение по умолчанию 45°.

-

-

Синтаксис:

-

gesture_get_pinch_angle_towards();

-

-

Возвращается:

-

(inches)

-

-

Пример:

-

if gesture_get_pinch_angle_towards() != 45
- {
-     gesture_pinch_angle_towards(45);
- }

-

Приведенный выше код проверяет, установлен ли угол зажатия для жестов в 45°, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_pinch_distance.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_pinch_distance.htm index eb3b6a85f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_pinch_distance.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_pinch_distance.htm @@ -1,52 +0,0 @@ - - - - - - gesture_get_pinch_distance - - - - - - - - - - - -

gesture_get_pinch_distance

-

Эта функция используется для получения расстояния, в пределах которого необходимо коснуться/нажать на экран и переместить два пальца, прежде чем сработает жест Pinch. Расстояние измеряется в дюймах и имеет значение по умолчанию 0,1.

-

-

Синтаксис:

-

gesture_get_pinch_distance();

-

-

Возвращается:

-

(inches)

-

-

Пример:

-

if gesture_get_pinch_distance() != 0.1
- {
-     gesture_pinch_distance(0.1);
- }

-

Приведенный выше код проверяет, установлено ли расстояние прижатия для жестов в 0,1 дюйма, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_rotate_angle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_rotate_angle.htm index 94eb51ffb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_rotate_angle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_rotate_angle.htm @@ -1,52 +0,0 @@ - - - - - - gesture_get_rotate_angle - - - - - - - - - - - -

gesture_get_rotate_angle

-

Эта функция используется для получения угла, который должна превысить пара касаний, чтобы вызвать жест начала поворота. Угол измеряется в градусах и имеет значение по умолчанию 5°.

-

-

Синтаксис:

-

gesture_get_rotate_angle();

-

-

Возвращается:

-

(inches)

-

-

Пример:

-

if gesture_get_rotate_angle() != 5
- {
-     gesture_rotate_angle(5);
- }

-

Приведенный выше код проверяет, установлен ли угол поворота для жестов на 5°, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_rotate_time.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_rotate_time.htm index 342ad1184..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_rotate_time.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_rotate_time.htm @@ -1,52 +0,0 @@ - - - - - - gesture_get_rotate_time - - - - - - - - - - -

gesture_get_rotate_time

-

Эта функция используется для получения времени, в течение которого пара касаний должна вращаться в одном направлении, чтобы сработал жест Rotate Start. Время измеряется в секундах и имеет значение по умолчанию 0,16 с.

-

ВАЖНО! В настоящее время для игры с частотой 60 кадров в секунду вы можете установить максимальное значение в одну секунду, иначе вращение не будет обнаружено. При более низкой частоте кадров это значение увеличится, например, для игры с частотой 30 кадров в секунду максимальное время может составлять 2 секунды.

-

-

Синтаксис:

-

gesture_get_rotate_time();

-

-

Возвращается:

-

(inches)

-

-

Пример:

-

if gesture_get_rotate_time() != 0.1
- {
-     gesture_rotate_time(0.1);
- }

-

Приведенный выше код проверяет, установлено ли время поворота для жестов на 0,1 секунды, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_tap_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_tap_count.htm index 30e38b400..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_tap_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_get_tap_count.htm @@ -1,52 +0,0 @@ - - - - - - gesture_get_tap_count - - - - - - - - - - - -

gesture_get_tap_count

-

Эта функция используется для проверки того, включен или отключен подсчет касаний. Функция возвращает true, если она включена, и false в противном случае, и вы можете включить или выключить отсчет касаний с помощью функции gesture_tap_count(). Если функция включена, каждое событие переключения будет иметь дополнительный элемент карты DS "tapcount", в котором будет зарегистрировано количество переключений, и если функция включена, это означает, что все события переключения будут запущены, т.е.: два переключения вызовут как событие одинарного переключения, так и событие двойного переключения, при этом количество переключений для события одинарного переключения будет равно 1, а для события двойного переключения - 2. Значение счета переключений будет сброшено на 0 по истечении времени, установленного для обнаружения двойного переключения (см. функцию gesture_double_tap_time()). Если счетчик касаний отключен, то первое касание не будет зарегистрировано, пока не пройдет время двойного касания и не будет обнаружено второе касание. Обратите внимание, что по умолчанию эта функция включена.

-

-

Синтаксис:

-

gesture_get_tap_count();

-

-

Возвращается:

-

-

-

Пример:

-

if !gesture_get_tap_count()
- {
-     getsure_tap_count(true);
- }

-

Приведенный выше код проверяет, включен ли подсчет касаний, и если нет, то он включается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_pinch_angle_away.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_pinch_angle_away.htm index ee9579753..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_pinch_angle_away.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_pinch_angle_away.htm @@ -1,51 +0,0 @@ - - - - - - gesture_pinch_angle_away - - - - - - - - - - -

gesture_pinch_angle_away

-

Эта функция используется для установки угла, в пределах которого прикосновение должно удаляться от другого прикосновения, прежде чем может быть запущен жест Pinch Out. Угол измеряется в градусах и имеет значение по умолчанию 45°.

-

-

Синтаксис:

-

gesture_pinch_angle_away();

-

-

Возвращается:

-

(inches)

-

-

Пример:

-

if gesture_get_pinch_angle_away() != 45
- {
-     gesture_pinch_angle_away(45);
- }

-

Приведенный выше код проверяет, установлен ли угол отведения для жестов в 45°, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_pinch_angle_towards.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_pinch_angle_towards.htm index a4e9173fe..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_pinch_angle_towards.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_pinch_angle_towards.htm @@ -1,51 +0,0 @@ - - - - - - gesture_pinch_angle_towards - - - - - - - - - - -

gesture_pinch_angle_towards

-

Эта функция используется для установки угла, в пределах которого прикосновение должно двигаться к другому прикосновению, прежде чем может быть запущен жест Pinch In. Угол измеряется в градусах и имеет значение по умолчанию 45°.

-

-

Синтаксис:

-

gesture_pinch_angle_towards();

-

-

Возвращается:

-

(inches)

-

-

Пример:

-

if gesture_get_pinch_angle_towards() != 45
- {
-     gesture_pinch_angle_towards(45);
- }

-

Приведенный выше код проверяет, установлен ли угол зажатия для жестов в 45°, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_pinch_distance.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_pinch_distance.htm index 5f37e46be..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_pinch_distance.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_pinch_distance.htm @@ -1,52 +0,0 @@ - - - - - - gesture_pinch_distance - - - - - - - - - - - -

gesture_pinch_distance

-

Эта функция используется для установки расстояния, в пределах которого необходимо коснуться/нажать на экран и переместить два пальца, прежде чем сработает жест Pinch. Расстояние измеряется в дюймах и имеет значение по умолчанию 0,1.

-

-

Синтаксис:

-

gesture_pinch_distance();

-

-

Возвращается:

-

(inches)

-

-

Пример:

-

if gesture_get_pinch_distance() != 0.1
- {
-     gesture_pinch_distance(0.1);
- }

-

Приведенный выше код проверяет, установлено ли расстояние прижатия для жестов в 0,1 дюйма, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_rotate_angle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_rotate_angle.htm index 1a8c1e8f3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_rotate_angle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_rotate_angle.htm @@ -1,51 +0,0 @@ - - - - - - gesture_rotate_angle - - - - - - - - - - -

gesture_rotate_angle

-

Эта функция используется для установки угла, который должна превысить пара касаний, чтобы вызвать жест начала поворота. Угол измеряется в градусах и имеет значение по умолчанию 5°.

-

-

Синтаксис:

-

gesture_rotate_angle();

-

-

Возвращается:

-

(inches)

-

-

Пример:

-

if gesture_get_rotate_angle() != 5
- {
-     gesture_rotate_angle(5);
- }

-

Приведенный выше код проверяет, установлен ли угол поворота для жестов на 5°, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_rotate_time.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_rotate_time.htm index f76462a19..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_rotate_time.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_rotate_time.htm @@ -1,52 +0,0 @@ - - - - - - gesture_rotate_time - - - - - - - - - - -

gesture_rotate_time

-

Эта функция используется для установки времени, в течение которого пара касаний должна вращаться в одном направлении, чтобы сработал жест Rotate Start. Время измеряется в секундах и имеет значение по умолчанию 0,16 с.

-

ВАЖНО! В настоящее время для игры с частотой 60 кадров в секунду вы можете установить максимальное значение в одну секунду, иначе вращение не будет обнаружено. При более низкой частоте кадров это значение увеличится, например, для игры с частотой 30 кадров в секунду максимальное время может составлять 2 секунды.

-

-

Синтаксис:

-

gesture_rotate_time();

-

-

Возвращается:

-

(inches)

-

-

Пример:

-

if gesture_get_rotate_time() != 0.1
- {
-     gesture_rotate_time(0.1);
- }

-

Приведенный выше код проверяет, установлено ли время поворота для жестов на 0,1 секунды, и если нет, то устанавливает это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_tap_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_tap_count.htm index 5aa960bdb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_tap_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Gesture_Input/gesture_tap_count.htm @@ -1,64 +0,0 @@ - - - - - - gesture_tap_count - - - - - - - - - - - -

gesture_tap_count

-

Эта функция используется для установки того, включен или отключен счетчик касаний. При установке значения true отсчет включается, а при установке false - отключается, хотя вы можете проверить, в каком состоянии он находится, используя функцию gesture_get_tap_count(). Если функция включена, каждое событие переключения будет иметь дополнительный элемент карты DS "tapcount", в котором будет зарегистрировано количество переключений, а если включена, это означает, что все события переключения будут запущены, т.е.: два переключения вызовут и событие одинарного переключения, и событие двойного переключения, при этом количество переключений для события одинарного переключения будет равно 1, а для события двойного переключения - 2. Значение счета переключений будет сброшено на 0 по истечении времени, установленного для обнаружения двойного переключения (см. функцию gesture_double_tap_time()). Если счетчик касаний отключен, то первое касание не будет зарегистрировано, пока не пройдет время двойного касания и не будет обнаружено второе касание. Обратите внимание, что по умолчанию эта функция включена.

-

-

Синтаксис:

-

gesture_tap_count(enable);

- - - - - - - - - - - -
АргументТипОписание
enableEnable (set to true) или отключить (установить на false) подсчет касаний.
-

-

Возвращается:

-

-

-

Пример:

-

if !gesture_get_tap_count()
- {
-     getsure_tap_count(true);
- }

-

Приведенный выше код проверяет, включен ли подсчет касаний, и если нет, то он включается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/Keyboard_Input.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/Keyboard_Input.htm index b0e15508d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/Keyboard_Input.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/Keyboard_Input.htm @@ -1,315 +0,0 @@ - - - - - - Ввод с клавиатуры - - - - - - - - - - -

Ввод с клавиатуры

-

При работе с клавиатурой в GameMaker у вас есть множество функций, которые можно использовать для распознавания различных состояний клавиатуры, например, нажатой или отпущенной. Есть и такие, которые сохраняют все нажатия клавиш в виде строки или могут сообщить вам, какой была последняя нажатая клавиша, а также другие, позволяющие полностью очистить состояние клавиатуры.

-

ПРИМЕЧАНИЕ Эти функции предназначены только для настольных платформ Windows/Mac/Ubuntu. Вы можете обнаружить, что некоторые встроенные переменные и константы не действуют на других платформах, а многие функции не будут работать на мобильных устройствах.

-

Каждый символ ввода с клавиши (или нескольких клавиш) определяется его кодом UTF8, который представляет собой числовое значение. Это значение может быть получено для любого символа с помощью функции ord() но в GameMaker также есть серия constants для наиболее используемых специальных клавиш клавиатуры и специальных функций. Обычно вы используете комбинацию ord() с функциями keyboard_check*(), примерно так:

-

if keyboard_check(ord("A"))
- {
-     hspeed = -5;
- }

-

Таким образом, приведенная выше функция проверит клавишу "A" и, если она нажата, то установит горизонтальную скорость объекта на -5. Обратите внимание, что использование ord() таким образом будет работать правильно только в том случае, если входная строка имеет длину всего один символ и представляет собой число от 0 до 9 или заглавный римский символ от A до Z. Функция ord() вернет полное значение UTF8, а функции keyboard_check*() определят только A - Z и 0 - 9. Но что, если вы хотите использовать клавиши со стрелками? Или если вы хотите изменить действие с помощью клавиши "shift"? Для этого в GameMaker есть серия констант vk_ (vk_ означает виртуальную клавишу), которые можно использовать вместо ord():

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Константа виртуального ключа (vk_*)
ПостояннаяОписание
vk_nokeyкод клавиши, означающий, что ни одна клавиша не нажата
vk_anykeyкод клавиши, представляющий нажатие любой клавиши
vk_leftкод клавиши для клавиши со стрелкой влево
vk_rightкод клавиши для клавиши со стрелкой вправо
vk_upкод клавиши для клавиши со стрелкой вверх
vk_downкод клавиши для клавиши со стрелкой вниз
vk_enterклавиша ввода
vk_escapeклавиша эвакуации
vk_spaceклавиша пробела
vk_shiftлюбая из клавиш shift
vk_controlодна из клавиш управления
vk_altклавиша alt
vk_backspaceклавиша обратного хода
vk_tabклавиша табуляции
vk_homeглавный ключ
vk_endконечный ключ
vk_deleteклавиша удаления
vk_insertклавиша вставки
vk_pageupклавиша перехода на страницу
vk_pagedownклавиша вызова
vk_pauseклавиша паузы/прерывания
vk_printscreenклавиша printscreen/sysrq
vk_f1 ... vk_f12код клавиш для функциональных клавиш F1 - F12
vk_numpad0 ... vk_numpad9цифровые клавиши на цифровой клавиатуре
vk_multiplyклавиша умножения на цифровой клавиатуре
vk_divideклавиша деления на цифровой клавиатуре
vk_addклавиша добавления на цифровой клавиатуре
vk_subtractклавиша вычитания на цифровой клавиатуре
vk_decimalклавиши с десятичными точками на цифровой клавиатуре
-

-

Следующие константы можно использовать только с keyboard_check_direct():

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Константа виртуального ключа (vk_*)
ПостояннаяОписание
vk_lshiftклавиша левого сдвига
vk_lcontrolлевая клавиша управления
vk_laltлевая клавиша alt
vk_rshiftправая клавиша переключения
vk_rcontrolправая клавиша управления
vk_raltправая клавиша alt
-

Ниже приведен небольшой пример того, как можно использовать vk_ константы:

-

if keyboard_check_pressed(vk_tab)
- {
-     instance_create_layer(x, y, "Controllers", obj_Menu);
- }

-

Приведенный выше код определит, нажата ли клавиша "Tab", и создаст экземпляр объекта "obj_Menu", если да.

-

Если вам нужно проверить наличие ключевого символа, который не является 0 - 9, A - Z или одной из констант VK, то вам следует проверить одну из переменных keyboard_*, например, keyboard_lastchar:

-

var _key = keyboard_lastchar;
- if ord(_key) == ord("ç")
- {
-     show_debug_message("ç key pressed");
-     keyboard_lastchar = "";
- }

-

При работе с клавиатурой доступны следующие функции:

-

ПРИМЕЧАНИЕ: Эти функции не будут работать при использовании экранной виртуальной клавиатуры.

- -

-

Есть также некоторые функции, которые можно использовать для имитации нажатия клавиш:

- -

-

Наконец, следующие переменные встроены в GameMaker и могут быть доступны для получения информации о состоянии клавиатуры и вводимых данных:

-

ПРИМЕЧАНИЕ: При использовании виртуальной клавиатуры только переменная keyboard_string будет обновляться при вводе с клавиатуры.

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/io_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/io_clear.htm index e458499b7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/io_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/io_clear.htm @@ -1,54 +0,0 @@ - - - - - - io_clear - - - - - - - - - - - - - - -

io_clear

-

Эта функция очистит текущее состояние клавиатуры и мыши. Обратите внимание, что то, что произойдет на следующем шаге после вызова этой функции, будет зависеть от того, что проверяется, и от платформы, на которой это проверяется. При вводе данных с помощью мыши кнопку мыши - должна быть отпущена и нажата снова, чтобы был обнаружен дальнейший ввод, но с клавиатурой все не так просто. В общем случае клавиатура будет очищена только для этого шага, но на следующем шаге клавиша будет снова обнаружена, однако - это может быть не одинаково на всех платформах и клавиатурах, и в некоторых случаях функция может действовать как для мыши и требовать, чтобы клавиша была поднята и нажата снова.

-

-

Синтаксис:

-

io_clear();

-

-

Возвращается:

-

-

-

Пример:

-

io_clear();

-

Это очистит все состояния клавиатуры и мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_check.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_check.htm index 6befddffc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_check.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_check.htm @@ -1,66 +0,0 @@ - - - - - - keyboard_check - - - - - - - - - - - -

keyboard_check

-

С помощью этой функции можно проверить, удерживается ли клавиша нажатой или нет. В отличие от keyboard_check_pressed() или keyboard_check_released() которая срабатывает только один раз при нажатии или отпускании клавиши, эта функция срабатывает на каждом шаге, в течение которого клавиша удерживается нажатой. Функция принимает значение кода клавиши, возвращаемое функцией ord() (только заглавные буквы от A-Z или цифры от 0-9), или любую из констант vk_*, перечисленных на главной странице ввода с клавиатуры.

-

-

Синтаксис:

-

keyboard_check(key);

- - - - - - - - - - - - - -
АргументТипОписание
keyКонстанта виртуального ключа (vk_*)The key to check the down state of.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if keyboard_check(vk_left)
- {
-     x -= 5;
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_check_direct.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_check_direct.htm index 596e25f16..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_check_direct.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_check_direct.htm @@ -1,65 +0,0 @@ - - - - - - keyboard_check_direct - - - - - - - - - - - -

keyboard_check_direct

-

Эта функция возвращает true, если клавиша с определенным кодом нажата, или false, если нет, проверяя аппаратное обеспечение напрямую. Она позволяет выполнить несколько дополнительных проверок, в частности, вы можете использовать коды vk_lshift, vk_lcontrol, vk_lalt, vk_rshift, vk_rcontrol и vk_ralt для проверки того, нажата ли левая или правая клавиша shift, control или alt. Функция принимает значение кода клавиши, возвращаемое функцией ord() (только заглавные буквы от A-Z или цифры от 0-9), или любую из констант vk_*, перечисленных на главной странице ввода с клавиатуры.

-

ПРИМЕЧАНИЕ Эта функция доступна только для стандартной цели Windows, и результат не зависит от того, какое приложение находится в фокусе.

-

-

Синтаксис:

-

keyboard_check_direct(key);

- - - - - - - - - - - -
АргументТипОписание
keyThe key to check the down state of.
-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check_direct(vk_ralt) || keyboard_check_direct(vk_lalt)
- {
-     crouch = true;
- }

-

Приведенный выше код проверяет, была ли нажата левая или правая клавиша alt, и если да, то устанавливает переменную "crouch" в true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_check_pressed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_check_pressed.htm index f4973e756..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_check_pressed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_check_pressed.htm @@ -1,66 +0,0 @@ - - - - - - keyboard_check_pressed - - - - - - - - - - - -

keyboard_check_pressed

-

С помощью этой функции можно проверить, была ли нажата клавиша или нет. В отличие от keyboard_check() эта функция будет выполняться только один раз при каждом нажатии клавиши, поэтому для ее повторного срабатывания клавиша должна быть сначала отпущена, а затем снова нажата. Функция принимает значение кода клавиши, возвращаемое функцией ord() (только заглавные буквы от A-Z или цифры от 0-9), или любую из констант vk_*, перечисленных на главной странице " Ввод с клавиатуры ".

-

-

Синтаксис:

-

keyboard_check_pressed(key);

- - - - - - - - - - - - - -
АргументТипОписание
keyКонстанта виртуального ключа (vk_*)The key to check the pressed state of.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if keyboard_check_pressed(vk_anykey)
- {
-     room_goto_next();
- }

-

Приведенный выше код перейдет в следующую комнату, если игрок нажмет любую из клавиш клавиатуры (работает как запрос "Press Any Key to Continue").

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_check_released.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_check_released.htm index 24b5c1f83..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_check_released.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_check_released.htm @@ -1,64 +0,0 @@ - - - - - - keyboard_check_released - - - - - - - - - - - -

keyboard_check_released

-

С помощью этой функции можно проверить, был ли ключ отпущен или нет. В отличие от keyboard_check() эта функция будет выполняться только один раз при каждом поднятии клавиши, поэтому, чтобы она сработала снова, клавиша должна быть сначала нажата, а затем снова отпущена. Функция принимает значение кода клавиши, возвращаемое функцией ord() (только заглавные буквы от A-Z или цифры от 0-9), или любую из констант vk_*, перечисленных на главной странице ввода с клавиатуры.

-

-

Синтаксис:

-

keyboard_check_released(key);

- - - - - - - - - - - -
АргументТипОписание
keyThe key to check the released state of.
-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check_released(ord("P"))
- {
-     instance_create_layer(0, 0, "Controllers", obj_Pause);
- }

-

Приведенный выше код проверит, была ли отпущена клавиша "P", и если да, то создаст экземпляр "obj_Pause".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_clear.htm index a16a5dcdd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_clear.htm @@ -1,66 +0,0 @@ - - - - - - keyboard_clear - - - - - - - - - - - - - - -

keyboard_clear

-

С помощью этой функции вы можете очистить текущее состояние клавиатуры, что означает, что если клавиша удерживается нажатой, она больше не будет распознаваться до тех пор, пока ее снова не отпустят (что не вызовет событие Keyboard Key Released и в этом случае). - ) и нажата снова. Функция принимает значение кода клавиши, возвращаемое функцией ord() (только заглавные буквы от A-Z или цифры от 0-9), или любую из констант vk_*, перечисленных - на главной странице " Ввод с клавиатуры ".

-

-

Синтаксис:

-

keyboard_clear(key);

- - - - - - - - - - - -
АргументТипОписание
keyThe key to clear.
-

-

Возвращается:

-

-

-

Пример:

-

keyboard_clear(vk_space);

-

Приведенный выше код очищает состояние пробела.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_get_map.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_get_map.htm index 59102d46b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_get_map.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_get_map.htm @@ -1,64 +0,0 @@ - - - - - - keyboard_get_map - - - - - - - - - - - -

keyboard_get_map

-

Иногда вам может понадобиться получить ascii код для сопоставленного ключа (например, чтобы узнать, сопоставлен ли он уже), что и возвращает данная функция. Функция принимает значение кода клавиши, возвращаемое функцией ord() (только заглавные буквы от A-Z или цифры от 0-9), или любую из констант vk_*, перечисленных на главной странице " Ввод с клавиатуры ".

-

-

Синтаксис:

-

keyboard_get_map(key);

- - - - - - - - - - - -
АргументТипОписание
keyThis is the key that you wish to get the mapped value from
-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_get_map(ord("A")) = ord("A")
- {
-     keyboard_set_map(_keycode, keyboard_lastkey);
- }

-

Приведенный выше пример кода сначала проверит, была ли "A" сопоставлена с другой клавишей, и если нет, то сопоставит ее с последней клавишей, которую нажал пользователь.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_get_numlock.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_get_numlock.htm index fe4c1a8ee..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_get_numlock.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_get_numlock.htm @@ -1,57 +0,0 @@ - - - - - - keyboard_get_numlock - - - - - - - - - - - -

keyboard_get_numlock

-

Вы можете использовать эту функцию для определения состояния блокировки номера клавиатуры: true возвращается в случае включения, false - в случае выключения.

-

ПРИМЕЧАНИЕ Эта функция доступна только в сборке Windows exe и не будет работать на любом другом устройстве.

-

-

Синтаксис:

-

keyboard_get_numlock();

-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_get_numlock()
- {
-     keyboard_set_numlock(false);
- }
- else
- {
-     keyboard_set_numlock(true);
- }

-

Приведенный выше пример кода получит состояние клавиши Numberlock и, если она включена (true), то установит ее в положение off (false) и наоборот.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_key.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_key.htm index 1448e044a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_key.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_key.htm @@ -1,53 +0,0 @@ - - - - - - keyboard_key - - - - - - - - - - -

keyboard_key

-

С помощью этой переменной вы можете получить код клавиши, которая в данный момент нажата, и она вернет 0, если в момент проверки ни одна клавиша не нажата.

-

-

Синтаксис:

-

keyboard_key;

-

-

Возвращается:

-

Virtual Key Constant

-

-

Пример:

-

switch (keyboard_key)
- {
-     case vk_numpad1: gun = weapon[0][0]; break;
-     case vk_numpad2: gun = weapon[1][0]; break;
-     case vk_numpad3: gun = weapon[2][0]; break;
- }

-

Приведенный выше код использует значение переменной keyboard_key, чтобы установить переменную в то же значение, что и массив.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_key_press.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_key_press.htm index 177ff5697..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_key_press.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_key_press.htm @@ -1,63 +0,0 @@ - - - - - keyboard_key_press - - - - - - - - - - - -

keyboard_key_press

-

С помощью этой функции можно имитировать нажатие любой клавиши на клавиатуре. При ее использовании клавиша будет отмечена как нажатая до тех пор, пока не будет вызвана соответствующая функция отпускания (см. keyboard_key_release()). - Функция принимает значение кода клавиши, возвращаемое функцией ord() (только заглавные буквы от A-Z или цифры от 0-9), или любую из констант vk_*, перечисленных на главной странице " Ввод с клавиатуры ".

-

Обратите внимание, что после вызова этой функции, если клавиша физически нажата на клавиатуре, это событие нажатия не будет зарегистрировано снова, пока клавиша не будет физически отпущена (срабатывает событие отпускания и останавливает эту функцию), - или была вызвана соответствующая функция освобождения клавиши, и клавиша была нажата снова.

-

-

Синтаксис:

-

keyboard_key_press(key);

- - - - - - - - - - - -
АргументТипОписание
keyThe key to simulate a press of.
-

-

Возвращается:

-

-

-

Пример:

-

keyboard_key_press(vk_space);

-

Это будет имитировать нажатие пробела.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_key_release.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_key_release.htm index 16bbef529..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_key_release.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_key_release.htm @@ -1,64 +0,0 @@ - - - - - - keyboard_key_release - - - - - - - - - - - - -

keyboard_key_release

-

С помощью этой функции можно имитировать нажатие любой клавиши на клавиатуре. Функция принимает значение кода клавиши, возвращаемое функцией ord() (только заглавные буквы от A-Z или цифры от 0-9), - или любую из констант vk_*, перечисленных на главной странице " Ввод с клавиатуры ".

-

-

Синтаксис:

-

keyboard_key_release(key);

- - - - - - - - - - - -
АргументТипОписание
keyThe key to simulate a release of.
-

-

-

Возвращается:

-

-

-

Пример:

-

keyboard_key_release(vk_space);

-

Это будет имитировать нажатие пробела.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_lastchar.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_lastchar.htm index 6a1a7831e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_lastchar.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_lastchar.htm @@ -1,52 +0,0 @@ - - - - - - keyboard_lastchar - - - - - - - - - - -

keyboard_lastchar

-

В этой переменной хранится строка последней нажатой клавиши. Эта переменная не является только для чтения, и вы можете изменить ее, например, установить в "" (пустую строку), если вы уже работали с ней.

-

-

Синтаксис:

-

keyboard_lastchar;

-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_lastkey != -1
- {
-     str += keyboard_lastchar;
-     keyboard_lastkey = vk_nokey;
- }

-

Приведенный выше код проверяет, не превышает ли переменная lastkey значение -1, и если да, то добавляет в переменную "str" все, что было последней клавишей в виде строки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_lastkey.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_lastkey.htm index 411fc7b0d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_lastkey.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_lastkey.htm @@ -1,52 +0,0 @@ - - - - - - keyboard_lastkey - - - - - - - - - - -

keyboard_lastkey

-

Эта переменная ссылается на значение, которое keyboard_key было в предыдущем кадре, возвращая ключевой код этой клавиши (возвращаются все стандартные константы ключевого кода). Эта переменная не является только для чтения, и вы можете изменить ее, например, установить значение -1, если вы его уже обработали.

-

-

Синтаксис:

-

keyboard_lastkey;

-

-

Возвращается:

-

Virtual Key Constant

-

-

Пример:

-

if (keyboard_lastkey != -1)
- {
-     str += keyboard_lastchar;
-     keyboard_lastkey = -1;
- }

-

Приведенный выше код проверяет, не равна ли переменная lastkey значению -1, и если равна, то добавляет в переменную "str" строку, какой была последняя клавиша, после чего сбрасывает переменную keyboard_lastkey для дальнейшего ввода.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_set_map.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_set_map.htm index 643c2c297..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_set_map.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_set_map.htm @@ -1,71 +0,0 @@ - - - - - - keyboard_set_map - - - - - - - - - - -

keyboard_set_map

-

Иногда при создании игры вы можете пожелать, чтобы одна клавиша выполняла те же действия, что и другая. Например, многие люди используют клавиши WASD для перемещения, но многие также используют клавиши со стрелками! Что же делать? Ну, вы можете закодировать систему движения - дважды, но это немного сложно и, к счастью, излишне, поскольку эта функция позволяет "сопоставить" одну клавишу с другой, и тогда любой ввод с любой клавиши будет интерпретироваться как один и тот же. Для этого вы выбираете клавишу, которую хотите сопоставить (key2 - - это будет та клавиша, для которой вы пишете код) и клавишу, на которую вы хотите ее сопоставить (key1). После этого нажатия на любую из клавиш будут интерпретироваться GameMaker как нажатия на клавишу key2. Вы также можете использовать эту функцию для разработки - системы, в которой пользователь может определять свои собственные клавиши для игры, просто сопоставляя клавишу ввода пользователя с клавишей, которую вы закодировали в игре.

-

Функция принимает значение кода клавиш, возвращаемое функцией ord() (только заглавные буквы от A-Z или цифры от 0-9), или любую из констант vk_*, перечисленных на главной странице " Ввод с клавиатуры ".

-

ВАЖНО! После использования этой функции клавиша, к которой вы привязываете символ (клавиша1), больше не будет использоваться в качестве фактического символа клавиши. Например, если вы назначите стрелку вверх на "W", то вы больше не сможете определить нажатие клавиши - клавиши "W" как "W", она всегда будет восприниматься как стрелка вверх. Чтобы отменить это, либо привяжите клавишу к самой себе - так, чтобы и клавиша1, и клавиша2 были ord("W") - либо используйте функцию keyboard_unset_map().

-

-

Синтаксис:

-

keyboard_set_map(key1, key2);

- - - - - - - - - - - - - - - -
АргументТипОписание
key1This is the key that key1 is to be mapped to
key2This is the key that is to be mapped
-

-

Возвращается:

-

-

-

Пример:

-

keyboard_set_map(ord("A"), vk_left);

-

В приведенном выше примере кода клавиша "A" будет сопоставлена с клавишей стрелки влево. Это означает, что игрок может использовать либо клавишу "A ", либо клавишу со стрелкой влево, и что весь код, написанный для стрелки влево, также будет реагировать на клавишу "A". - вместо нее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_set_numlock.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_set_numlock.htm index 4c6e9920d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_set_numlock.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_set_numlock.htm @@ -1,70 +0,0 @@ - - - - - - keyboard_set_numlock - - - - - - - - - - -

keyboard_set_numlock

-

С помощью этой функции можно включить или выключить блокировку номера клавиатуры (для включения установлено значение true, для выключения - false ).

-

ПРИМЕЧАНИЕ Эта функциональность доступна только в целевых сборках Windows и не будет работать на любом другом устройстве.

-

-

Синтаксис:

-

keyboard_set_numlock(value);

- - - - - - - - - - - - - -
АргументТипОписание
valueБулевоSet this to true for "on" and false for "off"
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if keyboard_get_numlock()
- {
-     keyboard_set_numlock(false);
- }
- else
- {
-     keyboard_set_numlock(true);
- }

-

Приведенный выше пример кода получит состояние клавиши Numberlock и, если она включена (true), то установит ее в положение off (false) и наоборот.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_string.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_string.htm index d9d623a15..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_string.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_string.htm @@ -1,51 +0,0 @@ - - - - - - keyboard_string - - - - - - - - - - -

keyboard_string

-

В этой переменной хранится строка, содержащая последние (максимум) 1024 символа, набранные на клавиатуре. Эта строка будет содержать только печатаемые символы, но она будет правильно реагировать на нажатие клавиши backspace, стирая последний символ. Эта переменная не предназначена только для чтения, и вы можете изменить ее, например, установить в "" (пустая строка), если вы уже работали с ней, и вы можете использовать функции String Functions для работы с ней. Обратите внимание, что при использовании экранной виртуальной клавиатуры только эта переменная будет обновляться при вводе с клавиатуры.

-

-

Синтаксис:

-

keyboard_string;

-

-

Возвращается:

-

-

-

Пример:

-

if string_length(keyboard_string) > 15
- {
-     keyboard_string = string_copy(keyboard_string, 1, 15);
- }

-

Приведенный выше код ограничивает длину строки клавиатуры 15 символами, удаляя те, которые превышают этот предел, копируя первые пятнадцать символов обратно в переменную.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_unset_map.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_unset_map.htm index 3ea318b5b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_unset_map.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Keyboard_Input/keyboard_unset_map.htm @@ -1,51 +0,0 @@ - - - - - - keyboard_unset_map - - - - - - - - - - -

keyboard_unset_map

-

С помощью этой функции вы можете очистить все повторно отображенные клавиши, чтобы они вернулись в состояние по умолчанию, т.е. все клавиши отобразились на себя.

-

-

Синтаксис:

-

keyboard_get_map();

-

-

Возвращается:

-

N/A

-

-

Пример:

-

if keyboard_check_pressed(vk_escape)
- {
-     keyboard_unset_map();
- }

-

Приведенный выше пример кода сбросит все сопоставленные клавиши к настройкам по умолчанию, если пользователь нажмет клавишу "escape".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/Mouse_Input.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/Mouse_Input.htm index e2f42e397..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/Mouse_Input.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/Mouse_Input.htm @@ -1,70 +0,0 @@ - - - - - - Ввод с помощью мыши - - - - - - - - - - -

Ввод с помощью мыши

-

Мышиный ввод принимается на всех платформах (на мобильных устройствах он принимается как однократное касание экрана - если вам нужно использовать мультитач, вы должны использовать специфические функции устройства) и имеет несколько констант, которые используются для указания нажимаемых кнопок. Эти константы показаны в следующей таблице:

-
-

Для управления стандартными кнопками мыши существуют следующие функции:

- -

-

Обратите внимание, что существует также набор оконных функций, связанных с использованием мыши на объектах рабочего стола:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_button.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_button.htm index f3a929605..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_button.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_button.htm @@ -1,51 +0,0 @@ - - - - - - mouse_button - - - - - - - - - - -

mouse_button

-

Эта переменная, доступная только для чтения, возвращает кнопку мыши, которая в данный момент нажата (в данный момент, как на этом шаге), и может возвращать любую из специальных констант мыши, кроме mb_any.

-

-

Синтаксис:

-

mouse_button

-

-

Возвращается:

-

Mouse Button Constant (except mb_any)

-

-

Пример:

-

if mouse_button = mb_left
- {
-     x -= 1;
- }

-

Это перемещает текущий экземпляр влево, если левая кнопка мыши нажата.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_check_button.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_check_button.htm index 38928cc55..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_check_button.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_check_button.htm @@ -1,66 +0,0 @@ - - - - - - mouse_check_button - - - - - - - - - - - -

mouse_check_button

-

Эта функция возвращает true, если проверяемая кнопка мыши удерживается нажатой, или false, если нет. Вы задаете кнопку мыши для проверки из одной из следующих констант:

-
-

Синтаксис:

-

mouse_check_button(numb);

- - - - - - - - - - - - - -
АргументТипОписание
numbПостоянная кнопка мышиWhich mouse button constant to check for.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if mouse_check_button(mb_left)
- {
-     instance_create_layer(mouse_x, mouse_y, "Effects", obj_Star);
- }

-

Приведенный выше код будет проверять наличие левой кнопки мыши и при каждом ее удержании будет создавать экземпляр объекта, индексированного в "obj_Star".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_check_button_pressed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_check_button_pressed.htm index e6b76c3e5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_check_button_pressed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_check_button_pressed.htm @@ -1,67 +0,0 @@ - - - - - - mouse_check_button_pressed - - - - - - - - - - - -

mouse_check_button_pressed

-

Эта функция возвращает true, если проверяемая кнопка мыши была нажата, или false, если нет. Эта функция срабатывает только один раз для любой кнопки мыши, когда она впервые нажата, и для ее повторного срабатывания кнопку нужно отпустить и нажать снова. Обратите внимание, что она будет считаться сработавшей в течение всего шага и для всех экземпляров, в которых есть какие-либо события мыши или которые используют эту же функцию.

-

Вы задаете кнопку мыши для проверки одной из следующих констант:

-
-

Синтаксис:

-

mouse_check_button_pressed(numb);

- - - - - - - - - - - - - -
АргументТипОписание
numbПостоянная кнопка мышиWhich mouse button constant to check for.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if mouse_check_button_pressed(mb_left)
- {
-     score += 50;
- }

-

Приведенный выше код проверит, была ли нажата левая кнопка мыши, и если да, то добавит 50 к счету.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_check_button_released.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_check_button_released.htm index ce5c33192..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_check_button_released.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_check_button_released.htm @@ -1,66 +0,0 @@ - - - - - - mouse_check_button_released - - - - - - - - - - - -

mouse_check_button_released

-

Эта функция вернет true, если проверяемая кнопка мыши была отпущена, или false, если нет. Эта функция срабатывает только один раз для любой кнопки мыши, когда она отпущена, и для ее повторного срабатывания необходимо, чтобы кнопка была нажата и отпущена снова. Кнопка мыши для проверки задается одной из следующих констант:

-
-

Синтаксис:

-

mouse_check_button_released(numb);

- - - - - - - - - - - - - -
АргументТипОписание
numbПостоянная кнопка мышиWhich mouse button constant to check for.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if mouse_check_button_released(mb_right)
- {
-     speed = point_distance(x, y, mouse_x, mouse_y) / 10;
- }

-

Приведенный выше код проверит, была ли отпущена правая кнопка мыши, и если да, то установит скорость экземпляра на десятую часть расстояния между текущим положением x/y и положением мыши x/y.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_clear.htm index 1ba317e44..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_clear.htm @@ -1,63 +0,0 @@ - - - - - - mouse_clear - - - - - - - - - - -

mouse_clear

-

Эта функция очищает текущее состояние заданной кнопки мыши. Это означает, что проверка на то, что она удерживается нажатой, не вернет true, пока игрок не отпустит кнопку и не нажмет ее снова (но состояние отпускания все равно будет обнаружено, если очистка выполняется, пока кнопка мыши удерживается нажатой).

-

Вы можете ввести одну из констант кнопок мыши, перечисленных на этой странице.

-

-

Синтаксис:

-

mouse_clear(button);

- - - - - - - - - - - - - -
АргументТипОписание
buttonПостоянная кнопка мышиWhich mouse button constant to check for.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

mouse_clear(mb_any);

-

Приведенный выше код очистит состояние "вниз" всех кнопок мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_lastbutton.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_lastbutton.htm index d569133ff..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_lastbutton.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_lastbutton.htm @@ -1,51 +0,0 @@ - - - - - - mouse_lastbutton - - - - - - - - - - -

mouse_lastbutton

-

Эта переменная возвращает последнюю нажатую кнопку мыши и может возвращать любую из специальных констант мыши, кроме mb_any (вы также можете установить эту переменную на одну из констант).

-

-

Синтаксис:

-

mouse_lastbutton

-

-

Возвращается:

-

Mouse Button Constant (except mb_any)

-

-

Пример:

-

if mouse_lastbutton = mb_left
- {
-     x -= 1;
- }

-

Это перемещает текущий экземпляр влево, если последней нажатой кнопкой была левая кнопка мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_wheel_down.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_wheel_down.htm index fd30dd9c5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_wheel_down.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_wheel_down.htm @@ -1,52 +0,0 @@ - - - - - - mouse_wheel_down - - - - - - - - - - - -

mouse_wheel_down

-

Эта функция возвращает true, если колесо мыши вращается вниз, и false в противном случае.

-

-

Синтаксис:

-

mouse_wheel_down();

-

-

Возвращается:

-

-

-

Пример:

-

if mouse_wheel_down()
- {
-     y += 10;
- }

-

Это перемещает текущий экземпляр вниз по экрану, если колесико мыши повернуть вверх.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_wheel_up.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_wheel_up.htm index 94fc514f8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_wheel_up.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_wheel_up.htm @@ -1,52 +0,0 @@ - - - - - - mouse_wheel_up - - - - - - - - - - - -

mouse_wheel_up

-

Эта функция возвращает true, если колесо мыши вращается вверх, и false в противном случае.

-

-

Синтаксис:

-

mouse_wheel_up();

-

-

Возвращается:

-

-

-

Пример:

-

if mouse_wheel_up()
- {
-     y -= 10;
- }

-

Это перемещает текущий экземпляр вверх по экрану, если колесико мыши повернуть вверх.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_x.htm index a30b2faa9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_x.htm @@ -1,52 +0,0 @@ - - - - - - mouse_x - - - - - - - - - - - - - - -

mouse_x

-

Эта переменная, доступная только для чтения, возвращает текущее положение мыши по оси x в пределах комнаты.

-

-

Синтаксис:

-

mouse_x

-

-

Возвращается:

-

-

-

Пример:

-

x = median(64, mouse_x, room_width - 64);

-

Приведенный выше код будет поддерживать экземпляр в позиции x мыши до тех пор, пока он находится в пределах 64 пикселей с любой стороны комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_y.htm index 1cb009104..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Mouse_Input/mouse_y.htm @@ -1,47 +0,0 @@ - - - - - mouse_y - - - - - - - - - - -

mouse_y

-

Эта переменная, доступная только для чтения, возвращает текущее положение мыши по оси y в пределах комнаты.

-

-

Синтаксис:

-

mouse_y

-

-

Возвращается:

-

-

-

Пример:

-

y = median(64, mouse_y, room_height - 64);

-

Приведенный выше код будет поддерживать экземпляр в позиции y мыши до тех пор, пока он находится в пределах 64 пикселей от верха и низа комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/Virtual_Keys_And_Keyboards.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/Virtual_Keys_And_Keyboards.htm index b1ebae4dd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/Virtual_Keys_And_Keyboards.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/Virtual_Keys_And_Keyboards.htm @@ -1,79 +0,0 @@ - - - - - - Виртуальные клавиши и виртуальные клавиатуры - - - - - - - - - - -

Виртуальные клавиши и виртуальные клавиатуры

-

При разработке игр для устройств с сенсорным экраном часто бывает важно получить от пользователя клавиатурный ввод. При использовании GameMaker это можно сделать одним из двух способов:

-
    -
  • Создайте свои собственные виртуальные клавиши на экране для ввода информации
  • -
  • Всплывающая виртуальная клавиатура ОС и получение ввода с нее
  • -
-

То, что вы будете использовать, во многом зависит от игры и того, что вам нужно, но в целом вы будете использовать виртуальные клавиши, когда вам нужны экранные кнопки для управления игроком или для меню, в то время как вы будете использовать виртуальную клавиатуру, когда вам нужен ввод игрока, например, для получения имени или установки значения.

-

Для того чтобы ваши игры работали должным образом на мобильных устройствах с сенсорным экраном, вам может понадобиться возможность назначать области экрана, реагирующие на определенные действия, когда к ним прикасается пользователь. Это делается путем назначения "виртуальной клавиши" на внутренне сопоставленную стандартную клавишу клавиатуры и последующего использования генерируемых ею событий для управления вашим приложением. Стоит отметить, что эти "виртуальные клавиши" привязаны к положению экрана, а не к положению комнаты, поэтому значения x/y являются абсолютными, основанными на размере дисплея. Это означает, что вам не нужно беспокоиться об использовании представлений или относительных координат комнаты, а можно просто определить клавиши в событии Create объекта (вам нужно определить виртуальную клавишу только один раз для каждой комнаты), затем нарисовать клавишу sprites в событии Draw GUI, установив размер слоя GUI равным размеру экрана.

-

ПРИМЕЧАНИЕ Эти функции не будут работать ни на Windows, Ubuntu (Linux), ни на MacOS, целевых платформах, использующих сенсорный экран, хотя они будут воспринимать щелчки мыши как "прикосновения".

-

Эти функции поддерживаются в HTML5 и Opera GX.

-

Доступны следующие функции виртуальных клавиш:

- -

-

Если вам требуется ввод текста или цифр в игре на устройстве с сенсорным экраном, то вы можете использовать функции виртуальной клавиатуры, предоставленные для использования клавиатуры ОС устройства. Эти функции будут вызывать или скрывать клавиатуру ОС и принимать ввод с нее, однако они не будут вызывать обычные события клавиатуры, а будут обновлять переменную keyboard_string с вводом пользователя (это связано с тем, что виртуальная клавиатура может вводить целые слова, а не только отдельные символы).

-

Открытие или закрытие виртуальной клавиатуры будет генерировать системные асинхронные события, в которых карта async_load DS map будут заполнены следующими парами ключ/значение:

-
    -
  • "event_type" - тип полученного системного события, для виртуальных клавиатур это будет "virtual keyboard status".
  • -
  • "screen_height" - высота виртуальной клавиатуры (в пикселях). Это значение будет равно 0, если клавиатура невидима.
  • -
  • "keyboard_status" - текущее состояние клавиатуры, возвращается в виде одной из следующих строк: -
      -
    • "скрытие"
    • -
    • "скрытый"
    • -
    • "показывающий"
    • -
    • "видимый"
    • -
    -
  • -
-

Доступны следующие функции виртуальной клавиатуры:

-

ПРИМЕЧАНИЕ Эти функции действительны только для целевых платформ Android (включая AndroidTV), iOS (включая tvOS) и UWP .

- -

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/keyboard_virtual_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/keyboard_virtual_height.htm index 93b9568b1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/keyboard_virtual_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/keyboard_virtual_height.htm @@ -1,52 +0,0 @@ - - - - - - keyboard_virtual_height - - - - - - - - - - - -

keyboard_virtual_height

-

Эта функция возвращает текущую высоту в пикселях виртуальной клавиатуры, основываясь на размере дисплея. Если клавиатура не видна, будет возвращен 0.

-

-

Синтаксис

-

keyboard_virtual_height();

-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_virtual_status() == true
- {
-     key_h = keyboard_virtual_height();
- }

-

Приведенный выше код проверит состояние виртуальной клавиатуры ОС и, если она видна, установит переменную на высоту клавиатуры.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/keyboard_virtual_hide.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/keyboard_virtual_hide.htm index dd4c797c3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/keyboard_virtual_hide.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/keyboard_virtual_hide.htm @@ -1,64 +0,0 @@ - - - - - - keyboard_virtual_hide - - - - - - - - - - -

keyboard_virtual_hide

-

Эта функция может быть использована для скрытия виртуальной клавиатуры на устройстве, на котором запущена игра. Вызов этой функции генерирует системное асинхронное событие, в котором карта async_load DS будет заполнена следующими парами ключ/значение:

-
    -
  • "event_type" - это будет "статус виртуальной клавиатуры", когда срабатывают функции виртуальной клавиатуры.
  • -
  • "screen_height" - высота виртуальной клавиатуры (в пикселях). Это значение будет равно 0, если клавиатура невидима.
  • -
  • "keyboard_status" - текущее состояние клавиатуры, возвращается в виде одной из следующих строк: -
      -
    • "скрытие"
    • -
    • "скрытый"
    • -
    • "показывающий"
    • -
    • "видимый"
    • -
    -
  • -
-

-

Синтаксис

-

keyboard_virtual_hide();

-

-

Возвращается:

-

-

-

Пример:

-

if input == true
- {
-     input = false;
-     keyboard_virtual_hide();
- }

-

Приведенный выше код скроет виртуальную клавиатуру ОС, если данная переменная не имеет значения false.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/keyboard_virtual_show.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/keyboard_virtual_show.htm index 6789792d1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/keyboard_virtual_show.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/keyboard_virtual_show.htm @@ -1,305 +0,0 @@ - - - - - - keyboard_virtual_show - - - - - - - - - - -

keyboard_virtual_show

-

Эта функция может быть использована для отображения виртуальной клавиатуры на устройстве, на котором запущена игра. При вызове этой функции необходимо предоставить одну из следующих констант для каждого из первых трех аргументов:

-
    -
  • Тип клавиатуры: Эта константа используется для установки того, какой набор клавиш будет доступен на виртуальной клавиатуре. Доступны следующие типы клавиатуры:
  • -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип виртуальной клавиатуры Постоянная
Тип клавиатурыОписание
kbv_type_defaultТип клавиатуры по умолчанию для текущей системы.
kbv_type_asciiКлавиатура только ASCII.
kbv_type_urlОбычная клавиатура, оптимизированная для ввода URL-адресов. Обычно имеет клавишу ".com" или другие доменные клавиши, а также клавиши "/" и ".".
kbv_type_emailОбычная клавиатура, оптимизированная для ввода электронной почты. Обычно содержит символы "@" и ".".
kbv_type_numbersКлавиатура, использующая только цифры, обычно отображается как цифровая панель.
kbv_type_phoneКлавиатура телефонной панели. Обычно только для цифр с клавишами "*" и "#".
kbv_type_phone_nameКлавиатура, оптимизированная для ввода как номера телефона, так и имени. Обычно похожа на клавиатуру ASCII, но с ограниченным выбором специальных символов.
-

-
    -
  • Тип возврата: Эта константа используется для установки того, что будет отображаться на клавише возврата/действия виртуальной клавиатуры. Доступны следующие типы возврата:
  • -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип возврата виртуальной клавиатуры Константа
Тип возвратаОписание
kbv_returnkey_defaultНазвание клавиши возврата по умолчанию для текущей системы.
kbv_returnkey_goУстанавливает заголовок клавиши возврата на "Go".
kbv_returnkey_googleУстанавливает заголовок клавиши возврата на "Google", или на общий значок поиска в некоторых случаях.
kbv_returnkey_joinУстанавливает заголовок клавиши возврата на "Go".
kbv_returnkey_nextУстанавливает заголовок клавиши возврата на "Далее".
kbv_returnkey_routeУстанавливает заголовок клавиши возврата на "Маршрут".
kbv_returnkey_searchУстанавливает заголовок клавиши возврата на "Поиск", или на общий значок поиска в некоторых случаях.
kbv_returnkey_sendУстанавливает для заголовка клавиши возврата значение "Отправить".
kbv_returnkey_yahooУстанавливает заголовок ключа возврата на "Yahoo", или на общий значок поиска в некоторых случаях.
kbv_returnkey_doneУстанавливает для заголовка клавиши возврата значение "Готово".
kbv_returnkey_continueУстанавливает заголовок клавиши возврата на "Продолжить".
kbv_returnkey_emergencyУстанавливает название клавиши возврата на "Экстренный вызов".
-

-
    -
  • Тип автокапитализации: Эта константа используется для определения типа автокапитализации слов, набираемых с помощью виртуальной клавиатуры. Доступны следующие типы автокапитализации:
  • -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Виртуальная клавиатура Автокапитализация Тип Константа
Тип автокапитализацииОписание
kbv_autocapitalize_noneАвтокапитализация отключена.
kbv_autocapitalize_wordsСлова будут автозаглавными.
kbv_autocapitalize_sentencesПредложения будут автозаглавными.
kbv_autocapitalize_charactersВсе символы будут написаны заглавными буквами.
-

-

Последним аргументом является разрешение/запрет предикативного текста, и этот параметр должен иметь значение true, если он разрешен, и false в противном случае, но обратите внимание, что если он разрешен, это не означает, что он будет использоваться, поскольку это зависит от предпочтений пользователя устройства. В режиме предикативного текста виртуальная клавиатура не будет генерировать обычные события нажатия клавиш GameMaker. Вместо этого она будет обновлять только последний нажатый символ и переменные строки клавиатуры. Это связано с невозможностью определить, произошло ли изменение во внутреннем текстовом поле, используемом для обнаружения нажатия клавиш, от фактической клавиши виртуальной клавиатуры или от текстового предложения. В таких случаях необходимо считывать ввод keyboard_string, а не считывать необработанный ввод клавиш.

-

Важно также отметить, что пользователь получит разные клавиатуры с разными возможностями в зависимости от ОС платформы, со следующими оговорками для использования по назначению:

-
    -
  • UWP: Реализация UWP не поддерживает return_key_type, autocapitalization_type или predictive_text_enabled. Передача этих параметров в функцию не вызовет никаких ошибок, они просто не будут иметь никакого эффекта на клавиатуру.
  • -
    -
  • Android: На платформе Android тип клавиатуры kbv_type_phone_name не поддерживается и вместо него отображается клавиатура ASCII, а тип клавиши возврата может быть только kbv_returnkey_go, kbv_returnkey_search, kbv_returnkey_next, kbv_returnkey_send или kbv_returnkey_done. Если на этой платформе используются другие типы клавиш возврата, система по умолчанию будет использовать заменяющие клавиши возврата, перечисленные ниже:
  • -
- - - - - - - - - - - - - - - - - - - -
Недоступная клавиша возвратаСменный ключ
kbv_returnkey_google
- kbv_returnkey_yahoo
kbv_returnkey_search
kbv_returnkey_join
- kbv_returnkey_route
- kbv_returnkey_emergency
kbv_returnkey_go
kbv_returnkey_continuekbv_returnkey_next
-

-
    -
  • AndroidTV / FireTV: Пользовательские типы клавиш возврата не поддерживаются на клавиатурах ASCII - всегда будет отображаться клавиша возврата по умолчанию.
  • -
    -
  • tvOS: Предикативный текст и автокапитализация не поддерживаются на tvOS, а высота клавиатуры, возвращаемая системными событиями и функцией keyboard_virtual_height(), будет по умолчанию равна высоте экрана, поскольку она занимает весь экран, а функции прямоугольного размера клавиатуры отключены на tvOS. Также обратите внимание, что события физической (bluetooth) клавиатуры не будут транслироваться, пока не будет открыта виртуальная клавиатура.
  • -
-

Вызов этой функции сгенерирует системное асинхронное событие, в котором карта async_load DS будет заполнена следующими парами ключ/значение:

-
    -
  • "event_type" - это будет "статус виртуальной клавиатуры", когда срабатывают функции виртуальной клавиатуры.
  • -
    -
  • "screen_height" - высота виртуальной клавиатуры (в пикселях). Это значение будет равно 0, если клавиатура невидима.
  • -
    -
  • "keyboard_status" - текущее состояние клавиатуры, возвращается в виде одной из следующих строк: -
      -
    • "скрытие"
    • -
    • "скрытый"
    • -
    • "показывающий"
    • -
    • "видимый"
    • -
    -
  • -
-

-

Синтаксис

-

keyboard_virtual_show(keyboard_type, return_key_type, autocapitalization_type, predictive_text_enabled);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
keyboard_typeТип виртуальной клавиатуры ПостояннаяDetermines the keyset available on the virtual keyboard (see tables at the top).
return_key_typeТип возврата виртуальной клавиатуры КонстантаDetermines what is shown on the return/action key of the virtual keyboard (see tables at the top).
autocapitalization_typeВиртуальная клавиатура Автокапитализация Тип КонстантаDetermines how/if the words typed via the virtual keyboard will be autocapitalized (see tables at the top).
predictive_text_enabledБулевоSet to true/false для включения/выключения предиктивного ввода текста.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if input == false
- {
-     input = true;
-     keyboard_virtual_show(kbv_type_numbers, kbv_returnkey_default, kbv_autocapitalize_none, false);
- }

-

Приведенный выше код вызовет виртуальную клавиатуру ОС, если данная переменная не установлена в true.

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/keyboard_virtual_status.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/keyboard_virtual_status.htm index 48ff44f32..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/keyboard_virtual_status.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/keyboard_virtual_status.htm @@ -1,54 +0,0 @@ - - - - - - keyboard_virtual_status - - - - - - - - - - - -

keyboard_virtual_status

-

Эта функция может быть использована для получения статуса виртуальной клавиатуры на устройстве, на котором запущена игра. Функция вернет true, если виртуальная клавиатура ОС видна/показывается, или false, если она скрыта/прячется.

-

-

Синтаксис

-

keyboard_virtual_status();

-

-

Возвращается:

-

-

-

Пример:

-

var _status = keyboard_virtual_status();
- if (_status == false)
- {
-     keyboard_virtual_show(kbv_type_numbers, kbv_returnkey_default, kbv_autocapitalize_none, false);
- }

-

Приведенный выше код покажет виртуальную клавиатуру ОС, если текущее состояние false.

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/virtual_key_add.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/virtual_key_add.htm index 0b373628d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/virtual_key_add.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/virtual_key_add.htm @@ -1,84 +0,0 @@ - - - - - - virtual_key_add - - - - - - - - - - -

virtual_key_add

-

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

-

Фактическое положение виртуального ключа основано на положении экрана, а не комнаты, поэтому значения x/y являются абсолютными на экране. Это означает, что вам не нужно беспокоиться об использовании представлений или относительных координат комнаты, а можно просто определить ключи в событии Create объекта (вам нужно определить виртуальный ключ только один раз для каждой комнаты), затем нарисовать ключ sprites в событии Draw GUI Event, установив размер слоя GUI равным размеру экрана.

-

-

Синтаксис

-

virtual_key_add(x, y, w, h, keycode);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x coordinate (left side) of the virtual key on the screen
yРеальноThe y coordinate (top side) of the virtual key on the screen
wРеальноThe width of the virtual key
hРеальноThe height of the virtual key
keycodeКонстанта виртуального ключа (vk_*)Which keyboard key event should be triggered by touching this area
-

-

Возвращается:

-

Virtual Key ID

-

-

Пример:

-

global.Left = virtual_key_add(32, 32, 64, 64, vk_left);

-

Приведенный выше код создает виртуальную клавишу размером 64x64 пикселя, расположенную на экране по адресу (32, 32), которая будет вызывать событие vk_left при касании, и присваивает индекс этой виртуальной клавиши глобальной переменной.

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/virtual_key_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/virtual_key_delete.htm index f199a9ad2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/virtual_key_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/virtual_key_delete.htm @@ -1,64 +0,0 @@ - - - - - - virtual_key_delete - - - - - - - - - - -

virtual_key_delete

-

Если в вашей игре есть различные комнаты или инстансы для управления меню, игровым процессом и другими вещами, то вполне вероятно, что в какой-то момент вам понадобится изменить положение и карты клавиш ваших виртуальных клавиш. Для этого вы можете использовать данную функцию, чтобы удалить старые клавиши перед созданием новых (если это необходимо). Функция требует, чтобы вы указали ID виртуальной клавиши, которую нужно удалить - как возвращается функцией virtual_key_add().

-

Обратите внимание, что все виртуальные ключи будут автоматически удалены из комнаты, когда комната будет изменена, поэтому эта функция необходима только в том случае, если вы хотите вручную удалить ключи до завершения работы самой комнаты.

-

-

Синтаксис

-

virtual_key_delete(index);

- - - - - - - - - - - - - -
АргументТипОписание
indexИдентификатор виртуального ключаThe index of the virtual key to delete.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

virtual_key_delete(global.Left);

-

Приведенный выше код удаляет виртуальный ключ, индексированный в глобальной переменной "global.Left".

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/virtual_key_hide.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/virtual_key_hide.htm index 6702e579b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/virtual_key_hide.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/virtual_key_hide.htm @@ -1,70 +0,0 @@ - - - - - - virtual_key_hide - - - - - - - - - - -

virtual_key_hide

-

После того, как вы создали виртуальный ключ для ваших устройств, вам может понадобиться отладка и проверка того, что он правильно расположен и работает должным образом, и для этого вы должны вызвать функцию virtual_key_show(). Однако вам может понадобиться включать и выключать это представление, поэтому вы также можете скрыть виртуальный ключ с помощью этой функции, используя индекс виртуального ключа, который вы хотите скрыть (ранее созданный и сохраненный с помощью функции virtual_key_add()). После того как вы будете довольны, рекомендуется создать и разместить собственную графику в ее области.

-

-

Синтаксис

-

virtual_key_hide(index);

- - - - - - - - - - - - - -
АргументТипОписание
indexИдентификатор виртуального ключаThe index of the virtual key to hide.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if global.Debug
- {
-     virtual_key_show(global.left);
- }
- else
- {
-     virtual_key_hide(global.left);
- }

-

Приведенный выше код проверяет глобальную переменную "global.Debug" и если она истинна, то виртуальная клавиша, индексированная в переменной "global.Left", будет нарисована на экране, а если ложна, то клавиша будет скрыта.

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/virtual_key_show.htm b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/virtual_key_show.htm index 240d5cd4e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/virtual_key_show.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Game_Input/Virtual_Keys_And_Keyboards/virtual_key_show.htm @@ -1,71 +0,0 @@ - - - - - - virtual_key_show - - - - - - - - - - -

virtual_key_show

-

После того как вы создали виртуальный ключ для своих устройств, вам может понадобиться отладка и проверка правильности его расположения и работы. Для этого нужно вызвать эту функцию, используя индекс виртуальной клавиши, которую вы хотите увидеть (предварительно созданной и сохраненной с помощью функции virtual_key_add()), которая нарисует цветной прямоугольник для отображения клавиши на экране. Как только вы будете довольны, рекомендуется создать и разместить в его области свою собственную графику.

-

ПРИМЕЧАНИЕ На рисуемый прямоугольник будут влиять параметры смешивания, цвета и альфа, установленные соответствующими функциями рисования.

-

-

Синтаксис

-

virtual_key_show(index);

- - - - - - - - - - - - - -
АргументТипОписание
indexИдентификатор виртуального ключаThe index of the virtual key to show.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if global.Debug
- {
-     virtual_key_show(global.left);
- }
- else
- {
-     virtual_key_hide(global.left);
- }

-

Приведенный выше код проверяет глобальную переменную "global.Debug" и если она истинна, то виртуальная клавиша, индексированная в переменной "global.Left", будет нарисована на экране, а если ложна, то клавиша будет скрыта.

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/Garbage_Collection.htm b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/Garbage_Collection.htm index 01205ee86..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/Garbage_Collection.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/Garbage_Collection.htm @@ -1,57 +0,0 @@ - - - - - - Вывоз мусора - - - - - - - - - - -

Вывоз мусора

-

Сборщик мусора GameMaker существует потому, что методы могут передаваться в стек и оставаться без ссылок, также как и структуры и некоторые другие объекты, что, в свою очередь, приведет к утечке памяти, если их не "очистить" каким-либо образом. Именно здесь на помощь приходит сборщик мусора, который будет работать в фоновом режиме игры, собирая все, на что не было ссылок, и поддерживая оптимальное использование памяти. Когда мы говорим о том, что что-то отнесено, мы обычно имеем в виду любую структуру или функцию, которая не связана (не обязательно напрямую, но через цепочку других переменных) с глобальной переменной или переменной экземпляра объекта. Также обратите внимание, что функции, определенные в скриптах на сайте IDE, также не собираются, поскольку они неявно сделаны глобальными.

-

ПРИМЕЧАНИЕ: Обратите внимание, что такие вещи, как поверхности, структуры данных, буферы и другие динамические ресурсы не собираются в мусор и имеют свои собственные функции destroy для очистки связанной с ними памяти. Как правило, если все, что вы создаете во время выполнения, имеет функцию destroy, то это не будет собираться в мусор, и вам придется самостоятельно разбираться с этим в коде. Исключением являются последовательности, анимационные кривые и экземпляры, которые также требуют сборщика мусора, но при этом должны вызывать функцию уничтожения.

-

Сборка мусора, которую использует GameMaker, является "генерационной". Это означает, что для уменьшения объема работы, которую необходимо выполнять каждый кадр, объекты делятся на "поколения". Новые объекты создаются в поколении 0, и по мере старения они переходят в более старшие поколения. Общая идея заключается в том, что объекты, которые находятся здесь некоторое время, не нужно постоянно проверять на предмет удаления, а можно проверять реже (обратите внимание, что под "объектами" здесь подразумевается все, что может быть собрано в мусор, а не общие экземпляры объектов, определенные в Asset Browser). Обратите внимание, что хотя система проверки является поколенческой, фактические проверки выполняются "инкрементально", то есть вместо того, чтобы очищать потенциально тысячи объектов из поколения за один кадр, что вызывает большой всплеск использования процессора и потенциально влияет на игровой процесс, каждое поколение будет проверяться и, если потребуется, очистка будет распределена на несколько кадров, так что сборщик мусора будет работать чаще, но выполнять меньше работы на каждом кадре (вы можете установить целевое время, которое сборщик мусора должен потратить на каждый кадр, используя функцию gc_target_frame_time()).

-

Как правило, вам никогда не придется взаимодействовать с системой сбора мусора GameMaker, и обычно результаты ее работы не видны, но некоторые команды GML позволяют получить информацию о том, что делает сборщик, и в ограниченной степени повлиять на его поведение.

-

ВАЖНО! Обратите внимание, что на целевой платформе HTML5 сборкой мусора занимается движок JavaScript, поэтому ни одна из перечисленных ниже функций не повлияет на его работу, а функция gc_get_stats() вернет 0 для всех полей.

- -

-

Чтобы помочь решить, что и когда нужно собирать в мусор, есть несколько функций, которые можно использовать для создания и проверки слабых ссылок на структуры. Слабая ссылка - это ссылка, которая не защищает объект ссылки от сбора сборщиком мусора, и поэтому может использоваться для проверки того, жива ли еще структура (ссылка) или нет в игре. Для слабых ссылок доступны следующие функции:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_collect.htm b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_collect.htm index 28a73cefb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_collect.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_collect.htm @@ -1,51 +0,0 @@ - - - - - - gc_collect - - - - - - - - - - -

gc_collect

-

С помощью этой функции вы можете запустить сборщик мусора, заставив его работать в конце текущего кадра (шага). Стоит отметить, что для этого сборщик мусора не должен быть активным. Вызов этой функции после отключения сборщика мусора (с помощью функции gc_enable()) включит сборщик мусора на один кадр, в котором все объекты, помеченные для сбора, будут удалены из памяти, прежде чем сборщик мусора будет снова отключен.

-

-

Синтаксис:

-

gc_collect();

-

-

Возвращается:

-

-

-

Пример:

-

if (global.debug == true && keyboard_check_pressed(vk_f1))
- {
-     gc_collect();
- }

-

Приведенный выше код проверяет глобальную переменную и нажатую клавишу, и если это true, то в конце кадра (шага) запускается сборка мусора.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_enable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_enable.htm index f986378f1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_enable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_enable.htm @@ -1,63 +0,0 @@ - - - - - - gc_enable - - - - - - - - - - -

gc_enable

-

С помощью этой функции можно включить или выключить сборщик мусора. Вызов функции с аргументом true включает его, а с помощью false отключает (не рекомендуется). По умолчанию он включен.

-

-

Синтаксис:

-

gc_enable(enable);

- - - - - - - - - - - -
АргументТипОписание
enableenable (true) или отключить (false) сборщик мусора.
-

-

Возвращается:

-

-

-

Пример:

-

if (global.debug == true)
- {
-     gc_enable(false);
- }

-

Приведенный выше код отключает сборку мусора, если данная глобальная переменная имеет значение true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_get_stats.htm b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_get_stats.htm index cd20fe567..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_get_stats.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_get_stats.htm @@ -1,115 +0,0 @@ - - - - - - gc_get_stats - - - - - - - - - - - -

gc_get_stats

-

С помощью этой функции вы можете получить информацию о текущем состоянии сборщика мусора. Функция вернет структуру, которая будет содержать следующие переменные-члены (обратите внимание, что под "объектами" здесь понимается все, что может быть собрано в мусор, а не общие экземпляры объектов, определенные в Asset Browser):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GC Stats Struct
ПеременнаяТипОписание
objects_touchedРеальноЭто количество активных объектов, найденных сборщиком мусора в предыдущем кадре. Это значение зависит от того, какое поколение было собрано.
objects_collectedРеальноКоличество объектов, которые, по определению сборщика мусора, не были активны в предыдущем кадре и поэтому могут быть удалены.
traversal_timeРеальноЭто время в микросекундах (на основном потоке), которое потребовалось сборщику мусора, чтобы выяснить, какие объекты были активны.
collection_timeРеальноЭто время в микросекундах (в отдельном потоке), которое понадобилось сборщику мусора для очистки объектов, считающихся неактивными.
gc_frameРеальноЭто счетчик, который увеличивается каждый раз, когда происходит проход сборки мусора. Если сборка мусора отключена, этот счетчик не увеличивается.
generation_collectedРеальноЭто индекс поколения, которое было собрано последним. 0 - самое молодое поколение, а 3 - самое старое.
num_generationsРеальноЭто общее количество поколений сборки мусора.
num_objects_in_generationМассив из РеальныйsЭто массив (размером num_generations), содержащий количество объектов в каждом поколении.
-

ПРИМЕЧАНИЕ: На целевой платформе HTML5 сборка мусора осуществляется движком JavaScript, поэтому все переменные-члены в приведенной выше структуре вернут 0, если эта функция используется на этой платформе.

-

При использовании этой функции следует учитывать, что информация, отображаемая для объектов, обновляется только после завершения обработки полного поколения, что может занять несколько кадров в зависимости от настройки времени кадра (более подробную информацию о времени кадра см. здесь ).

-

-

Синтаксис:

-

gc_get_stats();

-

-

Возвращается:

-

GC Stats Struct

-

-

Пример:

-

if (global.debug == true)
- {
-     var _s = gc_get_stats();
-     var _t = _s.traversal_time;
-     var _c = _s.collection_time;
-     show_debug_message("Traversal time = " + string(_t));
-     show_debug_message("Collection time = " + string(_c));
- }

-

Приведенный выше код проверяет глобальную переменную, и если она true, то получает информацию из сборщика мусора и выводит ее на консоль в виде отладочных сообщений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_get_target_frame_time.htm b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_get_target_frame_time.htm index 77d1bbd6a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_get_target_frame_time.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_get_target_frame_time.htm @@ -1,52 +0,0 @@ - - - - - - gc_get_target_frame_time - - - - - - - - - - - -

gc_get_target_frame_time

-

С помощью этой функции вы можете получить текущее значение целевого кадра для сборщика мусора. Возвращаемое значение выражается в микросекундах (где 1 000 000 микросекунд равны одной секунде), а время целевого кадра по умолчанию составляет 100 микросекунд. Если вы хотите изменить это значение, то вам следует воспользоваться функцией gc_target_frame_time().

-

-

Синтаксис:

-

gc_get_target_frame_time(time);

-

-

Возвращается:

-

-

-

Пример:

-

if (gc_get_target_frame_time() != 50)
- {
-     gc_target_frame_time(50);
- }

-

Приведенный выше код проверяет текущее значение времени кадра для сборщика мусора, и если оно не равно 50 микросекундам, то оно устанавливается на это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_is_enabled.htm b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_is_enabled.htm index 7a37f4443..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_is_enabled.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_is_enabled.htm @@ -1,52 +0,0 @@ - - - - - - gc_is_enabled - - - - - - - - - - - -

gc_is_enabled

-

С помощью этой функции вы можете проверить, включен ли сборщик мусора или нет. Функция вернет true, если он включен, или false в противном случае.

-

-

Синтаксис:

-

gc_is_enabled();

-

-

Возвращается:

-

-

-

Пример:

-

if (!gc_is_enabled())
- {
-     gc_enable(true);
- }

-

Приведенный выше код проверяет, включен ли сборщик мусора, и если нет, то включает его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_target_frame_time.htm b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_target_frame_time.htm index 2eb4ee825..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_target_frame_time.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/gc_target_frame_time.htm @@ -1,64 +0,0 @@ - - - - - - gc_target_frame_time - - - - - - - - - - -

gc_target_frame_time

-

С помощью этой функции вы можете указать сборщику мусора, что он должен стремиться тратить на выполнение каждого кадра не более указанного времени. Функция принимает значение времени, указанное в микросекундах (где 1 000 000 микросекунд равны одной секунде), а целевое время кадра по умолчанию составляет 100 микросекунд.

-

Обратите внимание, что это просто целевое значение, поскольку некоторые операции все равно должны выполняться полностью в одном кадре и иногда могут занимать больше времени, чем целевое время. Также обратите внимание, чтоувеличение целевого времени заставит сборщик мусора быстрее реагировать на быстрые изменения в использовании памяти и быстрее освобождать память, хотя на практике это вряд ли потребуется в большинстве случаев. Также обратите внимание, что установка целевого времени кадра в 0 не приведет к полной остановке сборщика - он все равно будет выполнять минимальный объем работы каждый кадр. Чтобы полностью отключить сборщик, используйте функцию gc_enable() .

-

-

Синтаксис:

-

gc_target_frame_time(time);

- - - - - - - - - - - -
АргументТипОписание
timeThe target time - in microseconds -  that the garbage collector should work each frame
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (gc_get_target_frame_time() != 50)
- {
-     gc_target_frame_time(50);
- }

-

Приведенный выше код проверяет текущее значение времени кадра для сборщика мусора, и если оно не равно 50 микросекундам, то оно устанавливается на это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/weak_ref_alive.htm b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/weak_ref_alive.htm index 57d6054b6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/weak_ref_alive.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/weak_ref_alive.htm @@ -1,66 +0,0 @@ - - - - - - weak_ref_alive - - - - - - - - - - - -

weak_ref_alive

-

С помощью этой функции вы можете проверить слабую ссылку на структуру, чтобы узнать, жива она или нет. Вы передаете слабую ссылку для проверки (как возвращается функцией weak_ref_create()), и функция вернет true, если на структуру все еще где-то ссылаются, или false, если это не так и она была собрана в мусор. Обратите внимание, что если вы предоставите значение, которое не является слабой ссылкой, функция вернет undefined.

-

-

Синтаксис:

-

weak_ref_alive(weak_ref);

- - - - - - - - - - - - - -
АргументТипОписание
weak_refСтруктура Слабая ссылкаThe weak reference to the struct you want to check.
-

-

Возвращается:

-

Boolean (or undefined)

-

-

Пример:

-

if weak_ref_alive(inventory_ref)
- {
-     inventory = -1;
- }

-

Приведенный выше код проверяет слабую ссылку на структуру, и если она все еще жива, то переменная, ссылающаяся на нее, устанавливается в -1, отменяя ссылку на структуру и позволяя ей быть собранной в мусор.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/weak_ref_any_alive.htm b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/weak_ref_any_alive.htm index 9c92137f8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/weak_ref_any_alive.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/weak_ref_any_alive.htm @@ -1,77 +0,0 @@ - - - - - - weak_ref_any_alive - - - - - - - - - - - -

weak_ref_any_alive

-

С помощью этой функции вы можете проверить слабые ссылки на различные структуры, чтобы узнать, живы они еще или нет. Вы передаете массив слабых ссылок для проверки (каждая слабая ссылка должна быть создана с помощью функции weak_ref_create()), и функция вернет true, если любой если на эти структуры все еще где-то ссылаются, или false, если это не так и они были собраны в мусор. Обратите внимание, что если вы предоставите массив, в котором любое из значений не является слабой ссылкой, функция вернет undefined.

-

Обратите внимание, что функция также принимает два необязательных аргумента, первый из которых позволяет указать начальный индекс массива для проверки, а также аргумент, задающий количество позиций (длину) от этого индекса для проверки. Если они указаны, то будут проверяться только индексы массива в пределах этих параметров.

-

-

Синтаксис:

-

weak_ref_any_alive(array, [index], [length]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
arrayМассив слабых ссылок структурArray containing weak references to the structs that you want to check.
[index]РеальноOPTIONAL Индекс в массиве, с которого следует начать проверку
[length]РеальноOPTIONAL Количество позиций, начиная с заданного индекса, для проверки на наличие
-

-

Возвращается:

-

Boolean (or undefined)

-

-

Пример:

-

if weak_ref_any_alive(inventory_ref_array)
- {
-     instance_destroy(obj_Inventory_Control);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/weak_ref_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/weak_ref_create.htm index cb90ab2d1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/weak_ref_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Garbage_Collection/weak_ref_create.htm @@ -1,62 +0,0 @@ - - - - - - weak_ref_create - - - - - - - - - - -

weak_ref_create

-

С помощью этой функции вы можете создать слабую ссылку на структуру, которая затем может быть использована для проверки того, жива ли эта структура (ссылка на нее) или нет в игре. Вы передаете ссылку на структуру, которую хотите отследить, а функция возвращает другую структуру, которая является слабой ссылкой на эту структуру. Обратите внимание, что вы можете проверить, является ли ссылка "сильной" или "слабой", используя функцию instanceof(), так как сильная ссылка вернет либо "struct" или имя функции-конструктора, создавшей структуру, либо "weakref", если это слабая ссылка. Также обратите внимание, что структура со слабой ссылкой будет иметь переменную "ref", к которой можно обратиться, чтобы получить сильную ссылку на данную структуру, если только она не была собрана в мусор, в этом случае она вернет undefined.

-

-

Синтаксис:

-

weak_ref_create(struct_to_track);

- - - - - - - - - - - - - -
АргументТипОписание
struct_to_trackСтруктураThe struct that you want to create a weak reference for
-

-

Возвращается:

-

Struct Weak Reference

-

-

Пример:

-

inventory_ref = weak_ref_create(inventory);

-

Приведенный выше код создает слабую ссылку на struct и сохраняет ее в переменной экземпляра для последующего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/General_Game_Control.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/General_Game_Control.htm index c6465064b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/General_Game_Control.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/General_Game_Control.htm @@ -1,77 +0,0 @@ - - - - - - Общее управление игрой - - - - - - - - - - -

Общее управление игрой

-

Эти функции и переменные связаны с функциональностью, специфичной для игры, например, загрузка/сохранение, перезапуск и так далее.

-

Следующие встроенные переменные глобальной области видимости полезны для отладки вашей игры - они могут быть использованы в качестве вывода в файл журнала в случае возникновения проблем, например - а также для отображения текущего ID сборки и т.д... пользователю:

- -

-

Следующие функции используются для общего управления игрой:

- -

-

Чтобы помочь вам создавать и поддерживать высокие баллы для ваших игр, GameMaker создает глобальный массив высоких баллов из 10 мест, к которому вы можете обращаться, добавлять и изменять, чтобы без лишних хлопот создавать свои собственные списки высоких баллов. Эта функциональность является локальной для игры и работает на всех платформах, поэтому вы можете легко хранить и поддерживать базовую таблицу высоких результатов, используя эти функции вместе с функциями обработки файлов.

-

Существуют следующие функции, работающие с внутренним списком высоких результатов.

- -

-

GameMaker также включает функцию для вывода результатов на экран в виде списка, однако она очень проста, и рекомендуется использовать ее для отладки, а не для чего-либо еще, поскольку создать свою собственную таблицу результатов очень просто, и это даст вам гораздо больше контроля над тем, как она отображается:

- -

-

Наконец, у нас есть функция, позволяющая назначить курсору мыши адрес sprite:

- -

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/cursor_sprite.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/cursor_sprite.htm index c86d8fee3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/cursor_sprite.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/cursor_sprite.htm @@ -1,49 +0,0 @@ - - - - - - cursor_sprite - - - - - - - - - - -

cursor_sprite

-

Установка этой переменной дает команду GameMaker использовать указанный sprite в качестве курсора (по сути, устанавливая его на текущую позицию мыши x/y каждый шаг). Значение по умолчанию равно -1, что означает отсутствие sprite для курсора, но вы можете назначить любой индекс sprite из активов игры или импортированный из внешнего ресурса. Обратите внимание, что нет возможности управлять скоростью анимации или индексом изображения, поэтому если sprite имеет подизображения, они будут циклически повторяться с той же скоростью, что и скорость комнаты. Чтобы убрать курсор sprite, вы можете снова установить эту переменную в -1.

-

Также стоит отметить, что эта переменная не заменяет курсор игрового окна, и он все равно будет рисоваться как обычно. Чтобы избежать этого, вы можете использовать функцию window_set_cursor() и установить ее в константу cr_none, что сделает стандартный курсор невидимым.

-

-

Синтаксис:

-

cursor_sprite

-

-

Возвращается:

-

Sprite Asset

-

-

Пример:

-

cursor_sprite = spr_CustomCursor;

-

Приведенный выше код установит sprite, указанный в переменной "spr_CustomCursor", в качестве курсора sprite для игры.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_display_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_display_name.htm index 02d9b835b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_display_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_display_name.htm @@ -1,48 +0,0 @@ - - - - - - game_display_name - - - - - - - - - - -

game_display_name

-

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

-

-

Синтаксис:

-

game_display_name

-

-

Возвращается:

-

-

-

Пример:

-

var name = game_display_name;
var ver = string(GM_version);
draw_text(32, 32, name + ":" + ver);

-

Приведенный выше код получает отображаемое имя и номер версии игры и рисует их.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_end.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_end.htm index c0497ed38..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_end.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_end.htm @@ -1,57 +0,0 @@ - - - - - - game_end - - - - - - - - - - -

game_end

-

С помощью этой функции вы можете завершить игру (при этом будет вызвано событие Game End Event ). Это произойдет не мгновенно, а скорее в конце текущего шага, поэтому любой код - находящийся в том же шаге после вызова этой функции, будет по-прежнему выполняться. Обратите внимание, что эта функция имеет следующие ограничения:

-
    -
  • На устройствах Android вызов game_end() переводит приложение в фоновый режим, но не закрывает его. Это должен сделать пользователь.
  • -
  • На сайте iOS он ничего не сделает и молча выйдет из строя.
  • -
  • На всех консолях (включая UWP при запуске на Xbox) это может привести к краху игры или в лучшем случае к молчаливому отказу, а также к отказу отправки, поэтому эту функцию нельзя использовать.
  • -
  • На HTML5 это завершит игру, но оставит пользователя смотреть на чистый холст веб-страницы, и поэтому не рекомендуется использовать его на этой целевой платформе.
  • -
  • На сайтах Windows (включая UWP на ПК), Linux и macOS функция просто завершает игру и закрывает окно игры (также будет вызвано событие Game End Event ).
  • -
    -
-

-

Синтаксис:

-

game_end();

-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check_pressed(vk_escape) game_end();

-

Это приведет к завершению игры, если игрок нажмет клавишу "escape".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_get_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_get_speed.htm index 0538d534e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_get_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_get_speed.htm @@ -1,92 +0,0 @@ - - - - - - game_get_speed - - - - - - - - - - - -

game_get_speed

-

Эта функция может быть использована для получения скорости игры либо как количество игровых кадров в секунду, либо как количество микросекунд на игровой кадр. Обратите внимание, что это не фактическое значение скорости бега FPS (для этого используйте переменную fps_real а скорее количество игровых кадров (FPS), которые игра будет пытаться поддерживать каждую секунду, или длительность каждого игрового кадра в микросекундах, которую игра будет пытаться поддерживать (MPF). Когда вы используете эту функцию, вам необходимо указать одну из следующих констант, которая будет определять тип возвращаемого значения:

- - - - - - - - - - - - - - - - - - - - - - -
Скорость игры Постоянная
ПостояннаяОписание
gamespeed_fpsПолучает скорость игры, используя количество кадров в секунду.
gamespeed_microsecondsПолучает скорость игры, используя микросекунды на кадр.
-

Так, например, если скорость игры установлена на 30 в Опциях игры и вы используете тип FPS, то функция вернет 30, но если вы используете MPF, то функция вернет 33333.

-

-

Синтаксис:

-

game_get_speed(type);

- - - - - - - - - - - - - -
АргументТипОписание
typeСкорость игры ПостояннаяThe type of method used to get the game speed (see the constants above).
-

-

Возвращается:

-

Real

-

-

Пример:

-

if game_get_speed(gamespeed_fps) != 60
- {
-     game_set_speed(60, gamespeed_fps);
- }

-

Приведенный выше код проверяет, запущена ли игра с игровой скоростью 60 FPS, и если нет, то устанавливается значение 60 FPS.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_id.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_id.htm index 4750a6bd4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_id.htm @@ -1,50 +0,0 @@ - - - - - - game_id - - - - - - - - - - -

game_id

-

Эта переменная, доступная только для чтения, возвращает уникальный идентификатор для созданной вами игры. Вы можете использовать его, если вам нужно уникальное имя файла или что-то еще, что необходимо для идентификации только вашей игры. Этот параметр можно задать в Опциях игры.

-

-

Синтаксис:

-

game_id

-

-

Возвращается:

-

Real

-

-

Пример:

-

ini_open("Score.ini");
- ini_write_real("Scores", "0", score + game_id);
- ini_close();

-

Приведенный выше код выполняет очень базовое шифрование счета, добавляя к нему game_id перед сохранением. При повторном чтении в игре вы вычтете game_id, чтобы снова получить правильное значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_load.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_load.htm index a4d221ad5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_load.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_load.htm @@ -1,65 +0,0 @@ - - - - - - game_load - - - - - - - - - - -

game_load

-

С помощью этой функции вы можете загрузить игру, которая была ранее сохранена с использованием game_save(). Обратите внимание, что при этом будет восстановлена версия игры, которая использовалась для создания сохранения, поэтому любые обновления, сделанные после него, не будут видны. Для получения дополнительной информации прочтите страницу game_save().

-

-

Синтаксис:

-

game_load(filename);

- - - - - - - - - - - - - -
АргументТипОписание
filenameСтрокаThe name of the file to load from.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if keyboard_check_pressed(ord("L"))
- {
-     if (global.Save) game_load("Save.dat");
- }

-

Приведенный выше код загрузит ранее сохраненную игру, если при нажатии игроком клавиши "L" глобальная переменная true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_load_buffer.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_load_buffer.htm index 59e0ddf4f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_load_buffer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_load_buffer.htm @@ -1,63 +0,0 @@ - - - - - - game_load_buffer - - - - - - - - - - -

game_load_buffer

-

С помощью этой функции вы можете загрузить состояние игры, которое было сохранено ранее. Игра загружается из ранее созданного буфера "grow" (см. раздел " Буферы"), и в этом буфере должно быть сохранено состояние игры с помощью функции game_save_buffer() функция.

-

-

Синтаксис:

-

game_load_buffer(buffer);

- - - - - - - - - - - -
АргументТипОписание
bufferThe buffer id to load from.
-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check_pressed(ord("L"))
- {
-     if (global.Checkpoint) game_load_buffer(save_buff);
- }

-

Приведенный выше код загрузит ранее сохраненное состояние игры из буфера, указанного в переменной "save_buff", только если глобальная переменная имеет значение true, когда игрок нажмет клавишу "L".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_project_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_project_name.htm index f9d8ee42e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_project_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_project_name.htm @@ -1,52 +0,0 @@ - - - - - - game_project_name - - - - - - - - - - -

game_project_name

-

Эта переменная, доступная только для чтения, возвращает отображаемое имя вашей игры для целевой платформы в "удобном для сохранения" формате для целевой платформы. Если отображаемое имя содержит символы, недопустимые для имени файла, они будут - будут автоматически заменены на "_". Имя отображения можно задать в Параметрах игры. Обратите внимание, что поскольку для HTML5 нет ограничений на имена файлов, эта строка, вероятно, будет такой же - что и та, которую возвращает game_display_name.

-

-

Синтаксис:

-

game_project_name

-

-

Возвращается:

-

-

-

Пример:

-

var file = game_project_name + ".ini";
ini_open(file); -
ini_write_real("Scores", "Highscore", score);
ini_close(); -

-

Приведенный выше код получает имя проекта и использует его для открытия (или создания) ini-файла, в который затем производится запись.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_restart.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_restart.htm index 2ba2fd42d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_restart.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_restart.htm @@ -1,58 +0,0 @@ - - - - - - game_restart - - - - - - - - - - -

game_restart

-

С помощью этой функции вы можете перезапустить игру. По сути, это то же самое, что запустить игру в первый раз, поэтому будет вызвано событие начала игры, а также событие окончания игры.

-
-

Следует отметить, что некоторые вещи не будут сброшены при вызове этой функции:

-
    -
  • Глобальные переменные не будут повторно инициализированы, если это не указано в явном виде - например, встроенная глобальная переменная score не будет начинаться с нуля после перезапуска игры, если она уже была изменена в игре.
  • -
  • Состояние GPU не будет изменено (поэтому, если вы, например, установили цвет рисования или альфу, они останутся в измененном значении).
  • -
  • Скорость игры останется такой, какой вы ее установили в коде игры (если вы ее изменили, это изменение будет сохранено).
  • -
  • Любой актив из браузера активов, который был изменен во время выполнения в игре - например, если вы измените начало координат для ресурса sprite или сместите позицию ресурса пути - не будет сброшен.
  • -
  • Динамические ресурсы, такие как буферы, поверхности, структуры данных или импортированные sprites, также не будут очищены или удалены (хотя вы можете потерять ссылки на них, поэтому при использовании этой функции позаботьтесь о том, чтобы либо использовать глобальные ссылки для динамического ресурса, либо очистить их до вызова функции).
  • -
    - -
-

Синтаксис:

-

game_restart();

-

-

Возвращается:

-

N/A

-

-

Пример:

-

if keyboard_check_pressed(ord("R")) game_restart();

-

Это позволит перезапустить игру, когда игрок нажимает клавишу "R".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_save.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_save.htm index 909a9015f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_save.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_save.htm @@ -1,66 +0,0 @@ - - - - - - game_save - - - - - - - - - - -

game_save

-

Это устаревшая функция, которая может быть использована для сохранения текущего состояния игры, и больше не рекомендуется к использованию. Вместо этого используйте функции File для создания пользовательской системы сохранения, в которой сохраняются и загружаются только определенные игровые данные.

-

Эта функция сохранит состояние игры как оно есть, однако она не сохранит динамические ресурсы, используемые в это время, такие как структуры данных, поверхности, активы, добавленные во время выполнения и т.п. Если такой файл сохранения будет загружен, любые обновления игры, сделанные после сохранения, не будут видны, так как будет восстановлена версия игры, которая использовалась для создания сохранения.

-

Обратите внимание, что файлы сохранения, созданные с помощью этой функции, могут не поддерживаться обновленными версиями Runtime, поэтому замена этой функции на новую систему сохранения необходима для обеспечения совместимости с будущими обновлениями GameMaker и, по причинам, перечисленным выше, обновлениями, сделанными в вашей собственной игре.

-

-

Синтаксис:

-

game_save(filename);

- - - - - - - - - - - -
АргументТипОписание
filenameThe name of the file to save the game to.
-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check_pressed(ord("S"))
- {
-     global.Saved = true;
-     game_save("Save.dat");
- }

-

Приведенный выше код установит глобальную переменную на true, а затем сохранит игру в файл "Save.dat" при нажатии клавиши "S".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_save_buffer.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_save_buffer.htm index 18444e373..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_save_buffer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_save_buffer.htm @@ -1,66 +0,0 @@ - - - - - - game_save_buffer - - - - - - - - - - -

game_save_buffer

-

Это вариант функции game_save(), поэтому, пожалуйста, сначала прочитайте ее страницу, так как она содержит важную информацию, связанную с ее использованием, а также с этой функцией.

-

С помощью этой функции вы можете сохранить текущее состояние игры в ранее созданный буфер "grow" (см. Буферы), который затем можно снова загрузить в любое время с помощью функции game_load_buffer() функция. Эта функция предназначена для использования в одной комнате за один раз (т.е. не рекомендуется сохранять буфер в одной комнате, а затем пытаться загрузить его из другой) и в идеале должна использоваться только для контрольных точек или перезапуска уровня.

-

ПРИМЕЧАНИЕ: Эта функция очень ограничена и предназначена для новичков, чтобы быстро запустить систему контрольных точек, но более опытные пользователи могут предпочесть кодировать свою собственную систему, используя функции File, из-за того, что игра не будет сохранять динамические ресурсы, такие как структуры данных, поверхности, добавленные sprites и т.д.

-

-

Синтаксис:

-

game_save_buffer(buffer);

- - - - - - - - - - - -
АргументТипОписание
bufferThe buffer id to save to.
-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check_pressed(ord("S"))
- {
-     global.Checkpoint = true;
-     game_save_buffer(save_buff);
- }

-

Приведенный выше код установит глобальную переменную в значение true, а затем сохранит текущее состояние игры в буфер, указанный в переменной "save_buff", при нажатии клавиши "S".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_save_id.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_save_id.htm index 2d4ece559..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_save_id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_save_id.htm @@ -1,50 +0,0 @@ - - - - - - game_save_id - - - - - - - - - - -

game_save_id

-

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

-

Для цели HTML5 он вернет пустую строку.

-

ПРИМЕЧАНИЕ Эта переменная существует исключительно для информации и не должна использоваться для получения пути к файлу или чего-то подобного, так как она не будет корректно работать на всех платформах.

-

-

Синтаксис:

-

game_save_id

-

-

Возвращается:

-

String

-

-

Пример:

-

save_dir = game_save_id;

-

Это позволит сохранить каталог для сохранения файлов в переменной для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_set_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_set_speed.htm index 3b333aa63..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_set_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/game_set_speed.htm @@ -1,96 +0,0 @@ - - - - - - game_set_speed - - - - - - - - - - -

game_set_speed

-

С помощью этой функции можно задать скорость игры. Ее можно задать одним из двух способов - либо как количество игровых кадров в секунду (FPS), либо как количество микросекунд на игровой кадр (MPF) - используя одну из следующих двух констант:

- - - - - - - - - - - - - - - -
ПостояннаяОписание
gamespeed_fpsУстанавливает скорость игры с использованием кадров в секунду.
gamespeed_microsecondsУстанавливает скорость игры, используя микросекунды на кадр.
-

Так, например, при скорости игры 30 кадров в секунду на один игровой кадр будет приходиться 33333 микросекунды, которые затем будут выражены этой функцией как либо:

-

game_set_speed(30, gamespeed_fps);

-

или:

-

game_set_speed(33333, gamespeed_microseconds);

-

-

Синтаксис:

-

game_set_speed(speed, type);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
speedРеальноThe new game speed (as either FPS or MPF).
typeСкорость игры ПостояннаяThe type of method used to set the game speed (see the constants above).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if os_browser == browser_not_a_browser
- {
-     game_set_speed(60, gamespeed_fps);
- }
- else
- {
-     game_set_speed(30, gamespeed_fps);
- }

-

Приведенный выше код проверяет, запущена ли игра в браузере, и соответствующим образом устанавливает скорость игры в виде значения FPS.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/highscore_add.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/highscore_add.htm index 8bcfc5621..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/highscore_add.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/highscore_add.htm @@ -1,72 +0,0 @@ - - - - - - highscore_add - - - - - - - - - - -

highscore_add

-

С помощью этой функции вы можете добавить имя и результат во внутренний глобальный список высоких результатов. Нет необходимости проверять значение, достаточно ли оно высоко для внесения в список, поскольку GameMaker будет сохранять только те значения, которые больше десятой позиции.

-

-

Синтаксис:

-

highscore_add(str, numb);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
strСтрокаThe string (name) to attribute the score to.
numbРеальноThe number (score) to add.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (lives == 0)
- {
-     highscore_add(global.Name, score);
-     score = 0;
-     room_goto(rm_MainMenu);
- }

-

Приведенный выше код проверит жизни и, если они равны 0, добавит текущий счет и строку, хранящуюся в глобальной переменной "Name", в список высоких результатов, после чего установит счет на 0 и отправит игрока в комнату, индексированную в "rm_MainMenu".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/highscore_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/highscore_clear.htm index 7e80ef4de..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/highscore_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/highscore_clear.htm @@ -1,49 +0,0 @@ - - - - - - highscore_clear - - - - - - - - - - - -

highscore_clear

-

С помощью этой функции вы можете очистить внутренний глобальный список высоких результатов, сбросив все имена на значение по умолчанию "Unknown", а все оценки - на значение по умолчанию 0.

-

-

Синтаксис:

-

highscore_clear();

-

-

Возвращается:

-

-

-

Пример:

-

highscore_clear();

-

Это очистит список высоких результатов.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/highscore_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/highscore_name.htm index 507a9f581..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/highscore_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/highscore_name.htm @@ -1,66 +0,0 @@ - - - - - - highscore_name - - - - - - - - - - - -

highscore_name

-

С помощью этой функции вы можете получить строку имени, которая была сохранена в списке высоких результатов на заданной позиции. Если имя не было введено, будет возвращена строка "Unknown".

-

-

Синтаксис:

-

highscore_name(place);

- - - - - - - - - - - -
АргументТипОписание
placeThe place on the table (1-10).
-

-

Возвращается:

-

-

-

Пример:

-

var i = 9;
- repeat(10)
- {
-     name[i] = highscore_name(i + 1);
-     i -= 1;
- }

-

Приведенный выше код будет циклически просматривать список высоких результатов и сохранять все имена в массив.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/highscore_value.htm b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/highscore_value.htm index 085da446c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/highscore_value.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/General_Game_Control/highscore_value.htm @@ -1,65 +0,0 @@ - - - - - - highscore_value - - - - - - - - - - -

highscore_value

-

С помощью этой функции вы можете получить значение счета, которое было сохранено в списке высоких результатов в заданной позиции. Если счет не был введен, функция возвращает 0.

-

-

Синтаксис:

-

highscore_value(place);

- - - - - - - - - - - -
АргументТипОписание
placeThe place on the table (1-10).
-

-

Возвращается:

-

-

-

Пример:

-

var i = 9;
- repeat(10)
- {
-     scr[i] = highscore_value(i + 1);
-     i -= 1;
- }

-

Приведенный выше код будет циклически просматривать список высоких оценок и сохранять все оценки в массив.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/In_App_Purchases/In_App_Purchases.htm b/Manual/contents/GameMaker_Language/GML_Reference/In_App_Purchases/In_App_Purchases.htm index bd169b473..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/In_App_Purchases/In_App_Purchases.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/In_App_Purchases/In_App_Purchases.htm @@ -1,66 +0,0 @@ - - - - - - Покупки в приложении - - - - - - - - - - -

Покупки в приложении

-

Вы можете добавить In App Purchases в свои игры, используя расширения, доступные на сайте Marketplace, и следуя приведенным ниже инструкциям по настройке (каждое расширение поставляется с собственным "мини-руководством", в котором объясняется, как его использовать, и перечисляются все функции, которые оно содержит):

- -

-

В предыдущих версиях GameMaker в бегунок были встроены функции In App Purchase, однако сейчас эти функции устарели и больше не работают:

-
    -
  • iap_data
  • -
  • iap_activate
  • -
  • iap_status
  • -
  • iap_enumerate_products
  • -
  • iap_restore_all
  • -
  • iap_acquire
  • -
  • iap_consume
  • -
  • iap_product_details
  • -
  • iap_purchase_details
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/Angles_And_Distance.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/Angles_And_Distance.htm index d62561076..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/Angles_And_Distance.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/Angles_And_Distance.htm @@ -1,78 +0,0 @@ - - - - - - Углы и расстояние - - - - - - - - - - -

Углы и расстояние

-

На этой странице перечислены все числовые функции, связанные с углами и расстояниями, многие из которых используются в векторных вычислениях, а также при столкновениях и поиске пути.

-

Все следующие функции связаны с углами и основами тригонометрии:

- -

-

GameMaker также имеет ряд векторных функций, перечисленных ниже:

- -

-

Для объяснения векторов и нормализованных векторов вы можете прочитать следующий раздел, в котором дается краткий обзор того, что такое вектор и как его можно использовать при создании игр:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/angle_difference.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/angle_difference.htm index 16b3780e4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/angle_difference.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/angle_difference.htm @@ -1,96 +0,0 @@ - - - - - - angle_difference - - - - - - - - - - - - -

angle_difference

-

Эта функция возвращает наименьшую разницу между двумя указанными углами, где разница рассчитывается от исходного угла к конечному. Возвращаемое значение будет находиться в диапазоне от -180 до 180 градусов (где положительный угол - против часовой стрелки, а отрицательный - по часовой стрелке).

-

Связь между углами "источника" и "назначения" такова, что разница, которую вы получаете, вызывая angle_difference(dest, src), при добавлении обратно к значению src, дает угол назначения (хотя точные числовые значения могут отличаться). Вы можете использовать аналогичную технику для постепенного перемещения исходного угла к углу назначения на каждом шаге, добавляя, скажем, 10% от возвращенной разности обратно к src, чтобы немного сдвинуть его в сторону dest (это продемонстрировано в примере ниже).

-

-

Синтаксис:

-

angle_difference(dest, src)

- - - - - - - - - - - - - - - -
АргументТипОписание
destThe destination or target angle
srcThe source angle
-

-

Возвращается:

-

-

-

Пример:

-

var _dir = point_direction(x, y, mouse_x, mouse_y);
- var _diff = angle_difference(_dir, image_angle);
- image_angle += _diff * 0.1;

-

Приведенный выше код получит направление от экземпляра к курсору мыши, затем получит разницу между этим углом и текущим углом. image_angleи использует это значение для постепенного поворота экземпляра по направлению к мыши.

-

-

-

Интерактивный пример

- - - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/arccos.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/arccos.htm index 809782940..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/arccos.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/arccos.htm @@ -1,66 +0,0 @@ - - - - - - - - - arccos - - - - - - - - - - - -

arccos

-

Возвращает обратный косинус x, при этом если cos(val)=n, arccos(n)=val, то полученное число будет между pi и 0.

-

ПРИМЕЧАНИЕ:Здесь будет приниматься только число от -1 до 1 (все остальное приведет к ошибке).

-

ПРИМЕЧАНИЕ: Эта функция принимает значение в радианах, а не в градусах.

-

-

Синтаксис:

-

arccos(x)

- - - - - - - - - - - -
АргументТипОписание
xThe angle (in radians) to return the inverse cosine of.
-

-

Возвращается:

-

-

-

Пример:

-

val = arccos(0);

-

Это установит значение val равным pi/2.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/arcsin.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/arcsin.htm index a5fc1bd71..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/arcsin.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/arcsin.htm @@ -1,66 +0,0 @@ - - - - - - - - - arcsin - - - - - - - - - - - -

arcsin

-

Возвращает обратный синус x, причем если sin(x)=n, arcsin(n)=x, то полученное число будет находиться между -pi/2 и pi/2.

-

ПРИМЕЧАНИЕ: Это значение может принимать только значения от -1 до 1 (все остальное приведет к ошибке).

-

ПРИМЕЧАНИЕ: Эта функция возвращает значение в радианах, а не в градусах.

-

-

Синтаксис:

-

arcsin(x);

- - - - - - - - - - - -
АргументТипОписание
xThe value to return the inverse sine of.
-

-

Возвращается:

-

-

-

Пример:

-

val = arcsin(0);

-

Это установит значение val равным 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/arctan.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/arctan.htm index 909c131dc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/arctan.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/arctan.htm @@ -1,66 +0,0 @@ - - - - - - - - - arctan - - - - - - - - - - - -

arctan

-

Возвращает обратный тангенс к x. Это может быть любое число, так как, в отличие от tan(), arctan() асимптоты находятся на оси y, так что это означает, что вам никогда не будет возвращено число - больше, чем pi/2 или меньше, чем -pi/2.

-

ПРИМЕЧАНИЕ: Эта функция принимает значение в радианах, а не в градусах.

-

-

Синтаксис:

-

arctan(x);

- - - - - - - - - - - -
АргументТипОписание
xThe angle (in radians) to return the inverse tangent of.
-

-

Возвращается:

-

-

-

Пример:

-

val = arctan( 0 );

-

Это установит значение val равным 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/arctan2.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/arctan2.htm index f1ab7e342..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/arctan2.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/arctan2.htm @@ -1,69 +0,0 @@ - - - - - - - - - arctan2 - - - - - - - - - - - -

arctan2

-

Эта функция возвращает обратный тангенс угла y/x, где y = Opposite side of triangle и x = Adjacent side of triangle. В отличие от arctan() функция arctan2(y, x) действительна для всех углов и поэтому может быть использована для преобразования вектора в угол без риска деления на ноль, а также возвращает результат в правильном квадранте.

-

ПРИМЕЧАНИЕ: Возвращаемое значение указывается в радианах, а не в градусах.

-

-

Синтаксис:

-

arctan2(y, x);

- - - - - - - - - - - - - - - -
АргументТипОписание
yThe y coordinate to calculate.
xThe x coordinate to calculate.
-

-

Возвращается:

-

-

-

Пример:

-

val = arctan2(1, 1);

-

Это установит val на правильный угол, в данном случае 0,79.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/cos.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/cos.htm index a27fb67b1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/cos.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/cos.htm @@ -1,64 +0,0 @@ - - - - - - - - cos - - - - - - - - - - - -

cos

-

В прямоугольном треугольнике cos(val) = Прилегание / Гипотенуза, где val - один из трех углов. Эта функция всегда возвращает число от 1 до -1.

-

ПРИМЕЧАНИЕ: Эта функция принимает значение в радианах, а не в градусах.

-

-

Синтаксис:

-

cos(val);

- - - - - - - - - - - -
АргументТипОписание
valThe angle (in radians) to return the cosine of.
-

-

Возвращается:

-

-

-

Пример:

-

val = cos( 0 );

-

При этом значение val будет равно 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/darccos.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/darccos.htm index d6a898838..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/darccos.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/darccos.htm @@ -1,65 +0,0 @@ - - - - - - - - darccos - - - - - - - - - - - -

darccos

-

Возвращает обратный косинус x, причем если dcos(val)=n, darccos(n)=val, то полученное число будет находиться между 180 и 0.

-

ПРИМЕЧАНИЕ: Здесь принимается только число от -1 до 1 (все остальное приведет к ошибке).

-

ПРИМЕЧАНИЕ: Эта функция возвращает значение в градусах, а не в радианах.

-

-

Синтаксис:

-

darccos(val)

- - - - - - - - - - - -
АргументТипОписание
xThe value to return the inverse cosine of.
-

-

Возвращается:

-

-

-

Пример:

-

val = arccos(-1);

-

Это установит значение "val" равным 180.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/darcsin.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/darcsin.htm index d130776c1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/darcsin.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/darcsin.htm @@ -1,65 +0,0 @@ - - - - - - - - darcsin - - - - - - - - - - - -

darcsin

-

Возвращает обратный синус x, при этом если dsin(x)=n, darcsin(n)=x, то полученное число будет находиться между -90 и 90.

-

ПРИМЕЧАНИЕ: Здесь принимается только число от -1 до 1 (все остальное приведет к ошибке).

-

ПРИМЕЧАНИЕ: Эта функция возвращает значение в градусах, а не в радианах.

-

-

Синтаксис:

-

darcsin(x);

- - - - - - - - - - - -
АргументТипОписание
valThe value to return the inverse sine of.
-

-

Возвращается:

-

-

-

Пример:

-

val = darcsin(-1);

-

Это установит значение "val" на -90.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/darctan.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/darctan.htm index 4c8e8e4dd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/darctan.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/darctan.htm @@ -1,66 +0,0 @@ - - - - - - - - - darctan - - - - - - - - - - - -

darctan

-

Возвращает обратный тангенс к x. При этом принимается любое число, так как, в отличие от dtan() darctan() асимптоты находятся на оси y, так что это означает, что вы никогда не получите в ответ число - больше 90 или меньше -90.

-

ПРИМЕЧАНИЕ: Эта функция возвращает значение в градусах, а не в радианах.

-

-

Синтаксис:

-

darctan(x);

- - - - - - - - - - - -
АргументТипОписание
valThe value to return the inverse tangent of.
-

-

Возвращается:

-

-

-

Пример:

-

val = darctan(1);

-

Это установит значение "val" на -45.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/darctan2.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/darctan2.htm index ad8e289df..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/darctan2.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/darctan2.htm @@ -1,68 +0,0 @@ - - - - - - - - darctan2 - - - - - - - - - - - -

darctan2

-

Эта функция возвращает обратный тангенс угла y/x, где y = Opposite side of triangle и x = Adjacent side of triangle. В отличие от darctan() функция darctan2() действительна для всех углов и поэтому может быть использована для преобразования вектора в угол без риска деления на ноль, а также возвращает результат в правильном квадранте.

-

ПРИМЕЧАНИЕ: Возвращаемое значение указывается в градусах, а не в радианах.

-

-

Синтаксис:

-

darctan2(y, x);

- - - - - - - - - - - - - - - -
АргументТипОписание
yThe y coordinate to calculate.
xThe x coordinate to calculate.
-

-

Возвращается:

-

-

-

Пример:

-

val = darctan2(1, 1);

-

Это позволит установить "val" на правильный угол.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dcos.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dcos.htm index 4bf8e2a13..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dcos.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dcos.htm @@ -1,61 +0,0 @@ - - - - - dcos - - - - - - - - - - - -

dcos

-

В прямоугольном треугольнике cos(val) = Прилегание / Гипотенуза, где val - один из трех углов. Эта функция всегда возвращает число от 1 до -1.

-

ПРИМЕЧАНИЕ: Эта функция принимает значение в градусах, а не в радианах.

-

-

Синтаксис:

-

dcos(val);

- - - - - - - - - - - -
АргументТипОписание
valThe angle (in degrees) to return the cosine of.
-

-

Возвращается:

-

-

-

Пример:

-

val = dcos(45);

-

Это установит значение "val" равным 0,71.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/degtorad.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/degtorad.htm index ba3794e54..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/degtorad.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/degtorad.htm @@ -1,62 +0,0 @@ - - - - - degtorad - - - - - - - - - - - -

degtorad

-

В GM все тригонометрические функции работают в радианах, но большинство людей работают в градусах, и это означает, что для преобразования градусов в радианы нужно использовать эту функцию. Например, degtorad(180) возвращает 3,14159265 радианов. Эта функция - переводит градусы в радианы по формуле:

-

angle_radians = angle_degrees * pi / 180

-

-

Синтаксис:

-

degtorad(deg);

- - - - - - - - - - - -
АргументТипОписание
degThe degrees to convert.
-

-

Возвращается:

-

-

-

Пример:

-

val = degtorad(90);

-

Это установит значение val равным pi/2.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/distance_to_object.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/distance_to_object.htm index 85223d202..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/distance_to_object.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/distance_to_object.htm @@ -1,66 +0,0 @@ - - - - - - distance_to_object - - - - - - - - - - - -

distance_to_object

-

Эта функция вычисляет расстояние от края ограничительной рамки вызывающего экземпляра до ближайшего края ближайшего экземпляра указанного объекта. Объект может быть индексом объекта или идентификатором конкретного экземпляра, а также ключевое слово другой, а расстояние возвращается в пикселях. Обратите внимание, что если у любого из объектов нет sprite или не определена маска, результаты будут неверными.

-

-

Синтаксис:

-

distance_to_object(obj);

- - - - - - - - - - - - - -
АргументТипОписание
obj Идентификаторактива или экземпляраобъекта The object to check for.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if (distance_to_object(obj_Player) < range)
- {
-     can_shoot = true;
- }

-

Приведенный выше код проверяет расстояние до объекта игрока, и если оно меньше значения, хранящегося в переменной "range", то переменная "canshoot" устанавливается в true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/distance_to_point.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/distance_to_point.htm index 432dd872b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/distance_to_point.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/distance_to_point.htm @@ -1,68 +0,0 @@ - - - - - - distance_to_point - - - - - - - - - - - -

distance_to_point

-

Эта функция вычисляет расстояние от края ограничительной рамки вызывающего объекта до указанной позиции x/y в комнате, при этом возвращаемое значение будет в пикселях. Обратите внимание, что если у вызывающего объекта нет sprite или не определена маска, результаты будут неверными.

-

-

Синтаксис:

-

distance_to_point(x, y);

- - - - - - - - - - - - - - - -
АргументТипОписание
xThe x position to check.
yThe y position to check.
-

-

Возвращается:

-

-

-

Пример:

-

if (distance_to_point(obj_Player.x, obj_Player.y) < range)
- {
-     can_shoot = true;
- }

-

Приведенный выше код проверяет расстояние до позиции x/y объекта игрока, и если оно меньше значения, хранящегося в переменной "range", то переменная "canshoot" устанавливается в true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dot_product.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dot_product.htm index 7ce4a5293..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dot_product.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dot_product.htm @@ -1,94 +0,0 @@ - - - - - dot_product - - - - - - - - - - - -

dot_product

-

Точечное произведение - это величина, выражающая угловое отношение между двумя векторами, которое находится путем взятия двух векторов, их умножения и последующего сложения. Название "точечное произведение" происходит от центрированной точки "-" - которая часто используется для обозначения этой операции (альтернативное название "скалярное произведение" подчеркивает скалярную, а не векторную природу результата).

-

Фактическая математическая формула может быть записана следующим образом:

-

Dot Product formula

-

Так, в 2D точечное произведение векторов a[x1,y1] и b[x2,2] равно x1x2 + y1y2, что означает, что точечный_продукт в GameMaker вычисляется как:

-

a · b = (x1*x2)+(y1*y2);

-

Любопытно, что точечное произведение связано с углом, образованным входными векторами, который может быть выражен как:

-

a · b = (length of a) * (length of b) * cos(angle)

-

То есть, точечное произведение двух векторов будет равно косинусу угла между этими векторами, умноженному на длину каждого из них. Вот изображение для иллюстрации:

-

Dot Product ilustration

-

ПРИМЕЧАНИЕ: Более подробную информацию о векторах см. здесь.

-

Есть несколько вещей, которые мы теперь можем определить по любым двум векторам в зависимости от результата их точечного произведения:

-
    -
  • Если a и b перпендикулярны (находятся под углом 90 градусов друг к другу), результат точечного произведения будет равен нулю, потому что cos(ang) будет равен нулю.
  • -
  • Если угол между a и b меньше 90 градусов, то точечное произведение будет положительным (больше нуля), так как cos(ang) будет положительным.
  • -
  • Если угол между a и b больше 90 градусов, то точечное произведение будет отрицательным (меньше нуля), так как cos(ang) будет отрицательным.
  • -
-

Что же это значит для тех из нас, кто создает игры? Эта математическая зависимость может быть использована в довольно многих обстоятельствах, но лучший способ увидеть ее - построить реальный сценарий и посмотреть, что происходит. Один из самых простых - способов сделать это - сгенерировать простую проверку "прямой видимости" для врага, скажем, в платформенной игре, чтобы враг "видел" игрока, если он находится в пределах 90° по обе стороны от своего вектора нормали.

-

По сути, нам нужно получить вектор нормали от врага (т.е. состоящий из направления и расстояния видимости) - и затем нам нужно получить вектор игрока к врагу. Затем мы получим точечный_продукт этих векторов, и если результат положительный, то игрок был замечен, а если отрицательный, то нет. Фактический код для работы этой функции представлен - в примере ниже.

-

-

Синтаксис:

-

dot_product(x1, y1, x2, y2)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1The x coordinate of the first vector.
y1The y coordinate of the first vector.
x2The x coordinate of the second vector.
y2The y coordinate of the second vector.
-

-

Возвращается:

-

-

-

Пример:

-

var x1, y1, x2, y2;
x1 = lengthdir_x(1, image_angle);
y1 = lengthdir_y(1, image_angle);
x2 = o_Player.x - x;
y2 = o_Player.y - y;
if dot_product(x1, y1, x2, y2) > 0 seen=true else seen=false;

-

Приведенный выше код создает вектор, используя угол изображения экземпляра, а затем притягивает к себе вектор объекта игрока "o_Player". Наконец, он вычисляет точечное произведение этих двух векторов и, если оно больше 0, устанавливает переменную - "seen" в true, а если оно равно или меньше 0, то устанавливает его в false.

-

-

-

- - - - - diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dot_product_3d.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dot_product_3d.htm index 961f86265..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dot_product_3d.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dot_product_3d.htm @@ -1,102 +0,0 @@ - - - - - dot_product_3d - - - - - - - - - - - -

dot_product_3d

-

Точечное произведение - это величина, выражающая угловое отношение между двумя векторами, которое находится путем взятия двух векторов, их умножения и последующего сложения. Название "точечное произведение" происходит от центрированной точки "-" - которая часто используется для обозначения этой операции (альтернативное название "скалярное произведение" подчеркивает скалярную, а не векторную природу результата).

-

Фактическая математическая формула может быть записана следующим образом:

-

Dot Product formula

-

В 2D точечное произведение векторов a[x1,y1] и b[x2,y2] равно x1x2 + y1y2, поэтому в 3D точечное произведение векторов a[x1,y1,z1] и b[x1,y1,z1] равно x1x2 + y1y2 + z1z2. Таким образом, dot_product_3d в GameMaker вычисляется как:

-

a · b = (x1*x2) + (y1*y2) + (z1*z2);

-

Любопытной особенностью точечного произведения является его связь с углом, образованным входными векторами, который можно выразить как:

-

a · b = (length of a) * (length of b) * cos(angle)

-

То есть, точечное произведение двух векторов будет равно косинусу угла между этими векторами, умноженному на длину каждого из них. Вот изображение для иллюстрации:

-

Dot Product ilustration

-

ПРИМЕЧАНИЕ: Более подробную информацию о векторах см. здесь.

-

Есть несколько вещей, которые мы теперь можем определить по любым двум векторам в зависимости от результата их точечного произведения:

-
    -
  • Если a и b перпендикулярны (находятся под углом 90 градусов друг к другу), результат точечного произведения будет равен нулю, потому что cos(ang) будет равен нулю.
  • -
  • Если угол между a и b меньше 90 градусов, то точечное произведение будет положительным (больше нуля), так как cos(ang) будет положительным.
  • -
  • Если угол между a и b больше 90 градусов, то точечное произведение будет отрицательным (меньше нуля), так как cos(ang) будет отрицательным.
  • -
-

Что же это значит для тех из нас, кто создает игры? Эта математическая зависимость может быть использована в довольно многих обстоятельствах, но лучший способ увидеть ее - построить реальный сценарий и посмотреть, что происходит. Один из самых простых - способов сделать это - сгенерировать простую проверку "высоты" для врага, скажем, в платформенной игре, чтобы враг "видел" игрока, если он находится выше плоскости, образованной вектором нормали врага и 3d-полом.

-

По сути, мы получаем вектор нормали от врага, перпендикулярный полу, а затем мы - получаем вектор игрока к врагу. Затем мы получим точечный_продукт этих векторов, и если результат положительный, то игрок находится "выше" плоскости пола противника, а если отрицательный, то ниже. Фактический код для обеспечения работы - приведен в примере ниже.

-

-

Синтаксис:

-

dot_product_3d(x1, y1, z1, x2, y2, z2)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1The x coordinate of the first vector.
y1The y coordinate of the first vector.
z1The z coordinate of the first vector.
x2The x coordinate of the second vector.
y2The y coordinate of the second vector.
z2The z coordinate of the second vector.
-

-

Возвращается:

-

-

-

Пример:

-

var x1, y1, x2, y2;
x1 = 0;
y1 = 1;
z1 = 0;
x2 = o_Player.x - x;
y2 = o_Player.y - y;
z2 = o_Player.z - z; if dot_product_3d(x1, y1, z1, x2, y2, z2) > 0 above=true else above=false;

-

Приведенный выше код создает вектор нормали вдоль оси y (вверх) экземпляра, а затем притягивает к себе вектор объекта игрока "o_Player". Наконец, он вычисляет точечное произведение этих двух векторов и, если оно больше 0, устанавливает переменную - "above" в true, а если она меньше или равна 0, то устанавливает ее в false.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dot_product_3d_normalised.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dot_product_3d_normalised.htm index 79f7ca2b8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dot_product_3d_normalised.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dot_product_3d_normalised.htm @@ -1,90 +0,0 @@ - - - - - - dot_product_3d_normalised - - - - - - - - - - - -

dot_product_3d_normalised

-

Точечное произведение - это величина, выражающая угловое отношение между двумя векторами, которое находится путем взятия двух векторов, их умножения и последующего сложения. Название "точечное произведение" происходит от центрированной точки "-" - которая часто используется для обозначения этой операции (альтернативное название "скалярное произведение" подчеркивает скалярную, а не векторную природу результата).

-

Фактическая математическая формула может быть записана следующим образом:

-

Dot Product formula

-

В 2D точечное произведение векторов a[x1,y1] и b[x2,y2] равно x1x2 + y1y2, поэтому в 3D точечное произведение векторов a[x1,y1,z1] и b[x1,y1,z1] равно x1x2 + y1y2 + z1z2. Таким образом, dot_product_3d в GameMaker вычисляется как:

-

a · b = (x1*x2) + (y1*y2) + (z1*z2);

-

Что насчет нормализованного точечного произведения? Нормализованное точечное произведение было скорректировано таким образом, чтобы вернуть возвращаемое значение в диапазон от -1 до 1 (более подробная информация приведена в разделе " Векторы" ). - что исключительно полезно во многих обстоятельствах, особенно при работе с освещением и другими 3D-функциями.

-

-

Синтаксис:

-

dot_product_3d_normalised(x1, y1, z1, x2, y2, z2)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1The x coordinate of the first vector.
y1The y coordinate of the first vector.
z1The z coordinate of the first vector.
x2The x coordinate of the second vector.
y2The y coordinate of the second vector.
z2The z coordinate of the second vector.
-

-

Возвращается:

-

-

-

Пример:

-

var x1, y1, x2, y2;
x1 = 0;
y1 = 1;
z1 = 0;
x2 = o_Player.x - x;
y2 = o_Player.y - y;
z2 = o_Player.z - z;
if dot_product_3d_normalised(x1, y1, z1, x2, y2, z2) > 0 above=true else above=false;

-

Приведенный выше код создает вектор нормали вдоль оси y (вверх) экземпляра, а затем притягивает к себе вектор объекта игрока "o_Player". Наконец, он вычисляет точечное произведение этих двух векторов и, если оно больше 0, устанавливает переменную - "above" в true, а если она меньше или равна 0, то устанавливает ее в false.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dot_product_normalised.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dot_product_normalised.htm index 8194eb7bc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dot_product_normalised.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dot_product_normalised.htm @@ -1,80 +0,0 @@ - - - - - - dot_product_normalised - - - - - - - - - - - -

dot_product_normalised

-

Точечное произведение - это величина, выражающая угловое отношение между двумя векторами, которое находится путем взятия двух векторов, их умножения и последующего сложения. Название "точечное произведение" происходит от центрированной точки "-" - которая часто используется для обозначения этой операции (альтернативное название "скалярное произведение" подчеркивает скалярную, а не векторную природу результата).

-

Фактическая математическая формула может быть записана следующим образом:

-

Так, в 2D точечное произведение векторов a[x1,y1] и b[x2,2] равно x1x2 + y1y2, что означает, что точечный_продукт в GameMaker вычисляется как:

-

a · b = (x1*x2)+(y1*y2);

-

Что насчет нормализованного точечного произведения? Нормализованное точечное произведение было скорректировано таким образом, чтобы вернуть возвращаемое значение в диапазон от -1 до 1 (более подробную информацию см. в разделе " Векторы" ), что исключительно полезно во многих обстоятельствах, особенно при работе с освещением и другими 3D-функциями.

-

-

Синтаксис:

-

dot_product_normalised(x1, y1, x2, y2)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1The x coordinate of the first vector.
y1The y coordinate of the first vector.
x2The x coordinate of the second vector.
y2The y coordinate of the second vector.
-

-

Возвращается:

-

-

-

Пример:

-

var x1, y1, x2, y2;
x1 = lengthdir_x(1, image_angle);
y1 = lengthdir_y(1, image_angle);
x2 = o_Player.x - x;
y2 = o_Player.y - y;
if dot_product_normalised(x1, y1, x2, y2) > 0 seen=true else seen=false;

-

Приведенный выше код создает вектор, используя угол изображения экземпляра, а затем притягивает к себе вектор объекта игрока "o_Player". Наконец, он вычисляет точечное произведение этих двух векторов и, если оно больше 0, устанавливает переменную - "seen" в true, а если оно равно или меньше 0, то устанавливает его в false.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dsin.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dsin.htm index ccfa4d96a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dsin.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dsin.htm @@ -1,61 +0,0 @@ - - - - - dsin - - - - - - - - - - - -

dsin

-

В прямоугольном треугольнике dsin(val) = Противоположность / Гипотенуза, где "val" - один из трех углов.

-

ПРИМЕЧАНИЕ: Эта функция принимает значение в градусах, а не в радианах

-

-

Синтаксис:

-

dsin(val);

- - - - - - - - - - - -
АргументТипОписание
valThe angle (in degrees) to return the sine of.
-

-

Возвращается:

-

-

-

Пример:

-

val = dsin(90);

-

Это установит значение "val" равным 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dtan.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dtan.htm index c6b1c6e6e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dtan.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/dtan.htm @@ -1,65 +0,0 @@ - - - - - - dtan - - - - - - - - - - - -

dtan

-

В прямоугольном треугольнике dtan(val) = Противоположный / Смежный, где "val" - один из трех углов.

-

ПРИМЕЧАНИЕ: Огромное количество значений (например, 90 или -90) будут ошибочными в этой функции из-за того, что они возвращаются в бесконечность, графическое представление этого даст асимптоты при этих значениях.

-

ПРИМЕЧАНИЕ: Эта функция принимает значение в градусах, а не в радианах

-

-

Синтаксис:

-

dtan(val);

- - - - - - - - - - - - - -
АргументТипОписание
valРеальноThe angle (in degrees) to return the tangent of.
-

-

Возвращается:

-

Real

-

-

Пример:

-

val = dtan(45);

-

Это установит значение "val" равным 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/lengthdir_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/lengthdir_x.htm index aee1d700f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/lengthdir_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/lengthdir_x.htm @@ -1,66 +0,0 @@ - - - - - lengthdir_x - - - - - - - - - - - -

lengthdir_x

-

Эта функция используется для получения x-компоненты позиции "len" пикселей от начальной точки и в направлении "dir". Если представить круг вокруг вашего объекта, а затем представить точку в любом месте этого круга, то для перемещения - в эту точку, нам нужно переместить объект на столько-то пикселей в этом направлении... поэтому эта функция (при использовании с функцией lengthdir_y()) получает положение этой точки на окружности для использования в коде экземпляра. См. - изображение ниже для подробностей:

-

Lengthdir_y example

-

Синтаксис:

-

lengthdir_x(len, dir);

- - - - - - - - - - - - - - - -
АргументТипОписание
lenThe length away of the point to return.
dirThe direction of the point to return.
-

-

Возвращается:

-

-

-

Пример:

-

var _xx = x + lengthdir_x(64, image_angle);
var _yy = y + lengthdir_y(64, image_angle);
instance_create_layer(_xx, _yy, "Bullets", obj_bullet);

-

Это создаст экземпляр пули по адресу (_xx, _yy), который будет находиться на расстоянии 64 пикселей от родительского экземпляра в направлении угла изображения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/lengthdir_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/lengthdir_y.htm index 93e8b7876..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/lengthdir_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/lengthdir_y.htm @@ -1,66 +0,0 @@ - - - - - lengthdir_y - - - - - - - - - - - -

lengthdir_y

-

Эта функция используется для получения компонента y позиции "len" пикселей от начальной точки и в направлении "dir". Если представить круг вокруг вашего объекта, а затем представить точку в любом месте этого круга, то для перемещения - в эту точку, нам нужно переместить объект на столько-то пикселей в этом направлении... поэтому эта функция (при использовании с функцией lengthdir_x()) получает положение этой точки на окружности для использования в коде экземпляра. См. - изображение ниже для подробностей:

-

Lengthdir_y example

-

Синтаксис:

-

lengthdir_y(len, dir);

- - - - - - - - - - - - - - - -
АргументТипОписание
lenThe length away of the point to return.
dirThe direction of the point to return.
-

-

Возвращается:

-

-

-

Пример:

-

var _xx = x + lengthdir_x(64, image_angle);
var _yy = y + lengthdir_y(64, image_angle);
instance_create_layer(_xx, _yy, "Bullets", obj_bullet);

-

Это создаст экземпляр пули по адресу (_xx, _yy), который будет находиться на расстоянии 64 пикселей от родительского экземпляра в направлении угла изображения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/point_direction.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/point_direction.htm index 65943a4ca..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/point_direction.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/point_direction.htm @@ -1,80 +0,0 @@ - - - - - - point_direction - - - - - - - - - - - -

point_direction

-

Эта функция возвращает направление вектора, образованного указанными компонентами [x1,y1] и [x2,y2], относительно фиксированных координат x/y комнаты. Например, на изображении ниже, если мы хотим получить направление от позиции корабля игрока к позиции врага, чтобы мы могли выпустить ракету по врагу, мы используем эту функцию (точный код приведен в примере под изображением):

-

Point direction example

-

-

Синтаксис:

-

point_direction(x1, y1, x2, y2)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1The x coordinate of the first component of the vector
y1The y coordinate of the first component of the vector
x2The x coordinate of the second component of the vector
y2The y coordinate of the second component of the vector
-

-

Возвращается:

-

-

-

Пример:

-

var ex, ey;
- ex = instance_nearest(x, y, enemy).x;
- ey = instance_nearest(x, y, enemy).y;
- with (instance_create_layer(x, y, "Bullets", obj_Missile))
- {
-     direction = point_direction(x, y, _ex, _ey);
- }

-

Приведенный выше код получит координаты x и y ближайшего врага и затем передаст их объекту пули, чтобы использовать их в функции point_direction для правильной установки направления движения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/point_distance.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/point_distance.htm index b1fe76519..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/point_distance.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/point_distance.htm @@ -1,80 +0,0 @@ - - - - - - point_distance - - - - - - - - - - - -

point_distance

-

Эта функция возвращает длину вектора, образованного заданными компонентами [x1,y1] и [x2,y2]. Например, на изображении ниже, если мы хотим получить расстояние между позицией корабля игрока и позицией врага, чтобы рассчитать, достаточно ли близко находится враг, чтобы стрелять по нему, мы используем эту функцию (точный код приведен в примере под изображением):

-

Point distance example

-

-

Синтаксис:

-

point_distance(x1, y1, x2, y2);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1The x coordinate of the first component of the vector
y1The y coordinate of the first component of the vector
x2The x coordinate of the second component of the vector
y2The y coordinate of the second component of the vector
-

-

Возвращается:

-

-

-

Пример:

-

var ex, ey;
- ex = instance_nearest(x, y, enemy).x;
- ey = instance_nearest(x, y, enemy).y;
- if (point_distance(x, y, ex, ey) < 200)
- {
-     instance_create_layer(x, y, "Bullets", obj_Missile)
- }

-

Приведенный выше код получит координаты x и y ближайшего врага, а затем использует их для проверки расстояния (длины) вектора, образованного им и координатами игрока. Если значение меньше 200, объект игрока создаст экземпляр "obj_Missile".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/point_distance_3d.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/point_distance_3d.htm index 46725bcd6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/point_distance_3d.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/point_distance_3d.htm @@ -1,89 +0,0 @@ - - - - - - point_distance_3d - - - - - - - - - - - -

point_distance_3d

-

Эта функция принимает заданные компоненты вектора и возвращает длину (расстояние) вектора. Она работает точно так же, как point_distance() но с добавлением факторизации значения z (глубины) для использования в трехмерном пространстве.

-

-

Синтаксис:

-

point_distance_3d(x1, y1, z1, x2, y2, z2);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1The x coordinate of the first component of the vector
y1The y coordinate of the first component of the vector
z1The z coordinate of the first component of the vector
x2The x coordinate of the second component of the vector
y2The y coordinate of the second component of the vector
z2The z coordinate of the second component of the vector
-

-

Возвращается:

-

-

-

Пример:

-

var inst, ex, ey, ez;
- inst = instance_nearest(x, y, enemy);
- if (instance_exists(inst))
- {
-     if (point_distance_3d(x, y, z, _nearest.x, _nearest.y, _nearest.z) < 200)
-     {
-         instance_create_layer(x, y, "Bullets", obj_missile);
-     }
- }

-

Приведенный выше код получит координаты x и y и z ближайшего врага, а затем использует их для проверки расстояния (длины) вектора, образованного им и координатами игрока. Если значение меньше 200, объект игрока создаст экземпляр "obj_Missile".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/radtodeg.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/radtodeg.htm index 26bb3531f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/radtodeg.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/radtodeg.htm @@ -1,64 +0,0 @@ - - - - - - - radtodeg - - - - - - - - - - - -

radtodeg

-

После того как вы произвели вычисления с помощью sin, cos и т.д., результат будет в радианах. Это не всегда то, что вам нужно, поэтому для преобразования радианов в градусы мы используем эту функцию. Например, radtodeg(sin(180)) вернет -45 градусов. - Эта функция переводит радианы в градусы по формуле:

-

angle_degrees = angle_radians * 180 / pi;

-

-

Синтаксис:

-

radtodeg(rad);

- - - - - - - - - - - -
АргументТипОписание
radThe radians to convert.
-

-

Возвращается:

-

-

-

Пример:

-

val = radtodeg( pi );

-

Это установит значение val на 180.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/sin.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/sin.htm index 34054b4f9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/sin.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/sin.htm @@ -1,64 +0,0 @@ - - - - - - - - sin - - - - - - - - - - - -

sin

-

В прямоугольном треугольнике sin(val) = Противоположность / Гипотенуза, где val - один из трех углов.

-

ПРИМЕЧАНИЕ: Эта функция принимает значение в радианах, а не в градусах.

-

-

Синтаксис:

-

sin(val);

- - - - - - - - - - - -
АргументТипОписание
valThe angle (in radians) to return the sine of.
-

-

Возвращается:

-

-

-

Пример:

-

val = sin( pi/2 );

-

Это установит значение val на 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/tan.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/tan.htm index d5c960f3a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/tan.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Angles_And_Distance/tan.htm @@ -1,63 +0,0 @@ - - - - - - tan - - - - - - - - - - - -

tan

-

В прямоугольном треугольнике tan(val) = Opposite / Adjacent, где val - один из трех углов.

-

ПРИМЕЧАНИЕ Эта функция принимает значение в радианах, а не в градусах.

-

ПРИМЕЧАНИЕ: Pi/2, (3 pi/2), -pi/2 и огромное количество других значений будут ошибочными с этой функцией из-за их возвращения в бесконечность, графическое представление этого даст асимптоты при этих значениях.

-

-

Синтаксис:

-

tan(val);

- - - - - - - - - - - -
АргументТипОписание
valThe angle (in radians) to return the tangent of.
-

-

Возвращается:

-

-

-

Пример:

-

val = tan( pi );

-

Это установит значение val равным 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/Date_And_Time.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/Date_And_Time.htm index 53638b621..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/Date_And_Time.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/Date_And_Time.htm @@ -1,106 +0,0 @@ - - - - - - Дата и время - - - - - - - - - - -

Дата и время

-

ВGameMaker есть множество функций и переменных, связанных с получением даты и времени и вычислением других значений на их основе. По умолчанию эти функции возвращают местное время, установленное системой, но вы можете использовать следующую функцию для переключения между местным и UTC временем:

- -

-

Следующие встроенные переменные могут быть использованы для получения определенных компонентов даты и времени:

- -

-

Следующие функции можно использовать для получения определенных компонентов даты и времени, а также для создания новых или для получения промежутка дней/часов между двумя заданными датами и т.д....

- -

-

У нас также есть две специальные функции времени, которые обеспечивают более высокий уровень точности и контроля при ведении игры:

- -

-

Если вы ищете функции, связанные с таймингом, см. раздел Источники времени.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_day.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_day.htm index 95be311f3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_day.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_day.htm @@ -1,47 +0,0 @@ - - - - - current_day - - - - - - - - - - -

current_day

-

Эта переменная, доступная только для чтения, возвращает день в виде значения от 1 до 31, в зависимости от месяца.

-

-

Синтаксис:

-

current_day

-

-

Возвращается:

-

-

-

Пример:

-

draw_text(32, 32, "Today is " + string(current_day) + "/" + string (current_month) + "/" + string(current_year) +".");

-

Приведенный выше код выводит день, месяц и год.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_hour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_hour.htm index 49d44c837..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_hour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_hour.htm @@ -1,47 +0,0 @@ - - - - - current_hour - - - - - - - - - - -

current_hour

-

Эта переменная, доступная только для чтения, возвращает час, который соответствует текущему моменту, основываясь на часовом поясе по умолчанию для системы (т.е. местное время). Вы можете изменить используемый базовый часовой пояс с помощью функции date_set_timezone().

-

-

Синтаксис:

-

current_hour

-

-

Возвращается:

-

-

-

Пример:

-

draw_text(32, 32, "The time is " + string(current_hour) + ":" + string(current_minute) + "." + string(current_second));

-

Приведенный выше код выводит на экран текущее международное время.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_minute.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_minute.htm index 72b98a13c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_minute.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_minute.htm @@ -1,47 +0,0 @@ - - - - - current_minute - - - - - - - - - - -

current_minute

-

Эта переменная, доступная только для чтения, возвращает минуты, соответствующие текущему моменту.

-

-

Синтаксис:

-

current_minute

-

-

Возвращается:

-

-

-

Пример:

-

draw_text(32, 32, "The time is " + string(current_hour) + ":" + string(current_minute) + "." + string(current_second));

-

Приведенный выше код выводит на экран текущее международное время.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_month.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_month.htm index fcd6a164a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_month.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_month.htm @@ -1,47 +0,0 @@ - - - - - current_month - - - - - - - - - - -

current_month

-

Эта переменная, доступная только для чтения, возвращает текущий месяц в виде числового значения, где 1 - январь, а 12 - декабрь.

-

-

Синтаксис:

-

current_month

-

-

Возвращается:

-

-

-

Пример:

-

draw_text((32, 32, "Today is " + string(current_day) + "/" + string (current_month) + "/" + string(current_year) +".");

-

Приведенный выше код выводит день, месяц и год.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_second.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_second.htm index 0084001f2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_second.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_second.htm @@ -1,47 +0,0 @@ - - - - - current_second - - - - - - - - - - -

current_second

-

Эта переменная, доступная только для чтения, возвращает секунды, соответствующие текущему моменту.

-

-

Синтаксис:

-

current_second

-

-

Возвращается:

-

-

-

Пример:

-

draw_text(32, 32, "The time is " + string(current_hour) + ":" + string(current_minute) + "." + string(current_second));

-

Приведенный выше код выводит на экран текущее международное время.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_time.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_time.htm index 00711614c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_time.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_time.htm @@ -1,51 +0,0 @@ - - - - - - current_time - - - - - - - - - - -

current_time

-

Эта переменная, доступная только для чтения, возвращает количество миллисекунд, прошедших с момента запуска игры.

-

-

Синтаксис:

-

current_time

-

-

Возвращается:

-

-

-

Пример:

-

if (current_time > 600000)
- {
-     msg = show_question_async("Would you like to rate?");
- }

-

Приведенный выше код проверяет, не прошло ли более 10 минут, прежде чем задать вопрос пользователю.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_weekday.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_weekday.htm index 6f55968f9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_weekday.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_weekday.htm @@ -1,59 +0,0 @@ - - - - - - current_weekday - - - - - - - - - - -

current_weekday

-

Эта переменная, доступная только для чтения, возвращает день недели в виде значения, где воскресенье - 0, а суббота - 6.

-

-

Синтаксис:

-

current_weekday

-

-

Возвращается:

-

-

-

Пример:

-

var day;
- switch(current_weekday)
- {
-     case 0: day = "Sunday"; break;
-     case 1: day = "Monday"; break;
-     case 2: day = "Tuesday"; break;
-     case 3: day = "Wednesday"; break;
-     case 4: day = "Thursday"; break;
-     case 5: day = "Friday"; break;
-     case 6: day = "Saturday"; break;
- }
- draw_text(32, 32, "Today is " + day +".");

-

Приведенный выше код использует значение current_weekday для установки переменной с правильным днем в тексте, а затем отрисовывает его для просмотра пользователем.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_year.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_year.htm index e6f0bb2be..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_year.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/current_year.htm @@ -1,47 +0,0 @@ - - - - - current_year - - - - - - - - - - -

current_year

-

Эта переменная, доступная только для чтения, возвращает текущий год.

-

-

Синтаксис:

-

current_year

-

-

Возвращается:

-

-

-

Пример:

-

draw_text((32, 32, "Today is " + string(current_day) + "/" + string (current_month) + "/" + string(current_year) +".");

-

Приведенный выше код выводит день, месяц и год.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_compare_date.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_compare_date.htm index 4032b9f10..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_compare_date.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_compare_date.htm @@ -1,68 +0,0 @@ - - - - - - date_compare_date - - - - - - - - - - - -

date_compare_date

-

С помощью этой функции вы можете проверить две даты, чтобы узнать, какая из них раньше или позже другой. Функция возвращает -1, если дата1 раньше, 0, если обе даты одинаковые, и 1, если дата1 позже.

-

-

Синтаксис:

-

date_compare_date( date1, date2 );

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
date1Дата-таймThe first date.
date2Дата-таймThe date to compare it to.
-

-

Возвращается:

-

Real

-

-

Пример:

-

d = date_compare_date(date_create_datetime(2011, 9, 15, 11, 4, 0), date_current_datetime());

-

Это установит "d" в соответствующее значение в зависимости от того, какая из дат является самой ранней, скорее всего 1, так как текущая дата находится дальше, чем 15 сентября 2011 года.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_compare_datetime.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_compare_datetime.htm index b25c1cd06..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_compare_datetime.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_compare_datetime.htm @@ -1,65 +0,0 @@ - - - - - - date_compare_datetime - - - - - - - - - - - -

date_compare_datetime

-

С помощью этой функции вы можете проверить две даты и время, чтобы узнать, какая из них раньше или позже другой. Функция возвращает -1, если дата1 раньше, 1, если дата1 позже, и 0, если они одинаковы, хотя, поскольку при этом учитывается и время, 0 при совпадении встречается очень редко (буквально должна быть одна и та же секунда одного и того же дня одного и того же месяца одного и того же года, чтобы вернуть 0).

-

-

Синтаксис:

-

date_compare_datetime(date1, date2);

- - - - - - - - - - - - - - - -
АргументТипОписание
date1The first datetime.
date2The datetime to compare it to.
-

-

Возвращается:

-

Real

-

-

Пример:

-

d = date_compare_datetime(date_create_datetime(2011, 9, 15, 11, 4, 0), date_current_datetime());

-

Это установит d в соответствующее значение в зависимости от того, какая из дат является самой ранней, скорее всего -1, так как текущая дата находится дальше, чем 15 сентября 2011 года.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_compare_time.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_compare_time.htm index 4388a7615..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_compare_time.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_compare_time.htm @@ -1,71 +0,0 @@ - - - - - - date_compare_time - - - - - - - - - - - - - - - - -

date_compare_time

-

С помощью этой функции вы можете проверить две даты и время, чтобы узнать, у какой из них временной компонент раньше или позже, чем у другой. Функция возвращает -1, если datetime1 раньше, 1, если datetime1 позже, и 0, если они одинаковы, и она игнорирует дату, - поэтому буквально только то, какое из времен находится дальше в данный день.

-

-

Синтаксис:

-

date_compare_time(datetime1, datetime2);

- - - - - - - - - - - - - - - -
АргументТипОписание
datetime1The first datetime.
datetime2The datetime to compare the first one to.
-

-

Возвращается:

-

-

-

Пример:

-

d = date_compare_time(date_create_datetime( 2011, 9, 15, 11, 4, 0 ), date_current_datetime());

-

Это установит "d" в соответствующее значение в зависимости от того, какое из времен было самым ранним. В принципе, если текущее время позже 11:04 утра, то возвращается 1. Если раньше, то -1. Если время 11:04, то возвращается 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_create_datetime.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_create_datetime.htm index f6d040d81..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_create_datetime.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_create_datetime.htm @@ -1,81 +0,0 @@ - - - - - - date_create_datetime - - - - - - - - - - - -

date_create_datetime

-

Эта функция создаст значение datetime из компонента, заданного в качестве аргументов.

-

-

Синтаксис:

-

date_create_datetime(year, month, day, hour, minute, second);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
yearThe year to set.
monthThe month to set.
dayThe day to set.
hourThe hour to set.
minuteThe minute to set.
secondThe second to set.
-

-

Возвращается:

-

Datetime Real

-

-

Пример:

-

mydatetime = date_create_datetime(2011, 9, 15, 9, 43, 30);

-

Это позволит установить "mydatetime" на заданную дату и время и сохранить возвращаемое значение в переменной "mydatetime".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_current_datetime.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_current_datetime.htm index ca29d262a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_current_datetime.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_current_datetime.htm @@ -1,51 +0,0 @@ - - - - - - date_current_datetime - - - - - - - - - - - -

date_current_datetime

-

Возвращает значение даты-времени текущего момента. Возвращаемое время основано на часовом поясе по умолчанию для системы (т.е. местное время). Вы можете изменить используемый базовый часовой пояс с помощью функции date_set_timezone().

-

-

Синтаксис:

-

date_current_datetime();

-

-

Возвращается:

-

Datetime

-

-

Пример:

-

myhour = date_get_hour(date_current_datetime());
- myday = date_get_day(date_current_datetime());

-

Это установит локальную переменную myhour в час текущего времени, а myday - в день текущей даты.

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_date_of.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_date_of.htm index bdd59fafd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_date_of.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_date_of.htm @@ -1,61 +0,0 @@ - - - - - - date_date_of - - - - - - - - - - - -

date_date_of

-

Возвращает значение даты для заданного времени.

-

-

Синтаксис:

-

date_date_of(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe datetime to extract the date from.
-

-

Возвращается:

-

-

-

Пример:

-

today = date_date_of(date_current_datetime());

-

Это вернет только текущую дату и сохранит значение в переменной "today".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_date_string.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_date_string.htm index dbc84a5f2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_date_string.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_date_string.htm @@ -1,66 +0,0 @@ - - - - - - date_date_string - - - - - - - - - - - - - - - - -

date_date_string

-

С помощью этой функции вы можете создать строку, содержащую заданную дату, отформатированную как день/месяц/год.

-

-

Синтаксис:

-

date_date_string(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe date to use.
-

-

Возвращается:

-

-

-

Пример:

-

str = date_date_string(date_current_datetime());
draw_text(32, 32, str);

-

В этом случае "str" будет содержать форматированную строку текущей даты и времени, отображаемую системой.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_datetime_string.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_datetime_string.htm index b84520993..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_datetime_string.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_datetime_string.htm @@ -1,66 +0,0 @@ - - - - - - date_datetime_string - - - - - - - - - - - - - - - - -

date_datetime_string

-

С помощью этой функции можно создать строку, содержащую заданную дату, отформатированную для системы или устройства, на котором запущена игра в момент вызова функции.

-

-

Синтаксис:

-

date_datetime_string(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe date to use.
-

-

Возвращается:

-

-

-

Пример:

-

str = date_datetime_string(date_current_datetime());

-

Это установит "str" на что-то вроде "15 сентября 2011, 11:33.00" в зависимости от настроек системы для отображения даты/времени и текущей даты и времени.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_day_span.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_day_span.htm index 0947977f9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_day_span.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_day_span.htm @@ -1,70 +0,0 @@ - - - - - - date_day_span - - - - - - - - - - - - - - - - -

date_day_span

-

С помощью этой функции вы можете получить количество дней между двумя датами. Это значение всегда положительное, а неполные дни будут возвращены в виде дроби.

-

-

Синтаксис:

-

date_day_span(date1, date2);

- - - - - - - - - - - - - - - -
АргументТипОписание
date1The first datetime.
date2The datetime to compare it to.
-

-

Возвращается:

-

-

-

Пример:

-

diff = date_day_span(date_create_datetime(2011, 9, 15, 11, 4, 0), date_current_datetime());

-

Это установит diff на количество дней между 15 сентября 2011 года, 11:04.0 и текущей датой и временем.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_days_in_month.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_days_in_month.htm index 3201bef30..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_days_in_month.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_days_in_month.htm @@ -1,66 +0,0 @@ - - - - - - date_days_in_month - - - - - - - - - - - - - - - - -

date_days_in_month

-

С помощью этой функции вы можете получить количество дней в данном месяце - 28, 29, 30 или 31.

-

-

Синтаксис:

-

date_days_in_month(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe date to use.
-

-

Возвращается:

-

-

-

Пример:

-

days = date_days_in_month(date_current_datetime());

-

Это установит "days" на количество дней в текущем месяце.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_days_in_year.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_days_in_year.htm index 302471e3f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_days_in_year.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_days_in_year.htm @@ -1,66 +0,0 @@ - - - - - - date_days_in_year - - - - - - - - - - - - - - - - -

date_days_in_year

-

С помощью этой функции вы можете получить количество дней, которое имеет данный год, возвращая 365 для обычного года и 366 для високосного.

-

-

Синтаксис:

-

date_days_in_year(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe date to use.
-

-

Возвращается:

-

-

-

Пример:

-

days = date_days_in_year(date_current_datetime());

-

В этом случае значение "days" будет равно количеству дней в текущем году.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_day.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_day.htm index ccd1c0c0b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_day.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_day.htm @@ -1,66 +0,0 @@ - - - - - - date_get_day - - - - - - - - - - - - - - - - -

date_get_day

-

Эта функция возвращает день (от 1 до 31) заданного времени даты.

-

-

Синтаксис:

-

date_get_day(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe date to check.
-

-

Возвращается:

-

-

-

Пример:

-

myday = date_get_day( date_current_datetime() );

-

Это установит "myday" на текущий день.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_day_of_year.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_day_of_year.htm index 5dd1f98c5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_day_of_year.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_day_of_year.htm @@ -1,66 +0,0 @@ - - - - - - date_get_day_of_year - - - - - - - - - - - - - - - - -

date_get_day_of_year

-

Эта функция возвращает день (от 1 до 366) в пределах года заданного времени даты.

-

-

Синтаксис:

-

date_get_day_of_year( date );

- - - - - - - - - - - -
АргументТипОписание
dateThe date to check.
-

-

Возвращается:

-

-

-

Пример:

-

mydayyear = date_get_day_of_year(date_current_datetime());

-

Это установит mydayyear на текущий день года.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_hour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_hour.htm index 5324ef3b0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_hour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_hour.htm @@ -1,66 +0,0 @@ - - - - - - date_get_hour - - - - - - - - - - - - - - - - -

date_get_hour

-

Эта функция возвращает час заданного значения времени.

-

-

Синтаксис:

-

date_get_hour(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe datetime to check.
-

-

Возвращается:

-

-

-

Пример:

-

myhour = date_get_hour(date_current_datetime());

-

Это установит "myhour" в текущий час.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_hour_of_year.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_hour_of_year.htm index b0ebd3ec7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_hour_of_year.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_hour_of_year.htm @@ -1,66 +0,0 @@ - - - - - - date_get_hour_of_year - - - - - - - - - - - - - - - - -

date_get_hour_of_year

-

Эта функция возвращает час заданного значения времени в пределах года (из общего числа часов за год, с учетом високосных лет).

-

-

Синтаксис:

-

date_get_hour_of_year(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe datetime to check.
-

-

Возвращается:

-

-

-

Пример:

-

myhouryear = date_get_hour_of_year(date_current_datetime());

-

Это установит "myhouryear" на текущий час года.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_minute.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_minute.htm index f107e8bfc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_minute.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_minute.htm @@ -1,66 +0,0 @@ - - - - - - date_get_minute - - - - - - - - - - - - - - - - -

date_get_minute

-

Эта функция возвращает минуту заданного значения времени.

-

-

Синтаксис:

-

date_get_minute(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe datetime to check.
-

-

Возвращается:

-

-

-

Пример:

-

myminute = date_get_minute(date_current_datetime());

-

Это установит "myminute" на текущую минуту.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_minute_of_year.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_minute_of_year.htm index 0b2add849..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_minute_of_year.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_minute_of_year.htm @@ -1,66 +0,0 @@ - - - - - - date_get_minute_of_year - - - - - - - - - - - - - - - - -

date_get_minute_of_year

-

Эта функция возвращает минуту заданного значения времени в пределах года (из общего количества минут за год, с учетом високосных лет).

-

-

Синтаксис:

-

date_get_minute_of_year(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe date to check.
-

-

Возвращается:

-

-

-

Пример:

-

myminuteyear = date_get_minute_of_year(date_current_datetime());

-

Это установит myminuteyear на текущую минуту года.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_month.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_month.htm index f9e5116b4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_month.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_month.htm @@ -1,66 +0,0 @@ - - - - - - date_get_month - - - - - - - - - - - - - - - - -

date_get_month

-

Эта функция возвращает месяц заданного значения времени.

-

-

Синтаксис:

-

date_get_month(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe datetime to check.
-

-

Возвращается:

-

-

-

Пример:

-

mymonth = date_get_month(date_current_datetime());

-

В этом случае mymonth будет установлен на текущий месяц.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_second.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_second.htm index 7f1c25f35..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_second.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_second.htm @@ -1,66 +0,0 @@ - - - - - - date_get_second - - - - - - - - - - - - - - - - -

date_get_second

-

Эта функция возвращает секунду заданного значения времени.

-

-

Синтаксис:

-

date_get_second(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe datetime to check.
-

-

Возвращается:

-

-

-

Пример:

-

mysecond = date_get_second(date_current_datetime());

-

Это установит значение mysecond в текущую секунду.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_second_of_year.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_second_of_year.htm index 331cc6c65..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_second_of_year.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_second_of_year.htm @@ -1,66 +0,0 @@ - - - - - - date_get_second_of_year - - - - - - - - - - - - - - - - -

date_get_second_of_year

-

Эта функция возвращает секунду заданного значения времени в пределах года (из общего числа секунд для года с учетом високосных лет).

-

-

Синтаксис:

-

date_get_second_of_year( date );

- - - - - - - - - - - -
АргументТипОписание
dateThe date to check.
-

-

Возвращается:

-

-

-

Пример:

-

mysecondyear = date_get_second_of_year(date_current_datetime());

-

Это установит "mysecondyear" в текущее второе число года.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_timezone.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_timezone.htm index e1cf91609..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_timezone.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_timezone.htm @@ -1,77 +0,0 @@ - - - - - - date_get_timezone - - - - - - - - - - - -

date_get_timezone

-

Эта функция получает базовый часовой пояс, используемый для всех остальных функций даты и времени. Этот часовой пояс может быть либо локальным (установленным системой), либо UTC, и функция возвращает одну из следующих констант:

- - - - - - - - - - - - - - - - - - - - - - -
Часовой пояс Постоянный
ПостояннаяОписание
timezone_localиспользовать местный часовой пояс, установленный системой
timezone_utcиспользовать всемирное координированное время
-

-

Синтаксис:

-

date_get_timezone();

-

-

Возвращается:

-

Time Zone Constant

-

-

Пример:

-

if (date_get_timezone() != timezone_utc)
- {
-     date_set_timezone(timezone_utc);
- }

-

Этот код проверяет базовую настройку часового пояса для игры и, если она не UTC, то изменяет ее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_week.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_week.htm index 9d91d7af4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_week.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_week.htm @@ -1,65 +0,0 @@ - - - - - - date_get_week - - - - - - - - - - - - - - - -

date_get_week

-

Эта функция возвращает неделю заданного значения времени в пределах года.

-

-

Синтаксис:

-

date_get_week(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe datetime to check.
-

-

Возвращается:

-

-

-

Пример:

-

myweek = date_get_week(date_current_datetime());

-

Это установит значение myweek на текущую неделю.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_weekday.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_weekday.htm index f35823b7d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_weekday.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_weekday.htm @@ -1,66 +0,0 @@ - - - - - - date_get_weekday - - - - - - - - - - - - - - - - -

date_get_weekday

-

Эта функция возвращает значение дня недели для заданного времени. Это будет значение от 0 до 6.

-

-

Синтаксис:

-

date_get_weekday(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe date to check.
-

-

Возвращается:

-

-

-

Пример:

-

myweekday = date_get_weekday(date_current_datetime());

-

Это установит "myweekday" на текущий будний день.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_year.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_year.htm index 70601737e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_year.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_get_year.htm @@ -1,65 +0,0 @@ - - - - - - date_get_year - - - - - - - - - - - - - - - -

date_get_year

-

Эта функция возвращает год заданного времени даты.

-

-

Синтаксис:

-

date_get_year(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe datetime to check.
-

-

Возвращается:

-

-

-

Пример:

-

myyear = date_get_year(date_current_datetime());

-

Это установит "myyear" на текущий год.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_hour_span.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_hour_span.htm index f4f7152fd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_hour_span.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_hour_span.htm @@ -1,70 +0,0 @@ - - - - - - date_hour_span - - - - - - - - - - - - - - - - -

date_hour_span

-

С помощью этой функции вы можете получить количество часов между двумя датами. Это значение всегда положительное, а неполные часы будут возвращены в виде дроби.

-

-

Синтаксис:

-

date_hour_span(date1, date2);

- - - - - - - - - - - - - - - -
АргументТипОписание
date1The first datetime.
date2The datetime to compare the first one to.
-

-

Возвращается:

-

-

-

Пример:

-

diff = date_hour_span(date_create_datetime( 2011, 9, 15, 11, 4, 0 ), date_current_datetime());

-

Это установит "diff" как количество часов между 15 сентября 2011 года, 11:04.0 и текущей датой и временем.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_day.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_day.htm index d02ddf984..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_day.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_day.htm @@ -1,69 +0,0 @@ - - - - - - date_inc_day - - - - - - - - - - - - - - - -

date_inc_day

-

С помощью этой функции вы можете увеличить заданное значение времени на определенное количество дней, и она вернет новое значение времени.

-

-

Синтаксис:

-

date_inc_day(date, amount);

- - - - - - - - - - - - - - - -
АргументТипОписание
dateThe datetime to add to.
amountThe number of days (must be an integer) to add.
-

-

Возвращается:

-

-

-

Пример:

-

mynewdatetime = date_inc_day(date_current_datetime(), 365);

-

Это установит "mynewdatetime" на текущую дату, но с добавлением 365 дней.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_hour.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_hour.htm index f9c6736c0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_hour.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_hour.htm @@ -1,69 +0,0 @@ - - - - - - date_inc_hour - - - - - - - - - - - - - - - -

date_inc_hour

-

С помощью этой функции вы можете увеличить заданное значение времени на определенное количество часов, и она вернет новое значение времени.

-

-

Синтаксис:

-

date_inc_hour(date, amount);

- - - - - - - - - - - - - - - -
АргументТипОписание
dateThe datetime to add to.
amountThe number of hours (must be an integer) to add.
-

-

Возвращается:

-

-

-

Пример:

-

mynewdatetime = date_inc_hour(date_current_datetime(), 24);

-

Это установит mynewdatetime на текущую дату, но с добавлением 24 часов.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_minute.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_minute.htm index c3da2f85e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_minute.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_minute.htm @@ -1,70 +0,0 @@ - - - - - - date_inc_minute - - - - - - - - - - - - - - - - -

date_inc_minute

-

С помощью этой функции вы можете увеличить заданное значение времени на определенное количество минут, и она вернет новое значение времени.

-

-

Синтаксис:

-

date_inc_minute( date, amount );

- - - - - - - - - - - - - - - -
АргументТипОписание
dateThe datetime to add to.
amountThe number of minutes (must be an integer) to add.
-

-

Возвращается:

-

-

-

Пример:

-

mynewdatetime = date_inc_minute(date_current_datetime(), 60);

-

Это установит "mynewdatetime" на текущую дату, но с добавлением 60 минут.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_month.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_month.htm index fae2c6fa0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_month.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_month.htm @@ -1,69 +0,0 @@ - - - - - - date_inc_month - - - - - - - - - - - - - - - -

date_inc_month

-

С помощью этой функции вы можете увеличить заданное значение времени на определенное количество месяцев, и она вернет новое значение времени.

-

-

Синтаксис:

-

date_inc_month( date, amount );

- - - - - - - - - - - - - - - -
АргументТипОписание
dateThe datetime to add to.
amountThe number of months (must be an integer) to add.
-

-

Возвращается:

-

-

-

Пример:

-

mynewdatetime = date_inc_month(date_current_datetime(), 12);

-

Это установит "mynewdatetime" на текущую дату, но с добавлением 12 месяцев.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_second.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_second.htm index 1e82a56e5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_second.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_second.htm @@ -1,69 +0,0 @@ - - - - - - date_inc_second - - - - - - - - - - - - - - - -

date_inc_second

-

С помощью этой функции вы можете увеличить заданное значение datetime на определенное количество секунд, и она вернет новое значение datetime.

-

-

Синтаксис:

-

date_inc_second(date, amount);

- - - - - - - - - - - - - - - -
АргументТипОписание
dateThe datetime to add to.
amountThe number of seconds (must be an integer) to add.
-

-

Возвращается:

-

-

-

Пример:

-

mynewdatetime = date_inc_second(date_current_datetime(), 60);

-

Это установит "mynewdatetime" в текущую дату, но с добавлением 60 секунд.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_week.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_week.htm index 63b9e51b1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_week.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_week.htm @@ -1,69 +0,0 @@ - - - - - - date_inc_week - - - - - - - - - - - - - - - -

date_inc_week

-

С помощью этой функции вы можете увеличить заданное значение времени на определенное количество недель, и она вернет новое значение времени.

-

-

Синтаксис:

-

date_inc_week(date, amount);

- - - - - - - - - - - - - - - -
АргументТипОписание
dateThe datetime to add to.
amountThe number of weeks (must be an integer) to add.
-

-

Возвращается:

-

-

-

Пример:

-

mynewdatetime = date_inc_week(date_current_datetime(), 52);

-

Это установит mynewdatetime на текущую дату, но с добавлением 52 недель.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_year.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_year.htm index af7c2c4fa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_year.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_inc_year.htm @@ -1,69 +0,0 @@ - - - - - - date_inc_year - - - - - - - - - - - - - - - -

date_inc_year

-

С помощью этой функции вы можете увеличить заданное значение времени на определенное количество лет, и она вернет новое значение времени.

-

-

Синтаксис:

-

date_inc_year(date, amount);

- - - - - - - - - - - - - - - -
АргументТипОписание
dateThe datetime to add to
amountThe number of years (must be an integer) to add.
-

-

Возвращается:

-

-

-

Пример:

-

mynewdatetime = date_inc_year(date_current_datetime(), 1000);

-

Это установит mynewdatetime на текущую дату, но с добавлением 1000 лет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_is_today.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_is_today.htm index 8af21cf6e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_is_today.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_is_today.htm @@ -1,64 +0,0 @@ - - - - - - date_is_today - - - - - - - - - - - -

date_is_today

-

Эта функция возвращает true, если заданное значение времени является днем, на который производится проверка (т.е. сегодня), или false в противном случае. Это может быть удобной функцией для таких вещей, как пасхальные яйца в ваших играх, или для разблокировки сезонного контента. Обратите внимание, что на эту функцию влияет установленный часовой пояс (по умолчанию это местное время), который можно изменить с помощью функции date_set_timezone() функция.

-

-

Синтаксис:

-

date_is_today(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe datetime to use.
-

-

Возвращается:

-

-

-

Пример:

-

if date_is_today(global.Halloween)
- {
-     global.Max_Levels = 200;
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_leap_year.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_leap_year.htm index 91045333f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_leap_year.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_leap_year.htm @@ -1,67 +0,0 @@ - - - - - - date_leap_year - - - - - - - - - - - -

date_leap_year

-

Эта функция возвращает значение true, если компонент года данного значения времени является високосным годом, или false в противном случае. Эта функция может быть удобна для таких вещей, как пасхальные яйца в ваших играх или для разблокировки специального содержимого.

-

-

Синтаксис:

-

date_leap_year(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe datetime to use.
-

-

Возвращается:

-

-

-

Пример:

-

if date_leap_year(date_current_datetime())
- {
-     if (!global.ExtraContent)
-     {
-         global.ExtraContent = true;
-     }
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_minute_span.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_minute_span.htm index 22de03262..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_minute_span.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_minute_span.htm @@ -1,70 +0,0 @@ - - - - - - date_minute_span - - - - - - - - - - - - - - - - -

date_minute_span

-

С помощью этой функции вы можете получить количество минут между двумя датами. Это значение всегда положительное, а неполные минуты будут возвращены в виде дроби.

-

-

Синтаксис:

-

date_minute_span(date1, date2);

- - - - - - - - - - - - - - - -
АргументТипОписание
date1The first datetime.
date2The datetime to compare it to.
-

-

Возвращается:

-

-

-

Пример:

-

diff = date_minute_span(date_create_datetime(2011, 9, 15, 11, 4, 0 ), date_current_datetime());

-

Это установит "diff" на количество минут между 15 сентября 2011 года, 11:04.0 и текущей датой и временем.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_month_span.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_month_span.htm index 37e703faa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_month_span.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_month_span.htm @@ -1,70 +0,0 @@ - - - - - - date_month_span - - - - - - - - - - - - - - - - -

date_month_span

-

С помощью этой функции вы можете получить количество месяцев между двумя датами. Это значение всегда положительное, а неполные месяцы будут возвращены в виде дроби.

-

-

Синтаксис:

-

date_month_span(date1, date2);

- - - - - - - - - - - - - - - -
АргументТипОписание
date1The first datetime.
date2The datetime to compare it to.
-

-

Возвращается:

-

-

-

Пример:

-

diff = date_month_span(date_create_datetime(2011, 9, 15, 11, 4, 0 ), date_current_datetime());

-

Это установит "diff" как количество месяцев между 15 сентября 2011 года, 11:04.0 и текущей датой и временем.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_second_span.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_second_span.htm index fbe157cfe..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_second_span.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_second_span.htm @@ -1,70 +0,0 @@ - - - - - - date_second_span - - - - - - - - - - - - - - - - -

date_second_span

-

С помощью этой функции вы можете получить количество секунд между двумя датами. Возвращаемое значение всегда положительно и является целым числом.

-

-

Синтаксис:

-

date_second_span(date1, date2);

- - - - - - - - - - - - - - - -
АргументТипОписание
date1The first datetime.
date2The datetime to compare it to.
-

-

Возвращается:

-

-

-

Пример:

-

diff = date_second_span(date_create_datetime(2011, 9, 15, 11, 4, 0 ), date_current_datetime());

-

Это установит "diff" как количество секунд между 15 сентября 2011 года, 11:04 и текущей датой и временем.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_set_timezone.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_set_timezone.htm index 05d3c2524..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_set_timezone.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_set_timezone.htm @@ -1,83 +0,0 @@ - - - - - - date_set_timezone - - - - - - - - - - -

date_set_timezone

-

Устанавливает базовый часовой пояс, который будет использоваться для всех остальных функций даты и времени. Этот часовой пояс может быть либо локальным (установленным системой), либо UTC, и вы можете использовать одну из следующих констант, чтобы определить, какой из них используется (по умолчанию это локальное время):

- - - - - - - - - - - - - - - -
ПостояннаяОписание
timezone_localиспользовать местный часовой пояс, установленный системой
timezone_utcиспользовать всемирное координированное время
-

-

Синтаксис:

-

date_set_timezone(timezone);

- - - - - - - - - - - - - -
АргументТипОписание
timezoneЧасовой пояс ПостоянныйThe time zone to use for the base time.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (date_get_timezone() != timezone_utc)
- {
-     date_set_timezone(timezone_utc);
- }

-

Этот код проверяет базовую настройку часового пояса для игры и, если она не UTC, то изменяет ее.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_time_of.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_time_of.htm index 22ed3a504..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_time_of.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_time_of.htm @@ -1,60 +0,0 @@ - - - - - date_time_of - - - - - - - - - - - -

date_time_of

-

Возвращает значение времени для заданного времени. Возвращаемое время игнорирует переход на летнее время (как и универсальное время) и обычно используется в сочетании с другой функцией обработки даты/времени.

-

-

Синтаксис:

-

date_time_of(date);

- - - - - - - - - - - -
АргументТипОписание
dateThe datetime to extract the time from.
-

-

Возвращается:

-

-

-

Пример:

-

time = date_time_of(date_current_datetime());

-

Это вернет только текущее время и сохранит значение в переменной "time".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_time_string.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_time_string.htm index eec5d78d7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_time_string.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_time_string.htm @@ -1,60 +0,0 @@ - - - - - date_time_string - - - - - - - - - - - -

date_time_string

-

С помощью этой функции вы можете создать строку, содержащую заданное время, отформатированное для системы или устройства, на котором запущена игра в момент вызова функции.

-

-

Синтаксис:

-

date_time_string( date );

- - - - - - - - - - - -
АргументТипОписание
dateThe datetime to use.
-

-

Возвращается:

-

-

-

Пример:

-

str = date_time_string(date_current_datetime());

-

В зависимости от настроек системы для отображения даты/времени и текущей даты и времени, данная переменная будет установлена на что-то вроде "11:36.00".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_valid_datetime.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_valid_datetime.htm index 9158d1474..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_valid_datetime.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_valid_datetime.htm @@ -1,85 +0,0 @@ - - - - - - date_valid_datetime - - - - - - - - - - - -

date_valid_datetime

-

С помощью этой функции вы можете проверить, является ли значение времени действительным (возвращается true) или нет (возвращается false). Обратите внимание, что эта функция будет считать действительным только то время, которое наступило после 1/1/1970, а все, что раньше, вернет false, так что самое раннее, что вы можете проверить, это:

-

date_valid_datetime(1970, 01, 01, 0, 0, 0);

-

-

Синтаксис:

-

date_valid_datetime(year, month, day, hour, minute, second);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
yearThe year to check.
monthThe month to check.
dayThe day to check.
hourThe hour to check.
minuteThe minute to check.
secondThe second to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if date_valid_datetime(2011, 9, 15, 10, 3, 30)
- {
-     mydatetime = date_create_datetime(2011, 9, 15, 10, 3, 30);
- }

-

Это установит "mydatetime" на 15 сентября 2011 года, 10:03.30, если это допустимое значение (а это так).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_week_span.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_week_span.htm index 85c7fede2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_week_span.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_week_span.htm @@ -1,70 +0,0 @@ - - - - - - date_week_span - - - - - - - - - - - - - - - - -

date_week_span

-

С помощью этой функции вы можете получить количество недель между двумя датами. Это значение всегда положительное, а неполные недели будут возвращены в виде дроби.

-

-

Синтаксис:

-

date_week_span(date1, date2);

- - - - - - - - - - - - - - - -
АргументТипОписание
date1The first datetime.
date2The datetime to compare it to.
-

-

Возвращается:

-

-

-

Пример:

-

diff = date_week_span( date_create_datetime( 2011, 9, 15, 11, 4, 0 ), date_current_datetime() );

-

В этом случае значение "diff" будет равно количеству недель между 15 сентября 2011 года, 11:04.0 и текущей датой и временем.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_year_span.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_year_span.htm index 997346abd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_year_span.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/date_year_span.htm @@ -1,70 +0,0 @@ - - - - - - date_year_span - - - - - - - - - - - - - - - - -

date_year_span

-

С помощью этой функции вы можете получить количество лет между двумя датами. Это значение всегда положительное, а неполные годы будут возвращены в виде дроби.

-

-

Синтаксис:

-

date_year_span(date1, date2);

- - - - - - - - - - - - - - - -
АргументТипОписание
date1The first datetime.
date2The datetime to compare it to.
-

-

Возвращается:

-

-

-

Пример:

-

diff = date_year_span(date_create_datetime(2011, 9, 15, 11, 4, 0), date_current_datetime());

-

Это установит значение diff на количество лет между 15 сентября 2011 года, 11:04.0 и текущей датой и временем.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/delta_time.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/delta_time.htm index 47a5f5a98..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/delta_time.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/delta_time.htm @@ -1,50 +0,0 @@ - - - - - - delta_time - - - - - - - - - - -

delta_time

-

Эта переменная возвращает время дельты кадра, которое представляет собой разницу во времени между предыдущим и текущим кадром. Это значение в микросекундах, где 1 микросекунда - это 1 000 000 000-я доля секунды.

-

Цель дельта-времени - устранить эффект запаздывания или медлительности компьютеров, которые пытаются обрабатывать сложную графику или большое количество кода. Это величина, которую можно прибавить к скорости объектов, чтобы в конечном итоге они двигались с одинаковой скоростью, независимо от запаздывания. В GameMaker это достигается путем использования переменной delta_time на каждом шаге, поскольку она измеряет время, прошедшее между одним шагом и следующим, в микросекундах. Поэтому переменная delta_time может быть использована для расчета того, насколько быстрее (например) должен двигаться игровой персонаж, чтобы компенсировать скачок задержки в игре.

-

-

Синтаксис:

-

delta_time

-

-

Возвращается:

-

Real (integer)

-

-

Пример:

-

var _dt = delta_time / 1000000;
- speed = spd * _dt;

-

Приведенный выше код установит скорость экземпляра, используя дельта-время для коррекции запаздывания. Переменная "_dt" будет использоваться для хранения ранее рассчитанного значения дельта-времени, чтобы это отношение можно было использовать для умножения базового значения скорости (хранящегося в переменной "spd") и таким образом получить согласованную скорость для экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/get_timer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/get_timer.htm index 926de9143..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/get_timer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Date_And_Time/get_timer.htm @@ -1,52 +0,0 @@ - - - - - - - - - get_timer - - - - - - - - - - - -

get_timer

-

Эта функция возвращает время работы вашей игры на выбранной платформе в микросекундах (в секунду 1 миллион микросекунд).

-

-

Синтаксис:

-

get_timer();

-

-

Возвращается:

-

-

-

Пример:

-

time = get_timer();

-

Это сохранит значение таймера в переменной "time".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Maths_And_Numbers.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Maths_And_Numbers.htm index bb48a3ad3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Maths_And_Numbers.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Maths_And_Numbers.htm @@ -1,70 +0,0 @@ - - - - - - Математика и цифры - - - - - - - - - - -

Математика и цифры

-

GameMaker содержит большое количество функций для работы с различными областями математики, числами всех типов, датой и временем. Большинство из этих функций можно найти в разделах, перечисленных ниже:

- -

-

Есть несколько встроенных констант, которые также могут быть оценены как вещественные числа (хотя всегда следует проверять константу, а не значение):

- - - - - - - - - - - - - - - - - - - -
ПостояннаяЗначение
true1 (хотя любое значение, равное или большее 1, будет оцениваться как true)
false0 (хотя любое значение меньше 1 также будет оцениваться как false)
pi3.141592653589793280etc... (точное значение будет зависеть от различных факторов, таких как целевая платформа)
-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/Matrix_Functions.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/Matrix_Functions.htm index 419e8372f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/Matrix_Functions.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/Matrix_Functions.htm @@ -1,63 +0,0 @@ - - - - - - Матричные функции - - - - - - - - - - -

Матричные функции

-

Матрица - это набор чисел, расположенных в фиксированном количестве строк и столбцов. Обычно это вещественные числа, но это не всегда так. На следующем рисунке в общих чертах показано, как строится матрица с четырьмя строками и четырьмя столбцами:

-

Верхняя строка - это строка 1, крайний левый столбец - это столбец 1, и эта матрица является матрицей 4x4, потому что она имеет четыре строки и четыре столбца (можно построить матрицы других размеров). При описании матриц всегда используется формат строк / столбцов, а каждое число, составляющее матрицу, называется элементом матрицы. Элементы матрицы имеют определенное расположение, описываемое их позицией в строке и столбце, где левый верхний угол матрицы - это строка 1 столбец 1. В приведенном выше примере матрицы элементом в строке 1 столбца 1 является значение "1". Элемент в строке 2 столбца 3 - это значение "4,8".

-

Матрицы очень важны для многих вещей, но больше всего они используются при работе с трехмерным пространством, например, они могут использоваться для установки вида камеры или для перевода или преобразования модели. Для работы с матрицами в GameMaker существуют следующие функции:

- -

-

Следующие функции предназначены для использования матричного стека, который похож на стек DS, но предназначен только для работы с матрицами. Это удобный способ применения нескольких матричных операций (например, преобразований) друг за другом при создании 3D-сцены.

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build.htm index 352996884..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build.htm @@ -1,95 +0,0 @@ - - - - - - matrix_build - - - - - - - - - - - -

matrix_build

-

Эта функция может использоваться для создания вашей собственной матрицы и возвращает матричный массив, который должен быть сохранен в переменной для дальнейшего использования. Она принимает 3-мерные(x, y, z) значения перевода, вращения и масштаба и использует их для построения матричного массива.

-

Всего матричный массив содержит 16 значений, где начальными 4 элементами являются строка/колонка 1, следующие 4 элемента строка/столбец 2 и так далее, как часть матрицы 4x4. Упорядочен ли массив по строкам или столбцам, зависит от целевой платформы, так как графический рендерер, используемый платформой, может использовать матрицы с упорядочиванием по строкам или по столбцам.

-

ПРИМЕЧАНИЕ При построении новой матрицы таким образом порядок работы - YXZ.

-

-

Синтаксис:

-

matrix_build(x, y, z, xrotation, yrotation, zrotation, xscale, yscale, zscale);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xThe x component of the translation vector.
yThe y component of the translation vector.
zThe z component of the translation vector.
xrotationThe angle to rotate around the x-axis (in degrees °).
yrotationThe angle to rotate around the y-axis (in degrees °).
zrotationThe angle to rotate around the z-axis (in degrees °).
xscaleThe x scale amount.
yscaleThe y scale amount.
zscaleThe z scale amount.
-

-

Возвращается:

-

Matrix Array

-

-

Пример:

-

t_matrix = matrix_build(x, y, 0, 0, 90, 0, 1, 2, 1);

-

Приведенный выше код построит новое преобразование матрицы и сохранит индекс результирующей матрицы в переменной "t_matrix".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_identity.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_identity.htm index 6370d57a6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_identity.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_identity.htm @@ -1,53 +0,0 @@ - - - - - - matrix_build_identity - - - - - - - - - - - -

matrix_build_identity

-

Это построит матрицу идентичности 4x4 со следующей структурой:

-

[1 0 0 0]
- [0 1 0 0]
- [0 0 1 0]
- [0 0 0 1]

-

-

Синтаксис:

-

matrix_build_identity();

-

-

Возвращается:

-

Matrix Array

-

-

Пример:

-

i_matrix = matrix_build_identity();

-

Приведенный выше код создаст матрицу тождества и сохранит ее индекс в переменной для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_lookat.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_lookat.htm index b2092f968..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_lookat.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_lookat.htm @@ -1,97 +0,0 @@ - - - - - - matrix_build_lookat - - - - - - - - - - - -

matrix_build_lookat

-

Эта функция строит матрицу "вида" (view-at) на основе заданных параметров, перечисленных ниже. Поскольку эта функция изменяет матрицу вида, а не матрицу проекции, сначала следует инициализировать матрицу проекции с помощью другой функции матрицы. matrix_build_projection_perspective()а затем использовать эту функцию для перемещения камеры обзора в пределах проекции.

-

Чтобы задать вид, сначала нужно определить позицию, из которой вы смотрите, которая обозначается параметрами (xfrom, yfrom, zfrom). Затем необходимо указать направление, в котором вы смотрите, для этого нужно указать вторую точку, в которую вы смотрите, с помощью аргументов (xto, yto, zto). Наконец, можно еще повернуть камеру вокруг линии от точки обзора до точки взгляда, и для этого нужно задать вектор "вверх" - направление, в котором находится камера. Это задается тремя последними аргументами (xup, yup, zup).

-

-

Синтаксис:

-

matrix_build_lookat(xfrom, yfrom, zfrom, xto, yto, zto, xup, yup, zup);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xfromThe x coordinate of the position to look from.
yfromThe y coordinate of the position to look from.
zfromThe z coordinate of the position to look from.
xtoThe x coordinate of the position to look to.
ytoThe y coordinate of the position to look to.
ztoThe z coordinate of the position to look to.
xupThe x coordinate of the "up" vector.
yupThe y coordinate of the "up" vector.
zupThe z coordinate of the "up" vector.
-

-

Возвращается:

-

Matrix Array

-

-

Пример:

-

viewmat = matrix_build_lookat(640, 240, -10, 640, 240, 0, 0, 1, 0);
- projmat = matrix_build_projection_ortho(640, 480, 1.0, 32000.0);
- camera_set_view_mat(view_camera[0], viewmat);
- camera_set_proj_mat(view_camera[0], projmat);

-

Приведенный выше код создает новую матрицу взгляда и ортографическую матрицу, сохраняет их идентификаторы в локальных переменных, а затем использует их для установки матриц вида и проекции для камеры, назначенной на порт вида[0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_projection_ortho.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_projection_ortho.htm index e30f895af..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_projection_ortho.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_projection_ortho.htm @@ -1,77 +0,0 @@ - - - - - - matrix_build_projection_ortho - - - - - - - - - - - -

matrix_build_projection_ortho

-

Эта функция строит матрицу ортографической проекции на основе указанных ниже параметров (это метод проекции по умолчанию, используемый при создании комнаты в GameMaker без каких-либо изменений). Иногда требуется переключиться с перспективной проекции на ортографическую, для чего и предназначена эта функция. Обычно она используется для рисования наложения, например, для отображения счета или других аспектов, поскольку это дает "плоский" вид нарисованных элементов (т.е. без перспективы) в 3D-игре. Чтобы получить представление о разнице между ортографическим и перспективным видами, смотрите рисунок ниже.

-

ПРИМЕЧАНИЕ: Вам также может понадобиться временно отключить удаление скрытых поверхностей, если вы хотите, чтобы информация рисовалась независимо от текущего значения глубины.

-

Ortho prjection matrix  example

-

Синтаксис:

-

matrix_build_projection_ortho(width, height, znear, zfar);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
wThe width of the projection.
hThe height of the projection.
znearThe near clipping plane.
zfarThe far clipping plane.
-

-

Возвращается:

-

Matrix Array

-

-

Пример:

-

viewmat = matrix_build_lookat(640, 240, -10, 640, 240, 0, 0, 1, 0);
- projmat = matrix_build_projection_ortho(640, 480, 1.0, 32000.0);
- camera_set_view_mat(view_camera[0], viewmat);
- camera_set_proj_mat(view_camera[0], projmat);

-

Приведенный выше код создает новую матрицу взгляда и ортографическую матрицу, сохраняет их идентификаторы в локальных переменных, а затем использует их для установки матриц вида и проекции для камеры, назначенной на порт вида[0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_projection_perspective.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_projection_perspective.htm index c94de130b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_projection_perspective.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_projection_perspective.htm @@ -1,77 +0,0 @@ - - - - - - matrix_build_projection_perspective - - - - - - - - - - - -

matrix_build_projection_perspective

-

Эта функция строит матрицу перспективной проекции на основе размеров ближней плоскости обрезания, используя указанные ниже параметры.

-

Обратите внимание, что поле зрения камеры будет меняться в зависимости от указанных значений width, height и znear, поскольку ширина и высота проекции размещаются в позиции Z, указанной в аргументе znear.

-

Например, при постоянном размере 640x480 поле зрения будет шире, если znear находится ближе к камере, но будет более узким, если znear находится далеко от камеры. Это поведение демонстрируется на следующем рисунке:

-

В связи с этим рекомендуется использовать значение znear, равное ширине проекции, в результате чего поле зрения будет соответствовать эквивалентной ортографической проекции.

-

-

Синтаксис:

-

matrix_build_projection_perspective(width, height, znear, zfar);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
wThe width of the projection at the near Z position.
hThe height of the projection at the near Z position.
znearThe near clipping plane.
zfarThe far clipping plane.
-

-

Возвращается:

-

Matrix Array

-

-

Пример:

-

var projmat = matrix_build_projection_perspective(640, 480, 640.0, 32000.0);
- camera_set_proj_mat(view_camera[0], projmat);

-

Приведенный выше код создает перспективную проекцию, а затем использует возвращенную матрицу для установки камеры, назначенной на порт просмотра[0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_projection_perspective_fov.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_projection_perspective_fov.htm index e92a85d55..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_projection_perspective_fov.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_build_projection_perspective_fov.htm @@ -1,74 +0,0 @@ - - - - - - matrix_build_projection_perspective_fov - - - - - - - - - - - -

matrix_build_projection_perspective_fov

-

Эта функция строит матрицу перспективной проекции на основе поля зрения, используя заданные параметры, перечисленные ниже.

-

-

Синтаксис:

-

matrix_build_projection_perspective_fov(fov_y, aspect, znear, zfar);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
fovThe angle of the field of view.
aspectThe aspect ratio of the field of view.
znearThe near clipping plane.
zfarThe far clipping plane.
-

-

Возвращается:

-

Matrix Array

-

-

Пример:

-

projmat = matrix_build_projection_perspective_fov(60, 320/240, 1.0, 32000.0);
- camera_set_proj_mat(view_camera[0], projmat);

-

Приведенный выше код создает матрицу проекции поля зрения, которая затем сохраняется в переменной. Эта матрица затем используется для настройки камеры, назначенной на порт просмотра[0].

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_get.htm index aef1b17c4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_get.htm @@ -1,98 +0,0 @@ - - - - - - matrix_get - - - - - - - - - - - -

matrix_get

-

Эта функция возвращает массив из 16 значений, соответствующих заданному типу матрицы 4x4, где строка 1 - элементы [0 - 3], строка 2 - элементы [4 -7] и т.д.. (см. изображение на главной странице). Доступными матрицами являются view, projection и world, для которых можно использовать одну из следующих констант:

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип матрицы Постоянная
ПостояннаяОписание
matrix_viewТекущая матрица представления
matrix_projectionТекущая матрица проекции
matrix_worldТекущая матрица мира
-

-

Синтаксис:

-

matrix_get(type);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
typeТип матрицы ПостояннаяThe type of matrix to get (see the constants listed above)
result_matrixMatrix  The existing matrix to write the result to
-

-

Возвращается:

-

Matrix Array

-

-

Пример:

-

v_array = matrix_get(matrix_view);

-

Приведенный выше код получит значения текущей матрицы представления и заполнит ими массив "v_array".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_multiply.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_multiply.htm index dfbde19e6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_multiply.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_multiply.htm @@ -1,67 +0,0 @@ - - - - - - matrix_multiply - - - - - - - - - - -

matrix_multiply

-

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

-

ПРИМЕЧАНИЕ: Вы не можете использовать константу матрицы в качестве аргумента в этой функции, поэтому если вы хотите умножить (например) матрицу вида на пользовательскую матрицу, которую вы построили, вы должны сначала вызвать функцию matrix_get() и присвоить значения матрицы вида переменной массива, затем умножить ее на вашу пользовательскую матрицу, а затем установить выбранную матрицу (вид, проекция или мир).

-

-

Синтаксис:

-

matrix_multiply(matrix1, matrix2);

- - - - - - - - - - - - - - - -
АргументТипОписание
matrix1The first matrix index to use.
matrix2The second matrix index to use.
-

-

Возвращается:

-

Matrix Array

-

-

Пример:

-

var v_matrix = matrix_get(matrix_view);
- var new_matrix = matrix_multiply(v_matrix, my_matrix);
- matrix_set(matrix_view, new_matrix);

-

Приведенный выше код получит текущую матрицу представления, затем умножит ее на пользовательскую матрицу и затем использует индекс полученной матрицы для повторной установки матрицы представления.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_set.htm index bd416456a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_set.htm @@ -1,90 +0,0 @@ - - - - - - matrix_set - - - - - - - - - - -

matrix_set

-

Эта функция принимает массив из 16 значений, соответствующих заданному типу матрицы 4x4, где элементы [0 - 3] будут строкой 1, элементы [4 -7] - строкой 2 и т.д.... (см. рисунок на главной странице). Вы можете создать такую матрицу, используя matrix_build() или matrix_get() или просто создать массив самостоятельно и передать его в функцию. Доступными типами матриц являются вид, проекция и мир, для которых можно использовать одну из следующих констант:

- - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
matrix_viewТекущая матрица представления
matrix_projectionТекущая матрица проекции
matrix_worldТекущая мировая матрица
-

-

Синтаксис:

-

matrix_set(type, matrix);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
typeТип матрицы ПостояннаяThe type of matrix to get the values of (see the constants listed above)
matrixМатричный массивThe matrix data as an array
-

-

Возвращается:

-

N/A

-

-

Пример:

-

matrix_set(matrix_world, m_array);

-

Приведенный выше код установит значения текущей мировой матрицы на значения, хранящиеся в матрице массива "m_array".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_clear.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_clear.htm index c669b79f2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_clear.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_clear.htm @@ -1,51 +0,0 @@ - - - - - - matrix_stack_clear - - - - - - - - - - -

matrix_stack_clear

-

Эта функция очищает стек матрицы.

-

-

Синтаксис:

-

matrix_stack_clear();

-

-

Возвращается:

-

-

-

Пример:

-

if !matrix_stack_is_empty()
- {
-     matrix_stack_clear();
- }

-

Приведенный выше код проверяет стек матрицы на то, пуст ли он, и если нет, то очищает его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_is_empty.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_is_empty.htm index e43896e87..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_is_empty.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_is_empty.htm @@ -1,52 +0,0 @@ - - - - - - matrix_stack_is_empty - - - - - - - - - - - -

matrix_stack_is_empty

-

Эта функция может быть использована для проверки того, пуст ли стек матрицы (возвращается true) или нет (возвращается false).

-

-

Синтаксис:

-

matrix_stack_is_empty();

-

-

Возвращается:

-

-

-

Пример:

-

if !matrix_stack_is_empty()
- {
-     matrix_stack_clear();
- }

-

Приведенный выше код проверяет стек матрицы на то, пуст ли он, и если нет, то очищает его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_pop.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_pop.htm index 998d98e83..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_pop.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_pop.htm @@ -1,55 +0,0 @@ - - - - - - matrix_stack_pop - - - - - - - - - - -

matrix_stack_pop

-

Эта функция удаляет матрицу, находящуюся на вершине текущего стека матриц.

-

-

Синтаксис:

-

matrix_stack_pop();

-

-

Возвращается:

-

-

-

Пример:

-

var m1 = matrix_build(66, 145, 0, 0, 0, 0, 1, 1, 1);
- var m2 = matrix_build(0, 0, 0, 0, 0, image_angle * 6, 1, 1, 1) ;
- matrix_stack_push(m1);
- matrix_stack_push(m2);
- matrix_set(matrix_world, matrix_stack_top());
- draw_sprite(spr_tyre, 0, 0, 0);
- matrix_stack_pop();
- matrix_stack_pop();

-

Приведенный выше код построит две новые матрицы и поместит их в стек матриц. После этого матрица мира устанавливается на вершину стека, рисуется sprite, а затем трансформации выталкиваются из стека.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_push.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_push.htm index c68fefe87..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_push.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_push.htm @@ -1,69 +0,0 @@ - - - - - - matrix_stack_push - - - - - - - - - - -

matrix_stack_push

-

Эта функция используется для перемещения новой матрицы на вершину текущего стека матриц. Сначала заданная матрица умножается на матрицу, находящуюся на вершине стека, а затем полученная матрица помещается в стек.

-

Эта функция полезна для применения нескольких матричных преобразований к визуальным изображениям без необходимости вручную перемножать различные матрицы вместе.

-

Например, вы можете поместить в стек базовую матрицу, которая рисует графику в определенной прямоугольной области (например, в окне). После рисования графики с помощью этой матрицы вы можете поместить в стек другую матрицу для рисования графики внутри под-области (например, кнопки в окне). После рисования чего-либо в этой под-области, вы можете вызвать matrix_stack_pop(), чтобы удалить матрицу из стека и продолжить рисование графики в основной области окна.

-

-

Синтаксис:

-

matrix_stack_push(matrix);

- - - - - - - - - - - -
АргументТипОписание
matrixThe matrix to push to the stack
-

-

Возвращается:

-

-

-

Пример:

-

var m1 = matrix_build(66, 145, 0, 0, 0, 0, 1, 1, 1);
- var m2 = matrix_build(0, 0, 0, 0, 0, image_angle * 6, 1, 1, 1) ;
- matrix_stack_push(m1);
- matrix_stack_push(m2);
- matrix_set(matrix_world, matrix_stack_top());
- draw_sprite(spr_tyre, 0, 0, 0);
- matrix_stack_pop();
- matrix_stack_pop();

-

Приведенный выше код построит две новые матрицы и поместит их в стек матриц. После этого матрица мира устанавливается на вершину стека, рисуется sprite, а затем трансформации выталкиваются из стека.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_set.htm index c315230cb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_set.htm @@ -1,60 +0,0 @@ - - - - - matrix_stack_set - - - - - - - - - - -

matrix_stack_set

-

Эта функция перезаписывает текущую вершину стека матриц указанной матрицей.

-

-

Синтаксис:

-

matrix_stack_set(matrix);

- - - - - - - - - - - -
АргументТипОписание
matrixThe matrix index to use.
-

-

Возвращается:

-

-

-

Пример:

-

var m = matrix_build(x, y, 0, 0, 0, 0, 1, 1, 1);
matrix_stack_set(m); -

-

Приведенный выше код построит новую матрицу и сохранит индекс полученной матрицы в переменной "m", после чего заменит ею вершину стека матриц.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_top.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_top.htm index 027d30246..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_top.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_stack_top.htm @@ -1,56 +0,0 @@ - - - - - - matrix_stack_top - - - - - - - - - - - -

matrix_stack_top

-

Эта функция возвращает текущую верхнюю матрицу стека, но не удаляет ее (для этого используется matrix_stack_pop()).

-

-

Синтаксис:

-

matrix_stack_top();

-

-

Возвращается:

-

Matrix Array

-

-

Пример:

-

var m1 = matrix_build(66, 145, 0, 0, 0, 0, 1, 1, 1);
- var m2 = matrix_build(0, 0, 0, 0, 0, image_angle * 6, 1, 1, 1) ;
- matrix_stack_push(m1);
- matrix_stack_push(m2);
- matrix_set(matrix_world, matrix_stack_top());
- draw_sprite(tyre, 0, 0, 0);
- matrix_stack_pop();
- matrix_stack_pop();

-

Приведенный выше код построит две новые матрицы и поместит их в стек матриц. После этого матрица мира устанавливается на вершину стека, рисуется sprite, а затем трансформации выталкиваются из стека.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_transform_vertex.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_transform_vertex.htm index d4b6399c8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_transform_vertex.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Matrix_Functions/matrix_transform_vertex.htm @@ -1,83 +0,0 @@ - - - - - - matrix_transform_vertex - - - - - - - - - - - - - - - -

matrix_transform_vertex

-

Эта функция преобразует вектор по матрице. Вы передаете идентификатор матрицы преобразования (возвращаемый функцией matrix build()), а также значения x, y и z для вектора, который нужно преобразовать. Функция вернет - массив из 3 элементов, где:

-
    -
  • массив[0] = x
  • -
  • массив[1] = y
  • -
  • array[2] = z.
  • -
-

-

Синтаксис:

-

matrix_transform_vertex(matrix, x, y, z);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
matrixThe matrix to use
xThe x component of the transform vector
yThe y component of the transform vector
zThe z component of the transform vector
-

-

Возвращается:

-

(3 elements)

-

-

Пример:

-

t_matrix = matrix_build(0, 0, 0, 0, 90, 0, 1, 2, 1);
verts = matrix_transform_vertex(t_matrix, x, y, z);

-

Приведенный выше код преобразует заданные значения с помощью матрицы, хранящейся в переменной "t_matrix", и сохраняет их в массиве "verts".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/Number_Functions.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/Number_Functions.htm index 303868635..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/Number_Functions.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/Number_Functions.htm @@ -1,98 +0,0 @@ - - - - - - Функции чисел - - - - - - - - - - -

Функции чисел

-

Вещественные числа в GameMaker считаются числами с плавающей точкой двойной точности - то есть они имеют десятичную точку без фиксированного количества цифр до или после точки - или целыми числами - то есть это целые числа без десятичной точки. Например, 2 - это целое число, а 2,01 - вещественное число с плавающей точкой.

-

ПРИМЕЧАНИЕ: В цели HTML5 все действительные числа являются двойными.

-

Это различие между целыми и плавающими числами очень важно при кроссплатформенной разработке, так как точность вычислений, выполненных на компьютере Windows, отличается от точности тех же вычислений на мобильном устройстве. Это означает, что вы должны быть особенно внимательны при выполнении сравнений, например:

-

if (image_index == 1)
- {
-     // Do something...
- }

-

В приведенном выше примере, если мы устанавливали image_speed на 0,25 - например, - то после четырех шагов вы можете предположить, что значение image_index будет равно 1, но это может быть значение 1.0000002 из-за того, как работает математика с плавающей запятой, и поэтому оценка не будет true. Такие ошибки могут быть довольно трудно отлаживать, поэтому всегда полезно знать о них и планировать заранее и использовать другие средства проверки значений или использовать соответствующие функции перекрытия или округления (перечисленные ниже) для преобразования проверяемого числа в целое (более подробную информацию о математике с плавающей точкой и о том, почему это является проблемой, смотрите здесь). Например, приведенный выше код можно записать как:

-

if (floor(image_index) == 1)
- {
-     // Do something...
- }

-

Также стоит отметить, что при использовании целей YoYo Compiler все выражения и функции оцениваются слева направо, в то время как на всех других целевых платформах они оцениваются справа налево, что означает, что, например, это - даст разные результаты в зависимости от платформы:

-

val = max(num, ++num, num++);

-

ПРИМЕЧАНИЕ: Для получения дополнительной информации см. раздел " Порядок оценки".

-

Вы также можете использовать специальную функцию, доступную в GameMaker, чтобы установить значение эпсилон для математических вычислений с плавающей точкой. Когда вещественное число округляется до ближайшего числа с плавающей точкой, эпсилон (также известный как "машинный эпсилон") формирует верхнюю границу относительной ошибки, и вы можете получить и установить значение эпсилона с помощью следующих функций:

- -

-

Все эти функции связаны с использованием случайных чисел и значений:

-

ПРИМЕЧАНИЕ При использовании случайных функций GameMaker сохраняет одно и то же случайное зерно при каждом запуске игры. Это значительно облегчает отладку, так как гарантируется, что функции random всегда будут возвращать одно и то же значение, однако если вы не хотите, чтобы это происходило, вам необходимо в самом начале игры установить новое случайное зерно, используя либо функцию randomise() или random_set_seed().

- -

-

Это все функции, которые округляют значения каким-либо образом или выбирают одно значение из различных заданных значений:

- -

-

В заключение мы приводим подборку важных математических функций:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/abs.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/abs.htm index 2b85f1a99..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/abs.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/abs.htm @@ -1,61 +0,0 @@ - - - - - abs - - - - - - - - - - - -

abs

-

Эта функция возвращает абсолютное значение входного аргумента, так что если это положительное значение, то оно останется неизменным, а если отрицательное, то оно будет умножено на -1, чтобы сделать его положительным.

-

-

Синтаксис:

-

abs(val)

-

- - - - - - - - - - - -
АргументТипОписание
valThe number to turn absolute.
-

-

Возвращается:

-

-

-

Пример:

-

x += abs (x - mouse_x)

-

Это добавит количество, равное абсолютному значению текущей позиции x экземпляра и позиции x мыши.

-

-

-

- - - - - diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/ceil.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/ceil.htm index 251a33ff8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/ceil.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/ceil.htm @@ -1,63 +0,0 @@ - - - - - ceil - - - - - - - - - - - -

ceil

-

Эта функция берет любое вещественное число и округляет его до ближайшего целого числа. С этой функцией следует быть осторожным, так как одна из распространенных ошибок - использовать ее для округления случайного значения и ожидать, что оно всегда будет больше 1, т.е:

-

int = ceil(random(5));

-

Теперь можно ожидать, что этот код всегда будет давать целое число от 1 до 5, но это не всегда так, поскольку существует очень маленькая вероятность того, что функция random вернет 0, а округление до 0 все равно даст 0. Это очень малая - вероятность, но ее следует учитывать при использовании этой функции.

-

-

Синтаксис:

-

ceil(val);

- - - - - - - - - - - -
АргументТипОписание
xThe number to change.
-

-

Возвращается:

-

-

-

Пример:

-

val = ceil( 3.4 );

-

Это установит значение val на 4.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/choose.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/choose.htm index 7027f0e85..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/choose.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/choose.htm @@ -1,66 +0,0 @@ - - - - - - choose - - - - - - - - - - - -

choose

-

Иногда для случайного выбора нужно указать не числа, а что-то другое, или нужные числа не расположены в реальном порядке или в заданном диапазоне. В этих случаях для генерации случайного результата используется choose(). Например, если вы хотите создать объект со случайным sprite в начале, то вы можете использовать эту функцию для установки индекса sprite на один из множества заданных sprites. Обратите внимание, что вы можете иметь столько аргументов, сколько вам нужно (обратите внимание, что большее количество аргументов будет означать, что функция будет медленнее разбираться).

-

ПРИМЕЧАНИЕ Эта функция будет возвращать одно и то же значение при каждом новом запуске игры, поскольку GameMaker каждый раз генерирует одно и то же начальное случайное зерно, чтобы облегчить отладку кода. Чтобы избежать такого поведения, используйте randomise() в начале вашей игры.

-

-

Синтаксис:

-

choose(val0, val1, val2... max_val);

- - - - - - - - - - - - - -
АргументТипОписание
val0... max_valПеременнаяAny type of value(s).
-

-

Возвращается:

-

Variable (One of the given arguments)

-

-

Пример:

-

sprite_index = choose(spr_Cactus, spr_Flower, spr_Tree, spr_Shrub);
- hp = choose(5, 8, 15, 32, 40);
- name = choose("John", "Steven", "Graham", "Jack", "Emily", "Tina", "Jill", "Helen");

-

Приведенный выше код использует select для установки ряда свойств экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/clamp.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/clamp.htm index 632145b42..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/clamp.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/clamp.htm @@ -1,74 +0,0 @@ - - - - - - clamp - - - - - - - - - - - - - - - - -

clamp

-

С помощью этой функции вы можете поддерживать входное значение в заданном диапазоне.

-

-

Синтаксис:

-

clamp(val, min, max)

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
valThe value to clamp.
minThe minimum value to clamp between.
maxThe maximum value to clamp between.
-

-

Возвращается:

-

-

-

Пример:

-

speed = clamp(speed, 1, 10);

-

Приведенный выше код будет зажимать скорость так, чтобы она никогда не падала ниже 1 и не превышала 10.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/exp.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/exp.htm index 584cce26e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/exp.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/exp.htm @@ -1,61 +0,0 @@ - - - - - exp - - - - - - - - - - - -

exp

-

Это функция power(e,n), где e - приблизительно 2,718281828 (также известное как число Эйлера), а n - количество раз, которое нужно умножить на себя. По сути, это означает: "Сколько прироста я получу через n единиц времени - (и 100% непрерывного роста)?". Таким образом, exp(3) даст 20,08, что означает, что через 3 единицы времени у нас будет в 20,08 раз больше суммы, с которой мы начали.

-

-

Синтаксис:

-

exp(n);

- - - - - - - - - - - -
АргументТипОписание
nThe power of e.
-

-

Возвращается:

-

-

-

Пример:

-

val = exp(2);

-

Это установит значение val равным e^2, примерно 7,4.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/floor.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/floor.htm index 74e5edf36..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/floor.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/floor.htm @@ -1,61 +0,0 @@ - - - - - floor - - - - - - - - - - - -

floor

-

Возвращает пол числа n, то есть n, округленное до целого числа. Это аналогично функции round() но округляет только в меньшую сторону, независимо от десятичного значения, поэтому floor(5.99999) вернет 5, как и - floor(5.2), floor(5.6457) и т.д..

-

-

Синтаксис:

-

floor(n);

- - - - - - - - - - - -
АргументТипОписание
nThe number to floor.
-

-

Возвращается:

-

-

-

Пример:

-

val = floor( 3.9 );

-

При этом значение val будет равно 3.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/frac.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/frac.htm index 8c5e978fc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/frac.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/frac.htm @@ -1,60 +0,0 @@ - - - - - frac - - - - - - - - - - - -

frac

-

Эта функция возвращает дробную часть n, то есть часть, стоящую за десятичной точкой. Она возвращает только десятичные дроби, стоящие за точкой, поэтому frac(3.125) вернет 0,125, frac(6.921) вернет 0,921 и т.д..

-

-

Синтаксис:

-

frac(n);

- - - - - - - - - - - -
АргументТипОписание
nThe number to change.
-

-

Возвращается:

-

-

-

Пример:

-

val = frac(3.4);

-

Это позволит установить значение val на 0,4.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/irandom.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/irandom.htm index e42693479..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/irandom.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/irandom.htm @@ -1,64 +0,0 @@ - - - - - - irandom - - - - - - - - - - -

irandom

-

Эта очень полезная функция возвращает только целые числа (целые числа). Так, например, для получения случайного числа от 0 до 9 вы можете использовать irandom(9), и она вернет число от 0 до 9 включительно. Обратите внимание, что можно использовать и плавающие числа, но верхнее значение после точки будет исключено, поэтому irandom(9.7) вернет значение только от 0 до 9. Верхняя граница функции составляет $7fffffffffffffffLL, поэтому при использовании очень больших чисел следует соблюдать осторожность.

-

ПРИМЕЧАНИЕ Эта функция будет возвращать одно и то же значение при каждом новом запуске игры, поскольку GameMaker каждый раз генерирует одно и то же начальное случайное зерно, чтобы облегчить отладку кода. Чтобы избежать такого поведения, используйте randomise() в начале вашей игры.

-

-

Синтаксис:

-

irandom(n);

- - - - - - - - - - - -
АргументТипОписание
nThe upper range from which the random number will be selected.
-

-

Возвращается:

-

-

-

Пример:

-

if (irandom(9) == 1)
- {
-     score += 100;
- }

-

Это даст один шанс из десяти (поскольку 0 включено) добавить 100 к счету.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/irandom_range.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/irandom_range.htm index f7564afec..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/irandom_range.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/irandom_range.htm @@ -1,72 +0,0 @@ - - - - - - irandom_range - - - - - - - - - - - - - - -

irandom_range

-

Эта функция аналогична random_range() только в качестве входных данных используются целочисленные значения. Вы задаете нижнее значение диапазона, а также верхнее значение, и функция возвращает случайное целочисленное значение в пределах (и - включая) заданного диапазона. Например, irandom_range(10, 35) вернет целое число от 10 до 35 включительно.

-

Как и в функции irandom() можно использовать вещественные числа, в этом случае они будут округлены до ближайшего целого числа EG: irandom_range(6.2,9.9) даст значение между 6 и 9.

-

ПРИМЕЧАНИЕ Эта функция будет возвращать одно и то же значение каждый раз, когда игра запускается заново, поскольку GameMaker: Studio каждый раз генерирует одно и то же начальное случайное зерно, чтобы облегчить отладку кода. Чтобы избежать такого поведения, используйте - randomise() в начале игры.

-

-

Синтаксис:

-

irandom_range(n1, n2);

- - - - - - - - - - - - - - - -
АргументТипОписание
n1The low end of the range from which the random number will be selected.
n2The high end of the range from which the random number will be selected.
-

-

Возвращается:

-

-

-

Пример:

-

score += irandom_range(500, 600);

-

Это добавит к общему счету целочисленное значение в диапазоне от 500 до 600 (включительно).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/lerp.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/lerp.htm index 93c123364..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/lerp.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/lerp.htm @@ -1,78 +0,0 @@ - - - - - - lerp - - - - - - - - - - - - - - - - -

lerp

-

С помощью этой функции можно найти значение, которое соответствует позиции между двумя другими значениями для данного процента. Так что если вы, например:

-

lerp(0, 10, 0.5)

-

вы получите возвращаемое значение 5, что составляет 50% от входных значений. Вы также можете экстраполировать с помощью этой функции, задав положительное или отрицательное значение для суммы интерполяции, чтобы сделать что-то вроде:

-

lerp(0, 10, 2)

-

вернет значение 20.

-

-

Синтаксис:

-

lerp(a, b, amt)

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
aThe first value.
bThe second value.
amtThe amount to interpolate.
-

-

Возвращается:

-

-

-

Пример:

-

xx = lerp(x, x + hspeed, room_speed);
yy = lerp(y, y + vspeed, room_speed);

-

Приведенный выше код использует функцию линейной интерполяции, чтобы предсказать, куда переместится экземпляр после одной секунды игрового времени.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/ln.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/ln.htm index a50824397..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/ln.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/ln.htm @@ -1,68 +0,0 @@ - - - - - - ln - - - - - - - - - - - - - - - - -

ln

-

Натуральный логарифм ln(n) - это количество времени, необходимое для достижения определенного уровня непрерывного роста, где n - достигнутый уровень. Таким образом, если мы хотим узнать, сколько единиц времени нам нужно, чтобы получить 20 единиц роста, мы используем ln(20), который - возвращает 2,99 единиц времени для достижения такого роста.

-

-

Синтаксис:

-

ln(n);

-

- - - - - - - - - - - -
АргументТипОписание
nThe input value.
-

-

Возвращается:

-

-

-

Пример:

-

alarm[0] = ln(age) * room_speed;

-

Приведенный выше код использует натуральный логарифм значения, хранящегося в переменной "возраст", для установки сигнала тревоги.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/log10.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/log10.htm index 4693a5dd5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/log10.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/log10.htm @@ -1,62 +0,0 @@ - - - - - log10 - - - - - - - - - - - -

log10

-

Эта функция похожа на функцию log2(n) только log10(n) получает число 10, которое нужно перемножить, чтобы получить n. Так log10(100) возвращает 2, так как умножение 10 на само себя дает - 100, log10(1000) возвращает 3, поскольку 10x10x10=1000 и т.д... Число не обязательно должно быть кратным десяти, однако, это все равно вернет соответствующее значение, например, если у нас есть log10(101), мы получим 2.00432137... что составляет - сколько раз можно разделить 101 на 10.

-

-

Синтаксис:

-

log10(n);

- - - - - - - - - - - -
АргументТипОписание
nThe input value.
-

-

Возвращается:

-

-

-

Пример:

-

logval = log10(num);

-

Приведенный выше код получает log10 значения, хранящегося в "num".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/log2.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/log2.htm index 0353cfe70..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/log2.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/log2.htm @@ -1,61 +0,0 @@ - - - - - log2 - - - - - - - - - - - -

log2

-

Эта функция в основном спрашивает: "Сколько двоек нужно перемножить, чтобы получить n?". Обычным примером использования в программировании является вычисление количества битов, необходимых для представления числа. Для этого мы вычисляем log2(x) числа, округляем его вниз и прибавляем 1 - например, log2(100) возвращает 6,643856, что округленное вниз число равно 6, к которому мы прибавляем 1 и получаем 7. Таким образом, для представления 100 нам нужно 7 бит. Она также может быть использована для описания экспоненциального роста или - и часто называется двоичным логарифмом.

-

-

Синтаксис:

-

log2(n);

- - - - - - - - - - - -
АргументТипОписание
nThe input value.
-

-

Возвращается:

-

-

-

Пример:

-

colourbits = floor(log2(colour)) - 1;

-

Приведенный выше код хранит количество битов, необходимых для представления значения, хранящегося в переменной "color".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/logn.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/logn.htm index 774eaf0c6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/logn.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/logn.htm @@ -1,65 +0,0 @@ - - - - - logn - - - - - - - - - - - -

logn

-

Эта функция аналогична функциям log2(n) и log10(n), только вы указываете значение логарифмической базы. Например, logn(5,25) вернет, сколько 5 нужно перемножить. - чтобы получить 25 (что равно 2).

-

-

Синтаксис:

-

logn(n, val);

- - - - - - - - - - - - - - - -
АргументТипОписание
nThe log base.
valThe input value.
-

-

Возвращается:

-

-

-

Пример:

-

logval = logn(5, num);

-

Приведенный выше код получает log5 значения, хранящегося в "num".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/math_get_epsilon.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/math_get_epsilon.htm index 0aff7e751..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/math_get_epsilon.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/math_get_epsilon.htm @@ -1,53 +0,0 @@ - - - - - - math_get_epsilon - - - - - - - - - - - -

math_get_epsilon

-

Эта функция возвращает текущее значение epsilon для целевой платформы. Для получения дополнительной информации об эпсилоне см. функцию math_set_epsilon().

-

-

Синтаксис:

-

math_get_epsilon();

-

-

Возвращается:

-

-

-

Пример:

-

var e = math_get_epsilon();
- if (e != 0.000001)
- {
-     math_set_epsilon(0.000001);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/math_set_epsilon.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/math_set_epsilon.htm index 59f19ba48..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/math_set_epsilon.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/math_set_epsilon.htm @@ -1,77 +0,0 @@ - - - - - - math_set_epsilon - - - - - - - - - - -

math_set_epsilon

-

Эпсилон - это значение, используемое для определения того, достаточно ли близки два числа, подверженные ошибке округления, чтобы считаться "равными". Она полезна при работе с математикой с плавающей запятой, поскольку позволяет уменьшить "ошибки округления", из-за которых некоторые операции возвращают значения, которые кажутся неправильными или противоречат нашим ожиданиям. Например, мы можем добавить значение к индексу изображения sprite и ожидать, что результатом будет одно целое число, но из-за природы математики с плавающей запятой фактическое конечное значение окажется чем-то вроде 5.0000002, поэтому при следующей проверке:

-

if image_index == 5
- {
-     //do something
- }

-

Код ведет себя не так, как ожидалось, и возвращает false. Однако, если мы установим значение эпсилон равным 0.000001, значение image_index будет округлено до ближайшего действительного числа, которое составляет +/- 0.000001 от исходного значения, в результате чего приведенное выше сравнение вернется к истине.

-

Значение эпсилон будет использоваться для всех следующих целочисленных операторов:

-
    -
  • : Менее
  • -
  • : Больше, чем
  • -
  • == : Равно
  • -
  • <= : Меньше или равно
  • -
  • >= : Больше или равно
  • -
  • != : Не равно
  • -
-

Обратите внимание, что установка значения epsilon, равного 0, отключает все округления, а использование значения 1 приведет к ошибке.

-

-

Синтаксис:

-

math_set_epsilon(epsilon);

- - - - - - - - - - - - - -
АргументТипОписание
epsilonРеальноThe new epsilon value (from 0 to 0.999999999).
-

-

Возвращается:

-

Real

-

-

Пример:

-

math_set_epsilon(0.0001);

-

Это установит значение эпсилон для всех дальнейших операций с плавающей запятой.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/max.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/max.htm index b46f079fd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/max.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/max.htm @@ -1,61 +0,0 @@ - - - - - max - - - - - - - - - - - -

max

-

Эта функция возвращает максимальное из входных значений, которых может быть до 16. Например, max(12, 96, 32, 75) вернет 96, так как это максимальное из всех входных значений.

-

-

Синтаксис:

-

max(val1, val2, ... max_val);

- - - - - - - - - - - -
АргументТипОписание
val0 ... max_valThe values to compare.
-

-

Возвращается:

-

-

-

Пример:

-

x = max(x, 0);

-

Это не позволит игроку выйти из левой части комнаты. Это работает путем постоянной установки x либо на себя, либо на 0, в зависимости от того, что больше. Если игрок выйдет слева, его x будет меньше 0 (т.е. отрицательным), поэтому он будет установлен прямо - назад.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/mean.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/mean.htm index e34a33f52..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/mean.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/mean.htm @@ -1,61 +0,0 @@ - - - - - mean - - - - - - - - - - - -

mean

-

Эта функция работает путем сложения всех входных значений, а затем деления их на собственное число. Вы можете иметь столько аргументов, сколько вам нужно (обратите внимание, что большее количество аргументов означает, что функция будет разбираться медленнее). Так, mean(2, 6, 9, 32) возвращает 12,25, поскольку 2+6+9+32=49 и 49/4=12,25.

-

-

Синтаксис:

-

mean(val1, val2, ... max_val);

- - - - - - - - - - - -
АргументТипОписание
val0 ... max_valThe values to compare.
-

-

Возвращается:

-

-

-

Пример:

-

xmiddle = mean(obj_player1.x, obj_player2.x, obj_player3.x);
ymiddle = mean(obj_player1.y, obj_player2.y, obj_player3.y);

-

Это установит xmiddle и ymiddle на x и y координаты среднего значения координат трех объектов игрока, obj_player1, obj_player2 и obj_player3. Это можно использовать, например, для того, чтобы игровая камера фокусировалась на всех трех игроках - вместо одного.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/median.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/median.htm index 16312743b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/median.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/median.htm @@ -1,68 +0,0 @@ - - - - - - median - - - - - - - - - - - - - - - - -

median

-

Эта функция возвращает медиану входных значений, то есть среднее значение. Если количество аргументов четное, возвращается меньшее из двух средних значений. Функция может иметь столько аргументов, сколько требуется (обратите внимание, что большее количество аргументов - будет означать, что функция будет медленнее разбираться), которые все должны быть реальными значениями. Это означает, что, например, median(43, 12, 25, 19, 6) вернет 19, так как это среднее значение между всеми остальными.

-

-

Синтаксис:

-

median(val1, val2, ... max_val);

- - - - - - - - - - - -
АргументТипОписание
val0 ... max_valThe values to compare.
-

-

Возвращается:

-

-

-

Пример:

-

x = median( 0, x, room_width );
y = median( 0, y, room_height );

-

Это не позволит игроку выйти из любой стороны комнаты, используя медиану в качестве фиксатора. Если игрок, например, движется влево от границы комнаты, его x будет меньше 0. Это означает, что среднее число первой из медиан будет равно 0. - будет равно 0, поэтому игрок переместится в точку (0,y).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/min.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/min.htm index cc9504282..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/min.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/min.htm @@ -1,62 +0,0 @@ - - - - - min - - - - - - - - - - - -

min

-

Эта функция возвращает минимальное из входных значений, которых может быть столько, сколько вам нужно (обратите внимание, что большее количество аргументов означает, что функция будет разбираться медленнее). Например, min(12, 96, 32, 75) вернет 12, так как это наименьшее значение из всех входных значений. - наименьшее из всех входных значений.

-

-

Синтаксис:

-

min(val1, val2, ... max_val);

- - - - - - - - - - - -
АргументТипОписание
val0 ... max_valThe values to compare.
-

-

Возвращается:

-

-

-

Пример:

-

x = min(x, room_width);

-

Это не позволит игроку выйти из правой части комнаты. Это работает, постоянно устанавливая x либо на себя, либо на переменную room_width, в зависимости от того, что меньше. Если игрок выйдет справа, его x будет больше, чем room_width, поэтому он - будет установлен обратно.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/power.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/power.htm index 3b9fd0b95..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/power.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/power.htm @@ -1,71 +0,0 @@ - - - - - - power - - - - - - - - - - - - - - - - -

power

-

Это вернет значение числа, умноженного на себя "n" раз. Например, power(5,3) умножит 5 на себя 3 раза и вернет 125, что равносильно тому, что сказать 5*5*5=125. Обратите внимание, что значение "x" - (число, которое нужно изменить) не может быть отрицательным значением.

-

-

Синтаксис:

-

power(x, n);

- - - - - - - - - - - - - - - -
АргументТипОписание
xThe number to change.
nHow many times to multiply x by itself.
-

-

Возвращается:

-

-

-

Пример:

-

score += power(dmg, 3);

-

Это добавит значение удерживаемого в переменной "dmg" в степени 3 к переменной score.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/random.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/random.htm index f2f86ce2c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/random.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/random.htm @@ -1,64 +0,0 @@ - - - - - - random - - - - - - - - - - -

random

-

Эта функция хороша для вероятностей, где возвращение целого числа не является необходимым. Например, random(100) вернет значение от 0 до 99, но это значение может быть 22,56473! Вы также можете использовать в этой функции не целые, а действительные числа, например, random(0.5), которая вернет значение от 0 до 0,4999999.

-

ПРИМЕЧАНИЕ: Эта функция будет возвращать одно и то же значение при каждом новом запуске игры, поскольку GameMaker каждый раз генерирует одно и то же начальное случайное зерно, чтобы облегчить отладку кода. Чтобы избежать такого поведения, используйте randomise() в начале вашей игры.

-

-

Синтаксис:

-

random(n);

- - - - - - - - - - - -
АргументТипОписание
nThe upper range from which the random number will be selected.
-

-

Возвращается:

-

-

-

Пример:

-

if (random(10) >= 9)
- {
-     score += 100;
- }

-

Это даст примерно один шанс из десяти на добавление 100 к счету.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/random_get_seed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/random_get_seed.htm index d8a3b5768..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/random_get_seed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/random_get_seed.htm @@ -1,50 +0,0 @@ - - - - - random_get_seed - - - - - - - - - - - -

random_get_seed

-

Для генерации случайного числа GameMaker начинает со случайного начального числа. С помощью этой функции вы можете получить это число, которое затем можно сохранить для воспроизведения определенной серии случайных событий. Например, допустим, у вас есть процедурно - но игрок должен иметь возможность возвращаться в ранее открытые области. В начале каждой области вы можете сохранить случайное зерно с помощью этой функции, и каждый раз, когда вам нужно вернуться туда, вы можете использовать функцию random_set_seed() чтобы установить семя на прежнее значение и тем самым заставить GameMaker воспроизвести тот же набор "случайных" функций, который он использовал ранее.

-

-

Синтаксис:

-

random_get_seed();

-

-

Возвращается:

-

-

-

Пример:

-

ini_open("Save.ini")
ini_write_real("Levels", string(level), random_get_seed());
ini_close(); -

-

Приведенный выше код получит случайное зерно и сохранит его в ini-файле.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/random_range.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/random_range.htm index 6098d2424..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/random_range.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/random_range.htm @@ -1,67 +0,0 @@ - - - - - - random_range - - - - - - - - - - -

random_range

-

Эта функция возвращает случайное число в указанном диапазоне, причем возвращаемое значение не обязательно должно быть целым числом. Например, random_range(20,50) вернет случайное число от 20 до 50, но значение может быть вещественным числом, например 38.65265. - Вещественные числа также могут использоваться в качестве входных аргументов.

-

ПРИМЕЧАНИЕ: Эта функция будет возвращать одно и то же значение при каждом новом запуске игры, поскольку GameMaker каждый раз генерирует одно и то же начальное случайное зерно, чтобы облегчить отладку кода. Чтобы избежать такого поведения, используйте - randomise() в начале вашей игры.

-

-

Синтаксис:

-

random_range(n1, n2);

- - - - - - - - - - - - - - - -
АргументТипОписание
n1The low end of the range from which the random number will be selected.
n2The high end of the range from which the random number will be selected.
-

-

Возвращается:

-

-

-

Пример:

-

score += random_range(500, 600);

-

Это добавит к общему счету от 500 до 600 баллов.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/random_set_seed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/random_set_seed.htm index 1237eb5fe..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/random_set_seed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/random_set_seed.htm @@ -1,64 +0,0 @@ - - - - - - random_set_seed - - - - - - - - - - -

random_set_seed

-

Для генерации случайного числа GameMaker начинает работу со случайным начальным числом. С помощью этой функции вы можете установить это число на известное значение и таким образом "заставить" исход всех последующих случайных событий быть одинаковым при каждом запуске программы. Например, эту функцию можно использовать в сочетании с функцией random_get_seed() для создания процедурно генерируемого контента и сохранения результатов без огромных сохранений (вы сохраняете только семя, больше ничего не нужно). Если вам нужны действительно случайные результаты для всего, вы должны использовать функцию randomise() функцию.

-

ПРИМЕЧАНИЕ Хотя этот посевной материал дает стабильные результаты на каждой целевой платформе, результаты на разных платформах могут отличаться из-за различий в работе каждой цели.

-

-

Синтаксис:

-

random_set_seed(val);

- - - - - - - - - - - -
АргументТипОписание
valThe seed to set.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if debug
- {
-     random_set_seed(1, true);
- }

-

Приведенный выше код устанавливает случайное зерно в 1, только если переменная "debug" истинна.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/randomise.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/randomise.htm index 95eac01ca..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/randomise.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/randomise.htm @@ -1,51 +0,0 @@ - - - - - randomise - - - - - - - - - - -

randomise

-

Эта функция устанавливает семя в случайное значение. Если вам нужно сохранить постоянное значение в течение нескольких запусков игры, вам следует использовать random_set_seed(). Обратите внимание, что при использовании функций случайных чисел - в GameMaker начальное зерно всегда одно и то же, так как это значительно упрощает отслеживание ошибок и отладку. Если вы хотите проверить истинную случайность, вам следует вызвать эту функцию в начале игры. Функция - возвращает новое рандомизированное значение seed (беззнаковое 32-битное целое число).

-

-

Синтаксис:

-

randomise();
// or
randomize(); -

-

-

Возвращается:

-

(unsigned 32 bit value)

-

-

Пример:

-

randomise();

-

Приведенный выше код рандомизирует семя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/round.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/round.htm index 102f48ce1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/round.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/round.htm @@ -1,63 +0,0 @@ - - - - - round - - - - - - - - - - - -

round

-

Как и сказано, round() принимает вещественное число и округляет его до ближайшего целого числа в большую или меньшую сторону. В особом случае, когда число является полуцелым (1.5, 17.5, -2.5 и т.д.), число будет округлено до ближайшего четного значения, например, 2.5 будет округлено до 2, а 3.5 - до 4. Этот тип округления называется округлением Банкерса, и при большом количестве итераций или при использовании математики с плавающей запятой он дает статистически лучшее округление. - чем более традиционный подход "округлить вверх, если больше .5, и округлить вниз в противном случае".

-

Это означает, что если дробная часть значения равна 0,5, то округленным результатом будет четное целое число, ближайшее к входному значению. Так, например, 23,5 становится 24, как и 24,5, а -23,5 становится -24, как и -24,5. Этот метод обрабатывает положительные - и отрицательные значения симметрично, поэтому не имеет перекоса знака, и, что более важно, для разумных распределений значений ожидаемое (среднее) значение округленных чисел такое же, как и у исходных.

-

-

Синтаксис:

-

round(n);

- - - - - - - - - - - -
АргументТипОписание
nThe number to round.
-

-

Возвращается:

-

-

-

Пример:

-

score += round(hp / 5);

-

Приведенный выше код добавит округленное целое число к значению оценки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/sign.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/sign.htm index 7d8bcfaeb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/sign.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/sign.htm @@ -1,66 +0,0 @@ - - - - - - sign - - - - - - - - - - - - - - - -

sign

-

Эта функция позволяет определить, является ли число положительным, отрицательным или ни тем, ни другим, и возвращает 1, -1, 0 соответственно. Например - sign(458) вернет 1, sign(-5) вернет -1 и sign(0) вернет 0.

-

-

Синтаксис:

-

sign(n);

-

- - - - - - - - - - - -
АргументТипОписание
nThe number to get the sign of.
-

-

Возвращается:

-

-

-

Пример:

-

y += sign(y - mouse_y);

-

Приведенный выше код добавит к y 1, -1 или 0 в зависимости от результата y - mouse_y.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/sqr.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/sqr.htm index 2c2f2eac8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/sqr.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/sqr.htm @@ -1,60 +0,0 @@ - - - - - sqr - - - - - - - - - - - -

sqr

-

Умножает число на себя и возвращает квадрат этого числа. Например: sqr(5) возвращает 25, так как 5*5=25.

-

-

Синтаксис:

-

sqr(val);

- - - - - - - - - - - -
АргументТипОписание
valThe number to square.
-

-

Возвращается:

-

-

-

Пример:

-

score += sqr(dmg);

-

Приведенный выше код добавит к счету квадрат переменной "dmg".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/sqrt.htm b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/sqrt.htm index e0d67251f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/sqrt.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Maths_And_Numbers/Number_Functions/sqrt.htm @@ -1,61 +0,0 @@ - - - - - sqrt - - - - - - - - - - - -

sqrt

-

Если вы умножаете число на себя, вы получаете квадрат этого числа, но иногда вы хотите сделать обратное и получить квадратный корень из числа. Поэтому, чтобы узнать, какое число было умножено на само себя для получения любого заданного положительного значения, мы используем - эту функцию. Например: sqrt(9) вернет 3, так как 3*3=9.

-

-

Синтаксис:

-

sqrt(val);

- - - - - - - - - - - -
АргументТипОписание
valThe number to get the square root of.
-

-

Возвращается:

-

-

-

Пример:

-

num = sqrt(exp);

-

Приведенный выше код установит переменную "num" для хранения квадратного корня из значения, содержащегося в "exp".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/Collision_Compatibility_Mode.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/Collision_Compatibility_Mode.htm index cc92b008e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/Collision_Compatibility_Mode.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/Collision_Compatibility_Mode.htm @@ -1,44 +0,0 @@ - - - - - - Режим совместимости при столкновениях - - - - - - - - - - -

Режим совместимости при столкновениях

-

В общих опциях игры для вашего проекта вы можете включить "Режим совместимости столкновений", чтобы переключиться на устаревшую систему столкновений. Это необходимо сделать только в том случае, если вы заметили странное поведение коллизий в существующем проекте (проектах) после обновления до версии GameMaker 2022.1, в котором изменился принцип работы коллизий.

-

Collision Compatibility Mode option in Game Options

-

Изменения в столкновениях

-

В старой системе столкновений все координаты ограничивающей рамки округлялись до целых чисел и были "эксклюзивными", т.е. исключали крайние нижние и крайние правые края маски столкновений. Например, граничная область для маски столкновения размером 16x16 генерировалась от (0, 0) до (15, 15) (относительно). Это будет хорошо работать для экземпляров, использующих только целочисленные значения для позиционирования и масштабирования, однако использование значений с плавающей точкой приведет к неожиданному поведению и небольшому разрыву между рендерингом и проверкой столкновений, поскольку GameMaker будет всегда округлять значения граничной области для проверки столкновений.

-

В текущей системе столкновений значения граничных коробок не округляются и используются как есть, что означает, что столкновения более точны и ведут себя так, как можно было бы ожидать. Граничные рамки также теперь "инклюзивные", т.е. включают крайние нижние и крайние правые грани. Например, граничная область для маски столкновений 16x16 теперь генерируется от (0.0, 0.0) до (16.0, 16.0) (относительно).

-

Режим совместимости

-

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

-

Для проектов, которые являются новыми или не используют существующий код коллизии, нет необходимости включать эту опцию.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/Collisions.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/Collisions.htm index 152ecc87d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/Collisions.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/Collisions.htm @@ -1,93 +0,0 @@ - - - - - - Столкновения - - - - - - - - - - -

Столкновения

-

При планировании движений или принятии решений об определенных действиях часто важно проверить, есть ли столкновения с другими объектами в определенных местах игрового мира, и часто выбор подходящего столкновения является самой важной задачей. В GameMaker есть ряд встроенных функций, которые помогут вам правильно работать с коллизиями в соответствии с потребностями вашего проекта.

-

ПРИМЕЧАНИЕ В предыдущих версиях GameMaker функции столкновения использовали целочисленные значения, однако теперь они используют значения с плавающей точкой, что означает, что функции столкновения больше не будут округлять нецелые аргументы. Для получения дополнительной информации читайте раздел Режим совместимости столкновений.

-

-

В следующих функциях рассматриваются различные способы, с помощью которых можно заставить экземпляр проверять столкновения с другим экземпляром:

- -

-

Расширенная проверка столкновений

-

Для этого можно использовать следующие функции (а также другие функции, подробно описанные в разделах " Перемещение " и " Экземпляры"). Все эти функции столкновений работают немного по-разному, но у них есть три общих аргумента, которые мы здесь объясним:

-
    -
  • obj: Здесь мы указываем объект, столкновение с которым должна проверить функция. Это может быть идентификатор экземпляра, тип объекта или специальное ключевое слово GM all. Также стоит отметить, что если выбранный тип объекта является родителем других объектов, то все дочерние объекты этого объекта также будут включены в эту проверку.
  • -
  • prec: Это значение может быть либо true, либо false и относится к точности проверки столкновений. Если установлено значение true, то будут вычисляться точные столкновения (но только если проверяемый объект имеет в свойствах маски отметку "точно" для обнаружения столкновений), что является немного более сложной задачей для процессора и поэтому должно использоваться с осторожностью. Если false, то столкновения будут рассчитываться на основе граничной области проверяемого объекта.
  • -
  • notme: Вам может понадобиться проверить столкновения с объектом, который имеет тот же индекс, что и объект, выполняющий код, поэтому, чтобы код не нашел столкновения с самим собой, можно установить значение true. Если вы специально ищете экземпляр объекта, выполняющего код, или это не важно, можно оставить значение false.
  • -
-

Основные функции возвращают либо ID экземпляра, с которым произошло столкновение, либо специальное ключевое слово noone, если столкновения нет, а функции списка возвращают количество экземпляров, с которыми произошло столкновение, и заполняют их ID предварительно созданный список DS. Обратите внимание, что если существует несколько столкновений с областями, определенными этими функциями, и экземплярами данного объекта, возвращается только один ID экземпляра, и это может быть любой из экземпляров в столкновении.

-

Существуют следующие функции, которые работают с расширенными столкновениями.

- -

-

Проверка столкновений без маски

-

Все вышеперечисленные функции относятся к экземплярам, проверяющим столкновения, и как таковые полагаются на маску столкновений, определенную для экземпляра. Однако часто возникают ситуации, когда требуется проверить "столкновения" с точкой или областью, особенно если для экземпляра не назначен sprite, или когда вы работаете с мышью и т.д.. Поэтому GameMaker также предоставляет следующие функции, которые помогут вам в таких ситуациях:

- -

-

Физические коллизии

-

При использовании встроенной физики вышеуказанные функции столкновений не гарантируют работу для экземпляров с поддержкой физики. В основном это связано с тем, что эти экземпляры больше не используют большинство обычных встроенных переменных (вместо этого экземпляры с поддержкой физики имеют свой собственный набор переменных), а также не используют маску столкновения или ограничивающую рамку, поскольку вместо них используются фикстуры. Однако существует специальная функция для тестирования столкновений с включенной физикой, которая проверяет наличие перекрывающихся фикстур:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_circle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_circle.htm index ef7befbe9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_circle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_circle.htm @@ -1,95 +0,0 @@ - - - - - - collision_circle - - - - - - - - - - - -

collision_circle

-

Collision_circle создает вокруг точек x1,y1 круговую зону заданного пользователем радиуса, а затем проверяет эту зону на столкновение с любым экземпляром объекта, указанным в аргументе "obj". Эта проверка может быть точной или нет, но для включения точных столкновений, объект или экземпляр, который вы проверяете, должен также иметь включенные точные столкновения для своего sprite. Если нет, то проверка по умолчанию основывается на ограничительных границах. На следующем изображении показано, как это работает:

-

Здесь экземпляр в центре использует круг столкновения для проверки объектов-шаров. Теперь синие не имеют точной граничной области, и, как вы можете видеть, даже если sprite фактически не касается круга, столкновение все равно может произойти (даже если вы установите опцию exact в функции на true), так как граничная область этого sprite пересекает круговую область, определенную collision_circle. С другой стороны, зеленые шары будут считаться столкнувшимися только в том случае, если фактический sprite пересекает заданную окружность. Помните, что для учета точных столкновений как объект sprite, так и функция collision должны иметь метку exact как on. Следует также отметить, что возвращаемым значением функции может быть id любого из экземпляров, считающихся столкнувшимися.

-

Обратите внимание, что вместо индекса объекта вы можете указать экземпляр id для проверки конкретного экземпляра, или ключевые слова экземпляра all, или other (в зависимости от события и текущей области видимости кода).

-

-

Синтаксис:

-

collision_circle(x1, y1, rad, obj, prec, notme);

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the center of the circle to check.
y1РеальноThe y coordinate of the center of the circle to check.
radРеальноThe radius (distance in pixels from its center to its edge).
obj Идентификаторактива или экземпляраобъекта The object to check for instance collisions.
precБулевоWhether the check is based on pixel-perfect collisions (true = slow) or its bounding box in general (false = fast).
notmeБулевоWhether the calling instance, if relevant, should be excluded (true) или нет (false).
-

-

Возвращается:

-

Instance ID or noone

-

-

Пример:

-

if collision_circle(x, y, 20, obj_Cursor, false, true)
- {
-     image_index = 1;
- }
- else image_index = 0;

-

Приведенный выше код проверит круглую область с радиусом 20 пикселей на столкновение с "obj_Cursor", и если оно есть, то установит image_index объекта, выполняющего код, равным 1, а если нет, то установит image_index объекта равным 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_circle_list.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_circle_list.htm index 765809ab7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_circle_list.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_circle_list.htm @@ -1,109 +0,0 @@ - - - - - - collision_circle_list - - - - - - - - - - - -

collision_circle_list

-

Эта функция аналогична функции collision_circle() только вместо того, чтобы обнаруживать столкновение только одного объекта за раз, она будет обнаруживать несколько объектов. Вы указываете x/y позицию центра круговой области для проверки, радиус и объект для проверки, а также можете задать точность проверки (в этом случае все проверяемые экземпляры должны иметь точные маски столкновений) и указать, должна ли проверка включать вызывающий экземпляр или нет.

-

Вы также предоставляете список DS, поэтому id значения всех экземпляров, которые сталкиваются с вызывающим экземпляром, будут добавлены в конец данного списка. Вы можете очистить список перед вызовом этой функции, чтобы он содержал только результаты этого вызова функции. Также есть возможность упорядочить экземпляры по расстоянию от начала круговой области до их начала. Функция возвращает количество найденных экземпляров или 0, если не найдено ни одного.

-

Обратите внимание, что вместо индекса объекта можно использовать ключевое слово instance all, чтобы проверить все экземпляры в текущей комнате, что может включать экземпляр, выполняющий код (в зависимости от аргумента notme ).

-

-

Синтаксис:

-

collision_circle_list(x1, y1, rad, obj, prec, notme, list, ordered);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the center of the circle to check.
y1РеальноThe y coordinate of the center of the circle to check.
radРеальноThe radius (distance in pixels from its center to its edge).
obj Идентификаторактива или экземпляраобъекта The object to check for instance collisions.
precБулевоWhether the check is based on precise collisions (true, что медленнее) или его граничная область в целом (false, быстрее).
notmeБулевоWhether the calling instance, if relevant, should be excluded (true) или нет (false).
listИдентификатор списка DSThe DS list to use to store the IDs of colliding instances.
orderedБулевоWhether the list should be ordered by distance (true) или нет (false).
-

-

Возвращается:

-

Real (The number of instances found to be in collision)

-

-

Пример:

-

var _list = ds_list_create();
- var _num = collision_circle_list(x, y, 100, obj_enemy, false, true, _list, false);
- if (_num > 0)
- {
-     for (var i = 0; i < _num; ++i)
-     {
-         instance_destroy(_list[| i]);
-     }
- }
- ds_list_destroy(_list);

-

Приведенный выше код проверяет круговую область с радиусом 100 пикселей вокруг позиции вызывающего экземпляра на наличие столкновений с экземплярами "obj_Enemy". Если столкновения есть, то предварительно созданный список просматривается, и каждый экземпляр, который был в столкновении, уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_ellipse.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_ellipse.htm index 903108f97..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_ellipse.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_ellipse.htm @@ -1,99 +0,0 @@ - - - - - - collision_ellipse - - - - - - - - - - - -

collision_ellipse

-

Collision_ellipse использует первые четыре аргумента (x1,y1,x2,y2) для определения ширины и высоты эллипса в пределах текущей комнаты, а затем проверяет, не находится ли какой-либо объект, определенный аргументом "obj", в столкновении с этой областью. Это столкновение может быть проверено как точное или нет, и вы также можете выбрать, проверять ли сам экземпляр, выполняющий код, или нет. Рассмотрим следующее изображение:

-

Здесь экземпляр в центре использует эллипс столкновения для проверки объектов-шаров. Теперь синие не имеют точной граничной области, и, как вы видите, даже если sprite фактически не касается эллипса, столкновение все равно может произойти (даже если вы установите опцию exact в функции на true), так как граничная область этого sprite пересекает эллиптическую область, определенную collision_circle. С другой стороны, зеленые шары будут считаться столкнувшимися только в том случае, если фактический sprite пересекает определенный эллипс. Помните, что для учета точных столкновений и объект sprite, и функция столкновения должны иметь значение "Точное". Следует также отметить, что возвращаемым значением функции может быть id любого из экземпляров, считающихся столкнувшимися.

-

Обратите внимание, что вместо индекса объекта вы можете указать экземпляр id для проверки конкретного экземпляра, или ключевые слова экземпляра all, или other (в зависимости от события и текущей области видимости кода).

-

-

Синтаксис:

-

collision_ellipse(x1, y1, x2, y2, obj, prec, notme);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the left side of the ellipse to check.
y1РеальноThe y coordinate of the top side of the ellipse to check.
x2РеальноThe x coordinate of the right side of the ellipse to check.
y2РеальноThe y coordinate of the bottom side of the ellipse to check.
obj Идентификаторактива или экземпляраобъекта The object to check for instance collisions.
precБулевоWhether the check is based on precise collisions (true, что медленнее) или его граничная область в целом (false, быстрее).
notmeБулевоWhether the calling instance, if relevant, should be excluded (true) или нет (false).
-

-

Возвращается:

-

Instance ID or noone

-

-

Пример:

-

if collision_ellipse(50, 50, 200, 100, obj_Player, false, true)
- {
-     instance_create_layer(obj_Player.x, obj_player.y, "Effects", obj_splash);
- }

-

При этом будет проверена эллиптическая зона в пределах 50x, 50y и 200x, 100y для объекта "obj_Player". Если произойдет столкновение с этим объектом, то будет создан экземпляр "obj_Splash" в координатах x/y объекта obj_Player.

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_ellipse_list.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_ellipse_list.htm index 2f43f1930..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_ellipse_list.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_ellipse_list.htm @@ -1,114 +0,0 @@ - - - - - - collision_ellipse_list - - - - - - - - - - - -

collision_ellipse_list

-

Эта функция аналогична функции collision_ellipse() только вместо обнаружения одного столкновения за раз, она обнаруживает несколько столкновений. Вы задаете позиции x/y левого верхнего и правого нижнего угла эллиптической области для проверки, а также объект для проверки, и можете установить точность проверки (в этом случае все проверяемые экземпляры должны иметь точные маски столкновений), а также указать, должна ли проверка включать вызывающий экземпляр или нет.

-

Вы также предоставляете список DS, поэтому id значения всех экземпляров, которые сталкиваются с вызывающим экземпляром, будут добавлены в конец данного списка. Вы можете очистить список перед вызовом этой функции, чтобы он содержал только результаты этого вызова функции. Также есть возможность упорядочить экземпляры по расстоянию от начала эллиптической области до их начала. Функция возвращает количество найденных экземпляров или 0, если не найдено ни одного.

-

Обратите внимание, что вместо индекса объекта можно использовать ключевое слово instance all, чтобы проверить все экземпляры в текущей комнате, что может включать экземпляр, выполняющий код (в зависимости от аргумента notme ).

-

-

Синтаксис:

-

collision_ellipse_list(x1, y1, x2, y2, obj, prec, notme, list, ordered);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the left side of the ellipse to check.
y1РеальноThe y coordinate of the top side of the ellipse to check.
x2РеальноThe x coordinate of the right side of the ellipse to check.
y2РеальноThe y coordinate of the bottom side of the ellipse to check.
obj Идентификаторактива или экземпляраобъекта The object to check for instance collisions.
precБулевоWhether the check is based on precise collisions (true, что медленнее) или его граничная область в целом (false, быстрее).
notmeБулевоWhether the calling instance, if relevant, should be excluded (true) или нет (false).
listИдентификатор списка DSThe DS list to use to store the IDs of colliding instances.
orderedБулевоWhether the list should be ordered by distance (true) или нет (false).
-

-

Возвращается:

-

Real (The number of instances found to be in collision)

-

-

Пример:

-

var _list = ds_list_create();
- var _num = collision_ellipse_list(x - 100, y - 100, x + 100, y + 100, obj_enemy, false, true, _list, false);
- if (_num > 0)
- {
-     for (var i = 0; i < _num; ++i)
-     {
-         instance_destroy(_list[| i]);
-     }
- }
- ds_list_destroy(_list);

-

Приведенный выше код проверит эллиптическую область в 100 пикселей вокруг позиции вызывающего экземпляра на наличие столкновений с экземплярами "obj_Enemy". Если столкновения есть, то предварительно созданный список просматривается, и каждый экземпляр, который был в столкновении, уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_line.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_line.htm index 3751818f1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_line.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_line.htm @@ -1,98 +0,0 @@ - - - - - - collision_line - - - - - - - - - - - -

collision_line

-

Collision_line проверяет линию от точки x1,y1 до точки x2,y2 на столкновение с любым экземпляром объекта, указанного аргументом "obj". Эта проверка может быть точной или нет, но для включения точных столкновений объект или экземпляр, который вы проверяете, должен также иметь включенные точные столкновения для своего sprite. Если нет, то проверка по умолчанию основывается на граничных коробках. На следующем изображении показано, как это работает:

-

Помните, что для учета точных столкновений и объект sprite, и функция столкновения должны быть отмечены как точные. Следует также отметить, что возвращаемое значение функции может быть id любого из экземпляров, считающихся столкнувшимися вдоль линии, поэтому если три экземпляра пересекают определенную линию, то любой из их id может быть возвращаемым значением функции.

-

Обратите внимание, что вместо индекса объекта вы можете указать экземпляр id для проверки конкретного экземпляра, или ключевые слова экземпляра all, или other (в зависимости от события и текущей области видимости кода).

-

-

Синтаксис:

-

collision_line(x1, y1, x2, y2, obj, prec, notme);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the start of the line.
y1РеальноThe y coordinate of the start of the line.
x2РеальноThe x coordinate of the end of the line.
y2РеальноThe y coordinate of the end of the line.
obj Идентификаторактива или экземпляраобъекта The object to check for instance collisions.
precБулевоWhether the check is based on precise collisions (true, что медленнее) или его граничная область в целом (false, быстрее).
notmeБулевоWhether the calling instance, if relevant, should be excluded (true) или нет (false).
-

-

Возвращается:

-

Instance ID or noone

-

-

Пример:

-

with (obj_Enemy)
- {
-     if collision_line(100, 400, 100, 600, id, false, false) instance_destroy();
- }

-

Этот код заставляет все экземпляры "obj_Enemy" проверить линию от 100x, 400y до 100x, 600y на наличие столкновения с собой, и если таковое имеется, то они уничтожаются.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_line_list.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_line_list.htm index 893aeac46..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_line_list.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_line_list.htm @@ -1,114 +0,0 @@ - - - - - - collision_line_list - - - - - - - - - - - -

collision_line_list

-

Эта функция аналогична функции collision_line() только вместо того, чтобы обнаруживать только один экземпляр в столкновении за раз, она будет обнаруживать несколько экземпляров. Вы указываете x/y позиции начала и конца линии для проверки, а также объект для проверки, и можете задать точность проверки (в этом случае все проверяемые экземпляры должны иметь точные маски столкновений) и указать, должна ли проверка включать вызывающий экземпляр или нет.

-

Вы также предоставляете список DS, поэтому id значения всех экземпляров, которые сталкиваются с вызывающим экземпляром, будут добавлены в конец данного списка. Вы можете очистить список перед вызовом этой функции, чтобы он содержал только результаты этого вызова функции. Также есть возможность упорядочить экземпляры по расстоянию от центра линии до их начала. Функция возвращает количество найденных экземпляров или 0, если не найдено ни одного.

-

Обратите внимание, что вместо индекса объекта можно использовать ключевое слово instance all, чтобы проверить все экземпляры в текущей комнате, что может включать экземпляр, выполняющий код (в зависимости от аргумента notme ).

-

-

Синтаксис:

-

collision_line_list(x1, y1, x2, y2, obj, prec, notme, list, ordered);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the start of the line.
y1РеальноThe y coordinate of the start of the line.
x2РеальноThe x coordinate of the end of the line.
y2РеальноThe y coordinate of the end of the line.
obj Идентификаторактива или экземпляраобъекта The object to check for instance collisions.
precБулевоWhether the check is based on precise collisions (true, что медленнее) или его граничная область в целом (false, быстрее).
notmeБулевоWhether the calling instance, if relevant, should be excluded (true) или нет (false).
listИдентификатор списка DSThe DS list to use to store the IDs of colliding instances.
orderedБулевоWhether the list should be ordered by distance (true) или нет (false).
-

-

Возвращается:

-

Real (The number of instances found to be in collision)

-

-

Пример:

-

var _list = ds_list_create();
- var _num = collision_line_list(x - 100, y, x + 100, y, obj_enemy, false, true, _list, false);
- if (_num > 0)
- {
-     for (var i = 0; i < _num; ++i)
-     {
-         instance_destroy(_list[| i]);
-     }
- }
- ds_list_destroy(_list);

-

Приведенный выше код проверяет линию в 100 пикселей в обе стороны от позиции вызывающего экземпляра на наличие столкновений с экземплярами "obj_Enemy". Если столкновения есть, то предварительно созданный список просматривается, и каждый экземпляр, который был в столкновении, уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_point.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_point.htm index 20d738cbd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_point.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_point.htm @@ -1,88 +0,0 @@ - - - - - - collision_point - - - - - - - - - - - -

collision_point

-

Collision_point проверяет точку, указанную аргументами x1,y1, на столкновение с любым экземпляром объекта, указанного аргументом "obj". Эта проверка может быть точной или нет, но для включения точных столкновений объект или экземпляр, который вы проверяете, должен также иметь включенные точные столкновения для своего sprite. Если нет, то проверка по умолчанию основывается на граничных коробках. На следующем изображении показано, как это работает:

-

Помните, что для учета точных столкновений и объект sprite, и функция столкновения должны быть отмечены как точные. Следует также отметить, что возвращаемое значение функции может быть id любого из экземпляров, считающихся столкнувшимися, поэтому если три экземпляра пересекаются в данной точке, то любой из их id может быть возвращаемым значением функции.

-

Обратите внимание, что вместо индекса объекта вы можете указать экземпляр id для проверки конкретного экземпляра, или ключевые слова экземпляра all, или other (в зависимости от события и текущей области видимости кода).

-

-

Синтаксис:

-

collision_point(x, y, obj, prec, notme);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x coordinate of the point to check.
yРеальноThe y coordinate of the point to check.
obj Идентификаторактива или экземпляраобъекта The object to check for instance collisions.
precБулевоWhether the check is based on precise collisions (true, что медленнее) или его граничная область в целом (false, быстрее).
notmeБулевоWhether the calling instance, if relevant, should be excluded (true) или нет (false).
-

-

Возвращается:

-

Instance ID or noone

-

-

Пример:

-

if collision_point(x, y, obj_Cursor, false, true)
- {
-     score += 10S;
- }

-

Здесь мы проверяем точку в позиции объекта, имеющего код объекта "obj_Cursor". Если такая точка есть, то мы добавляем 10 к переменной score.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_point_list.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_point_list.htm index bb91339ba..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_point_list.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_point_list.htm @@ -1,104 +0,0 @@ - - - - - - collision_point_list - - - - - - - - - - - -

collision_point_list

-

Эта функция аналогична функции collision_point() только вместо того, чтобы обнаруживать столкновение только одного экземпляра за раз, она будет обнаруживать несколько экземпляров. Вы указываете x/y позицию точки для проверки и можете задать точность проверки (в этом случае все проверяемые экземпляры должны иметь точные маски столкновений), а также указать, должна ли проверка включать вызывающий экземпляр или нет.

-

Вы также предоставляете список DS, поэтому id значения всех экземпляров, которые сталкиваются с вызывающим экземпляром, будут добавлены в конец данного списка. Вы можете очистить список перед вызовом этой функции, чтобы он содержал только результаты этого вызова функции. Также есть возможность упорядочить экземпляры по расстоянию от заданной точки до их начала. Функция возвращает количество найденных экземпляров или 0, если не найдено ни одного.

-

Обратите внимание, что вместо индекса объекта можно использовать ключевое слово instance all, чтобы проверить все экземпляры в текущей комнате, что может включать экземпляр, выполняющий код (в зависимости от аргумента notme ).

-

-

Синтаксис:

-

collision_point_list(x, y, obj, prec, notme, list, ordered);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x coordinate of the point to check.
yРеальноThe y coordinate of the point to check.
obj Идентификаторактива или экземпляраобъекта The object to check for instance collisions.
precБулевоWhether the check is based on precise collisions (true, что медленнее) или его граничная область в целом (false, быстрее).
notmeБулевоWhether the calling instance, if relevant, should be excluded (true) или нет (false).
listИдентификатор списка DSThe DS list to use to store the IDs of colliding instances.
orderedБулевоWhether the list should be ordered by distance (true) или нет (false).
-

-

Возвращается:

-

Real (The number of instances found to be in collision)

-

-

Пример:

-

var _list = ds_list_create();
- var _num = collision_point_list(x, y, obj_enemy, false, true, _list, false);
- if (_num > 0)
- {
-     for (var i = 0; i < _num; ++i)
-     {
-         instance_destroy(_list[| i]);
-     }
- }
- ds_list_destroy(_list);

-

Приведенный выше код проверит позицию вызывающего экземпляра на наличие столкновений с экземплярами "obj_Enemy". Если столкновения есть, то предварительно созданный список просматривается, и каждый экземпляр, который был в столкновении, уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_rectangle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_rectangle.htm index ca0084e1e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_rectangle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_rectangle.htm @@ -1,100 +0,0 @@ - - - - - - collision_rectangle - - - - - - - - - - - -

collision_rectangle

-

Collision_rectangle использует первые четыре аргумента (x1,y1,x2,y2) для определения области в текущей комнате, а затем проверяет, не столкнулся ли какой-либо объект, определенный аргументом "obj", с этой областью. Это столкновение может быть проверено как точное или нет, и вы также можете выбрать, проверять ли сам экземпляр, выполняющий код, или нет. Рассмотрим это изображение:

-

Здесь экземпляр в центре использует прямоугольник столкновения для проверки объектов-шаров. Теперь синие не имеют точной граничной области, и, как вы можете видеть, даже если sprite фактически не касается прямоугольника, столкновение все равно произойдет (даже если вы установите параметр exact в функции на true), так как граничная область этого sprite пересекает прямоугольник collision_rectangle. С другой стороны, зеленые шарики будут считаться столкнувшимися только в том случае, если фактический sprite пересекает прямоугольник. Помните, что для учета точных столкновений и объект sprite, и функция столкновения должны иметь значение "точное". Следует также отметить, что возвращаемым значением функции может быть id любого из экземпляров, считающихся столкнувшимися.

-

Обратите внимание, что вместо индекса объекта вы можете указать экземпляр id для проверки конкретного экземпляра, или ключевые слова экземпляра all, или other (в зависимости от события и текущей области видимости кода).

-

-

Синтаксис:

-

collision_rectangle(x1, y1, x2, y2, obj, prec, notme);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the left side of the rectangle to check.
y1РеальноThe y coordinate of the top side of the rectangle to check.
x2РеальноThe x coordinate of the right side of the rectangle to check.
y2РеальноThe y coordinate of the bottom side of the rectangle to check.
obj Идентификаторактива или экземпляраобъекта The object to check for instance collisions.
precБулевоWhether the check is based on precise collisions (true, что медленнее) или его граничная область в целом (false, быстрее).
notmeБулевоWhether the calling instance, if relevant, should be excluded (true) или нет (false).
-

-

Возвращается:

-

Instance ID or noone

-

-

Пример:

-

var inst;
- inst = collision_rectangle(50, 50, 200, 100, obj_Ball, false, true);
- if (inst != noone)
- {
-     instance_destroy(_inst);
- }

-

Этот короткий код использует функцию collision_rectangle для проверки области в комнате от 50x, 50y (верхняя левая часть прямоугольника) до 200x, 200y (нижняя правая часть прямоугольника) на наличие экземпляра объекта под названием "obj_ball". Возвращаемое значение сохраняется во временной переменной, которая затем проверяется на то, является ли это значение идентификатором экземпляра или ключевым словом никто. Если это не никто, то для уничтожения объекта используется сохраненный идентификатор экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_rectangle_list.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_rectangle_list.htm index 17b31296c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_rectangle_list.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/collision_rectangle_list.htm @@ -1,114 +0,0 @@ - - - - - - collision_rectangle_list - - - - - - - - - - - -

collision_rectangle_list

-

Эта функция аналогична функции collision_rectangle() только вместо того, чтобы обнаруживать только один столкнувшийся объект за раз, она будет обнаруживать несколько объектов. Вы задаете x/y позиции верхнего левого и нижнего правого угла области для проверки, а также объект для проверки, и можете задать точность проверки (в этом случае все проверяемые экземпляры должны иметь точные маски столкновений), а также указать, должна ли проверка включать вызывающий экземпляр или нет.

-

Вы также предоставляете список DS, поэтому id значения всех экземпляров, которые сталкиваются с вызывающим экземпляром, будут добавлены в конец данного списка. Вы можете очистить список перед вызовом этой функции, чтобы он содержал только результаты этого вызова функции. Также можно упорядочить экземпляры по расстоянию от центра прямоугольной области до их начала. Функция возвращает количество найденных экземпляров или 0, если не найдено ни одного.

-

Обратите внимание, что вместо индекса объекта можно использовать ключевое слово instance all, чтобы проверить все экземпляры в текущей комнате, что может включать экземпляр, выполняющий код (в зависимости от аргумента notme ).

-

-

Синтаксис:

-

collision_rectangle_list(x1, y1, x2, y2, obj, prec, notme, list, ordered);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
x1РеальноThe x coordinate of the left side of the rectangle to check.
y1РеальноThe y coordinate of the top side of the rectangle to check.
x2РеальноThe x coordinate of the right side of the rectangle to check.
y2РеальноThe y coordinate of the bottom side of the rectangle to check.
obj Идентификаторактива или экземпляраобъекта The object to check for instance collisions.
precБулевоWhether the check is based on precise collisions (true, что медленнее) или его граничная область в целом (false, быстрее).
notmeБулевоWhether the calling instance, if relevant, should be excluded (true) или нет (false).
listИдентификатор списка DSThe DS list to use to store the IDs of colliding instances.
orderedБулевоWhether the list should be ordered by distance (true) или нет (false).
-

-

Возвращается:

-

Real (The number of instances found to be in collision)

-

-

Пример:

-

var _list = ds_list_create();
- var _num = collision_rectangle_list(x - 100, y - 100, x + 100, y + 100, obj_Enemy, false, true, _list, false);
- if (_num > 0)
- {
-     for (var i = 0; i < _num; ++i)
-     {
-         instance_destroy(_list[| i]);
-     }
- }
- ds_list_destroy(_list);

-

Код выше проверяет прямоугольную область в 100 пикселей вокруг позиции вызывающего экземпляра на наличие столкновений с экземплярами "obj_Enemy". Если столкновения есть, то предварительно созданный список просматривается, и каждый экземпляр, который был в столкновении, уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/place_empty.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/place_empty.htm index 9bef968a3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/place_empty.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/place_empty.htm @@ -1,79 +0,0 @@ - - - - - - place_empty - - - - - - - - - - - -

place_empty

-

Вы можете использовать эту функцию, чтобы проверить, столкнется ли вызывающий экземпляр с любым другим экземпляром объекта или со всеми экземплярами в вашей игре. Чтобы столкновение разрешилось правильно, у экземпляра, выполняющего код, должна быть действительная маска столкновения (либо для самого sprite, либо через mask_index), и он будет регистрировать столкновения только с теми экземплярами, которые также имеют действительную маску.

-

Функция проверяет, нет ли столкновений, если вызываемый экземпляр будет помещен в определенную позицию, и вы можете указать дополнительный аргумент для уточнения проверки, чтобы проверить, свободна ли позиция от столкновений с экземплярами данного типа. Обратите внимание, что если не указан дополнительный идентификатор объекта, то проверка будет выполнена для всех экземпляров в пределах комнаты. Проверка столкновений будет либо точной, либо основанной на граничной области экземпляра, в зависимости от того, какая маска столкновений была выбрана, но для корректной работы точных столкновений все экземпляры в проверке должны иметь точные маски столкновений.

-

Обратите внимание, что перед выполнением проверки заданные координаты x/y будут приведены к ближайшему целому числу.

-

-

Синтаксис:

-

place_empty(x, y, [object_id]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x position to check.
yРеальноThe y position to check.
[object_id]Объект АктивыOPTIONAL Объект для проверки.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if place_empty(mouse_x, mouse_y, obj_Enemy)
- {
-     x = mouse_x;
-     y = mouse_y;
- }

-

Приведенный выше код проверяет наличие столкновения с любым другим экземпляром объекта "obj_Enemy", как если бы вызывающий экземпляр был помещен в ту же позицию, что и мышь. Если столкновения не обнаружено, то координаты x/y экземпляра устанавливаются равными координатам мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/place_free.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/place_free.htm index 146585bdc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/place_free.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/place_free.htm @@ -1,71 +0,0 @@ - - - - - - place_free - - - - - - - - - - - -

place_free

-

С помощью этой функции можно проверить, не столкнется ли вызывающий экземпляр с любым экземпляром, отмеченным как твердый в вашей игре. Следует отметить, что для работы этой функции у экземпляра, выполняющего код, должна быть действительная маска столкновений (либо для самого sprite, либо с помощью функции mask_index), и он будет регистрировать столкновения только с теми экземплярами, помеченными как твердые, у которых также есть действительная маска.

-

Сама функция работает следующим образом: берется экземпляр и проверяется на столкновения только со сплошными отмеченными экземплярами при размещении в позиции, заданной аргументами x/y. Проверка столкновений может быть как точной, так и основанной на граничной области экземпляра, в зависимости от того, какая маска столкновений была выбрана.

-

Обратите внимание, что перед выполнением проверки заданные координаты x/y будут приведены к ближайшему целому числу.

-

-

Синтаксис:

-

place_free(x, y);

- - - - - - - - - - - - - - - -
АргументТипОписание
xThe x position to check.
yThe y position to check.
-

-

Возвращается:

-

-

-

Пример:

-

if place_free(mouse_x, mouse_y)
- {
-     x = mouse_x;
-     y = mouse_y;
- }

-

Приведенный выше код проверит столкновение с любым экземпляром с твердым флагом, если вызывающий экземпляр будет помещен в то же положение, что и мышь. Если столкновение не обнаружено, то координаты x/y экземпляра устанавливаются равными координатам мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/place_meeting.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/place_meeting.htm index 847f44755..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/place_meeting.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/place_meeting.htm @@ -1,77 +0,0 @@ - - - - - - place_meeting - - - - - - - - - - - -

place_meeting

-

С помощью этой функции вы можете проверить позицию на столкновение с другим экземпляром или со всеми экземплярами объекта, используя маску столкновения того экземпляра, который выполняет код проверки. При использовании этой функции вы фактически просите GameMaker переместить экземпляр в новую позицию, проверить наличие столкновения, вернуться назад и сообщить вам, было ли обнаружено столкновение или нет. Это будет работать для точных столкновений, но только если и у экземпляра, и у проверяемого объекта выбраны маски точных столкновений, в противном случае применяются только столкновения с ограничивающей рамкой. Эта функция также принимает специальные ключевые слова all и other. Обратите внимание, что если вам нужно получить уникальный идентификатор экземпляра объекта, с которым происходит столкновение, следует использовать instance_place().

-

Обратите внимание, что перед выполнением проверки заданные координаты x/y будут приведены к ближайшему целому числу.

-

-

Синтаксис:

-

place_meeting(x, y, obj);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x position to check.
yРеальноThe y position to check.
obj Идентификаторактива или экземпляраобъекта The instance or object to check for.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if keyboard_check(vk_left)
- {
-     if !place_meeting(x - 5, y, obj_wall) x -=5;
- }

-

Приведенный выше код проверяет, нет ли столкновения слева от экземпляра, и перемещает экземпляр, если его нет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/point_in_circle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/point_in_circle.htm index 7ada63325..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/point_in_circle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/point_in_circle.htm @@ -1,84 +0,0 @@ - - - - - - point_in_circle - - - - - - - - - - - -

point_in_circle

-

При использовании этой функции вы задаете круглую область, а GameMaker определяет, попадает ли заданная точка в ее пределы или нет. Если точка попадает в заданный круг, функция вернет true, в противном случае функция вернет false.

-

-

Синтаксис:

-

point_in_circle(px, py, x1, y1, rad);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
pxThe x coordinate of the point to check.
pyThe y coordinate of the point to check.
x1The x coordinate of the circle centre.
y1The y coordinate of the circle centre.
radThe radius of the circle.
-

-

Возвращается:

-

-

-

Пример:

-

if point_in_circle(mouse_x, mouse_y, x, y, 16)
- {
-     over = true;
- }
- else
- {
-     over = false;
- }

-

Приведенный выше код использует функцию point_in_circle для проверки, попадает ли позиция мыши в определенную круговую область, устанавливая переменную "over" в значение true, если попадает, или false в противном случае.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/point_in_rectangle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/point_in_rectangle.htm index c96a26b2a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/point_in_rectangle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/point_in_rectangle.htm @@ -1,84 +0,0 @@ - - - - - - point_in_rectangle - - - - - - - - - - - -

point_in_rectangle

-

При использовании этой функции вы задаете прямоугольную область, а GameMaker определяет, попадает ли заданная точка в ее пределы или нет. Если точка попадает в заданный прямоугольник, функция вернет true, в противном случае функция вернет false.

-

-

Синтаксис:

-

point_in_rectangle(px, py, x1, y1, x2, y2);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
pxThe x coordinate of the point to check.
pyThe y coordinate of the point to check.
x1The x coordinate of the left side of the rectangle to check.
y1The y coordinate of the top side of the rectangle to check.
x2The x coordinate of the right side of the rectangle to check.
y2The y coordinate of the bottom side of the rectangle to check.
-

-

Возвращается:

-

-

-

Пример:

-

if point_in_rectangle(mouse_x, mouse_y, x -10, y - 10, x + 10, y + 10)
- {
-     audio_play_sound(snd_click, 0, false);
- }

-

Этот короткий код проверяет положение мыши относительно заданной прямоугольной области и воспроизводит звук, если она попадает в границы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/point_in_triangle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/point_in_triangle.htm index 44c957aa1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/point_in_triangle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/point_in_triangle.htm @@ -1,97 +0,0 @@ - - - - - - point_in_triangle - - - - - - - - - - - -

point_in_triangle

-

При использовании этой функции вы задаете треугольную область, а GameMaker определяет, попадает ли заданная точка в ее пределы или нет. Если точка попадает в заданный треугольник, функция вернет true, в противном случае функция вернет false.

-

-

Синтаксис:

-

point_in_triangle(px, py, x1, y1, x2, y2, x3, y3);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
pxThe x coordinate of the point to check.
pyThe y coordinate of the point to check.
x1The x coordinate of the first corner of the triangle to check.
y1The y coordinate of the first corner of the triangle to check.
x2The x coordinate of the second corner of the triangle to check.
y2The y coordinate of the second corner of the triangle to check.
x3The x coordinate of the third corner of the triangle to check.
y3The y coordinate of the third corner of the triangle to check.
-

-

Возвращается:

-

-

-

Пример:

-

var inst = instance_nearest(x, y, obj_Player);
- if (instance_exists(inst))
- {
-     var _x1 = x + lengthdir_x(100, image_angle - 45);
-     var _y1 = y + lengthdir_y(100, image_angle - 45);
-     var _x2 = x + lengthdir_x(100, image_angle + 45);
-     var _y2 = y + lengthdir_y(100, image_angle + 45);
-     _can_see = point_in_triangle(_inst.x, _inst.y, x, y, _x1, _y1, _x2, _y2);
- }

-

Приведенный выше код использует функцию point_in_triangle как "конус зрения" для проверки наличия экземпляра "obj_player", устанавливая переменную true, если положение объектов x/y попадает в определенный треугольник.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/position_change.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/position_change.htm index ccef69232..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/position_change.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/position_change.htm @@ -1,77 +0,0 @@ - - - - - - position_change - - - - - - - - - - -

position_change

-

Эта функция проверяет позицию на наличие столкновения с любыми экземплярами в данной точке, и если таковое имеется, она изменяет все экземпляры в столкновении на экземпляры выбранного объекта. Вы можете установить аргумент "perf" на true, что заставит GameMaker выполнить события Destroy и Clean Up найденного экземпляра, а также событие Create нового экземпляра, или false, чтобы не выполнять ни одно из этих событий. Обратите внимание, что если вы не будете выполнять события Destroy, Clean Up и Create, то любой созданный экземпляр, использующий переменную, которая обычно определяется в событии create, приведет к аварийному завершению игры, так как переменная больше не будет существовать.

-

-

Синтаксис:

-

position_change(x, y, obj, perf);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x coordinate of where to change colliding instances.
yРеальноThe y coordinate of where to change colliding instances.
objОбъект АктивыThe new object the calling object will change into.
perfБулевоWhether to perform that new object's Create event (true) or not (false).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

position_change(200, 200, obj_Bird, true);

-

Это изменит все экземпляры, столкнувшиеся в точке (200,200), на экземпляр "obj_Bird", выполнив для каждого из них событие Create.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/position_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/position_destroy.htm index e015663af..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/position_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/position_destroy.htm @@ -1,67 +0,0 @@ - - - - - - position_destroy - - - - - - - - - - -

position_destroy

-

Эта функция просто уничтожает все экземпляры, которые находятся в столкновении с указанной позицией. Столкновения основаны на маске экземпляров, и если какая-либо часть маски пересекается с целевой точкой, то функция уничтожит этот экземпляр. Экземпляры, уничтоженные таким образом, запускают свои события Destroy и Clean Up.

-

-

Синтаксис:

-

position_destroy(x, y);

- - - - - - - - - - - - - - - -
АргументТипОписание
xThe x coordinate of where to destroy colliding instances.
yThe y coordinate of where to destroy colliding instances.
-

-

Возвращается:

-

-

-

Пример:

-

if mouse_check_button_pressed(mb_left)
- {
-     position_destroy(mouse_x, mouse_y);
- }

-

Это уничтожит все экземпляры, которые сталкиваются с позицией курсора мыши при нажатии левой кнопки мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/position_empty.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/position_empty.htm index 665b23205..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/position_empty.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/position_empty.htm @@ -1,70 +0,0 @@ - - - - - - position_empty - - - - - - - - - - - -

position_empty

-

Эта функция проверяет, входит ли данная позиция в столкновение с любым экземпляром с действительной маской столкновения в данной позиции.

-

-

Синтаксис:

-

position_empty(x, y);

- - - - - - - - - - - - - - - -
АргументТипОписание
xThe x position to check.
yThe y position to check.
-

-

Возвращается:

-

-

-

Пример:

-

var xx, yy;
- xx = random(room_width);
- yy = random(room_height);
- if (position_empty(xx, yy))
- {
-     instance_create_layer(_xx, _yy, "Bullets", obj_bomb);
- }

-

Он проверит случайную позицию в комнате на наличие столкновения и, если его нет, создаст экземпляр obj_Bomb.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/position_meeting.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/position_meeting.htm index 2139fd1a5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/position_meeting.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/position_meeting.htm @@ -1,79 +0,0 @@ - - - - - - position_meeting - - - - - - - - - - - -

position_meeting

-

С помощью этой функции можно проверить позицию на столкновение с другим экземпляром или всеми экземплярами объекта. При использовании этой функции вы проверяете одну точку в комнате на наличие экземпляра или объекта. Проверка будет выполнена по ограничивающей рамке экземпляра или по маске экземпляра, если у этого экземпляра проверены точные столкновения. Если вам нужно получить уникальный экземпляр id объекта, с которым происходит столкновение, вам следует использовать instance_position(). Эта функция также принимает специальные ключевые слова all и other.

-

-

Синтаксис:

-

position_meeting(x, y, obj);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x position to check.
yРеальноThe y position to check.
obj Идентификаторактива или экземпляраобъекта The object (or instance id, or the keywords "all" or "other") to check for a collision with.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if mouse_check_button(mb_left)
- {
-     if (!position_meeting(mouse_x, mouse_y, all))
-     {
-         instance_create_layer(mouse_x, mouse_y, "Walls", obj_wall);
-     }
- }

-

Приведенный выше код проверяет наличие левой кнопки мыши, и если она нажата, то проверяет положение мыши x/y на предмет столкновения с каким-либо экземпляром. Если таковых нет, то создается экземпляр "obj_Wall".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/rectangle_in_circle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/rectangle_in_circle.htm index 64a64bb95..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/rectangle_in_circle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/rectangle_in_circle.htm @@ -1,93 +0,0 @@ - - - - - - rectangle_in_circle - - - - - - - - - - - -

rectangle_in_circle

-

Эта функция проверяет заданную вами прямоугольную область на предмет отсутствия столкновений, полного попадания в границы места назначения или простого соприкосновения с заданной круговой областью. Если они вообще не соприкасаются, то функция вернет 0, если источник полностью находится внутри места назначения, то вернет 1, а если они просто перекрываются, то вернет 2. Изображение ниже иллюстрирует это:

-

Rectangle circle collision example

-

-

Синтаксис:

-

rectangle_in_circle(sx1, sy1, sx2, sy2, x, y, rad);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
sx1The x coordinate of the left side of the source rectangle.
sy1The y coordinate of the top side of the source rectangle.
sx2The x coordinate of the right side of the source rectangle.
sy2The y coordinate of the bottom side of the source rectangle.
xThe x coordinate of the centre of the circle
yThe y coordinate of the centre of the circle.
radThe radius around the center point in which to check for a collision.
-

-

Возвращается:

-

-

-

Пример:

-

inst = instance_nearest(x, y, obj_Bullet);
- if (instance_exists(inst))
- {
-     if (rectangle_in_circle(_inst.x - 5, _inst.y - 5, _inst.x + 5, _inst.y + 5, x, y - 25, 20) > 0)
-     {
-         hit = true;
-     }
- }

-

Приведенный выше код использует функцию rectangle_in_circle для проверки наличия столкновения в пределах круговой области и прямоугольника вокруг найденного экземпляра. Если столкновение есть (либо край перекрывается, либо охватывается), то переменная будет установлена в значение true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/rectangle_in_rectangle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/rectangle_in_rectangle.htm index 7bbb31e45..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/rectangle_in_rectangle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/rectangle_in_rectangle.htm @@ -1,94 +0,0 @@ - - - - - - rectangle_in_rectangle - - - - - - - - - - - -

rectangle_in_rectangle

-

Эта функция проверит две заданные вами прямоугольные области на предмет того, не сталкивается ли исходный прямоугольник, находится ли он полностью в границах прямоугольника назначения, или они просто соприкасаются. Если они вообще не соприкасаются, функция вернет 0, если исходный прямоугольник полностью находится внутри конечного, вернет 1, а если они просто перекрываются, вернет 2. Изображение ниже иллюстрирует это:

-

Rectangle rectangle collision example

-

Синтаксис:

-

rectangle_in_rectangle(sx1, sy1, sx2, sy2, dx1, dy1, dx2, dy2);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
sx1The x coordinate of the left side of the source rectangle.
sy1The y coordinate of the top side of the source rectangle.
sx2The x coordinate of the right side of the source rectangle.
sy2The y coordinate of the bottom side of the source rectangle.
dx1The x coordinate of the left side of the destination rectangle to check against.
dy1The y coordinate of the top side of the destination rectangle to check against.
dx2The x coordinate of the right side of the destination rectangle to check against.
dy2The y coordinate of the bottom side of the destination rectangle to check against.
-

-

Возвращается:

-

-

-

Пример:

-

switch(rectangle_in_rectangle(x - 50, y - 50, x + 50, y + 50, mouse_x - 50, mouse_y - 50, mouse_x + 50, mouse_y + 50))
- {
-     case 0: image_blend = c_yellow; break;
-     case 1: image_blend = c_red; break;
-     case 2: image_blend = c_orange; break;
- }

-

Приведенный выше код проверяет две прямоугольные области на столкновение и устанавливает экземпляр image_blend на основе возвращаемого значения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/rectangle_in_triangle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/rectangle_in_triangle.htm index 1c81e8f80..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/rectangle_in_triangle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Collisions/rectangle_in_triangle.htm @@ -1,108 +0,0 @@ - - - - - - rectangle_in_triangle - - - - - - - - - - - -

rectangle_in_triangle

-

Эта функция проверит заданную вами прямоугольную область на предмет отсутствия столкновений, полного попадания в границы места назначения или простого соприкосновения с заданной треугольной областью. Если они вообще не соприкасаются, то функция вернет 0, если источник полностью находится внутри места назначения, то вернет 1, а если они просто перекрываются, то вернет 2. Изображение ниже иллюстрирует это:

-

Rectangle triangle collision example

-

Синтаксис:

-

rectangle_in_triangle(sx1, sy1, sx2, sy2, dx1, dy1, dx2, dy2, dx3, dy3);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
sx1The x coordinate of the left side of the source rectangle.
sy1The y coordinate of the top side of the source rectangle.
sx2The x coordinate of the right side of the source rectangle.
sy2The y coordinate of the bottom side of the source rectangle.
x1The x coordinate of the first side of the triangle to check.
y1The y coordinate of the first side of the triangle to check.
x2The x coordinate of the second side of the triangle to check.
y2The y coordinate of the second side of the triangle to check.
x3The x coordinate of the third side of the triangle to check.
y3The y coordinate of the third side of the triangle to check.
-

-

Возвращается:

-

-

-

Пример:

-

var inst = instance_nearest(x, y, obj_Player);
- if (instance_exists(inst))
- {
-     var _x1 = x + lengthdir_x(100, image_angle - 45);
-     var _y1 = y + lengthdir_y(100, image_angle - 45);
-     var _x2 = x + lengthdir_x(100, image_angle + 45);
-     var _y2 = y + lengthdir_y(100, image_angle + 45);
-     if (rectangle_in_triangle(_inst.bbox_left, _inst.bbox_top, _inst.bbox_right, _inst.bbox_bottom, x, y, _x1, _y1, _x2, _y2) == 1)
-     {
-         can_see = true;
-     }
- }

-

Приведенный выше код использует функцию rectangle_in_triangle в качестве "конуса зрения" для проверки наличия экземпляра "obj_player". Если полная граница находится в заданной треугольной области, то переменная будет установлена в значение true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/Motion_Planning.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/Motion_Planning.htm index 415b9d6f1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/Motion_Planning.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/Motion_Planning.htm @@ -1,80 +0,0 @@ - - - - - - Планирование движения - - - - - - - - - - -

Планирование движения

-

Во многих играх вы хотите, чтобы противники, NPC, враги и т.д... взаимодействовали с игроком и проявляли определенный интеллект при передвижении, т.е. вы хотите, чтобы они избегали препятствий, планировали маршруты и вообще не натыкались на все на своем пути! Чтобы помочь в этом, в GameMaker есть ряд функций, которые занимаются планированием движения. Обратите внимание, что хотя они предназначены для таких вещей, как игровые враги, их можно использовать для самых разных вещей, например, для создания плавного способа введения текста, или для создания переходов и т.д.. Однако, что бы вы ни решили использовать из приведенного ниже списка в своей игре, следует отметить, что во многих ситуациях один набор функций не даст вам идеального решения, и вам придется "смешивать и сочетать" функции, используя то одну, то другую в зависимости от ситуации в вашей игре.

-

Планированием движения в GameMaker занимаются функции mp_, которые делятся на следующие три группы:

-

-

Такая функция пытается вычислить путь без столкновений для экземпляра. После вычисления этого пути вы можете назначить его экземпляру для движения к цели. Вычисление пути займет некоторое время, но после этого выполнение пути будет быстрым. Конечно, это справедливо только в том случае, если за прошедшее время ситуация не изменилась. Например, при изменении препятствий вам, возможно, придется заново вычислять путь. Еще раз обратите внимание, что эти функции могут не сработать, и для данного экземпляра путь может быть не найден.

- -

-

-

Это базовые функции избегания, которые подходят для простого ИИ. Они работают, заставляя экземпляр делать шаг к определенной цели, стараясь идти прямо, если это возможно, но при необходимости выбирая другое направление. Эти функции следует использовать в событии Step Event экземпляра.

- -

-

-

Последний тип функции использует гораздо более сложный механизм, основанный на подходе, основанном на сетке (иногда его называют алгоритмом A*). Он будет гораздо более успешным в поиске путей (хотя все равно может потерпеть неудачу) и будет находить кратчайшие пути, но для его настройки потребуется больше работы с вашей стороны.

-

Общая идея заключается в следующем - сначала мы создаем сетку, которая покрывает комнату (или соответствующую ее часть). Вы можете выбрать мелкую сетку, которая будет медленнее, или крупную, но обе они должны быть основаны на разрешении комнаты, чтобы поиск пути был как можно более точным. Например, если у вас комната размером 400x200 пикселей, вы можете использовать сетку с разрешением 40, или 20, или 10... все зависит от того, насколько точным должен быть путь и как много обработки вы хотите, чтобы GameMaker выполнил для его создания.

-

Далее для всех соответствующих объектов, которые мы хотим избежать, необходимо определить ячейки сетки, которые они перекрывают (основываясь либо на их ограничительных границах, либо на их точном расположении sprite), и пометить эти ячейки как запрещенные. Таким образом, ячейка будет помечена как полностью запрещенная, даже если препятствие перекрывается лишь частично.

-

Наконец, мы указываем начальную позицию и позицию цели, обе из которых должны лежать в свободных клетках, после чего функция вычисляет кратчайший путь между этими двумя позициями. Путь будет проходить между центрами всех свободных ячеек, поэтому если ячейки достаточно велики, чтобы экземпляр, помещенный в их центр, полностью лежал внутри них, это будет успешным. Затем этот путь назначается экземпляру для прохождения с помощью функций path_* функции. Вы должны понять, насколько важен для этого размер ячейки, поскольку ячейки должны быть достаточно большими, чтобы движущийся объект, помещенный в центр ячейки, полностью находился внутри нее. (Будьте внимательны к положению начала координат объекта. Также помните, что вы можете сместить траекторию, если начало объекта находится не в его центре!) С другой стороны, чем меньше ячейки, тем больше возможных путей. Если сделать ячейки слишком большими, проемы между препятствиями могут оказаться закрытыми, поскольку все ячейки пересекают препятствие.

- -

-

Подход на основе сетки является очень мощным (и используется во многих профессиональных играх), но он требует от вас тщательного обдумывания, поскольку вы должны определить, какая площадь и размер ячеек достаточно хороши для решения игры. Кроме того, вы должны определить, каких объектов следует избегать и важна ли точная проверка. Все эти параметры сильно влияют на эффективность подхода. Вы также должны решить, действительно ли это необходимо, поскольку, возможно, одна из менее дорогостоящих функций mp_* может справиться с задачей не хуже.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_add_cell.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_add_cell.htm index 03a21f8f5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_add_cell.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_add_cell.htm @@ -1,80 +0,0 @@ - - - - - - mp_grid_add_cell - - - - - - - - - - -

mp_grid_add_cell

-

С помощью этой функции мы можем пометить отдельные ячейки в заданной сетке MP как "запрещенные", что означает, что функции поиска пути никогда не будут пересекать их. Обычно вы работаете в координатах x/y комнаты, а не в координатах ячеек MP-сетки. Поэтому давайте рассмотрим следующее изображение, которое показывает, как эти два понятия могут соотноситься:

-

Как вы видите, сетка mp_grid пронумерована как ряд ячеек (начиная с 0,0 в левом верхнем углу), и когда вы помещаете эту сетку над комнатой, существует прямая корреляция между координатами комнаты (которые также начинаются с 0,0 в левом верхнем углу) и ячейками сетки. На изображении видно, что экземпляр в позиции 260,130 попадает на ячейку сетки 8,4. Математически можно легко вычислить точную ячейку, на которую попадает позиция, либо разделив число на разрешение сетки и округлив вниз , либо, если вы используете разрешение сетки, равное 2 (например, 8, 16, 32 и т.д.), вы можете использовать побитовые операторы. Следует отметить, что побитовые операции выполняются быстрее, и в приведенном ниже примере показаны оба метода.

-

-

Синтаксис:

-

mp_grid_add_cell(id, h, v);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idMP Grid IDIndex of the mp_grid that is to be used
hРеальноHorizontal position of the cell in the grid
vРеальноVertical position of the cell in the grid
-

-

Возвращается:

-

N/A

-

-

Пример:

-

with (obj_Wall)
- {
-     mp_grid_add_cell(grid, floor(x / 32), floor(y / 32));
- }
- with (obj_Door)
- {
-     mp_grid_add_cell(grid, x>>5, y>>5);
- }

-

Приведенный выше код заставит все "obj_Wall" и все obj_Door добавить их эквивалентные позиции ячеек в mp_grid, проиндексированную в переменной "grid". В первой части примера это делается путем взятия координат x/y объекта и деления их на разрешение сетки (используя floor для сохранения значений в виде целых чисел), а во второй части (поскольку разрешение сетки является степенью 2) это делается путем битового сдвига координат x,y на 5 мест вправо.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_add_instances.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_add_instances.htm index b64d21725..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_add_instances.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_add_instances.htm @@ -1,74 +0,0 @@ - - - - - - mp_grid_add_instances - - - - - - - - - - - -

mp_grid_add_instances

-

Эта функция использует маску столкновений экземпляра (определяется свойствами sprite или индексом маски вызывающего экземпляра) для пометки ячеек как запрещенных или нет в сетке MP, где запрещенные ячейки не могут быть пересечены ни одной из функций поиска пути. В функции можно указать, учитывать ли точные столкновения или нет, и в зависимости от этого будут меняться отмеченные запрещенные ячейки. Это изображение иллюстрирует такое поведение:

-

Два вышеприведенных экземпляра были добавлены в сетку MP с помощью функции mp_grid_add_instances() с установленным значением true. Как вы можете видеть, зеленый экземпляр пометил запрещенными только те клетки сетки, которых он "касается", благодаря тому, что его маска sprite также установлена на precise. Однако второй экземпляр пометил и другие клетки, которые , похоже, не касаются. Это происходит потому, что маска sprite не установлена на точную, а значит, даже если вы используете точную настройку в функции, будет рассматриваться только граничная область sprite. То же самое произойдет, если установить точный аргумент функции на false - даже экземпляры с точной маской sprite будут добавлены в сетку на основе их граничных полей.

-

-

Синтаксис:

-

mp_grid_add_instances(id, obj, prec);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idMP Grid IDIndex of the mp_grid that is to be used
obj Идентификаторактива или экземпляраобъекта Object index, or instance id, of the instances to be added into the mp_grid
precБулевоWhether the check is based on pixel-perfect collisions (true = slow) or its bounding box in general (false = fast).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

mp_grid_add_instances(grid, obj_Wall, true);

-

Приведенный выше код добавит все экземпляры "obj_Wall" в mp_grid, проиндексированную в переменной "grid", используя точную маску столкновений, а не ограничивающую рамку.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_add_rectangle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_add_rectangle.htm index ae9ce6a01..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_add_rectangle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_add_rectangle.htm @@ -1,84 +0,0 @@ - - - - - - mp_grid_add_rectangle - - - - - - - - - - - -

mp_grid_add_rectangle

-

Эта функция просит вас определить прямоугольник в пределах комнаты, а затем помечает все ячейки сетки MP, "касающиеся" этого прямоугольника, как запрещенные, что означает, что функции поиска пути не могут пересечь их. На рисунке ниже показано, как это работает:

-

Как вы можете видеть, прямоугольник, определенный от (50, 90) до (200, 180), отмечает все эквивалентные ячейки сетки MP, которых он касается, как запрещенные.

-

-

Синтаксис:

-

mp_grid_add_rectangle(id, x1, y1, x2, y2);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idMP Grid IDIndex of the mp_grid that is to be used
x1РеальноThe x coordinate of the left side of the rectangle to check.
y1РеальноThe y coordinate of the top side of the rectangle to check.
x2РеальноThe x coordinate of the right side of the rectangle to check.
y2РеальноThe x coordinate of the bottom side of the rectangle to check.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

mp_grid_add_rectangle(grid, 0, 0, 100, 200);

-

Приведенный выше код пометит как запрещенные все ячейки mp_grid, индексированные в переменной "grid", которые попадают в область от 0,0 до 100,200.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_clear_all.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_clear_all.htm index c1b912372..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_clear_all.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_clear_all.htm @@ -1,65 +0,0 @@ - - - - - - mp_grid_clear_all - - - - - - - - - - -

mp_grid_clear_all

-

С помощью этой функции вы можете очистить сетку MP от всех "запрещенных" ячеек.

-

-

Синтаксис:

-

mp_grid_clear_all(id);

- - - - - - - - - - - - - -
АргументТипОписание
idMP Grid IDIndex of the mp_grid that is to be used
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !instance_exists(obj_Player)
- {
-     mp_grid_clear_all(grid);
- }

-

Приведенный выше код очистит mp_grid, индексированную в переменной "grid", пометив все ячейки как свободные, если в комнате больше нет экземпляра объекта "obj_Player".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_clear_cell.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_clear_cell.htm index b7fc7c4bc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_clear_cell.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_clear_cell.htm @@ -1,76 +0,0 @@ - - - - - - mp_grid_clear_cell - - - - - - - - - - -

mp_grid_clear_cell

-

Эта функция может быть использована для очистки определенной "ячейки" сетки MP. Ячейки рассчитываются не как координаты комнаты, а как координаты сетки, где (0,0) - верхний левый угол сетки. Это означает, что для очистки ячейки в определенной позиции в комнате, мы должны изменить координаты x и y на координаты ячейки, разделив их на разрешение сетки MP. Пример кода ниже показывает, как это работает.

-

-

Синтаксис:

-

mp_grid_clear_cell(id, h, v);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idMP Grid IDIndex of the mp_grid that is to be used
hРеальноHorizontal position of the cell to clear
vРеальноvertical position of the cell to clear
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

with (obj_Box)
- {
-     mp_grid_clear_cell(grid, floor(x / 32), floor(y /32));
-     instance_destroy();
- }

-

Приведенный выше код заставит все "obj_Box" уничтожить себя и пометить ячейки, которые они занимали в mp_grid, проиндексированные в переменной "grid", как свободные. В этом примере мы находим соответствующую ячейку, взяв координаты x/y объекта и разделив их на разрешение сетки (используя floor, чтобы сохранить значения в виде целых чисел).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_clear_rectangle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_clear_rectangle.htm index 8a6303f58..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_clear_rectangle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_clear_rectangle.htm @@ -1,83 +0,0 @@ - - - - - - mp_grid_clear_rectangle - - - - - - - - - - - -

mp_grid_clear_rectangle

-

С помощью этой функции вы можете определить область в комнатных координатах, которая затем очистит соответствующие ячейки в указанной MP-сетке. Даже если ячейка частично попадает в заданную прямоугольную область, она будет очищена.

-

-

Синтаксис:

-

mp_grid_clear_rectangle(id, x1, y1, x2, y2);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idMP Grid IDIndex of the mp_grid that is to be used
x1РеальноThe x coordinate of the left side of the rectangle to check.
y1РеальноThe y coordinate of the top side of the rectangle to check.
x2РеальноThe x coordinate of the right side of the rectangle to check.
y2РеальноThe x coordinate of the bottom side of the rectangle to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

mp_grid_clear_rectangle(grid, 0, 0, 100, 200);

-

Приведенный выше код пометит как свободные все ячейки mp_grid, индексированные в переменной "grid", которые попадают в область от 0,0 до 100,200.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_create.htm index 4d3c3e3f1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_create.htm @@ -1,88 +0,0 @@ - - - - - - mp_grid_create - - - - - - - - - - - -

mp_grid_create

-

С помощью этой функции можно создать mp_grid для функций планирования движения. Она возвращает индекс, который должен быть сохранен в переменной для использования во всех других вызовах функций MP-сетки. Координаты x и y указывают на положение левого верхнего угла сетки, hcells и vcells - на количество горизонтальных и вертикальных ячеек, которые будут созданы в сетке, а ширина и высота ячеек - на размер ячеек в пикселях. Вы можете создать и поддерживать несколько структур сетки в один момент времени, если они нужны вам для разных вещей, но имейте в виду, что каждая сетка будет требовать памяти, и чем больше ячеек, тем больше памяти она потребует. Также следует учитывать, что функции MP достаточно требовательны к процессору, поэтому чем чаще вы их вызываете и чем выше разрешение ячеек, тем больше вероятность падения производительности.

-

-

Синтаксис:

-

mp_grid_create(left, top, hcells, vcells, cellwidth, cellheight);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
leftРеальноStarting x coordinate of the mp_grid in the room
topРеальноStarting y coordinate of the mp_grid in the room
hcellsРеальноNumber of horizontal cells that the mp_grid will contain
vcellsРеальноNumber of vertical cells that the mp_grid will contain
cellwidthРеальноThe width (in pixels) of each individual cell of the mp_grid
cellheightРеальноThe height (in pixels) of each individual cell of the mp_grid
-

-

Возвращается:

-

MP Grid ID

-

-

Пример:

-

global.grid = mp_grid_create(0, 0, room_width / 32, room_height / 32, 32, 32);

-

Приведенный выше код создает глобальную переменную "grid", затем генерирует mp_grid и присваивает ее индекс (id) этой переменной для использования во всех дальнейших вызовах функции mp_grid. Сетка покрывает комнату с разрешением ячеек 32x32 пикселя. Это означает, что, например, в комнате размером 640x480 сетка будет содержать 300 ячеек: 20 горизонтальных ячеек (640 / 32), умноженные на 15 вертикальных (480 /32), дают 300 ячеек.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_destroy.htm index 37e4cf13d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_destroy.htm @@ -1,67 +0,0 @@ - - - - - - mp_grid_destroy - - - - - - - - - - -

mp_grid_destroy

-

Вы можете использовать эту функцию, чтобы уничтожить указанную mp_grid (как определено функцией mp_grid_create()) и освободить выделенную ей память. Важно, чтобы вы вызывали эту функцию всякий раз, когда MP-сетка завершена, иначе вы можете получить утечку памяти, что означает, что ваша игра будет замедляться с течением времени и в конечном итоге завершится крахом.

-

ПРИМЕЧАНИЕ: Использование функций mp_grid_* на сетке после ее уничтожения приведет к ошибке.

-

-

Синтаксис:

-

mp_grid_destroy(id);

- - - - - - - - - - - - - -
АргументТипОписание
idMP Grid IDIndex of the mp_grid that is to be destroyed
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if timer = 0
- {
-     mp_grid_destroy(grid);
-     room_goto(rm_menu);
- }

-

Приведенный выше код уничтожит mp_grid, проиндексированную в переменной "grid", если переменная "timer" равна 0, а затем перейдет в другую комнату.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_draw.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_draw.htm index e918f1b43..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_draw.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_draw.htm @@ -1,65 +0,0 @@ - - - - - - mp_grid_draw - - - - - - - - - - - -

mp_grid_draw

-

Эта функция нарисует заданную сетку MP (как определено с помощью mp_grid_create()), помечая свободные ячейки зеленым цветом, а запрещенные - красным. Эта функция незаменима в качестве инструмента отладки, но следует отметить, что она очень медленная и работает только при использовании в событии draw экземпляра, и что вы можете установить draw alpha для изменения непрозрачности сетки, что позволяет рисовать ее как наложение и одновременно видеть, что на самом деле находится в комнате.

-

-

Синтаксис:

-

mp_grid_draw(id);

- - - - - - - - - - - - - -
АргументТипОписание
idMP Grid IDIndex of the mp_grid that is to be drawn
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

draw_set_alpha(0.3);
- mp_grid_draw(grid);
- draw_set_alpha(1);

-

Приведенный выше код отрисует mp_grid, индексированную в переменной "grid", как полупрозрачное наложение (но только если экземпляр, выполняющий код, имеет глубину меньше, чем все остальные).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_get_cell.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_get_cell.htm index 9fd4b034e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_get_cell.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_get_cell.htm @@ -1,81 +0,0 @@ - - - - - - mp_grid_get_cell - - - - - - - - - - - -

mp_grid_get_cell

-

С помощью этой функции вы можете проверить любую заданную ячейку mp_grid на предмет того, была ли она помечена как занятая или нет, задав индекс (ранее созданной) mp_grid и координаты x и y ячейки для проверки.

-

Если она была занята или проверяемая позиция находится вне границ сетки, функция вернет -1, в противном случае - 0.

-

-

Синтаксис:

-

mp_grid_get_cell(id, x , y);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idMP Grid IDIndex of the mp_grid that is to be used
x1РеальноThe x coordinate of the grid to check.
y1РеальноThe y coordinate of the grid to check.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if mp_grid_get_cell(grid, mouse_x div 16, mouse_y div 16) == -1
- {
-     image_blend = c_red;
- }
- else
- {
-     image_blend = c_lime;
- }

-

Приведенный выше код проверит ячейку mp_grid, соответствующую положению мыши, и если она занята, то установит переменную image_blend в красный цвет, а если не занята, то в зеленый.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_path.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_path.htm index 675298c22..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_path.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_path.htm @@ -1,104 +0,0 @@ - - - - - - mp_grid_path - - - - - - - - - - - -

mp_grid_path

-

С помощью этой функции вы можете создать путь, который будет перемещаться от начальной точки к конечной точке с помощью ранее заданного mp_grid, избегая любых препятствий, которые уже были добавлены в сетку. Аргументы xstart и ystart указывают начало пути в координатах помещения, а аргументы xgoal, ygoal - конечную точку. Вы также можете выбрать только горизонтальное/вертикальное движение или разрешить полное диагональное движение, указав true в аргументе allowdiag. Функция возвращает либо true (удалось найти путь), либо false (не удалось), а также устанавливает выбранный путь. На следующем рисунке показано, как все это работает вместе:

-

Как вы можете видеть, объекты "трубы" были добавлены в сетку, что означает, что любой созданный путь должен их обойти. На изображении создано два пути, один (зеленый) был сделан с разрешенными диагоналями, а другой (красный) - без них. Разница между ними довольно очевидна: зеленый путь выглядит более "элегантным" и прямым, но все зависит от того, для каких целей вы собираетесь их использовать. Обратите внимание, что путь не зависит от текущего экземпляра - это путь по сетке, а не путь для конкретного экземпляра, хотя у конкретного экземпляра может быть переменная, хранящая индекс пути. Вам также может понадобиться отладить эти пути, чтобы увидеть, как они создаются и взаимодействуют в игровой среде, и в этом случае вам следует использовать функцию draw_path().

-

ПРИМЕЧАНИЕ: Путь должен быть создан ранее (либо в коде с помощью функции path_add() или как ресурс) и будет заменен путем, сгенерированным этой функцией.

-

-

Синтаксис:

-

mp_grid_path(id, path, xstart, ystart, xgoal, ygoal, allowdiag);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idMP Grid IDIndex of the mp_grid that is to be used
pathПуть Активаindex of the path that is to be used by the function
xstartРеальноStarting x coordinate of the new path
ystartРеальноStarting y coordinate of the new path
xgoalРеальноFinishing x coordinate of the new path
ygoalРеальноFinishing y coordinate of the new path
allowdiagБулевоIndicates whether diagonal moves are allowed instead of just horizontal or vertical
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

global.grid = mp_grid_create(0, 0, room_width div 32, room_height div 32, 32, 32);
- mp_grid_add_instances(global.grid, obj_wall, false);
- with (obj_enemy)
- {
-     path = path_add();
-     if (mp_grid_path(global.grid, path, x, y, obj_player.x, obj_player.y, 1))
-     {
-         path_start(path, 0, 3, 0);
-     }
- }

-

Приведенный выше код создает глобальную переменную "global.grid", затем генерирует mp_grid и присваивает ее индекс (id) этой переменной для использования во всех дальнейших вызовах функции mp_grid. Затем он добавляет все экземпляры "obj_Wall" в сетку, прежде чем получить все экземпляры "obj_Enemy" для создания пути, а затем использует mp_grid_path для расчета маршрута от их позиции до позиции "obj_Player". Если маршрут существует, то объект запускает себя по этому пути.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_to_ds_grid.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_to_ds_grid.htm index 2b9d24b09..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_to_ds_grid.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_grid_to_ds_grid.htm @@ -1,69 +0,0 @@ - - - - - - mp_grid_to_ds_grid - - - - - - - - - - - -

mp_grid_to_ds_grid

-

С помощью этой функции вы можете скопировать заданную MP-сетку в DS-сетку. DS-сетка должна быть того же размера, что и MP-сетка, хотя это не обязательно (данные будут потеряны, если она будет меньше, а если больше, то все дополнительные ячейки сетки будут равны 0). Ячейка в сетке DS будет содержать значение -1, если она была отмечена как занятая в сетке MP, или 0, если не была.

-

-

Синтаксис:

-

mp_grid_to_ds_grid(source, destination);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
sourceMP Grid IDIndex of the mp_grid that is to be used
destinationDS Grid IDIndex of the ds_grid that is to be used to copy the grid data to.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

motion_grid = ds_grid_create(room_width / 32, room_height / 32);
- mp_grid_to_ds_grid(mp_grid, motion_grid);

-

Приведенный выше код создаст новую сетку DS, а затем скопирует данные сетки MP, содержащиеся в переменной "mp_grid", в новую сетку DS.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_linear_path.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_linear_path.htm index 8089a90d3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_linear_path.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_linear_path.htm @@ -1,81 +0,0 @@ - - - - - - mp_linear_path - - - - - - - - - - - -

mp_linear_path

-

Эта функция рассчитывает прямолинейный путь от текущей позиции экземпляра до точки, заданной значениями "xgoal" и "ygoal". Она использует указанный размер шага, такой же, как в функции mp_linear_step(). Указанный путь должен уже существовать и будет перезаписан новым путем, а функция вернет, был ли найден полный путь (true) или нет (false). Если возвращается false, то путь все равно будет сгенерирован, но он будет проходить только до того места, где путь был заблокирован.

-

ПРИМЕЧАНИЕ: Эта функция не перемещает экземпляр. Она только задает путь, а для перемещения необходимо использовать функции Path.

-

-

Синтаксис:

-

mp_linear_path(path, xgoal, ygoal, stepsize, checkall);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
pathThe index of the path to be used.
xgoalThe target x position.
ygoalThe target y position.
stepsizeThe speed the instance moves in pixels per step.
checkallWhether to check for collisions with all instances (true) or just solid ones (false).
-

-

Возвращается:

-

-

-

Пример:

-

if mp_linear_path(path, obj_Player.x, obj_Player.y, 2, 0)
- {
-     path_start(path, 2, 0, 0);
- }

-

Это заставляет объект проверить, существует ли линейный путь от его текущей позиции до позиции "obj_Player". Если есть, то он начинает путь.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_linear_path_object.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_linear_path_object.htm index 5cafdb5ce..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_linear_path_object.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_linear_path_object.htm @@ -1,88 +0,0 @@ - - - - - - mp_linear_path_object - - - - - - - - - - - -

mp_linear_path_object

-

Эта функция рассчитывает прямолинейный путь от текущей позиции экземпляра до точки, заданной значениями "xgoal" и "ygoal". Она использует указанный размер шага, такой же, как в функции mp_linear_step(). Указанный путь должен уже существовать и будет перезаписан новым путем, а функция вернет, был ли найден полный путь (true) или нет (false). Полный путь будет найден только в том случае, если не было столкновения с указанным объектом или экземпляром, а если возвращается false, то путь все равно будет сгенерирован, но он будет проходить только до того места, где путь был заблокирован.

-

ПРИМЕЧАНИЕ: Эта функция не перемещает экземпляр. Она только задает путь, а для перемещения необходимо использовать функции Path.

-

-

Синтаксис:

-

mp_linear_path_object(path, xgoal, ygoal, stepsize, obj);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
pathПуть АктиваThe index of the path to be used
xgoalРеальноThe target x position.
ygoalРеальноThe target y position.
stepsizeРеальноThe speed the instance moves in pixels per step.
obj Идентификаторактива или экземпляраобъекта The object that is to block the path. Can be an object index, an instance id or the special keyword ,all
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if mp_linear_path_object(path, mouse_x, mouse_y, 4, obj_Wall)
- {
-     path_start(path, 4, 0, 0);
- }

-

Приведенный выше код проверяет наличие столкновения с "obj_Wall" на пути между объектом, запускающим код, и позицией x/y мыши. Если столкновений нет и сгенерирован полный путь, то запускается объект по сгенерированному пути.

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_linear_step.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_linear_step.htm index 3eef34bd6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_linear_step.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_linear_step.htm @@ -1,78 +0,0 @@ - - - - - - mp_linear_step - - - - - - - - - - - -

mp_linear_step

-

С помощью этой функции вы указываете экземпляру сделать "шаг" к определенной точке, заданной значениями xgoal и ygoal. Размер шага (то есть на сколько пикселей экземпляр должен перемещаться каждый шаг) указывается значением stepize, и если экземпляр уже находится в заданной позиции, он остановится и не будет двигаться дальше, в отличие от других, более простых функций, таких как move_towards_point(). Размер шага также является расстоянием "вперед", на котором объект будет проверять каждый шаг на столкновение, и вы можете выбрать, остановится ли объект при столкновении с любым объектом или только с теми, которые помечены как твердые. Функция возвращает, достигла ли она целевой позиции (true) или потерпела неудачу (false).

-

ПРИМЕЧАНИЕ Эта функция не пытается объехать препятствие, если оно встречается, она просто выходит из строя и прекращает движение.

-

-

Синтаксис:

-

mp_linear_step(xgoal, ygoal, stepsize, checkall);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xgoalThe target x position.
ygoalThe target y position.
stepsizeThe speed the instance moves in pixels per step.
checkallWhether to check all instances (true) or just solid ones (false).
-

-

Возвращается:

-

-

-

Пример:

-

if mp_linear_step(mouse_x, mouse_y, 5, 0)
- {
-     instance_create_layer(x, y, "Effects", obj_explosion);
-     instance_destroy();
- }

-

Приведенный выше код заставит объект двигаться в направлении мыши со скоростью 5 пикселей за шаг. Когда он достигнет позиции мыши, он создаст объект "obj_Explosion" и уничтожит себя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_linear_step_object.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_linear_step_object.htm index 37a9fd56a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_linear_step_object.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_linear_step_object.htm @@ -1,82 +0,0 @@ - - - - - - mp_linear_step_object - - - - - - - - - - - -

mp_linear_step_object

-

С помощью этой функции вы указываете экземпляру сделать "шаг" к определенной точке, заданной значениями xgoal и ygoal. Размер шага (то есть на сколько пикселей экземпляр должен перемещаться каждый шаг) указывается значением stepize, и если экземпляр уже находится в заданной позиции, он остановится и не будет двигаться дальше, в отличие от других, более простых функций, таких как move_towards_point(). Stepize также является расстоянием "вперед", на котором объект будет проверять каждый шаг на столкновение, и вы можете выбрать, остановится ли экземпляр при столкновении с объектом или экземпляром по вашему выбору.

-

-

Синтаксис:

-

mp_linear_step_object(xgoal, ygoal, stepsize, obj);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xgoalРеальноThe target x position.
ygoalРеальноThe target y position.
stepsizeРеальноThe speed the instance moves in pixels per step.
obj Идентификаторактива или экземпляраобъекта The object that is to block the path. Can be an object index, an instance id or the special keyword, all
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if mp_linear_step_object(mouse_x, mouse_y, 5, obj_Wall)
- {
-     instance_create_layer(x, y, "Effects", obj_explosion);
-     instance_destroy();
- }

-

Приведенный выше код заставит объект двигаться в направлении мыши со скоростью 5 пикселей за шаг, проверяя столкновения только с объектом "obj_Wall". Когда он достигнет позиции мыши, он создаст объект "obj_Explosion" и уничтожит себя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_path.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_path.htm index 168352def..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_path.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_path.htm @@ -1,87 +0,0 @@ - - - - - - mp_potential_path - - - - - - - - - - - -

mp_potential_path

-

Эта функция рассчитывает путь для экземпляра от его текущего положения и ориентации до положения, указанного аргументами xgoal,ygoal. Она использует указанный размер шага, стараясь избежать столкновения либо со всеми экземплярами, либо только с - теми, которые помечены как твердые. Как и в функции mp_potential_step() она использует шаги потенциального поля для достижения этой цели, а способ, которым она это делает, может быть изменен с помощью функции mp_potential_settings(). - Указанный путь должен уже существовать, и он будет перезаписан новым путем. Функция возвращает, был ли найден путь (true) или нет (false).

-

Чтобы функция не продолжала вычислять до бесконечности, необходимо задать коэффициент больше 1 - функция остановится и сообщит о неудаче, если не сможет найти путь короче, чем этот коэффициент, умноженный на расстояние от начала до цели. Коэффициент 4 - обычно достаточно, но если вы ожидаете длительных обходов, то можно сделать его больше. В случае неудачи все равно будет создан путь, проходящий в приблизительном направлении к цели, но он не достигнет ее.

-

ПРИМЕЧАНИЕ: Эта функция не перемещает экземпляр. Она только задает путь, а для перемещения необходимо использовать функции Path.

-

-

Синтаксис:

-

mp_potential_path(path, xgoal, ygoal, stepsize, factor, checkall)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
pathindex of the path that is to be used by the function
xgoalThe target x position.
ygoalThe target y position.
stepsizeThe speed the instance moves in pixels per step.
factorThis number is used to prevent an infinite loop. It should be larger than 1. See the function description for more information.
checkallWhether to check all instances (true) or just solid ones (false).
-

-

Возвращается:

-

-

-

Пример:

-

path = path_add();
mp_potential_path(path, obj_Player.x, obj_Player.y, 3, 4, 0);
path_start(path, 3, 0, 0);

-

Приведенный выше код создает новый ресурс пути и сохраняет его индекс в переменной "path". Затем он генерирует путь с помощью mp_potential_path между объектом с этим кодом и объектом "obj_Player", проверяя столкновения - со всеми объектами в комнате. Наконец, он запускает объект по этому пути, даже если функция не смогла вернуть полный маршрут к "obj_Player".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_path_object.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_path_object.htm index 83105a825..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_path_object.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_path_object.htm @@ -1,87 +0,0 @@ - - - - - - mp_potential_path_object - - - - - - - - - - - -

mp_potential_path_object

-

Эта функция рассчитывает путь для экземпляра от его текущего положения и ориентации до положения, указанного аргументами xgoal, ygoal. Она использует указанный размер шага, стараясь избежать столкновения с экземплярами объекта, указанного - аргументом "obj". Как и в функции mp_potential_step() для этого используются шаги потенциального поля, а способ, которым это делается, может быть изменен с помощью функции mp_potential_settings(). - Указанный путь должен уже существовать, и он будет перезаписан новым путем. Функция возвращает, был ли найден путь (true) или нет (false).

-

Чтобы функция не продолжала вычислять до бесконечности, необходимо задать коэффициент больше 1 - функция остановится и сообщит о неудаче, если не сможет найти путь короче, чем этот коэффициент, умноженный на расстояние от начала до цели. Коэффициент 4 - обычно достаточно, но если вы ожидаете длительных обходов, то можно сделать его больше. В случае неудачи будет создан путь, проходящий в приблизительном направлении к цели, но он не достигнет ее.

-

ПРИМЕЧАНИЕ: Эта функция не перемещает экземпляр. Она только задает путь, а для перемещения необходимо использовать функции Path.

-

-

Синтаксис:

-

mp_potential_path_object(path, xgoal, ygoal, stepsize, factor, obj)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
pathindex of the path that is to be used by the function
xgoalThe target x position.
ygoalThe target y position.
stepsizeThe speed the instance moves in pixels per step.
factorThis number is used to prevent an infinite loop. It should be larger than 1. See the function description for more information.
objThe object that is to block the path. Can be an object index, an instance id or the special keyword ,all
-

-

Возвращается:

-

-

-

Пример:

-

path = path_add();
mp_potential_path_object(path, obj_Player.x, obj_Player.y, 3, 4, obj_Wall);
path_start(path, 3, 0, 0);

-

Приведенный выше код создает новый ресурс пути и сохраняет его индекс в переменной "path". Затем он генерирует путь с помощью mp_potential_path между объектом с этим кодом и объектом "obj_Player", проверяя столкновения - с объектом "obj_Wall". Наконец, он запускает объект по этому пути, даже если функция не смогла вернуть полный маршрут к "obj_Player".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_settings.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_settings.htm index ed3122aed..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_settings.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_settings.htm @@ -1,79 +0,0 @@ - - - - - - mp_potential_settings - - - - - - - - - - - -

mp_potential_settings

-

Функции mp_potential_ выполняют свою работу, используя ряд параметров, которые можно изменить с помощью этой функции. Глобально метод работает следующим образом: сначала он пытается двигаться прямо к цели, смотря на несколько шагов вперед, которые можно задать с помощью параметра "ahead" (значение по умолчанию - 3). Уменьшение этого значения означает, что экземпляр начнет менять направление позже, так как он не "видит" так далеко вперед, а увеличение означает, что он начнет менять направление раньше. Если эта проверка приведет к столкновению, то он начнет рассматривать направления слева и справа от идеального прямолинейного направления. Он делает это с шагом размером "rotstep" (значение по умолчанию - 10), и уменьшение этого значения дает экземпляру больше возможностей для движения, но будет медленнее, поскольку ему требуется больше вычислительной мощности.

-

Параметр "maxrot" объяснить немного сложнее! У экземпляра есть текущее направление движения, а maxrot (значение по умолчанию - 30) указывает, насколько ему разрешено изменять направление в любую сторону от текущего направления за один шаг. Поэтому даже если он может двигаться, например, прямо к цели, он сделает это только в том случае, если не нарушит это максимальное изменение направления. Если сделать maxrot большим значением, то экземпляр может сильно менять направление на каждом шаге, и это облегчит поиск короткого пути, но путь будет более уродливым и менее естественным. Если сделать значение меньше, то путь будет более гладким, но может потребоваться больше времени на обход (а иногда даже не удастся найти цель). Наконец, если не удается сделать ни одного шага, поведение зависит от значения параметра "onspot". Если onspot равен true (значение по умолчанию), то экземпляр будет вращаться на своем месте на величину, указанную в параметре "maxrot", а если false, то он вообще не будет двигаться. Установка значения false полезна, например, для автомобилей, но уменьшает вероятность того, что экземпляр найдет путь.

-

-

Синтаксис:

-

mp_potential_settings(maxrot, rotstep, ahead, onspot)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
maxrotРеальноThe number of degrees either side of the current direction that the instance can rotate in a step
rotstepРеальноThe number of degrees either side of the current direction that the instance can check for a collision
aheadРеальноThe number of steps ahead that the instance can check for a collision. Larger values are slower than lower ones.
onspotБулевоUse this to allow the instance to rotate on the spot when no path is found (true) or not (false)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

mp_potential_settings(45, 5, 5, 0);

-

Приведенный выше код настроит функции mp_potential_ на использование следующих параметров: экземпляр может смотреть вперед на пять шагов, менять направление на 45 градусов каждый шаг, смотреть на 5 градусов в любую сторону от текущего направления при наличии препятствия и не поворачиваться на месте столкновения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_step.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_step.htm index 08cea721b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_step.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_step.htm @@ -1,78 +0,0 @@ - - - - - - mp_potential_step - - - - - - - - - - - -

mp_potential_step

-

Эта функция позволяет экземпляру сделать шаг к определенной позиции, заданной xgoal/ygoal, стараясь при этом избежать препятствий. Когда экземпляр столкнется с твердым объектом (или любым объектом, когда checkall равен true), он изменит направление движения, чтобы попытаться избежать этого объекта и двигаться вокруг него. Не гарантируется, что этот подход сработает, но в большинстве простых случаев он будет эффективно перемещать экземпляр к цели. Функция возвращает, была ли цель достигнута или нет.

-

-

Синтаксис:

-

mp_potential_step(xgoal, ygoal, stepsize, checkall)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xgoalThe target x position.
ygoalThe target y position.
stepsizeThe speed the instance moves in pixels per step.
checkallWhether to check all instances (true) or just solid ones (false).
-

-

Возвращается:

-

-

-

Пример:

-

if instance_exists(obj_Enemy)
- {
-     var inst;
-     inst = instance_nearest(x, y, obj_Enemy);
-     mp_potential_step(inst.x, inst.y, 5, false);
- }

-

Приведенный выше код сначала проверяет, есть ли в комнате экземпляры "obj_Enemy". Если таковые имеются, он находит ближайший и сохраняет его id в переменной. Эта переменная затем используется для того, чтобы указать mp_potential_step перемещать экземпляр с кодом в направлении x/y позиции объекта, который был найден, со скоростью 5 пикселей за шаг, избегая при этом только экземпляры, помеченные как твердые.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_step_object.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_step_object.htm index 27e40b3c6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_step_object.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Motion_Planning/mp_potential_step_object.htm @@ -1,83 +0,0 @@ - - - - - - mp_potential_step_object - - - - - - - - - - - -

mp_potential_step_object

-

Эта функция позволяет экземпляру сделать шаг к определенной позиции, заданной xgoal/ygoal, стараясь при этом избежать препятствий. Когда экземпляр столкнется с экземпляром объекта, указанного в аргументе "obj", он изменит направление движения, чтобы попытаться избежать этого объекта и двигаться вокруг него. Не гарантируется, что этот подход сработает, но в большинстве простых случаев он будет эффективно перемещать экземпляр к цели. Функция возвращает, была ли цель достигнута или нет.

-

-

Синтаксис:

-

mp_potential_step_object(xgoal, ygoal, stepsize, obj)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xgoalРеальноThe target x position.
ygoalРеальноThe target y position.
stepsizeРеальноThe speed the instance moves in pixels per step.
obj Идентификаторактива или экземпляраобъекта The object that is to block the path of the instance running the function. Can be an object index, an instance id or the special keyword ,all.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if instance_exists(obj_Enemy)
- {
-     var inst;
-     inst = instance_nearest(x, y, obj_Enemy);
-     mp_potential_step_object(inst.x, inst.y, 5, obj_Wall);
- }

-

Приведенный выше код сначала проверяет, есть ли в комнате экземпляры "obj_Enemy". Если таковые имеются, он находит ближайший и сохраняет его id в переменной. Затем эта переменная используется для того, чтобы указать коду mp_potential_step_object перемещать экземпляр в направлении x/y позиции объекта, который был найден, со скоростью 5 пикселей за шаг, избегая при этом только экземпляры объекта "obj_Wall".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/Movement.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/Movement.htm index f1005c246..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/Movement.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/Movement.htm @@ -1,75 +0,0 @@ - - - - - - Движение - - - - - - - - - - -

Движение

-

В любой игре движение и положение имеют первостепенное значение, поэтому в GameMaker имеется полный набор функций для любой ситуации. Два основных способа перемещения экземпляра - это либо задать фактическое положение, либо вектор скорости/направления, и это можно сделать либо с помощью встроенных переменных экземпляра, либо с помощью специальных функций перемещения. Обе эти возможности объясняются в перечисленных ниже разделах:

-

Следующие переменные "встроены" в каждый экземпляр и могут быть прочитаны и изменены для изменения различных моделей поведения при движении экземпляра (они влияют на векторы скорости и направления):

- -

-

Кроме вышеупомянутых переменных, вы также можете задать позицию экземпляра напрямую, используя следующее:

- -

-

Все следующие функции могут быть использованы для перемещения экземпляра тем или иным способом, причем некоторые из них влияют на векторы скорости/направления, а другие - непосредственно на фактическое положение x/y в помещении:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/motion_add.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/motion_add.htm index 1b0d6f4f9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/motion_add.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/motion_add.htm @@ -1,67 +0,0 @@ - - - - - - motion_add - - - - - - - - - - -

motion_add

-

Эта функция изменит текущие значения direction и speed экземпляра, выполняющего код, добавив новые значения к текущим. Если вы хотите просто изменить эти значения, вам следует использовать функцию motion_set().

-

-

Синтаксис:

-

motion_add(dir, speed);

- - - - - - - - - - - - - - - -
АргументТипОписание
dirThe added direction.
speedThe added speed.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var pdir;
- pdir = point_direction(other.x, other.y, x, y);
- motion_add(pdir, other.speed);
- if speed > 8 speed = 8;

-

приведенный выше код будет вызван в событии столкновения с другим объектом. Он добавляет к направлению движения и скорости экземпляра вектор, основанный на положении и скорости другого экземпляра, участвующего в столкновении. Затем он ограничивает скорость, если она превышает 8 (пикселей за шаг).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/motion_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/motion_set.htm index 0a2efbbab..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/motion_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/motion_set.htm @@ -1,67 +0,0 @@ - - - - - - motion_set - - - - - - - - - - -

motion_set

-

Эта функция задает новое направление движения и новую скорость для экземпляра, выполняющего код. Обратите внимание, что эта функция не добавляет к текущей скорости и направлению движения экземпляра (для этого используется функция motion_add()), а скорее заставляет его принять новые настройки.

-

-

Синтаксис:

-

motion_set(dir, speed);

- - - - - - - - - - - - - - - -
АргументТипОписание
dirThe new direction.
speedThe new speed.`
-

-

Возвращается:

-

-

-

Пример:

-

if irandom(9) = 1
- {
-     motion_set(random(360), 1 + random(3));
- }

-

Приведенный выше код заставит экземпляр менять скорость и направление движения через случайные промежутки времени.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_bounce_all.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_bounce_all.htm index d52ed1e95..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_bounce_all.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_bounce_all.htm @@ -1,63 +0,0 @@ - - - - - - move_bounce_all - - - - - - - - - - -

move_bounce_all

-

С помощью этой функции вы можете приказать экземпляру отскакивать от всех экземпляров в комнате, за исключением тех, которым не присвоен индекс sprite или маска. Вы также можете указать ему использовать точную проверку столкновений, если она включена, но имейте в виду, что для этого необходимо, чтобы у всех экземпляров были включены точные маски, и это сильно замедлит игру, если в ней участвует много экземпляров, из-за большого количества обработки, которую необходимо выполнить. Как правило, эта функция используется в событии шага экземпляра, но может быть использована выборочно и в событии столкновения, как показано в примере кода ниже.

-

-

Синтаксис:

-

move_bounce_all( adv );

- - - - - - - - - - - -
АргументТипОписание
advWhether to enable advanced bouncing (true) or not (false).
-

-

Возвращается:

-

-

-

Пример:

-

if other.visible
- {
-     move_bounce_all(false);
- }

-

Приведенный выше код будет помещен в событие столкновения с другим объектом. Сначала он проверяет, виден ли объект, и если виден, то выполняет действие move_bounce_all(). Обратите внимание, что в данном случае отскок является выборочным и будет рассчитан только для этого столкновения, а не для каждого случая, каждого шага.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_bounce_solid.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_bounce_solid.htm index 2c6e70dc6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_bounce_solid.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_bounce_solid.htm @@ -1,61 +0,0 @@ - - - - - - move_bounce_solid - - - - - - - - - - -

move_bounce_solid

-

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

-

-

Синтаксис:

-

move_bounce_solid(adv);

- - - - - - - - - - - -
АргументТипОписание
advWhether to enable advanced bouncing (true) or not (false).
-

-

Возвращается:

-

-

-

Пример:

-

move_bounce_solid(false);

-

Это позволит неточно отскакивать от экземпляров, помеченных как "твердые".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_contact_all.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_contact_all.htm index 41f7631ca..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_contact_all.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_contact_all.htm @@ -1,67 +0,0 @@ - - - - - - move_contact_all - - - - - - - - - - -

move_contact_all

-

Эта функция будет перемещать экземпляр, выполняющий код, на заданное количество пикселей в указанном направлении, пока он не встретит любой другой экземпляр с действующей маской. Вы можете использовать -1 или 0 для maxdist, по умолчанию это 1000px, т.е. GameMaker будет постоянно перемещать экземпляр на 1000 пикселей, пока он не выйдет из столкновения.

-

-

Синтаксис:

-

move_contact_all(dir, maxdist);

- - - - - - - - - - - - - - - -
АргументТипОписание
dirThe direction to move in.
maxdistThe maximum distance the object can travel (-1 or 0 a default value of 1000 pixels).
-

-

Возвращается:

-

-

-

Пример:

-

if !place_meeting(x, y + 1, all)
- {
-     move_contact_all(270, -1);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_contact_solid.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_contact_solid.htm index 9446bfd34..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_contact_solid.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_contact_solid.htm @@ -1,67 +0,0 @@ - - - - - - move_contact_solid - - - - - - - - - - -

move_contact_solid

-

Эта функция перемещает экземпляр, выполняющий код, на заданное количество пикселей в указанном направлении до тех пор, пока он не встретит экземпляр с флажком solid отмеченным как true. Вы можете использовать -1 или 0 для максимального расстояния, которое по умолчанию равно 1000px, т.е. GameMaker будет постоянно перемещать экземпляр на 1000 пикселей, пока он не выйдет из столкновения.

-

-

Синтаксис:

-

move_contact_solid( dir, maxdist );

- - - - - - - - - - - - - - - -
АргументТипОписание
dirThe direction to move in.
maxdistThe maximum distance the object can travel (-1 or 0 a default value of 1000 pixels).
-

-

Возвращается:

-

-

-

Пример:

-

if !place_meeting(x, y + 1, obj_Floor)
- {
-     move_contact_solid(270, -1);
- }

-

Приведенный выше код будет проверять под экземпляром на столкновение с "obj_Floor", и если такового нет, то будет перемещать его вниз, пока не произойдет столкновение или не будет пройдено 1000 пикселей.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_outside_all.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_outside_all.htm index 8c3336ecc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_outside_all.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_outside_all.htm @@ -1,67 +0,0 @@ - - - - - - move_outside_all - - - - - - - - - - -

move_outside_all

-

С помощью этой функции вы можете указать экземпляру выйти из столкновения в любом направлении и на любое количество пикселей за шаг, при этом значение -1 или 0 для maxdist по умолчанию равно 1000px, т.е. GameMaker будет постоянно перемещать экземпляр на 1000 пикселей вверх, пока он не выйдет из столкновения.

-

-

Синтаксис:

-

move_outside_all(dir, maxdist);

- - - - - - - - - - - - - - - -
АргументТипОписание
dirThe direction to move in.
maxdistThe maximum distance the object can travel (-1 or 0 a default value of 1000 pixels).
-

-

Возвращается:

-

-

-

Пример:

-

if place_meeting(x, y, all)
- {
-     move_outside_all(90, 1);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_outside_solid.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_outside_solid.htm index 894fbd2b1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_outside_solid.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_outside_solid.htm @@ -1,69 +0,0 @@ - - - - - - move_outside_solid - - - - - - - - - - -

move_outside_solid

-

С помощью этой функции вы можете указать экземпляру выйти из столкновения с любым экземпляром, отмеченным как solid в любом направлении и на любое количество пикселей за шаг, при этом значение -1 или 0 для maxdist по умолчанию равно 1000px, т.е. GameMaker будет постоянно перемещать экземпляр на 1000 пикселей вверх, пока он не выйдет из столкновения.

-

-

Синтаксис:

-

move_outside_solid(dir, maxdist);

- - - - - - - - - - - - - - - -
АргументТипОписание
dirThe direction to move in.
maxdistThe maximum distance the object can travel (-1 or 0 a default value of 1000 pixels).
-

-

Возвращается:

-

-

-

Пример:

-

if other.solid
- {
-     var pdir;
-     pdir = point_direction(other.x, other.y, x, y);
-     move_outside_solid(pdir, -1);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_random.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_random.htm index 6a5447d69..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_random.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_random.htm @@ -1,68 +0,0 @@ - - - - - - move_random - - - - - - - - - - -

move_random

-

С помощью этой функции вы можете установить экземпляр в любое место в комнате, но выровненное по "невидимой" сетке. Так, значение 32 для hsnap и vsnap установит экземпляр в случайную позицию, выровненную по сетке из 32x32 квадратов. Вы можете установить эти значения в 1, чтобы получить позицию в любом месте комнаты.

-

ПРИМЕЧАНИЕ: Эта функция будет привязываться к одним и тем же позициям при каждом новом запуске игры, поскольку GameMaker каждый раз генерирует одно и то же начальное случайное зерно, чтобы облегчить отладку кода. Чтобы избежать такого поведения, используйте randomise() в начале игры. Это справедливо только при тестировании и отладке игры, так как конечный исполняемый пакет не будет демонстрировать такое поведение и будет случайным при каждом запуске.

-

-

Синтаксис:

-

move_random(hsnap, vsnap);

- - - - - - - - - - - - - - - -
АргументТипОписание
hsnapThe horizontal snapping (the size in pixels between 'cells').
vsnapThe vertical snapping (the size in pixels between 'cells').
-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check(vk_space)
- {
-     move_random(1, 1);
- }

-

При нажатии клавиши пробела экземпляр перемещается в произвольную позицию в любом месте комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_snap.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_snap.htm index c6d25727b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_snap.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_snap.htm @@ -1,70 +0,0 @@ - - - - - - move_snap - - - - - - - - - - -

move_snap

-

Эта функция используется для "привязки" экземпляра к сетке заданного размера. Он будет привязан к ближайшей соответствующей позиции на "невидимой" сетке, которую определяют значения hsnap и vsnap.

-

-

Синтаксис:

-

move_snap(hsnap, vsnap);

- - - - - - - - - - - - - - - -
АргументТипОписание
hsnapThe horizontal snapping (the size in pixels between 'cells').
vsnapThe vertical snapping (the size in pixels between 'cells').
-

-

Возвращается:

-

-

-

Пример:

-

with (obj_Pieces)
- {
-     if (!place_snapped(32, 32))
-     {
-         move_snap(32, 32);
-     }
- }

-

Приведенный выше код проверяет все экземпляры "obj_Pieces" на то, привязаны ли они к сетке 32x32 пикселей, и если нет, то привязывает их к ближайшей позиции в этой сетке.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_towards_point.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_towards_point.htm index 43f96e756..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_towards_point.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_towards_point.htm @@ -1,77 +0,0 @@ - - - - - - move_towards_point - - - - - - - - - - -

move_towards_point

-

Эта функция просто указывает экземпляру, выполняющему код, двигаться к заданной точке с заданной скоростью. Имейте в виду, что именно вы должны указать ему, что делать, когда он достигнет точки, поскольку он не остановится сам по себе. Это означает, что вы можете получить "вибрирующий" экземпляр, когда он движется (например) на 3 пикселя вперед, проскакивает целевую позицию x/y на 2, затем снова движется на 3 пикселя назад, проскакивает целевую точку на 1 и так далее... Есть несколько способов избежать этого, например, используя функцию distance_to_point() чтобы узнать, насколько далеко от заданного места находится экземпляр перед перемещением.

-

ПРИМЕЧАНИЕ: эта функция устанавливает скорость экземпляра, поэтому даже если вы остановите использование этого кода, экземпляр продолжит двигаться в прежнем направлении, поэтому необходимо установить экземпляр speed на 0, если вы хотите, чтобы он остановился. См. пример кода ниже.

-

-

Синтаксис:

-

move_towards_point( x, y, sp );

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x position of the point to move towards.
yРеальноThe y position of the point to move towards.
spРеальноThe speed to move at in pixels per step.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if point_distance(x, y, target.x, target.y) > 5
- {
-     move_towards_point(target.x, target.y, 5);
- }
- else speed = 0;

-

Приведенный выше код будет перемещать экземпляр к позиции экземпляра, индексированной в переменной "target", со скоростью 5 пикселей за шаг. Как только он достигнет этой позиции, скорость будет установлена на 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_wrap.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_wrap.htm index 25d294eb9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_wrap.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/move_wrap.htm @@ -1,72 +0,0 @@ - - - - - - move_wrap - - - - - - - - - - -

move_wrap

-

Эта функция автоматически "заворачивает" экземпляр, вышедший из комнаты, по горизонтальной или вертикальной (или по обеим) осям. Для этого можно указать границы комнаты, и когда экземпляр выйдет за эти границы, GameMaker автоматически завернет его обратно в комнату с другой стороны. Обратите внимание, что для того, чтобы обертывание происходило, у экземпляра должна быть скорость, поскольку направление обертывания зависит от направления движения.

-

-

Синтаксис:

-

move_wrap(hor, vert, margin);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
horБулевоWhether to wrap horizontally (true) or not (false).
vertБулевоWhether to wrap vertically (true) or not (false).
marginРеальноHow far outside the room, in pixels, the object must be to initiate wrapping.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

move_wrap(true, false, sprite_width);

-

Это заставит экземпляр разворачиваться по горизонтали, но не по вертикали, когда он выходит за пределы своей ширины sprite за пределами комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/place_snapped.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/place_snapped.htm index 57179659f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/place_snapped.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement/place_snapped.htm @@ -1,71 +0,0 @@ - - - - - - place_snapped - - - - - - - - - - - -

place_snapped

-

С помощью этой функции можно проверить, выровнено ли начало координат экземпляра (его положение x и y) по сетке с указанными вами значениями hsnap и vsnap.

-

-

Синтаксис:

-

place_snapped(hsnap, vsnap);

- - - - - - - - - - - - - - - -
АргументТипОписание
hsnapThe horizontal snapping to check.
vsnapThe vertical snapping to check.
-

-

Возвращается:

-

-

-

Пример:

-

with (obj_Pieces)
- {
-     if (!place_snapped(32, 32))
-     {
-         move_snap(32, 32);
-     }
- }

-

Приведенный выше код проверяет все экземпляры "obj_Pieces" на то, привязаны ли они к сетке 32x32 пикселей, и если нет, то привязывает их к ближайшей позиции в этой сетке.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement_And_Collisions.htm b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement_And_Collisions.htm index 3a8b4a703..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement_And_Collisions.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Movement_And_Collisions/Movement_And_Collisions.htm @@ -1,43 +0,0 @@ - - - - - - Движение и столкновения - - - - - - - - - - -

Движение и столкновения

-

GameMaker имеет большое количество способов перемещения экземпляров по игровой комнате, начиная от задания векторов скорости и направления и заканчивая простым "помещением" экземпляра в определенное место, а также использованием более сложных методов, таких как поиск пути. Существует также большое количество различных методов обнаружения столкновений между двумя экземплярами, и выбор того или иного из них будет зависеть от типа создаваемой игры и конкретной ситуации, в которой необходимо использовать функции столкновения. В следующих разделах мы рассмотрим все это и перечислим все функции, связанные с движением, поиском пути и столкновениями:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/Networking.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/Networking.htm index 57c9ec0bd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/Networking.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/Networking.htm @@ -1,62 +0,0 @@ - - - - - - Работа в сети - - - - - - - - - - -

Работа в сети

-

Сетевые функции GameMaker основаны на сокетах, которые являются промышленным стандартом на всех платформах. С помощью сокетов вы можете создавать как клиенты, так и серверы, используя простой GML, что позволяет вам создать даже однопользовательскую игру по модели клиент/сервер (что позволит позже легко добавить многопользовательскую игру).

-

По сути, сокет - это объект, который может отправлять, получать, подключаться и прослушивать порты в сети. Эти функции работают только с соединениями TCP/IP, на которых основан интернет (точнее, IPv4). По сути, это позволяет вам соединить один сокет с IP-адресом (допустим, 192.168.1.10) с другим сокетом на другом IP-адресе (допустим, 192.168.1.11). После соединения эти два сокета могут отправлять данные туда и обратно, используя функции network_send_* (например, такие как network_send_packet()) и специального асинхронного события, которое вызывается ими. Это асинхронное событие будет генерировать карту DS, содержащую полученные данные, а также другие детали, и вы можете найти полную информацию в разделе о сетевом асинхронном событии.

-

Вместо того чтобы программам приходилось читать и разбираться с каждым битом сетевого трафика, поступающего на машину, IP-адреса также имеют дело с портами, которые нумеруются от 0 до 65535. Это позволяет каждой программе получать только те пакеты данных, которые ее интересуют, а не все, что было отправлено каждой программой. Это также значительно экономит процессорное время, так как серьезно сокращает обработку данных, поэтому в GameMaker можно "слушать" порты. Таким образом, сервер создает сокет, а затем привязывает его к определенному порту для прослушивания. Затем он будет получать уведомления о соединениях, разъединениях и передаче данных с этого сокета.

-

Сами "пакеты" данных состоят из двоичных данных, взятых из буфера. Этот буфер можно создать и манипулировать им с помощью функций GameMaker Buffer.

-

Стоит отметить, что если вы создаете проект для HTML5, то вы не сможете использовать функции создания сервера из-за ограничений браузера и должны будете написать собственный сервер для этой платформы, используя что-то вроде Electron или NodeJS. Также обратите внимание, что если ваша игра кроссплатформенная и вы планируете подключаться к экземпляру игры HTML5 с сервера, работающего на мобильном или настольном устройстве, то ваш сервер может взаимодействовать с экземпляром HTML5 только по протоколу Web Socket (для этого используется константа network_socket_ws или network_socket_wss - см. network_create_server() более подробную информацию). Это означает, что вашему серверу, возможно, придется создать два сокета на разных портах: один для соединения с объектами, не относящимися к HTML5 (Android, Windows и т.д.), и один для соединения с объектом HTML5.

-

Существуют следующие функции, которые вы можете использовать для работы в сети:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_connect.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_connect.htm index a37c4d4e6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_connect.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_connect.htm @@ -1,74 +0,0 @@ - - - - - - network_connect - - - - - - - - - - -

network_connect

-

С помощью этой функции вы можете отправить запрос на подключение к серверу. Функция принимает идентификатор сокета для подключения (см. network_create_socket()) и требует, чтобы вы указали IP-адрес для подключения (строка), а также порт для подключения. В случае неудачи соединения будет возвращено значение меньше 0. Соединение использует специальный протокол, который обеспечивает соединение только игр GameMaker, однако если вам нужно подключиться к серверу, который не является игрой GameMaker, вы можете воспользоваться командой network_connect_raw(). Обратите внимание, что по умолчанию функция является синхронной, а это означает, что ваша игра может "зависнуть" в момент установления соединения. Вы можете установить значение тайм-аута для соединения или сделать создание асинхронным, используя функцию network_set_config(), или же вместо нее использовать функцию network_connect_async().

-

ПРИМЕЧАНИЕ Вы не можете использовать эту функцию в HTML5. Для WebSockets используйте функцию Async.

-

-

Синтаксис:

-

network_connect(socket, url, port);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
socketИдентификатор сетевого сокетаThe id of the socket to use.
urlСтрокаThe URL or IP to connect to (a string).
portРеальноThe port to connect to.
-

-

Возвращается:

-

Real or Network Socket ID

-

-

Пример:

-

client = network_create_socket(network_socket_tcp);
- network_connect(client, "192.134.0.1", 6510);

-

Приведенный выше код создаст новый TCP сокет и попытается подключиться через него к заданному IP-адресу на порт 6510.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_connect_async.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_connect_async.htm index 8a40fde56..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_connect_async.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_connect_async.htm @@ -1,70 +0,0 @@ - - - - - - network_connect_async - - - - - - - - - - -

network_connect_async

-

С помощью этой функции вы можете отправить запрос на подключение к серверу. Функция принимает идентификатор сокета для подключения (см. network_create_socket()) и требует, чтобы вы указали IP-адрес для подключения - (строка), а также порт для подключения, и в случае неудачи соединения будет возвращено значение меньше 0. Соединение использует специальный протокол, который обеспечивает соединение только игр GameMaker, однако если вам необходимо - подключиться к серверу, который не является игрой GameMaker, вы можете воспользоваться командой network_connect_async_raw(). Обратите внимание, что эта функция является асинхронной, генерируя событие Asynchronous Networking типа network_type_non_blocking_connect.

-

-

Синтаксис:

-

network_connect_async(socket, url, port);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
socketThe id of the socket to use.
urlThe URL or IP to connect to (a string).
portThe port to connect to.
-

-

Возвращается:

-

-

-

Пример:

-

client = network_create_socket(network_socket_tcp);
network_connect_async(client, "192.134.0.1", 6510);

-

Приведенный выше код создаст новый TCP сокет и попытается установить через него асинхронное соединение с заданным IP адресом на порту 6510.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_connect_raw.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_connect_raw.htm index c509b5f9f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_connect_raw.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_connect_raw.htm @@ -1,74 +0,0 @@ - - - - - - network_connect_raw - - - - - - - - - - -

network_connect_raw

-

С помощью этой функции вы можете отправить запрос на подключение к серверу. Функция принимает идентификатор сокета для подключения (см. network_create_socket()) и требует, чтобы вы указали IP-адрес для подключения (строка), а также порт для подключения, и в случае неудачи соединения будет возвращено значение меньше 0. Разница между этой функцией и network_connect() заключается в том, что эта функция может подключаться к любому серверу и ничего не делает с исходными данными, то есть вам придется самостоятельно реализовывать протоколы на стороне сервера. Обратите внимание, что по умолчанию функция работает синхронно, а это значит, что ваша игра может "зависнуть" при установлении соединения. Вы можете установить значение тайм-аута для соединения или сделать создание асинхронным, используя функцию network_set_config()или альтернативно использовать функцию network_connect_async_raw() вместо этого.

-

ПРИМЕЧАНИЕ Вы не можете использовать эту функцию в HTML5. Для WebSockets используйте функцию Async.

-

-

Синтаксис:

-

network_connect_raw(socket, url, port);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
socketИдентификатор сетевого сокетаThe id of the socket to use.
urlСтрокаThe URL or IP to connect to (a string).
portРеальноThe port to connect to.
-

-

Возвращается:

-

Real or Network Socket ID

-

-

Пример:

-

client = network_create_socket(network_socket_tcp);
- network_connect_raw(client, "www.macsweeneygames.com", 6510);

-

Приведенный выше код создаст новый TCP сокет и попытается создать через него "сырое" соединение с заданным URL на порту 6510.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_connect_raw_async.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_connect_raw_async.htm index 1e8a0dd86..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_connect_raw_async.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_connect_raw_async.htm @@ -1,70 +0,0 @@ - - - - - - network_connect_raw_async - - - - - - - - - - -

network_connect_raw_async

-

С помощью этой функции вы можете отправить запрос на подключение к серверу. Функция принимает идентификатор сокета для подключения (см. network_create_socket()) и требует, чтобы вы указали IP-адрес для подключения - (строка), а также порт для подключения, и в случае неудачи соединения будет возвращено значение меньше 0. Разница между этой функцией и network_connect_async()в том, что эта - может подключаться к любому серверу и ничего не делает с исходными данными, что означает, что вы должны сами реализовать протоколы на стороне сервера. Обратите внимание, что эта функция является асинхронной, генерируя событие Asynchronous Networking типа network_type_non_blocking_connect.

-

-

Синтаксис:

-

network_connect_raw_async(socket, url, port);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
socketThe id of the socket to use.
urlThe URL or IP to connect to (a string).
portThe port to connect to.
-

-

Возвращается:

-

-

-

Пример:

-

client = network_create_socket(network_socket_tcp);
network_connect_raw_async(client, "www.macsweeneygames.com", 6510);

-

Приведенный выше код создаст новый TCP сокет и попытается создать через него "сырое" асинхронное соединение с заданным URL на порту 6510.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_create_server.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_create_server.htm index 7b0502d2c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_create_server.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_create_server.htm @@ -1,84 +0,0 @@ - - - - - - network_create_server - - - - - - - - - - - -

network_create_server

-

Эта функция используется для создания нового сетевого сервера для вашей игры, используя один из разрешенных протоколов подключения (см. константы, перечисленные ниже). Вы задаете тип сервера, затем указываете порт, который он будет использовать, и, наконец, количество максимальных соединений, которые должны быть разрешены в любой момент времени к серверу (обратите внимание, что это число зависит от вас, но слишком большое количество подключенных клиентов насытит сеть или процессор устройства не сможет справиться с обработкой такого количества игроков, поэтому используйте функцию с осторожностью). Функция возвращает уникальный id, который должен быть сохранен в переменной и использоваться для идентификации сервера во всех дальнейших сетевых функциях, или значение меньше 0, если соединение не удалось.

-
-

-

Синтаксис:

-

network_create_server(type, port, max_client);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
typeТип розетки ПостояннаяThe type of server to create (see the constants listed above).
portРеальноThe port that the server will use.
max_clientРеальноThe maximum number of clients that can connect at once.
-

-

Возвращается:

-

Network Socket ID

-

-

Пример:

-

var port = 6510;
- server = network_create_server(network_socket_tcp, port, 32);
- while (server < 0 && port < 65535)
- {
-     port++
-     server = network_create_server(network_socket_tcp, port, 32);
- }

-

Приведенный выше код попытается создать сервер, используя TCP через порт 6510. Если этот порт недоступен, он будет перебирать порты, чтобы найти тот, который доступен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_create_server_raw.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_create_server_raw.htm index de04f899b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_create_server_raw.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_create_server_raw.htm @@ -1,80 +0,0 @@ - - - - - - network_create_server_raw - - - - - - - - - - - -

network_create_server_raw

-

Эта функция используется для создания нового сетевого сервера для вашей игры, используя один из разрешенных протоколов подключения (см. константы, перечисленные ниже). Вы задаете тип сервера, затем указываете порт, который он будет использовать, и, наконец, количество максимальных соединений, которые должны быть разрешены в любой момент времени к серверу (обратите внимание, что это число зависит от вас, но слишком большое количество подключенных клиентов насытит сеть или процессор устройства не сможет справиться с обработкой такого количества игроков, поэтому используйте функцию с осторожностью). Функция возвращает уникальный id, который должен быть сохранен в переменной и использоваться для идентификации сервера во всех дальнейших сетевых функциях, или значение меньше 0, если соединение не удалось.

-
-

Поскольку это создает "сырой" сервер, он не будет принимать или использовать какие-либо встроенные заголовки данных GameMaker для связи, поэтому вы должны использовать функции network_send_raw() и network_send_udp_raw() для отправки неформатированных данных на созданный сервер.

-

-

Синтаксис:

-

network_create_server_raw(type, port, max_client);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
typeThe type of server to create (see the constants listed below).
portThe port that the server will use.
max_clientThe maximum number of clients that can connect at once.
-

-

Возвращается:

-

Network Socket ID

-

-

Пример:

-

var port = 6510;
- server = network_create_server_raw(network_socket_tcp, port, 32);
- while (server < 0 && port < 65535)
- {
-     port++
-     server = network_create_server_raw(network_socket_tcp, port, 32);
- }

-

Приведенный выше код попытается создать сервер, используя TCP через порт 6510. Если этот порт недоступен, он будет перебирать порты, чтобы найти тот, который доступен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_create_socket.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_create_socket.htm index 92de11661..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_create_socket.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_create_socket.htm @@ -1,80 +0,0 @@ - - - - - - network_create_socket - - - - - - - - - - - -

network_create_socket

-

Эта функция используется для создания нового клиентского сокета для вашей игры для связи по сети. Вы должны определить тип сокета (см. список констант ниже), и функция вернет уникальный идентификатор для этого сокета, который должен использоваться во всех дальнейших вызовах функций для этого сокета, или значение меньше 0, если соединение не удалось.

-

СОВЕТ Вы можете использовать IP-адрес "127.0.0.1" для обратного подключения к тому же устройству, на котором запущена игра.

-
-

-
-

-

Синтаксис:

-

network_create_socket(type);

- - - - - - - - - - - - - -
АргументТипОписание
typeТип розетки ПостояннаяThe type of socket connection to create (see the constants listed above).
-

-

Возвращается:

-

Network Socket ID

-

-

Пример:

-

if os_browser == browser_not_a_browser
- {
-     client = network_create_socket(network_socket_tcp);
-     network_connect( client, "192.134.0.1", 6510 );
- }
- else
- {
-     client = network_create_socket(network_socket_ws);
-     network_connect_raw_async( client, "192.134.0.1", 6520 );
- }

-

Приведенный выше код проверит, запущена ли игра в браузере или нет, и создаст новый TCP или Web-сокет, после чего попытается подключиться через него к заданному IP-адресу на заданном порту.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_create_socket_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_create_socket_ext.htm index b9c5c4b1b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_create_socket_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_create_socket_ext.htm @@ -1,70 +0,0 @@ - - - - - - network_create_socket_ext - - - - - - - - - - - -

network_create_socket_ext

-

Эта функция используется для создания нового клиентского сокета для вашей игры для общения по сети. Вы должны определить тип сокета (см. список констант ниже) и указать порт для использования, и функция вернет уникальный идентификатор, который должен использоваться во всех дальнейших вызовах функций для этого сокета, или значение меньше 0, если соединение не удалось.

-
-

-
-

Синтаксис:

-

network_create_socket_ext(protocol, port);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
protocolТип розетки ПостояннаяThe network protocol to use
portРеальноThe port to use
-

-

Возвращается:

-

Network Socket ID

-

-

Пример:

-

client = network_create_socket_ext(network_socket_udp, 6510);

-

Приведенный выше код создаст новый UDP сокет на порту 6510.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_destroy.htm index d6a0e5d4f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_destroy.htm @@ -1,64 +0,0 @@ - - - - - - network_destroy - - - - - - - - - - -

network_destroy

-

С помощью этой функции вы можете удалить подключение сетевого сокета из вашей игры.

-

ПРИМЕЧАНИЕ: Эта функция не будет работать при использовании в проекте, работающем на HTML5-цели.

-

-

Синтаксис:

-

network_destroy(socket);

- - - - - - - - - - - -
АргументТипОписание
socketThe id of the socket to remove.
-

-

Возвращается:

-

-

-

Пример:

-

if !os_is_network_connected()
- {
-     network_destroy(sock);
- }

-

Приведенный выше код проверит, есть ли соединение для передачи данных, и если оно не найдено, уничтожит сокет с идентификатором "sock".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_resolve.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_resolve.htm index e69ffcfdd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_resolve.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_resolve.htm @@ -1,61 +0,0 @@ - - - - - - network_resolve - - - - - - - - - - - -

network_resolve

-

Эта функция возвращает IP-адрес заданного URL.

-

-

Синтаксис:

-

network_resolve(url);

- - - - - - - - - - - -
АргументТипОписание
urlThe URL to get the IP of (a string).
-

-

Возвращается:

-

-

-

Пример:

-

game_ip = network_resolve("www.macsweeneygames.com");

-

Приведенный выше код вернет IP-адрес заданного URL и сохранит его в переменной "game_ip".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_broadcast.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_broadcast.htm index 2ee329489..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_broadcast.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_broadcast.htm @@ -1,81 +0,0 @@ - - - - - - network_send_broadcast - - - - - - - - - - -

network_send_broadcast

-

С помощью этой функции вы можете транслировать данные из буфера локально на диапазон IP-адресов (более подробную информацию о буферах см. в разделе Справочник - Буферы). Диапазон ограничен диапазоном устройства, на котором работает сервер, например, если устройство имеет IP-адрес 92.168.11.130, то данные будут транслироваться в диапазоне 92.168.11.*. Функция возвращает количество байт отправленных данных или число меньше 0, если отправка не удалась.

-

Эта функция будет работать только при использовании с UDP - ваш сервер должен быть TCP, а ваш клиент должен иметь клиентский сокет UDP, созданный с помощью функции network_create_socket_ext() для того, чтобы получать любые широковещательные сообщения, отправляемые с сервера.

-

Эта функция не будет работать при использовании в проекте, работающем на HTML5-цели.

-
-

Синтаксис:

-

network_send_broadcast(socket, port, bufferid, size);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
socketИдентификатор сетевого сокетаThe id of the socket to use.
portРеальноThe port that the server will use.
bufferidИдентификатор буфераThe id of the buffer to get the data from.
sizeРеальноThe size (in bytes) of the data.
-

-

Возвращается:

-

Real

-

-

Пример:

-

buffer_seek(broadcast_buffer, buffer_seek_start, 0);
- buffer_write(broadcast_buffer, buffer_string, global.server_name);
- network_send_broadcast(server, 6511, broadcast_buffer, buffer_tell(broadcast_buffer));

-

Приведенный выше код записывает строку имени текущего сервера (хранится в "global.ServerName"), затем записывает ее в двоичный буфер с идентификатором "broadcast_buffer". Затем эти данные локально транслируются на ряд IP-адресов (IP-адрес устройства в настоящее время подразумевается как базовый диапазон вещания) на порт 6511.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_packet.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_packet.htm index b182dca60..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_packet.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_packet.htm @@ -1,69 +0,0 @@ - - - - - - network_send_packet - - - - - - - - - - -

network_send_packet

-

С помощью этой функции вы можете отправить "пакет" данных по сети. Функция принимает идентификатор сокета для подключения, затем вы должны указать идентификатор буфера, который содержит данные для отправки (более подробную информацию о буферах см. в разделе " Справочник - Буферы"), и, наконец, размер (в байтах) пакета данных. Пакеты, отправленные с помощью этой функции, будут отформатированы таким образом, чтобы игра GameMaker, получающая данные, могла правильно "разделить" пакеты, а функция вернет количество байт отправленных данных или число меньше 0, если отправка не удалась. Стоит отметить, что окончательный размер отправляемых данных, возвращаемый этой функцией, будет также включать информацию заголовка GameMaker, что составляет дополнительные 12 байт.

-

-

Синтаксис:

-

network_send_packet(socket, bufferid, size);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
socketThe id of the socket to use.
bufferidThe id of the buffer to get the data from.
sizeThe size (in bytes) of the data.
-

-

Возвращается:

-

Real

-

-

Пример:

-

buff = buffer_load("player_save.dat");
- network_send_packet(sock, buff, buffer_get_size(buff));

-

Приведенная выше информация загружает ранее сохраненные данные буфера в память и возвращает идентификатор буфера для хранения в переменной "buff". Затем этот полный буфер отправляется в виде пакета по сети через сокет, идентифицируемый переменной "sock".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_raw.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_raw.htm index 084b2e61b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_raw.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_raw.htm @@ -1,104 +0,0 @@ - - - - - - network_send_raw - - - - - - - - - - -

network_send_raw

-

С помощью этой функции вы можете отправить "сырой" пакет данных по сети. Функция принимает идентификатор сокета для подключения, затем вы должны указать идентификатор буфера, содержащего данные для отправки (более подробную информацию о буферах см. в разделе Reference - Buffers), и, наконец, размер (в байтах) пакета данных. Отправляемые данные никак не форматируются GameMaker, и принимающие устройства получат их в виде потока, что означает, что вам придется обрабатывать их самостоятельно. Функция возвращает количество байт отправленных данных или число меньше 0, если отправка не удалась.

-

Аргумент опций

-

Последний аргумент является необязательным и используется только в WebSockets. Он позволяет выбрать между отправкой двоичных или текстовых данных. В этом аргументе может быть указана любая из этих констант:

- - - - - - - - - - - - - - - - - - - - - - -
Тип сетевой отправки Постоянная
ПостояннаяОписание
network_send_binaryОтправить двоичное сообщение
network_send_textОтправить текстовое сообщение
-

API некоторых платформ принимают только текстовые сообщения при использовании WebSockets (например, Twitch), поэтому в таких случаях можно использовать константу network_send_text. Если этот аргумент не указан, по умолчанию отправляются двоичные данные.

-

-

Синтаксис:

-

network_send_raw(socket, bufferid, size, [options]);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
socketИдентификатор сетевого сокетаThe id of the socket to use.
bufferidИдентификатор буфераThe id of the buffer to get the data from.
sizeРеальноThe size (in bytes) of the data.
optionsТип сетевой отправки КонстантаOPTIONAL Используется для WebSockets для выбора между текстовыми и двоичными данными; если не указано, отправляются двоичные данные.
-

-

Возвращается:

-

Real

-

-

Пример:

-

buff = buffer_load("player_save.dat");
- network_send_raw(sock, buff, buffer_get_size(buff));

-

Приведенная выше информация загружает ранее сохраненные данные буфера в память и возвращает идентификатор буфера для хранения в переменной "buff". Затем этот полный буфер отправляется в виде пакета необработанных данных по сети через сокет, идентифицируемый переменной "sock".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_udp.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_udp.htm index e500c50e0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_udp.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_udp.htm @@ -1,83 +0,0 @@ - - - - - - network_send_udp - - - - - - - - - - -

network_send_udp

-

С помощью этой функции вы можете отправлять данные по сети с помощью UDP на сервер. Функция принимает идентификатор сокета для подключения, URL для подключения и порт для использования. Затем вы должны указать идентификатор буфера, который содержит данные для отправки (более подробную информацию о буферах см. в разделе Справочник - Буферы), и, наконец, размер (в байтах) данных. UDP является "бесконнектным" в том смысле, что вы фактически не выполняете соединение, вы просто посылаете пакет непосредственно на IP, а сервер получает входящие данные с IP-адреса и должен работать с ними "как есть". Функция возвращает количество байт отправленных данных или число меньше 0, если отправка не удалась. Стоит отметить, что окончательный размер отправляемых данных, возвращаемый этой функцией, будет также включать информацию заголовка GameMaker, что составляет дополнительные 12 байт.

-

Эта функция не будет работать при использовании в проекте, работающем на HTML5, и проекты HTML5 также не смогут принимать UDP.

-

-

Синтаксис:

-

network_send_udp(socket, url, port, bufferid, size);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
socketИдентификатор сетевого сокетаThe id of the socket to use.
urlСтрокаThe url or IP to connect to (a string).
portРеальноThe port to connect to.
bufferidИдентификатор буфераThe id of the buffer to get the data from.
sizeРеальноThe size (in bytes) of the data.
-

-

Возвращается:

-

Real

-

-

Пример:

-

network_send_udp(sock, "www.macsweeneygames.com", 6510, buff, buffer_tell(buff));

-

Приведенный выше код отправит UDP-пакет на сервер, заданный URL, по порту 6510. Данные берутся из буфера, индексированного в переменной "buff".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_udp_raw.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_udp_raw.htm index 673a4f94c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_udp_raw.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_udp_raw.htm @@ -1,77 +0,0 @@ - - - - - - network_send_udp_raw - - - - - - - - - - -

network_send_udp_raw

-

С помощью этой функции вы можете отправлять данные по сети с помощью UDP на сервер. Функция принимает идентификатор сокета для подключения, URL для подключения и порт для использования. Затем вы должны указать идентификатор буфера, который содержит данные для отправки (более подробную информацию о буферах см. в разделе Справочник - Буферы), и, наконец, размер (в байтах) данных. UDP является "бесконнектным" в том смысле, что вы фактически не выполняете соединение, вы просто посылаете пакет непосредственно на IP-адрес, а сервер получает входящие данные с IP-адреса и должен работать с ними "как есть". Отправляемые данные никак не форматируются GameMaker, и принимающие устройства будут получать данные в виде потока, что означает, что вам придется обрабатывать их самостоятельно. Функция возвращает количество байт отправленных данных или число меньше 0, если отправка не удалась.

-

ПРИМЕЧАНИЕ Эта функция не будет работать при использовании в проекте, работающем на HTML5-цели, и проекты HTML5 также не смогут принимать UDP.

-

-

Синтаксис:

-

network_send_udp_raw(socket, url, port, bufferid, size);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
socketThe id of the socket to use.
urlThe url or IP to connect to (a string).
portThe port to connect to.
bufferidThe id of the buffer to get the data from.
sizeThe size (in bytes) of the data.
-

-

Возвращается:

-

Real

-

-

Пример:

-

network_send_udp_raw(sock, "www.macsweeneygames.com", 6510, buff, buffer_tell(buff));

-

Приведенный выше код отправит необработанный UDP-пакет на сервер, заданный URL, по порту 6510. Данные берутся из буфера, индексированного в переменной "buff".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_set_config.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_set_config.htm index 26316ef1c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_set_config.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_set_config.htm @@ -1,132 +0,0 @@ - - - - - - network_set_config - - - - - - - - - - -

network_set_config

-

С помощью этой функции можно задать различные конфигурации сети.

-

ПРИМЕЧАНИЕ: Эта функция не будет работать при использовании в проекте, работающем на HTML5-цели.

-

Эти конфигурации задаются в виде констант, и настройка будет зависеть от выбранной вами константы. В таблице ниже перечислены доступные константы и их настройки:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Конфигурация сети Постоянная
ПостояннаяОписаниеНастройка
network_config_connect_timeoutУстановите значение тайм-аута соединенияA value in milliseconds
network_config_use_non_blocking_socketСкажите GameMaker не блокировать при подключении.0 = block, 1 = don't block
network_config_enable_reliable_udpВключает протокол "надежный UDP" для существующего сокета UDPThe socket ID to target
network_config_disable_reliable_udpОтключает протокол "надежный UDP" для существующего UDP socked.The socket ID to target
network_config_avoid_time_waitУстанавливает значение тайм-аута SO_LINGER на 0 для существующего TCP-сокета.The socket ID to target
network_config_message_size_limitSets the size limit on incoming messagesThe size limit in bytes
-


- Первая опция (network_config_connect_timeout) просто устанавливает тайм-аут для подключения к серверу, но не меняет поведение соединения, кроме времени ожидания. Рекомендуется не устанавливать это значение слишком низким и держать его около 1000 для игры только по локальной сети или 4000 или около того для Интернета, иначе игра может случайно не подключиться. Если вы хотите установить значение тайм-аута для отправки/получения пакетов, используйте функцию network_set_timeout().

-

Второй вариант (network_config_use_non_blocking_socket) означает, что все функции network_connect_* (неасинхронные) будут мгновенно возвращать socket_id, но вы не сможете отправлять или получать на этом сокете, пока не получите асинхронное сетевое событие. У вызванного события ключ "type" будет установлен на network_type_non_blocking_connect (более подробную информацию вы можете найти на странице Асинхронное сетевое событие). Это глобальная настройка, поскольку GameMaker не поддерживает смесь блокирующих и неблокирующих процессов в одном приложении.

-

Третья и четвертая опции (network_config_enable_reliable_udp, network_config_disable_reliable_udp) предназначены для включения или отключения надежного UDP-протокола GameMaker и, соответственно, должны использоваться только для UDP-соединений. Слово "надежный" в данном случае означает, что, если оно включено на обоих концах соединения, GameMaker будет пытаться проверить правильность доставки ваших пакетов и повторно отправлять те, которые не дошли (обратите внимание, мы не гарантируем, что ваши пакеты дойдут в порядке передачи). При использовании надежного типа сокета ко всем пакетам udp будет добавляться 12-байтовый заголовок, содержащий информацию, необходимую GameMaker для проверки пакета на наличие ошибок и повторной отправки недостающих пакетов. При использовании этой опции стоит обратить внимание на следующие моменты:

-
    -
  • Протокол должен быть включен/выключен на обеих сторонах перед отправкой данных, и любые данные, отправленные или полученные до включения/выключения опции, не будут затронуты.
  • -
  • Вы можете включать и выключать протокол для любого заданного идентификатора сокета несколько раз, если это правильно управляется как на стороне сервера, так и на стороне клиента.
  • -
  • Можно иметь два отдельных сокета UDP, для одного из которых включен надежный UDP, а для другого он отключен.
  • -
-

Последняя опция network_config_avoid_time_wait предназначена только для TCP-соединений и может быть использована для установки значения SO_LINGER в 0,чтобы избежать большого количества соединений, находящихся в состоянии TIME_WAIT , которые задействуютвсе доступные ресурсы сервера. Это изменение является постоянным, пока сокет жив, и не может быть отменено.

-

-

Синтаксис:

-

network_set_config(config_value, setting);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
config_valueКонфигурация сети ПостояннаяThe config constant to set (refer to the table at the top of this page).
settingПеременнаяThe setting value of the config.
-

-

Возвращается:

-

String

-

-

Пример:

-

network_set_config(network_config_connect_timeout, 1000);
- network_set_config(network_config_use_non_blocking_socket, 1);

-

Приведенный выше код установит тайм-аут для сетевого соединения на 1000 мс и запретит GameMaker блокировать соединение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_set_timeout.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_set_timeout.htm index 8d44bac10..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_set_timeout.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_set_timeout.htm @@ -1,69 +0,0 @@ - - - - - - network_set_timeout - - - - - - - - - - -

network_set_timeout

-

С помощью этой функции вы можете установить тайм-аут для чтения и записи данных на сервер или с сервера через заданный сокет. Обратите внимание, что тайм-аут не генерирует никаких событий, поэтому вам придется самостоятельно работать с тайм-аутами, используя, например, сигналы тревоги. - Обратите внимание, что это значение влияет только на отправку и получение данных, и если вы хотите изменить значение таймаута соединения, то вам следует использовать функцию network_set_config().

-

-

Синтаксис:

-

network_set_timeout(socket, read_timeout, write_timeout);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
socketThe id of the socket to use.
read_timeoutThe milliseconds in which a transfer from a server will timeout.
write_timeoutThe milliseconds in which a transfer to a server will timeout.
-

-

Возвращается:

-

-

-

Пример:

-

network_set_timeout(sock, 3000, 3000);

-

Приведенный выше код установит тайм-аут для чтения и записи данных через сокет, индексированный в переменной "sock", равным 3 секундам.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_build_date.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_build_date.htm index d39e70edd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_build_date.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_build_date.htm @@ -1,49 +0,0 @@ - - - - - - GM_build_date - - - - - - - - - - -

GM_build_date

-

Эта константа содержит дату и время, когда запускаемый исполняемый файл был создан GameMaker. Значение может быть разобрано с помощью функций Date и Time и берется из системного значения UTC во время компиляции.

-

-

Синтаксис:

-

GM_build_date

-

-

Возвращается:

-

Datetime

-

-

Пример:

-

draw_text(32, 32, date_time_string(GM_build_date));
- draw_text(32, 64, "v" + GM_version);

-

Приведенный выше код выведет номер версии игры, а также дату и время, когда она была скомпилирована.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_build_type.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_build_type.htm index 71c98f368..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_build_type.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_build_type.htm @@ -1,49 +0,0 @@ - - - - - - GM_build_type - - - - - - - - - - - -

GM_build_type

-

Эта строковая константа хранит тип сборки: "exe" для созданного исполняемого файла или "run" для тестового запуска, запущенного с сайта IDE.

-

-

Синтаксис:

-

GM_build_type;

-

-

Возвращается:

-

String

-

-

Пример:

-

draw_text(32, 32, GM_build_type);

-

Приведенный выше код выведет тип сборки текущего запущенного исполняемого файла.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_project_filename.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_project_filename.htm index fdac8ded7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_project_filename.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_project_filename.htm @@ -1,49 +0,0 @@ - - - - - - GM_project_filename - - - - - - - - - - - -

GM_project_filename

-

Эта константа содержит полный путь и имя файла проекта YYP.

-

-

Синтаксис:

-

GM_project_filename;

-

-

Возвращается:

-

String

-

-

Пример:

-

draw_text(32, 32, GM_project_filename);

-

Приведенный выше код рисует значение константы GM project filename.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_runtime_version.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_runtime_version.htm index 27a1c419b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_runtime_version.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_runtime_version.htm @@ -1,50 +0,0 @@ - - - - - - GM_runtime_version - - - - - - - - - - -

GM_runtime_version

-

Эта константа содержит номер версии среды выполнения, определенной в Preferences как среда выполнения, используемая для сборки проекта. Значение хранится в виде строки.

-

-

Синтаксис:

-

GM_runtime_version

-

-

Возвращается:

-

String

-

-

Пример:

-

draw_text(32, 32, date_time_string(GM_build_date));
- draw_text(32, 64, "v" + GM_version);
- draw_text(32, 96, "Runtime " + GM_runtime_version);

-

Приведенный выше код принимает константы GM date, version и runtime и выводит их на экран.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_version.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_version.htm index fe496160d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_version.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/GM_version.htm @@ -1,48 +0,0 @@ - - - - - - GM_version - - - - - - - - - - -

GM_version

-

Эта константа хранит номер версии, определенный в Опциях игры для каждой целевой платформы. Значение хранится в виде строки.

-

-

Синтаксис:

-

GM_version

-

-

Возвращается:

-

-

-

Пример:

-

draw_text(32, 32, date_time_string(GM_build_date));
draw_text(32, 64, "v" + GM_version);

-

Приведенный выше код принимает константы GM date и version и выводит их на экран.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/OS_And_Compiler.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/OS_And_Compiler.htm index 6e47f1b8f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/OS_And_Compiler.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/OS_And_Compiler.htm @@ -1,84 +0,0 @@ - - - - - - ОС и компилятор - - - - - - - - - - -

ОС и компилятор

-

При создании кроссплатформенных игр часто бывает крайне важно получить информацию об операционной системе, на которой работает ваше устройство. Такие вещи, как язык, версия или состояние сети, могут быть использованы для адаптации вашей игры к системе, на которой она работает, и для обеспечения наилучших условий для конечного пользователя, поэтому GameMaker имеет ряд специальных функций, которые можно использовать для получения необходимой информации.

-

Следующие функции и переменные можно использовать для получения определенных сведений об операционной системе или браузере, в котором запущена ваша игра:

- -

-

Некоторые функции предварительно компилируются при запуске игры (т.е. они используются для определения того, как будет скомпилирована конечная игра), а некоторые также используются после компиляции игры для получения конкретных сведений о среде выполнения. Здесь вы можете найти полный список этих функций:

- -

-

На сайте Windows разрешение планировщика потоков Windows по умолчанию устанавливается на 1 мс при запуске игры. Следующие функции доступны для получения и изменения разрешения планировщика потоков Windows во время выполнения игры:

- -

-

Наконец, при работе с расширениями вам может понадобиться возможность определять и вызывать внешние функции во время выполнения, и тогда вы будете использовать следующее:

-

ПРИМЕЧАНИЕ: Это унаследованные функции, и вы должны определить любые функции расширения в самом редакторе расширений.

-

ПРИМЕЧАНИЕ: Эти функции предназначены только для целевых платформ Windows и macOS.

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/environment_get_variable.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/environment_get_variable.htm index cc0ade14e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/environment_get_variable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/environment_get_variable.htm @@ -1,64 +0,0 @@ - - - - - - environment_get_variable - - - - - - - - - - - -

environment_get_variable

-

Эта функция возвращает значение (строка) переменной окружения с заданным именем (также строка). Вы можете получить доступные переменные окружения на сайтах macOS и Ubuntu (Linux), набрав "env" в терминальном приложении, а для получения - информацию о переменных окружения Windows, если вы используете командную строку, введите "echo %PATH%", а с помощью PowerShell - "ls env". Обратите внимание, что и на macOS, и на Ubuntu (Linux) переменная окружения "HOME" - вернет путь "~/", который отображается на "/Users/<username>" на macOS и "/home/<username>" на Ubuntu (Linux).

-

ПРИМЕЧАНИЕ: Эта функция предназначена только для Windows, macOS и Ubuntu (Linux).

-

-

Синтаксис:

-

environment_get_variable(name);

- - - - - - - - - - - -
АргументТипОписание
nameThe name (a string) of the environment variable to check.
-

-

Возвращается:

-

-

-

Пример:

-

e_str = environment_get_variable("APPDATA");

-

Приведенный выше код вернет полный путь для переменной окружения "%appdata%", которая обычно равна "C:\Users\{username}\AppData\Roaming".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/external_call.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/external_call.htm index 63de5640b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/external_call.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/external_call.htm @@ -1,68 +0,0 @@ - - - - - - external_call - - - - - - - - - - -

external_call

-

Если вы создали вызов внешней функции dll или dylib с помощью функции external_define()то вы можете использовать эту функцию для последующего вызова. Вы передаете имя ранее определенной функции, а также каждый из аргументов, которые она требует (каждый аргумент должен быть правильного типа, либо вещественным, либо строковым), и функция возвращает результат внешнего вызова.

-

-

Синтаксис:

-

external_call(id, args[0...15]);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idВнешняя функцияThe name of the function that you want to call
args[0...10]Вещественный или строкаThe different arguments that you want to pass through to the external function
-

-

Возвращается:

-

Variable (the type of value returned will depend on the defined function)

-

-

Пример:

-

my_function = external_define("MyDLL.dll", "MyMin", dll_cdecl, ty_real, 2, ty_real, ty_real);
- var _a = external_call(my_function, x, y);

-

Приведенный выше пример кода вызывает ранее определенную внешнюю функцию и сохраняет возвращаемое значение в локальной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/external_define.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/external_define.htm index 4c96f0d08..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/external_define.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/external_define.htm @@ -1,141 +0,0 @@ - - - - - - external_define - - - - - - - - - - -

external_define

-

Эта функция может использоваться для определения вызова внешней функции к определенной dll (для Windows) или dylib (для Mac). Этот файл может быть как включенным файлом, так и частью расширения.

-

Вы указываете имя (и путь) файла, затем имя функции, которую вы хотите определить. Далее необходимо определить используемое соглашение о вызове (см. список констант ниже), а также тип ожидаемого результата (также константа, как указано ниже).

-

Наконец, вы должны указать количество аргументов, которые может принимать функция (от 0 до 15), и для каждого из аргументов указать его тип. Обратите внимание, что для функций с 4 и более аргументами, все они должны быть типа ty_real.

-

ПРИМЕЧАНИЕ: Это касается только dll или dylib, которые были добавлены как "Включенные файлы" в GameMaker IDE. Это не будет работать с файлами, добавленными в качестве расширений, поскольку для них требуется определение функций в самом пакете расширения.

- - - - - - - - - - - - - - - - - - - - - - -
Внешние константы типов вызовов
ПостояннаяОписание
dll_cdeclЭто вызов по умолчанию в C, C++
dll_stdcallЭто стандартный вызов WinAPI (толькоWindows dll ).
- - - - - - - - - - - - - - - - - - - - - - -
Внешние константы типов данных
ПостояннаяОписание
ty_realАргумент вещественного числа
ty_stringСтроковый аргумент с нулевым окончанием
-

-

Синтаксис:

-

external_define(dll, name, calltype, restype, argnumb, argtype[0], argtype[1], ...argtype[10]);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
dllСтрокаThe name of the DLL file (string)
nameСтрокаThe name of the function (string)
calltypeКонстанта типа внешнего вызова (dll_*)The calling convention used
restypeКонстанта внешнего типа данных (ty_*)The type of the result to expect
argnumbРеальноThe number of arguments (0 - 10)
argtype[0 ... 10]Константа внешнего типа данных (ty_*)The types of the arguments being used
-

-

-

Возвращается:

-

External Function

-

-

Пример:

-

my_funcion = external_define("MyDLL.dll", "MyMin", dll_cdecl, ty_real, 2, ty_real, ty_real);

-

В приведенном выше примере кода будет определена внешняя функция под названием "MyMin" с двумя аргументами.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/external_free.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/external_free.htm index 0a926201b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/external_free.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/external_free.htm @@ -1,63 +0,0 @@ - - - - - - external_free - - - - - - - - - - -

external_free

-

Эта функция освобождает память, связанную с файлом dll или dylib с заданным именем. Это следует делать всякий раз, когда данный файл больше не нужен в игре, обычно (например, в событии Game End).

-

-

Синтаксис:

-

external_free(id);

- - - - - - - - - - - - - -
АргументТипОписание
idВнешняя функцияThe name of the dll или dylib, которые вы хотите освободить
-

-

-

Возвращается:

-

N/A

-

-

Пример:

-

external_free("MyDLL.dll");

-

Приведенный выше код примера освободит память, связанную с заданной dll.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/gml_pragma.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/gml_pragma.htm index 12e2e8c22..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/gml_pragma.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/gml_pragma.htm @@ -1,100 +0,0 @@ - - - - - - gml_pragma - - - - - - - - - - -

gml_pragma

-

Функция gml_pragma влияет на то, как данная цель компилирует ваш код, и должна вызываться с различными командами для дальнейшей оптимизации конечной компиляции вашего проекта. Эти команды эффективно обрабатываются до компиляции игры, поэтому функцию можно поместить в любое место проекта, и она все равно будет обработана до полной компиляции игры. Ниже перечислены доступные команды:

-
    -
  • "forceinline" - Когда функция вызывается с прагмой "forceinline" в функции скрипта, YYC скомпилирует проект с функцией inline, а не со ссылкой. Это дает дополнительное ускорение обработки, но следует быть осторожным при использовании, так как это также увеличит размер конечного исполняемого файла, особенно если встроенный код большой и/или используется в нескольких разных местах, а также значительно увеличит время компиляции. Обратите внимание, что эта прагма действует только при сборке с использованием YYC.
  • -
  • "global", "[gml code]" - Прагма "global" позволяет вам вызвать некоторый код GML, отформатированный как строка, в глобальной области видимости, во время компиляции, перед выполнением первой комнаты игры. Например: -

    gml_pragma("global", "Init()");

    - Это вызовет скриптовую функцию "Init" перед запуском первой комнаты игры. Обратите внимание, что GML, указанный в качестве второго аргумента, должен быть константой времени компиляции, а также обратите внимание, что вы не можете использовать эту прагму для создания экземпляров или выполнения любых операций, требующих функционирования комнаты (или чего-либо в комнате). -
  • -
  • "PNGCrush" - Прагма "PNGCrush" будет использовать программу PNGCrush для каждой созданной текстуры. Обратите внимание, что это может значительно увеличить время, необходимое для компиляции игры, поэтому не стоит включать ее постоянно, хотя это может значительно уменьшить конечный размер файла. Эта опция применима только к группам текстур, использующим формат PNG (см. Настройки групп).
  • -
  • "Texgroup.Scale", "[TextureGroupName]", "[Scale Divisor]" - "Texgroup.Scale" будет масштабировать заданную группу текстур при компиляции. Здесь необходимо указать два дополнительных аргумента: "[TexGroupName]", который является именем (строка) группы текстур для масштабирования, и "[Scale Divisor]" (также строка), который является делителем, который вы хотите использовать для масштабирования, т.е: -

    gml_pragma("Texgroup.Scale", "level1", "2");

    - Это уполовинит все текстуры в группе текстур "level1". -
  • -
  • "UnityBuild", "[enable/disable]" - Если вы вызовете функцию с этой прагмой и установите аргумент enable/disable в true, то при компиляции она свернет все .cpp файлы в проекте в один файл, который затем будет использоваться для сборки, например: -

    gml_pragma("UnityBuild", "true");

    - Преимущество unity build в том, что сборка происходит быстрее, но недостатком является то, что каждый раз выполняется полная сборка, так что даже если вы измените одну часть кода, он соберет все заново, не используя никаких кэшированных файлов. Эта функция была добавлена специально для экспорта Xbox One с помощью YYC, хотя ее можно вызвать и для других сборок(только YYC). Для получения дополнительной информации о сборках unity смотрите здесь. -
  • -
  • "AllowReentrantStatic" - This pragma reverts static initialisation to the old re-entrant initialisation behaviour of GameMaker versions up to 2024.8. It is a project-wide setting and so cannot be put around code sections. The following code enables this old behaviour:  -

    gml_pragma("AllowReentrantStatic", true);

    -

     You should only use this in existing projects that make use of the old behaviour. GMRT (GameMaker Runtime) will no longer allow it.

    -
  • -
  • "MarkTagAsUsed" - When "Automatically remove unused assets when compiling" is enabled in the Game Options, any unused assets are stripped from the compiled game. This can break games that dynamically load assets at runtime. With this pragma you can mark the Tags that should not be stripped and any assets with the assigned tags will always be present in the compiled game package. -

    gml_pragma("MarkTagAsUsed", "used");
    - gml_pragma("MarkTagAsUsed", "multiple", "tags", "can", "be", "specified");

    -
  • -
  • "LegacySetObjectOrder" - This pragma ensures that the given object references are listed in the specified relative order on export, without moving other objects in the list. It can be used more than once in your project and the results will depend on which pragmas are processed first, so if you have a paradox in the commands then the output will be ill-defined and depend on the asset compiler's order of processing. An error is thrown when an object is mentioned more than once in the list or when an object name is not in the project. Note that this pragma has been added for pragmatic reasons and using it is strongly discouraged. It is unlikely to be supported in future versions of GameMaker. -

    gml_pragma("LegacySetObjectOrder", Object2, Object3, Object1);

    - Using the code above, Object2 will be listed first, followed by Object3 and Object1. -
  • -
  • "MarkUILayerAsUsed" - This pragma marks the UI layer with the given name as used to the asset compiler. This makes sure a UI layer present in a prefab is added to the main project upon export.
    - Note that the object which calls this pragma should itself not be on any UI layer which you mark as used, as this will result in a situation where dragging the prefab into an Instances layer in your room will then give you two instances of the object when the game is run - the one you dragged onto the Instances layer and the original one on your marked UI layer. -

    gml_pragma("MarkUILayerAsUsed", "UI Layer Name");

    -
  • -
-

ПРИМЕЧАНИЕ: Первый аргумент функции gml_pragma должен быть строковой константой времени компиляции, а не переменной.

-

-

Синтаксис:

-

gml_pragma(command, [optional...]);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
commandСтрокаA string with one of the commands listed above.
[optional]СтрокаSome of the available commands require an optional argument or arguments. These are explained above for each command.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

gml_pragma("forceinline");

-

Приведенный выше пример кода заставит функцию скрипта, в которой она используется, быть встроенной при компиляции.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/gml_release_mode.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/gml_release_mode.htm index a0610c21d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/gml_release_mode.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/gml_release_mode.htm @@ -1,66 +0,0 @@ - - - - - - gml_release_mode - - - - - - - - - - -

gml_release_mode

-

Когда ваша игра компилируется, она также включает определенные внутренние функции для проверки ошибок во время работы. Эти внутренние проверки охватывают многие аспекты кода игры, включая диапазоны, параметры и некоторые общие аспекты внутреннего компилятора GML, и во многих случаях именно они порождают окончательные сообщения об ошибках. - что во многих случаях порождает окончательные сообщения об ошибках. Однако эту функцию можно использовать для отключения этих внутренних проверок (т.е. полностью удалить их из скомпилированной игры), что позволит увеличить скорость работы вашего конечного проекта.

-

Обратите внимание, что это означает, что если вы сделаете в коде игры что-то неправильное, скомпилированная игра может просто упасть, или в ней может возникнуть неожиданное поведение. Например, если доступ к DS Grid осуществляется по координатам - в режиме разработчика вы получите сообщение об ошибке окна компилятора, но установленные проверки позволят игре продолжить работу. Однако в режиме релиза этих проверок не будет, поэтому код может - вернуть либо указатель NULL, либо плохой указатель, который, в свою очередь, будет указывать на случайную память. В лучшем случае вы получите неверные данные, а в худшем - перезапишете что-то в памяти: данные, графику или даже сам код. Другой пример - может быть построение примитивов - если вы передаете данные о цвете, положении, текстуре и т.д. в порядке, отличном от того, который вы определили при создании формата вершин, то игра может упасть или выдать неожиданные результаты, когда режим релиза - включен.

-

-

Синтаксис:

-

gml_release_mode(flag);

- - - - - - - - - - - -
АргументТипОписание
flagEither true для установки режима выпуска или false для общего развития.
-

-

Возвращается:

-

-

-

Пример:

-

gml_release_mode(true);

-

Приведенный выше пример кода установит игру на использование режима выпуска при компиляции.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_browser.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_browser.htm index 23d9b8b36..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_browser.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_browser.htm @@ -1,125 +0,0 @@ - - - - - - os_browser - - - - - - - - - - -

os_browser

-

Эта переменная, доступная только для чтения, содержит одну из различных констант (перечисленных ниже), которые нужны GameMaker для того, чтобы сообщить вам, в каком браузере вы в данный момент запускаете игру (если таковой имеется).

-

-

Синтаксис:

-

os_browser

-

-

Возвращается:

-

Browser Type Constant

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип браузера Постоянная
ПостояннаяОписание
browser_not_a_browserИгра не воспроизводится в браузере
browser_unknownНеизвестный браузер
browser_ieInternet Explorer
browser_ie_mobileInternet Explorer на мобильном устройстве
browser_firefoxMozilla Firefox
browser_chromeGoogle Chrome
browser_safariСафари
browser_safari_mobileSafari на мобильном устройстве
browser_operaОпера
browser_tizenБраузер для мобильных устройств Tizen
browser_windows_storeПриложение для Windows
-

-

Пример:

-

if (os_browser == browser_not_a_browser)
- {
-     global.Config = 0;
- }
- else
- {
-     global.Config = 1;
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_check_permission.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_check_permission.htm index dd143c8e8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_check_permission.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_check_permission.htm @@ -1,101 +0,0 @@ - - - - - - os_check_permission - - - - - - - - - - -

os_check_permission

-

С помощью этой функции вы можете проверить, было ли определенное разрешение предоставлено игре пользователем. Вы указываете проверяемое разрешение в виде строки, используя формат "android.permission.<permission>", поэтому для проверки разрешения RECORD_AUDIO (например) вы должны вызвать функцию

-

os_check_permission("android.permission.RECORD_AUDIO");

-

Функция вернет одну из трех констант - показанных ниже - чтобы сообщить игре о состоянии разрешения. Более подробную информацию о разрешениях приложений можно найти в документации Android.

-

ВАЖНО! Эта функция предназначена только для цели Android.

-

-

Синтаксис:

-

os_check_permission(permission)

- - - - - - - - - - - - - -
АргументТипОписание
permissionСтрокаThe permission to check (a string)
-

-

Возвращается:

-

Permission State Constant

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Состояние разрешения Константа
ПостояннаяОписание
os_permission_grantedЭто означает, что разрешение было выдано
os_permission_deniedЭто означает, что разрешение не было выдано
os_permission_denied_dont_requestЭто указывает на то, что разрешение либо заблокировано настройками телефона, либо пользователь ранее отклонил запрос и выбрал "Не спрашивать снова".
-

-

Пример:

-

if (os_type == os_android)
- {
-     if (os_check_permission("android.permission.INTERNET") == os_permission_denied)
-     {
-         os_request_permission("android.permission.INTERNET");
-     }
- }

-

Приведенный выше код проверяет тип ОС и, если это Android, выполняет проверку разрешений и, если разрешение "INTERNET" еще не было предоставлено, запрашивает его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_device.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_device.htm index 90867f14f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_device.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_device.htm @@ -1,126 +0,0 @@ - - - - - - os_device - - - - - - - - - - -

os_device

-

Эта переменная, доступная только для чтения, содержит одно из различных константных значений, перечисленных ниже, чтобы сообщить вам, на каком устройстве в данный момент запущена игра. Обратите внимание, что эта переменная устарела в пользу функции os_get_info() которая возвращает более точную информацию об устройстве, на котором запущена игра.

-

-

Синтаксис:

-

os_device

-

-

Возвращается:

-

Device Type Constant

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип устройства Постоянная
ПостояннаяОписание
device_ios_ipadiPad
device_ios_ipad_retinaНовый iPad с дисплеем Retina размером 2048 x 1536
device_ios_iphone6iPhone6 с размером дисплея 1334 x 750
device_ios_iphone6plusБолее крупный iPhone 6 с дисплеем 1920 x 1080
device_ios_iphone5iPhone5 с размером дисплея 640 x 1136)
device_ios_iphoneСтарый iPhone/iPod Touch (экран 480 x 320) или телефон Android
device_ios_iphone_retinaНовые iPhone/iPod Touch с дисплеем Retina с разрешением 960 x 640
device_emulatorУстройство на самом деле является эмулятором (Windows Phone или Android).
device_tabletAndroid-планшет
device_ios_unknownНеизвестно или нет iOS
-

-

Пример:

-

if (os_browser = browser_not_a_browser)
- {
-     switch (os_device)
-     {
-         case device_ios_ipad: global.Config = 2; break;
-         case device_ios_iphone: global.Config = 3; break;
-         case device_ios_iphone_retina: global.Config = 4; break;
-         case device_ios_unknown: global.Config = 5; break;
-     }
- }
- else
- {
-     global.Config = 1;
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_get_config.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_get_config.htm index 37b77fcd7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_get_config.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_get_config.htm @@ -1,53 +0,0 @@ - - - - - - os_get_config - - - - - - - - - - - -

os_get_config

-

Эта функция возвращает имя (в виде строки) текущей выбранной конфигурации для вашей игры. Более подробную информацию о конфигурациях см. в разделе Конфигурации.

-

-

Синтаксис:

-

os_get_config()

-

-

Возвращается:

-

-

-

Пример:

-

if os_get_config() = "Free_Version"
- {
-     global.Ads = true;
- }
- else global.Ads = false;

-

Приведенный выше код проверит, какая конфигурация используется, и если это конфигурация под названием "Free_Version", то реклама будет включена в игре.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_get_info.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_get_info.htm index 47559604c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_get_info.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_get_info.htm @@ -1,201 +0,0 @@ - - - - - - os_get_info - - - - - - - - - - - -

os_get_info

-

Эта функция возвращает DS Map с подробной информацией об ОС, на которой запущена игра. Точная возвращаемая информация будет зависеть от ОС и устройства, поэтому рекомендуется протестировать эту функцию на всех платформах, на которые вы хотите ориентироваться, и вывести возвращаемые значения с помощью функции типа show_debug_message(). Обратите внимание, что карта DS не очищается автоматически из памяти, и вы должны использовать эту функцию, когда она больше не нужна. ds_map_destroy() функцию, когда она больше не нужна.

-

Ниже приведены некоторые подробности о дополнительных данных, которые будут доступны для карты DS для следующих платформ. Следует отметить, что на всех платформах, кроме HTML5, карта будет иметь ключ "is64bit", который будет либо true, либо false в зависимости от того, работает ли бегун в 64-битном режиме или нет.

-

Windows / UWP

-
-

На Windows Desktop и Windows UWP, вы получите некоторые дополнительные данные от DX11 со следующими клавишами, доступными в карте DS (полезно для расширений):

-
    -
  • udid: Идентификатор, который является уникальным для машины
  • -
  • video_d3d11_device: указатель на устройство DX11
  • -
  • video_d3d11_context: указатель на контекст DX11
  • -
  • video_d3d11_spawnchain: указатель на цепочку подкачки DX11
  • -
  • video_adapter_vendorid: строка с идентификатором поставщика адаптера
  • -
  • video_adapter_deviceid: строка с идентификатором устройства адаптера
  • -
  • video_adapter_subsysid: строка с идентификатором подсистемы адаптера
  • -
  • video_adapter_revision: строка с номером ревизии адаптера
  • -
  • video_adapter_description: строка с описанием видеоадаптера
  • -
  • video_adapter_dedicatedvideomemory: строка с размером видеопамяти
  • -
  • video_adapter_dedicatedsystemmemory: строка с размером системной памяти (используется адаптером DX11)
  • -
  • video_adapter_sharedsystemmemory: строка с размером общей системной памяти
  • -
-

-
-

macOS

-
-

Функция возвращает некоторую ограниченную информацию о OpenGL на macOS:

-
    -
  • udid: Идентификатор, который является уникальным для машины
  • -
  • gl_vendor_string: GL_VENDOR из OpenGL, пример - "Intel Inc.".
  • -
  • gl_version_string: GL_VERSION из OpenGL, пример - "2.1 INTEL-16.2.16".
  • -
  • gl_renderer_string: GL_RENDERER из OpenGL, пример - "Intel(R) Iris(TM) Graphics 6100".
  • -
-

-
-

Ubuntu

-
-

Здесь содержится та же информация, что и на сайте macOS.

-

-
-

Android

-
-

На платформе Android вы получите некоторые дополнительные данные из различных API со следующими ключами, доступными в карте DS:

-
    -
  • android_tv: возвращается true, если устройство обнаружено как Android TV устройство, или false в противном случае.
  • -
  • GL_VERSION: версия OpenGL, о которой сообщает драйвер.
  • -
  • GL_VENDOR: поставщик OpenGL, о котором сообщает драйвер.
  • -
  • GL_RENDERER: рендерер OpenGL, о котором сообщает драйвер
  • -
  • GL_EXTENSIONS: расширения OpenGL, которые доступны по данным драйвера
  • -
  • GL_SHADING_LANGUAGE_VERSION: версия GLSL, поддерживаемая данным драйвером OpenGL
  • -
  • GL_MAX_TEXTURE_SIZE: максимальный размер текстуры, поддерживаемый данным драйвером OpenGL
  • -
  • SDK_INT: значение android.os.Build.VERSION.SDK_INT (см. примечание ниже)
  • -
  • RELEASE: значение android.os.Build.VERSION.RELEASE
  • -
  • MODEL: значение android.os.Build.MODEL
  • -
  • DEVICE: значение android.os.Build.DEVICE
  • -
  • MANUFACTURER: значение android.os.Build.MANUFACTURER
  • -
  • CPU_ABI: значение android.os.Build.CPU_ABI
  • -
  • CPU_ABI2: значение android.os.Build.CPU_ABI2
  • -
  • BOOTLOADER: значение android.os.Build.BOOTLOADER
  • -
  • BOARD: значение android.os.Build.BOARD
  • -
  • VERSION: значение os.version из метода Android System.getProperty.
  • -
  • REGION: значения user.region из метода Android System.getProperty
  • -
  • VERSION_NAME: значение versionName этого пакета - см. здесь для более подробной информации.
  • -
  • PHYSICAL_KEYBOARD: если мы считаем, что физическая клавиатура доступна, то строка "TRUE" в противном случае "FALSE"
  • -
-

ПРИМЕЧАНИЕ: Для получения информации о любых переменных android.os.Build см. документацию Android Developer.

-

-
-

iOS и tvOS

-
-

Вот ключи, возвращаемые на сайтах iOS и tvOS (подробная информация приведена в документации для разработчиков Apple):

-
    -
  • name: строка, как сообщает [[UIDevice currentDevice] name]
  • -
  • systemName: строка, как сообщает [[UIDevice currentDevice] systemName]
  • -
  • systemVersion: строка, как сообщает [[UIDevice currentDevice] systemVersion]
  • -
  • model: строка, как сообщает [[UIDevice currentDevice] model]
  • -
  • localisedModel: строка, как сообщает [[UIDevice currentDevice] localizedModel]
  • -
  • uiIdiom: строка, как сообщает [[UIDevice currentDevice] userInterfaceIdiom]
  • -
  • platform: hw.machine строка, собранная из sysctlbyname
  • -
  • hwModel: hw.model строка, собранная из sysctlbyname
  • -
  • freeDiskSpace: Свободное дисковое пространство
  • -
  • totalDiskSpace: Общее дисковое пространство
  • -
  • cpuFrequency: Частота процессора
  • -
  • busFrequency: Частота шины
  • -
  • cpuCount: Количество процессоров
  • -
  • totalMemory: Общая память устройства
  • -
  • userMemory: Память пользователя
  • -
  • maxSocketBufferSize: Максимальный размер буфера сокета
  • -
  • Дополнительные ключи, содержащие информацию о графике OpenGL
    -
  • -
-
-

Opera GX

-
-

Следующие дополнительные ключи будут включены в карту DS для Opera GX:

-
    -
  • mobile: Это значение будет равно 1.0, если игра работает в мобильном браузере, и 0.0, если нет.
  • -
-
-

HTML5

-
-

Возвращает -1.

-
-

Nintendo Switch

-
-

Возвращает -1.

-
-

PlayStation 4

-
-

Информацию о функциях, упомянутых здесь, см. в документации PS4.

-

Функция возвращает следующие клавиши на консоли PlayStation 4:

-
    -
  • display_safe_area_ratio: Значение с плавающей точкой, возвращаемое sceSystemServiceGetDisplaySafeAreaInfo().
  • -
  • is_neo_mode: Это будет 1, если игра запущена на Neo (PS4 Pro), и 0, если она запущена на обычной PS4.
  • -
  • enter_button_assign: Целочисленное значение, возвращаемое sceSystemServiceParamGetInt(SCE_SYSTEM_SERVICE_PARAM_ID_ENTER_BUTTON_ASSIGN, &enterassign); значение 0 означает, что кнопка Circle используется как "назначение", а 1 - что вместо нее используется кнопка X.
  • -
-

-
-

PlayStation 5

-
-

Функция возвращает следующие клавиши на консоли PlayStation 5:

-
    -
  • display_safe_area_ratio: То же, что и PS4 (см. выше).
  • -
  • display_resolution: "HD", "4K" или "неизвестно".
  • -
  • display_dynamic_range: "HDR", "SDR" или "неизвестно".
  • -
  • display_refresh_rate: "120 Гц", "60 Гц" или "Неизвестно".
  • -
-

-
-

Xbox One

-
-

Информация, полученная на Xbox One, в основном такая же, как и на Windows, однако ключи video_adapter_* и udid являются ключами 0 (за исключением video_adapter_description, который является пустой строкой ""). Ключ video_d3d11_swapchain также отсутствует.

-

Эта платформа также возвращает следующую информацию:

-
    -
  • is_xbox_one_x: Это будет 1, если игра запущена на Xbox One X, и 0, если она запущена на базовом Xbox One.
  • -
-

-
-

Xbox Series X/S

-
-

Информация, получаемая на консолях Xbox Series X/S, в основном такая же, как и на Xbox One, однако клавиши video_d3d11_* были заменены на video_d3d12_*.

-

Вот некоторые ключи, которые возвращает эта платформа в дополнение к тем, что перечислены в разделе Xbox One:

-
    -
  • video_d3d12_cmdqueue: Указывает на очередь команд DX12
  • -
  • video_d3d12_cmdlist: Указывает на список команд DX12
  • -
  • video_d3d12_currentrt: Указывает на текущую цель рендеринга DX12
  • -
-
-

-

-

Синтаксис:

-

os_get_info()

-

-

Возвращается:

-

DS Map ID

-

-

Пример:

-

if (os_type == os_android)
- {
-     var _info = os_get_info();
-     
-     if (_info[? "android_tv"])
-     {
-         global.android_tv = true;
-     }
- }

-

Приведенный выше код проверяет, является ли текущая ОС Android, получает информацию об ОС и считывает возвращаемую карту, чтобы проверить, запущена ли игра на телевизоре Android; в этом случае он устанавливает пользовательскую переменную global.android_tv в true.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_get_language.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_get_language.htm index 29f316ded..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_get_language.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_get_language.htm @@ -1,126 +0,0 @@ - - - - - - os_get_language - - - - - - - - - - - -

os_get_language

-

Эта функция возвращает строку с двухбуквенным кодом языка для ОС, на которой запущена игра, как установлено стандартом ISO639. Если эта информация недоступна, будет возвращена просто пустая строка "", или "en" для "английского" языка. Обратите внимание, что некоторые языки также имеют соответствующий региональный код, поэтому для различения разных регионов одной страны используйте функцию os_get_region().

-

В следующей таблице приведены примеры некоторых основных двухбуквенных кодов языков, определенных стандартом ISO 639:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ЯзыкКод
Арабский языкar
Китайскийzh
Датскийда
Английский языкen
Французскийfr
Немецкийде
Грецияel
Итальянскийэто
Японскийja
Норвежскийнет
Польскийpl
Португальский языкpt
Русскийru
Испанскийes
Шведскийsv
-

-

ПРИМЕЧАНИЕ: Возвращается не код страны местоположения, а код языка ОС.

-

-

Синтаксис:

-

os_get_language()

-

-

Возвращается:

-

-

-

Пример:

-

switch (os_get_language())
- {
-     case "es": ini_open("spanish.ini"); break;
-     case "fr": ini_open("french.ini"); break;
-     case "it": ini_open("italian.ini"); break;
-     default: ini_open("english.ini"); break;
- }

-

Приведенный выше код проверяет язык ОС и открывает другой файл *.ini в зависимости от возвращаемого значения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_get_region.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_get_region.htm index ff193dbaa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_get_region.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_get_region.htm @@ -1,76 +0,0 @@ - - - - - - os_get_region - - - - - - - - - - - -

os_get_region

-

Эта функция возвращает строку с двух- или трехбуквенным региональным кодом для ОС, на которой запущена игра, как установлено стандартом ISO3166-1. Если информация недоступна, то будет возвращена просто пустая строка "".

-

ПРИМЕЧАНИЕ: Возвращается не региональный код местоположения, а код регионального языка ОС.

-

-

Синтаксис:

-

os_get_region()

-

-

Возвращается:

-

-

-

Пример:

-

switch (os_get_language())
- {
-     case "zh":
-         var _region = os_get_region();
-         if (_region == "HK" || _region == "MO" || _region == "TW")
-         {
-             ini_open("chinese_traditional.ini");
-         }
-         else
-         {
-             ini_open("chinese_simplified.ini");
-         }
-     break;
-
-     case "fr":
-         ini_open("french.ini");
-     break;
-
-     case "it":
-         ini_open("italian.ini");
-     break;
-
-     default:
-         ini_open("english.ini");
-     break;
- } -

-

Приведенный выше код проверяет язык ОС и если он китайский, то проверяет регион ОС, открывая другой файл *.ini в зависимости от возвращенных значений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_is_network_connected.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_is_network_connected.htm index ab76a7915..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_is_network_connected.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_is_network_connected.htm @@ -1,68 +0,0 @@ - - - - - - os_is_network_connected - - - - - - - - - - - -

os_is_network_connected

-

С помощью этой функции вы можете проверить, есть ли на вашем устройстве подключение к Интернету, и она вернет true, если есть, или false, если нет, и, в зависимости от ОС, может попытаться установить соединение, прежде чем вернуть значение.

-

Функция имеет дополнительный аргумент для включения/выключения попытки установить соединение при вызове, и эта опция в настоящее время используется только для цели Nintendo Switch. При установке значения true функция будет пытаться установить соединение, а при установке значения false она будет ограничиваться проверкой соединения. Обратите внимание, что попытка установить соединение может привести к зависанию ОС Switch на несколько секунд.

-

ПРИМЕЧАНИЕ Эта функция проверяет внутренний API устройства, который управляет соединениями, и поэтому может вернуть true, если есть соединение bluetooth, Wi-Fi или даже обычное сетевое соединение, позволяющее доступ в интернет.

-

-

Синтаксис:

-

os_is_network_connected([attempt_connection]);

- - - - - - - - - - - - - -
АргументТипОписание
attempt_connectionБулевоOPTIONAL Только для цели Nintendo Switch. Установите значение true для попытки подключения на уровне ОС при вызове.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if os_is_network_connected()
- {
-     global.connected = true;
- }

-

Приведенный выше код проверяет, есть ли у устройства подключение к Интернету, и если да, то устанавливает глобальную переменную.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_is_paused.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_is_paused.htm index 9ec1073ff..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_is_paused.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_is_paused.htm @@ -1,58 +0,0 @@ - - - - - - os_is_paused - - - - - - - - - - - -

os_is_paused

-

При разработке для мобильных устройств необходимо иметь способ проверить, сосредоточено ли устройство на вашей игре или нет, особенно если ваша игра находится на устройстве iOS, Android или Windows Phone, то она может быть прервана телефонными звонками и другими приложениями. Вы можете использовать эту функцию, чтобы проверить, поставлено ли устройство на паузу или нет.

-

Стоит отметить, что эта функция выполнит любой код, содержащийся в блоке кода, на устройствах, но сразу после этого GameMaker будет приостановлен, поскольку устройство кэширует игру как фоновый процесс. Поэтому, если у вас есть что-то похожее на приведенный ниже пример кода, создаваемый экземпляр не будет появляться или выполнять какие-либо события до тех пор, пока игра не будет перезапущена из кэшированного состояния. Это означает, что вы можете предпочесть, чтобы функция os_is_paused вызывала сигнал тревоги, а затем в событии тревоги (которое будет установлено, когда устройство будет поставлено на паузу, но не будет запущено, пока оно не будет снято с паузы) создавала меню паузы, перезапускала музыку и т.д. ...

-

Если вы используете эту функцию на платформах Windows, Ubuntu (Linux), MacOS или HTML5, то функция только на один шаг переключается на true, когда игра теряет фокус, а затем снова возвращается на false, пока игра не вернется в фокус (и снова его потеряет). Это происходит потому, что эти платформы не кэшируют приложения и игры, и поэтому они будут продолжать работать в фоновом режиме.

-

ПРИМЕЧАНИЕ: На мобильных устройствах звуки и музыка будут остановлены, когда os будет приостановлена. Они не возобновятся, пока вы специально не запустите их с помощью соответствующей функции.

-

-

Синтаксис:

-

os_is_paused()

-

-

Возвращается:

-

-

-

Пример:

-

if os_is_paused()
- {
-     if (!instance_exists(obj_pause_menu))
-     {
-         instance_create_layer(0, 0, "Controllers", obj_pause_menu);
-     }
- }

-

Приведенный выше код проверяет, была ли игра поставлена на паузу, и если да, то создает экземпляр объекта "obj_PauseMenu", если такового еще не существует.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_lock_orientation.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_lock_orientation.htm index 1f4944267..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_lock_orientation.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_lock_orientation.htm @@ -1,63 +0,0 @@ - - - - - - os_lock_orientation - - - - - - - - - - -

os_lock_orientation

-

С помощью этой функции вы можете "заблокировать" ваше устройство в текущей ориентации до тех пор, пока вы не "освободите" его, чтобы снова разрешить все включенные в Game Options ориентации для данной целевой платформы. Обратите внимание, что перед блокировкой вы, скорее всего, захотите подтвердить желаемую ориентацию.

-

-

Синтаксис:

-

os_lock_orientation(flag)

- - - - - - - - - - - -
АргументТипОписание
flagSet to true или false, чтобы включить или выключить блокировку ориентации.
-

-

Возвращается:

-

-

-

Пример:

-

if (os_type == os_android) || (os_type == os_ios)
- {
-     os_lock_orientation(true);
- }

-

Приведенный выше код проверяет тип ОС, и если это либо Android, либо iOS, то блокировка ориентации отмечается как true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_powersave_enable.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_powersave_enable.htm index 6f0cfd2e2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_powersave_enable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_powersave_enable.htm @@ -1,65 +0,0 @@ - - - - - - os_powersave_enable - - - - - - - - - - - -

os_powersave_enable

-

С помощью этой функции можно включить или выключить функции энергосбережения устройства. Это важно, так как некоторые игры (например, использующие функции наклона) могут не генерировать события, которые ОС может интерпретировать как пользовательский ввод и таким образом выключить экран или выйти из игры. Установив эту функцию на false, вы можете отключить функции энергосбережения и обеспечить постоянную работу экрана (и игры).

-

ПРИМЕЧАНИЕ: Это ограничено целями iOS и Android.

-

-

Синтаксис:

-

os_powersave_enable(flag)

- - - - - - - - - - - -
АргументТипОписание
flagSet to true или false, чтобы включить или отключить функции энергосбережения.
-

-

Возвращается:

-

-

-

Пример:

-

if (os_type == os_android) || (os_type == os_ios)
- {
-     os_powersave_enable(false);
- }

-

Приведенный выше код проверяет тип ОС, и если это либо Android, либо iOS, то функции энергосбережения деактивируются.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_request_permission.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_request_permission.htm index 3cfcbbc16..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_request_permission.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_request_permission.htm @@ -1,101 +0,0 @@ - - - - - - os_request_permission - - - - - - - - - - -

os_request_permission

-

С помощью этой функции вы можете запросить определенное разрешение. Вы указываете запрашиваемое разрешение в виде строки, используя формат "android.permission.<permission>", поэтому, чтобы запросить разрешение RECORD_AUDIO (например), вы должны вызвать функцию

-

os_request_permission("android.permission.RECORD_AUDIO");

-

В ответ функция запустит системное асинхронное событие, в котором встроенная async_load DS map будет содержать следующие пары ключ/значение:

-
    -
  • "type": Это тип события, которое было вызвано, а значением будет строка "permission_request_result".
  • -
  • "<разрешение>": Это будет разрешение, запрашиваемое функцией, в виде строки, которая будет содержать одну из следующих констант:
  • -
- - - - - - - - - - - - - - - -
ПостояннаяОписание
os_permission_grantedЭто означает, что разрешение было выдано
os_permission_deniedЭто означает, что разрешение не было выдано
-

-

Стоит отметить, что следующие разрешения поддерживаются GameMaker, но считаются Google "опасными" и поэтому должны быть запрошены в явном виде (обратите внимание, что некоторые разрешения могут быть запрошены с помощью Опций игры Android без необходимости использования этой функции):

-
    -
  • android.permission.WRITE_EXTERNAL_STORAGE
  • -
  • android.permission.READ_PHONE_STATE
  • -
  • android.permission.RECORD_AUDIO
  • -
-

Дополнительную информацию о разрешениях приложений можно найти в документации по Android.

-

ВАЖНО! Эта функция предназначена только для цели Android.

-

-

Синтаксис:

-

os_request_permission(permission)

- - - - - - - - - - - - - -
АргументТипОписание
permissionСтрокаThe permission to request (a string)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (os_type == os_android)
- {
-     if (os_check_permission("android.permission.INTERNET") == os_permission_denied)
-     {
-         os_request_permission("android.permission.INTERNET");
-     }
- }

-

Приведенный выше код проверяет тип ОС и, если это Android, выполняет проверку разрешений и, если разрешение "INTERNET" еще не было предоставлено, запрашивает его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_type.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_type.htm index 769f9f78b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_type.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_type.htm @@ -1,139 +0,0 @@ - - - - - - os_type - - - - - - - - - - -

os_type

-

Эта переменная, доступная только для чтения, содержит одну из различных констант GameMaker, позволяющих определить, для какой операционной системы была создана игра. Обратите внимание, что это не обязательно совпадает с ОС устройства, на котором она запущена, поскольку, например, ваша игра может работать на ОС Amazon Fire, но быть создана для платформы Android (в этом случае os_type будет os_android).

-

Могут быть возвращены следующие константы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип ОС Постоянная
ПостояннаяОписание
os_windowsОС Windows
os_uwpПлатформа Windows 10 Universal Windows
os_operagxOpera GX
os_linuxLinux
os_macosxmacOS X
os_iosiOS (iPhone, iPad, iPod Touch)
os_tvosApple tvOS
os_androidAndroid
os_ps4Sony PlayStation 4
os_ps5Sony PlayStation 5
os_xboxoneMicrosoft Xbox One
os_xboxseriesxsMicrosoft Xbox Series X/S
os_switchNintendo Switch
os_unknownНеизвестная ОС
-

-

Синтаксис:

-

os_type

-

-

Возвращается:

-

OS Type Constant

-

-

Пример:

-

switch (os_type)
- {
-     case os_windows: global.Config = 0; break;
-     case os_android: global.Config = 1; break;
-     case os_linux: global.Config = 2; break;
-     case os_macosx: global.Config = 3; break;
-     case os_ios: global.Config = 4; break;
-     case os_winphone: global.Config = 5; break;
- }

-

Приведенный выше код проверяет ОС, на которой запущена игра, и соответствующим образом устанавливает глобальную переменную.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_version.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_version.htm index c87578a33..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_version.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/os_version.htm @@ -1,120 +0,0 @@ - - - - - - os_version - - - - - - - - - - -

os_version

-

Эта переменная сообщает вам номер версии ОС, на которой запущена ваша игра. Например, если вы запускаете ее на Windows 10, os_version будет равен 655360.

-

В следующей таблице приведены значения, которые возвращаются для самых последних версий различных ОС:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Операционная системаНазвание версии
- (Номер версии)
Возвращаемое значение (примеры)
AndroidNougat (7.0 - 7.11)
- Oreo (8.0 - 8.11)
- Pie (9.0)
- Android X (10.0)
24 - 25
- 26 - 27
- 28
- 29
iOS
- Возвращаемое значение рассчитывается как:
- (major_version * 16777216) + (minor_version * 4096) + build_number
iOS 10 (10.3)
- iOS 11 (11.4)
- iOS 12 (12.0)
- iOS 13 (13.0) iPhone
- iOS 13 (13.5) iPhone/Ipad
167784448
- 184565760
- 201326592
- 218103808
-
- 218124288 -
macOS X
- Возвращаемое значение вычисляется как:
- (major_version * 16777216) + (minor_version * 4096) + build_number
El Capitan (10.11)
- Sierra (10.12)
- High Sierra (10.13)
- Мохаве (10.14)
- Каталина (10.15)
167817216
- 167821312
- 167825408
- 167829504
- 167833600
Windows
- (возвращаемое значение рассчитывается как:
- majorVersion * 65536 + minorVersion)
Windows 7 (6.1)
- Windows 8 (6.2)
- Windows 8.1 (6.3)
- Windows 10 (10.0)
393217
- 393218
- 393219
- 655360
-

-

ПРИМЕЧАНИЕ: Если вам необходима дополнительная информация об ОС Windows, вы можете воспользоваться функцией environment_get_variable().

-

-

Синтаксис:

-

os_version

-

-

Возвращается:

-

-

-

Пример:

-

if (os_type == os_android) && (os_version > 10)
- {
-     global.GFX = 1;
- }

-

Приведенный выше код проверяет тип операционной системы и номер версии, если они оба верны, то глобальная переменная устанавливается в 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/parameter_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/parameter_count.htm index 45a888f5a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/parameter_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/parameter_count.htm @@ -1,50 +0,0 @@ - - - - - - parameter_count - - - - - - - - - - - -

parameter_count

-

Параметры командной строки - это дополнительные команды, которые вы можете добавить в exe, чтобы изменить способ выполнения программы. Количество параметров для текущей игры можно узнать с помощью этой функции, где первый параметр имеет индекс 1, а последний имеет - индекс, возвращаемый функцией (значение 0 является особенным, так как это имя файла исполняемого файла игры, включая путь). Следует отметить, что эта функция будет работать на платформе HTML5, получая параметры url.

-

-

Синтаксис:

-

parameter_count();

-

-

Возвращается:

-

-

-

Пример:

-

p_num = parameter_count();

-

Приведенный выше код будет хранить количество параметров командной строки, которые были использованы для игры, в переменной "p_num".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/parameter_string.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/parameter_string.htm index 0ddc89953..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/parameter_string.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/parameter_string.htm @@ -1,57 +0,0 @@ - - - - - - parameter_string - - - - - - - - - - - -

parameter_string

-

Параметры командной строки - это дополнительные команды, которые вы можете добавить в exe, чтобы изменить способ выполнения программы. С помощью этой функции вы можете получить выбранный параметр командной строки в виде строки. Количество параметров для текущей игры можно узнать с помощью функции parameter_count()где первый параметр имеет индекс 1, а последний - индекс, возвращаемый функцией (значение 0 является особенным, так как это имя файла исполняемого файла игры, включая путь). Следует отметить, что эта функция будет работать на платформе HTML5, получая параметры url.

-

-

Синтаксис:

-

parameter_string(n);

-

-

Возвращается:

-

-

-

Пример:

-

var p_num;
- p_num = parameter_count();
- if (p_num > 0)
- {
-     for (var i = 0; i < _p_num; i++)
-     {
-         p_string[i] = parameter_string(i + 1);
-     }
- }

-

Приведенный выше код получит количество параметров командной строки, и если их 1 или более, то пройдется по ним и сохранит их в виде строк в массиве.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/scheduler_resolution_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/scheduler_resolution_get.htm index 687e14c0e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/scheduler_resolution_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/scheduler_resolution_get.htm @@ -1,50 +0,0 @@ - - - - - - scheduler_resolution_get - - - - - - - - - - - -

scheduler_resolution_get

-

Эта функция используется для получения разрешения планировщика потоков Windows в миллисекундах. Если разрешение планировщика установлено в значение по умолчанию (как установлено Windows), функция вернет -1.

-

Информацию о планировщике потоков см. на странице scheduler_resolution_set().

-

ПРИМЕЧАНИЕ: Эта функция предназначена только для Windows .

-

-

Синтаксис:

-

scheduler_resolution_get();

-

-

Возвращается:

-

(or -1 for default)

-

-

Пример:

-

scheduler_resolution = scheduler_resolution_get();

-

Этот пример извлекает разрешение планировщика потоков Windows и сохраняет его в переменной "scheduler_resolution".

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/scheduler_resolution_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/scheduler_resolution_set.htm index efbde523c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/scheduler_resolution_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/scheduler_resolution_set.htm @@ -1,63 +0,0 @@ - - - - - - scheduler_resolution_set - - - - - - - - - - -

scheduler_resolution_set

-

Эта функция используется для изменения разрешения планировщика потоков Windows. Значение разрешения, указанное в аргументе, должно быть в миллисекундах.

-

По умолчанию, GameMaker используется разрешение 1 миллисекунда, что является наименьшим допустимым разрешением и обеспечивает наилучшую производительность. Изменение разрешения на более высокое значение может отрицательно сказаться на производительности, - но это также может снизить энергопотребление.

-

Вы можете указать -1 в качестве аргумента, чтобы вернуть разрешение к значению по умолчанию (установленному Windows). Обратите внимание, что изменение разрешения планировщика повлияет на все процессы, запущенные одновременно с вашей игрой.

-

ПРИМЕЧАНИЕ: Эта функция предназначена только для Windows .

-

-

Синтаксис:

-

scheduler_resolution_set(milliseconds);

- - - - - - - - - - - -
АргументТипОписание
millisecondsThe new resolution value (in milliseconds) or -1 for default
-

-

Возвращается:

-

-

-

Пример:

-

scheduler_resolution_set(2);

-

В этом примере разрешение планировщика потоков Windows установлено на 2 миллисекунды.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/Fixtures.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/Fixtures.htm index 3bea33aa4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/Fixtures.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/Fixtures.htm @@ -1,89 +0,0 @@ - - - - - - Приспособления - - - - - - - - - - -

Приспособления

-

Прежде чем экземпляр в GameMaker сможет обладать физическими свойствами, ему должно быть назначено приспособление. Приспособление привязывает форму к экземпляру, и это добавляет свойства материала, такие как плотность, трение и реституция. Приспособления могут быть коробками, кругами, многоугольниками или любыми другими простыми формами по вашему желанию, поскольку GameMaker предоставляет функции, позволяющие вам определить вашу собственную форму по пунктам, а затем, когда у вас есть ваша форма, вы можете продолжить и определить ее физические свойства. Эти свойства определяют, как экземпляр с назначенным ему приспособлением будет реагировать на другие экземпляры в физическом мире, и перечислены ниже:

-
    -
  • Плотность: Плотность материала определяется как его масса на единицу объема. По сути, это измерение того, насколько плотно материя прижата друг к другу. Если вы хотите, чтобы ваше приспособление было статичным (т.е. неподвижным), то плотность должна быть установлена на 0, что, по сути, делает его бесконечно плотным. Кинематические объекты, которые движутся с постоянной скоростью и не подвержены физическому воздействию столкновений, также определяются с помощью плотности 0.
  • -
  • Трение: Трение - это сила, оказывающая сопротивление относительному движению твердых поверхностей, слоев жидкости и элементов материала, скользящих друг по другу.
  • -
  • Линейное демпфирование: Это обобщенная сила, которая заставляет движущийся объект терять импульс. В "реальном мире" вещи, как правило, не происходят вечно. Например, бумажный самолетик будет летать некоторое время, но в конце концов он упадет из-за трения воздуха, которое действует на него, заставляя его замедляться. В мире физики, который мы создаем, такие вещи трудно смоделировать, поэтому каждому приспособлению присваивается собственное линейное затухание, чтобы смоделировать этот тип "обобщенного трения".
  • -
  • Угловое демпфирование: Как и выше, это обобщенная сила, которая прикладывается к объекту, чтобы остановить его вечное вращение.
  • -
  • Реституция: В физике реституция определяется как "возвращение объекта или системы в исходное состояние после упругой деформации", но поскольку приспособления в GameMaker являются действительно жесткими телами и не могут быть деформированы, считайте, что это в основном то, насколько "упругим" является приспособление.
  • -
-

Итак, как вы видите, с помощью всего нескольких простых функций GameMaker может помочь вам создать сложные системы и взаимодействия, которые придадут вашим играм беспрецедентное чувство реализма.

-

ПРИМЕЧАНИЕ Можно определить одно приспособление и привязать его к нескольким экземплярам (вспомните бильярдный стол, где все шары имеют одинаковые физические свойства, но каждый из них является отдельным объектом). Также можно привязать несколько приспособлений к одному экземпляру и объединить физические свойства (например, используя два треугольных многоугольных приспособления, создать звезду).

-

Следующие функции предназначены для создания, привязки, установки коллизий и последующего удаления приспособлений:

- -

-

Приспособлению необходимо придать форму, иначе оно не будет обнаружено физическим миром, и эта форма может быть определена с помощью следующих функций:

- -

-

Для того чтобы ваш экземпляр с поддержкой физики правильно реагировал на окружающий мир, используемые вами приспособления должны иметь определенные свойства, которые придают приспособлению отскок, трение, массу и т.д.. Следующие функции используются для установки этих свойств приспособления:

- -

-

Вы также можете установить определенные свойства приспособления после его привязки к экземпляру. При привязке "базового" приспособления вы можете выбрать сохранение уникального индекса для связанных физических свойств в переменной. Затем ее можно использовать в следующих функциях для изменения определенных свойств или для получения текущих значений для них:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_add_point.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_add_point.htm index ecdaa4b92..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_add_point.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_add_point.htm @@ -1,76 +0,0 @@ - - - - - - physics_fixture_add_point - - - - - - - - - - -

physics_fixture_add_point

-

Эта функция определяет точки многоугольника, который ранее был установлен на приспособление с помощью функции physics_fixture_set_polygon_shape() или она может быть использована для добавления точек к цепочке граничных - приспособлений с помощью функции physics_fixture_set_chain_shape(). Для многоугольной формы точки задаются относительно начала координат приспособления, при этом центром является положение 0,0 по оси x/y, - а последующие координаты рассчитываются как обычно в GameMaker: вниз/вправо - +x,+y, вверх/влево - -x,-y. Вот иллюстрация, которая поможет вам представить этот процесс:

-

Как вы можете видеть, любой простой выпуклый многоугольник может быть смоделирован таким образом, но - вогнутые многоугольники на данный момент не поддерживаются. Наконец, чтобы замкнуть полигон, необходимо привязать приспособление к экземпляру. Следует отметить, что перед привязкой полигона к экземпляру необходимо определить не менее трех точек. - или вы получите ошибку, и что добавление точки к фикстуре, для которой ранее не была задана форма полигона, также приведет к ошибке. Также обратите внимание, что максимальное количество точек, допустимое для привязки, равно восьми.

-

Для цепных фигур (которые представляют собой просто ряд соединенных граней) эта функция задает точку в качестве "соединения", в котором будут соединены грани. Поэтому необходимо определить как минимум две точки перед привязкой приспособления к экземпляру. - в противном случае вы получите ошибку. Однако, в отличие от многоугольников, вы не ограничены максимум восемью точками и можете добавить столько точек, сколько необходимо для создания цепочки, а точки определяются в фактических координатах помещения, а не относительно экземпляра. - экземпляр.

-

-

Синтаксис:

-

physics_fixture_add_point(fixture, xpos, ypos)

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
fixturethe index of the fixture
xposthe x position of the point (relative to the fixture origin for polygon shapes)
yposthe y position of the point (relative to the fixture origin for polygon shapes)
-

-

Возвращается:

-

-

-

Пример:

-

physics_fixture_set_polygon_shape(fix_Ship);
physics_fixture_add_point(fix_Ship, 0,0);
physics_fixture_add_point(fix_Ship, -40, 100);
physics_fixture_add_point(fix_Ship, 40, 100);

-

Приведенный выше код применит форму многоугольника к приспособлению, индексированному в переменной "fix_Ship", а затем определит три точки для создания треугольной формы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_bind.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_bind.htm index 70f437f3d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_bind.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_bind.htm @@ -1,76 +0,0 @@ - - - - - - physics_fixture_bind - - - - - - - - - - -

physics_fixture_bind

-

После того как мы определили приспособление, его необходимо привязать к экземпляру. Это означает, что его свойства передаются выбранному экземпляру, а не самому приспособлению, поэтому одно приспособление может быть привязано к нескольким экземплярам, если все они должны иметь одинаковые свойства. Вы можете указать индекс объекта для цели, и все экземпляры, присутствующие в комнате в данный момент, получат свойства этого светильника (но не любые новые экземпляры объекта, созданные позже), или вы можете использовать специальные ключевые слова other и all. Можно даже указать родительский объект, и все дочерние экземпляры с этим родителем также получат привязку. После того как приспособление будет привязано ко всем необходимым экземплярам, его можно удалить, если оно больше не нужно, при этом экземпляры со свойствами этого приспособления не будут затронуты и сохранят эти свойства.

-

Приспособление будет привязано к экземпляру с центром масс, расположенным в начале координат экземпляра, а многоугольные приспособления привязываются на основе положения точек относительно начала координат. Если вы хотите, чтобы ваше приспособление было привязано к точке, отличной от начала координат, то вам следует использовать функцию physics_fixture_bind_ext().

-

Функция также возвращает уникальное значение "id" для связанного приспособления(не само приспособление), которое затем может быть использовано для удаления ("отвязки") физических свойств от экземпляра с помощью функции physics_remove_fixture(). Это позволяет добавлять и удалять физические свойства из экземпляра без разрушения и повторного создания объектов.

-

ПРИМЕЧАНИЕ: Фиксы следует удалять, если они больше не нужны, так как в противном случае может произойти утечка памяти, что приведет к замедлению и в конечном итоге к краху вашей игры.

-

-

Синтаксис:

-

physics_fixture_bind(fixture, target)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
fixtureИдентификатор физического приспособленияThe fixture that is to be bound
targetИдентификатор экземпляра или актив объектаThe target instance that is to receive the fixture (can be an instance id, an object id, other, or all)
-

-

Возвращается:

-

Real

-

-

Пример:

-

var fix, inst;
- fix = physics_fixture_create();
- physics_fixture_set_circle_shape(fix, 16);
- physics_fixture_set_density(fix, 1.0);
- inst = instance_create_layer(x, y, "Instances", genericBodyObject);
- my_fix = physics_fixture_bind(fix, inst);
- physics_fixture_delete(fix);

-

Приведенный выше код создаст приспособление и присвоит его индекс переменной "fix". Затем он определяет форму и плотность приспособления, прежде чем привязать его к экземпляру, который был создан с индексом для привязанного приспособления, хранящимся в переменной "my_fix". Наконец, приспособление удаляется, чтобы предотвратить утечку памяти, поскольку оно больше не нужно.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_bind_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_bind_ext.htm index 9977cfb8e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_bind_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_bind_ext.htm @@ -1,86 +0,0 @@ - - - - - - physics_fixture_bind_ext - - - - - - - - - - -

physics_fixture_bind_ext

-

После того как мы определили приспособление, его необходимо привязать к экземпляру. Это означает, что его свойства передаются выбранному экземпляру, а не самому приспособлению, поэтому одно приспособление может быть привязано к нескольким экземплярам, если все они должны иметь одинаковые свойства. Вы можете указать индекс объекта для цели, и все экземпляры, присутствующие в комнате в данный момент, получат свойства этого светильника (но не любые новые экземпляры объекта, созданные позже), или вы можете использовать специальные ключевые слова other и all. Можно даже указать родительский объект, и все дочерние экземпляры с этим родителем также получат привязку. После того как приспособление будет привязано ко всем необходимым экземплярам, его можно удалить, если оно больше не нужно, при этом экземпляры со свойствами этого приспособления не будут затронуты и сохранят эти свойства.

-

Обычно приспособление привязывается к экземпляру с центром масс, расположенным в начале координат экземпляра, однако это не всегда то, что вам нужно, поэтому данная функция также позволяет вам сместить позиции x и y, в которых привязывается приспособление, на заданную величину (если вам это не нужно, то используйте physics_fixture_bind() вместо этого). Важно отметить, что приспособление может поддерживать только одно смещение, так как добавление нескольких смещений к одному приспособлению не поддерживается Box2D.

-

Функция также возвращает уникальное значение "id" для связанного приспособления(не само приспособление), которое затем может быть использовано для удаления ("отвязки") физических свойств от экземпляра с помощью функции physics_remove_fixture(). Это позволяет добавлять и удалять физические свойства из экземпляра без разрушения и повторного создания объектов.

-

ПРИМЕЧАНИЕ: Фиксы следует удалять, если они больше не нужны, так как в противном случае может произойти утечка памяти, что приведет к замедлению и в конечном итоге к краху вашей игры.

-

-

Синтаксис:

-

physics_fixture_bind_ext(fixture, target, xoffset, yoffset)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
fixtureИдентификатор физического приспособленияThe fixture that is to be bound
targetИдентификатор экземпляра или актив объектаThe target instance that is to receive the fixture (can be an instance id, an object id, other, or all)
xoffsetРеальноThe offset along the x-axis
yoffsetРеальноThe offset along the y-axis
-

-

Возвращается:

-

Real

-

-

Пример:

-

var fix, inst;
- fix = physics_fixture_create();
- physics_fixture_set_circle_shape(fix, 16);
- physics_fixture_set_density(fix, 1.0);
- inst = instance_create_layer(x, y, "Instances", genericBodyObject);
- my_fix = physics_fixture_bind_ext(fix, inst, sprite_width / 2, -(sprite_height / 2));
- physics_fixture_delete(fix);

-

Приведенный выше код создает приспособление и присваивает его индекс переменной "fix". Затем он определяет форму и плотность приспособления, после чего привязывает его к экземпляру со смещением, основанным на ширине и высоте sprite. Индекс привязанного приспособления хранится в переменной "my_fix". Наконец, само приспособление удаляется, чтобы предотвратить утечку памяти, поскольку оно больше не нужно.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_create.htm index 5151bf47e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_create.htm @@ -1,49 +0,0 @@ - - - - - - physics_fixture_create - - - - - - - - - - - -

physics_fixture_create

-

Первым шагом в настройке приспособления является его создание с помощью этой функции. Возвращаемый индекс должен быть сохранен в переменной, которая будет использоваться во всех дальнейших функциях, используемых для определения и использования этого приспособления.

-

-

Синтаксис:

-

physics_fixture_create()

-

-

Возвращается:

-

Physics Fixture ID

-

-

Пример:

-

fix_Ball = physics_fixture_create();

-

Приведенный выше код создаст приспособление и сохранит его индекс в переменной "fix_Ball".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_delete.htm index d8656e7f4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_delete.htm @@ -1,64 +0,0 @@ - - - - - - physics_fixture_delete - - - - - - - - - - -

physics_fixture_delete

-

Поскольку после привязки приспособления к экземпляру этот экземпляр сохраняет свойства приспособления, мы можем удалить приспособление из памяти с помощью этой функции, особенно если мы больше не планируем его использовать. Обратите внимание, что неспособность удалить приспособления - после того, как они больше не нужны, может привести к утечке памяти, что приведет к замедлению и в конечном итоге к краху вашей игры, поэтому вам следует позаботиться о надлежащей очистке памяти после определения и привязки фикстур.

-

-

Синтаксис:

-

physics_fixture_delete(fixture)

- - - - - - - - - - - -
АргументТипОписание
fixturethe fixture that is to be deleted from memory
-

-

Возвращается:

-

-

-

Пример:

-

var fix, inst;
fix = physics_fixture_create();
physics_fixture_set_circle_shape(fix, 16);
physics_fixture_set_density(fix, 1.0);
inst = instance_create_layer(x, y, "Instances", genericBodyObject);
physics_fixture_bind(fix, - inst);
physics_fixture_delete(fix); -

-

Приведенный выше код создает приспособление и присваивает его индекс переменной "fix". Затем определяются форма и плотность приспособления, после чего оно привязывается к экземпляру, который был создан с индексом, хранящимся в переменной "inst". - Наконец, приспособление удаляется, чтобы предотвратить утечку памяти, поскольку оно больше не нужно.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_angular_damping.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_angular_damping.htm index 59ca0f13a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_angular_damping.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_angular_damping.htm @@ -1,65 +0,0 @@ - - - - - - physics_fixture_set_angular_damping - - - - - - - - - - -

physics_fixture_set_angular_damping

-

Если вспомнить любой вращающийся объект в "реальном мире", если только у него нет двигателя или он не находится в космосе, он со временем замедляется под воздействием внешних сил (например, трения с окружающим воздухом). Мы можем использовать функцию physics_fixture_set_angular_damping() в GameMaker для имитации этого эффекта и уменьшения скорости вращения объектов в физическом мире, поскольку без нее любой вращающийся объект продолжал бы вращаться бесконечно. Параметры демпфирования должны находиться в диапазоне от 0 до бесконечности, - при этом 0 означает отсутствие демпфирования, а бесконечность - полное демпфирование. Обычно используется значение демпфирования между 0 и 1, но при необходимости можно использовать любое неотрицательное значение.

-

-

Синтаксис:

-

physics_fixture_set_angular_damping(fixture, damping)

- - - - - - - - - - - - - - - -
АргументТипОписание
fixturethe index of the fixture
dampingthe angular damping of the fixture, usually between 0 and 1
-

-

Возвращается:

-

-

-

Пример:

-

physics_fixture_set_angular_damping(fix_Ball, 0.1);

-

Приведенный выше код установит угловое демпфирование приспособления, индексируемого в "fix_ball", равным 0,1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_awake.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_awake.htm index e4c77078a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_awake.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_awake.htm @@ -1,66 +0,0 @@ - - - - - - physics_fixture_set_awake - - - - - - - - - - -

physics_fixture_set_awake

-

Когда вы запускаете комнату с физикой или привязываете светильники к экземплярам, светильники всегда считаются "бодрствующими"... то есть они обрабатывают события и взаимодействуют с окружающими экземплярами. Однако это иногда может привести - к проблемам, особенно если у вас есть несколько экземпляров со светильниками, которые находятся рядом друг с другом, когда начинается комната (представьте себе башню, состоящую из различных экземпляров со светильниками), поскольку в "бодрствующем" состоянии они будут двигаться и, возможно, изменять положение - из-за внезапного начала действия гравитации и столкновений, влияющих на них. В таких случаях можно использовать эту функцию, чтобы пометить приспособление как "спящее", в этом случае оно не будет ничего обрабатывать при первом создании в комнате.

-

-

Синтаксис:

-

physics_fixture_set_awake(fixture, state)

- - - - - - - - - - - - - - - -
АргументТипОписание
fixturethe index of the fixture
flagwhether a fixture is awake (true) или нет (false)
-

-

Возвращается:

-

-

-

Пример:

-

physics_fixture_set_awake(fix_Cloud, true);

-

Приведенный выше код отмечает приспособление как "бодрствующее", когда оно привязано к экземпляру.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_box_shape.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_box_shape.htm index e91b7a2bc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_box_shape.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_box_shape.htm @@ -1,68 +0,0 @@ - - - - - - physics_fixture_set_box_shape - - - - - - - - - - -

physics_fixture_set_box_shape

-

Эта функция определяет форму коробки для вашего приспособления. Она принимает половину ширины и высоты, так как в мире физики это значение используется гораздо чаще, чем целые значения ширины/высоты для определения таких вещей, как столкновения.

-

-

Синтаксис:

-

physics_fixture_set_box_shape(fixture, halfWidth, halfHeight)

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
fixturethe index of the fixture
halfWidththe half width of the box
halfHeightthe half height of the box
-

-

Возвращается:

-

-

-

Пример:

-

physics_fixture_set_box_shape(fix_Border, room_width/2, 10);

-

Приведенный выше код применит форму коробки к приспособлению, индексированному в переменной "fix_Border", с шириной комнаты и высотой 20 пикселей.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_chain_shape.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_chain_shape.htm index a27ef7c59..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_chain_shape.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_chain_shape.htm @@ -1,74 +0,0 @@ - - - - - - physics_fixture_set_chain_shape - - - - - - - - - - -

physics_fixture_set_chain_shape

-

Эта функция определяет форму крепления "цепочка". Цепное приспособление состоит из нескольких точек, которые затем соединяются вместе с помощью краевых форм. Сама функция принимает индекс (ID) приспособления и может указать приспособлению зацикливаться или нет. Если установить значение true, то последняя точка соединится с первой точкой ребром, а если false, то нет. Обратите внимание, что эта функция подготавливает приспособление к приему точек, необходимых для создания цепочки, и они должны быть добавлены после вызова этой функции с помощью функции physics_fixture_add_point()так же, как и при построении многоугольного приспособления.

-

При создании цепного приспособления вы должны дать ему не менее двух точек, но вы не ограничены в количестве последующих точек, которые вы можете добавить, чтобы составить готовое приспособление.

-

-

Синтаксис:

-

physics_fixture_set_chain_shape(fixture, loop)

- - - - - - - - - - - - - - - -
АргументТипОписание
fixtureThe index of the fixture
loopWhether to close the chain (true) или нет (false).
-

-

Возвращается:

-

-

-

Пример:

-

var xx = -100;
- var yy = room_height / 2;
- var fix = physics_fixture_create(); physics_fixture_set_chain_shape(fix, false);
- for (var i = 0; i < 10; i++;)
- {
-     physics_fixture_add_point(_fix, _xx, _yy);
-     _xx += 50 + random(150);
-     _yy = (room_height / 2) - 250 + irandom(500);
- }
- physics_fixture_bind(fix, id);

-

Приведенный выше код создаст линию "краевых" светильников с различной высотой по всей длине комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_circle_shape.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_circle_shape.htm index 715ab7622..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_circle_shape.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_circle_shape.htm @@ -1,64 +0,0 @@ - - - - - - physics_fixture_set_circle_shape - - - - - - - - - - -

physics_fixture_set_circle_shape

-

Эта функция определяет форму круга для вашего приспособления с радиусом, определяемым аргументом "rad".

-

-

Синтаксис:

-

physics_fixture_set_circle_shape(fixture, rad)

- - - - - - - - - - - - - - - -
АргументТипОписание
fixturethe index of the fixture
radradius of the circle
-

-

Возвращается:

-

-

-

Пример:

-

physics_fixture_set_circle_shape(fix_Ball, sprite_get_width(spr_Ball) / 2);

-

Код выше применит форму круга к приспособлению, индексированному в переменной "fix_Ball", с радиусом, равным ширине sprite "spr_Ball", деленной на 2.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_collision_group.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_collision_group.htm index ce17520f6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_collision_group.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_collision_group.htm @@ -1,68 +0,0 @@ - - - - - - physics_fixture_set_collision_group - - - - - - - - - - -

physics_fixture_set_collision_group

-

После создания приспособления можно определить его как часть группы столкновений. Это означает, что вы можете указать экземплярам с этим приспособлением всегда сталкиваться или никогда не сталкиваться с другими экземплярами, которые имеют привязанные к ним приспособления с той же группой столкновений. Значения, которые можно присвоить, основаны на положительных или отрицательных числах, при этом по умолчанию используется значение 0 (это означает, что экземпляр с этим параметром приспособления игнорируется, пока для него не будет создано событие столкновения). Вот изображение для пояснения:

-

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

-

Значения для группы столкновений могут находиться в диапазоне от -32,768 до 32,767 (оба включительно).

-

Синтаксис:

-

physics_fixture_set_collision_group(fixture, group);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
fixtureИдентификатор физического приспособленияThe fixture that is to be bound
groupРеальноThe group that this fixture is assigned to (either a positive value, 0, or a negative value)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

physics_fixture_set_collision_group(fix_Wheel, -1);

-

Приведенный выше код установит приспособление, проиндексированное в переменной "fix_Wheel", в группу "-1".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_density.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_density.htm index 722533994..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_density.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_density.htm @@ -1,73 +0,0 @@ - - - - - - physics_fixture_set_density - - - - - - - - - - -

physics_fixture_set_density

-

Плотность чего-либо определяется как его масса на единицу объема, что в основном означает, сколько массы втиснуто в пространство, которое он занимает в мире. Так, воздушный шар имеет низкую плотность, так как он имеет небольшую массу, занимая большое пространство, - в то время как свинцовый брусок имеет высокую плотность, так как обладает большой массой, но занимает мало места.

-

В мире 2D-физики GameMaker масса рассчитывается автоматически - на основе значений, введенных вами для плотности и площади поверхности формы, которую вы определили для приспособления. Это напрямую влияет на силу инерции приспособления, а также на то, как оно реагирует на столкновения и силы, поэтому - если вы создадите маленькую форму с высокой плотностью, она будет иметь очень большую массу (как брусок свинца), но если вы определите большую форму с низкой плотностью, она будет иметь гораздо меньшую массу (как воздушный шар).

-

ПРИМЕЧАНИЕ: Если вы хотите, чтобы экземпляр, который будет принимать приспособление, был статичным (т.е. неподвижным в игровом мире), то плотность должна быть установлена на 0, по сути, давая ему бесконечную плотность.

-

ПРИМЕЧАНИЕ Статичное приспособление можно сделать кинематическим (т.е. оно может двигаться, но без воздействия силы или гравитации), сделав его плотность равной 0, а затем установив параметры phy_speed_x - , phy_speed_y - , или phy_angular_velocity - переменные.

-

-

Синтаксис:

-

physics_fixture_set_density(fixture, density)

- - - - - - - - - - - - - - - -
АргументТипОписание
fixturethe index of the fixture
densitythe density of the fixture calculated as kg/m²
-

-

Возвращается:

-

-

-

Пример:

-

physics_fixture_set_density(fix_Balloon, 0.1);

-

Приведенный выше код установит плотность приспособления, проиндексированного в "fix_Ballon", равной 0,1.

-

-

-

-
- - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_edge_shape.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_edge_shape.htm index aa70c7769..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_edge_shape.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_edge_shape.htm @@ -1,88 +0,0 @@ - - - - - - physics_fixture_set_edge_shape - - - - - - - - - - -

physics_fixture_set_edge_shape

-

Эта функция определяет "краевую" форму фикстуры. Форма края - это просто линия, которая будет генерировать столкновение, когда другие фикстуры пересекают ее, и может быть очень полезна для создания (например) рельефа, или для создания границ вокруг комнаты. Положение края определяется с помощью локального пространства, т.е. позиция x/y экземпляра считается (0,0), поэтому это следует учитывать при их создании (в приведенном ниже примере кода экземпляр был помещен в (0,0) в комнате, чтобы избежать осложнений).

-

-

Синтаксис:

-

physics_fixture_set_edge_shape(fixture, local_x1, local_y1, local_x2, local_y2)

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
fixturethe index of the fixture
local_x1start x position for the edge
local_y1start y position for the edge
local_x2end x position for the edge
local_y2end y position for the edge
-

-

Возвращается:

-

-

-

Пример:

-

var xx = 0;
- var y1 = room_height - 100;
- var y2 = room_height - 50 - irandom(100);
- for (var i = 0; i < 10; i++;)
- {
-     var _fix = physics_fixture_create();
-     physics_fixture_set_edge_shape(_fix, _xx, _y1, _xx + 50, _y2);
-     physics_fixture_bind(_fix, id);
-     physics_fixture_delete(_fix);
-     _xx += 50;
-     _y1 = y2;
-     _y2 = room_height - 50 - irandom(100);
- }

-

Приведенный выше код создаст линию "краевых" светильников с различной высотой по всей длине комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_friction.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_friction.htm index 404c4d697..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_friction.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_friction.htm @@ -1,66 +0,0 @@ - - - - - - physics_fixture_set_friction - - - - - - - - - - -

physics_fixture_set_friction

-

Трение - это сила, которая противодействует относительному движению материальных элементов, скользящих друг по другу, что в мире физики GameMaker означает потерю импульса, вызванную столкновением двух объектов с привязанными к ним креплениями. - к ним. Таким образом, когда два экземпляра сталкиваются, на их движение влияет это значение, причем высокое значение трения приводит к большей потере импульса, чем низкое. Обратите внимание, что трение обычно устанавливается в значение между 0 и 1, но вы можете использовать любое неотрицательное значение. - при необходимости.

-

-

Синтаксис:

-

physics_fixture_set_friction(fixture, friction)

- - - - - - - - - - - - - - - -
АргументТипОписание
fixturethe index of the fixture
frictionthe friction of the fixture
-

-

Возвращается:

-

-

-

Пример:

-

physics_fixture_set_friction(fix_Brick, 0.1);

-

Приведенный выше код установит трение приспособления, проиндексированного в "fix_brick", равным 0,1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_kinematic.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_kinematic.htm index 9b45d73ff..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_kinematic.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_kinematic.htm @@ -1,64 +0,0 @@ - - - - - - physics_fixture_set_kinematic - - - - - - - - - - -

physics_fixture_set_kinematic

-

В игре, основанной на физике, есть определенные случаи, когда вы хотите перемещаться, но не хотите, чтобы на вас действовали такие силы, как гравитация, или силы, возникающие при столкновении с динамическими объектами (вспомните, например, движущиеся платформы в платформенной игре). - например). Для таких объектов простая установка плотности фиксатора на 0 будет означать, что физика будет считать, что объект должен быть статичным. Однако, если вы установите значение phy_speed_x, - phy_speed_y или phy_angular_velocity переменные для экземпляра, к которому было привязано такое приспособление, он будет преобразован - в кинематический объект и начнет движение. Изменение экземпляра из статического в кинематический в середине моделирования может быть дорогостоящим с точки зрения обработки (в зависимости от состояния экземпляров в физическом мире), и поэтому рекомендуется задать - кинематическим с помощью этой функции до привязки к экземпляру, чтобы на него не влияли столкновения и силы (такие как гравитация), но он мог двигаться с постоянной линейной и/или угловой скоростью.

-

-

Синтаксис:

-

physics_fixture_set_kinematic(fixture)

- - - - - - - - - - - -
АргументТипОписание
fixturethe index of the fixture
-

-

Возвращается:

-

-

-

Пример:

-

physics_fixture_set_kinematic(fix_Cloud);

-

Приведенный выше код укажет, что приспособление, индексированное в "fix_Cloud", должно быть помечено как кинематическое.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_linear_damping.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_linear_damping.htm index f2f2f0f33..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_linear_damping.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_linear_damping.htm @@ -1,67 +0,0 @@ - - - - - - physics_fixture_set_linear_damping - - - - - - - - - - -

physics_fixture_set_linear_damping

-

Демпфирование используется для уменьшения скорости экземпляров в физическом мире и отличается от трения тем, что трение возникает только при контакте двух экземпляров с креплениями. Демпфирование также намного дешевле в моделировании, чем трение, но обратите внимание, что демпфирование - не является заменой трения; эти два эффекта можно и нужно использовать вместе. Вот изображение, иллюстрирующее демпфирование:

-

Параметры демпфирования должны находиться в диапазоне от 0 до бесконечности, при этом 0 означает отсутствие демпфирования, - а бесконечность означает полное демпфирование. Обычно используется значение демпфирования между 0 и 1, но при необходимости можно использовать любое неотрицательное значение.

-

-

Синтаксис:

-

physics_fixture_set_linear_damping(fixture, damping)

- - - - - - - - - - - - - - - -
АргументТипОписание
fixturethe index of the fixture
dampingthe damping of the fixture, usually between 0 and 1
-

-

Возвращается:

-

-

-

Пример:

-

physics_fixture_set_linear_damping(fix_Ball, 0.1);

-

Приведенный выше код установит линейное демпфирование приспособления, индексируемого в "fix_ball", равным 0,1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_polygon_shape.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_polygon_shape.htm index b5d3378c5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_polygon_shape.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_polygon_shape.htm @@ -1,62 +0,0 @@ - - - - - - physics_fixture_set_polygon_shape - - - - - - - - - - -

physics_fixture_set_polygon_shape

-

Эта функция задает форму многоугольника для вашего приспособления, но вам нужно будет использовать функцию physics_fixture_add_point() для определения формы этого многоугольника относительно начала координат приспособления. Многоугольник - замыкается, когда приспособление привязывается к экземпляру. Следует отметить, что эта функция должна быть вызвана до определения каких-либо точек, и вы также должны иметь по крайней мере три точки, определенные для вашего многоугольника, прежде чем привязать его к экземпляру, иначе - иначе вы получите ошибку.

-

-

Синтаксис:

-

physics_fixture_set_polygon_shape(fixture)

- - - - - - - - - - - -
АргументТипОписание
fixturethe index of the fixture
-

-

Возвращается:

-

-

-

Пример:

-

physics_fixture_set_polygon_shape(fix_Ship);
physics_fixture_add_point(fix_Ship, 0,0);
physics_fixture_add_point(fix_Ship, -40, 100);
physics_fixture_add_point(fix_Ship, 40, 100);

-

Приведенный выше код применит форму многоугольника к приспособлению, индексированному в переменной "fix_Ship", а затем определит три точки для создания треугольной формы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_restitution.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_restitution.htm index d882fbc45..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_restitution.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_restitution.htm @@ -1,66 +0,0 @@ - - - - - - physics_fixture_set_restitution - - - - - - - - - - -

physics_fixture_set_restitution

-

В физике реституция определяется как "возвращение объекта или системы в исходное состояние после упругой деформации", но так как фикстуры в GameMaker являются действительно жесткими телами и не могут быть деформированы, реституция - это - это способ сказать, насколько "упругим" является крепление. Этот параметр влияет на то, насколько сильно объект "отскакивает" при столкновении с другими объектами, и зависит от других сил, действующих на объект, таких как гравитация и трение, - и обычно имеет значение от 0 до 1 (более высокие значения могут быть использованы, но могут дать непредсказуемые результаты). Вот иллюстрация того, как это работает:

-

Physics restitution illustration

-

Синтаксис:

-

physics_fixture_set_restitution(fixture, restitution)

- - - - - - - - - - - - - - - -
АргументТипОписание
fixtureThe index of the fixture
restitutionThe restitution of the fixture (usually between 0 and 1)
-

-

Возвращается:

-

-

-

Пример:

-

physics_fixture_set_restitution(fix_Ball, 0.9);

-

Приведенный выше код установит реституцию приспособления, проиндексированного в "fix_ball", равной 0,9.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_sensor.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_sensor.htm index 91c85a587..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_sensor.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_fixture_set_sensor.htm @@ -1,68 +0,0 @@ - - - - - - physics_fixture_set_sensor - - - - - - - - - - -

physics_fixture_set_sensor

-

Иногда вам нужно, чтобы игра обнаруживала и распознавала столкновение двух экземпляров с креплениями, но не имела физической реакции на столкновение. Это можно сделать, превратив приспособление в датчик, что означает, что оно будет генерировать событие столкновения, но без физической реакции, так что вы можете использовать эти экземпляры в качестве "триггеров" для других событий, происходящих в игровой комнате. Любое приспособление может быть помечено как датчик, и не имеет значения, является ли экземпляр, к которому оно привязано, статичным или движущимся.

-

ПРИМЕЧАНИЕ: Сенсорное приспособление выдает событие столкновения только при первом столкновении, то есть вы не получите поток событий столкновения, когда два тела продолжают накладываться друг на друга (что обычно и происходит). Если они перестанут накладываться друг на друга и наложатся в следующий раз, произойдет еще одно событие столкновения.

-

-

Синтаксис:

-

physics_fixture_set_sensor(fixture, state)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
fixtureИдентификатор физического приспособленияthe index of the fixture
stateБулевоwhether a fixture is a sensor (true) or not (false)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

physics_fixture_set_sensor(fix_Cloud, 1);

-

Приведенный выше код переведет состояние датчика приспособления, индексируемого в "fix_Cloud", в true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_get_density.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_get_density.htm index 2d321e29b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_get_density.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_get_density.htm @@ -1,62 +0,0 @@ - - - - - - physics_get_density - - - - - - - - - - - -

physics_get_density

-

Когда вы привязываете приспособление к экземпляру с помощью physics_fixture_bind() это возвращает "id" для связанного приспособления. Вы можете использовать этот идентификатор для получения значения плотности связанного приспособления(не - "базового" приспособления) в любое время с помощью этой функции.

-

-

Синтаксис:

-

physics_get_density(fixture)

- - - - - - - - - - - -
АргументТипОписание
fixturethe id of the bound fixture
-

-

Возвращается:

-

-

-

Пример:

-

var density = physics_get_density(fix_id);
physics_set_density(fix_id, density - 0.1);

-

Приведенный выше код получает значение плотности тока для связанных физических свойств экземпляра, а затем устанавливает их в другое значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_get_friction.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_get_friction.htm index 7d7258db9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_get_friction.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_get_friction.htm @@ -1,64 +0,0 @@ - - - - - - physics_get_friction - - - - - - - - - - - -

physics_get_friction

-

Когда вы привязываете приспособление к экземпляру с помощью physics_fixture_bind() это возвращает "id" для связанного приспособления. Вы можете использовать этот идентификатор для получения значения трения связанного приспособления(не "базового" приспособления) в любое время с помощью этой функции.

-

-

Синтаксис:

-

physics_get_friction(fixture)

- - - - - - - - - - - - - -
АргументТипОписание
fixtureИдентификатор физического приспособленияthe id of the bound fixture
-

-

Возвращается:

-

Real

-

-

Пример:

-

var fric = physics_get_friction(fix_id);
- physics_set_friction(fix_id, fric + 0.1);

-

Приведенный выше код получает текущее значение трения для связанных физических свойств экземпляра, а затем устанавливает их на другое значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_get_restitution.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_get_restitution.htm index c7b5304b3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_get_restitution.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_get_restitution.htm @@ -1,62 +0,0 @@ - - - - - - physics_get_restitution - - - - - - - - - - - -

physics_get_restitution

-

Когда вы привязываете приспособление к экземпляру с помощью physics_fixture_bind() это возвращает "id" для связанного приспособления. Вы можете использовать этот идентификатор для получения реституции (свойства "отскока") - значение связанного приспособления, а не "базового" приспособления, в любое время, используя эту функцию.

-

-

Синтаксис:

-

physics_get_restitution(fixture)

- - - - - - - - - - - -
АргументТипОписание
fixturethe id of the bound fixture
-

-

Возвращается:

-

-

-

Пример:

-

var rest = physics_get_restitution(fix_id);
physics_set_restitution(fix_id, rest * 2);

-

Приведенный выше код получает текущее значение реституции для связанных физических свойств экземпляра, а затем устанавливает их в другое значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_remove_fixture.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_remove_fixture.htm index 49dc1adb2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_remove_fixture.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_remove_fixture.htm @@ -1,67 +0,0 @@ - - - - - - physics_remove_fixture - - - - - - - - - - -

physics_remove_fixture

-

Эта функция удаляет (или "отвязывает") приспособление от экземпляра или экземпляров. Для этого требуется уникальный "id" привязанного приспособления (возвращаемый функцией physics_fixture_bind() и она удалит все определенные в данный момент физические свойства экземпляра, позволяя вам заново определить новое приспособление и привязать его к экземпляру. Таким образом, вы можете изменить физические свойства экземпляра без необходимости его уничтожения и повторного создания.

-

-

Синтаксис:

-

physics_remove_fixture(id, fixture)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор экземпляраThe ID of the instance to remove the fixture from
fixtureИдентификатор физического приспособленияThe ID of the fixture that is to be removed from the instance
-

-

Возвращается:

-

N/A

-

-

Пример:

-

physics_remove_fixture(id, my_fix);

-

Приведенный выше код удалит из экземпляра приспособление с "id", хранящимся в переменной "my_fix".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_set_density.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_set_density.htm index c6e649150..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_set_density.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_set_density.htm @@ -1,65 +0,0 @@ - - - - - - physics_set_density - - - - - - - - - - -

physics_set_density

-

Когда вы привязываете приспособление к экземпляру с помощью physics_fixture_bind() это возвращает "id" для связанного приспособления. Вы можете использовать этот идентификатор для установки значения плотности связанного приспособления, а не - "базового" приспособления, в любое время с помощью этой функции.

-

-

Синтаксис:

-

physics_set_density(fixture, density)

- - - - - - - - - - - - - - - -
АргументТипОписание
fixturethe id of the bound fixture
densitythe new density value to apply
-

-

Возвращается:

-

-

-

Пример:

-

var density = physics_get_density(fix_id);
physics_set_density(fix_id, density - 0.1);

-

Приведенный выше код получает значение плотности тока для связанных физических свойств экземпляра, а затем устанавливает их в другое значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_set_friction.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_set_friction.htm index 58571d73d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_set_friction.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_set_friction.htm @@ -1,64 +0,0 @@ - - - - - - physics_set_friction - - - - - - - - - - -

physics_set_friction

-

Когда вы привязываете приспособление к экземпляру с помощью physics_fixture_bind() это возвращает "id" для связанного приспособления. Вы можете использовать этот идентификатор для установки значения трения связанного приспособления, а не "базового" приспособления, в любое время с помощью этой функции. Обратите внимание, что обычно трение устанавливается в значение между 0 и 1, но при необходимости вы можете использовать любое неотрицательное значение.

-

-

Синтаксис:

-

physics_set_friction(fixture, friction)

- - - - - - - - - - - - - - - -
АргументТипОписание
fixturethe id of the bound fixture
frictionthe new friction value to apply
-

-

Возвращается:

-

-

-

Пример:

-

var fric = physics_get_friction(fix_id);
physics_set_friction(fix_id, fric + 0.1);

-

Приведенный выше код получает текущее значение трения для связанных физических свойств экземпляра, а затем устанавливает их на другое значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_set_restitution.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_set_restitution.htm index 33ae527b4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_set_restitution.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Fixtures/physics_set_restitution.htm @@ -1,64 +0,0 @@ - - - - - - physics_set_restitution - - - - - - - - - - -

physics_set_restitution

-

Когда вы привязываете приспособление к экземпляру с помощью physics_fixture_bind() эта функция возвращает "id" для связанного приспособления. Вы можете использовать этот идентификатор для установки значения реституции связанного приспособления, а не "базового" приспособления, в любое время с помощью этой функции. Реституция обычно устанавливается как значение между 0 и 1, но при необходимости можно использовать и большие значения, хотя результаты могут быть непредсказуемыми.

-

-

Синтаксис:

-

physics_set_restitution(fixture, restitution)

- - - - - - - - - - - - - - - -
АргументТипОписание
fixturethe id of the bound fixture
restitutionthe new restitution value to apply
-

-

Возвращается:

-

-

-

Пример:

-

var rest = physics_get_restitution(fix_id);
physics_set_restitution(fix_id, rest * 2);

-

Приведенный выше код получает текущее значение реституции для связанных физических свойств экземпляра, а затем устанавливает их в другое значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/Forces.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/Forces.htm index e8d5eba2a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/Forces.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/Forces.htm @@ -1,55 +0,0 @@ - - - - - - Силы - - - - - - - - - - -

Силы

-

В мире физики GameMaker на объекты влияют не только гравитация и столкновения, на них также влияют силы, которые вы решили применить к ним, и знание того, какую силу применить, очень важно, когда вы хотите правильно управлять объектом в рамках физического моделирования. Существует две силы, которые можно использовать и применять к вашим объектам:

-
    -
  • Импульсы: Импульс задает направление и скорость сразу после его приложения, что делает его идеальным для таких вещей, как пружины, стрельба пулями и т.д.
  • -
  • Силы: Сила действует на существующую скорость и направление и изменяет их со временем, что делает ее идеальной для таких вещей, как ветер, магнит и т.д..
  • -
  • Крутящий момент: Крутящий момент определяет вероятность того, что объект продолжит вращаться вокруг своей оси после приложения силы, и скорость, с которой он прекратит вращение. Добавление крутящего момента - это постепенный процесс, подобно использованию силы для придания движения.
  • -
  • Угловой импульс: угловой импульс может быть использован для мгновенного приведения приспособления во вращение, так же как обычный импульс может быть использован для мгновенного приведения приспособления в движение.
  • -
-

Следующие функции существуют для применения различных типов сил к экземплярам с поддержкой физики, и каждая функция дает более полное объяснение того, как сила будет применена, чем приведенные выше схемы:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_angular_impulse.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_angular_impulse.htm index 755929c41..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_angular_impulse.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_angular_impulse.htm @@ -1,63 +0,0 @@ - - - - - - physics_apply_angular_impulse - - - - - - - - - - -

physics_apply_angular_impulse

-

Эта функция дает угловой импульс экземпляру с включенной физикой. Этот импульс установит угловое вращение на заданную величину, игнорируя текущий крутящий момент, по сути, устанавливая количество "вращения", которое имеет приспособление. Если вы хотите применить угловую силу к экземпляру с помощью крутящего момента, то вам следует использовать функцию physics_apply_torque().

-

-

Синтаксис:

-

physics_apply_angular_impulse(impulse)

- - - - - - - - - - - -
АргументТипОписание
impulseThe impulse (in Newton metres) to be applied
-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check(vk_up)
- {
-     physics_apply_angular_impulse(10);
- }

-

Приведенный выше код будет давать приспособлению с включенной физикой угловой импульс при нажатии клавиши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_force.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_force.htm index 19f679ca6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_force.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_force.htm @@ -1,82 +0,0 @@ - - - - - - physics_apply_force - - - - - - - - - - -

physics_apply_force

-

При работе с физикой необходимо применять к объектам не только гравитацию, но и силы. Сила - это любое воздействие, которое заставляет объект изменить скорость, направление или форму, и определяется в мире физики GameMaker так же, как мы определяем гравитацию, путем получения вектора из двух компонентов xforce/yforce. Следует отметить, что силы прикладываются не к центру масс объекта, а скорее к точке в комнате, и они будут изменять направление и скорость, а также крутящий момент (вращение) в зависимости от любых других сил, действующих на объект (например, гравитации). Вот пример изображения для наглядности:

-

В приведенном выше примере пружинный объект в нижней части создал силу на шаровом объекте, заставив его двигаться в другом направлении. Точная сила определяется вектором, который мы получаем из компонентов xforce/yforce по отношению к координатам xpos/ypos - это означает, что сила рассчитывается как расстояние от xpos/ypos до xforce/yforce в Ньютонах (Ньютон определяется как количество чистой силы, необходимой для ускорения массы в один килограмм со скоростью один метр в секунду в квадрате), а направление - это угол, который мы получаем от xpos/ypos до xforce/yforce. Код для столкновения, как описано выше, будет находиться в событии столкновения объекта spring и будет выглядеть примерно так, как показано в примере ниже.

-

ПРИМЕЧАНИЕ: Физический мир использует метры для всех своих расчетов, а соотношение пикселей на метр определяется в редакторе комнаты или с помощью функции physics_world_create().

-

-

Синтаксис:

-

physics_apply_force(xpos, ypos, xforce, yforce)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xposРеальноThe x coordinate in the room where the force will be applied
yposРеальноThe y coordinate in the room where the force will be applied
xforceРеальноThe x component of the force vector
yforceРеальноThe y component of the force vector
-

-

Возвращается:

-

N/A

-

-

Пример:

-

with (other)
- {
-     physics_apply_force(x, y, 0, -30);
- }

-

Код выше применит код к другому объекту при столкновении с силой 30 Ньютонов и направлением.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_impulse.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_impulse.htm index 13c579661..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_impulse.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_impulse.htm @@ -1,80 +0,0 @@ - - - - - - physics_apply_impulse - - - - - - - - - - -

physics_apply_impulse

-

С помощью физики в GameMaker к объекту можно применить не только силу и гравитацию, но и импульс. Он немного отличается от силы тем, что при его приложении он немедленно повлияет на скорость и, возможно, крутящий момент (или "вращение") объекта, особенно если точка, выбранная для приложения импульса, не совпадает с центром масс (обратите внимание: центр масс не обязательно совпадает с началом координат!). Вот иллюстрация:

-

Как вы видите, игрок нажал на мяч, и это дало ему импульс двигаться в правый верхний угол, вращаясь при этом. Точный импульс определяется вектором, который мы получаем из компонентов ximpulse/yimpulse по отношению к координатам xpos/ypos - это означает, что импульс рассчитывается как расстояние от xpos/ypos до ximpulse/yimpulse в Ньютонах, а направление - это угол, который мы получаем от xpos/ypos до ximpulse/yimpulse.

-

ПРИМЕЧАНИЕ: Физический мир использует метры для всех своих расчетов, а соотношение пикселей на метр определяется в редакторе комнаты или с помощью функции physics_world_create().

-

-

Синтаксис:

-

physics_apply_impulse(xpos, ypos, ximpulse, yimpulse)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xposThe x coordinate in the room where the impulse will be applied
yposThe y coordinate in the room where the impulse will be applied
ximpulsethe x component of the impulse vector
yimpulsethe y component of the impulse vector
-

-

Возвращается:

-

-

-

Пример:

-

if mouse_check_button_pressed(mb_left)
- {
-     with (place_meeting(mouse_x, mouse_y, all))
-     {
-         physics_apply_impulse(mouse_x, mouse_y, -10 + irandom(20), -10 + irandom(20));
-     }
- }

-

Приведенный выше код применит импульс со случайным вектором к экземпляру, который находится в позиции мыши при нажатии левой кнопки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_local_force.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_local_force.htm index a18a25310..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_local_force.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_local_force.htm @@ -1,77 +0,0 @@ - - - - - - physics_apply_local_force - - - - - - - - - - -

physics_apply_local_force

-

Другой способ использования силы в мире физики - это локальное применение силы к экземпляру. Это означает, что сила и направление силы рассчитываются на основе начала координат (или положения, если оно не имеет sprite) экземпляра, не принимая во внимание направление или вращение, которое он может иметь в игровой комнате или физическом мире. Следует отметить, что при использовании этой функции силы прикладываются не к центру масс объекта, а к точке относительно экземпляра, и они не будут приложены мгновенно, поскольку зависят от любых других сил, действующих на объект (например, гравитации). На этом рисунке показано, как работает локальная сила:

-

Как вы видите, координаты xlocal и ylocal вычисляются на основе положения оси, которое всегда рассматривается как начало координат экземпляра (0,0), поэтому независимо от того, в каком месте комнаты находится объект, xlocal и ylocal всегда будут одинаковыми. Затем необходимо решить, где должны располагаться компоненты вектора силы (xforce и yforce) относительно позиции xlocal/ylocal. Точная сила определяется вектором, который мы получаем из компонентов xforce/yforce относительно этих координат - это означает, что сила рассчитывается как расстояние от xlocal/ylocal до xforce/yforce в Ньютонах, а направление - это угол, который мы получаем от xlocal/ylocal до xforce/yforce. Это может показаться немного запутанным, но достаточно взглянуть на рисунок, чтобы понять, как это работает, и это избавит вас от сложных математических вычислений!

-

ПРИМЕЧАНИЕ: Физический мир использует метры для всех своих расчетов, а соотношение пикселей на метр определяется в редакторе комнаты или с помощью функции physics_world_create().

-

-

Синтаксис:

-

physics_apply_local_force(xlocal, ylocal, xforce, yforce)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xlocalThe x coordinate relative to the origin where the force will be applied
ylocalThe y coordinate relative to the origin where the force will be applied
xforcethe x component of the force vector
yforcethe y component of the force vector
-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check(vk_right)
- {
-     physics_apply_local_force(-25, 0, -50, 0);
- }

-

Приведенный выше код будет прикладывать к экземпляру силу в 50 Ньютонов слева направо относительно начала координат при нажатой клавише со стрелкой вправо.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_local_impulse.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_local_impulse.htm index 8eb6e4b0c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_local_impulse.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_local_impulse.htm @@ -1,77 +0,0 @@ - - - - - - physics_apply_local_impulse - - - - - - - - - - -

physics_apply_local_impulse

-

С помощью физики в GameMaker к объекту можно применить не только силу и гравитацию, но и импульс. Он немного отличается от силы тем, что при его применении он немедленно повлияет на скорость и, возможно, крутящий момент (или "вращение") объекта, особенно если точка, выбранная для приложения импульса, имеет вектор, не совпадающий с центром масс (обратите внимание: центр масс не обязательно совпадает с началом координат!). Эта функция прикладывает импульс локально к экземпляру. Это означает, что сила и направление импульса рассчитываются на основе начала координат (или положения, если оно не имеет sprite) экземпляра, без учета направления или вращения, которое он может иметь в игровой комнате или физическом мире. Вот иллюстрация:

-

Как вы видите, лягушка на рисунке получает импульс снизу, который заставляет ее "прыгнуть". Точный импульс определяется вектором, который мы получаем из компонентов ximpulse/yimpulse по отношению к координатам xpos/ypos - это означает, что импульс рассчитывается как расстояние от xpos/ypos до ximpulse/yimpulse в Ньютонах, а направление - это угол, который мы получаем от xpos/ypos до ximpulse/yimpulse.

-

ПРИМЕЧАНИЕ: Физический мир использует метры для всех своих расчетов, а соотношение пикселей на метр определяется в редакторе комнаты или с помощью функции physics_world_create().

-

-

Синтаксис:

-

physics_apply_local_impulse(xpos, ypos, ximpulse, yimpulse)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xposThe x coordinate relative to the origin where the impulse will be applied
yposThe y coordinate relative to the origin where the impulse will be applied
ximpulsethe x component of the impulse vector (relative to the xpos coordinate)
yimpulsethe y component of the impulse vector (relative to the ypos coordinate)
-

-

Возвращается:

-

-

-

Пример:

-

if jump
- {
-     physics_apply_local_impulse(0, 20, 0, 50);
- }

-

Приведенный выше код применит импульс с силой 30 Ньютонов и направлением снизу вверх относительно начала экземпляра, если переменная "jump" равна true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_torque.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_torque.htm index 6e6940314..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_torque.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Forces/physics_apply_torque.htm @@ -1,64 +0,0 @@ - - - - - - physics_apply_torque - - - - - - - - - - -

physics_apply_torque

-

Когда мы говорим о крутящем моменте, мы обычно имеем в виду тенденцию силы или импульса вращать объект вокруг его центра масс, но в GameMaker вы также можете самостоятельно прикладывать крутящий момент к объекту, заставляя его вращаться в заданном направлении. Сколько крутящего момента вы приложите, чтобы получить желаемое вращение, зависит от размера и плотности крепления, которое вы назначаете своему экземпляру, поскольку оба эти свойства определяют его массу, которая определяет его инерцию, влияющую на крутящий момент! Общее правило гласит: если экземпляр обладает большой инерцией, то вам потребуется большой крутящий момент, чтобы заставить его начать вращаться. Следует также отметить, что другие факторы, такие как гравитация и столкновения, также могут влиять на крутящий момент экземпляра. Вот изображение для пояснения:

-

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

-

-

Синтаксис:

-

physics_apply_torque(torque)

- - - - - - - - - - - -
АргументТипОписание
torqueThe torque (in Newton metres) to be applied
-

-

Возвращается:

-

-

-

Пример:

-

if keyboard_check(vk_left)
- {
-     physics_apply_torque(-100);
- }

-

Приведенный выше код будет вращать экземпляр против часовой стрелки (влево) с моментом 100 Нм при нажатии клавиши со стрелкой влево.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/Joints.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/Joints.htm index fc55ce1e1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/Joints.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/Joints.htm @@ -1,64 +0,0 @@ - - - - - - Суставы - - - - - - - - - - -

Суставы

-

В мире физики GameMaker шарниры используются для привязки объектов к миру или друг к другу. Типичными примерами в играх являются рэгдоллы, титеры и шкивы, но шарниры можно комбинировать различными способами для создания интересных движений или придания реализма вашему игровому миру.

-

ПРИМЕЧАНИЕ: Соединение не нужно удалять при уничтожении экземпляра, соединенного с другим экземпляром, также его не нужно удалять в конце комнаты. За исключением очень специфических случаев (см. шарнир шестеренки), поскольку GameMaker справляется с этим автоматически.

-

На следующих страницах описаны доступные соединения и способы их создания:

- -

-

После создания сустава часто бывает необходимо знать его свойства, чтобы изменять их в определенные моменты игры. Для проверки и изменения значений суставов доступны следующие функции (с соответствующими внутренними константами):

- -

-

Кроме того, вы можете использовать ряд констант в функциях GameMaker для получения (или установки) различных свойств определенных суставов. Все эти константы можно найти в следующем разделе:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/Physics_Joint_Constants.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/Physics_Joint_Constants.htm index e67076ecb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/Physics_Joint_Constants.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/Physics_Joint_Constants.htm @@ -1,319 +0,0 @@ - - - - - - Физика Совместные константы - - - - - - - - - - -

Физика Совместные константы

-

В GameMaker GML включено большое количество констант, специфичных для соединений между объектами в физическом мире. Их можно использовать в сочетании с различными функциями суставов для установки или получения информации от них в реальном времени во время работы физического моделирования. Однако следует помнить, что при их вызове выполняются сложные вычисления, поэтому их следует использовать с осторожностью и только при необходимости, а также учитывать, что многие из них уникальны для определенного типа соединений. Также обратите внимание, что хотя вы можете получить все эти значения с помощью соответствующей функции, вы можете установить только те, которые помечены как не доступные только для чтения.

-

В общем случае эти константы используются вместе со следующими функциями:

- -

-

-

Следующие константы могут быть применены к любому из имеющихся типов соединений:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Физика Совместная постоянная
ПостояннаяОписаниеТолько чтение
phy_joint_anchor_1_xКоордината x первой опорной точки сустава в помещенииYes
phy_joint_anchor_1_yКоордината y первой опорной точки сустава в помещенииYes
phy_joint_anchor_2_xКоордината x второй опорной точки сустава в помещенииYes
phy_joint_anchor_2_yКоордината y второй опорной точки сустава в помещенииYes
phy_joint_reaction_force_xЭто сила реакции, приложенная ко второму экземпляру в суставе в положении привязки xYes
phy_joint_reaction_force_yЭто сила реакции, приложенная ко второму экземпляру в суставе в положении привязки yYes
phy_joint_reaction_torqueЭто крутящий момент, прикладываемый ко второму экземпляру в суставе в положении якоряYes
-


- -

-

Эти константы предназначены для тех шарниров, к которым присоединен двигатель (револьверный, призматический, колесный):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Физика Совместная постоянная
ПостояннаяОписаниеТолько чтение
phy_joint_max_motor_forceЗначение, указанное при создании сустава для максимальной силы двигателяNo
phy_joint_max_motor_torqueЗначение, указанное при создании соединения для максимального крутящего момента двигателяNo
phy_joint_motor_forceТекущая сила двигателяYes
phy_joint_motor_speedТекущая скорость вращения двигателяNo
phy_joint_motor_torqueТекущий крутящий момент двигателяYes
-


- -

-

Для револьверного шарнира вы можете использовать следующую константу (а также константы двигателя, если он был добавлен):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Физика Совместная постоянная
ПостояннаяОписаниеТолько чтение
phy_joint_angleУгол, который образует линия между двумя опорными точками сустава. Вычисляется с помощью координат физического мира
- (не координаты комнаты GameMaker ) в радианах.
Да
phy_joint_angle_limitsВключите или отключите ограничение угла для сустава. Установите значение true для включения или false для отключения.Нет
phy_joint_upper_angle_limitВерхний предел угла для сустава в градусах.Нет
phy_joint_lower_angle_limitНижний предел угла для сустава в градусах.Нет
-


- -

-

Для призматического соединения можно использовать следующую константу:

- - - - - - - - - - - - - - - - - - - - - -
Физика Совместная постоянная
ПостояннаяОписаниеТолько чтение
phy_joint_translationПолучает расстояние между координатами x/y якоря и локальными координатами x/y.Yes
phy_joint_speedТекущая скорость движения сустава.Yes
-


- -

-

Для расстояния, сварного шва и колесных соединений можно использовать следующие константы (как и для шкивных соединений):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Физика Совместная постоянная
ПостояннаяОписаниеТолько чтение
phy_joint_damping_ratioКоэффициент демпфирования является безразмерным и определяет "пружинистость" соединения. Значение этой константы обычно находится в диапазоне от 0 до 1, но может быть и больше, а при значении 1 демпфирование является критическим, то есть все колебания должны исчезнуть.No
phy_joint_frequencyЭто вернет (или установит) частоту колебаний для сустава в герцах, и обычно частота должна быть меньше половины частоты временного шага, как установлено функцией physics_world_update_speed().No
phy_joint_length_1Это вернет длину сустава от первой локальной координаты x/y до первой якорной координаты x/y (только для суставов с расстоянием, можно только считать из)Yes
phy_joint_length_2Это вернет длину сустава от второй локальной координаты x/y до второй якорной координаты x/y (только для суставов с расстоянием, может быть записано только в)No
-


- -

-

Для фрикционного соединения можно использовать следующие константы:

- - - - - - - - - - - - - - - - - - - - - -
Физика Совместная постоянная
ПостояннаяОписаниеТолько чтение
phy_joint_max_torqueМаксимальное значение крутящего момента для соединения.No
phy_joint_max_forceМаксимальное значение силы для сустава.No
-


- -

-

Для веревочного соединения можно использовать следующую константу:

- - - - - - - - - - - - - - - - -
Физика Совместная постоянная
ПостояннаяОписаниеТолько чтение
phy_joint_max_lengthМаксимальное удлинение для соединения между двумя точками крепления.No
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_delete.htm index dff8c2722..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_delete.htm @@ -1,74 +0,0 @@ - - - - - - physics_joint_delete - - - - - - - - - - -

physics_joint_delete

-

После того как два экземпляра с физическими представлениями были связаны суставом, его можно удалить в любое время. Обычно это происходит автоматически, когда один из двух экземпляров уничтожается, или когда комната заканчивается, но бывают случаи, когда вы хотите сделать это вручную. В этих случаях можно воспользоваться данной функцией.

-

Следует также отметить, что при уничтожении экземпляра, являющегося частью зубчатого соединения, зубчатое соединение должно быть удалено с помощью этой функции раньше всех экземпляров, участвующих в формировании зубчатого соединения (но остальные соединения будут удалены автоматически), например, в событии destroy экземпляра.

-

-

Синтаксис:

-

physics_joint_delete(joint)

- - - - - - - - - - - - - -
АргументТипОписание
jointФизика Совместный идентификаторThe index of the joint that you wish to delete
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var reactionForceX, reactionForceY, reactionForce;
- if (shipJoint)
- {
-     _reaction_force_x = physics_joint_get_value(ship_joint, phy_joint_reaction_force_x);
-     _reaction_force_y = physics_joint_get_value(ship_joint, phy_joint_reaction_force_y);
-     _reaction_force = sqrt((_reaction_force_x + _reaction_force_x) + (_reaction_force_y + _reaction_force_y));
-     if (_reaction_force > 2)
-     {
-         physics_joint_delete(ship_joint);
-         ship_joint = -1;
-     }
- }

-

Приведенный выше код проверяет, содержит ли переменная "shipJoint" индекс сустава, и если да, то рассчитывает силу, приложенную к этому суставу, используя две константы. Наконец, если общая сила больше 2, сустав удаляется.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_distance_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_distance_create.htm index 7667c4c21..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_distance_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_distance_create.htm @@ -1,101 +0,0 @@ - - - - - - physics_joint_distance_create - - - - - - - - - - - -

physics_joint_distance_create

-

Одним из самых простых соединений является соединение расстояний, которое гласит, что расстояние между двумя точками на двух экземплярах должно быть постоянным. При задании соединения расстояния два экземпляра уже должны быть созданы и иметь назначенное крепление, затем определяются две опорные точки в комнатных координатах. Первая опорная точка связана с экземпляром 1, вторая опорная точка связана с экземпляром 2, а расстояние между этими точками подразумевает длину ограничения расстояния. На рисунке ниже показано, как это работает:

-

Как видно, точки привязки задаются в виде координат помещения, поэтому при их определении необходимо соблюдать осторожность, особенно если экземпляры создаются одновременно с суставами, а не размещаются в помещении через редактор помещений. Также следует понимать, что суставы создаются независимо от размера sprite экземпляров или прикрепленных к ним приспособлений. Поэтому, если вы создадите дистанционный шарнир не в начале координат экземпляра, он все равно будет действовать и ограничивать два экземпляра относительно позиции, в которой он был создан. Если установить значение "col" на true, то два экземпляра могут взаимодействовать и сталкиваться друг с другом, но только если у них есть события столкновения, однако если установить значение false, то они не будут сталкиваться независимо ни от чего.

-

-

Синтаксис:

-

physics_joint_distance_create(inst1, inst2, w_anchor1_x, w_anchor1_y, w_anchor2_x, w_anchor2_y, col)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
inst1Идентификатор экземпляраThe first instance to connect with the joint
inst2Идентификатор экземпляраThe second instance to connect with the joint
w_anchor1_xРеальноThe first x coordinate for the joint, within the game world
w_anchor1_yРеальноThe first y coordinate for the joint, within the game world
w_anchor2_xРеальноThe second x coordinate for the joint, within the game world
w_anchor2_yРеальноthe second y coordinate for the joint, within the game world
colБулевоWhether the two instances can collide (true) or not (false)
-

-

Возвращается:

-

Physics Joint ID

-

-

Пример:

-

var mainFixture, o_id;
- mainFixture = physics_fixture_create();
- physics_fixture_set_circle_shape(mainFixture, sprite_get_width(sprite_index) / 2);
- o_id=instance_create_layer(x+300, y, "Instances", obj_Rudder);
- physics_fixture_bind(mainFixture, id);
- physics_fixture_bind(mainFixture, o_id);
- physics_joint_distance_create(id, o_id, x + 50, y, o_id.x - 50, o_id.y, 0);
- physics_fixture_delete(mainFixture);

-

Приведенный выше код создает и определяет новое приспособление, а затем создает экземпляр "obj_Rudder". Затем приспособление назначается экземпляру, выполняющему код, а также вновь созданному экземпляру, и между ними создается соединение. Наконец, приспособление удаляется, поскольку оно больше не нужно.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_enable_motor.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_enable_motor.htm index a057efdf4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_enable_motor.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_enable_motor.htm @@ -1,76 +0,0 @@ - - - - - - physics_joint_enable_motor - - - - - - - - - - -

physics_joint_enable_motor

-

Если у вас есть шарнир с мотором(призматическим или револьверным), вы можете захотеть иметь возможность включать или выключать мотор в зависимости от переменных и условий в игре. Для этого необходимо предварительно сохранить индекс сустава в переменной, а затем включить или выключить двигатель, используя эту функцию и установив аргумент "motor" в true или false.

-

-

Синтаксис:

-

physics_joint_enable_motor(joint, motor)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
jointФизика Совместный идентификаторThe joint that you wish to enable or disable the motor on
motorБулевоWhether you wish to turn the motor on (true) or off (false)
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var t_fix = physics_fixture_create();
- physics_fixture_set_circle_shape(t_fix, sprite_get_width(sprite_index) / 2);
-
- var o_id = instance_create_layer(x+300, y, "Instances", obj_Door);
- physics_fixture_bind(t_fix, id);
- physics_fixture_bind(t_fix, o_id);
-
- perma_joint = physics_joint_revolute_create(id, o_id, x+25, y, -90, 90, 1, 10, 2, 0, 0);
- physics_joint_enable(perma_joint, 1);
- physics_fixture_delete(t_fix);

-

Приведенный выше код создает и определяет новое приспособление, а затем создает экземпляр "obj_Door", связывая созданное приспособление с двумя экземплярами. Затем они соединяются револьверным шарниром без двигателя, углы ограничены +/- 90 градусов, и мы сохраняем индекс шарнира в переменной "perma_joint". Затем мы включаем двигатель, используя эту переменную, и, наконец, удаляем приспособление из памяти, поскольку оно больше не нужно.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_friction_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_friction_create.htm index 23311c6b1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_friction_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_friction_create.htm @@ -1,101 +0,0 @@ - - - - - - physics_joint_friction_create - - - - - - - - - - - -

physics_joint_friction_create

-

Фрикционное соединение немного отличается от всех других соединений в физическом моделировании тем, что созданное соединение не будет ограничивать положение или движение экземпляра, а скорее его скорость и вращение. Для этого берутся максимальные входные значения силы и крутящего момента и применяются ко второму объекту, чтобы привести скорость и угловой момент к тем же значениям, что и у первого объекта. Таким образом, если у вас есть неподвижный экземпляр и подвижный экземпляр, а затем соединить их фрикционным шарниром, то подвижный экземпляр будет постепенно замедляться, пока тоже не станет неподвижным. Если оба экземпляра были движущимися, то скорость движения второго экземпляра будет изменена так, чтобы соответствовать скорости движения первого экземпляра.

-

Как и для большинства других соединений, вы предоставляете экземпляры, которые нужно соединить вместе, а также позицию, в которой будет создано соединение в комнате. Затем вы задаете максимальную силу и максимальный момент (направленное и вращательное трение), и если вы установите значение "col" true, то два экземпляра могут взаимодействовать и сталкиваться друг с другом, но только если у них есть события столкновения, однако если оно установлено на false, они не будут сталкиваться независимо ни от чего.

-

-

Синтаксис:

-

physics_joint_friction_create(inst1, inst2, anchor_x, anchor_y, max_force, max_torque, col)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
inst1Идентификатор экземпляраThe first instance to connect with the joint
inst2Идентификатор экземпляраThe second instance to connect with the joint
anchor_xРеальноThe x coordinate for the joint, within the game world
anchor_yРеальноThe y coordinate for the joint, within the game world
max_forceРеальноThe maximum frictional force that will be applied
max_torqueРеальноThe maximum rotational force that will be applied
colБулевоWhether the two instances can collide (true) or not (false)
-

-

Возвращается:

-

Physics Joint ID

-

-

Пример:

-

var mainFixture, o_id;
- mainFixture = physics_fixture_create();
- physics_fixture_set_circle_shape(mainFixture, sprite_get_width(sprite_index) / 2);
- o_id = instance_create_layer(x+300, y, "Instances", obj_Rudder);
- physics_fixture_bind(mainFixture, id);
- physics_fixture_bind(mainFixture, o_id);
- physics_joint_friction_create(id, o_id, x, y, 10, 0.3, true);
- physics_fixture_delete(mainFixture);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_gear_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_gear_create.htm index 23f1f7dab..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_gear_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_gear_create.htm @@ -1,100 +0,0 @@ - - - - - - physics_joint_gear_create - - - - - - - - - - - -

physics_joint_gear_create

-

Если вы хотите создать сложную механическую конструкцию, возможно, вам захочется использовать шестеренки. В принципе, вы можете создать шестеренки в GameMaker, используя составные экземпляры для моделирования зубьев шестеренок, но это не очень эффективно и может быть утомительным для автора! К счастью, существует более простой метод, который заключается в использовании зубчатого соединения. Для его создания необходимо предварительно определить приспособления и создать два основных шарнира, которые будут составлять шестерню - они должны состоять из одного револьверного шарнира и либо призматического шарнира, либо еще одного револьверного шарнира. На рисунке ниже показано, как обычно создается передача в игре:

-

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

-

ПРИМЕЧАНИЕ: Если вам нужно удалить один из двух экземпляров, участвующих в соединении передач (или просто удалить их соединения), то сначала нужно удалить соединение передач с помощью команды physics_joint_delete() иначе вы получите ошибку!

-

-

Синтаксис:

-

physics_joint_gear_create(inst1, inst2, joint_1, joint_2, ratio)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
inst1Идентификатор экземпляраThe first instance to connect with the joint
inst2Идентификатор экземпляраThe second instance to connect with the joint
joint_1РеальноA previously defined revolute joint
joint_2РеальноA previously defined revolute or prismatic joint
ratioРеальноSet the velocity ratio between the two joints
-

-

Возвращается:

-

Physics Joint ID

-

-

Пример:

-

var t_fix, g_fix, inst1, inst2, inst3, r_joint, p_joint;
- g_fix = physics_fixture_create();
- physics_fixture_set_box_shape(g_fix, 40, 10);
- t_fix = physics_fixture_create();
- physics_fixture_set_circle_shape(t_fix, 10);
- physics_fixture_set_density(t_fix, 0.5);
- inst1 = instance_create_layer(60, room_height - 30, "Background", obj_Ground);
- inst2 = instance_create_layer(40, room_height - 300, "Instances", obj_Cog);
- inst3 = instance_create_layer(150, room_height - 300, "Instances", obj_Barrel);
- physics_fixture_bind(g_fix, inst1);
- physics_fixture_bind(t_fix, inst2);
- physics_fixture_bind(t_fix, inst3);
- r_joint = physics_revolute_joint_create(inst1, inst2, 40, room_height - 300, -80, 80, 1, 10, 0.5, 1, 0);
- p_joint = physics_prismatic_joint_create(inst1, inst3, 150, room_height - 300, 0, 1, -10, 10, true, 0, 0, 0, 0);
- physics_joint_gear_create(inst2, inst3, r_joint, p_joint, 0.5); -

-

Приведенный выше код создает и определяет два приспособления, а затем создает три экземпляра, один "obj_Ground" и два других, "obj_Cog" и "obj_Barrel". Затем приспособления привязываются к этим экземплярам и создаются два шарнира. Револьверное соединение между землей и зубчатым колесом и призматическое соединение между землей и стволом. Наконец, между экземплярами зубчатого колеса и ствола создается зубчатое соединение с использованием ранее определенных револьверного и призматического соединений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_get_value.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_get_value.htm index a8118d577..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_get_value.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_get_value.htm @@ -1,79 +0,0 @@ - - - - - - physics_joint_get_value - - - - - - - - - - - -

physics_joint_get_value

-

Используя ряд предопределенных констант, вы можете попросить GameMaker сообщить вам ряд сведений о состоянии любого сустава. Это очень полезно, поскольку дает вам возможность удалять суставы или изменять поведение экземпляров в зависимости от ваших потребностей на данный момент. Существует ряд констант, которые можно использовать в этой функции, и их можно найти здесь: Physics Joint Constants, но имейте в виду, что при их вызове производятся сложные вычисления, поэтому их следует использовать с осторожностью и только при необходимости, и учтите, что многие из них уникальны для определенного типа суставов.

-

Если свойство не существует (например, если вы проверяете шарнир шкива на призматический перевод), то возвращаемым значением будет 0.

-

-

Синтаксис:

-

physics_joint_get_value(joint, value)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
jointФизика Совместный идентификаторThe index of the joint that you wish to test
valueФизика Совместная постояннаяThe constant for the joint property that you wish to test
-

-

Возвращается:

-

Real

-

-

Пример:

-

if shipJoint
- {
-     var reactionForceX = physics_joint_get_value(shipJoint, phy_joint_reaction_force_x);
-     var reactionForceY = physics_joint_get_value(shipJoint, phy_joint_reaction_force_y);
-     var reactionForce = point_distance(0, 0, reactionForceX, reactionForceY);
-     if (reactionForce > 2)
-     {
-         physics_joint_delete(shipJoint);
-         shipJoint = -1;
-     }
- }

-

Приведенный выше код проверяет, содержит ли переменная "shipJoint" индекс сустава, и если да, то рассчитывает силу, приложенную к этому суставу, используя две константы. Наконец, если общая сила больше 2, сустав удаляется.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_prismatic_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_prismatic_create.htm index 5bc2c5b7d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_prismatic_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_prismatic_create.htm @@ -1,133 +0,0 @@ - - - - - - physics_joint_prismatic_create - - - - - - - - - - - -

physics_joint_prismatic_create

-

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

-

У нас есть два экземпляра, соединенные в точке привязки, с осью для движения, определенной из вектора двух координат w_axis x/y относительно координат (0,0) физического мира (таким образом, компонент x равен 0, а компонент y равен 1 (0,1), что делает шарнир вертикальным призматическим шарниром). Затем этот шарнир может двигаться только относительно этой оси, как пружина или поршень. Если вы устанавливаете нижний или верхний предел перемещения, вы, по сути, ограничиваете количество движения вдоль этой оси, где позиция 0 - это точное место, которое вы определили с помощью w_anchor x/y, поэтому отрицательное значение будет двигаться "влево" от этой точки вдоль оси, а положительное - "вправо", как показано на следующей диаграмме (поймите, что "влево" и "вправо" - это относительные понятия!)

-

Вы также можете определить, есть ли у сустава двигатель или нет. Это означает, что при отсутствии влияния столкновения сустав будет двигаться в направлении вдоль оси. Это направление определяется скоростью двигателя, причем положительное число направлено к координатам оси ("вправо"), а отрицательное - к точке привязки ("влево"). Аргумент "max_motor_force" предназначен для ограничения скорости движения, чтобы не получить вечно ускоряющийся двигатель и ограничить влияние, которое столкновение может оказать на движение. Таким образом, вы можете использовать суставной двигатель для имитации трения в суставах, установив скорость движения сустава на ноль, а максимальную силу на некоторое небольшое, но значительное значение. Двигатель будет пытаться предотвратить движение сустава, но уступит при значительной нагрузке.

-

Как и со всеми суставами, если вы установите значение "col" true, то два экземпляра могут взаимодействовать и сталкиваться друг с другом, но только если у них есть события столкновения, однако если установлено значение false, то они не будут сталкиваться независимо ни от чего.

-

-

Синтаксис:

-

physics_joint_prismatic_create(inst1, inst2, w_anchor_x, w_anchor_y, w_axis_x, w_axis_x, lower_trans_limit, upper_trans_limit, limit, max_motor_force, motor_speed, motor, col)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
inst1Идентификатор экземпляраThe first instance to connect with the joint
inst2Идентификатор экземпляраThe second instance to connect with the joint
w_anchor_xРеальноThe x coordinate where the joint is anchored, within the game world
w_anchor_yРеальноThe y coordinate where the joint is anchored, within the game world
w_axis_xРеальноThe x component of the axis vector
w_axis_yРеальноThe y component of the axis vector
lower_trans_limitРеальноThe lower permitted limit for the joint movement
upper_trans_limitРеальноThe lower permitted limit for the joint movement
limitБулевоWhether to limit the movement of the joint (true) or not (false)
max_motor_forceРеальноSets the maximum movement speed for the motor
motor_speedРеальноThis is the speed at which the motor should move
motorБулевоWhether the motor should be active (true) or not (false)
colБулевоWhether the two instances can collide (true) or not (false)
-

-

Возвращается:

-

Physics Joint ID

-

-

Пример:

-

var mainFixture, o_id;
- mainFixture = physics_fixture_create();
- physics_fixture_set_circle_shape(mainFixture, sprite_get_width(sprite_index) / 2);
- o_id = instance_create_layer(x+25, y, "Instances", obj_Piston);
- physics_fixture_bind(mainFixture, id);
- physics_fixture_bind(mainFixture, o_id);
- physics_joint_prismatic_create(id, o_id, x, y, 0, 10, 0, 0, 0, 5, 0, 1, 1);
- physics_fixture_delete(mainFixture);

-

Приведенный выше код создает и определяет новое приспособление, а затем создает экземпляр "obj_Piston", привязывая созданное приспособление к двум новым объектам. Затем они соединяются призматическим шарниром с положением якоря в тех же координатах x/y первого экземпляра и осью, образованной вектором положения x/y и осью x/y (в данном случае 0,10, что означает "вниз"). На количество движений вдоль этой оси нет ограничений, но мы добавили двигатель с 0 скоростью и максимальной силой 5, чтобы имитировать трение в суставе.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_pulley_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_pulley_create.htm index b2a05a5a6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_pulley_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_pulley_create.htm @@ -1,128 +0,0 @@ - - - - - - physics_joint_pulley_create - - - - - - - - - - - -

physics_joint_pulley_create

-

Шарнир шкива используется для соединения двух экземпляров в физическом мире таким образом, что перемещение одного из них непосредственно влияет на движение другого. Эти шарниры сначала закрепляются в мировом пространстве в двух точках, каждая из которых связана с экземпляром в его центре масс. Это можно изменить, задав локальные координаты привязки x/y относительно начала координат экземпляра, что означает, что фактическое соединение экземпляра с точкой привязки физического мира может быть смещено куда-то, кроме его начала координат. Следующее изображение иллюстрирует это:

-

Если вы посмотрите на inst2, то увидите, что его локальная точка привязки была смещена на 20 пикселей влево от начала координат (Помните! Мировые точки привязки определяются с помощью координат комнаты, а локальные точки привязки определяются относительно начала координат экземпляра). Вы также можете задать коэффициент для шарнира шкива, который указывает одной или другой стороне двигаться быстрее: значение меньше 1 заставляет первый экземпляр двигаться быстрее (например, 0,5 заставит его двигаться вдвое быстрее), а значение больше 1 заставляет второй экземпляр двигаться быстрее (например, 2 заставит его двигаться вдвое быстрее).

-

Как и со всеми суставами, если вы установите значение "col" true, то два экземпляра могут взаимодействовать и сталкиваться друг с другом, но только если у них есть события столкновения, однако если установлено значение false, то они не будут сталкиваться независимо ни от чего.

-

-

Синтаксис:

-

physics_joint_pulley_create(inst1, inst2, w_anchor1_x, w_anchor1_y, w_anchor2_x, w_anchor2_y, l_anchor1_x, l_anchor1_y, l_anchor2_x, l_anchor2_y, ratio, col)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
inst1Идентификатор экземпляраThe first instance to connect with the joint
inst2Идентификатор экземпляраThe second instance to connect with the joint
w_anchor1_xРеальноThe x coordinate where the first part of joint is anchored, within the game world
w_anchor1_yРеальноThe y coordinate where the first part of the joint is anchored, within the game world
w_anchor2_xРеальноThe x coordinate where the second part of the joint is anchored, within the game world
w_anchor2_yРеальноThe y coordinate where the second part of the joint is anchored, within the game world
l_anchor1_xРеальноThe local x coordinate where joint 1 is anchored to the first instance
l_anchor1_yРеальноThe local y coordinate where joint 1 is anchored to the first instance
l_anchor2_xРеальноThe local x coordinate where joint 2 is anchored to the second instance
l_anchor2_yРеальноThe local y coordinate where joint 2 is anchored to the second instance
ratioРеальноSet the velocity ratio between two instances
colБулевоWhether the two instances can collide (true) or not (false)
-

-

Возвращается:

-

Physics Joint ID

-

-

Пример:

-

var t_fix, inst1, inst2;
- t_fix = physics_fixture_create();
- physics_fixture_set_circle_shape(t_fix, 20);
- inst1 = instance_create_layer(150, room_height - 90, "Instances", obj_block);
- inst2 = instance_create_layer(300, room_height - 90, "Instances", obj_block);
- physics_fixture_bind(t_fix, inst1);
- physics_fixture_bind(t_fix, inst2);
- physics_joint_pulley_create(inst1, inst2, 150, room_height - 140, 300, room_height - 140, 0, 0, 0, 0, 2, 0);
- physics_fixture_delete(t_fix);

-

Приведенный выше код создает и определяет новое приспособление, создает два экземпляра "obj_Block", а затем связывает это приспособление с ними. Затем определяется соединение шкива между этими экземплярами, без смещения для соединений, с соотношением 2:1 (это означает, что экземпляр 2 будет двигаться быстрее). Никаких столкновений между двумя экземплярами в шкиве не происходит.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_revolute_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_revolute_create.htm index 106993061..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_revolute_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_revolute_create.htm @@ -1,123 +0,0 @@ - - - - - - physics_joint_revolute_create - - - - - - - - - - - -

physics_joint_revolute_create

-

Револьверное соединение заставляет два тела иметь общую точку привязки (часто называемую точкой шарнира), и соединение имеет одну степень свободы - относительное вращение двух тел вокруг этой точки. Для задания револьверного шарнира необходимо указать два экземпляра и одну точку привязки в комнате, как показано на представленном изображении:

-

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

-

Как вы видите, углы в мире физики - это не то же самое, что стандартные углы GameMaker, где право - это 0 градусов, а затем все идет против часовой стрелки, так что вверх - это 90, влево - 180, а вниз - 270. Нет, при работе с револьверным шарниром ось 0 градусов проходит от положения шарнира до начала второго экземпляра, определяемого функцией, а углы затем вычисляются по часовой стрелке. Если вы включите ограничение углов, то пределы будут определены относительно этой оси 0 градусов, а диапазон пределов должен включать ноль, иначе шарнир будет крениться, когда начнется комната. Наконец, вы можете определить, есть ли у шарнира двигатель или нет. Это означает, что при отсутствии влияния столкновения сустав будет двигаться в направлении, которое определяется скоростью двигателя: положительное число означает движение по часовой стрелке, а отрицательное - против часовой стрелки. Аргумент "max_motor_torque" предназначен для ограничения скорости вращения, чтобы не получить вечно ускоряющийся двигатель и ограничить влияние, которое столкновение может оказать на вращение. Таким образом, вы можете использовать суставной двигатель для имитации трения в суставах, установив скорость вращения сустава на ноль, а максимальный крутящий момент на какое-то небольшое, но значительное значение. Двигатель будет пытаться предотвратить вращение сустава, но уступит при значительной нагрузке.

-

Как и со всеми суставами, если вы установите значение "col" true, то два экземпляра могут взаимодействовать и сталкиваться друг с другом, но только если у них есть события столкновения, однако если установлено значение false, то они не будут сталкиваться независимо ни от чего.

-

-

Синтаксис:

-

physics_joint_revolute_create(inst1, inst2, w_anchor_x, w_anchor_y, ang_min_limt, ang_max_limit, ang_limit, max_motor_torque, motor_speed, motor, col)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
inst1Идентификатор экземпляраThe first instance to connect with the joint
inst2Идентификатор экземпляраThe second instance to connect with the joint
w_anchor_xРеальноThe x coordinate for the joint, within the game world
w_anchor_yРеальноThe y coordinate for the joint, within the game world
ang_min_limitРеальноThe lower permitted limit for the joint angle
ang_max_limitРеальноThe upper permitted limit for the joint angle
ang_limitБулевоWhether the to limit the angle of the joint (true) or not (false)
max_motor_torqueРеальноSets the maximum motor torque used to achieve the desired motor speed (in Newtons per meter)
motor_speedРеальноThis is the speed at which the motor should rotate
motorБулевоWhether the motor should be active (true) or not (false)
colБулевоWhether the two instances can collide (true) or not (false)
-

-

Возвращается:

-

Physics Joint ID

-

-

Пример:

-

var mainFixture, o_id;
- mainFixture = physics_fixture_create();
- physics_fixture_set_circle_shape(mainFixture, sprite_get_width(sprite_index) / 2);
- o_id=instance_create_layer(x+25, y, "Instances", obj_Door);
- physics_fixture_bind(mainFixture, id);
- physics_fixture_bind(mainFixture, o_id);
- physics_joint_revolute_create(id, o_id, x+25, y, -90, 90, 1, 0, 0, 0, 0);
- physics_fixture_delete(mainFixture);

-

Приведенный выше код создает и определяет новое приспособление, а затем создает экземпляр "obj_Door", привязывая созданное приспособление к двум новым объектам. Затем они соединяются револьверным шарниром без двигателя, а углы ограничены +/- 90 градусов. Наконец, приспособление удаляется, поскольку в нем больше нет необходимости.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_rope_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_rope_create.htm index a59bb3bc4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_rope_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_rope_create.htm @@ -1,106 +0,0 @@ - - - - - - physics_joint_rope_create - - - - - - - - - - - -

physics_joint_rope_create

-

Веревочное соединение используется для соединения двух экземпляров, которые должны находиться на постоянном расстоянии друг от друга, независимо от того, какие силы действуют на них. При использовании дистанционного соединения можно получить "растяжение соединения", при котором два приспособления будут разъединяться и вести себя странно, если на соединение будет оказываться слишком большая нагрузка, однако веревочное соединение не делает этого и не растягивается дальше максимальной заданной длины. При создании веревочного соединения два экземпляра уже должны быть созданы и иметь назначенное крепление, затем определяются две точки привязки в координатах помещения. Первая точка привязки соединяется с экземпляром 1, вторая точка привязки соединяется с экземпляром 2, а аргументы distance и maxlength задают ограничение максимальной длины соединения. На рисунке ниже показано, как это работает:

-

Как видно, точки привязки задаются в виде координат помещения, поэтому при их определении необходимо соблюдать осторожность, особенно если экземпляры создаются одновременно с суставами, а не размещаются в помещении через редактор помещений. Также следует понимать, что суставы создаются независимо от размера sprite экземпляров или прикрепленных к ним приспособлений. Поэтому, если вы создадите веревочный шарнир не в начале координат экземпляра, он все равно будет действителен и будет ограничивать два экземпляра относительно позиции, в которой он был создан. Если вы установите значение "col" на true, два экземпляра могут взаимодействовать и сталкиваться друг с другом, но только если у них есть события столкновения, однако если значение установлено на false, они не будут сталкиваться независимо ни от чего.

-

-

Синтаксис:

-

physics_joint_rope_create(inst1, inst2, w_anchor1_x, w_anchor1_y, w_anchor2_x, w_anchor2_y, maxlength, col)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
inst1Идентификатор экземпляраThe first instance to connect with the joint
inst2Идентификатор экземпляраThe second instance to connect with the joint
w_anchor1_xРеальноThe first x coordinate for the joint, within the game world
w_anchor1_yРеальноThe first y coordinate for the joint, within the game world
w_anchor2_xРеальноThe second x coordinate for the joint, within the game world
w_anchor2_yРеальноthe second y coordinate for the joint, within the game world
maxlengthРеальноThe maximum length that the joint can "stretch"
colБулевоWhether the two instances can collide (true) or not (false)
-

-

Возвращается:

-

Physics Joint ID

-

-

Пример:

-

var mainFixture, o_id;
- mainFixture = physics_fixture_create();
- physics_fixture_set_circle_shape(mainFixture, sprite_get_width(sprite_index) / 2);
- o_id=instance_create_layer(x+300, y, "Instances", obj_Rudder);
- physics_fixture_bind(mainFixture, id);
- physics_fixture_bind(mainFixture, o_id);
- physics_joint_rope_create(id, o_id, x + 50, y, o_id.x - 50, o_id.y, 300, 0);
- physics_fixture_delete(mainFixture);

-

Приведенный выше код создает и определяет новое приспособление, а затем создает экземпляр "obj_Rudder". Затем приспособление назначается экземпляру, выполняющему код, а также вновь созданному экземпляру, и между ними создается канатное соединение. Наконец, приспособление удаляется, так как оно больше не нужно.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_set_value.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_set_value.htm index c03c382cd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_set_value.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_set_value.htm @@ -1,75 +0,0 @@ - - - - - - physics_joint_set_value - - - - - - - - - - -

physics_joint_set_value

-

Некоторые свойства сустава могут быть изменены и заданы даже после его создания. Существует ряд констант, которые могут быть использованы в этой функции, и их можно найти здесь: Physics Joint Constants.

-

-

Синтаксис:

-

physics_joint_set_value(joint, field, value)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
jointФизика Совместный идентификаторThe index of the joint that you wish to change
fieldФизика Совместная постояннаяThe constant for the joint property that you wish to change
valueРеальноThe new value for the joint property
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if physics_joint_get_value(revJoint, phy_joint_max_motor_torque) < 2
- {
-     physics_joint_set_value(revJoint, phy_joint_max_motor_torque, 2);
- }

-

Приведенный выше код проверяет, установлен ли максимальный крутящий момент двигателя суставов меньше 2, и если да, то устанавливает его равным 2.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_weld_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_weld_create.htm index 9f62bab0f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_weld_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_weld_create.htm @@ -1,116 +0,0 @@ - - - - - - physics_joint_weld_create - - - - - - - - - - - -

physics_joint_weld_create

-

Сварное соединение предназначено для прочного, но гибкого соединения двух приспособлений. Сварное соединение допускает изгиб между двумя соединенными крепежными элементами, но без растяжения, связанного, например, с дистанционным соединением, и всегда будет пытаться "пружинить", возвращаясь к исходному углу при любой нагрузке или напряжении. Вы определяете точку в помещении, где должен быть создан шов, а также угол, который вы хотите, чтобы шов постоянно поддерживался, как показано на рисунке ниже:

-

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

-

Поскольку сварное соединение гибкое и будет сгибаться и разгибаться при любом напряжении, вы можете установить частоту колебаний (в Гц), а также коэффициент демпфирования для соединения, чтобы получить различные эффекты - вам может потребоваться поиграть с этими значениями, чтобы точно настроить их, и рекомендуется начать с меньших значений и увеличивать их, пока вы не получите желаемый эффект.

-

Если установить значение "col" на true, то два экземпляра могут взаимодействовать и сталкиваться друг с другом, но только если у них есть события столкновения, однако если установить значение false, то они не будут сталкиваться независимо ни от чего.

-

-

Синтаксис:

-

physics_joint_weld_create(inst1, inst2, anchor_x, anchor_y, ref_angle, freq_hz, damping_ratio, col)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
inst1Идентификатор экземпляраThe first instance to connect with the joint
inst2Идентификатор экземпляраThe second instance to connect with the joint
anchor_xРеальноThe x coordinate for the joint, within the game world
anchor_yРеальноThe y coordinate for the joint, within the game world
ref_angleРеальноThe joint angle to maintain
freq_hzРеальноThis is the oscillation frequency for the joint, in hertz
damping_ratioРеальноThis damping ratio for the joint
colБулевоWhether the two instances can collide (true) or not (false)
-

-

Возвращается:

-

Physics Joint ID

-

-

Пример:

-

var i, fix, o_id, p_id;
- p_id = noone;
- o_id = noone;
- fix = physics_fixture_create();
- physics_fixture_set_box_shape(fix, 64, 32);
- for (i = 0; i < 5; i++)
- {
-     _o_id = instance_create_layer(x + (128 * i), y, "Instances", obj_bridge_part);
-     _o_id.fix_bound = physics_fixture_bind(_fix, _o_id);
-     if (i > 0)
-     {
-         physics_joint_weld_create(_p_id, _o_id, x + (128 * i) - 64, y, 0, 10, 12, true);
-     }
-     _p_id = _o_id;
- }
- physics-fixture_delete(fix);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_wheel_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_wheel_create.htm index d98de2574..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_wheel_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Joints/physics_joint_wheel_create.htm @@ -1,129 +0,0 @@ - - - - - - physics_joint_wheel_create - - - - - - - - - - - -

physics_joint_wheel_create

-

Колесный шарнир просто объединяет поршневой и револьверный шарниры, как колесо, установленное на амортизаторе автомобиля. Вы указываете опорную точку для шарнира, а также два экземпляра шарнира с поддержкой физики. Первый экземпляр будет действовать как "тело" шарнира, а второй - как "колесо", и ему будет позволено свободно перемещаться вокруг оси шарнира. Можно также задать осевой вектор - воображаемую линию, вдоль которой шарнир будет действовать как "пружина", позволяя колесу подпрыгивать вверх и вниз, сталкиваясь с препятствиями (подобно поршневому шарниру). Следующее изображение иллюстрирует это:

-

Если вы решите включить двигатель, то второй экземпляр будет вращаться вокруг положения якоря, и вы можете задать максимальный крутящий момент двигателя, используемый для достижения желаемой скорости вращения двигателя (Н/м), а также скорость, с которой двигатель должен вращаться. Поскольку колесный шарнир также имеет ось, вдоль которой он может двигаться, вы можете установить частоту колебаний (в Гц), а также коэффициент демпфирования для шарнира - вам может понадобиться поиграть с этими значениями, чтобы точно настроить их, и рекомендуется начать с меньших значений и увеличивать их до тех пор, пока вы не добьетесь желаемого эффекта.

-

Как и со всеми суставами, если вы установите значение "col" true, то два экземпляра могут взаимодействовать и сталкиваться друг с другом, но только если у них есть события столкновения, однако если установлено значение false, то они не будут сталкиваться независимо ни от чего.

-

-

Синтаксис:

-

physics_joint_wheel_create(inst1, inst2, anchor_x, anchor_y, axis_x, axis_y, enableMotor, max_motor_torque, motor_speed, freq_hz, damping_ratio, col)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
inst1Идентификатор экземпляраThe first instance to connect with the joint
inst2Идентификатор экземпляраThe second instance to connect with the joint
anchor_xРеальноThe x coordinate where the joint is anchored, within the game world
anchor_yРеальноThe y coordinate where the joint is anchored, within the game world
axis_xРеальноThe x component of the wheel axis vector
axis_yРеальноThe y component of the wheel axis vector
enableMotorБулевоWhether the motor should be active (true) or not (false)
max_motor_torqueРеальноSets the maximum motor torque used to achieve the desired motor speed (in Newtons per meter)
motor_speedРеальноThis is the speed at which the motor should rotate
freq_hzРеальноThis is the oscillation frequency for the joint, in hertz
damping_ratioРеальноThis damping ratio for the joint
colЦветWhether the two instances can collide (true) or not (false)
-

-

Возвращается:

-

Physics Joint ID

-

-

Пример:

-

var mainFixture = physics_fixture_create();
- physics_fixture_set_box_shape(mainFixture, 128, 32);
- var wheelFixture = physics_fixture_create();
- physics_fixture_set_circle_shape(wheelFixture, 32);
- var o_id = instance_create_layer(x+25, y + 100, "Instances", obj_Wheel);
- physics_fixture_bind(mainFixture, id);
- physics_fixture_bind(wheelFixture, o_id);
- physics_joint_wheel_create(id, o_id, o_id.x, o_id.y, 0, 1, true, 10, 1, 15, 6, false);
- physics_fixture_delete(mainFixture);
- physics_fixture_delete(wheelFixture);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics.htm index ab2f60af9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics.htm @@ -1,66 +0,0 @@ - - - - - - Физика - - - - - - - - - - -

Физика

-

Интеграция специальной библиотеки физики в GameMaker означает, что теперь вы можете взять под контроль все аспекты физического поведения объектов в вашем игровом мире, в частности, столкновения и взаимодействие объектов. Традиционная система столкновений (которую GameMaker использует по умолчанию) - это "реактивная" система, где вы проверяете столкновение и затем реагируете на него с помощью кода, который вы размещаете в отдельных объектах. Это хорошо подходит для простых игр, но когда у вас есть большое количество объектов и вам нужно написать, как все они реагируют на различные ситуации в игровом мире, быстро становится очевидно, что этой системы просто недостаточно. Тогда вам придется обратиться к системе физики GameMaker.

-

Система физики работает совсем не так, как обычные столкновения. Это скорее "пассивная" система, в которой вы определяете ряд свойств для ваших объектов в игровом мире, а также свойства самого игрового мира, прежде чем произойдет какое-либо столкновение или взаимодействие. Эти закодированные "правила" затем будут управлять тем, как все в вашем игровом мире взаимодействует. Таким образом, с помощью нескольких простых кодов и правильной настройки комнаты вы можете создавать очень сложные взаимодействия между объектами и миром, которые будут происходить и разрешаться без необходимости кодировать каждый возможный исход.

-

Есть несколько моментов, которые следует учитывать при работе с физическим миром GameMaker:

-
    -
  • Физическая система существует "отдельно" от основной структуры комнат и экземпляров GameMaker, что означает, что ее тайминги и функции не обязательно привязаны к скорости комнаты и порядку шагов, как все остальное.
  • -
  • Система физики заменяет многие обычные функции экземпляра... например, вместо того чтобы задавать скорость и направление для экземпляра, если он был объявлен как полностью симулированное физическое тело, вы будете использовать силу или импульс, чтобы заставить его двигаться в игровом мире, или, если он не поддерживает физику, вам придется самостоятельно задавать положения x и y. К этому нужно немного привыкнуть, поэтому поэкспериментируйте с функциями физики и узнайте, как все работает, прежде чем пытаться интегрировать их в свой проект.
  • -
  • Следует ограничить количество создаваемых экземпляров, а также количество столкновений и групп столкновений, с которыми приходится иметь дело миру физики. Вы не можете иметь тысячи экземпляров с физическими свойствами и столкновениями и ожидать, что все будет работать нормально, поскольку физика требует довольно интенсивных вычислений, поэтому ограничьте себя и оптимизируйте там, где это возможно.
  • -
  • При настройке столкновений используйте родительские объекты как можно чаще, поскольку система столкновений имеет ограниченное количество битов столкновений, которые можно назначить объектам, чтобы Box2D обнаружил столкновения. Например, если у вас есть пять различных объектов стен, не проверяйте пять столкновений, а создайте родительский объект и назначьте его пяти стенам, а затем проверьте ОДНО столкновение с родительским объектом. Физические свойства объектов не наследуются, только столкновения. Таким образом, вы сможете оптимизировать свою игру и избежать ошибок.
  • -
  • Старайтесь не перемещать экземпляры из одной точки комнаты в другую каким-либо другим способом, кроме как с помощью функций физики (т.е. не задавайте координаты x/y вручную). Хотя это можно сделать и в некоторых обстоятельствах это может быть необходимо, обычно этого следует избегать из-за непредсказуемых результатов, которые это может иметь для физического движка, особенно при попытке разрешить столкновения.
  • -
  • Следует быть осторожным при привязке фикстур, поскольку они могут быть привязаны к объектам и экземплярам независимо друг от друга. Это означает, что если вы привяжете фикстуру к (например) "o_Wall", то все экземпляры этого объекта получат фикстуру. Если вы хотите привязать приспособление только к одному экземпляру, используйте идентификатор этого экземпляра в соответствующей функции.
  • -
  • Пожалуйста, имейте в виду, что из-за различий в точности плавающей точки вы можете обнаружить, что версии вашей игры для различных целевых платформ могут демонстрировать поведение, незначительно отличающееся от стандартной версии Windows, хотя каждая версия будет самосогласованной при последующих выполнениях.
  • -
  • Для предотвращения нестабильности в физическом моделировании Box2D ограничивает до верхних пределов величину, на которую тело может вращаться и перемещаться в рамках одного обновления. Очевидные ограничения зависят от точности физического моделирования в соответствии с количеством обновлений и скоростью обновления физического мира, а также в соответствии с масштабированием физического мира. Это означает, что (например) если скорость обновления мира равна 60, максимальная скорость движения будет равна 20.
  • -
-

Информацию о функциях физики можно найти на следующих страницах:

- -

-

Наконец, есть несколько специальных функций физики, которые могут быть полезны для более сложных физических симуляций. Первая предназначена для проверки возможных столкновений в определенной точке комнаты, а вторая - для генерации пользовательских свойств массы и инерции в экземпляре:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/Physics_Variables.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/Physics_Variables.htm index 95640d5e3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/Physics_Variables.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/Physics_Variables.htm @@ -1,77 +0,0 @@ - - - - - - Физические переменные - - - - - - - - - - -

Физические переменные

-

Как и в "традиционной" системе столкновений и движения, в системе физики также есть ряд переменных экземпляра, назначаемых каждому экземпляру объекта при его создании. Некоторые из этих свойств могут быть определены пользователем в GML, но многие из них доступны только для чтения, а многие применимы только в событии столкновения.

-

Следующие переменные существуют во всех объектах с поддержкой физики, и их можно читать и записывать (т.е. изменять) с помощью кода из экземпляров и скриптовых функций:

- -

-

Некоторые переменные являются переменными только для чтения, что означает, что информация, которую они содержат, не может быть изменена с помощью кода экземпляра или скриптовых функций (но она может быть изменена внутри GameMaker, поэтому они являются переменными, а не константами). В следующем списке представлены переменные, доступные только для чтения, которые существуют во всех объектах с поддержкой физики:

- -

-

Наконец, существует ряд временных переменных, которые существуют в объектах с поддержкой физики и создаются только в событии столкновения. Эти переменные подобны перечисленным выше и доступны только для чтения:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_active.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_active.htm index 7a085792a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_active.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_active.htm @@ -1,55 +0,0 @@ - - - - - - phy_active - - - - - - - - - - -

phy_active

-

Эта переменная контролирует, является ли экземпляр в данный момент "активным". Если установить значение false, то экземпляр не будет участвовать в физическом мире, а если установить значение true, то он снова будет участвовать. Обратите внимание, что это не то же самое, что деактивация экземпляра, так как экземпляр все еще виден на экране и может быть изменен с помощью кода, скорее эта функция просто предотвращает его участие в физическом моделировании.

-

-

Синтаксис:

-

phy_active

-

-

Возвращается:

-

(or undefined if the instance is not physics enabled)

-

-

Пример:

-

if keyboard_check_pressed(ord"P")
- {
-     global.Pause = !global.Pause;
-     with (obj_Parent)
-     {
-         phy_active = !global.Pause;
-     }
- }

-

Приведенный выше код обнаружит нажатие клавиши с буквой "P" и переключит глобальную переменную "Pause" с true на false и обратно. Эта переменная затем используется для установки того, активна или нет физика в дочерних экземплярах объекта, проиндексированных в переменной "obj_Parent".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_angular_damping.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_angular_damping.htm index 4038fdb94..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_angular_damping.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_angular_damping.htm @@ -1,55 +0,0 @@ - - - - - - phy_angular_damping - - - - - - - - - - -

phy_angular_damping

-

Эта переменная может быть использована для установки углового демпфирования экземпляра или для получения текущего углового демпфирования. Демпфирование - это величина "сопротивления" угловому вращению, которое оказывает экземпляр с включенной физикой. Меньшее значение позволяет экземпляру вращаться быстрее после столкновения (например), а большее значение требует более сильного толчка и вращается медленнее.

-

-

Синтаксис:

-

phy_angular_damping

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

if place_meeting(phy_position_x, phy_position_y, obj_Water)
- {
-     phy_angular_damping = 10;
- }
- else
- {
-     phy_angular_damping = 3;
- }

-

Приведенный выше код проверит столкновение между вызывающим экземпляром и экземплярами "obj_Water" и соответствующим образом изменит угловое затухание.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_angular_velocity.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_angular_velocity.htm index f90f10244..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_angular_velocity.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_angular_velocity.htm @@ -1,55 +0,0 @@ - - - - - - phy_angular_velocity - - - - - - - - - - -

phy_angular_velocity

-

Эта переменная может быть использована для установки угловой скорости экземпляра или для получения текущей угловой скорости в градусах в секунду, причем используемое значение может быть как положительным (для вращения по часовой стрелке), так и отрицательным (для вращения против часовой стрелки). Если задать это значение для экземпляра, который ранее был статичным (т.е. имел плотность 0), он станет кинематическим объектом и начнет вращаться.

-

-

Синтаксис:

-

phy_angular_velocity

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

if abs(phy_angular_velocity) > 0
- {
-     phy_angular_velocity -= sign(phy_angular_velocity) * 0.01;
- }
- else
- {
-     phy_angular_velocity = 0;
- }

-

Приведенный выше код проверит угловую скорость экземпляра и, если она не равна 0, то будет добавлять (или вычитать) небольшую величину каждый шаг, пока значение не станет равным 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_bullet.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_bullet.htm index 3a8656e1e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_bullet.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_bullet.htm @@ -1,52 +0,0 @@ - - - - - - phy_bullet - - - - - - - - - - -

phy_bullet

-

Эта переменная определяет, является ли экземпляр чрезвычайно быстро движущимся (например, пуля). Значение по умолчанию - false, но если установить значение true, это сообщит GameMaker, что экземпляр будет двигаться с такой высокой скоростью, что ему потребуется более дорогостоящее обнаружение столкновений, чтобы убедиться, что он не пройдет через другие экземпляры незамеченным.

-

-

Синтаксис:

-

phy_bullet

-

-

Возвращается:

-

(or undefined if the instance is not physics enabled)

-

-

Пример:

-

with (instance_create_layer(x, y, "Bullets", obj_Shoot))
- {
-     phy_bullet = true;
-     physics_apply_local_impulse(0, 10, 0, 200);
- }

-

Приведенный выше код создает новый экземпляр и затем определяет его как "пулю" в мире физики, прежде чем придать ему мощный импульс вдоль оси y.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_col_normal_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_col_normal_x.htm index 214bc7486..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_col_normal_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_col_normal_x.htm @@ -1,55 +0,0 @@ - - - - - - phy_col_normal_x - - - - - - - - - - -

phy_col_normal_x

-

Эта переменная, доступная только для чтения, возвращает x-компонент нормали столкновения, соответствующий phy_collision_x значению массива. Для каждой точки контакта существует соответствующая контактная нормаль (которая обычно является одной и той же нормалью для всех точек контакта в столкновении). Эта контактная нормаль представляет собой единичный вектор, направленный от одной точки столкновения к другой, и может быть использована, например, для вычисления правильного направления "толчка" при разрешении столкновений.

-

ПРИМЕЧАНИЕ: Эта переменная доступна только в событии столкновения экземпляра с включенной физикой.

-

-

Синтаксис:

-

phy_col_normal_x

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

repeat(5 + irandom(5))
- {
-     with (instance_create_layer(x, y, "Effects", obj_Debris)
-     {
-         physics_apply_local_impulse(0, 0, other.phy_col_normal_x[0], other.phy_col_normal_y[0]);
-     }
- }

-

Приведенный выше код использует нормаль контакта для задания направления движения для экземпляра, созданного в событии столкновения между двумя экземплярами с поддержкой физики.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_col_normal_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_col_normal_y.htm index 1b9ece828..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_col_normal_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_col_normal_y.htm @@ -1,55 +0,0 @@ - - - - - - phy_col_normal_y - - - - - - - - - - -

phy_col_normal_y

-

Эта переменная, доступная только для чтения, возвращает y-компонент нормали столкновения, соответствующий phy_collision_y значению массива. Для каждой точки контакта существует соответствующая контактная нормаль (которая обычно является одной и той же нормалью для всех точек контакта в столкновении). Эта контактная нормаль представляет собой единичный вектор, направленный от одной точки столкновения к другой, и может быть использована, например, для вычисления правильного направления "толчка" при разрешении столкновений.

-

ПРИМЕЧАНИЕ: Эта переменная доступна только в событии столкновения экземпляра с включенной физикой.

-

-

Синтаксис:

-

phy_col_normal_y

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

repeat(5 + irandom(5))
- {
-     with (instance_create_layer(x, y, "Effects", obj_Debris)
-     {
-         physics_apply_local_impulse(0, 0, other.phy_col_normal_x[0], other.phy_col_normal_y[0]);
-     }
- }

-

Приведенный выше код использует нормаль контакта для задания направления движения для экземпляра, созданного в событии столкновения между двумя экземплярами с поддержкой физики.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_collision_points.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_collision_points.htm index dd6fbd356..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_collision_points.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_collision_points.htm @@ -1,52 +0,0 @@ - - - - - - phy_collision_points - - - - - - - - - - -

phy_collision_points

-

Эта переменная только для чтения возвращает количество точек столкновения, обнаруженных между двумя объектами в столкновении

-

ПРИМЕЧАНИЕ: Эта переменная доступна только в событии столкновения экземпляра с включенной физикой.

-

-

Синтаксис:

-

phy_collision_points

-

-

Возвращается:

-

(integer value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

for(var i = 0; i < phy_collision_points; i += 1;)
- {
-     part_particles_create(global.Sname, phy_collision_x[i], phy_collision_x[1], global.Spark, 5);
- }

-

Приведенный выше код создает частицы во всех определенных точках столкновения между двумя экземплярами с поддержкой физики.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_collision_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_collision_x.htm index 311adbf0d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_collision_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_collision_x.htm @@ -1,52 +0,0 @@ - - - - - - phy_collision_x - - - - - - - - - - -

phy_collision_x

-

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

-

ПРИМЕЧАНИЕ: Эта переменная доступна только в событии столкновения экземпляра с включенной физикой.

-

-

Синтаксис:

-

phy_collision_x

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

for(var i = 0; i < phy_collision_points; i += 1;)
- {
-     part_particles_create(global.Sname, phy_collision_x[i], phy_collision_y[i], global.Spark, 5);
- }

-

Приведенный выше код создает частицы во всех определенных точках столкновения между двумя экземплярами с поддержкой физики.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_collision_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_collision_y.htm index 207cb7554..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_collision_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_collision_y.htm @@ -1,52 +0,0 @@ - - - - - - phy_collision_y - - - - - - - - - - -

phy_collision_y

-

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

-

ПРИМЕЧАНИЕ: Эта переменная доступна только в событии столкновения экземпляра с включенной физикой.

-

-

Синтаксис:

-

phy_collision_y

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

for(var i = 0; i < phy_collision_points; i += 1;)
- {
-     part_particles_create(global.Sname, phy_collision_x[i], phy_collision_y[i], global.Spark, 5);
- }

-

Приведенный выше код создает частицы во всех определенных точках столкновения между двумя экземплярами с поддержкой физики.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_com_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_com_x.htm index 1696c0397..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_com_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_com_x.htm @@ -1,48 +0,0 @@ - - - - - - phy_com_x - - - - - - - - - - -

phy_com_x

-

Эта переменная, доступная только для чтения, возвращает положение x центра масс экземпляра. Она рассчитывается автоматически на основе плотности, инерции и массы экземпляра, как определено соответствующими функциями

-

-

Синтаксис:

-

phy_com_x

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

xx = phy_com_x;
yy = phy_com_y;

-

Приведенный выше код устанавливает две переменные в положение x и y центра масс экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_com_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_com_y.htm index 43e314a0e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_com_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_com_y.htm @@ -1,48 +0,0 @@ - - - - - - phy_com_y - - - - - - - - - - -

phy_com_y

-

Эта переменная, доступная только для чтения, возвращает положение y центра масс экземпляра. Она рассчитывается автоматически на основе плотности, инерции и массы экземпляра, как определено соответствующими функциями

-

-

Синтаксис:

-

phy_com_y

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

xx = phy_com_x;
yy = phy_com_y;

-

Приведенный выше код устанавливает две переменные в положение x и y центра масс экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_dynamic.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_dynamic.htm index ba9540693..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_dynamic.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_dynamic.htm @@ -1,56 +0,0 @@ - - - - - - phy_dynamic - - - - - - - - - - -

phy_dynamic

-

Динамический экземпляр - это экземпляр, который полностью смоделирован в физическом мире, и эта переменная, доступная только для чтения, возвращает true, если проверяемый экземпляр полностью смоделирован, или false, если это не так.

-

-

Синтаксис:

-

phy_dynamic

-

-

Возвращается:

-

(or undefined if the instance is not physics enabled)

-

-

Пример:

-

if other.phy_dynamic
- {
-     with (other)
-     {
-         var dir;
-         dir = point_direction(x, y, other.x, other.y);
-         physics_apply_impulse(x, y, x + lengthdir_x(100, dir), y + lengthdir_y(100, dir));
-     }
- }

-

Приведенный выше код создает новый экземпляр и затем определяет его как "пулю" в мире физики, прежде чем придать ему мощный импульс вдоль оси y.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_fixed_rotation.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_fixed_rotation.htm index 6ef4aeb76..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_fixed_rotation.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_fixed_rotation.htm @@ -1,49 +0,0 @@ - - - - - - phy_fixed_rotation - - - - - - - - - - -

phy_fixed_rotation

-

Эта переменная может быть использована для установки того, могут ли на экземпляр воздействовать вращательные силы (по умолчанию false). Если переменная имеет значение true, никакие внешние силы (ни от кодированных импульсов или сил, ни от столкновений) не будут влиять на значение вращения. - на величину вращения экземпляра, и ее придется задавать вручную, используя phy_rotation переменная

-

-

Синтаксис:

-

phy_fixed_rotation

-

-

Возвращается:

-

(or undefined if the instance is not physics enabled)

-

-

Пример:

-

phy_rotation = 0;
phy_fixed_rotation = true;

-

Приведенный выше код переключит экземпляр на фиксированный поворот, а затем установит угол поворота.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_inertia.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_inertia.htm index c18c78412..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_inertia.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_inertia.htm @@ -1,49 +0,0 @@ - - - - - - phy_inertia - - - - - - - - - - -

phy_inertia

-

Инерция - это мера того, насколько трудно заставить что-то начать или прекратить движение, поэтому чем меньше значение этой переменной, доступной только для чтения, тем легче привести экземпляр в движение, в то время как более высокие значения потребуют большей силы для начала движения. - движение

-

-

Синтаксис:

-

phy_inertia

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

physics_mass_properties(70, -10, -10, phy_inertia);

-

Приведенный выше код изменит массу и центр масс экземпляра при сохранении значения инерции.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_kinematic.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_kinematic.htm index f5b5e8bd6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_kinematic.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_kinematic.htm @@ -1,51 +0,0 @@ - - - - - - phy_kinematic - - - - - - - - - - -

phy_kinematic

-

Эта переменная, доступная только для чтения, возвращает значение true, если экземпляр классифицируется как кинематический объект, или false, если это не так. Кинематический объект - это объект, который имеет бесконечную массу (плотность равна 0), но может двигаться. Поэтому, чтобы сделать экземпляр кинематическим, нужно сначала создать статический экземпляр, а затем установить одну или несколько переменных экземпляра, связанных с движением (например: phy_speed_x, phy_speed_y, или phy_angular_velocity)

-

-

Синтаксис:

-

phy_kinematic

-

-

Возвращается:

-

(or undefined if the instance is not physics enabled)

-

-

Пример:

-

if !phy_kinematic
- {
-     phy_speed_x = 5;
- }

-

Приведенный выше код проверяет, является ли экземпляр кинематическим, и если нет, то устанавливает горизонтальную скорость равной 5.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_linear_damping.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_linear_damping.htm index d3d773875..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_linear_damping.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_linear_damping.htm @@ -1,55 +0,0 @@ - - - - - - phy_linear_damping - - - - - - - - - - -

phy_linear_damping

-

Эта переменная может быть использована для установки линейного демпфирования экземпляра или для получения текущего линейного демпфирования. Демпфирование - это величина "сопротивления" движению вперед, которое оказывает экземпляр с включенной физикой. При меньшем значении экземпляр может двигаться и ускоряться быстрее, а при большем значении ему потребуется более сильный толчок.

-

-

Синтаксис:

-

phy_linear_damping

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

if place_meeting(phy_position_x, phy_position_y, obj_Water)
- {
-     phy_linear_damping = 10;
- }
- else
- {
-     phy_linear_damping = 3;
- }

-

Приведенный выше код проверит столкновение между вызывающим экземпляром и экземплярами "obj_Water" и соответствующим образом изменит линейное затухание.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_linear_velocity_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_linear_velocity_x.htm index 9b8f50bc4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_linear_velocity_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_linear_velocity_x.htm @@ -1,51 +0,0 @@ - - - - - - phy_linear_velocity_x - - - - - - - - - - -

phy_linear_velocity_x

-

Эта переменная может использоваться для получения или изменения x-компонента вектора линейной скорости экземпляра и определяется в пикселях в секунду (для пикселей на шаг см. phy_speed_x). Изменение этого параметра для статического экземпляра (т.е. экземпляра с плотностью 0) превратит его в кинематический экземпляр

-

-

Синтаксис:

-

phy_linear_velocity_x

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

if (phy_linear_velocity_x != 0)
- {
-     phy_linear_velocity_x = 0;
- }

-

Приведенный выше код проверит x-компонент вектора линейной скорости и, если он не равен 0, то установит его в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_linear_velocity_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_linear_velocity_y.htm index ab1f76d17..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_linear_velocity_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_linear_velocity_y.htm @@ -1,51 +0,0 @@ - - - - - - phy_linear_velocity_y - - - - - - - - - - -

phy_linear_velocity_y

-

Эта переменная может использоваться для получения или изменения компонента y вектора линейной скорости экземпляра и определяется в пикселях в секунду (для пикселей на шаг см. phy_speed_y). Изменение этого параметра для статического экземпляра (т.е. экземпляра с плотностью 0) превратит его в кинематический экземпляр

-

-

Синтаксис:

-

phy_linear_velocity_y

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

if (phy_linear_velocity_y != 0)
- {
-     phy_linear_velocity_y = 0;
- }

-

Приведенный выше код проверит компонент y вектора линейной скорости и, если он не равен 0, то установит его в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_mass.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_mass.htm index 06e84363b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_mass.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_mass.htm @@ -1,51 +0,0 @@ - - - - - - phy_mass - - - - - - - - - - -

phy_mass

-

Эта переменная, доступная только для чтения, возвращает массу экземпляра в килограммах. Это значение рассчитывается автоматически на основе площади поверхности назначенных приспособлений и значений их плотности, но его можно изменить с помощью функции physics_mass_properties().

-

-

Синтаксис:

-

phy_mass

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

if (phy_mass < other.phy_mass)
- {
-     instance_destroy();
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_position_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_position_x.htm index 98fe98427..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_position_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_position_x.htm @@ -1,49 +0,0 @@ - - - - - - phy_position_x - - - - - - - - - - -

phy_position_x

-

Эта переменная может быть использована для получения (или установки) x-положения экземпляра в физическом мире игровой комнаты. Обратите внимание, что физический мир может выдавать ошибки при перемещении экземпляров путем непосредственной установки этой переменной, так как это прервет - непрерывное моделирование. Эта переменная является физическим эквивалентом переменной экземпляра x.

-

-

Синтаксис:

-

phy_position_x

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

xx = phy_position_x;
yy = phy_position_y;

-

Приведенный выше код хранит позицию экземпляра x и y в двух переменных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_position_xprevious.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_position_xprevious.htm index 924ea7251..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_position_xprevious.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_position_xprevious.htm @@ -1,48 +0,0 @@ - - - - - - phy_position_xprevious - - - - - - - - - - -

phy_position_xprevious

-

Эта переменная может быть использована для получения (или установки) предыдущего положения x экземпляра в физическом мире игровой комнаты. Это положение экземпляра в физическом мире на предыдущем шаге по отношению к текущему.

-

-

Синтаксис:

-

phy_position_xprevious

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

xx = phy_position_xprevious;
yy = phy_position_yprevious;

-

Приведенный выше код хранит предыдущую позицию x и y для экземпляра с включенной физикой в двух переменных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_position_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_position_y.htm index 3e81b8377..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_position_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_position_y.htm @@ -1,49 +0,0 @@ - - - - - - phy_position_y - - - - - - - - - - -

phy_position_y

-

Эта переменная может быть использована для получения (или установки) позиции y экземпляра в физическом мире игровой комнаты. Обратите внимание, что физический мир может выдавать ошибки при перемещении экземпляров путем непосредственной установки этой переменной, так как это прервет - непрерывное моделирование. Эта переменная является физическим эквивалентом переменной экземпляра y.

-

-

Синтаксис:

-

phy_position_y

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

xx = phy_position_x;
yy = phy_position_y;

-

Приведенный выше код хранит позицию экземпляра x и y в двух переменных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_position_yprevious.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_position_yprevious.htm index f232c3818..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_position_yprevious.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_position_yprevious.htm @@ -1,48 +0,0 @@ - - - - - - phy_position_yprevious - - - - - - - - - - -

phy_position_yprevious

-

Эта переменная может быть использована для получения (или установки) предыдущей позиции y экземпляра в физическом мире игровой комнаты. Это положение экземпляра в физическом мире на предыдущем шаге по отношению к текущему.

-

-

Синтаксис:

-

phy_position_yprevious

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

xx = phy_position_xprevious;
yy = phy_position_yprevious;

-

Приведенный выше код хранит предыдущую позицию x и y для экземпляра с включенной физикой в двух переменных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_rotation.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_rotation.htm index 8cbf5fcd6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_rotation.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_rotation.htm @@ -1,52 +0,0 @@ - - - - - - phy_rotation - - - - - - - - - - -

phy_rotation

-

Эта переменная может быть использована для получения (или установки) угла установки экземпляров в градусах, аналогично установке или получению параметра image_angle. Однако обратите внимание, что в физическом мире вращение рассчитывается противоположным образом, чем в обычном игровом мире GameMaker, а это значит, что векторные функции типа point_direction()должны иметь измененные возвращаемые значения (простое преобразование положительного значения в отрицательное должно решить эту проблему).

-

-

Синтаксис:

-

phy_rotation

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

if (phy_speed_x > 0) || (phy_speed_y > 0)
- {
-     phy_rotation += sqrt(sqr(phy_speed_x) + sqr(phy_speed_y)) /10;
- }

-

Приведенный выше код проверяет линейную скорость, и если любой из векторов не равен 0, он вычисляет фактическую скорость и использует ее для задания вращения.

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_sleeping.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_sleeping.htm index d3fe536a9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_sleeping.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_sleeping.htm @@ -1,51 +0,0 @@ - - - - - - phy_sleeping - - - - - - - - - - -

phy_sleeping

-

Эта переменная, доступная только для чтения, показывает, "спит" ли данный экземпляр в данный момент (true) или нет (false). "Спящий" экземпляр - это тот, который не принимает активного участия в физической симуляции. GameMaker переводит объекты в спящий режим для экономии циклов моделирования, когда экземпляр находится в состоянии покоя и не сталкивается с другим экземпляром.

-

-

Синтаксис:

-

phy_sleeping

-

-

Возвращается:

-

(or undefined if the instance is not physics enabled)

-

-

Пример:

-

if phy_sleeping
- {
-     instance_destroy();
- }

-

Приведенный выше код проверяет, является ли объект активно моделируемым или нет, и если нет, то он уничтожается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_speed.htm index c09ab0e80..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_speed.htm @@ -1,55 +0,0 @@ - - - - - - phy_speed - - - - - - - - - - -

phy_speed

-

Эта переменная, доступная только для чтения, возвращает текущую скорость экземпляра с включенной физикой, заданную в пикселях за шаг. Если вам нужно изменить это значение, вы должны сделать это, изменив векторы x и y с помощью переменных phy_speed_x и phy_speed_y.

-

-

Синтаксис:

-

phy_speed

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

if phy_speed > 10
- {
-     phy_linear_damping += 0.01;
- }
- else
- {
-     phy_linear_damping = 2;
- }

-

Приведенный выше код проверяет скорость экземпляра с включенной физикой, а затем изменяет линейное демпфирование на основе возвращаемого значения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_speed_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_speed_x.htm index c468ec819..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_speed_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_speed_x.htm @@ -1,51 +0,0 @@ - - - - - - phy_speed_x - - - - - - - - - - -

phy_speed_x

-

Эта переменная может использоваться для получения или изменения x-компонента вектора линейной скорости экземпляра и определяется в пикселях за шаг (для пикселей в секунду см. phy_linear_velocity_x). Изменение этого параметра для статического экземпляра (т.е. экземпляра с плотностью 0) превратит его в кинематический экземпляр.

-

-

Синтаксис:

-

phy_speed_x

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

if phy_speed_x != 0
- {
-     phy_speed_x = 0;
- }

-

Приведенный выше код проверит x-компонент вектора линейной скорости и, если он не равен 0, то установит его в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_speed_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_speed_y.htm index 9e4c3681c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_speed_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Physics_Variables/phy_speed_y.htm @@ -1,51 +0,0 @@ - - - - - - phy_speed_y - - - - - - - - - - -

phy_speed_y

-

Эта переменная может использоваться для получения или изменения компонента y вектора линейной скорости экземпляра и определяется в пикселях за шаг (для пикселей в секунду см. phy_linear_velocity_y). Изменение этого параметра для статического экземпляра (т.е. экземпляра с плотностью 0) превратит его в кинематический экземпляр.

-

-

Синтаксис:

-

phy_speed_y

-

-

Возвращается:

-

(single precision floating point value, or undefined if the instance is not physics enabled)

-

-

Пример:

-

if phy_speed_y != 0
- {
-     phy_speed_y = 0;
- }

-

Приведенный выше код проверит компонент y вектора линейной скорости и, если он не равен 0, то установит его в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/Soft_Body_Particles.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/Soft_Body_Particles.htm index 8866f5343..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/Soft_Body_Particles.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/Soft_Body_Particles.htm @@ -1,103 +0,0 @@ - - - - - - Частицы мягких тел - - - - - - - - - - -

Частицы мягких тел

-

GameMaker использует библиотеку физики жестких тел Box2D, и поэтому не позволяет использовать физику мягких тел. Однако Жидкое веселье расширение добавляет частицы в систему физики, которые позволяют создавать симулированные мягкие тела, используя физику жесткого тела. В принципе, вы можете создать форму из частиц, которые сохраняют связность и таким образом моделируют полное тело, которое, благодаря взаимодействию частиц, создает впечатление мягкого тела. Вы также можете использовать физические частицы для моделирования жидкостей и других физических систем, основанных на частицах.

-

Прежде чем приступить к созданию физических частиц, вам необходимо установить для них основные физические свойства, как для обычных физических частиц. Обратите внимание, что установка этих свойств повлияет на все частицы, созданные ранее, а также на все новые частицы, которые вы создадите, поэтому обычно вы используете эти функции только в начале игры или уровня. Однако существуют специальные функции для установки флагов частиц для отдельных частиц (и групп частиц), которые изменяют их свойства, такие как "отскок" или "вязкость", позволяя вам создавать различные типы частиц в пределах диапазона этих глобальных настроек.

-

Для настройки и получения данных глобальной системы частиц доступны следующие функции:

- -

-

Также доступны следующие функции для установки флагов на отдельные частицы (или группы частиц), а также для получения информации, такой как положение или цвет, от отдельной частицы или отдельной группы:

- -

-

Вы можете создавать частицы двумя способами - индивидуально или группами. Отдельные частицы будут вести себя точно так, как определено глобальными настройками и флагами, которые были установлены при их создании, но группы частиц могут вести себя по-разному в зависимости от их групповых флагов. Эти групповые флаги могут быть установлены на различные значения, чтобы придать группе различные свойства, например, проникаемость и жесткость.

-

Для создания частиц доступны следующие функции:

- -

-

Вы можете не только создавать частицы, но и удалять их, как по отдельности, так и в регионе. Для удаления частиц из системы доступны следующие функции:

- -

-

Если вы не активировали отладочную прорисовку с помощью функции physics_draw_debug()вы не увидите частиц на экране при их создании. Поэтому, чтобы увидеть частицы, необходимо нарисовать их на экране в событии Draw Event экземпляра с помощью следующих функций (обратите внимание, что вы также можете нарисовать их с помощью обычных функций draw_sprite, если вы получите данные для каждой частицы с помощью функции physics_particle_get_data()):

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_count.htm index 6b3b17fbf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_count.htm @@ -1,52 +0,0 @@ - - - - - - physics_particle_count - - - - - - - - - - - -

physics_particle_count

-

Эта функция возвращает количество частиц, которые активны в комнате с включенной физикой.

-

-

Синтаксис:

-

physics_particle_count()

-

-

Возвращается:

-

-

-

Пример:

-

if (physics_particle_count() < physics_particle_get_max_count())
- {
-     physics_particle_create(0, x, y, 0, 0, c_white, 1, 1)
- }

-

Приведенный выше код проверит, есть ли в комнате меньше максимального количества разрешенных частиц, и если да, то создаст еще одну.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_create.htm index ff2e7f669..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_create.htm @@ -1,165 +0,0 @@ - - - - - - physics_particle_create - - - - - - - - - - - -

physics_particle_create

-

С помощью этой функции вы можете создать одну частицу в любом месте вашей игровой комнаты, установив определенные флаги и свойства. Флаги" являются возвращаемым значением комбинации следующих констант:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Физика Частица Флаг Константа
ПостояннаяОписание
phy_particle_flag_waterСвойства по умолчанию для частицы мягкого тела.
phy_particle_flag_zombieЧастица-зомби - это частица, которая будет уничтожена после одного шага, при этом все остальные будут помечены таким образом.
phy_particle_flag_wallЭто определяет частицу как статическую, по сути, создавая ее как неподвижный объект в физическом моделировании, поскольку она будет оставаться в фиксированном положении независимо от того, что с ней столкнется. Вы должны использовать этот флаг, а не устанавливать плотность на 0.
phy_particle_flag_springПружинные частицы создают эффект прикрепления друг к другу, как будто пружиной. Частицы, созданные с помощью этого флага, "соединяются" попарно, причем каждая частица соединяется с той, которая была ближе всего к ней в момент создания. Попав в пару, частицы не меняют "партнеров", и чем дальше внешняя сила отталкивает их друг от друга, тем с большей силой они столкнутся, когда эта внешняя сила будет снята. Обратите внимание, что как бы далеко ни удалились парные частицы друг от друга, связь между ними не разорвется.
phy_particle_flag_elasticУпругие частицы деформируются и могут также отскакивать при столкновении с другими жесткими телами в физической симуляции.
phy_particle_flag_viscousВязкая частица - это частица, которая проявляет "цепкость" или "липкость", как масло. Вязкие частицы больше слипаются и склеиваются.
phy_particle_flag_powderЧастицы порошка создают эффект рассеивания, подобный тому, который можно наблюдать при использовании песка или пыли.
phy_particle_flag_tensileРастягивающие частицы используются для создания эффекта поверхностного натяжения, или тугой кривизны на поверхности тела жидкости. Они могут использоваться, например, для создания поверхностного натяжения, которое можно наблюдать на капле воды. Когда натяжение нарушается, частицы подпрыгивают, как если бы они были упругими, но при этом продолжают притягиваться друг к другу. В результате частицы, отскакивая, образуют скопления.
phy_particle_flag_colourmixingЧастицы, смешивающие цвета, принимают некоторые цвета других частиц, с которыми они сталкиваются. Обратите внимание, что если только одна из двух сталкивающихся частиц является смешивающей цвет, другая частица сохраняет свой цвет до столкновения.
-

Эти флаги используют битовую маскировку для создания конечного выходного значения, которое затем проверяется для установки различных базовых свойств частицы (при этом базовым свойством всегда является свойство phy_particle_flag_water). Например, если вы хотите смоделировать вязкую жидкость с поверхностным натяжением, вы можете использовать побитовую маску или "|", чтобы отметить соответствующие биты, как показано в примере ниже. Таким образом, вы можете установить различные свойства (кроме глобальных) для каждой отдельной создаваемой частицы.

-

Кроме флагов, вы также можете задать положение в комнате, в котором будет создана частица, начальную горизонтальную и вертикальную скорость, начальный цвет и альфу, а также категорию пользователя. Значения цвета и альфа используются только при рисовании частицы с помощью функции physics_particle_draw()но значение категории используется во многих других функциях. Это произвольное целочисленное значение, которое вы присваиваете каждой частице, имеющей схожие свойства, и которое может быть использовано для установки флагов в дальнейшем для этой конкретной категории, а также для ряда других вещей. Например, если вы определили частицы "вода" и "масло", вы можете присвоить всем частицам, помеченным как "вода", категорию пользователя 1, а всем частицам, созданным как "масло", категорию пользователя 2, что позволит вам позже выбрать одну категорию, чтобы изменить ее флаги или получить конкретные данные.

-

ПРИМЕЧАНИЕ: Вы можете использовать любое целочисленное значение для категории, кроме 0, которое зарезервировано симуляцией и используется для выбора всех категорий в других функциях (например, для рисования).

-

Функция возвращает уникальное значение индекса (или ID) для частицы, которое может быть сохранено в переменной для использования в других функциях, напрямую ссылающихся на частицу.

-

-

Синтаксис:

-

physics_particle_create(flags, x, y, xv, yv, col, alpha, category)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
flagsФизика Частица Флаг Константа(s)The flags to set on the particle.
xРеальноThe x position to create the particle at.
yРеальноThe y position to create the particle at.
xvРеальноThe initial horizontal velocity.
yvРеальноThe initial vertical velocity.
colЦветThe base colour to use for the particle.
alphaРеальноThe base alpha to use for the particle.
categoryРеальноThe user defined category to which the particle belongs.
-

-

Возвращается:

-

Physics Particle ID

-

-

Пример:

-

var flags = phy_particle_flag_water | phy_particle_flag_viscous | phy_particle_flag_tensile;
- var x_vel = lengthdir_x(5, image_angle);
- var y_vel = lengthdir_y(5, image_angle);
- var p = physics_particle_create(flags, x, y, x_vel, y_vel, c_white, 1, 1);

-

Приведенный выше код создаст переменные для установки типа частицы и ее начальной скорости, а затем использует их для создания частицы в позиции экземпляра x/y.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_delete.htm index ce937e622..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_delete.htm @@ -1,62 +0,0 @@ - - - - - - physics_particle_delete - - - - - - - - - - -

physics_particle_delete

-

С помощью этой функции вы можете удалить частицу из физического моделирования в текущей комнате. Функция принимает уникальный идентификатор частицы, которую нужно удалить, возвращаемый функцией physics_particle_create().

-

-

Синтаксис:

-

physics_particle_delete(ind)

- - - - - - - - - - - - - -
АргументТипОписание
indФизика Идентификатор частицыThe index (ID) of the particle to delete.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

physics_particle_delete(part);

-

Приведенный выше код удалит из симуляции частицу с идентификатором, хранящимся в переменной "part".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_delete_region_box.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_delete_region_box.htm index 3c0c3a50d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_delete_region_box.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_delete_region_box.htm @@ -1,73 +0,0 @@ - - - - - - physics_particle_delete_region_box - - - - - - - - - - -

physics_particle_delete_region_box

-

С помощью этой функции вы можете удалить все частицы, которые попадают в границы заданной прямоугольной области, из физической симуляции в текущей комнате. Функция принимает положение x и y для центра удаляемой области, а также - а также половину ширины и высоты прямоугольника (в пикселях), определяющего эту область.

-

-

Синтаксис:

-

physics_particle_delete_region_box(x, y, halfWidth, halfHeight)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xThe x position of the center of the area to delete.
yThe y position of the center of the area to delete.
halfWidthThe half width of the rectangle.
halfHeightThe half height of the rectangle.
-

-

Возвращается:

-

-

-

Пример:

-

physics_particle_delete_region_box(mouse_x, mouse_y, 32, 32);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_delete_region_circle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_delete_region_circle.htm index 0feda698b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_delete_region_circle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_delete_region_circle.htm @@ -1,69 +0,0 @@ - - - - - - physics_particle_delete_region_circle - - - - - - - - - - -

physics_particle_delete_region_circle

-

С помощью этой функции вы можете удалить все частицы, которые попадают в пределы определенной круговой области, из физической симуляции в текущей комнате. Функция принимает положение x и y для центра удаляемой области, а также - а также радиус (в пикселях), определяющий круглую область.

-

-

Синтаксис:

-

physics_particle_delete_region_circle(x, y, radius)

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xThe x position of the center of the area to delete.
yThe y position of the center of the area to delete.
radiusThe radius (in pixels) of the circular area to delete.
-

-

Возвращается:

-

-

-

Пример:

-

physics_particle_delete_region_circle(mouse_x, mouse_y, 32);

-

Приведенный выше код удалит все частицы, находящиеся в круговой области вокруг позиции мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_delete_region_poly.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_delete_region_poly.htm index 28913b6e3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_delete_region_poly.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_delete_region_poly.htm @@ -1,68 +0,0 @@ - - - - - - physics_particle_delete_region_poly - - - - - - - - - - -

physics_particle_delete_region_poly

-

С помощью этой функции вы можете удалить все частицы, которые попадают в границы определенной многоугольной области, из физической симуляции в текущей комнате. Функция принимает (предварительно созданный) ds_list() содержащий x/y позицию каждой точки полигона, причем четные позиции в списке являются координатами x, а нечетные - координатами y, т.е. для треугольника в списке будет шесть позиций, причем 0, 2 и 4 будут координатами x, а 1, 3 и 5 - координатами y. Затем полигон будет использоваться для удаления всех частиц, которые попадают в определенную область.

-

Обратите внимание, что заданный многоугольник должен иметь не менее трех точек и не более 8.

-

-

Синтаксис:

-

physics_particle_delete_region_poly(pointList)

- - - - - - - - - - - -
АргументТипОписание
pointListA ds_list of points to use to create the polygon.
-

-

Возвращается:

-

-

-

Пример:

-

var list = ds_list_create(p_list);
- for (var i = 0; i < 5; i ++)
- {
-     ds_list_add(p_list, mx[i]);
-     ds_list_add(p_list, my[i]);
- }
- physics_particle_delete_region_poly(p_list);
- ds_list_destroy(p_list);

-

Приведенный выше код удалит все частицы, находящиеся в многоугольной области, определенной точками, добавленными на DS List.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_draw.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_draw.htm index f71d01096..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_draw.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_draw.htm @@ -1,80 +0,0 @@ - - - - - - physics_particle_draw - - - - - - - - - - -

physics_particle_draw

-

Эта функция нарисует sprite в позиции всех частиц, которые имеют одно и то же значение категории, определенное пользователем, и у которых флаги совпадают с флагами, установленными для маски. Значение маски определяется так же, как и флаги при создании частицы (см. функцию physics_particle_create() для примера), т.е. с помощью побитовой комбина ции или "|" для маскирования соответствующих битов для каждого флага.

-

ПРИМЕЧАНИЕ: Эта функция нарисует все частицы в физической симуляции с флагами, совпадающими с флагами маски, будь то отдельные частицы или группы, если категория пользователя одинакова.

-

Нарисованная частица будет использовать цвет и альфа-значения, установленные при ее создании, и будет вращаться с угловым моментом частицы. Однако если вы хотите масштабировать sprite или изменить любые другие его свойства, используйте функцию physics_particle_draw_ext().

-

-

Синтаксис:

-

physics_particle_draw(typemask, category, sprite, subimg)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
typemaskФизика Частица Флаг Константа(ы)The mask to compare the particles flags with.
categoryРеальноThe user defined category to draw (use 0 to draw all categories).
spriteАктив спрайтаThe sprite to use for each particle.
subimgРеальноThe image_index спрайта для рисования.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var flags = phy_particle_flag_water | phy_particle_flag_viscous | phy_particle_flag_tensile;
- physics_particle_draw(flags, 2, sprBlob, 0);

-

Приведенный выше код нарисует sprite для всех частиц в заданной пользователем категории "2", которые имеют те же флаги, что и заданная маска.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_draw_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_draw_ext.htm index e77504468..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_draw_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_draw_ext.htm @@ -1,105 +0,0 @@ - - - - - - physics_particle_draw_ext - - - - - - - - - - -

physics_particle_draw_ext

-

Эта функция нарисует sprite в позиции всех частиц, которые имеют одно и то же значение категории, определенное пользователем, и у которых флаги совпадают с флагами, заданными для маски. Значение маски определяется так же, как и флаги при создании частиц (см. функции physics_particle_create() для примера), т.е. с помощью побитовой комбинации или "|" для маскирования соответствующих битов для каждого флага.

-

ПРИМЕЧАНИЕ: Эта функция нарисует все частицы в физической симуляции с флагами, совпадающими с флагами маски, будь то отдельные частицы или группы, если категория пользователя одинакова.

-

Нарисованная частица будет игнорировать значения цвета и альфы, установленные при ее создании, и вместо этого будет нарисована с использованием параметров масштаба, угла, цвета и альфы, заданных в этой функции. Обратите внимание, что эта функция предназначена только для рисования sprite в позиции частицы и никак не влияет на поведение частицы.

-

-

Синтаксис:

-

physics_particle_draw_ext(typemask, category, sprite, subimg, xscale, yscale, ang, col, alpha)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
typemaskФизика Частица Флаг Константа(ы)The mask to compare the particles flags with.
categoryРеальноThe user defined category to draw (use 0 to draw all categories).
spriteАктив спрайтаThe sprite to use for each particle.
subimgРеальноThe image_index спрайта для рисования.
xscaleРеальноThe scale factor to apply to the sprite along the x axis.
yscaleРеальноThe scale factor to apply to the sprite along the y axis.
angРеальноThe angle (in degrees) to draw the sprite at.
colЦветThe colour to blend with the sprite (default is c_white).
alphaРеальноThe alpha value to use when drawing (0 - 1).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var flags = phy_particle_flag_water | phy_particle_flag_viscous | phy_particle_flag_tensile;
- physics_particle_draw_ext(flags, 2, sprBlob, 0, 2, 2, 0, c_white, 0.5);

-

Приведенный выше код нарисует sprite для всех частиц в заданной пользователем категории "2", которые имеют те же флаги, что и заданная маска, масштабированные на 2 по обеим осям и с альфой 0,5.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_damping.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_damping.htm index a382f2e9f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_damping.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_damping.htm @@ -1,52 +0,0 @@ - - - - - - physics_particle_get_damping - - - - - - - - - - - -

physics_particle_get_damping

-

С помощью этой функции вы можете узнать, каково текущее линейное затухание для частиц в физическом моделировании (вы можете установить это значение с помощью функции physics_particle_set_damping()).

-

-

Синтаксис:

-

physics_particle_get_damping()

-

-

Возвращается:

-

-

-

Пример:

-

if (physics_particle_get_damping() < 1)
- {
-     physics_particle_set_damping(physics_particle_get_damping() + 0.01);
- }

-

Приведенный выше код проверит текущее значение демпфирования для всех частиц в системе и, если оно меньше 1, то добавит к нему 0,01.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_data.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_data.htm index 79de89849..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_data.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_data.htm @@ -1,130 +0,0 @@ - - - - - - physics_particle_get_data - - - - - - - - - - - -

physics_particle_get_data

-

Эта функция возвращает различную информацию о каждой частице в физической симуляции, используя заданные флаги. Используемый буфер должен быть создан ранее с помощью функции buffer_create()и должен быть типа "grow", с размером, приблизительно равным размеру ожидаемых возвращаемых данных. Флаги устанавливаются с помощью любой из приведенных ниже констант, а для получения нужной информации можно использовать побитовую комбина цию или "|" для создания одного значения флага.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Константа флага данных частиц физики
ПостояннаяОписаниеТип данных
phy_particle_data_flag_typeflagsЗначение флагов для частицы.buffer_u32
phy_particle_data_flag_positionПозиция x и y частицы.2 x buffer_f32
phy_particle_data_flag_velocityГоризонтальная и вертикальная скорость.2 x buffer_f32
phy_particle_data_flag_colourЦвет и альфа-значение (шестнадцатеричное).buffer_f32
phy_particle_data_flag_categoryКатегория частицы (определена при создании частицы или группы, к которой она принадлежит).buffer_u32
-

-

Синтаксис:

-

physics_particle_get_data(buffer, flags)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
bufferИдентификатор буфераThe (previously created) buffer to use to store the data.
flagsФизические данные частицы Флаг Константа(s)The flags to use to extract data about specific particle types.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var count = physics_particle_count();
- var flags = phy_particle_data_flag_position | phy_particle_data_flag_colour;
- if (count > 0)
- {
-     var buffer = buffer_create(count * 12, buffer_grow, 4);
-     physics_particle_get_data(buffer, flags);
-     for (var n = 0; n < count; n++)
-     {
-         var xx = buffer_read(buffer, buffer_f32);
-         var yy = buffer_read(buffer, buffer_f32);
-         var argb = buffer_read(buffer, buffer_u32);
-         var alpha = (argb >> 24) & 255;
-         draw_sprite_ext(sprBlob, 0, xx, yy, 1, 1, 0, c_green, alpha);
-     }
-     buffer_delete(buffer);
- }

-

Приведенный выше код получает количество частиц и создает переменную с флагами данных для проверки, затем проверяет, есть ли частицы в комнате. Если они есть, создается буфер, который затем заполняется данными о частицах, которые проверяются и используются для рисования sprite в позиции частицы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_data_particle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_data_particle.htm index c23c7e93e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_data_particle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_data_particle.htm @@ -1,120 +0,0 @@ - - - - - - physics_particle_get_data_particle - - - - - - - - - - - -

physics_particle_get_data_particle

-

Эта функция возвращает различную информацию об одной частице в физической симуляции, используя заданные флаги. Индекс частицы (ее ID) - это тот, который был возвращен функцией physics_particle_create(), а используемый буфер должен быть создан ранее с помощью функции buffer_create(). Он должен быть типа "grow", с размером, приблизительно равным размеру ожидаемых возвращаемых данных. Сами флаги устанавливаются с помощью констант, приведенных ниже, и вы можете использовать побитовую комбинацию или "|" для создания одного значения флага, чтобы получить желаемую информацию.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписаниеТип данных
phy_particle_data_flag_typeflagsЗначение флагов для частицы.buffer_u32
phy_particle_data_flag_positionПозиция x и y частицы.2 x buffer_f32
phy_particle_data_flag_velocityГоризонтальная и вертикальная скорость.2 x buffer_f32
phy_particle_data_flag_colourЦвет и альфа-значение (шестнадцатеричное).buffer_f32
phy_particle_data_flag_categoryКатегория частицы (определенная при создании частицы).buffer_u32
-

-

Синтаксис:

-

physics_particle_get_data_particle(ind, buffer, flags)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indФизика Идентификатор частицыThe index (ID) of the particle to get the data from.
bufferИдентификатор буфераThe (previously created) buffer to use to store the data.
flagsФизические данные частицы Флаг Константа(ы)The flags to use to extract data about specific particle types.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var part = physics_particle_create(flags, x, y, x_vel, y_vel, c_white, 1, 1)
- var flags = phy_particle_data_flag_position | phy_particle_data_flag_velocity;
- var buffer = buffer_create(16, buffer_grow, 4);
- physics_particle_get_data_particle(part, buffer, flags);
- px = buffer_read(buffer, buffer_f32);
- py = buffer_read(buffer, buffer_f32);
- pvelx = buffer_read(buffer, buffer_f32);
- pvely = buffer_read(buffer, buffer_f32);
- buffer_delete(buffer);

-

Приведенный выше код получает положение и скорость частицы, индексируемой переменной "part", и сохраняет данные в ряде переменных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_density.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_density.htm index 25a641859..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_density.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_density.htm @@ -1,52 +0,0 @@ - - - - - - physics_particle_get_density - - - - - - - - - - - -

physics_particle_get_density

-

С помощью этой функции вы можете узнать, какова плотность тока для частиц в физическом моделировании (вы можете установить это значение с помощью функции physics_particle_set_density()).

-

-

Синтаксис:

-

physics_particle_get_density()

-

-

Возвращается:

-

-

-

Пример:

-

if (physics_particle_get_density() < 1)
- {
-     physics_particle_set_density(physics_particle_get_density() + 0.01);
- }

-

Приведенный выше код проверит текущее значение плотности для всех частиц в системе и, если оно меньше 1, то добавит к нему 0,01.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_gravity_scale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_gravity_scale.htm index fbdaa0655..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_gravity_scale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_gravity_scale.htm @@ -1,49 +0,0 @@ - - - - - - physics_particle_get_gravity_scale - - - - - - - - - - - -

physics_particle_get_gravity_scale

-

С помощью этой функции вы можете узнать, каков текущий коэффициент масштаба гравитации для частиц в физическом моделировании (вы можете установить это значение с помощью функции physics_particle_set_gravity_scale()).

-

-

Синтаксис:

-

physics_particle_get_gravity_scale()

-

-

Возвращается:

-

-

-

Пример:

-

physics_particle_set_gravity_scale(physics_particle_get_gravity_scale() + 0.1);

-

Приведенный выше код установит шкалу гравитации.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_group_flags.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_group_flags.htm index 0f3967c9b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_group_flags.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_group_flags.htm @@ -1,68 +0,0 @@ - - - - - - physics_particle_get_group_flags - - - - - - - - - - - -

physics_particle_get_group_flags

-

С помощью этой функции можно получить флаги группы для группы частиц. Значение group - это значение, которое было возвращено при создании группы частиц с помощью функции physics_particle_group_end(), а функция возвращает значение, которое является комбинированным значением текущих установленных флагов.

-

-

Синтаксис:

-

physics_particle_get_group_flags(group)

- - - - - - - - - - - - - -
АргументТипОписание
groupИдентификатор группы физических частицThe particle group to get.
-

-

Возвращается:

-

Real

-

-

Пример:

-

var flags = physics_particle_get_group_flags(group, flags);
- if flags != (phy_particle_group_flag_solid | phy_particle_group_flag_rigid)
- {
-     flags = phy_particle_group_flag_solid | phy_particle_group_flag_rigid;
-     physics_particle_set_group_flags(group, flags);
- }

-

Приведенный выше код создаст переменную для хранения значения flags, а затем использует ее для проверки флагов группы, проиндексированной в переменной "group". Если они не совпадают, то группа устанавливается с этими флагами.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_max_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_max_count.htm index ff69bb2e3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_max_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_max_count.htm @@ -1,52 +0,0 @@ - - - - - - physics_particle_get_max_count - - - - - - - - - - - -

physics_particle_get_max_count

-

С помощью этой функции вы можете узнать, каково текущее значение лимита для частиц, разрешенных в физическом моделировании (вы можете установить это значение с помощью функции physics_particle_set_max_count()).

-

-

Синтаксис:

-

physics_particle_get_max_count()

-

-

Возвращается:

-

-

-

Пример:

-

if (physics_particle_count() < physics_particle_get_max_count())
- {
-     physics_particle_create(0, x, y, 0, 0, c_white, 1, 1)
- }

-

Приведенный выше код проверит, есть ли в комнате меньше максимального количества разрешенных частиц, и если да, то создаст еще одну.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_radius.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_radius.htm index 4b5e4e387..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_radius.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_get_radius.htm @@ -1,52 +0,0 @@ - - - - - - physics_particle_get_radius - - - - - - - - - - - -

physics_particle_get_radius

-

С помощью этой функции вы можете узнать текущий радиус (в пикселях) частиц в физическом моделировании (вы можете установить это значение с помощью функции physics_particle_set_radius()).

-

-

Синтаксис:

-

physics_particle_get_radius()

-

-

Возвращается:

-

-

-

Пример:

-

if (physics_particle_get_radius() < 32)
- {
-     physics_particle_set_radius(physics_particle_get_radius() + 1);
- }

-

Приведенный выше код проверит текущий радиус частиц в симуляции и, если он меньше 32, то увеличит их размер на 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_add_point.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_add_point.htm index ec71da32c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_add_point.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_add_point.htm @@ -1,67 +0,0 @@ - - - - - - physics_particle_group_add_point - - - - - - - - - - -

physics_particle_group_add_point

-

Эта функция задает точку в комнате для определения формы многоугольника, который будет использоваться для создания группы частиц мягкого тела. Вы должны предварительно подать сигнал в GameMaker, что собираетесь определить форму многоугольника с помощью функции - physics_particle_group_polygon(), а затем использовать эту функцию для определения отдельных точек многоугольника. При определении формы многоугольника необходимо указать не менее трех точек, но можно указать до восьми, - и функция позволит определить вогнутые многоугольники. Однако, если вы создадите многоугольник с какими-либо полостями, точки внутри него будут проигнорированы, и для группы частиц будет создана выпуклая форма.

-

-

Синтаксис:

-

physics_particle_group_add_point(x, y)

- - - - - - - - - - - - - - - -
АргументТипОписание
xThe x position in the room for the point.
yThe y position in the room for the point.
-

-

Возвращается:

-

-

-

Пример:

-

var flags = phy_particle_flag_water | phy_particle_flag_viscous | phy_particle_flag_tensile;
var groupflags = phy_particle_group_flag_solid;
physics_particle_group_begin(flags, groupflags, mouse_x, mouse_y, 0, 0, 0, 0, c_white, 1, 1, 2);
physics_particle_group_polygon(); -
physics_particle_group_add_point(200, 200);
physics_particle_group_add_point(300, 300);
physics_particle_group_add_point(100, 300);
mLastGroup = physics_particle_group_end();

-

Приведенный выше код сохраняет флаги для типа частицы и свойства группы частиц в переменных, а затем использует их для создания группы частиц полигона с тремя сторонами в позиции мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_begin.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_begin.htm index c789f6436..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_begin.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_begin.htm @@ -1,153 +0,0 @@ - - - - - - physics_particle_group_begin - - - - - - - - - - -

physics_particle_group_begin

-

С помощью этой функции вы можете создать группу частиц в комнате. Группа частиц - это группа, в которой частицы, необходимые для создания определенной формы, создаются все сразу как группа, позволяя вам создавать симулированные мягкие тела с различными свойствами, задаваемыми используемыми флагами. Флаги" - это возвращаемое значение комбинации констант частиц (см. функцию physics_particle_create() а "groupFlags" - это комбинация следующих групповых констант (или 0, если флагов нет):

- - - - - - - - - - - - - - - - - - - - - - -
Физика Группа частиц Флаг Константа
ПостояннаяОписание
phy_particle_group_flag_solidГруппа твердых частиц не позволяет другим элементам закрепиться внутри нее. Если в нее проникает что-либо, группа твердых частиц выталкивает нарушителя обратно на поверхность, благодаря чему группа твердых частиц обладает особенно сильной силой отталкивания.
phy_particle_group_flag_rigidЖесткие группы частиц - это группы, форма которых не меняется, даже когда они сталкиваются с другими приспособлениями.
-

Эти групповые флаги используют битовую маскировку для создания конечного выходного значения, которое затем проверяется для установки различных основных свойств группы, помимо тех, которые устанавливаются флагами частиц. Вы можете использовать ни одну, одну или обе эти константы, используя побитовую комбинацию или "|" для маскировки соответствующих битов (как показано в примере ниже).

-

Кроме флагов, вы также можете задать положение в комнате, в котором будет создана группа частиц (заданное положение будет центром масс готовой группы), начальную горизонтальную и вертикальную скорость, а также угловую скорость группы, что позволяет создавать движущиеся, вращающиеся группы.

-

Вы также можете задать начальный цвет и альфа всех частиц в группе, причем эти значения будут использоваться при рисовании частиц с помощью функции physics_particle_draw(). После этого вы задаете силу сцепления частиц в группе, что является еще одним способом сказать, насколько сильно они "прилипают" друг к другу. Сила может быть значением от 0 до 1, где 0 - отсутствие когезии, а 1 - максимальная когезия.

-

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

-

ПРИМЕЧАНИЕ: Вы можете использовать любое целочисленное значение для категории, кроме 0, которое зарезервировано симуляцией и используется для выбора всех категорий в других функциях (например, для рисования).

-

Важно отметить, что вызов этой функции не создает группу в физическом кабинете. Эта функция просто начинает процесс и устанавливает базовые свойства частиц для группы. Чтобы действительно создать группу частиц, необходимо задать ей форму (см. пример ниже), а затем вызвать функцию physics_particle_group_end(), после чего она будет создана.

-

ПРИМЕЧАНИЕ: Флаги типов частиц, которые вы установите, также будут влиять на сплоченность группы частиц, например, если вы отметите частицы как тип воды (например), то при столкновении с другим приспособлением группа распадется на части, в то время как если вы отметите частицы как тип пружины, то они сохранят свою сплоченность при столкновении.

-

-

Синтаксис:

-

physics_particle_group_begin(flags, groupflags, x, y, ang, xv, yv, ang_velocity, col, alpha, strength, category)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
flagsФизика Частица Флаг Константа(s)The flags to set on the particle.
groupflagsФизика Группа частиц Флаг Константа(s)The group flags to set on the particle group (see table at the top).
xРеальноThe x position to create the particle group at.
yРеальноThe y position to create the particle group at.
angРеальноThe angle (in degrees) to rotate the group to on create.
xvРеальноThe initial horizontal velocity.
yvРеальноThe initial vertical velocity.
ang_velocityРеальноThe initial angular velocity.
colЦветThe base colour to use for the particle group.
alphaРеальноThe base alpha to use for the particle group.
strengthРеальноSet the cohesion strength between particles in the group.
categoryРеальноThe user defined category to which the group belongs.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var flags = phy_particle_flag_water | phy_particle_flag_viscous | phy_particle_flag_tensile;
- var groupflags = phy_particle_group_flag_solid | phy_particle_group_flag_rigid;
- physics_particle_group_begin(flags, groupflags, mouse_x, mouse_y, 0, 0, 0, 0, c_white, 1, 1, 2);
- physics_particle_group_circle(100);
- mLastGroup = physics_particle_group_end();

-

Приведенный выше код сохраняет флаги для типа частиц и свойства группы частиц в переменных, а затем использует их для создания круглой группы частиц с радиусом 100px в позиции мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_box.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_box.htm index a21bf86e3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_box.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_box.htm @@ -1,68 +0,0 @@ - - - - - - physics_particle_group_box - - - - - - - - - - -

physics_particle_group_box

-

Эта функция задает форму создаваемой группы частиц. Сначала вы должны начать определение группы с помощью функции physics_particle_group_begin(), а затем вы используете эту функцию для установки приблизительной половины ширины и половины высоты группы в пикселях - приблизительной, потому что точные ширина и высота будут зависеть от размера базовых частиц, определенных функцией physics_particle_set_radius() поскольку физическое моделирование пытается "вписать" как можно больше частиц в заданную форму. Наконец, необходимо вызвать функцию physics_particle_group_end() для создания группы частиц в комнате.

-

-

Синтаксис:

-

physics_particle_group_box(halfWidth, halfHeight)

- - - - - - - - - - - - - - - -
АргументТипОписание
halfWidthThe half width of the box.
halfHeightThe half height of the box.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var flags = phy_particle_flag_water | phy_particle_flag_viscous | phy_particle_flag_tensile;
- var groupflags = phy_particle_group_flag_solid;
- physics_particle_group_begin(flags, groupflags, mouse_x, mouse_y, 0, 0, 0, 0, c_white, 1, 1, 2);
- physics_particle_group_box(100, 100);
- mLastGroup = physics_particle_group_end();

-

Приведенный выше код сохраняет флаги для типа частиц и свойства группы частиц в переменных, а затем использует их для создания прямоугольной группы частиц со сторонами 200px в позиции мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_circle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_circle.htm index a4a7c0eb8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_circle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_circle.htm @@ -1,63 +0,0 @@ - - - - - - physics_particle_group_circle - - - - - - - - - - -

physics_particle_group_circle

-

Эта функция задает форму создаваемой группы частиц. Сначала вы должны начать определение группы с помощью функции physics_particle_group_begin(), а затем вы - использовать эту функцию для установки приблизительного радиуса группы в пикселях - приблизительного, потому что точный радиус будет зависеть от размера базовых частиц, определенного функцией physics_particle_set_radius() поскольку физическая симуляция пытается "вписать" как можно больше частиц в заданную форму. Наконец, вам нужно вызвать physics_particle_group_end() для создания группы - частиц в комнате.

-

-

Синтаксис:

-

physics_particle_group_circle(radius)

- - - - - - - - - - - -
АргументТипОписание
radiusThe radius (in pixels) of the circle to create.
-

-

Возвращается:

-

-

-

Пример:

-

var flags = phy_particle_flag_water | phy_particle_flag_viscous | phy_particle_flag_tensile;
var groupflags = phy_particle_group_flag_solid;
physics_particle_group_begin(flags, groupflags, mouse_x, mouse_y, 0, 0, 0, 0, c_white, 1, 1, 2);
physics_particle_group_circle(100); -
mLastGroup = physics_particle_group_end();

-

Приведенный выше код сохраняет флаги для типа частиц и свойства группы частиц в переменных, а затем использует их для создания круглой группы частиц с радиусом 100px в позиции мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_count.htm index 8162c19f0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_count.htm @@ -1,61 +0,0 @@ - - - - - - physics_particle_group_count - - - - - - - - - - - -

physics_particle_group_count

-

Эта функция возвращает количество частиц, активных в одной группе. Индекс группы (ID) - это значение, которое возвращается при вызове функции physics_particle_group_end().

-

-

Синтаксис:

-

physics_particle_group_count(group)

- - - - - - - - - - - -
АргументТипОписание
groupThe group index (ID) of the particle group to count.
-

-

Возвращается:

-

-

-

Пример:

-

gp_num = physics_particle_group_count(group1);

-

Приведенный выше код получит количество частиц, использованных для создания группы, индексированной в переменной "group1", и сохранит значение в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_delete.htm index 479853602..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_delete.htm @@ -1,62 +0,0 @@ - - - - - - physics_particle_group_delete - - - - - - - - - - -

physics_particle_group_delete

-

С помощью этой функции вы можете удалить группу частиц из физического моделирования в текущей комнате. Функция принимает уникальный идентификатор группы, которую нужно удалить, возвращаемый функцией physics_particle_group_end().

-

-

Синтаксис:

-

physics_particle_group_delete(ind)

- - - - - - - - - - - - - -
АргументТипОписание
indИдентификатор группы физических частицThe index (ID) of the particle group to delete.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

physics_particle_group_delete(gp1);

-

Приведенный выше код удалит из симуляции все частицы, составляющие группу с идентификатором, хранящимся в переменной "gp1".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_end.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_end.htm index 0785d2529..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_end.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_end.htm @@ -1,51 +0,0 @@ - - - - - - physics_particle_group_end - - - - - - - - - - -

physics_particle_group_end

-

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

-

-

Синтаксис:

-

physics_particle_group_end()

-

-

Возвращается:

-

Physics Particle Group ID

-

-

Пример:

-

var flags = phy_particle_flag_water | phy_particle_flag_viscous | phy_particle_flag_tensile;
- var groupflags = phy_particle_group_flag_solid;
- physics_particle_group_begin(flags, groupflags, mouse_x, mouse_y, 0, 0, 0, 0, c_white, 1, 1, 2);
- physics_particle_group_circle(100);
- mLastGroup = physics_particle_group_end();

-

Приведенный выше код сохраняет флаги для типа частиц и свойства группы частиц в переменных, а затем использует их для создания круглой группы частиц с радиусом 100px в позиции мыши. ID созданной группы хранится в переменной "mLastGroup".

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_ang_vel.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_ang_vel.htm index d4849f40b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_ang_vel.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_ang_vel.htm @@ -1,62 +0,0 @@ - - - - - - physics_particle_group_get_ang_vel - - - - - - - - - - - -

physics_particle_group_get_ang_vel

-

С помощью этой функции можно получить угловую скорость группы частиц. Значение group - это значение, которое было возвращено при создании группы частиц с помощью функции physics_particle_group_end(), - и функция вернет значение, которое является комбинированным значением текущих установленных флагов.

-

-

Синтаксис:

-

physics_particle_group_get_ang_vel(group)

- - - - - - - - - - - -
АргументТипОписание
groupThe particle group to get.
-

-

Возвращается:

-

-

-

Пример:

-

ang_v = physics_particle_group_get_ang_vel(group1);

-

Приведенный выше код получит угловую скорость группы частиц, индексированных в переменной "group1", и сохранит ее в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_angle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_angle.htm index d0b06a4c2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_angle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_angle.htm @@ -1,62 +0,0 @@ - - - - - - physics_particle_group_get_angle - - - - - - - - - - - -

physics_particle_group_get_angle

-

С помощью этой функции вы можете получить вращение (угол) в комнате группы частиц. Значение group - это значение, которое было возвращено при создании группы частиц с помощью функции physics_particle_group_end(), - и функция вернет значение, которое является комбинированным значением текущих установленных флагов.

-

-

Синтаксис:

-

physics_particle_group_get_angle(group)

- - - - - - - - - - - -
АргументТипОписание
groupThe particle group to get.
-

-

Возвращается:

-

-

-

Пример:

-

ang = physics_particle_group_get_angle(group1);

-

Приведенный выше код получит угол группы частиц, проиндексированных в переменной "group1", и сохранит его в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_centre_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_centre_x.htm index 04c4ebfe6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_centre_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_centre_x.htm @@ -1,62 +0,0 @@ - - - - - - physics_particle_group_get_centre_x - - - - - - - - - - - -

physics_particle_group_get_centre_x

-

С помощью этой функции можно получить x-компонент центра масс целой группы частиц. Значение group - это значение, которое было возвращено при создании группы частиц с помощью функции physics_particle_group_end(), - и функция вернет значение, которое является комбинированным значением текущих установленных флагов.

-

-

Синтаксис:

-

physics_particle_group_get_centre_x(group)

- - - - - - - - - - - -
АргументТипОписание
groupThe particle group to get.
-

-

Возвращается:

-

-

-

Пример:

-

xx = physics_particle_group_get_centre_x(group1);
yy = physics_particle_group_get_centre_y(group1);

-

Приведенный выше код получит положение x и y для центра масс группы частиц, индексированных в переменной "group1", и сохранит их в переменных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_centre_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_centre_y.htm index 01f2a7a9d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_centre_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_centre_y.htm @@ -1,62 +0,0 @@ - - - - - - physics_particle_group_get_centre_y - - - - - - - - - - - -

physics_particle_group_get_centre_y

-

С помощью этой функции можно получить компонент y центра масс целой группы частиц. Значение group - это значение, которое было возвращено при создании группы частиц с помощью функции physics_particle_group_end(), - и функция вернет значение, которое является комбинированным значением текущих установленных флагов.

-

-

Синтаксис:

-

physics_particle_group_get_centre_y(group)

- - - - - - - - - - - -
АргументТипОписание
groupThe particle group to get.
-

-

Возвращается:

-

-

-

Пример:

-

xx = physics_particle_group_get_centre_x(group1);
yy = physics_particle_group_get_centre_y(group1);

-

Приведенный выше код получит положение x и y для центра масс группы частиц, индексированных в переменной "group1", и сохранит их в переменных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_data.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_data.htm index e9b3c10e3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_data.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_data.htm @@ -1,127 +0,0 @@ - - - - - - physics_particle_group_get_data - - - - - - - - - - - -

physics_particle_group_get_data

-

Эта функция возвращает различные фрагменты информации о группе частиц в физической симуляции, используя заданные флаги проверки. Индекс группы (ее ID) - это тот, который был возвращен функцией physics_particle_group_end(), а используемый буфер должен быть создан ранее с помощью функции buffer_create(). Он должен быть типа "grow", с размером, приблизительно равным размеру ожидаемых возвращаемых данных. Сами флаги устанавливаются с помощью констант, приведенных ниже, и для получения нужной информации можно использовать побитовую комбинацию или "|" для создания одного значения флага.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписаниеТип данных
phy_particle_data_flag_typeflagsЗначение флагов для частицы.buffer_u32
phy_particle_data_flag_positionПозиция x и y частицы.2 x buffer_f32
phy_particle_data_flag_velocityГоризонтальная и вертикальная скорость.2 x buffer_f32
phy_particle_data_flag_colourЦвет и альфа-значение (шестнадцатеричное).buffer_f32
phy_particle_data_flag_categoryКатегория частицы (определенная при создании группы, к которой она принадлежит).buffer_u32
-

-

Синтаксис:

-

physics_particle_group_get_data(group, buffer, flags)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
groupИдентификатор группы физических частицThe group index (ID) of the particle group to get the data from.
bufferИдентификатор буфераThe (previously created) buffer to use to store the data.
flagsФизические данные частицы Флаг Константа(ы)The flags to use to extract data about specific particle types.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var count = physics_particle_group_count(gp);
- var flags = phy_particle_data_flag_position | phy_particle_data_flag_colour;
- if (count > 0)
- {
-     var buffer = buffer_create(count * 12, buffer_grow, 4);
-     physics_particle_group_get_data(gp, buffer, flags);
-     for (var n = 0; n < count; n++)
-     {
-         var xx = buffer_read(buffer, buffer_f32);
-         var yy = buffer_read(buffer, buffer_f32);
-         var argb = buffer_read(buffer, buffer_u32);
-         var alpha = (argb >> 24) & 255;
-         draw_sprite_ext(sprBlob, 0, xx, yy, 1, 1, 0, c_green, alpha);
-     }
-     buffer_delete(buffer);
- }

-

Приведенный выше код получает положение и скорость каждой частицы в группе, индексируемой переменной "gp", сохраняет данные буфера в ряде переменных, а затем использует их для рисования sprite в положении каждой частицы в группе.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_inertia.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_inertia.htm index beb8fc873..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_inertia.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_inertia.htm @@ -1,63 +0,0 @@ - - - - - - physics_particle_group_get_inertia - - - - - - - - - - - -

physics_particle_group_get_inertia

-

С помощью этой функции можно получить инерцию целой группы частиц. Значение group - это значение, которое было возвращено при создании группы частиц с помощью функции physics_particle_group_end(), а функция вернет значение, которое является комбинированным значением текущих установленных флагов.

-

-

Синтаксис:

-

physics_particle_group_get_inertia(group)

- - - - - - - - - - - - - -
АргументТипОписание
groupИдентификатор группы физических частицThe particle group to get.
-

-

Возвращается:

-

Real

-

-

Пример:

-

i = physics_particle_group_get_inertia(group1);

-

Приведенный выше код получит инерцию группы частиц, индексированных в переменной "group1", и сохранит ее в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_mass.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_mass.htm index 206d37850..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_mass.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_mass.htm @@ -1,63 +0,0 @@ - - - - - - physics_particle_group_get_mass - - - - - - - - - - - -

physics_particle_group_get_mass

-

С помощью этой функции можно получить массу целой группы частиц. Значение group - это значение, которое было возвращено при создании группы частиц с помощью функции physics_particle_group_end().

-

-

Синтаксис:

-

physics_particle_group_get_mass(group)

- - - - - - - - - - - - - -
АргументТипОписание
groupИдентификатор группы физических частицThe particle group to get.
-

-

Возвращается:

-

Real

-

-

Пример:

-

var _mass = physics_particle_group_get_mass(group1);

-

Приведенный выше код получит массу группы частиц, индексированных в переменной "group1", и сохранит ее в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_vel_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_vel_x.htm index 374d05e0d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_vel_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_vel_x.htm @@ -1,62 +0,0 @@ - - - - - - physics_particle_group_get_vel_x - - - - - - - - - - - -

physics_particle_group_get_vel_x

-

С помощью этой функции можно получить горизонтальную скорость группы частиц. Значение group - это значение, которое было возвращено при создании группы частиц с помощью функции physics_particle_group_end(), - и функция вернет значение, которое является комбинированным значением текущих установленных флагов.

-

-

Синтаксис:

-

physics_particle_group_get_vel_x(group)

- - - - - - - - - - - -
АргументТипОписание
groupThe particle group to get.
-

-

Возвращается:

-

-

-

Пример:

-

vx = physics_particle_group_get_vel_x(group1);
vy = physics_particle_group_get_vel_y(group1);

-

Приведенный выше код получит горизонтальную и вертикальную скорость группы частиц, индексированных в переменной "group1", и сохранит их в переменных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_vel_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_vel_y.htm index f19b52e2d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_vel_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_vel_y.htm @@ -1,62 +0,0 @@ - - - - - - physics_particle_group_get_vel_y - - - - - - - - - - - -

physics_particle_group_get_vel_y

-

С помощью этой функции можно получить вертикальную скорость группы частиц. Значение group - это значение, которое было возвращено при создании группы частиц с помощью функции physics_particle_group_end(), - а функция вернет значение, которое является суммарным значением текущих установленных флагов.

-

-

Синтаксис:

-

physics_particle_group_get_vel_y(group)

- - - - - - - - - - - -
АргументТипОписание
groupThe particle group to get.
-

-

Возвращается:

-

-

-

Пример:

-

vx = physics_particle_group_get_vel_x(group1);
vy = physics_particle_group_get_vel_y(group1);

-

Приведенный выше код получит горизонтальную и вертикальную скорость группы частиц, индексированных в переменной "group1", и сохранит их в переменных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_x.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_x.htm index 1ef5966f4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_x.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_x.htm @@ -1,62 +0,0 @@ - - - - - - physics_particle_group_get_x - - - - - - - - - - - -

physics_particle_group_get_x

-

С помощью этой функции вы можете получить положение x в комнате группы частиц. Значение group - это значение, которое было возвращено при создании группы частиц с помощью функции physics_particle_group_end(), - и функция вернет значение, которое является комбинированным значением текущих установленных флагов.

-

-

Синтаксис:

-

physics_particle_group_get_x(group)

- - - - - - - - - - - -
АргументТипОписание
groupThe particle group to get.
-

-

Возвращается:

-

-

-

Пример:

-

xx = physics_particle_group_get_x(group1);
yy = physics_particle_group_get_y(group1);

-

Приведенный выше код получит x и y позиции группы частиц, индексированных в переменной "group1", и сохранит их в переменных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_y.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_y.htm index 2a76ca009..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_y.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_get_y.htm @@ -1,62 +0,0 @@ - - - - - - physics_particle_group_get_y - - - - - - - - - - - -

physics_particle_group_get_y

-

С помощью этой функции можно получить положение y в комнате группы частиц. Значение group - это значение, которое было возвращено при создании группы частиц с помощью функции physics_particle_group_end(), - и функция вернет значение, которое является комбинированным значением текущих установленных флагов.

-

-

Синтаксис:

-

physics_particle_group_get_y(group)

- - - - - - - - - - - -
АргументТипОписание
groupThe particle group to get.
-

-

Возвращается:

-

-

-

Пример:

-

xx = physics_particle_group_get_x(group1);
yy = physics_particle_group_get_y(group1);

-

Приведенный выше код получит x и y позиции группы частиц, индексированных в переменной "group1", и сохранит их в переменных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_join.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_join.htm index 7bd976f60..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_join.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_join.htm @@ -1,75 +0,0 @@ - - - - - - physics_particle_group_join - - - - - - - - - - -

physics_particle_group_join

-

С помощью этой функции вы можете объединить две группы частиц, при этом объединенные группы будут вести себя так, как будто они являются частью одного объекта. Группы должны быть созданы с перекрывающимися краями, так как, если они еще не соприкасаются, они не будут соединены. Функция принимает уникальные идентификаторы групп, которые необходимо объединить, возвращаемые функцией physics_particle_group_end(), и вы можете использовать функцию любое количество раз для одной группы, чтобы соединить вместе различные мягкие тела.

-

-

Синтаксис:

-

physics_particle_group_join(to, from)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
toИдентификатор группы физических частицThe first particle group to join.
fromИдентификатор группы физических частицThe second particle group to join.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var flags = phy_particle_flag_water | phy_particle_flag_viscous | phy_particle_flag_tensile;
- var groupflags = phy_particle_group_flag_solid;
- physics_particle_group_begin(flags, groupflags, mouse_x- 45, mouse_y, 0, 0, 0, 0, c_white, 1, 1, 2);
- physics_particle_group_circle(50);
- var g1 = physics_particle_group_end();
- physics_particle_group_begin(flags, groupflags, mouse_x + 45, mouse_y, 0, 0, 0, 0, c_white, 1, 1, 2);
- physics_particle_group_circle(50);
- var g2 = physics_particle_group_end();
- physics_particle_group_join(g1, g2);

-

Приведенный выше код создает две круговые группы частиц и соединяет их вместе.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_polygon.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_polygon.htm index 423c2b97a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_polygon.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_group_polygon.htm @@ -1,53 +0,0 @@ - - - - - - physics_particle_group_polygon - - - - - - - - - - -

physics_particle_group_polygon

-

Эта функция задает форму создаваемой группы частиц. Сначала вы должны начать определение группы с помощью функции physics_particle_group_begin(), а затем вы - использовать эту функцию, чтобы сообщить GameMaker, что вы собираетесь добавить приблизительные точки, которые будут использоваться для определения формы многоугольника - приблизительные, потому что точная форма будет зависеть от размера базовых частиц, определяемого функцией - функция physics_particle_set_radius() поскольку физическая симуляция пытается "вписать" как можно больше частиц в заданную форму.

-

Затем вы определяете точки многоугольника, вызывая функцию physics_particle_group_add_point()и задаете положение x/y в комнате для каждой из них (минимум 3, максимум 8, и они - могут быть определены как вогнутые, но точки внутри фигуры будут проигнорированы). Наконец, вам нужно вызвать physics_particle_group_end() для создания группы частиц в комнате.

-

-

Синтаксис:

-

physics_particle_group_polygon()

-

-

Возвращается:

-

-

-

Пример:

-

var flags = phy_particle_flag_water | phy_particle_flag_viscous | phy_particle_flag_tensile;
var groupflags = phy_particle_group_flag_solid;
physics_particle_group_begin(flags, groupflags, mouse_x, mouse_y, 0, 0, 0, 0, c_white, 1, 1, 2);
physics_particle_group_polygon(); -
physics_particle_group_add_point(200, 200);
physics_particle_group_add_point(300, 300);
physics_particle_group_add_point(100, 300);
mLastGroup = physics_particle_group_end();

-

Приведенный выше код сохраняет флаги для типа частицы и свойства группы частиц в переменных, а затем использует их для создания группы частиц полигона с тремя сторонами в позиции мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_category_flags.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_category_flags.htm index aa585ba2e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_category_flags.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_category_flags.htm @@ -1,122 +0,0 @@ - - - - - - physics_particle_set_category_flags - - - - - - - - - - -

physics_particle_set_category_flags

-

С помощью этой функции вы можете изменить флаги частиц для категории частиц. Значение category - это значение, которое вы определили в функции physics_particle_create() или (если вы создали группу) physics_particle_group_begin(), а флаги - это возвращаемое значение комбинации следующих констант:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
phy_particle_flag_waterСвойства по умолчанию для частицы мягкого тела.
phy_particle_flag_zombieЧастица-зомби - это частица, которая будет уничтожена за один шаг, при этом все остальные будут помечены таким образом.
phy_particle_flag_wallЭто определяет частицу как статическую, по сути, создавая ее как неподвижный объект в физическом моделировании, поскольку она будет оставаться в фиксированном положении независимо от того, что с ней столкнется. Вы должны использовать этот флаг, а не устанавливать плотность на 0.
phy_particle_flag_springПружинные частицы создают эффект прикрепления друг к другу, как будто пружиной. Частицы, созданные с помощью этого флага, "соединяются" попарно, причем каждая частица соединяется с той, которая была ближе всего к ней в момент создания. Попав в пару, частицы не меняют "партнеров", и чем дальше внешняя сила отталкивает их друг от друга, тем с большей силой они столкнутся, когда эта внешняя сила будет снята. Обратите внимание, что как бы далеко ни удалились парные частицы друг от друга, связь между ними не разорвется.
phy_particle_flag_elasticУпругие частицы деформируются и могут также отскакивать при столкновении с другими жесткими телами в физическом моделировании.
phy_particle_flag_viscousВязкая частица - это частица, которая проявляет "цепкость" или "липкость", как масло. Вязкие частицы больше слипаются и склеиваются.
phy_particle_flag_powderЧастицы порошка создают эффект рассеивания, подобный тому, который можно наблюдать при использовании песка или пыли.
phy_particle_flag_tensileРастягивающие частицы используются для создания эффекта поверхностного натяжения, или тугой кривизны на поверхности тела жидкости. Они могут использоваться, например, для создания поверхностного натяжения, которое можно наблюдать на капле воды. Когда натяжение нарушается, частицы подпрыгивают, как если бы они были упругими, но при этом продолжают притягиваться друг к другу. В результате частицы, отскакивая, образуют скопления.
phy_particle_flag_colourmixingЧастицы, смешивающие цвета, принимают некоторые цвета других частиц, с которыми они сталкиваются. Обратите внимание, что если только одна из двух сталкивающихся частиц является смешивающей цвет, другая частица сохраняет свой цвет до столкновения.
-

Эти флаги используют битовую маскировку для создания конечного выходного значения, которое затем проверяется для установки различных базовых свойств категории частиц (при этом базовым свойством всегда является свойство phy_particle_flag_water). Например, если вы хотите смоделировать вязкую жидкость с поверхностным натяжением, вы можете использовать побитовую комбина цию или "|" для маскировки соответствующих битов, как показано в примере ниже. Таким образом, вы можете установить различные свойства (кроме глобальных) для каждой категории создаваемых частиц.

-

-

Синтаксис:

-

physics_particle_set_category_flags(category, flags)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
categoryРеальноThe particle category to set.
flagsФизика Частица Флаг Константа(ы)The flags to set on the particle category.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var flags = phy_particle_flag_water | phy_particle_flag_viscous | phy_particle_flag_tensile;
- physics_particle_set_category_flags(1, flags);

-

Приведенный выше код создаст переменную для хранения значения flags, а затем использует ее для установки флагов всех частиц, созданных со значением категории 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_damping.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_damping.htm index b9d6eb49c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_damping.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_damping.htm @@ -1,64 +0,0 @@ - - - - - - physics_particle_set_damping - - - - - - - - - - -

physics_particle_set_damping

-

С помощью этой функции можно задать линейное демпфирование частиц в симуляции. Демпфирование используется для уменьшения скорости экземпляров в физическом моделировании с течением времени, подобно сопротивлению воздуха в реальном мире. Эта функция является глобальной по области применения, - она изменяет демпфирование не только для новых частиц, созданных после изменения, но и для тех, которые уже присутствуют в симуляции.

-

-

Синтаксис:

-

physics_particle_set_damping(damping)

- - - - - - - - - - - -
АргументТипОписание
dampingThe linear damping to be applied to the particle fixture.
-

-

Возвращается:

-

-

-

Пример:

-

physics_particle_set_radius(15);
physics_particle_set_density(0.5); -
physics_particle_set_damping(1); -
physics_particle_set_gravity_scale(1); -

-

Приведенный выше код установит базовые свойства для всех частиц в симуляции.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_density.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_density.htm index 445697abb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_density.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_density.htm @@ -1,65 +0,0 @@ - - - - - - physics_particle_set_density - - - - - - - - - - -

physics_particle_set_density

-

С помощью этой функции вы можете установить плотность частиц в физическом моделировании. Установка плотности частицы будет иметь прямое влияние на то, какой инерцией она обладает, а также на то, как она реагирует на столкновения, поэтому если вы создадите маленькую частицу с - высокой плотностью, она будет иметь очень большую массу, но если вы зададите большую частицу с низкой плотностью, она будет иметь гораздо меньшую массу. Эта функция имеет глобальный характер, так как она изменяет плотность не только для новых частиц, созданных после - изменения, но и для тех, которые уже присутствуют в моделировании.

-

-

Синтаксис:

-

physics_particle_set_density(density)

- - - - - - - - - - - -
АргументТипОписание
densityThe density of the particle fixture.
-

-

Возвращается:

-

-

-

Пример:

-

physics_particle_set_radius(15);
physics_particle_set_density(0.5); -
physics_particle_set_damping(1); -
physics_particle_set_gravity_scale(1); -

-

Приведенный выше код установит базовые свойства для всех частиц в симуляции.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_flags.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_flags.htm index e8f115fd7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_flags.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_flags.htm @@ -1,122 +0,0 @@ - - - - - - physics_particle_set_flags - - - - - - - - - - -

physics_particle_set_flags

-

С помощью этой функции можно изменить флаги частиц для отдельной частицы. Значение index - это идентификатор частицы, возвращаемый функцией physics_particle_create()а флаги - это возвращаемое значение комбинации следующих констант:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
phy_particle_flag_waterСвойства по умолчанию для частицы мягкого тела.
phy_particle_flag_zombieЧастица-зомби - это частица, которая будет уничтожена за один шаг, при этом все остальные будут помечены таким образом.
phy_particle_flag_wallЭто определяет частицу как статическую, по сути, создавая ее как неподвижный объект в физическом моделировании, поскольку она будет оставаться в фиксированном положении независимо от того, что с ней столкнется. Вы должны использовать этот флаг, а не устанавливать плотность на 0.
phy_particle_flag_springПружинные частицы создают эффект прикрепления друг к другу, как будто пружиной. Частицы, созданные с помощью этого флага, "соединяются" попарно, причем каждая частица соединяется с той, которая была ближе всего к ней в момент создания. Попав в пару, частицы не меняют "партнеров", и чем дальше внешняя сила отталкивает их друг от друга, тем с большей силой они столкнутся, когда эта внешняя сила будет снята. Обратите внимание, что как бы далеко ни удалились парные частицы друг от друга, связь между ними не разорвется.
phy_particle_flag_elasticУпругие частицы деформируются и могут также отскакивать при столкновении с другими жесткими телами в физическом моделировании.
phy_particle_flag_viscousВязкая частица - это частица, которая проявляет "цепкость" или "липкость", как масло. Вязкие частицы больше слипаются и склеиваются.
phy_particle_flag_powderЧастицы порошка создают эффект рассеивания, подобный тому, который можно наблюдать при использовании песка или пыли.
phy_particle_flag_tensileРастягивающие частицы используются для создания эффекта поверхностного натяжения, или тугой кривизны на поверхности тела жидкости. Они могут использоваться, например, для создания поверхностного натяжения, которое можно наблюдать на капле воды. Когда натяжение нарушается, частицы подпрыгивают, как если бы они были упругими, но при этом продолжают притягиваться друг к другу. В результате частицы, отскакивая, образуют скопления.
phy_particle_flag_colourmixingЧастицы, смешивающие цвета, принимают некоторые цвета других частиц, с которыми они сталкиваются. Обратите внимание, что если только одна из двух сталкивающихся частиц является смешивающей цвет, другая частица сохраняет свой цвет до столкновения.
-

Эти флаги используют битовую маскировку для создания конечного выходного значения, которое затем проверяется для установки различных базовых свойств частицы (при этом базовым свойством всегда является свойство phy_particle_flag_water). Например, если вы хотите смоделировать вязкую жидкость с поверхностным натяжением, вы можете использовать побитовую комбина цию или "|" для маскировки соответствующих битов, как показано в примере ниже. Таким образом, при желании можно задать различные свойства (кроме глобальных) для каждой отдельной создаваемой частицы.

-

-

Синтаксис:

-

physics_particle_set_flags(index, flags)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexФизика Идентификатор частицыThe index of the particle.
flagsФизика Частица Флаг Константа(ы)The flags to set on the particle.
-

-

Возвращается:

-

Real

-

-

Пример:

-

var flags = phy_particle_flag_water | phy_particle_flag_viscous | phy_particle_flag_tensile;
- physics_particle_set_flags(p, flags);

-

Приведенный выше код создаст переменную для хранения значения флагов, а затем использует ее для установки флагов на ранее созданной частице с индексом, хранящимся в переменной "p".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_gravity_scale.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_gravity_scale.htm index 9e6298444..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_gravity_scale.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_gravity_scale.htm @@ -1,66 +0,0 @@ - - - - - - physics_particle_set_gravity_scale - - - - - - - - - - -

physics_particle_set_gravity_scale

-

С помощью этой функции вы можете установить коэффициент масштаба гравитации для частиц в физическом моделировании. Функция предназначена для предотвращения нестабильности в физическом моделировании, особенно при использовании очень маленьких частиц, которые могут вести себя непредсказуемо - (т.е. нарушать сохранение импульса) в таких сценариях, как взрывы. Замедление этих частиц за счет уменьшения масштаба гравитации может стабилизировать их поведение. Эта функция является глобальной, поскольку она изменяет шкалу гравитации не только - для новых частиц, созданных после изменения, но и для тех, которые уже присутствуют в моделировании.

-

ПРИМЕЧАНИЕ: Регулировка количества итераций обновления на шаг (с помощью функции physics_world_update_iterations() может также влиять на воздействие гравитации на частицы. Большее число итераций обеспечивает большую устойчивость к гравитации.

-

-

Синтаксис:

-

physics_particle_set_gravity_scale(scale)

- - - - - - - - - - - -
АргументТипОписание
scaleThe scaling factor to be applied to gravity for all particles.
-

-

Возвращается:

-

-

-

Пример:

-

physics_particle_set_radius(15);
physics_particle_set_density(0.5); -
physics_particle_set_damping(1); -
physics_particle_set_gravity_scale(1); -

-

Приведенный выше код установит базовые свойства для всех частиц в симуляции.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_group_flags.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_group_flags.htm index 637ed0e03..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_group_flags.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_group_flags.htm @@ -1,87 +0,0 @@ - - - - - - physics_particle_set_group_flags - - - - - - - - - - -

physics_particle_set_group_flags

-

С помощью этой функции вы можете изменить флаги группы для группы частиц. Значение group - это значение, которое было возвращено при создании группы частиц с помощью функции physics_particle_group_end()а флаги - это возвращаемое значение комбинации следующих констант:

- - - - - - - - - - - - - - - -
ПостояннаяОписание
phy_particle_group_flag_solidГруппа твердых частиц не позволяет другим элементам закрепиться внутри нее. Если в нее проникает что-либо, группа твердых частиц выталкивает нарушителя обратно на поверхность, благодаря чему группа твердых частиц обладает особенно сильной силой отталкивания.
phy_particle_group_flag_rigidЖесткие группы частиц - это группы, форма которых не меняется, даже когда они сталкиваются с другими приспособлениями.
-

Эти групповые флаги используют битовую маскировку для создания конечного выходного значения, которое затем проверяется для установки различных основных свойств группы, помимо тех, которые устанавливаются флагами частиц. Вы можете использовать ни одну, одну или обе эти константы, используя побитовую комбинацию или "|" для маскировки соответствующих битов (как показано в примере ниже).

-

-

Синтаксис:

-

physics_particle_set_group_flags(group, flags)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
groupИдентификатор группы физических частицThe particle group to set.
flagsФизика Группа частиц Флаг Константа(ы)The flags to set on the particle group.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var flags = phy_particle_group_flag_solid | phy_particle_group_flag_rigid;
- physics_particle_set_group_flags(group, flags);

-

Приведенный выше код создаст переменную для хранения значения flags и затем использует ее для установки флагов всех частиц, созданных в группе, индексируемой переменной "group".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_max_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_max_count.htm index 9e43e3994..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_max_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_max_count.htm @@ -1,62 +0,0 @@ - - - - - - physics_particle_set_max_count - - - - - - - - - - - -

physics_particle_set_max_count

-

Эта функция устанавливает общее допустимое количество частиц в физической симуляции. Если вы установите это значение равным 0, то количество создаваемых частиц не будет ограничено, а установка любого другого значения остановит дальнейшее создание частиц, когда - общее количество частиц будет равно этому значению. Обратите внимание, что минимальное количество частиц, которое можно создать в симуляции, равно 128, поэтому установка меньшего значения не будет иметь никакого эффекта (если не установлено значение 0).

-

-

Синтаксис:

-

physics_particle_set_max_count(count)

- - - - - - - - - - - -
АргументТипОписание
countThe maximum number of particles to permit.
-

-

Возвращается:

-

-

-

Пример:

-

physics_particle_set_max_count(500);

-

Приведенный выше код установит количество частиц в физическом симуляторе на 500.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_radius.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_radius.htm index e1cb19a9e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_radius.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/Soft_Body_Particles/physics_particle_set_radius.htm @@ -1,64 +0,0 @@ - - - - - - physics_particle_set_radius - - - - - - - - - - -

physics_particle_set_radius

-

С помощью этой функции можно задать радиус (в пикселях) для частиц в физическом моделировании. Эта функция является глобальной, так как она изменяет радиус не только для новых частиц, созданных после изменения, но и для тех, которые уже - присутствующих в симуляции.

-

-

Синтаксис:

-

physics_particle_set_radius(radius)

- - - - - - - - - - - -
АргументТипОписание
radiusThe radius (in pixels) of the particle fixture.
-

-

Возвращается:

-

-

-

Пример:

-

physics_particle_set_radius(15);
physics_particle_set_density(0.5); -
physics_particle_set_damping(1); -
physics_particle_set_gravity_scale(1); -

-

Приведенный выше код установит базовые свойства для всех частиц в симуляции.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/The_Physics_World.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/The_Physics_World.htm index b9c138645..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/The_Physics_World.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/The_Physics_World.htm @@ -1,47 +0,0 @@ - - - - - - Мир физики - - - - - - - - - - -

Мир физики

-

Прежде чем в GameMaker начнут происходить какие-либо физические реакции, необходимо определить физический мир, в котором они будут происходить. Если вы этого не сделаете, GameMaker по умолчанию будет использовать базовые функции столкновений, а весь остальной код или настройки, связанные с физикой, будут проигнорированы. Вы можете задать физический мир в редакторе комнат, но вы также можете задать те же свойства с помощью кода, используя следующие функции:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_draw_debug.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_draw_debug.htm index 1f5443d98..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_draw_debug.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_draw_debug.htm @@ -1,52 +0,0 @@ - - - - - - physics_draw_debug - - - - - - - - - - -

physics_draw_debug

-

При создании физической системы в GameMaker часто важно иметь визуальное представление того, что происходит с экземпляром. Этого можно достичь с помощью physics_draw_debug(), который рисует схематичный контур - физических свойств, связанных с экземпляром, выполняющим код. Вот изображение того, как это выглядит:

-

Следует отметить, что для того, чтобы это сработало, оно должно быть в событии draw экземпляра - и он будет нарисован с использованием текущего цвета рисования.

-

-

Синтаксис:

-

physics_draw_debug()

-

-

Возвращается:

-

-

-

Пример:

-

draw_set_colour(c_red);
physics_draw_debug(); -

-

Приведенный выше код нарисует представление физических свойств, связанных с этим экземпляром, используя красный цвет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_pause_enable.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_pause_enable.htm index b2f59d24f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_pause_enable.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_pause_enable.htm @@ -1,66 +0,0 @@ - - - - - - physics_pause_enable - - - - - - - - - - -

physics_pause_enable

-

Обычно, чтобы физическая симуляция работала, она должна быть непрерывной, ее нельзя останавливать и запускать или внезапно перемещать объекты из одного места в другое в комнате. Однако бывают моменты, когда необходимо приостановить симуляцию, например, если устройство os остановилось, и тогда используется эта функция. Она приостанавливает моделирование, если флаг установлен в true, и никакие дальнейшие физические расчеты не будут выполняться, пока флаг не будет снова установлен в false.

-

ПРИМЕЧАНИЕ: Это особенно полезно, если вы хотите деактивировать все экземпляры в комнате, поскольку даже при деактивации физическое тело будет продолжать рассчитываться и моделироваться в физическом мире.

-

-

Синтаксис:

-

physics_pause_enable(flag)

- - - - - - - - - - - -
АргументТипОписание
flagThis can be set to true чтобы приостановить моделирование, или false, чтобы запустить его снова.
-

-

Возвращается:

-

-

-

Пример:

-

if os_is_paused()
- {
-     physics_pause_enable(true);
-     instance_deactivate_all(true);
-     instance_create_layer(x, y, "Controllers", obj_pause_menu);
- }

-

Код выше проверяет, была ли ОС приостановлена, и если да, то приостанавливает физический мир, деактивирует все, кроме себя, а затем создает экземпляр меню паузы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_create.htm index a3a66228d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_create.htm @@ -1,66 +0,0 @@ - - - - - - physics_world_create - - - - - - - - - - - -

physics_world_create

-

Даже если вы определили физику для своих объектов, без мира, в котором они будут размещены, они будут по умолчанию использовать традиционную систему столкновений GameMaker, поэтому вам нужна эта функция для создания системы физики для указанной комнаты либо - в событии объекта, либо в коде создания самой комнаты (ее также можно определить без использования кода в редакторе комнат). Эта функция свяжет физический "мир" с комнатой, и все экземпляры, созданные в комнате, будут вести себя, используя - физику, которая была определена для них и для самого мира.

-

Вы заметите, что у нас есть аргумент, определяющий соотношение между размером пикселя и метрами. - Это связано с тем, что физические функции работают с реальными измерениями, и поэтому мы должны перевести координаты и размеры пикселей в эти реальные измерения с помощью "масштаба пикселей в метры". Вы должны настроить параметр pixeltometrescale так, чтобы средний размер пикселей используемых вами объектов примерно соответствовал размеру симулируемых объектов физики; выше вы видите, что мы установили 32 пикселя, что эквивалентно 1 метру. Следует отметить - что физическая система будет работать с большими и меньшими соотношениями, но наилучшая производительность достигается, когда реальные размеры объектов не меньше 0,1 метра и не больше 50 метров.

-

-

Синтаксис:

-

physics_world_create(pixeltometrescale);

- - - - - - - - - - - -
АргументТипОписание
pixeltometrescaledefines the ratio of pixels on screen to metres in the real world. A ratio of 32:1 will be specified as 1/32 (or 0.03125).
-

-

Возвращается:

-

-

-

Пример:

-

physics_world_create(1/32);

-

Приведенный выше код создаст физический мир в текущей комнате с соотношением масштаба 32 пикселя, что эквивалентно 1 метру.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_draw_debug.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_draw_debug.htm index 26951f203..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_draw_debug.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_draw_debug.htm @@ -1,118 +0,0 @@ - - - - - - physics_world_draw_debug - - - - - - - - - - - -

physics_world_draw_debug

-

Эта функция рисует представление системы физического мира комнаты, чтобы помочь в отладке, когда у вас возникают проблемы с правильной работой физической сцены. Иногда проблема может быть в части рендеринга вашей игры, например, sprite может быть нарисован в неправильном положении или вращении, создавая видимость неправильной физики, или может быть, что ваши расчеты не верны. В любом случае, эта функция поможет вам найти и решить проблему, нарисовав то, что происходит в вашей системе физики. Для этого нужно указать, какую часть системы нужно нарисовать, и это делается путем передачи значения, созданного из битов, хранящихся в различных константах "флага":

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Флаг отладки физики
ФлагОписание
phy_debug_render_aabbЭто показывает абсолютную границу каждого светильника по отношению к оси помещения
phy_debug_render_collision_pairsЭто покажет все приспособления, которые в настоящее время находятся в столкновении
phy_debug_render_comsЗдесь отмечается центр масс каждого светильника в комнате
phy_debug_render_core_shapesПоказывает основные формы, из которых состоят светильники в комнате
phy_debug_render_jointsЭто позволит нарисовать все стыки всех светильников в комнате
phy_debug_render_obbЗдесь показана относительная ограничивающая рамка для светильников в комнате
phy_debug_render_shapesЭто показывает фактические формы, из которых состоят светильники в помещении
-

Таким образом, чтобы нарисовать любые два из этих вариантов, нам нужно сделать побитовое "или"GameMaker это обозначается | ) для этих двух вариантов и сохранить полученную переменную для использования функцией. Вот пример того, как можно задать переменную для использования с функцией, которая будет рисовать только центры масс и соединения всех светильников в комнате:

-

flag = phy_debug_render_coms | phy_debug_render_shapes;

-

Что даст вам что-то вроде этого:

-

Как вы можете видеть из приведенного выше кода, на экране рисуются только формы и центры масс (а также цвета, представляющие их состояния - за дополнительной информацией обращайтесь к документации Box 2D on-line). Таким же образом вы можете отобразить больше или даже все константы, которые вы хотите отладить... Просто "или" их все вместе! Следует отметить еще один момент - эта функция должна вызываться только в событии рисования экземпляра, который имеет глубину меньше, чем те, которые вы хотите отладить, иначе вы не сможете увидеть отладочную информацию.

-

-

Синтаксис:

-

physics_world_draw_debug(flag)

- - - - - - - - - - - - - -
АргументТипОписание
flagФлаг отладки физики(s)The flag value for showing different debug features
-

-

Возвращается:

-

N/A

-

-

Пример:

-

flag = phy_debug_render_aabb | phy_debug_render_collision_pairs | phy_debug_render_obb;
- physics_world_draw_debug(flag);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_gravity.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_gravity.htm index 63c78ede7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_gravity.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_gravity.htm @@ -1,70 +0,0 @@ - - - - - - physics_world_gravity - - - - - - - - - - -

physics_world_gravity

-

Как и все функции физики, physics_world_gravity() будет работать с экземпляром только в том случае, если для комнаты определен физический мир в редакторе комнат или с помощью функции physics_world_create(). Она будет - затем использовать точку 0,0, определяющую физический мир, для вычисления направления и силы тяжести на основе вектора, вычисленного из входов xg и yg. Вот несколько изображений для иллюстрации...

-

Как вы можете видеть, координаты xg,yg относятся к положению 0,0, как определено для - физического мира, а сама гравитация рассчитывается как вектор этих двух компонентов. Так, значения по умолчанию 0,10 дадут направление гравитации вниз (270 градусов) с ускорением 10 метров в секунду в квадрате. Обратите внимание на метры в секунду в квадрате! - Как и все функции физики, гравитация рассчитывается с использованием метров в качестве базового измерения, поэтому здесь важен масштаб от пикселя до метра, который вы установите в функции physics_world_create. Гравитация также накапливается на объекте (но - точная величина зависит от того, что вы установили для функции physics_fixture_set_linear_damping()), это означает, что в комнате со скоростью room_speed 60, без демпфирования, объект - будет ускоряться на 10 метров в секунду каждую секунду - что при масштабе 0,1 пикселя в метр равносильно тому, что он будет ускоряться до скорости 100 пикселей в секунду за 60 шагов.

-

-

Синтаксис:

-

physics_world_gravity(xg, yg)

- - - - - - - - - - - - - - - -
АргументТипОписание
xgThe x component of the gravity vector
ygThe y component of the gravity vector
-

-

Возвращается:

-

-

-

Пример:

-

physics_world_gravity(-5, 0);

-

Приведенный выше код установит гравитацию (при условии, что физика комнаты 0,0 установлена в верхнем левом углу) вправо - 0 градусов - с ускорением 5 метров в секунду в квадрате.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_update_iterations.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_update_iterations.htm index 80e80226f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_update_iterations.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_update_iterations.htm @@ -1,62 +0,0 @@ - - - - - - physics_world_update_iterations - - - - - - - - - - -

physics_world_update_iterations

-

Все в GameMaker основано на шагах, и, как правило, каждое событие происходит только один раз за шаг. Однако для достижения необходимой точности физические функции выполняют несколько вычислений на каждом шаге, которые называются "итерациями", количество которых контролируется этой функцией. По умолчанию для системы физики установлено число 10, но оно может быть изменено на большее или меньшее в зависимости от того, сколько раз вы хотите, чтобы физика рассчитывала каждый шаг, но рекомендуется устанавливать его не ниже 5 и не выше 30. Вы также должны знать, что эта функция зависит от функции physics_world_update_speed() функции.

-

-

Синтаксис:

-

physics_world_update_iterations(iterations)

- - - - - - - - - - - - - -
АргументТипОписание
y1РеальноThe iterations (per step) that the physics system will perform
-

-

Возвращается:

-

N/A

-

-

Пример:

-

physics_world_update_iterations(20);

-

Приведенный выше код устанавливает физический мир в текущей комнате для выполнения вычислений 20 раз за шаг.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_update_speed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_update_speed.htm index 2685413eb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_update_speed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/The_Physics_World/physics_world_update_speed.htm @@ -1,63 +0,0 @@ - - - - - - physics_world_update_speed - - - - - - - - - - -

physics_world_update_speed

-

Скорость обновления вGameMaker зависит от скорости комнаты, поэтому если вы установите ее, скажем, на 30, GameMaker будет выполнять 30 шагов в течение секунды. Однако для функций физики этого может быть недостаточно, и вы можете захотеть обновлять данные с немного большей скоростью для повышения стабильности или точности. Для этого мы используем функцию physics_world_update_speed(), которая устанавливает скорость обновления для системы физики независимо от скорости комнаты. Это означает, что вы можете иметь скорость комнаты 30, но установить физику на 60, эффективно удваивая скорость, с которой система физики обновляется и выполняет свои вычисления по сравнению со скоростью, с которой обновляется шаг.

-

ПРИМЕЧАНИЕ: в настоящее время вы не можете установить значение меньше, чем комнатная скорость, но будущие обновления могут изменить это.

-

-

Синтаксис:

-

physics_world_update_speed(speed)

- - - - - - - - - - - - - -
АргументТипОписание
speedРеальноThe number of times per second that the physics system updates
-

-

Возвращается:

-

N/A

-

-

Пример:

-

physics_world_update_speed(room_speed * 2);

-

Приведенный выше код устанавливает скорость обновления системы физики в два раза выше скорости обновления комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/physics_mass_properties.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/physics_mass_properties.htm index 9baed9426..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/physics_mass_properties.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/physics_mass_properties.htm @@ -1,83 +0,0 @@ - - - - - - physics_mass_properties - - - - - - - - - - -

physics_mass_properties

-

Эта функция может использоваться для установки пользовательских значений массы и инерции вращения для экземпляра с поддержкой физики. Обычно масса, центр масс и инерция вращения для экземпляра вычисляются с помощью комбинации площади поверхности связанных приспособлений и их плотности. Однако в особых случаях может потребоваться сместить центр масс или изменить инерцию, и тогда вы можете использовать эту функцию.

-

Масса

-

Масса рассчитывается в реальном весе (т.е. в килограммах), поэтому всегда старайтесь сохранять значения реалистичными для того, что вы моделируете. Так, если ваш физический объект должен представлять человека, его масса может быть, скажем, 70 кг, а не 2 кг.

-

Масса не может быть отрицательной.

-

Центр масс

-

Центр масс рассчитывается автоматически на основе формы определенного вами приспособления (или приспособлений). Чтобы получить общее представление о том, где он может находиться, если у вас есть sprite, имеющий ту же форму, что и приспособления, которые вы хотите создать, выберите опцию "center origin", и вы увидите, где примерно будет находиться центр масс.

-

Однако это может быть неверно или вы ищете конкретный эффект от физического объекта, в таком случае эту функцию можно использовать для изменения координат x и y для центра масс. Это локальные/относительные значения, поэтому 0,0 - это точка привязки приспособлений к экземпляру (начало координат экземпляра). Таким образом, при значении центра масс -4,0 центр масс будет смещен влево от начала координат на 4 пикселя.

-

Инерция вращения

-

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

-

Инерция вращения не может быть отрицательной.

-

ПРИМЕЧАНИЕ Эта функция устанавливает массу и инерцию не для отдельных светильников, а для всего экземпляра с включенной физикой, независимо от того, сколько светильников к нему привязано.

-

ПРИМЕЧАНИЕ Эту функцию следует использовать только в случае необходимости, поскольку физическое моделирование рассчитано на то, что масса и инерция будут оптимальными, исходя из плотности и размера приспособления. Изменение этих значений может привести к неожиданным результатам.

-

-

Синтаксис:

-

physics_mass_properties(mass, local_center_x, local_center_y, inertia)

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
massThe new mass that you want the fixture to have.
local_center_xThe local x coordinate of the new center of mass.
local_center_yThe local y coordinate of the new center of mass.
inertiaThe rotational inertia for the fixture.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

physics_mass_properties(phy_mass, -10, -10, phy_inertia);

-

Приведенный выше код сместит центр масс физического тела влево.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Physics/physics_test_overlap.htm b/Manual/contents/GameMaker_Language/GML_Reference/Physics/physics_test_overlap.htm index bac42ac33..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Physics/physics_test_overlap.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Physics/physics_test_overlap.htm @@ -1,82 +0,0 @@ - - - - - - physics_test_overlap - - - - - - - - - - - -

physics_test_overlap

-

Эта функция может быть использована для проверки того, перекрывается ли физическое тело (т.е. крепление экземпляра) или будет ли оно перекрываться при повороте и размещении в заданной позиции в комнате. Аргумент "angle" - это угол поворота, который имеет (или будет иметь) вызываемый экземпляр в проверяемой позиции, а аргумент "obj" может быть либо единственным идентификатором экземпляра, либо индексом объекта, либо аргументом "obj". ключевые слова все или другое.

-

-

Синтаксис:

-

physics_test_overlap(xpos, ypos, angle, obj);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xposРеальноThe x position in the room to check
yposРеальноThe y position in the room to check
angleРеальноThe angle to check (of the calling instance)
obj Идентификаторактива или экземпляраобъекта The object to check for
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if physics_test_overlap(x+20, y-35, 0, obj_Bomb)
- {
-     alarm[0] = room_speed;
-     ignited = true;
- }

-

Приведенный выше код проверяет позицию на наличие перекрытия физического приспособления, и если оно есть, то устанавливает переменную и сигнал тревоги.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Creating_Multiplayer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Creating_Multiplayer.htm index 2104b7137..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Creating_Multiplayer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Creating_Multiplayer.htm @@ -1,153 +0,0 @@ - - - - - - - Создание многопользовательской игры - - - - - - - - - -

Создание многопользовательской игры

-

На этой странице вы подробно рассмотрите шаги по созданию вашей первой многопользовательской игры.
-
- Информацию о системе отката читайте в разделе Система отката.
-
- Для получения подробной информации обо всех функциях Rollback читайте раздел Функции Rollback. -

-

Создание проекта

-

Начните новый проект и создайте sprite для объекта игрока. Вы можете импортировать изображение или просто создать заполненный квадрат.

-

Создайте два объекта:

-
    -
  • obj_game: Это будет управлять вашей многопользовательской игрой.
  • -
  • obj_player: Это будет ваш реальный объект игрока. Каждый подключенный игрок будет иметь свой собственный экземпляр этого объекта, которым он сможет управлять.
    -
    - Назначьте своего игрока sprite объекту игрока. -
  • -
-

-

Поместите obj_game в комнату. Не размещайте obj_player, так как он будет создан автоматически.

-

Начало игры

-

Добавьте событие Create к obj_game и напишите в нем следующий код:

-

ПРИМЕЧАНИЕ Если вы используете GML Visual, используйте соответствующие действия отката.

-

rollback_define_player(obj_player);
-
- var _joined = rollback_join_game();
-
- if (!_joined)
- {
-     rollback_create_game(2);
- } -

-

Сначала он определяет объект игрока, который будет использоваться, и пытается присоединиться к игре, используя rollback_join_game(). Эта функция возвращает true, если система нашла игру, к которой можно присоединиться (это означает, что вы находитесь на правильном URL).

-

Если к игре не удалось присоединиться, возвращается значение false. Когда возвращаемое значение равно false, мы вызываем команду rollback_create_game() для размещения нашей собственной игры. Там мы указываем, что в игре должно быть максимум 2 игрока.

-

ПРИМЕЧАНИЕ В настоящее время вы можете создавать игры только для 4 игроков.

-

Приведенный выше код создаст два экземпляра obj_player в левом верхнем углу комнаты, но они еще не будут управляемыми.

-

-

Движущиеся игроки

-

Ввод управляется системой Rollback и автоматически синхронизируется между игроками.

-

В объекте игрока вызовите rollback_get_input(), чтобы получить структуру, содержащую все входы по умолчанию, которые выглядят следующим образом:

-

left, right, up, down, Z, X, C, space
-
- Они указывают, удерживается ли ключ. *_pressed и *_released также предусмотрены варианты. -

-

Чтобы определить собственные входы, см. раздел Определение входов.

-

Теперь настройте плеер со следующим кодом в его событиях Create и Step:

-

// Create Event
- move_speed = 5;
-
- // Step Event
- var _input = rollback_get_input();
-
- if (_input.left) x -= move_speed;
- if (_input.right) x += move_speed;
- if (_input.up) y -= move_speed;
- if (_input.down) y += move_speed; -

-

Это устанавливает переменную со скоростью игрока, а в событии Step получает входной struct.

-

Нажатие каждой клавиши со стрелкой перемещает экземпляр по соответствующей оси, например, нажатие влево уменьшает X, нажатие вверх уменьшает Y, и так далее.

-

Расположение игроков

-

Перед тестированием давайте убедимся, что игроки создаются в определенных местах, а не появляются в левом верхнем углу комнаты.

-

В событии Create объекта игрока напишите следующее:

-

if (player_id == 0)
- {
-     x = 300;
- }
- else if (player_id == 1)
- {
-     x = room_width - 300;
- }
-
- y = room_height / 2; -

-

player_id это встроенная переменная экземпляра, которая хранит идентификатор экземпляра игрока.

-

Поскольку в нашей игре два игрока, первый игрок будет иметь идентификатор 0, а второй игрок - идентификатор 1.

-

Исходя из этого, мы изменяем начальную позицию X игрока. Положение Y одинаково для обоих вариантов.

-

Теперь запустите игру, и вы увидите обоих игроков, где вы можете управлять первым:

-

-

Второй игрок движется нестабильно сам по себе, что является особенностью системы Rollback. Она автоматически выдает случайные значения каждый кадр для всех определенных входов, являясь базовой формой проверки вашей игры.

-

Вы можете отключить автоматическое случайное движение, вызвав rollback_use_random_input(false)или настроить свой собственный "шуточный" вход для другого игрока.

-

Онлайн соединение

-

Ваш базовый многопользовательский пример завершен, и он готов к выходу в Интернет.

-

По умолчанию система запускается в режиме Sync Test, в котором вы тестируете свою игру в автономном режиме. Чтобы включить онлайн функциональность, второй аргумент rollback_create_game() должен быть установлен на false (что отключает Sync Test).

-

Также необходимо задать регион по умолчанию, который является третьим аргументом. См: Получение имен регионов

-

// obj_game: Create event
- rollback_define_player(obj_player);
-
- var _joined = rollback_join_game();
-
- if (!_joined)
- {
-     rollback_create_game(2, false, "Europe"); // <- disable Sync Test, set default region
- } -

-

В браузере Opera GX войдите в GX.games.

-

Запустите игру через цель Opera GX. Когда система Rollback запускается, она создает новую "комнату": не актив комнаты GameMaker, а виртуальную комнату, в которой игроки будут играть вместе.

-

Приглашение игроков

-

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

-

СОВЕТ Вы можете начать игру до того, как к ней присоединятся игроки, позвонив по телефону rollback_start_game(). Если вы позвоните rollback_use_manual_start() то игра будет ждать, пока вы начнете ее вручную, даже после того, как все игроки присоединятся.

-

Пока вы ждете, под вашей игрой появится кнопка "Copy Share Url". Прокрутите страницу вниз, если вы не видите эту кнопку.

-

Это скопирует ссылку на вашу игру, которую вы можете вставить в другое окно браузера, чтобы присоединиться в качестве второго игрока.

-

Вам необходимо, чтобы оба окна браузера были видны одновременно, иначе игрок, чье окно скрыто, выйдет по тайм-ауту, и ваша игра завершится.

-

После того как оба игровых экземпляра подключатся и синхронизируются, вы сможете управлять каждым игроком через окно браузера:

-

Вы можете открыть оба окна рядом, перетаскивая и изменяя их размер.

-

Во время тестирования вы будете видеть отладочные сообщения в левом верхнем углу вашей игры, давая вам информацию о состоянии вашей игры. Вы можете отключить это, вызвав команду rollback_display_events(false).

-

Покидая комнату

-

Вызвать rollback_leave_game() чтобы заставить игрока покинуть комнату. Подробную информацию о его использовании читайте на странице функции.

-

Логика игры

-

Система отката будет автоматически создавать экземпляры игроков, когда все игроки присоединятся, при условии, что вы используете rollback_define_player().

-

Однако он все еще позволяет вам запускать любой другой код до начала игры, что означает, что вы должны позаботиться о запуске основной логики игры только после того, как все игроки присоединятся.

-

Например, если вы порождаете вражеские экземпляры с помощью тревоги, запускайте эту тревогу только после срабатывания события Rollback Start.

-

Основные события

-

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

-

Смотрите пример на rollback_sync_on_frame(), как правильно это сделать.

-

Дальнейшее чтение

-

Ваша первая многопользовательская игра завершена!

-

Прочитайте следующие страницы, чтобы узнать все о системе Rollback:

- -

Вы можете добавить чат в свою игру, используя rollback_chat().

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Defining_Inputs.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Defining_Inputs.htm index 7d7a982d4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Defining_Inputs.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Defining_Inputs.htm @@ -1,146 +0,0 @@ - - - - - - - Определение входных данных - - - - - - - - -

Определение входных данных

-

Вводами управляет система Rollback, поэтому они могут быть синхронизированы между игроками. Входные данные для игрока можно получить с помощью rollback_get_input(), который возвращает структуру, содержащую входные данные для игрока.

-

Входы по умолчанию

-

По умолчанию вы получите следующие ключи в структуре ввода:

-

left, right, up, down, Z, X, C, space

-

Направляющие входы отображаются на клавиши со стрелками.

-

Варианты ввода

-

Каждый определенный ввод с клавиатуры считывается с помощью keyboard_check(), который получает информацию о том, удерживается ли клавиша или нет. Для ввода мыши используется mouse_check_button().

-

С каждым определенным вводом (по умолчанию или пользовательским) вы также получаете варианты, использующие keyboard_check_pressed() и keyboard_check_released() (и эквивалентные функции для ввода с помощью мыши). Они добавляются с суффиксом "_pressed" и "_released" соответственно.

-

Например, для ввода space вы получите также space_pressed и space_released.

-

Пользовательские регуляторы

-

Определение

-

Чтобы определить свои собственные входы, создайте структуру, содержащую ключи ввода и назначенные константы для использования, а затем передайте ее в rollback_define_input(). Это отменит элементы управления по умолчанию, упомянутые в верхней части этой страницы.

-

Вы определяете имена входов в левой части (например, fire) и назначаете вход в правой части (например, mb_left):

-

// Before starting rollback game
- rollback_define_input({
-     fire: mb_left,
-     interact: vk_space,
-     left: ord("A"),
-     right: ord("D")
- });

-

Вызов rollback_get_input() теперь будет возвращать только определенные здесь входы(fire, interact и т.д.), а также варианты *_pressed и *_released для каждого из них.

-

Для GML Visual используйте Define Input (Rollback).

-

Константы

-

Вы можете назначить любое из следующих входных значений входам в вашей структуре:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип входаЗначениеОписание
Клавиатураvk_* константыИспользуйте эти константы для определения клавиш клавиатуры. Список таких констант приведен здесь.
ord("")Определите буквенный ключ, обернув его в ord().
Геймпадgp_* константыИспользуйте эти константы для определения входов геймпада (кнопки и оси). Список таких констант приведен здесь.
Мышьmb_* константыИспользуйте эти константы для определения кнопок мыши. Список таких констант приведен здесь.
-
- ПРИМЕЧАНИЕ: mb_any и mb_none не могут быть использованы. -
m_axisxX-позиция мыши в комнате (с помощью mouse_x).
m_axisyПоложение мыши по оси Y в комнате (с помощью mouse_y).
m_axisx_guiПоложение X мыши на слое графического интерфейса пользователя (с помощью device_mouse_x_to_gui()).
m_axisy_guiПоложение мыши по оси Y на слое GUI (с помощью device_mouse_y_to_gui()).
m_scroll_up1 если колесо мыши прокручивается вверх, 0 в противном случае.
m_scroll_down1 если колесо мыши прокручивается вниз, 0 в противном случае.
-

Множественные элементы управления

-

Вы можете назначить несколько элементов управления для каждого входа, перечислив константы входа в массиве:

-

rollback_define_input({
-     fire:     [mb_left, ord("X")],
-     interact: [vk_space, ord("C")],
-     left:     [ord("A"), vk_left],
-     right:    [ord("D"), vk_right]
- });

-

В этом примере огонь будет вызван нажатием mb_left и клавиши X, взаимодействие - нажатием vk_space и клавиши C, и так далее.

-

var _input = rollback_get_input();
- if (_input.fire)
- {
-     // Runs when LMB or X is pressed
- }

-

ПРИМЕЧАНИЕ Вы не можете связать одну и ту же входную константу с несколькими входами, например, конкретное входное значение (скажем, mb_left или ord("A")) может быть использовано только один раз во всей вашей структуре ввода.

-

Инсценировка ввода

-

При локальном тестировании вы можете определить временные входы для удаленных игроков, чтобы можно было тестировать многопользовательскую игру в автономном режиме.

-

Вы можете достичь этого, определив подражательный ввод для игрока, используя rollback_define_mock_input(). Например, после вызова приведенного выше фрагмента кода для определения входов fire, interact, left и right для всех игроков, вы можете определить отдельный набор входов специально для второго игрока, который вы можете использовать во время тестирования синхронизации.

-

rollback_define_mock_input(1, {
-     fire: vk_control,
-     interact: vk_shift,
-     left: ord("J"),
-     right: ord("L")
- });

-

Это определяет макет входа для игрока 1 (второго игрока), сохраняя те же имена входов, но назначая разные входы. Таким образом, два человека могут играть в игру локально на одном компьютере.

-

Дальнейшее чтение

-

Более подробную информацию о системе Rollback читайте на следующих страницах:

- -

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Constraints.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Constraints.htm index 4b26c119e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Constraints.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Constraints.htm @@ -1,103 +0,0 @@ - - - - - - - Ограничения отката - - - - - - - - -

Ограничения отката

-

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

-

Номера

-

Вы можете менять комнаты во время многопользовательской игры, если все игроки подключены.

-

Смена комнаты заставит игру снова запустить процесс синхронизации.

-

Данные для управляемых объектов не переносятся автоматически при смене комнаты. Вы можете перенести их вручную, используя глобальные переменные, постоянный объект или сохранив информацию локального игрока в файл.

-

Используя эти опции, вы можете сохранить информацию об игроке до окончания комнаты и применить ее обратно, когда экземпляр игрока будет создан в новой комнате.

-

Порядок проведения мероприятий

-

Когда начинается многопользовательская игра, следующие события будут выполняться в указанном порядке:

- -

Когда вы меняете комнату в середине многопользовательской игры, следующие события будут происходить в указанном порядке:

- -

Уничтожить событие

-

Событие Destroy экземпляра обычно выполняется сразу после его уничтожения, например, после вызова instance_destroy(). Однако в многопользовательской игре это событие может выполняться не сразу.

-

Вызов instance_destroy() может быть легко запущен неправильным предсказанием, а это значит, что уничтожение экземпляра вскоре будет откатано, когда будут получены правильные данные от ответственного игрока.

-

В связи с этим событие Destroy экземпляра вызывается только после подтверждения того, что он должен быть уничтожен. Это означает, что может возникнуть небольшая задержка между уничтожением экземпляра на экране игрока и вызовом его события Destroy.

-

Если вы хотите, чтобы на экране клиента что-то происходило в том же кадре, что и уничтожение экземпляра, рекомендуется создать пользовательскую функцию и вызывать ее вместе с instance_destroy().

-

Это также относится к событию Clean Up, выполняемому при уничтожении экземпляра.

-

Государственное управление

-

Rollback Multiplayer управляет "состоянием" вашей игры между клиентами, которое включает в себя управляемые экземпляры и их переменные. Такие управляемые части вашей игры могут быть откачены в случае неверного прогноза системой Rollback.

-

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

-

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

-

Состояние перед началом отката

-

Вы должны убедиться, что каждый игрок начинает игру в одинаковом состоянии. Это означает, что все в вашей игре и ее управляемых экземплярах должно быть одинаковым для всех игроков, когда срабатывает событие Rollback Start, то есть когда игра фактически начинается.

-

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

-

Вы можете использовать время между вызовом старта/присоединения и событием Rollback Start для отображения экрана загрузки для ожидающих игроков.

-

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

-

Глобальное государство

-

Вы не можете иметь глобальные переменные, влияющие на состояние игры, так как они не синхронизируются между игроками. Все необходимые переменные должны находиться внутри управляемых объектов.

-

Состояние события рисования

-

Вы не можете изменить состояние в событии Draw, и его цель должна оставаться только в том, чтобы рисовать графику на основе состояния, установленного в предыдущих событиях. Все управляемые объекты становятся доступными только для чтения во время события Draw, поэтому вы не можете изменять в них переменные, а также создавать или уничтожать экземпляры управляемых объектов.

-

Переменные времени

-

Не используйте переменные/функции типа current_time или get_timer() для воздействия на логику игры. Вместо них можно использовать управляемую переменную rollback_current_frame. Она возвращает количество кадров, прошедших с момента начала многопользовательской игры.

-

События тревоги безопасны для использования в управляемых объектах.

-

Также убедитесь, что вы не используете delta_time, поскольку он сильно зависит от системы, на которой запущена игра, и не может быть синхронизирован между игроками.

-

Ссылки на экземпляры

-

Идентификатор экземпляра, хранящийся в управляемом экземпляре, должен указывать на управляемый экземпляр.

-

Если управляемый экземпляр имеет ссылку на неуправляемый экземпляр, это приведет к несоответствиям между состояниями клиента, поскольку изменения в этом неуправляемом экземпляре не могут управляться и откатываться.

-

Например, если ваш управляемый экземпляр obj_workstation имеет ссылку на экземпляр obj_anvil, obj_anvil должен быть управляемым объектом.

-

Ссылки на потерянные экземпляры

-

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

-

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

-

Случайные числа

-

Состояние генерации случайных чисел (ГСЧ) управляется между игроками, поэтому использование функций случайных чисел (например, random(), choose(), и т.д.) для игровой логики совершенно безопасно. Система отката гарантирует, что каждый игрок получит одно и то же случайное число в один и тот же момент игры.

-

События Draw используют отдельное состояние RNG. Это означает, что случайные функции, вызываемые в событии Draw, не влияют на обычное состояние RNG для других событий и могут быть неодинаковыми у разных игроков.

-

Семена

-

Вы не можете использовать randomise() или random_set_seed() для изменения семени RNG, так как оно управляется системой Rollback.

-

Управляемое состояние RNG запускается только при вызове Rollback Start, то есть когда начинается многопользовательская игра. Вы можете изменить семя до этого момента, но это не окажет никакого влияния после точки старта.

-

Дальнейшее чтение

-

Более подробную информацию о системе Rollback читайте на следующих страницах:

- -

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Errors.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Errors.htm index 7b1b150b7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Errors.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Errors.htm @@ -1,176 +0,0 @@ - - - - - - Ошибки отката - - - - - - - - - - - -

Ошибки отката

-

При работе с системой отката могут возникать определенные ошибки. Эти ошибки являются ошибками Runner Errors, поэтому они отображаются во время работы игры:

-

-

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ОшибкаОписание
Не удалось получить слой для создания игроков. Вы должны передать имя слоя в функцию rollback_define_player или создать слой Instances.Если объект игрока был определен с помощью функции rollback_define_player, система отката попытается создать объект игрока на слое, имя которого может быть передано в качестве второго параметра (или на слое с именем "Instances", если он не определен). Если слой не может быть найден по его имени, произойдет ошибка. Решением является либо явное задание имени слоя для создания игроков, либо создание слоя с именем "Instances", если имя слоя не задано явно.
При запуске многопользовательских игр необходимо управлять объектами игроков.Если объект игрока был определен с помощью функции rollback_define_player и объект игрока не помечен как управляемый, то возникает эта ошибка. Решение состоит в том, чтобы пометить объект игрока как управляемый в редакторе объектов.
Не удалось получить информацию о пользователе для player_id N.Если система отката не смогла получить от сервера информацию об игроке, выдается эта ошибка. Проверьте в консоли разработчика, не были ли заблокированы какие-либо запросы.
Не удалось вызвать rollback_chat до полного подключения к игре. Попробуйте дождаться события rollback_game_info.Функция чата недоступна, пока игрок не присоединился к комнате. Решение: Отключите чат до получения события rollback_game_info (см. События отката).
rollback_use_manual_start должен быть вызван перед rollback_create_game и rollback_join_game.Эти ошибки возникают, если вызов функции нарушает внутренние ограничения машины состояний. В сообщении об ошибке предлагается решение.
rollback_use_player_prefs должен быть вызван перед rollback_create_game и rollback_join_game.
rollback_use_player_prefs должен быть вызван до rollback_set_player_prefs.
rollback_set_player_prefs должен быть вызван до rollback_start_game.
rollback_define_player должен быть вызван до rollback_create_game и rollback_join_game.
rollback_define_input должен быть вызван перед rollback_create_game и rollback_join_game.
rollback_define_mock_input должен быть вызван перед rollback_create_game и rollback_join_game.
Не считывайте информацию об игроке до начала игры. Вызовите функцию rollback_get_info().
Не считывайте ввод игрока до начала игры. Вызов rollback_get_input().
rollback_define_input_frame_delay должен быть вызван перед rollback_create_game и rollback_join_game
rollback_define_input_frame_delay должен быть вызван перед rollback_create_game и rollback_join_game.
rollback_set_player_prefs не удалось установить предпочтенияСервер отклонил настройки игрока. Обычно это происходит в следующих случаях: 1. Один пользователь пытается сбросить пользовательские настройки, в то время как другой пользователь уже начал игру. В этом случае игра должна использовать последние успешно установленные пользовательские настройки, мы гарантируем, что каждый игрок должен установить некоторые пользовательские настройки перед началом игры. 2. Размер сериализованных префов игрока превышает максимальный размер префов игрока (в настоящее время 800 байт).
rollback_create_game, количество игроков установлено на N, но должно быть в диапазоне от 1 до 4Функция rollback_create_game была вызвана с неверно заданным количеством игроков. Решением является исправление первого параметра функции rollback_create_game на значение в диапазоне от 1 до 4.
rollback_create_game не удалось установить предпочтения игрока по умолчанию.См. описание для "rollback_set_player_prefs failed to set the preferences".
Многопользовательский откат поддерживается только в цели operagx.Вызывается функция rollback_create_game, а цель не установлена на OperaGX. В настоящее время многопользовательская игра поддерживается только на платформе OperaGX. Решением является установка цели на OperaGX.
Не удалось создать игру (неизвестный тип сессии).Это внутренняя ошибка системы отката. Сообщите о проблеме команде GameMaker.
Не удалось найти player_id на этом экземпляре, вам нужно передать его в rollback_get_input().Функцияrollback_get_input может принимать в качестве параметра id игрока. Если функции не было предоставлено никаких параметров, она примет поле player_id объекта игрока для получения входных данных. Если параметр player_id не задан, то произойдет ошибка. Если объект игрока был создан с помощью rollback_define_player, то у него должен быть задан player_id. Решение: 1. Явно передавать параметр player id в функцию 2. Создайте игрока с помощью функции rollback_define_player.
Info player_id N находится вне диапазона.rollback_get_info вызывается с неверным player_id (или объект игрока имеет неверное значение в поле player_id). Решение: Исправьте параметр player_id так, чтобы он находился в диапазоне от 1 до 4.
Не удалось найти экземпляр <id> объекта <id> (<имя>), на который ссылались данные отката.Внутренняя ошибка системы отката. Сообщите о проблемекоманде GameMaker.
Не знаю, как создать OBJECT_KIND=<kind>.
RefID <id> не имеет объекта (некорректный ввод?).
Неверный ReferenceKind <id> (неправильный ввод?).
Сопоставление экземпляров включено, но мы попытались десериализовать индекс вне диапазона. <id> не находится в [0, <id>].
Неверное значение RValue при десериализации.
Попытка воскресить экземпляр, который был удален!
Невозможно сериализовать RValue с kind=<id> (<имя>).
Пустое определение входа.rollback_define_input был вызван с пустым входом.
Определение ввода содержит константу <код ключа> дважды, что недопустимо.Код клавиши может быть сопоставлен только с одним входом. Проверьте, не задан ли какой-либо код клавиши более одного раза в определении входа.
Входное определение с меткой <label> не является вещественным значением или массивом вещественных значений.Все значения, описывающие входные величины, должны иметь тип Real.
Пустое определение входа макета для идентификатора игрока N.См. "Определение пустого входа".
Макетное определение содержит нереальное значение.См. "Входное определение с меткой <label> не является вещественным значением или массивом вещественных значений".
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Events.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Events.htm index bcf57cd2c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Events.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Events.htm @@ -1,147 +0,0 @@ - - - - - - - События отката - - - - - - - - -

События отката

-

В категории "Другое" можно найти два события, связанных с Rollback:

-

-

Начало отката

-

Это событие срабатывает, когда все игроки подключены и многопользовательская игра началась. Оно также срабатывает при последующей смене комнаты.

-

Внутри этого события вы получаете структуру под названием rollback_event_param, которая содержит все соответствующие значения для данного события:

- - - - - - - - - - - - - - - - - - - - - - - -
Структурный членОписание
num_playersОбщее количество игроков в игре
player_idID вашего локального игрока (начиная с 0, который изначально является самим хостом)
first_startЭто значение равно true, если многопользовательская игра только что началась, или false, если была изменена только комната.
rollback_connect_error Структура, содержащая следующие переменные:
-
- status Код статуса HTTP ответа
- error Строка, описывающая ошибку -
-

Вы должны использовать это событие только в объекте менеджера игры, а не в объекте игрока, так как rollback_event_param.player_id всегда будет ID вашего главного локального игрока, а НЕ ID экземпляра игрока, в котором может сработать событие.

-

Например, если вы игрок 0, и вы поймали событие Rollback Start в экземпляре игрока 1, переменная player_id все еще будет равна 0, поскольку она указывает на ID только локального игрока.

-

Событие отката

-

Событие Rollback Event срабатывает в различные моменты игры и содержит переменную rollback_event_id. Эта переменная указывает, какой тип события был вызван.

-

Предоставляется структура под названием rollback_event_param, которая содержит все необходимые значения для события.

-

В rollback_event_id может храниться любая из следующих констант:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
rollback_event_idОписание
rollback_chat_messageСрабатывает, когда получено сообщение от rollback_chat() / Send Message получено. Во время этого события rollback_event_param будет содержать следующие переменные:
-
- сообщение: Полученная строка сообщения
- от: Идентификатор игрока, отправившего сообщение
- to: ID игрока, которому было отправлено сообщение; будет равно -1, если сообщение было отправлено всем. -
rollback_player_prefsСрабатывает, когда игрок устанавливает свои предпочтения. Во время этого события rollback_event_param будет содержать следующие переменные:
-
- player_id: ID игрока, который установил свои предпочтения.
- предпочтения: Предпочтения, установленные для этого игрока -
rollback_connected_to_peerСрабатывает при подключении нового игрока. ID подключившегося игрока хранится в rollback_event_param.player_id.
rollback_synchronizing_with_peerСрабатывает во время синхронизации игрока с новым игроком. Во время этого события rollback_event_param будет содержать следующие переменные:
-
- player_id: ID игрока, с которым происходит синхронизация.
- count: Сколько шагов синхронизации было выполнено
- всего: Сколько всего шагов синхронизации необходимо выполнить -
rollback_synchronized_with_peerСрабатывает, когда синхронизация с игроком завершена. ID синхронизированного игрока хранится в rollback_event_param.player_id.
rollback_disconnected_from_peerСрабатывает, когда игрок отсоединяется. ID отключившегося игрока хранится в rollback_event_param.player_id.
rollback_game_interruptedСрабатывает, когда игра прерывается из-за игрока с нестабильным соединением. Во время этого события rollback_event_param будет содержать следующие переменные:
-
- player_id: ID игрока с проблемами соединения
- таймаут: Сколько времени осталось до тайм-аута и отключения игрока (в миллисекундах). По истечении этого времени игрок будет выкинут, и игра возобновится с оставшимися игроками. -
rollback_game_resumedСрабатывает, когда игра возобновляется после прерывания (как описано выше). ID игрока, который восстановил соединение, хранится в rollback_event_param.player_id.
rollback_game_fullСрабатывает, когда игра, к которой вы подключаетесь, уже заполнена.
rollback_game_infoСрабатывает при получении информации о помещении, но до того, как оно будет полностью присоединено.
- Во время этого события rollback_event_param будет содержать следующие переменные:
-
- num_players: Общее количество игроков в игре
- player_id: ID местного игрока (начиная с 0) -
rollback_connect_infoСрабатывает, когда комната была создана и готова к совместному использованию с другими игроками. URL, которым можно поделиться, хранится в rollback_event_param.share_url.
-
- Вы можете автоматически скопировать этот URL, когда он станет доступен, вызвав clipboard_set_text(). -
-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_chat.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_chat.htm index 597a20857..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_chat.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_chat.htm @@ -1,99 +0,0 @@ - - - - - - - rollback_chat - - - - - - - - - - - -

rollback_chat

-

Эта функция используется для отправки строкового сообщения другим игрокам.

-

Вы указываете строку для отправки, максимальный размер которой составляет 128 байт.

-

Если второй аргумент не указан, сообщение отправляется всем игрокам, включая отправителя.

-

Во втором аргументе можно указать ID игрока, который получит сообщение.

-

Как использовать?

-

Эта функция предназначена для использования "локально", и поэтому будет являться результатом локального ввода, а не ввода Rollback.

-

См. пример использования внизу. Прослушивайте полученные сообщения в событии Rollback Event.

-

-

Синтаксис:

-

rollback_chat(message, [to]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
messageСтрокаThe message to send, as a string.
toРеальноOPTIONAL ID игрока, которому будет отправлено сообщение. Если не указывать этот аргумент или указать -1, сообщение будет отправлено всем игрокам.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (keyboard_check_pressed(vk_enter))
- {
-     rollback_chat(keyboard_string);
-     keyboard_string = "";
- }

-

Если клавиша ввода нажата локально, то keyboard_string значение отправляется всем игрокам. Затем эта строка очищается, чтобы можно было набрать новое сообщение.

-

Это вызовет событие Rollback Event, когда сообщение будет получено всеми клиентами (включая отправителя).

-

Событие отката

-

if (rollback_event_id == rollback_chat_message)
- {
-     // Get received information
-     var _message = rollback_event_param.message;
-     var _from = rollback_event_param.from;
-
-     // Find sender's name
-     var _name = rollback_get_info(_from).player_name;
-
-     // Print to output log
-     show_debug_message(_name + " says: " + _message);
- } -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_create_game.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_create_game.htm index d8c2802d5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_create_game.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_create_game.htm @@ -1,110 +0,0 @@ - - - - - - - rollback_create_game - - - - - - - - - - - -

rollback_create_game

-

Эта функция запускает новую многопользовательскую игру. Она принимает количество игроков, которые должны быть подключены для начала игры, и по желанию позволяет отключить Sync Test.

-

При вызове с отключенным Sync Test система ждет, пока количество игроков num_players не присоединится к игре, прежде чем начать игру. Убедитесь, что не создаете и не изменяете управляемые экземпляры до начала игры.

-

СОВЕТ Вы можете по желанию заставить игру начаться до того, как все игроки присоединятся к ней, вызвав команду rollback_start_game().

-

В настоящее время в одной игре могут участвовать не более 4 игроков.

-

ПРЕДУПРЕЖДЕНИЕ Не рекомендуется устанавливать регион по умолчанию в этой функции, если только вы не позволяете проигрывателю выбирать его через меню.

-

-

Синтаксис:

-

rollback_create_game(num_players, [enable_sync_test, region]);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
num_playersРеальноThe number of players that must be connected for the game to start. If rollback_define_player() используется, это количество экземпляров, которые создаются автоматически.
enable_sync_testБулевоOPTIONAL Определяет, должен ли быть включен Sync Test; по умолчанию это значение равно true. При значении false функциональность в режиме онлайн включена.
regionСтрокаOPTIONAL Указывает регион по умолчанию, в котором будет создана виртуальная комната. См. пример внизу.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

rollback_define_player(obj_player);
- var _joined = rollback_join_game();
-
- if (!_joined)
- {
-     rollback_create_game(2, false, "Europe");
- } -

-

Приведенный выше код определяет объект игрока, а затем пытается присоединиться к игре. Если он не присоединился, то вместо него создается новая игра, в которой максимум 2 игрока и отключен Sync Test.

-

Расширенный пример смотрите в разделе Создание многопользовательской игры.

-

Получение имен регионов

-

Если вы хотите указать регион по умолчанию, вам понадобятся строки регионов. Вы можете получить их с помощью HTTP-запроса к базовому API URL + /regions.

-

// Create event
- http_get(rollback_api_server + "/gg/regions");
-
- // Async - HTTP event
- if (async_load[? "http_status"] == 200)
- {
-     var _struct = json_parse(async_load[? "result"]);
-     var _data = _struct.data;
-     var _num_regions = array_length(_data);
-     
-     global.regions = [];
-     for (var i = 0; i < _num_regions; i++)
-     {
-         global.regions[i] = _data[i];
-     }
- } -

-

Это запрашивает список регионов из GX.games и в событии Async - HTTP выполняет итерацию по списку и сохраняет все регионы в глобальном массиве.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_define_input.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_define_input.htm index 5fa2d37ed..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_define_input.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_define_input.htm @@ -1,76 +0,0 @@ - - - - - - - rollback_define_input - - - - - - - - - - - -

rollback_define_input

-

Эта функция используется для определения пользовательских входов для всех игроков. Она принимает struct, который должен содержать все входы с назначенными им входными константами.

-

Чтобы узнать, как назначить пользовательские входы, см. раздел Пользовательские элементы управления.

-

Если используется, эта функция должна выполняться до функции join/create.

-

-

Синтаксис:

-

rollback_define_input(input_struct);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
input_structСтруктураA struct containing input names as variables, and their assigned inputs as values.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

rollback_define_input({
-     fire: mb_left,
-     interact: vk_space,
-     left: [ord("A"), vk_left],
-     right: [ord("D"), vk_right]
- });

-

Приведенный выше код определяет пользовательские входы для всех игроков. Последние два входа используют несколько элементов управления, перечисляя их в массиве.

-

Расширенный пример см. в разделе Определение входов.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_define_mock_input.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_define_mock_input.htm index 5b89ffc7f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_define_mock_input.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_define_mock_input.htm @@ -1,87 +0,0 @@ - - - - - - - rollback_define_mock_input - - - - - - - - - - - -

rollback_define_mock_input

-

Эта функция может быть использована во время Sync Test для назначения временного "имитационного" ввода для указанного плеера. Это отменяет элементы управления, определенные для игрока, и любой случайный ввод из Sync Test.

-

Информацию о его использовании см. в разделе Макетный ввод.

-

-

Синтаксис:

-

rollback_define_mock_input(player_id, input_struct);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
player_idРеальноThe ID of the player to assign mock input to.
input_structСтруктураA struct containing input names as variables, and their assigned inputs as values.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

rollback_define_input({
-     fire: mb_left,
-     interact: vk_space,
-     left: ord("A"),
-     right: ord("D")
- });
-
- rollback_define_mock_input(1, {
-     fire: vk_control,
-     interact: vk_shift,
-     left: ord("J"),
-     right: ord("L")
- }); -

-

В приведенном выше коде сначала определяются входы для игроков. Затем он определяет макет входа для игрока 1, сохраняя те же имена входов, но назначая разные входы. Таким образом, два человека могут играть в игру локально, используя клавиатуру.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_define_player.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_define_player.htm index 90845df86..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_define_player.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_define_player.htm @@ -1,83 +0,0 @@ - - - - - - - rollback_define_player - - - - - - - - - - - -

rollback_define_player

-

Эта функция определяет объект, который должен использоваться для игроков в многопользовательской игре. Она необязательна, и при ее использовании система будет автоматически создавать экземпляры для игроков, которые подключаются, и уничтожать экземпляры для игроков, которые отсоединяются.

-

По умолчанию он создает экземпляры игроков в слое "Instances", который должен существовать в вашей игровой комнате. Если вы хотите использовать другой слой, передайте его имя в качестве второго аргумента.

-

Информацию о создании игры с этой функцией или без нее см. в разделе Определение объекта игрока. Если эта функция используется, она должна выполняться до функции join/create.

-

Каждый экземпляр, созданный с помощью этой функции, получает переменные экземпляра, перечисленные на этой странице.

-

-

Синтаксис:

-

rollback_define_player(object, [layer_name]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
objectОбъект АктивыThe object that will be used for creating player instances.
layer_nameСтрокаOPTIONAL Имя слоя, в котором будут созданы экземпляры игроков. По умолчанию "Instances".
-

-

Возвращается:

-

N/A

-

-

Пример:

-

rollback_define_player(obj_player);
- var _joined = rollback_join_game();
-
- if (!_joined)
- {
-     rollback_start_game(2, false);
- } -

-

Приведенный выше код определяет объект игрока, а затем пытается присоединиться к игре. Если он не присоединился, то вместо этого начинается новая игра, в которой максимум 2 игрока и отключен Sync Test.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_display_events.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_display_events.htm index 03f496bd4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_display_events.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_display_events.htm @@ -1,68 +0,0 @@ - - - - - - - rollback_display_events - - - - - - - - - - - -

rollback_display_events

-

По умолчанию при запуске игры в левом верхнем углу появляются отладочные сообщения, отображающие события мультиплеера по мере их возникновения. Вы можете отключить эти сообщения, вызвав эту функцию с аргументом false, и включить их снова, указав true.

-

-

Синтаксис:

-

rollback_display_events(enabled);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
enabledБулевоSpecifies whether event display should be enabled (true) или отключен(false). По умолчанию он включен.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

rollback_display_events(false);

-

Приведенный выше код отключил отображение событий.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_get_info.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_get_info.htm index d4b39abc9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_get_info.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_get_info.htm @@ -1,109 +0,0 @@ - - - - - - - rollback_get_info - - - - - - - - - - - -

rollback_get_info

-

Эта функция возвращает структуру, содержащую информацию об игроке. Ее следует использовать только при ручном управлении экземплярами игроков. Если вы используете rollback_define_player()то каждый экземпляр игрока будет автоматически получать эту информацию в виде переменных.

-

Функция принимает в качестве аргумента ID игрока и возвращает структуру со следующими переменными:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПеременнаяТипОписание
player_avatar_urlСтрокаURL, указывающий на изображение аватара игрока
player_avatar_spriteАктив спрайтаСпрайт, содержащий аватар игрока
player_nameСтрокаИмя игрока
player_typeСтрокаГоворит о том, зарегистрирован ли игрок в GX.games или нет.
-
- Будет "Гость" для гостевых пользователей и "Пользователь" для зарегистрированных пользователей. -
player_user_idСтрокаID игрока на GX.games
player_prefsЛюбой Предпочтения, установленные для игрока
-

-

-

Синтаксис:

-

rollback_get_info(player_id);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
player_idРеальноThe ID of the player for which information will be returned.
-

-

Возвращается:

-

Struct

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_get_input.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_get_input.htm index 9a9ecf7b6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_get_input.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_get_input.htm @@ -1,78 +0,0 @@ - - - - - - - rollback_get_input - - - - - - - - - - - -

rollback_get_input

-

Эта функция возвращает структуру, содержащую входные значения для игрока. Она принимает необязательный аргумент, указывающий ID игрока, для которого будут возвращены входные данные.

-

При использовании в экземпляре игрока, который был создан с помощью функции rollback_define_player()вам не нужно указывать ID игрока, поэтому вы можете вызвать эту функцию без аргументов.

-

При использовании в любых других экземплярах или экземплярах игроков, созданных вручную, необходимо указать ID игрока.

-

Информацию о том, какие входы возвращаются и как их можно изменить, см. в разделе Определение входов.

-

-

Синтаксис:

-

rollback_get_input(player_id);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
player_idРеальноOPTIONAL Идентификатор игрока, для которого будут возвращены входные данные.
-

-

Возвращается:

-

Struct

-

-

Пример:

-

var _input = rollback_get_input();
-
- if (_input.left) x -= 2;
- if (_input.right) x += 2;
- if (_input.up) y -= 2;
- if (_input.down) y += 2; -

-

Приведенный выше код получает входной struct в экземпляре игрока, который был автоматически создан системой Rollback. На основе возвращенных значений он перемещает экземпляр на 2 пикселя в каждом направлении.

-

Расширенный пример смотрите в разделе Создание многопользовательской игры.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_get_player_prefs.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_get_player_prefs.htm index f1aa5c131..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_get_player_prefs.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_get_player_prefs.htm @@ -1,75 +0,0 @@ - - - - - - - rollback_get_player_prefs - - - - - - - - - - - -

rollback_get_player_prefs

-

Эта функция возвращает набор предпочтений для данного ID игрока.

-

Если ID игрока не указан, функция должна быть вызвана внутри экземпляра игрока, в этом случае будут возвращены предпочтения для этого игрока.

-

Вы также можете использовать переменную экземпляра player_prefs.

-

Эта функция возвращает последние предпочтения, которые были синхронизированы для данного игрока, поэтому установка предпочтений не приведет к немедленному обновлению предпочтений, которые возвращает эта функция.

-

Пожалуйста, прочитайте: Предпочтения игрока

-

-

Синтаксис:

-

rollback_get_player_prefs([player_id]);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
player_idРеальноOPTIONAL Идентификатор игрока, для которого возвращаются предпочтения.
-

-

Возвращается:

-

Any

-

-

Пример:

-

var _my_prefs = rollback_get_player_prefs();
-
- image_index = _my_prefs.character; -

-

Приведенный выше код получает предпочтения, установленные для текущего игрока, и применяет предпочтение к переменной экземпляра.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_join_game.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_join_game.htm index 397cf28ac..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_join_game.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_join_game.htm @@ -1,77 +0,0 @@ - - - - - - - rollback_join_game - - - - - - - - - - - -

rollback_join_game

-

Эта функция пытается присоединиться к игре. Вы должны находиться на URL, содержащем ID виртуальной комнаты, к которой вы хотите присоединиться.

-

Если комната была присоединена, возвращается true, а если ни одна игра не была присоединена, возвращается false.

-

Когда новый игрок присоединяется к игре, в которой вы уже присутствуете, срабатывает событие Rollback Event. Дополнительную информацию см. в разделе События отката.

-

Аргумент dry_run является необязательным и при значении true позволяет запустить функцию без фактического присоединения к игре. Это используется для проверки возможности присоединения к игре без фактического присоединения к ней.

-

-

Синтаксис:

-

rollback_join_game([dry_run]);

- - - - - - - - - - - - - -
АргументТипОписание
dry_runБулевоDisabled by default (false). Если функция включена(true), она не присоединяется к игре, а просто возвращает true, если к ней можно присоединиться, или false в противном случае.
-
- Таким образом, вы можете использовать эту функцию только для проверки того, был ли игрок приглашен. -
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

rollback_define_player(obj_player);
- var _joined = rollback_join_game();
-
- if (!_joined)
- {
-     rollback_create_game(2, false);
- } -

-

Приведенный выше код определяет объект игрока, а затем пытается присоединиться к игре. Если он не присоединился, то вместо него создается новая игра, в которой максимум 2 игрока и отключен Sync Test.

-

Расширенный пример смотрите в разделе Создание многопользовательской игры.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_leave_game.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_leave_game.htm index 65b6f923d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_leave_game.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_leave_game.htm @@ -1,59 +0,0 @@ - - - - - - - rollback_leave_game - - - - - - - - - - - -

rollback_leave_game

-

Эта функция завершает текущую многопользовательскую сессию, позволяя игроку присоединиться или создать новую игру снова.

-

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

-

Избегание ошибок

-

После выхода игрока из многопользовательской сессии GameMaker продолжает выполнять весь игровой код, однако он возвращается в состояние "перед запуском", в котором нельзя создавать или изменять управляемые экземпляры.

-

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

-

См: Состояние перед началом отката

-

Триггерное событие

-

Когда игрок покидает игру, в которой вы присутствуете, срабатывает событие Rollback Event. Дополнительную информацию см. в разделе События отката.

-

-

Синтаксис:

-

rollback_leave_game();

-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (keyboard_check_pressed(vk_escape))
- {
-     rollback_leave_game();
- }

-

Приведенный выше код заставляет игрока выйти из игры при нажатии клавиши Escape.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_set_player_prefs.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_set_player_prefs.htm index c9b87150c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_set_player_prefs.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_set_player_prefs.htm @@ -1,75 +0,0 @@ - - - - - - - rollback_set_player_prefs - - - - - - - - - - - -

rollback_set_player_prefs

-

После включения предпочтений эта функция используется для установки предпочтений для локального игрока. Это означает, что функция должна полагаться на локальный ввод, а не на ввод Rollback.

-

Предпочтения могут быть любого типа. Если заданы предпочтения по умолчанию, убедитесь, что вы используете тот же тип данных и структуру.

-

Когда любой игрок устанавливает свои предпочтения, все в игре получают событие отката.

-

Если используется, эта функция должна выполняться до функции join/create.

-

Пожалуйста, прочитайте: Предпочтения игрока

-

-

Синтаксис:

-

rollback_set_player_prefs(preferences);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
preferencesЛюбойThe preferences to set for the local player.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

rollback_set_player_prefs({
- персонаж: obj_customizer.character_selected,
- цвет: obj_customizer.color_selected
- });

-

Приведенный выше код устанавливает настройки для игрока, считывая значения из объекта "customizer", который будет неуправляемым (локальным).

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_start_game.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_start_game.htm index 370b5eff1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_start_game.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_start_game.htm @@ -1,57 +0,0 @@ - - - - - - - rollback_start_game - - - - - - - - - - - -

rollback_start_game

-

Эта функция заставляет текущую многопользовательскую игру начаться, пока все игроки не присоединились к ней. Вы должны сначала создать многопользовательскую игру, используя rollback_create_game().

-

Обычно система ждет, пока все игроки присоединятся, прежде чем автоматически начать игру. Эту функцию можно использовать для раннего начала игры, пока все игроки еще не присоединились.

-

Вы можете вызвать rollback_use_manual_start() чтобы заставить Rollback ждать эту функцию даже после того, как все игроки присоединились.

-

Вызов этой функции вызовет событие Rollback Start.

-

-

Синтаксис:

-

rollback_start_game();

-

-

Возвращается:

-

N/A

-

-

Пример:

-

// Step event
- if (!rollback_game_running && keyboard_check_pressed(vk_enter))
- {
-     rollback_start_game();
- }

-

Если игра Rollback не запущена, и нажата клавиша Enter, это запустит игру.

-

Это позволяет игроку начать игру вручную до того, как все игроки присоединятся к ней.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_sync_on_frame.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_sync_on_frame.htm index 1b6068ebd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_sync_on_frame.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_sync_on_frame.htm @@ -1,63 +0,0 @@ - - - - - - - rollback_sync_on_frame - - - - - - - - - - - -

rollback_sync_on_frame

-

Эта функция проверяет, все ли игроки синхронизированы на текущем кадре, то есть их состояния основаны не на предсказаниях, а на фактических данных, полученных от них. В этом случае она возвращает true.

-

Если игроки не синхронизированы на текущем кадре, возвращается false, и предпринимается попытка синхронизировать всех игроков.

-

Попытка синхронизировать игроков с помощью этой функции может привести к зависанию. Вы должны убедиться, что эта функция не вызывается постоянно в событии Step.

-

Вместо этого используйте его в качестве переключателя. См. пример внизу страницы.

-

Переменная rollback_confirmed_frame обновляется автоматически при синхронизации всех игроков.

-

-

Синтаксис:

-

rollback_sync_on_frame();

-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if (obj_game.winning_player == -1 && points >= obj_game.points_required_for_win)
- {
-     if (rollback_sync_on_frame())
-     {
-         obj_game.winning_player = player_id;
-     }
- }

-

Этот код запускается в событии Step объекта игрока.

-

Он проверяет, нет ли выигравшего игрока, и есть ли у текущего игрока очки, необходимые для победы.

-

Если оба значения верны, это означает, что игрок должен победить. Однако перед этим проверяется, все ли игроки синхронизированы, чтобы убедиться, что состояние правильное.

-

Если все игроки синхронизированы, то устанавливается переменная winning_player. В результате первое условие становится ложным, что гарантирует, что функция rollback_sync_on_frame() не будет вызвана снова.

-

Это означает, что функция используется как переключение, а не работает непрерывно каждый кадр.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_use_manual_start.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_use_manual_start.htm index 1f53ef3c3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_use_manual_start.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_use_manual_start.htm @@ -1,58 +0,0 @@ - - - - - - - rollback_use_manual_start - - - - - - - - - - - -

rollback_use_manual_start

-

По умолчанию многопользовательская игра автоматически начинается, когда все игроки присоединяются к ней.

-

Вызов этой функции отключает автозапуск, и игра ждет, пока вы запустите ее вручную.

-

Если используется, эта функция должна выполняться до функции join/create.

-

-

Синтаксис:

-

rollback_use_manual_start();

-

-

Возвращается:

-

N/A

-

-

Пример:

-

rollback_use_manual_start();
-
- if (!rollback_join_game())
- {
-     rollback_create_game(2);
- } -

-

Приведенный выше код включает ручной запуск, а затем присоединяется или создает новую многопользовательскую игру.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_use_player_prefs.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_use_player_prefs.htm index d9563593c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_use_player_prefs.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_use_player_prefs.htm @@ -1,75 +0,0 @@ - - - - - - - rollback_use_player_prefs - - - - - - - - - - - -

rollback_use_player_prefs

-

Эта функция включает предпочтения игроков и позволяет установить предпочтения по умолчанию для всех игроков.

-

Настройки по умолчанию могут быть любого типа. Если вы не укажете предпочтения по умолчанию, то все игроки должны иметь установленные предпочтения перед началом игры.

-

Вызов этой функции отключает автозапуск, поэтому вам придется запускать игру вручную. См: Ручной и автоматический запуск

-

Если используется, эта функция должна выполняться до функции join/create.

-

Пожалуйста, прочитайте: Предпочтения игрока

-

-

Синтаксис:

-

rollback_use_player_prefs([default]);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
defaultЛюбойOPTIONAL Предпочтения по умолчанию, устанавливаемые для всех игроков.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

rollback_use_player_prefs({
- символ: 0,
- цвет: c_белый
- });

-

Приведенный выше код включает предпочтения игрока и устанавливает предпочтения по умолчанию в struct.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_use_random_input.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_use_random_input.htm index c523cc0c4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_use_random_input.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Functions/rollback_use_random_input.htm @@ -1,68 +0,0 @@ - - - - - - - rollback_use_random_input - - - - - - - - - - - -

rollback_use_random_input

-

Когда вы играете в игру, используя Sync Test, все "удаленные" игроки получают случайные значения для своих заданных входов в качестве основного способа тестирования. Вы можете отключить это поведение, вызвав эту функцию с false в качестве аргумента, и включить ее снова, указав true.

-

-

Синтаксис:

-

rollback_use_random_input(enabled);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
enabledБулевоSpecifies whether random input should be enabled (true) или отключен(false). По умолчанию он включен.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

rollback_use_random_input(false);

-

Приведенный выше код отключает случайный ввод во время Sync Test.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Preferences.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Preferences.htm index 9ad7b5ec6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Preferences.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Preferences.htm @@ -1,42 +0,0 @@ - - - - - - - Предпочтения игрока - - - - - - - - -

Предпочтения отката

-

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

-

Как использовать предпочтения?

-

Сначала включите настройки, вызвав rollback_use_player_prefs() / Use Player Prefs. С помощью этой функции вы можете по желанию установить предпочтения по умолчанию для всех игроков.

-

Как только вы вызовете эту функцию, "автозапуск" будет отключен, то есть игра не начнется, даже если все игроки присоединились, и вам придется начать ее вручную с помощью функции rollback_start_game() / Start Game.

-

До начала игры вы можете установить настройки для игрока, вызвав команду rollback_set_player_prefs() / Set Player Prefs на клиенте этого игрока. Позже их можно будет прочитать через rollback_get_player_prefs() / Get Player Prefs, или переменную player_prefs в экземпляре игрока.

-

Событие отката

-

Когда игрок меняет свои предпочтения, все в игре получают событие отката rollback_player_prefs Rollback Event. Чтобы событие было отправлено, игрок должен быть полностью подключен.

-

Если предпочтения были установлены перед подключением, то при завершении подключения всем игрокам будут отправлены последние предпочтения, установленные перед подключением.

-

Начальное состояние

-

Если вы включили настройки, но настройки по умолчанию не установлены, то игра не начнется, пока не будут установлены настройки для всех игроков.

-

В этом случае вы можете либо вызвать rollback_start_game() несколько раз в тревоге, чтобы попытаться запустить игру, либо вызывать его каждый раз, когда получено событие отката rollback_player_prefs.

-

Какие типы я могу использовать?

-

Предпочтение может быть любого типа, например, число, строка, массив и т.д., но рекомендуется использовать struct, который является самым простым способом хранения коллекции переменных.

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_System.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_System.htm index 712761260..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_System.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_System.htm @@ -1,123 +0,0 @@ - - - - - - - Система отката - - - - - - - - - -

Система отката

-

После изучения руководства по созданию многопользовательской игры у вас могут возникнуть вопросы о том, как работает система отката. Эта страница призвана рассказать об этом подробнее.

-

Что такое откат?

-

При игре в Интернете легко столкнуться с задержкой. Если вы играете с кем-то удаленно, вам может потребоваться доля секунды, чтобы его данные дошли до вас, но даже этого может быть достаточно, чтобы испортить впечатление от игры.

-

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

-

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

-

Однако иногда система понимает, что ее прогноз был неверным. В этом случае она откатывается к последнему правильному состоянию и продолжает игру с этого момента. Именно поэтому игра называется "многопользовательский откат".

-

Детерминизм

-

Откат является детерминированным. Он делится входными данными только с другими игроками и ожидает, что все они выполнят одну и ту же логику на заданных входных данных, выдавая одинаковые результаты на всех клиентах.

-

Другой подход к многопользовательской игре - это "репликация состояния", которая постоянно синхронизирует состояние игры между клиентами, гарантируя, что они всегда делают одно и то же.

-

Rollback не делает этого - он только посылает входные данные, но также следит за состоянием, чтобы его можно было откатить в случае неверного предсказания.

-

Что такое клиент?
-
- Клиент" - это игрок в вашей игре, под которым понимается его копия игры, запущенная на его машине. -

-

Как это работает?

-

Как уже говорилось ранее, Rollback передает входные данные только между игроками.

-

Есть две основные вещи, которые обрабатывает Rollback:

-
    -
  • Вход: Входы каждого игрока передаются другим игрокам. Если игрок 0 нажимает "fire" в своем клиенте, Rollback гарантирует, что другие клиенты также увидят, что игрок 0 нажал "fire".
    -
    - Предсказания выполняются только на входе. -
  • -
  • Состояние: Сюда входят все управляемые объекты и их переменные. Они НЕ синхронизируются между игроками: изменение одной переменной в одном клиенте не приведет к ее автоматическому обновлению в другом клиенте.
    -
    - Состояние управляется только для того, чтобы его можно было откатить. -
  • -
-

Итак... в чем разница?

-

Ввод изменяет состояние, что является базовой концепцией мультиплеера Rollback.

-

Вот пример:

-
    -
  • Вход: Игрок 0 нажимает кнопку "огонь".
  • -
  • Состояние: Поскольку Игрок 0 нажал кнопку "огонь", создается снаряд. Этот снаряд в конечном итоге сталкивается с камнем. В результате игрок 0 получает очко.
    -
    - По сути, это и есть вся ваша игра, полностью зависящая от ввода. -
  • -
-

"Вход" - это то, что Rollback передает между всеми игроками, а не состояние.

-

Однако, поскольку все игровые клиенты выполняют одну и ту же логику на полученном входе (что является обязательным требованием), все они приводят к одному и тому же состоянию.

-

-

Что же такое государство?

-

Если синхронизируется только вход, то для чего нужно состояние?

-

Поскольку вход влияет на состояние, неправильное предсказание входа может привести к неправильному состоянию.

-

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

-

Это не означает, что Rollback синхронизирует объекты и переменные между клиентами. Если переменная_a имеет значение "Gurpreet" в одном клиенте, это не значит, что другие клиенты увидят то же значение.

-

Они будут видеть одно и то же значение переменной только в том случае, если оно получено от ввода данных игроком или какой-либо другой управляемой системы, например, будильников или случайных функций.

-

Управляемые объекты

-

Объекты имеют флажок "Managed", который по умолчанию установлен для новых объектов:

-

Объекты, помеченные как управляемые, имеют возможность отката и выполнения предсказаний, включая все их переменные, создание и уничтожение.

-

Все объекты, которые являются частью игрового процесса, такие как игрок, объекты менеджера/контроллера, подборщики предметов, снаряды и т.д., должны быть помечены как управляемые.

-

Вы можете отключить эту функцию для объектов, которые не нуждаются в синхронизации между игроками, например, статические объекты мира, визуальные эффекты, эффекты и т.д., которые никак не влияют на игровой процесс.

-

Обратите внимание, что управляемое свойство родительского объекта не применяется к его дочерним объектам автоматически, поэтому для каждого дочернего объекта необходимо установить управляемый флажок вручную.

-

Тест синхронизации

-

rollback_create_game() принимает аргумент для Sync Test, который включен по умолчанию (когда аргумент не указан).

-

Sync Test используется для тестирования вашей игры в автономном режиме. Если возникнут проблемы с синхронизацией, он сообщит вам об этом, напечатав ошибку в журнале Output Log. Вы можете использовать Sync Test на Windows, macOS и Opera GX.

-

Sync Test выполняет весь код вашей игры дважды в кадре, чтобы проверить любые проблемы синхронизации. Это означает, что при тестировании в автономном режиме вы можете увидеть, что некоторые события происходят дважды, чего не произойдет при запуске игры в режиме онлайн.

-

Случайный и имитационный вход

-

Во время Sync Test "удаленные" экземпляры игроков получают случайные входные значения для своих определенных входов в качестве простой формы тестирования. Вы можете отключить эту функцию с помощью rollback_use_random_input().

-

-

Второй игрок получает случайный ввод во время Sync Test.

-

Вы также можете назначить временный имитационный вход для удаленных проигрывателей в режиме Sync Test. Подробности см. в разделе Макетный ввод.

-

Эффективная разработка многопользовательской игры

-

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

-

Эта проблема обычно не возникает, если вы программируете свою игру, как показано в разделе " Создание многопользовательской игры", когда вся логика игрока выполняется одинаково для всех экземпляров игрока, независимо от того, является ли экземпляр локальным или нет. Однако если вы реализуете условие, чтобы сделать что-то только для определенного игрока, но не для других, это приведет к нарушению состояния игры.

-

Определение объекта игрока

-

Автоматическое создание экземпляров игроков

-

Как показано в разделе Создание многопользовательской игры, вы можете определить объект игрока с помощью rollback_define_player() / Define Player (Rollback), и система автоматически создаст его экземпляры для каждого подключенного игрока. Она также будет уничтожать экземпляры для игроков, которые отсоединяются.

-

Созданные таким образом экземпляры игроков получают свои идентификаторы автоматически, в переменной player_id. Внутри каждого экземпляра игрока вы можете просто вызвать rollback_get_input() без каких-либо аргументов, и это даст вам входные данные для этого конкретного игрока.

-

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

-

Ручное создание экземпляров игроков

-

Чтобы управлять экземплярами игроков вручную, не вызывайте rollback_define_player(). Это приведет к тому, что игра начнется без создания каких-либо экземпляров игроков.

-

Затем создайте собственные экземпляры игроков вручную, в идеале в событии Rollback Start, и присвойте им идентификаторы игроков в пользовательской переменной. Чтобы получить ввод для игрока, вызовите rollback_get_input() и укажите ID игрока в качестве аргумента. Вызовите rollback_get_info() чтобы получить те переменные в структуре, которые в противном случае были бы присвоены игрокам автоматически.

-

Таким образом, вы можете вручную управлять тем, когда и как создаются экземпляры игроков, присваивать им идентификаторы и получать данные для конкретного игрока.

-

Поддерживайте инстансы игроков

-

Если вы используете rollback_define_player() / Define Player (Rollback), не уничтожайте созданные экземпляры игроков. Если вам нужно показать игрока побежденным, то измените его sprite, или скройте его с помощью другого метода, но сохраните экземпляр живым, так как он управляется GameMaker.

-

Одиночный игрок

-

Систему Rollback можно использовать при создании однопользовательской игры. Просто укажите 1 в качестве количества игроков при вызове rollback_create_game().

-

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

-

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

-

Ручной и автоматический запуск

-

По умолчанию многопользовательская игра начинается, как только все игроки присоединятся к ней. Однако вы можете начать ее до этого момента, вызвав команду rollback_start_game().

-

Вы можете полностью отключить поведение автозапуска, вызвав команду rollback_use_manual_start(). Это означает, что игра будет ждать, пока вы запустите ее вручную.

-

Автозапуск автоматически отключается при включенных настройках игрока.

-

-

Дальнейшее чтение

-

Более подробную информацию о системе Rollback читайте на следующих страницах:

- -

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/managed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/managed.htm index f79702f93..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/managed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/managed.htm @@ -1,46 +0,0 @@ - - - - - - - managed - - - - - - - - - - -

managed

-

Эта переменная, доступная только для чтения, возвращает, является ли текущий экземпляр управляемым(true) или нет(false).

-

Для получения дополнительной информации об управляемых объектах см: Управляемые объекты

-

-

Синтаксис:

-

managed

-

-

Возвращается:

-

Boolean

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_.htm index d4e4e5a86..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_.htm @@ -1,58 +0,0 @@ - - - - - - - имя_игрока - - - - - - - - - - -

имя_игрока

-

В этой переменной хранится имя текущего экземпляра игрока.

-

Эта переменная существует только в экземплярах игроков, созданных с помощью rollback_define_player()и для каждого игрока она своя.

-

Гостевым игрокам будет возвращено имя-заполнитель.

-

-

Синтаксис:

-

player_name;

-

-

Возвращается:

-

String

-

-

Пример:

-

// Draw event
- draw_set_halign(fa_center);
- draw_set_valign(fa_middle);
-
- draw_text(x, y - 100, player_name);
-
- draw_set_valign(fa_left);
- draw_set_valign(fa_top); -

-

Это рисует имя игрока на 100px выше его экземпляра, с выравниванием по центру и середине.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_avatar_s.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_avatar_s.htm index 55f2c6883..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_avatar_s.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_avatar_s.htm @@ -1,51 +0,0 @@ - - - - - - - player_avatar_sprite - - - - - - - - - - -

player_avatar_sprite

-

В этой переменной хранится sprite текущего экземпляра игрока.

-

Эта переменная существует только в экземплярах игроков, созданных с помощью rollback_define_player()и для каждого игрока она своя.

-

Гостевые игроки будут отображать заполнитель sprite.

-

-

Синтаксис:

-

player_avatar_sprite;

-

-

Возвращается:

-

Sprite Asset

-

-

Пример:

-

// Draw event
- draw_sprite_stretched(player_avatar_sprite, 0, x, y - 256, 64, 64);

-

Это отображает аватар экземпляра игрока, выполняющего код, в области 64x64, 256px над экземпляром.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_avatar_url.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_avatar_url.htm index 0e840c2fb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_avatar_url.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_avatar_url.htm @@ -1,48 +0,0 @@ - - - - - - - player_avatar_url - - - - - - - - - - -

player_avatar_url

-

В этой переменной хранится URL-адрес аватара игрока, который можно загрузить с помощью sprite_add().

-

Вы можете использовать player_avatar_sprite, в который уже загружен sprite.

-

Эта переменная существует только в экземплярах игроков, созданных с помощью rollback_define_player()и для каждого игрока она своя.

-

Гостевые игроки будут отображать заполнитель sprite.

-

-

Синтаксис:

-

player_avatar_url

-

-

Возвращается:

-

String

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_id.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_id.htm index dcfe0cd94..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_id.htm @@ -1,73 +0,0 @@ - - - - - - - player_id - - - - - - - - - - -

player_id

-

Когда вы используете rollback_define_player() для определения объекта игрока, система автоматически создает экземпляр этого объекта для каждого игрока. Каждый экземпляр этого объекта получает переменную player_id, в которой хранится ID этого игрока.

-

Этот идентификатор начинается с 0, который изначально является самим хостом. Все игроки от 1 и выше - это "коллеги", которые присоединились к игре.

-

Если вы не используете rollback_define_player(), то эта переменная не будет создана ни для каких объектов. В этом случае экземпляры игроков и их идентификаторы должны управляться вручную, как описано в разделе Определение объекта игрока.

-

-

Синтаксис:

-

player_id

-

-

Возвращается:

-

Real

-

-

Пример:

-

// Create event
- if (player_id == 0)
- {
-     x = 300;
- }
- else if (player_id == 1)
- {
-     x = 500;
- }

-

Приведенный выше код изменяет положение X экземпляра игрока на основе его ID.

-

Вы также можете использовать этот идентификатор в качестве индекса массива, например, для хранения оценок всех игроков:

-

// Step event
- var _coin = instance_place(x, y, obj_coin);
- if (_coin != noone)
- {
-     obj_game.scores[player_id]++;
-     instance_destroy(_coin);
- }
-
- // Draw event
- var _my_score = obj_game.scores[player_id];
- draw_text(x, y, _my_score); -

-

Приведенный выше код события Step увеличивает счет игрока в массиве в obj_game, когда он сталкивается с монетой. Затем экземпляр монеты уничтожается.

-

Приведенный выше код события Draw извлекает счет игрока из того же массива и рисует его значение.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_local.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_local.htm index f8f93c523..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_local.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_local.htm @@ -1,54 +0,0 @@ - - - - - - - player_local - - - - - - - - - - -

player_local

-

Когда вы используете rollback_define_player() для определения объекта игрока, система автоматически создает экземпляр этого объекта для каждого игрока. Каждый экземпляр этого объекта получает переменную player_local, которая сообщает, является ли данный экземпляр игрока локальным или нет.

-

Если вы не используете rollback_define_player(), то эта переменная не будет создана ни для каких объектов.

-

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

-

-

Синтаксис:

-

player_local

-

-

Возвращается:

-

Boolean

-

-

Пример:

-

// Draw event
- if (player_local)
- {
-     draw_sprite(spr_arrow, 0, x, y - 60);
- }

-

Приведенный выше код запускается в событии Draw и проверяет, является ли экземпляр игрока локальным. В этом случае над экземпляром рисуется стрелка sprite, указывающая игроку, каким экземпляром он управляет.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_prefs.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_prefs.htm index 46dcbbf5e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_prefs.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_prefs.htm @@ -1,50 +0,0 @@ - - - - - - - параметры игрока - - - - - - - - - - - -

параметры игрока

-

Эта переменная хранит предпочтения, установленные для текущего игрока. Она присваивается экземплярам игрока, созданным с помощью функции rollback_define_player().

-

Пожалуйста, прочитайте: Предпочтения игрока

-

-

Синтаксис:

-

player_prefs;

-

-

Возвращается:

-

Any

-

-

Пример:

-

image_index = player_prefs.character;

-

Приведенный выше код считывает предпочтение и устанавливает переменную экземпляра в проигрывателе.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_type.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_type.htm index 93e20eaa1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_type.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_type.htm @@ -1,63 +0,0 @@ - - - - - - - player_type - - - - - - - - - - -

player_type

-

Эта переменная определяет, является ли экземпляр игрока зарегистрированным пользователем GX.games или гостем. Она может возвращать любую из следующих строк:

- - - - - - - - - - - - - - - -
СтрокаОписание
"Guest"Игрок не зарегистрирован в GX.games
"User"Игрок зарегистрирован в GX.games
-

Гостевые пользователи получают аватары и имена.

-

Эта переменная существует только в экземплярах игроков, созданных с помощью rollback_define_player()и для каждого игрока она своя.

-

-

Синтаксис:

-

player_type

-

-

Возвращается:

-

String

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_user_id.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_user_id.htm index d9f286f3c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_user_id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/player_user_id.htm @@ -1,47 +0,0 @@ - - - - - - - player_user_id - - - - - - - - - - -

player_user_id

-

Эта переменная хранит GX.games ID текущего экземпляра игрока для использования при прямых вызовах API на сервер.

-

Эта переменная существует только в экземплярах игроков, созданных с помощью rollback_define_player()и для каждого игрока она своя.

-

Уигроков-гостей этой переменной будет присвоена пустая строка.

-

-

Синтаксис:

-

player_user_id

-

-

Возвращается:

-

String

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/rollback_.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/rollback_.htm index 7f10824cb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/rollback_.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/rollback_.htm @@ -1,45 +0,0 @@ - - - - - - - rollback_api_server - - - - - - - - - - -

rollback_api_server

-

Эта глобальная переменная хранит базовый URL, используемый для HTTP-вызовов GX.games.

-

-

Синтаксис:

-

rollback_api_server

-

-

Возвращается:

-

String

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/rollback_confirmed_frame.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/rollback_confirmed_frame.htm index d3c119034..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/rollback_confirmed_frame.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/rollback_confirmed_frame.htm @@ -1,58 +0,0 @@ - - - - - - - rollback_confirmed_frame - - - - - - - - - - -

rollback_confirmed_frame

-

Эта глобальная переменная хранит номер последнего кадра, в котором входы для всех игроков были синхронизированы и подтверждены.

-

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

-

Вы также можете использовать функцию rollback_sync_on_frame(), чтобы проверить, синхронизирован ли текущий кадр.

-

-

Синтаксис:

-

rollback_confirmed_frame

-

-

Возвращается:

-

Real

-

-

Пример:

-

var _is_frame_confirmed = (rollback_current_frame == rollback_confirmed_frame);
-
- if (_is_frame_confirmed)
- {
-     evaluate_game_over();
- } -

-

Этот код проверяет, есть ли в текущем кадре подтвержденные входы от всех игроков, проверяя, равно ли значение текущего кадра значению подтвержденного кадра.

-

Если это так, то запускается функция для проверки выполнения условия окончания игры, чтобы завершить игру.

-

Это делается для того, чтобы избежать завершения игры на основе предсказания состояния, и ожидает полностью синхронизированного кадра, прежде чем попытаться проверить условия завершения игры.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/rollback_current_frame.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/rollback_current_frame.htm index e17d6234c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/rollback_current_frame.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/rollback_current_frame.htm @@ -1,49 +0,0 @@ - - - - - - - rollback_current_frame - - - - - - - - - - -

rollback_current_frame

-

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

-

Его следует использовать вместо current_time и других подобных переменных, как объясняется в разделе " Переменные времени".

-

-

Синтаксис:

-

rollback_current_frame

-

-

Возвращается:

-

Real

-

-

Пример:

-

image_angle = dsin(rollback_current_frame) * 90;

-

В приведенном выше коде используется rollback_current_frame с dsin() для вычисления колеблющегося значения между 1 и -1, которое умножается на 90 и применяется к углу экземпляра.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/rollback_game_running.htm b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/rollback_game_running.htm index 90401a1df..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/rollback_game_running.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Rollback/Rollback_Variables/rollback_game_running.htm @@ -1,52 +0,0 @@ - - - - - - - rollback_game_running - - - - - - - - - - -

rollback_game_running

-

Эта глобальная переменная указывает, запущена ли игра отката в настоящее время. Если она равна true, это означает, что игра с откатом началась и в настоящее время запущена. В любое другое время она будет иметь значение false.

-

-

Синтаксис:

-

rollback_game_running

-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if (!rollback_game_running) return;
-
- x += move_x;
- y += move_y; -

-

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

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam.htm index 21cd1c18c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam.htm @@ -1,39 +0,0 @@ - - - - - - Steam - - - - - - - - - - -

Steam

-

Все функции Steam в GameMaker были перенесены из базового бегуна и теперь являются частью расширения, которое можно загрузить здесь.

-

Информацию о функциях расширения Steam см. в руководстве, прилагаемом к пакету расширения, или в руководстве по расширению на этом сайте.

-

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/Steam_API.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/Steam_API.htm index ed95a3ec7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/Steam_API.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/Steam_API.htm @@ -1,50 +0,0 @@ - - - - - - Паровой API - - - - - - - - - - -

Общий Steam API

-

Следующий набор функций предназначен для проверки доступности определенных аспектов клиентского или серверного API Steam и, соответственно, возвращает либо true, либо false в зависимости от таких факторов, как занятость сервера, вход пользователя в систему и т.д.. Это означает, что эти функции следует использовать до вызова любой другой функции API Steam, чтобы убедиться, что клиент/сервер настроен правильно и взаимодействует с вашей игрой:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_available_languages.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_available_languages.htm index 8410f21dc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_available_languages.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_available_languages.htm @@ -1,48 +0,0 @@ - - - - - - steam_available_languages - - - - - - - - - - -

steam_available_languages

-

Эта функция может использоваться для получения списка всех доступных языков для Steam. Возвращаемое значение - это просто список языков, разделенных запятыми.

-

-

Синтаксис:

-

steam_available_languages();

-

-

Возвращается:

-

String

-

-

Пример:

-

language = steam_available_languages();

-

Вышеприведенная команда получает доступные языки для Steam в виде строки и сохраняет ее в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_current_game_language.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_current_game_language.htm index a11c1e797..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_current_game_language.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_current_game_language.htm @@ -1,48 +0,0 @@ - - - - - - steam_current_game_language - - - - - - - - - - -

steam_current_game_language

-

Эта функция используется для получения текущего языка, который использует Steam (в виде строки), например, "english".

-

-

Синтаксис:

-

steam_current_game_language();

-

-

Возвращается:

-

String

-

-

Пример:

-

language = steam_current_game_language();

-

Приведенный выше код получает язык, используемый в текущей игре.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_app_id.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_app_id.htm index 90f4fb1c5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_app_id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_app_id.htm @@ -1,48 +0,0 @@ - - - - - - steam_get_app_id - - - - - - - - - - -

steam_get_app_id

-

Эта функция используется для получения уникального идентификатора приложения, который Steam присваивает вашей игре, что необходимо для использования некоторых функций User Generated Content.

-

-

Синтаксис:

-

steam_get_app_id();

-

-

Возвращается:

-

Real

-

-

Пример:

-

global.app_id = steam_get_app_id();

-

Приведенный выше код получает уникальный идентификатор приложения для вашей игры на сайте Steam и сохраняет его в глобальной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_persona_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_persona_name.htm index 17e367f1d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_persona_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_persona_name.htm @@ -1,51 +0,0 @@ - - - - - - steam_get_persona_name - - - - - - - - - - -

steam_get_persona_name

-

Вы можете использовать эту функцию, чтобы вернуть имя пользователя, который в настоящее время вошел в клиент Steam. Это видимое экранное имя, а не уникальный идентификатор пользователя (его можно найти с помощью функции steam_get_user_steam_id()).

-

-

Синтаксис:

-

steam_get_persona_name();

-

-

Возвращается:

-

String

-

-

Пример:

-

if steam_initialised()
- {
-     global.p_name = steam_get_persona_name();
- }

-

Приведенный выше код установит глобальную переменную в текущее экранное имя пользователя, если клиентский API Steam правильно инициализирован.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_user_account_id.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_user_account_id.htm index 69de0cc56..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_user_account_id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_user_account_id.htm @@ -1,48 +0,0 @@ - - - - - - steam_get_user_account_id - - - - - - - - - - -

steam_get_user_account_id

-

Эта функция используется для получения уникального идентификатора пользователя, который Steam присваивает каждому пользователю, что необходимо для использования некоторых функций User Generated Content.

-

-

Синтаксис:

-

steam_get_user_account_id();

-

-

Возвращается:

-

Real

-

-

Пример:

-

global.user_id = steam_get_user_account_id();

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_user_persona_name.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_user_persona_name.htm index efd7e98e5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_user_persona_name.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_user_persona_name.htm @@ -1,67 +0,0 @@ - - - - - - steam_get_user_persona_name - - - - - - - - - - -

steam_get_user_persona_name

-

Эта функция может быть использована для получения имени пользователя (экранного имени) для любого определенного ID пользователя. Вы указываете ID пользователя, после чего функция возвращает уникальное значение async ID, которое может быть использовано для правильной проверки деталей в событии Steam Async. - Это событие будет иметь async_load DS map, которая будет заполнена следующими парами ключ/значение:

-
    -
  • "id" - Идентификатор async, возвращаемый функцией, которая вызвала событие
  • -
  • "event_type" - Строка "user_persona_name"
  • -
  • "steamid"" - Значение Steam ID, используемое для получения имени пользователя.
  • -
  • "persona_name" - Имя пользователя для данного Steam ID
  • -
-

-

Синтаксис:

-

steam_get_user_persona_name(steamID);

- - - - - - - - - - - -
АргументОписание
steamIDУникальный идентификатор Steam для пользователя.
-

-

Возвращается:

-

Real

-

-

Пример:

-

request = steam_get_user_persona_name(global.UGC_UserID);

-

Приведенный выше код запросит имя пользователя ID пользователя, хранящегося в глобальной переменной "UGC_UserID", сохраняя возвращаемое значение в переменной для разбора в Async Event.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_user_steam_id.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_user_steam_id.htm index c96060ce5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_user_steam_id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_get_user_steam_id.htm @@ -1,51 +0,0 @@ - - - - - - steam_get_user_steam_id - - - - - - - - - - -

steam_get_user_steam_id

-

Вы можете использовать эту функцию для возврата уникального идентификатора пользователя Steam, который в настоящее время вошел в клиент Steam. Это уникальное 64-битное значение, которое может быть использовано для идентификации отдельных пользователей, а не их экранного имени пользователя (его можно узнать с помощью функции steam_get_persona_name()). Поскольку это int64, вам может понадобиться привести его к этому значению при использовании в последующих функциях с помощью функции int64() функция.

-

-

Синтаксис:

-

steam_get_user_steam_id();

-

-

Возвращается:

-

Integer (int64)

-

-

Пример:

-

if steam_initialised()
- {
-     global.u_id = steam_get_user_steam_id();
- }

-

Приведенный выше код установит глобальную переменную на уникальный идентификатор текущего пользователя Steam ID, если клиентский API Steam правильно инициализирован.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_initialised.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_initialised.htm index a5adb6859..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_initialised.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_initialised.htm @@ -1,55 +0,0 @@ - - - - - - steam_initialised - - - - - - - - - - -

steam_initialised

-

При использовании API Steam эта функция может быть вызвана для проверки правильности инициализации клиентского API Steam перед выполнением дальнейших вызовов специфических функций Steam в вашей игре.

-

-

Синтаксис:

-

steam_initialised();

-

-

Возвращается:

-

Boolean

-

-

Пример:

-

global.steam_api = false;
- if steam_initialised()
- {
-     if steam_stats_ready() && steam_is_overlay_enabled()
-     {
-         global.steam_api = true;
-     }
- }

-

Приведенный выше код установит глобальную переменную в true, если клиентский API Steam правильно инициализирован, вместе с функциями статистики и наложения Steam, или установит переменную в false в противном случае.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_is_user_logged_on.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_is_user_logged_on.htm index b85a9c55b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_is_user_logged_on.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_is_user_logged_on.htm @@ -1,51 +0,0 @@ - - - - - - steam_is_user_logged_on - - - - - - - - - - -

steam_is_user_logged_on

-

Эта функция возвращает true, если клиент Steam в настоящее время имеет активное соединение с серверами Steam. Если возвращается false, это означает, что активного соединения нет из-за сетевых проблем на локальной машине, либо сервер Steam не работает или занят.

-

-

Синтаксис:

-

steam_is_user_logged_on();

-

-

Возвращается:

-

String

-

-

Пример:

-

if steam_is_user_logged_on()
- {
-     global.user_id = steam_get_user_account_id();
- }

-

Приведенный выше код проверит, вошел ли пользователь на сервер Steam, и если вошел, то сохранит идентификатор пользователя в глобальной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_stats_ready.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_stats_ready.htm index 41d2ca5dd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_stats_ready.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_API/steam_stats_ready.htm @@ -1,55 +0,0 @@ - - - - - - steam_stats_ready - - - - - - - - - - -

steam_stats_ready

-

При использовании API Steam эта функция может быть вызвана для проверки того, что API клиента Steam правильно инициализировал статистику для вашей игры.

-

-

Синтаксис:

-

steam_stats_ready();

-

-

Возвращается:

-

Boolean

-

-

Пример:

-

global.steam_api = false;
- if steam_initialised()
- {
-     if steam_stats_ready() && steam_is_overlay_enabled()
-     {
-         global.steam_api = true;
-     }
- }

-

Приведенный выше код установит глобальную переменную в true, если клиентский API Steam правильно инициализирован, вместе с функциями статистики и наложения Steam, или установит переменную в false в противном случае.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/Steam_Achievements.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/Steam_Achievements.htm index a722b4291..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/Steam_Achievements.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/Steam_Achievements.htm @@ -1,59 +0,0 @@ - - - - - - Достижения Steam - - - - - - - - - - -

Достижения и статистика

-

API Steam Stats and Achievements API предоставляет простой способ для вашей игры обеспечить постоянное, перемещаемое отслеживание достижений и статистики для ваших пользователей. Данные пользователя связаны с его учетной записью Steam, а достижения и статистика каждого пользователя могут быть отформатированы и отображены в его профиле сообщества Steam.

-

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

-

Статистические данные позволяют отслеживать тонкие фрагменты информации, такие как время игры, количество использованных бонусов и т. д. Вы можете использовать их просто для отслеживания внутренних данных игры - чтобы, например, присвоить достижение на основе статистики игры за несколько сессий, собранной пользователем на нескольких компьютерах. Или вы можете отслеживать интересные игровые данные для отображения на странице сообщества пользователя Steam, где пользователи могут сравнивать свою статистику с данными своих друзей.

-

Статистика бывает трех типов - целые числа, плавающие числа и средние значения - и GameMaker Studio 2 позволяет вам изменять каждую из них из вашей игры, но они должны быть предварительно инициализированы из панели управления Steamworks для вашей игры.

-

ПРИМЕЧАНИЕ Вы должны дождаться, пока steam_stats_ready() вернется true, прежде чем пытаться читать или записывать статистику и достижения.

-

Более подробную информацию и инструкции по использованию статистики и достижений можно найти на следующих страницах с описанием функций:

- -

-

Если пользователь находится в автономном режиме, Steam сохраняет локальный кэш статистики и данных о достижениях, так что API можно использовать в обычном режиме. Все статистические данные, которые не могут быть зафиксированы, сохраняются до следующего появления пользователя в сети. В случае, если изменения были произведены на нескольких машинах, Steam автоматически объединит достижения и выберет тот набор статистики, который имел больший прогресс. Поскольку Steam сохраняет локальный кэш данных статистики, нет необходимости, чтобы игра также сохраняла локальный кэш данных на диске, тем более что такие кэши часто конфликтуют, и когда это происходит, пользователю кажется, что его прогресс был отменен, что вызывает разочарование.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_clear_achievement.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_clear_achievement.htm index 32ff0fa95..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_clear_achievement.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_clear_achievement.htm @@ -1,66 +0,0 @@ - - - - - - steam_clear_achievement - - - - - - - - - - -

steam_clear_achievement

-

С помощью этой функции вы можете указать API Steam на очистку (сброс) определенного достижения. Достижение должно быть предварительно определено на странице учетных записей панели управления Steamworks для вашей игры, а строка, передаваемая в функцию, должна совпадать со строкой, используемой в качестве имени API на панели управления.

-

-

Синтаксис:

-

steam_clear_achievement(ach_name);

- - - - - - - - - - - -
АргументОписание
ach_nameИмя достижения, которое нужно очистить (строка).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if mouse_check_button_pressed(mb_left)
- {
-     steam_clear_achievement("Ach_Game_Win");
-     steam_clear_achievement("Ach_Died_10_Times");
-     steam_clear_achievement("Ach_Killed_100_Enemies");
-     steam_clear_achievement("Ach_Beat_Boss_Level_1");
- }

-

Приведенный выше код сбросит достижения игры, когда пользователь нажмет левую кнопку мыши.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_get_achievement.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_get_achievement.htm index adf73d583..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_get_achievement.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_get_achievement.htm @@ -1,67 +0,0 @@ - - - - - - steam_get_achievement - - - - - - - - - - -

steam_get_achievement

-

С помощью этой функции вы можете проверить API Steam, чтобы узнать, было ли получено определенное достижение. Достижение должно быть предварительно определено на странице учетных записей панели управления Steamworks для вашей игры, а строка, передаваемая в функцию, должна совпадать со строкой, используемой в качестве имени API на панели управления.

-

-

Синтаксис:

-

steam_get_achievement(ach_name);

- - - - - - - - - - - -
АргументОписание
ach_nameИмя достижения, которое нужно получить (строка).
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if hp <= 0
- {
-     global.Deaths += 1;
-     if global.Deaths == 10
-     {
-         if !steam_get_achievement("ach_Player_Dies_Ten_Times") steam_set_achievement("ach_Player_Dies_Ten_Times");
-     }
- }

-

Приведенный выше код наградит игрока достижением, если глобальная переменная "Deaths" равна 10 и если достижение еще не было получено.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_get_stat_avg_rate.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_get_stat_avg_rate.htm index d16ed7ce7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_get_stat_avg_rate.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_get_stat_avg_rate.htm @@ -1,61 +0,0 @@ - - - - - - steam_get_stat_avg_rate - - - - - - - - - - -

steam_get_stat_avg_rate

-

С помощью этой функции вы можете получить значение определенной средней статистики. Эта статистика должна быть предварительно определена на странице учетных записей панели управления Steamworks для вашей игры, а строка, передаваемая в функцию, должна совпадать со строкой - со строкой, используемой в качестве API Name на панели управления.

-

-

Синтаксис:

-

steam_get_stat_avg_rate(stat_name);

- - - - - - - - - - - -
АргументОписание
stat_nameИмя статистики, которую нужно получить (строка).
-

-

Возвращается:

-

Real

-

-

Пример:

-

var avg = steam_get_stat_avg_rate("PointsPerHour");
draw_text(8, 8, "PPH = " + string(avg);

-

Приведенный выше код получает текущее значение для средней статистики "PointsPerHour" и рисует его на экране.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_get_stat_float.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_get_stat_float.htm index e1a07f9cb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_get_stat_float.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_get_stat_float.htm @@ -1,64 +0,0 @@ - - - - - - steam_get_stat_float - - - - - - - - - - -

steam_get_stat_float

-

С помощью этой функции вы можете получить значение определенной статистики с плавающей точкой. Статистика должна быть предварительно определена на странице учетных записей панели управления Steamworks для вашей игры, а строка, передаваемая в функцию, должна совпадать со строкой, используемой в качестве API Name на панели управления.

-

-

Синтаксис:

-

steam_get_stat_float(stat_name);

- - - - - - - - - - - -
АргументОписание
stat_nameИмя статистики, которую нужно получить (строка).
-

-

Возвращается:

-

Real

-

-

Пример:

-

var dist_pc = (dist / dist_max) * 100;
- if steam_get_stat_float("Travelled") < dist_pc
- {
-     steam_set_stat_int("Travelled", dist_pc);
- }

-

Приведенный выше код вычисляет процент на основе переменной пройденного расстояния "dist" и максимального расстояния, которое вы можете проехать "dist_max". Затем он опрашивает текущее значение статистики "Travelled" и, если оно меньше рассчитанного значения, снова устанавливает статистику.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_get_stat_int.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_get_stat_int.htm index a28f49916..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_get_stat_int.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_get_stat_int.htm @@ -1,65 +0,0 @@ - - - - - - steam_get_stat_int - - - - - - - - - - -

steam_get_stat_int

-

С помощью этой функции вы можете получить значение определенной целочисленной статистики со знаком. Статистика должна быть предварительно определена на странице учетных записей панели управления Steamworks для вашей игры, а строка, передаваемая в функцию, должна совпадать со строкой, используемой в качестве API Name на панели управления.

-

-

Синтаксис:

-

steam_get_stat_int(stat_name);

- - - - - - - - - - - -
АргументОписание
stat_nameИмя статистики, которую нужно получить (строка).
-

-

Возвращается:

-

Real

-

-

Пример:

-

xp += 100;
- steam_set_stat_int("Total_XP", steam_get_stat_int("Total_XP") + 100);
- if steam_get_stat_int("Total_XP") > 1000
- {
-     if !steam_get_achievement("Ach_1000XP") steam_set_achievement("Ach_1000XP");
- }

-

Приведенный выше код устанавливает статистику, а затем проверяет ее конечное значение, чтобы решить, присуждать достижение или нет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_reset_all_stats.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_reset_all_stats.htm index 621076363..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_reset_all_stats.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_reset_all_stats.htm @@ -1,54 +0,0 @@ - - - - - - steam_reset_all_stats - - - - - - - - - - -

steam_reset_all_stats

-

С помощью этой функции вы можете сбросить все статистические данные для текущего пользователя до значений по умолчанию (как определено в панели управления Steamworks для вашей игры). Рекомендуется использовать эту функцию только в качестве отладочного инструмента при разработке игры.

-

-

Синтаксис:

-

steam_reset_all_stats();

-

-

Возвращается:

-

N/A

-

-

Пример:

-

ini_open("Save.ini");
- if global.Version != ini_read_real("Data", "Version", 0)
- {
-     ini_write_real("Data", "Version", global.Version);
-     steam_reset_all_stats();
- }
- ini_close();

-

Приведенный выше код проверяет сохраненное значение в ini-файле на соответствие значению глобальной переменной, и если они отличаются, то сбрасывает статистику игры.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_reset_all_stats_achievements.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_reset_all_stats_achievements.htm index d6ce0e4a9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_reset_all_stats_achievements.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_reset_all_stats_achievements.htm @@ -1,54 +0,0 @@ - - - - - - steam_reset_all_stats_achievements - - - - - - - - - - -

steam_reset_all_stats_achievements

-

С помощью этой функции вы можете сбросить все статистические данные и достижения для текущего пользователя до значений по умолчанию (как определено в панели управления Steamworks для вашей игры). Рекомендуется использовать эту функцию только в качестве отладочного инструмента при разработке игры.

-

-

Синтаксис:

-

steam_reset_all_stats_achievements();

-

-

Возвращается:

-

N/A

-

-

Пример:

-

ini_open("Save.ini");
- if global.Version != ini_read_real("Data", "Version", 0)
- {
-     ini_write_real("Data", "Version", global.Version);
-     steam_reset_all_stats_achievements();
- }
- ini_close();

-

Приведенный выше код проверяет сохраненное значение в ini файле и значение глобальной переменной, и если они отличаются, то сбрасывает статистику и достижения для игры.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_set_achievement.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_set_achievement.htm index f0e25fea9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_set_achievement.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_set_achievement.htm @@ -1,67 +0,0 @@ - - - - - - steam_set_achievement - - - - - - - - - - -

steam_set_achievement

-

С помощью этой функции вы можете указать API Steam на присвоение ("установку") игроку достижения. Эти достижения должны быть определены на странице учетных записей панели управления Steamworks для вашей игры, а строка, передаваемая в функцию, должна совпадать со строкой, используемой в качестве имени API на панели управления. На странице Steam Game Overlay появится панель уведомления, информирующая пользователя о полученном достижении, если только достижение уже не было получено, в этом случае ничего не произойдет.

-

-

Синтаксис:

-

steam_set_achievement(ach_name);

- - - - - - - - - - - -
АргументОписание
ach_nameИмя достижения, которое нужно установить (строка).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if hp <= 0
- {
-     global.Deaths += 1;
-     if global.Deaths == 10
-     {
-         if !steam_get_achievement("ach_Player_Dies_Ten_Times") steam_set_achievement("ach_Player_Dies_Ten_Times");
-     }
- }

-

Приведенный выше код наградит игрока достижением, если глобальная переменная "Deaths" равна 10 и если достижение еще не было получено.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_set_stat_avg_rate.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_set_stat_avg_rate.htm index fa9f892a0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_set_stat_avg_rate.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_set_stat_avg_rate.htm @@ -1,80 +0,0 @@ - - - - - - steam_set_stat_avg_rate - - - - - - - - - - -

steam_set_stat_avg_rate

-

Эта функция позволяет установить средний тип статистики с эффектом "скользящего окна" для среднего значения. Значение "session_count" - это текущее значение, которое вы хотите усреднить, а "session_length" - это количество - игрового времени с момента последнего вызова функции. Более подробную информацию о том, как это можно использовать, смотрите в расширенном примере ниже.

-

-

Синтаксис:

-

steam_set_stat_avg_rate(stat_name, session_count, session_length);

- - - - - - - - - - - - - - - - - - - -
АргументОписание
stat_nameИмя статистики, которую нужно установить (строка).
session_countЗначение для получения среднего значения (вещественное число)
session_lengthВремя, прошедшее с момента последней установки статистики (вещественное число).
-

-

Возвращается:

-

N/A

-

-

Расширенный пример:

-

Поскольку функция средней статистики может быть сложной для понимания, мы проиллюстрируем ее использование на следующем примере. Рассмотрим случай, когда вы хотите отследить среднюю статистику, например, "Очки, заработанные за час". Один из подходов заключается в том, чтобы - иметь две статистики: целочисленную "TotalPoints" и плавающую "TotalPlayTimeHours", а затем разделить общее количество очков на общее время, чтобы получить значение "Points per Hour".

-

Однако, как только игрок накопит значительное количество игрового времени, рассчитанное среднее значение будет меняться крайне медленно, и чем больше пользователь играет в игру, тем меньше будет реагировать это среднее значение. Если пользователь провел в игре 100 часов - в игру, рассчитанное среднее значение "отстанет" примерно на 50 часов из этого времени, и если пользователь повысит свой навык, он не увидит ожидаемого увеличения "очков в час". Чтобы обойти эту проблему, мы можем использовать "скользящее окно". - для расчета "Очков в час" только за последние 10 часов игры.

-

Итак, чтобы использовать эту функцию, нам нужно создать статистику Steam (в панели управления игрой на Workshop) под названием "AvgPointsPerHour" и установить ее свойство Window на 10. Теперь в вашей игре вам нужно добавить несколько глобальных переменных - в экземпляр в самом начале:

-

global.Points = 0;
global.Time = 0;

-

Затем у вас будет некоторый объект контроллера для подсчета глобальной переменной "Время" в будильнике (например) каждую секунду, в то время как ваш игровой процесс будет влиять на глобальную переменную "Очки". Через регулярные промежутки времени во время игры (опять же, - в объекте контроллера, возможно, в будильнике, или в интервалах от опроса значения "Time") вы бы устанавливали статистику следующим образом:

-

steam_set_stat_avg_rate("AvgPointsPerHour", global.Points, (global.Time / 3600));
global.Points = 0;
global.Time = 0;

-

Обратите внимание, что мы делим время на 3600, поскольку нам нужно время в часах, а не в секундах, и после этого мы сбрасываем глобальную переменную "Points" и глобальную переменную "Time" в 0, чтобы при следующем вызове функции мы - получим новое среднее значение для статистики. Теперь, что сделает Steam, это возьмет это значение, которое вы отправили, и создаст среднее значение за время, которое было установлено для нашего "окна".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_set_stat_float.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_set_stat_float.htm index bbe7c07a0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_set_stat_float.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_set_stat_float.htm @@ -1,65 +0,0 @@ - - - - - - steam_set_stat_float - - - - - - - - - - -

steam_set_stat_float

-

С помощью этой функции вы можете установить определенную статистику в новое значение с плавающей точкой. Статистика должна быть предварительно определена на странице учетных записей панели управления Steamworks для вашей игры, а строка, передаваемая в функцию, должна - совпадать со строкой, используемой в качестве API Name на панели управления. Примером использования этой функции может быть отслеживание того, как далеко прошел игрок, или какой процент игры завершен.

-

-

Синтаксис:

-

steam_set_stat_float(stat_name, value);

- - - - - - - - - - - - - - - -
АргументОписание
stat_nameИмя статистики, которую нужно установить (строка).
valueЗначение (32-битное плавающее число), на которое нужно установить значение stat.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var dist_pc = (dist / dist_max) * 100;
steam_set_stat_float("Travelled", dist_pc);

-

Приведенный выше код вычисляет процент, основанный на переменной пройденного расстояния "dist" и максимальном расстоянии, которое вы можете проехать "dist_max", а затем устанавливает статистику "Travelled" в новое значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_set_stat_int.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_set_stat_int.htm index b22635007..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_set_stat_int.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Achievements/steam_set_stat_int.htm @@ -1,69 +0,0 @@ - - - - - - steam_set_stat_int - - - - - - - - - - -

steam_set_stat_int

-

С помощью этой функции вы можете установить определенную статистику в новое целочисленное знаковое значение. Статистика должна быть предварительно определена на странице учетных записей панели управления Steamworks для вашей игры, а строка, передаваемая в функцию, должна совпадать со строкой, используемой в качестве API Name на панели управления. Примерами использования этой функции могут быть отслеживание количества смертей игрока или отслеживание прогресса в достижении.

-

-

Синтаксис:

-

steam_set_stat_int(stat_name, value);

- - - - - - - - - - - - - - - -
АргументОписание
stat_nameИмя статистики, которую нужно установить (строка).
valueЗначение (32-разрядное целое число), на которое нужно установить stat.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

xp += 100;
- steam_set_stat_int("Total_XP", steam_get_stat_int("Total_XP") + 100);
- if steam_get_stat_int("Total_XP") > 1000
- {
-     if !steam_get_achievement("Ach_1000XP") steam_set_achievement("Ach_1000XP");
- }

-

Приведенный выше код устанавливает статистику, а затем проверяет ее конечное значение, чтобы решить, присуждать достижение или нет.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/Steam_Cloud.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/Steam_Cloud.htm index 3bcf32848..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/Steam_Cloud.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/Steam_Cloud.htm @@ -1,54 +0,0 @@ - - - - - - Облако пара - - - - - - - - - - -

Облако пара

-

Облако Steam предоставляет простую и прозрачную систему удаленного хранения файлов для вашей игры. Все файлы, записанные на диск с помощью функций облака GameMaker Studio 2 (перечисленных ниже), будут реплицированы на серверы Steam после выхода из игры. Если пользователь затем сменит компьютер, файлы будут загружены на новый компьютер до запуска игры, что означает, что игра сможет получить доступ к файлам, прочитав их с помощью соответствующих функций Steam. Клиент Steam выполняет работу по обеспечению синхронизации файлов на всех компьютерах, к которым обращается пользователь.

-

ПРИМЕЧАНИЕ По умолчанию Облако не включено для игры на Steamworks. Его необходимо предварительно включить на вкладке "Облако" в админке игры Steamworks, где необходимо установить квоту байтов и файлов. При следующей публикации конфигурации игры в Steamworks облачное хранилище будет готово к использованию.

-

Для доступа к облаку Steam Cloud из GameMaker Studio 2 можно использовать следующие функции

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_delete.htm index 67bcd04e6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_delete.htm @@ -1,63 +0,0 @@ - - - - - - steam_file_delete - - - - - - - - - - -

steam_file_delete

-

Эта функция удалит заданный файл с Steam Cloud. Функция вернет значение 0 в случае неудачи по какой-либо причине и значение больше 0 в случае успеха.

-

-

Синтаксис:

-

steam_file_delete(filename);

- - - - - - - - - - - -
АргументОписание
filenameИмя удаляемого файла.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if steam_file_exists("Save.txt")
- {
-     steam_file_delete("Save.txt");
- }

-

Приведенный выше код проверит, существует ли файл, и если да, то удалит его с Steam Cloud.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_exists.htm index 4301d2aad..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_exists.htm @@ -1,63 +0,0 @@ - - - - - - steam_file_exists - - - - - - - - - - -

steam_file_exists

-

С помощью этой функции вы можете проверить, существует ли файл из Steam Cloud или нет, с возвращаемым значением true, если он существует, или false в противном случае.

-

-

Синтаксис:

-

steam_file_exists(filename);

- - - - - - - - - - - -
АргументОписание
filenameИмя файла для проверки.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if steam_file_exists("Save.txt")
- {
-     save_str = steam_file_read("Save.txt");
- }

-

Приведенный выше код проверяет, существует ли файл на Steam Cloud, и если да, то открывает его и считывает содержимое в переменную "save_str".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_persisted.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_persisted.htm index 41bee3db0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_persisted.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_persisted.htm @@ -1,63 +0,0 @@ - - - - - - steam_file_persisted - - - - - - - - - - -

steam_file_persisted

-

С помощью этой функции вы можете проверить заданный файл на предмет его синхронизации с облаком Steam Cloud. Возвращаемое значение true означает, что да, а false - что нет.

-

-

Синтаксис:

-

steam_file_persisted(filename);

- - - - - - - - - - - -
АргументОписание
filenameИмя файла для проверки.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !steam_file_persisted("Save.txt")
- {
-     steam_file_share("Save.txt");
- }

-

Приведенный выше код проверит, был ли файл сохранен на Steam Cloud, и если нет, то синхронизирует его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_read.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_read.htm index 0815e2adc..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_read.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_read.htm @@ -1,63 +0,0 @@ - - - - - - steam_file_read - - - - - - - - - - -

steam_file_read

-

Эта функция считывает содержимое заданного файла в строку, которая впоследствии может быть разобрана в вашей игре.

-

-

Синтаксис:

-

steam_file_read(filename);

- - - - - - - - - - - -
АргументОписание
filenameИмя файла для чтения.
-

-

Возвращается:

-

String

-

-

Пример:

-

if steam_file_exists("Save.txt")
- {
-     save_str = steam_file_read("Save.txt");
- }

-

Приведенный выше код проверяет, существует ли файл на Steam Cloud, и если да, то открывает его и считывает содержимое в переменную "save_str".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_share.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_share.htm index f4f68b3da..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_share.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_share.htm @@ -1,63 +0,0 @@ - - - - - - steam_file_share - - - - - - - - - - -

steam_file_share

-

С помощью этой функции вы можете заставить свою игру синхронизировать заданный файл с облаком Steam Cloud. Обычно в этом нет необходимости, так как игра автоматически синхронизируется в конце сеанса игрока, и это не рекомендуется Steam, но это может быть полезно для обеспечения немедленной синхронизации конфиденциальной информации. Функция возвращает значение 0 в случае неудачи по какой-либо причине и значение больше 0 в случае успеха.

-

-

Синтаксис:

-

steam_file_share(filename);

- - - - - - - - - - - -
АргументОписание
filenameИмя синхронизируемого файла.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if !steam_file_persisted("Save.txt")
- {
-     steam_file_share("Save.txt");
- }

-

Приведенный выше код проверит, был ли файл сохранен на Steam Cloud, и если нет, то синхронизирует его.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_size.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_size.htm index d1adeaef8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_size.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_size.htm @@ -1,60 +0,0 @@ - - - - - - размер_файла - - - - - - - - - - -

размер_файла

-

С помощью этой функции вы можете проверить размер файла, хранящегося на Steam Cloud. Возвращаемое вещественное число - это размер файла в байтах.

-

-

Синтаксис:

-

steam_file_size(filename);

- - - - - - - - - - - -
АргументОписание
filenameИмя файла, размер которого необходимо проверить.
-

-

Возвращается:

-

Real

-

-

Пример:

-

file_bytes = steam_file_size("Save.txt");

-

Приведенный выше код хранит размер файла из облака Steam Cloud в переменной "file_bytes".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_write.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_write.htm index 904efdfa5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_write.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_write.htm @@ -1,69 +0,0 @@ - - - - - - steam_file_write - - - - - - - - - - -

steam_file_write

-

Вы можете использовать эту функцию для записи данных в файл, который затем будет синхронизирован с Steam Cloud, когда пользователь выйдет из игры. если файл не существует, эта функция создаст его для вас, а если он уже существует, она перезапишет - все данные, которые уже хранятся в файле, новой строкой данных. Функция вернет значение 0 в случае неудачи по какой-либо причине и значение больше 0 в случае успеха.

-

-

Синтаксис:

-

steam_file_write(filename, data, size);

- - - - - - - - - - - - - - - - - - - -
АргументОписание
filenameИмя файла для записи.
dataДанные для записи (строка).
sizeразмер записываемых данных.
-

-

Возвращается:

-

Real

-

-

Пример:

-

var fname="SaveData.txt";
var data = string(global.Level) + "|" + string(global.Points) + "|" + string(global.HP);
var len = string_length(data);
steam_file_write_file(fname, data, len);

-

Приведенный выше код подготовит ряд локальных переменных и затем использует их для записи в (или создания) файл, который затем будет синхронизирован с Steam Cloud.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_write_file.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_write_file.htm index e6cc67e28..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_write_file.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_file_write_file.htm @@ -1,65 +0,0 @@ - - - - - - steam_file_write_file - - - - - - - - - - -

steam_file_write_file

-

С помощью этой функции вы можете скопировать содержимое локально сохраненного файла в файл, синхронизированный с Steam Cloud. Локальный файл должен существо вать до использования этой функции, и она вернет значение 0 в случае неудачи по какой-либо причине и - значение больше 0 в случае успеха.

-

-

Синтаксис:

-

steam_file_write_file(steam_filename, local_filename);

- - - - - - - - - - - - - - - -
АргументОписание
steam_filenameФайл Steam Cloud для копирования.
local_filenameЛокальный файл, из которого будет производиться копирование.
-

-

Возвращается:

-

real

-

-

Пример:

-

steam_file_write_file("rm_koala.png", "Koala2.png");

-

Приведенный выше код скопирует содержимое файла "Koala2.png" в файл Steam Cloud "rm_koala.png".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_get_quota_free.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_get_quota_free.htm index b053a7a7b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_get_quota_free.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_get_quota_free.htm @@ -1,51 +0,0 @@ - - - - - - steam_get_quota_free - - - - - - - - - - -

steam_get_quota_free

-

С помощью этой функции можно узнать, сколько свободного места осталось для пользователя квоты Steam Cloud. Возвращаемое значение - в байтах.

-

-

Синтаксис:

-

steam_get_quota_free();

-

-

Возвращается:

-

Real

-

-

Пример:

-

if steam_is_cloud_enabled_for_app()
- {
-     quota = steam_get_quota_free();
- }

-

Приведенный выше код проверяет, включено ли облако steam для игры, и если да, то получает размер свободного места для хранения и сохраняет его в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_get_quota_total.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_get_quota_total.htm index b010d34ec..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_get_quota_total.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_get_quota_total.htm @@ -1,52 +0,0 @@ - - - - - - steam_get_quota_total - - - - - - - - - - -

steam_get_quota_total

-

При использовании облака Steam для хранения и синхронизации файлов вы должны установить квоту пространства, которое потребуется вашей игре. Эта квота устанавливается для каждой игры, поддерживаемой Cloud, по принципу "пользователь - игра". Например, если квота для игры X составляет 1 мегабайт, то каждая учетная запись Steam, владеющая игрой X, может хранить в Cloud не более 1 мегабайта данных, связанных с этой игрой. Любые другие игры с поддержкой Cloud, которыми владеет пользователь (например, игра Y), не будут затронуты данными, хранящимися в Game X. По умолчанию квота для новых игр Steamworks составляет один гигабайт, но вы можете изменить это значение в панели управления Steamworks для вашей игры.

-

ПРИМЕЧАНИЕ: После исчерпания квоты запись файлов будет прекращена. Если вы думаете, что квота может быть исчерпана для пользователя вашей игры, вы должны создать код для обработки этого, так как, ничего не делая, вы оставляете пользователей в ситуации, когда они не могут исправить ситуацию, что приведет к плохому восприятию вашей игры.

-

-

Синтаксис:

-

steam_get_quota_total();

-

-

Возвращается:

-

Real

-

-

Пример:

-

if steam_is_cloud_enabled_for_app()
- {
-     quota = steam_get_quota_total();
- }

-

Приведенный выше код проверяет, включено ли облако steam для игры, и если да, то получает размер квоты хранения и сохраняет его в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_is_cloud_enabled_for_account.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_is_cloud_enabled_for_account.htm index 5a2b87b2e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_is_cloud_enabled_for_account.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_is_cloud_enabled_for_account.htm @@ -1,51 +0,0 @@ - - - - - - steam_is_cloud_enabled_for_account - - - - - - - - - - -

steam_is_cloud_enabled_for_account

-

С помощью этой функции вы можете проверить, включен ли сервис Steam Cloud в настройках клиента Steam. Она вернет true, если это так, и false в противном случае. Обратите внимание, что это не означает, что вы можете автоматически сохранять данные в облако, так как оно также должно быть включено для вашей игры (вы можете проверить это с помощью функции steam_is_cloud_enabled_for_app()). Если облако Steam включено для вашей игры, но пользователь отключил его локально, вы все равно можете использовать функции облака для хранения и получения данных из локальной копии всех файлов, просто они не будут загружаться в облако при завершении игры или синхронизироваться при ее запуске.

-

-

Синтаксис:

-

steam_is_cloud_enabled_for_account();

-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if steam_is_cloud_enabled_for_account
- {
-     steam_file_share("Save.txt");
- }

-

Приведенный выше код проверяет, включен ли у пользователя Steam Cloud, и если он возвращает true, то синхронизирует заданный файл.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_is_cloud_enabled_for_app.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_is_cloud_enabled_for_app.htm index 8f689d370..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_is_cloud_enabled_for_app.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Cloud/steam_is_cloud_enabled_for_app.htm @@ -1,51 +0,0 @@ - - - - - - steam_is_cloud_enabled_for_app - - - - - - - - - - -

steam_is_cloud_enabled_for_app

-

С помощью этой функции вы можете проверить, включен ли сервис Steam Cloud для вашей игры. Она вернет true, если это так, и false в противном случае. Обратите внимание, что это не означает, что вы автоматически можете использовать облачные функции, так как пользователь может отключить синхронизацию облака в своем клиенте Steam. Проверить это можно с помощью функции steam_is_cloud_enabled_for_account()Но даже если она отключена для пользователя (и включена для игры), функции все равно будут работать для хранения и получения данных из локальной копии всех файлов, они просто не будут загружать их в облако в конце игры или синхронизировать при запуске игры.

-

-

Синтаксис:

-

steam_is_cloud_enabled_for_app();

-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if steam_is_cloud_enabled_for_app()
- {
-     quota = steam_get_quota_total();
- }

-

Приведенный выше код проверяет, включено ли облако steam для игры, и если да, то получает размер квоты хранения и сохраняет его в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_DLC/Steam_DLC.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_DLC/Steam_DLC.htm index 956f3861b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_DLC/Steam_DLC.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_DLC/Steam_DLC.htm @@ -1,43 +0,0 @@ - - - - - - Steam DLC - - - - - - - - - - -

DLC

-

Steam поддерживает как бесплатный, так и платный загружаемый контент (DLC), а в клиенте Steam игра с загружаемым контентом появляется как отдельное приложение в списке игр пользователя, причем загружаемый контент можно просмотреть в диалоге свойств игры. После владения игрой загружаемый контент рассматривается как неотъемлемая часть игры, и Steam автоматически обновляет контент при появлении патча и устанавливает его, когда пользователь устанавливает игру.

-

Поскольку все это обрабатывается серверами Steam, а настройка любого DLC осуществляется через панель управления Steamworks, для проверки наличия этого дополнительного контента в GameMaker Studio 2 необходимо выполнить всего пару функций:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_DLC/steam_user_installed_dlc.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_DLC/steam_user_installed_dlc.htm index 9a1793a20..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_DLC/steam_user_installed_dlc.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_DLC/steam_user_installed_dlc.htm @@ -1,67 +0,0 @@ - - - - - - steam_user_installed_dlc - - - - - - - - - - -

steam_user_installed_dlc

-

Если в вашей игре есть DLC, созданные для нее, вы можете использовать эту функцию, чтобы проверить, установил ли пользователь это дополнение, прежде чем получить доступ к любым файлам, связанным с ним. Функция возвращает true, если у игрока установлен контент, и false, если нет, но обратите внимание, что пользователь также должен владеть DLC, поэтому вам следует использовать дополнительную функцию steam_user_owns_dlc() чтобы проверить, что он также является владельцем, прежде чем использовать эту функцию. Обратите внимание, что идентификаторы Steam могут быть большими числами, поэтому вам может понадобиться привести значение идентификатора к виду int64() перед передачей в функцию.

-

-

Синтаксис:

-

steam_user_installed_dlc(dlc_id);

- - - - - - - - - - - -
АргументОписание
dlc_idУникальный идентификатор для проверяемого DLC (целое число).
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

global.Level_Max = 100;
- if steam_user_owns_dlc(10354)
- {
-     if steam_user_installed_dlc(10354)
-     {
-         global.Level_max = 200;
-     }
- }

-

Приведенный выше код проверит, купил ли пользователь и установил DLC с идентификатором 10354, и если да, то установит глобальную переменную на другое значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_DLC/steam_user_owns_dlc.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_DLC/steam_user_owns_dlc.htm index fe64ef453..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_DLC/steam_user_owns_dlc.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_DLC/steam_user_owns_dlc.htm @@ -1,68 +0,0 @@ - - - - - - steam_user_owns_dlc - - - - - - - - - - -

steam_user_owns_dlc

-

Если в вашей игре есть DLC, созданные для нее, вы можете использовать эту функцию для проверки того, купил ли пользователь это содержимое, прежде чем получить доступ к любым связанным с ним файлам. Функция вернет true (1), если игрок владеет содержимым, false (0), если он не владеет им или заданный идентификатор DLC недействителен, или -1, если он не вошел в систему Steam.

-

Обратите внимание, что даже если пользователь владеет DLC, он может быть не установлен, поэтому следует дополнительно использовать функцию steam_user_installed_dlc() чтобы убедиться, что он установлен, прежде чем использовать его. Обратите внимание, что идентификаторы Steam могут быть большими числами, поэтому вам может потребоваться привести значение идентификатора к виду int64() перед передачей в функцию.

-

-

Синтаксис:

-

steam_user_owns_dlc(dlc_id);

- - - - - - - - - - - -
АргументОписание
dlc_idУникальный идентификатор для проверяемого DLC (целое число int64).
-

-

Возвращается:

-

Integer

-

-

Пример:

-

global.Level_Max = 100;
- if steam_user_owns_dlc(10354)
- {
-     if steam_user_installed_dlc(10354)
-     {
-         global.Level_max = 200;
-     }
- }

-

Приведенный выше код проверит, купил ли пользователь и установил DLC с идентификатором 10354, и если да, то установит глобальную переменную на другое значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/Steam_Leaderboards.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/Steam_Leaderboards.htm index fc6e8786d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/Steam_Leaderboards.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/Steam_Leaderboards.htm @@ -1,47 +0,0 @@ - - - - - - Таблицы лидеров в Steam - - - - - - - - - - -

Пар

-

API Steam поддерживает постоянные таблицы лидеров с автоматически упорядоченными записями. Эти таблицы лидеров можно использовать для отображения глобальных и дружеских таблиц лидеров в вашей игре и на веб-странице сообщества вашей игры. Каждая игра может иметь до 10 000 таблиц лидеров, и каждая таблица лидеров может быть получена сразу после того, как в нее будет вставлен результат игрока, но обратите внимание, что в каждой таблице лидеров у игрока может быть только одна запись, хотя количество игроков в таблице лидеров не ограничено.

-

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

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_create_leaderboard.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_create_leaderboard.htm index d6a060ef6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_create_leaderboard.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_create_leaderboard.htm @@ -1,124 +0,0 @@ - - - - - - steam_create_leaderboard - - - - - - - - - - -

steam_create_leaderboard

-

С помощью этой функции вы можете создать новую таблицу лидеров для вашей игры. Первым аргументом является строка, определяющая имя вашей таблицы лидеров, и это имя должно использоваться во всех дальнейших вызовах функции, связанных с создаваемой таблицей лидеров. Вы можете - затем определить метод сортировки (см. константы, перечисленные ниже), а также способ отображения информации (опять же, одна из констант, перечисленных ниже). Функция вернет значение -1, если ей не удалось создать таблицу лидеров, или значение - больше -1, если это удалось.

-

ПРИМЕЧАНИЕ: Если вы ранее создали таблицу лидеров с таким же названием (либо через код, либо через вашу страницу Steam для игры), эта функция будет проигнорирована!

-

- - - - - - - - - - - - - - - - - - - -
Сортировка ПостояннаяОписание
lb_sort_noneНикакой сортировки. Информация будет отображаться "как есть".
lb_sort_ascendingСортировка таблицы лидеров в порядке возрастания.
lb_sort_descendingСортировка таблицы лидеров в порядке убывания.
-

- - - - - - - - - - - - - - - - - - - - - - - -
Отображать постояннуюОписание
lb_disp_noneПоказать таблицу лидеров "как есть".
lb_disp_numericПоказать таблицу лидеров в виде числового дисплея.
lb_disp_time_secПоказывать значения в таблице лидеров в виде времени, базовым значением которого являются секунды.
lb_disp_time_msПоказывать значения в таблице лидеров в виде времени, базовым значением которого являются миллисекунды.
-

-

Синтаксис:

-

steam_create_leaderboard(lb_name, sort_method, display_type);

- - - - - - - - - - - - - - - - - - - -
АргументОписание
lb_nameНазвание создаваемой доски лидеров (строка).
sort_methodМетод сортировки записей в таблице лидеров (см. константы, перечисленные ниже).
display_typeСпособ отображения таблицы лидеров для пользователя (см. константы, перечисленные ниже).
-

-

Возвращается:

-

Real

-

-

Пример:

-

steam_create_leaderboard("Game Times", lb_sort_ascending, lb_disp_time_sec);

-

Приведенный выше код создаст таблицу лидеров под названием "Game Times" и настроит ее на отображение результатов в порядке возрастания и с отображением в секундах.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_download_friends_scores.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_download_friends_scores.htm index 596d566d0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_download_friends_scores.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_download_friends_scores.htm @@ -1,63 +0,0 @@ - - - - - - steam_download_friends_scores - - - - - - - - - - -

steam_download_friends_scores

-

С помощью этой функции вы можете получить только те оценки в таблице лидеров, которые принадлежат тем людям, которые отмечены как "друзья" в клиенте Steam. Таким образом, если в вашей таблице лидеров 200 записей, и 50 из них - ваши друзья, эта функция - получит только эти 50 результатов. Имя таблицы лидеров - это строка, которая была задана при создании таблицы лидеров с помощью функции steam_create_leaderboard(), а функция вернет - значение, которое затем можно использовать для идентификации обратного вызова в Steam Async Event, или вернет -1 в случае неудачи.

-

-

Синтаксис:

-

steam_download_friends_scores(lb_name);

- - - - - - - - - - - -
АргументОписание
lb_nameНазвание таблицы лидеров, с которой вы загружаете результаты (строка).
-

-

Возвращается:

-

Real

-

-

Пример:

-

score_get = steam_download_friends_scores("Game Scores");

-

Это отправит запрос на сервер Steam для получения оценок друзей пользователя из заданной таблицы лидеров и сохранит асинхронный идентификатор запроса в переменной "score_get". Затем этот запрос будет обработан в событии Steam Async Event, - как показано в расширенном примере для steam_download_scores().

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_download_scores.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_download_scores.htm index b2600b83b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_download_scores.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_download_scores.htm @@ -1,97 +0,0 @@ - - - - - - steam_download_scores - - - - - - - - - - -

steam_download_scores

-

Эта функция используется для получения последовательного диапазона записей в таблице лидеров по их рейтингу. Параметры start_idx и end_idx управляют запрашиваемым диапазоном рангов, например, вы можете отобразить топ-10 в таблице лидеров вашей игры, задав значение start равным 1, а значение end равным 10. Имя таблицы лидеров - это строка, которая была задана при создании таблицы лидеров с помощью функции steam_create_leaderboard(), а функция вернет значение, которое затем может быть использовано для идентификации обратного вызова в событии Steam Async Event, или вернет -1 в случае неудачи. Обратите внимание, что при загрузке таблицы лидеров ключ "entries" в асинхронная_загрузка map может иметь дополнительный ключ "data", если вместе с результатом были загружены дополнительные данные буфера (см. steam_upload_score_buffer()). Этот буфер данных будет закодирован в Base 64, поэтому вам необходимо использовать функцию buffer_base64_decode() на буфере перед чтением данных.

-

-

Синтаксис:

-

steam_download_scores(lb_name, start_idx, end_idx);

- - - - - - - - - - - - - - - - - - - -
АргументОписание
lb_nameНазвание таблицы лидеров, с которой вы загружаете результаты (строка).
start_idxСтартовая позиция в таблице лидеров.
end_idxКонечная позиция в таблице лидеров.
-

-

Возвращается:

-

Real

-

-

Расширенный пример:

-

В этом расширенном примере мы запросим первую десятку рейтинга для заданной таблицы лидеров и разберем ее результаты в Steam Async Event. Для начала нам нужно запросить баллы с помощью следующего кода:

-

score_get = steam_download_scores("Game Scores", 1, 10);

-

Это отправит запрос на сервер Steam для получения очков из таблицы лидеров "Game Scores", сохраняя асинхронный идентификатор запроса в переменной "score_get". Затем он будет обработан в событии Steam Async Event следующим образом:

-

var async_id = ds_map_find_value(async_load, "id");
- if async_id == score_get
- {
-     var entries = ds_map_find_value(async_load, "entries");
-     var map = json_decode(entries);
-     if ds_map_exists(map, "default")
-     {
-         ds_map_destroy(map);
-         exit;
-     }
-     else
-     {
-         var list = ds_map_find_value(map, "entries");
-         var len = ds_list_size(list);
-         var entry;
-         for(var i = 0; i < len; i++;)
-         {
-             entry = ds_list_find_value(list, i );
-             steam_name[i] = ds_map_find_value(entry, "name");
-             steam_score[i] = ds_map_find_value(entry, "score");
-             steam_rank[i] = ds_map_find_value(entry, "rank");
-         }
-     }
-     ds_map_destroy(map)
- }

-

Здесь мы сначала проверяем ключ "id" специальной карты async_load DS. Если это значение совпадает со значением исходной функции обратного вызова (хранится в переменной "score_get"), мы продолжаем обработку данных. Первое, что мы делаем, это анализируем async_load ds_map для ключа "entries", который будет содержать объект JSON, содержащий данные таблицы лидеров. Затем этот JSON-объект декодируется (см. json_decode()) в другую DS-карту, и этот новый идентификатор карты сохраняется в переменной "map".

-

Эта карта проверяется на наличие ключа "default", и если он найден, то карта уничтожается и событие завершается. Если ключ "default" не найден, код разбирает карту для извлечения необходимой информации о таблице лидеров, сначала извлекая список DS из ключа "entries" карты DS, а затем перебирая каждую запись списка для получения другой карты DS с именем, оценкой и рангом каждой записи. Затем эти значения сохраняются в массивах.

-

После завершения цикла карта DS JSON уничтожается (что в свою очередь уничтожает все внутренние карты и списки). Нет необходимости уничтожать карту DS async_load, так как за вас это сделает GameMaker Studio 2.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_download_scores_around_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_download_scores_around_user.htm index d29fdf577..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_download_scores_around_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_download_scores_around_user.htm @@ -1,72 +0,0 @@ - - - - - - steam_download_scores_around_user - - - - - - - - - - -

steam_download_scores_around_user

-

Эта функция используется для извлечения записей в таблице лидеров относительно записи текущего пользователя. Параметр range_start - это количество записей, которые нужно получить до записи текущего пользователя, а параметр range_end - это количество записей после записи текущего пользователя. - записей после записи текущего пользователя, и запись текущего пользователя всегда включается в результаты. Например, если текущий пользователь находится на 5 месте в таблице лидеров, то при установке начального диапазона в -2 и конечного диапазона в - 2, то в результате будет получено 5 записей: с 3 по 7. Если в таблице лидеров недостаточно записей до или после записи пользователя, Steam скорректирует диапазон, чтобы попытаться вернуть запрашиваемое количество записей. Например, если пользователь находится на первом месте в таблице лидеров, - start установлено в -2, а end установлено в 2, Steam вернет первые 5 записей в таблице лидеров.

-

-

Синтаксис:

-

steam_download_scores_around_user(lb_name, range_start, range_end);

- - - - - - - - - - - - - - - - - - - -
АргументОписание
lb_nameНазвание таблицы лидеров, с которой вы загружаете результаты (строка).
range_startСтартовая позиция в таблице лидеров.
range_endКонечная позиция в таблице лидеров.
-

-

Возвращается:

-

Real

-

-

Пример:

-

score_get = steam_download_scores_around_user("Game Scores", -4, 5);

-

Это отправит запрос на сервер Steam для получения диапазона из 10 очков из таблицы лидеров "Game Scores", центрированных на игроке, и сохранит асинхронный идентификатор запроса в переменной "score_get". Затем этот запрос будет - обрабатываться в Асинхронное событие Steamкак показано в расширенном примере для steam_download_scores().

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_upload_score.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_upload_score.htm index 898b8a028..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_upload_score.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_upload_score.htm @@ -1,102 +0,0 @@ - - - - - - steam_upload_score - - - - - - - - - - -

steam_upload_score

-

Эта функция отправит результат в заданную таблицу лидеров. Загружаемый результат является вещественным числом, а имя таблицы лидеров - строкой, которая была определена при создании таблицы лидеров с помощью функции steam_create_leaderboard(). В случае неудачи функция вернет значение -1, в то время как успешная отправка вернет уникальный ID для выгрузки и вызовет асинхронное событие Steam Event. Это событие создаст DS Map во встроенной переменной async_load со следующими парами ключ/значение:

-
    -
  • "event_type" - Этот ключ будет иметь значение "leaderboard_upload", когда будет вызван этой функцией.
  • -
  • "lb_name" - Этот ключ содержит название таблицы лидеров, которая была опубликована в
  • -
  • "success" - Будет равно 1, если сообщение удалось, 0 - нет
  • -
  • "updated" - Будет 1, если результат в таблице лидеров был действительно обновлен (т.е. новый результат был лучше) или 0 в противном случае.
  • -
  • "post_id" - Этот ключ должен соответствовать значению ID, возвращенному вызовом загрузки.
  • -
  • "score" - Этот ключ хранит оценку, которая была опубликована
  • -
-

-

Синтаксис:

-

steam_upload_score(lb_name, score);

- - - - - - - - - - - - - - - -
АргументОписание
lb_nameИмя таблицы лидеров, в которую вы загружаете результаты (строка).
scoreОценка, которую нужно загрузить (реальное число).
-

-

Возвращается:

-

Real

-

-

Расширенный пример:

-

В этом примере мы сначала загрузим результат, а затем разберем карту async_load, возвращенную в случае успеха. В приведенном ниже коде показан типичный пример загрузки:

-

if (hp <= 0)
-     {
-     upload_ID = steam_upload_score("Game Scores", score);
-     if (!upload_ID)
-         {
-         alarm[0] = room_speed;
-         }
-     }

-

Обратите внимание, что мы установили сигнал тревоги при неудачном вызове. Это будет использоваться для повторной попытки загрузки в более позднее время, и вы можете добавить туда дополнительный код для повторной попытки загрузки или для сохранения результатов в текстовом файле в случае неудачи и т.д.. Теперь мы добавим следующее в событие Steam async для экземпляра, управляющего оценками:

-

var type = ds_map_find_value(async_load, "event_type");
- if (type == "leaderboard_upload")
- {
-     var lb_ID = ds_map_find_value(async_load, "post_id");
-     if lb_ID == upload_ID
-     {
-         var lb_name = ds_map_find_value(async_load, "lb_name");
-         var lb_done = ds_map_find_value(async_load, "success");
-         var lb_score = ds_map_find_value(async_load, "score");
-         var lb_updated = ds_map_find_value(async_load, "updated");
-         show_debug_message("leaderboard post id:" + string(lb_ID) + " to lb:" + string(lb_name) + " with score:" + string(lb_score) + " updated=" + string(lb_updated));
-         if (lb_done)
-         {
-             show_debug_message("- Succeeded");
-         }
-         else
-         {
-             show_debug_message("- Failed");
-         }
-     }
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_upload_score_buffer.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_upload_score_buffer.htm index a2fe1ff47..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_upload_score_buffer.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Leaderboards/steam_upload_score_buffer.htm @@ -1,111 +0,0 @@ - - - - - - steam_upload_score_buffer - - - - - - - - - - -

steam_upload_score_buffer

-

Эта функция отправит результат в заданную таблицу лидеров вместе с пакетом данных, созданным из буфера. Буфер должен быть размером не более 256 байт - все, что больше, будет обрезано - и может содержать любые данные, которые вам нужны. Загружаемый результат должен быть вещественным числом, а имя таблицы лидеров - строкой, которая была определена при создании таблицы лидеров с помощью функции steam_create_leaderboard().

-

В случае неудачи функция вернет значение -1, в то время как успешный пост вернет уникальный ID для выгрузки и вызовет асинхронное событие Steam. Это событие создаст DS Map во встроенной переменной async_load со следующими парами ключ/значение:

-
    -
  • "event_type" - Этот ключ будет иметь значение "leaderboard_upload", когда будет вызван этой функцией.
  • -
  • "lb_name" - Этот ключ содержит название таблицы лидеров, которая была опубликована в
  • -
  • "success" - Будет равно 1, если сообщение удалось, 0 - нет
  • -
  • "updated" - Будет 1, если результат в таблице лидеров действительно был обновлен (т.е. новый результат был лучше) или 0 в противном случае. Обратите внимание, что если счет обновлен, данные загруженного буфера также не будут добавлены.
  • -
  • "post_id" - Этот ключ должен соответствовать значению ID, возвращенному вызовом загрузки.
  • -
  • "score" - Этот ключ хранит оценку, которая была опубликована
  • -
-

Обратите внимание, что при загрузке таблицы лидеров ключ "entries" у async_load map теперь будет иметь ключ "data", чтобы вы могли получить загруженный буфер данных (подробнее см. пример расширенного кода Steam Event ). Этот буфер данных будет закодирован в Base 64, поэтому вам нужно будет использовать функцию buffer_base64_decode() для данных перед чтением из буфера.

-

-

Синтаксис:

-

steam_upload_score_buffer(lb_name, score, buffer);

- - - - - - - - - - - - - - - - - - - -
АргументОписание
lb_nameИмя таблицы лидеров, в которую вы загружаете результаты (строка).
scoreОценка, которую нужно загрузить (реальное число).
bufferИдентификатор буфера для присоединения.
-

-

Возвращается:

-

Real

-

-

Расширенный пример:

-

В этом примере мы сначала загружаем результат, а затем разбираем карту async_load, возвращаемую в случае успеха. В приведенном ниже коде показан типичный пример загрузки, при этом создается буфер для хранения строки, сообщающей нам, с какого уровня был загружен результат:

-

if (hp <= 0)
- {
-     var buff = buffer_create(256, buffer_fixed, 1 );
-     buffer_write(buff, buffer_string, "Uploaded on level " + string(global.Level));
-     upload_ID = steam_upload_score("Game Scores", score, buff);
-     if (!upload_ID)
-     {
-         alarm[0] = room_speed;
-     }
-     buffer_delete(buff);
- }

-

Обратите внимание, что мы установили сигнал тревоги при неудачном вызове. Это будет использоваться для повторной попытки загрузки в более позднее время, и вы можете добавить туда дополнительный код для повторной попытки загрузки или для сохранения результата в текстовый файл, если он продолжает оставаться неудачным, и т.д.. Также обратите внимание, что мы сразу же удаляем буфер, поскольку он больше не нужен для работы функции. Теперь мы добавим следующее в событие Steam async для экземпляра, управляющего оценками:

-

var type = ds_map_find_value(async_load, "event_type");
- if (type == "leaderboard_upload")
- {
-     var lb_ID = ds_map_find_value(async_load, "post_id");
-     if lb_ID == upload_ID
-     {
-         var lb_name = ds_map_find_value(async_load, "lb_name");
-         var lb_done = ds_map_find_value(async_load, "success");
-         var lb_score = ds_map_find_value(async_load, "score");
-         var lb_updated = ds_map_find_value(async_load, "updated");
-         show_debug_message("leaderboard post id:" + string(lb_ID) + " to lb:" + string(lb_name) + " with score:" + string(lb_score) + " updated=" + string(lb_updated));
-         if (lb_done)
-         {
-             show_debug_message("- Succeeded");
-         }
-         else
-         {
-             show_debug_message("- Failed");
-         }
-     }
- }

-

В примере мы просто выводим возвращаемые значения в окно компилятора в качестве отладочных сообщений, но вы можете использовать это событие для работы с информацией любым выбранным вами способом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/Steam_Overlay.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/Steam_Overlay.htm index 9c5366fd1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/Steam_Overlay.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/Steam_Overlay.htm @@ -1,46 +0,0 @@ - - - - - - Наложение пара - - - - - - - - - - -

Пар

-

Оверлей Steam - это визуальный экран, который можно вывести на экран, чтобы показать пользователю интерфейс Steam. Обычно это делается самим пользователем с помощью комбинации клавиш, но у вас также есть возможность сделать это из вашей игры, так что вы можете назначить кнопку или событие для отображения оверлея, используя следующие функции:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_activate_overlay.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_activate_overlay.htm index 88a9d17f4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_activate_overlay.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_activate_overlay.htm @@ -1,110 +0,0 @@ - - - - - - steam_activate_overlay - - - - - - - - - - -

steam_activate_overlay

-

Оверлей Steam - это часть пользовательского интерфейса Steam, которая может быть активирована поверх практически любой игры, запущенной через Steam. Он позволяет пользователю получить доступ к списку друзей, веб-браузеру, чату и внутриигровой покупке DLC. По умолчанию для доступа к оверлею во время игры используется клавиша SHIFT+TAB, но с помощью этой функции можно вызвать любую страницу оверлея. Она принимает одну из шести констант, которые перечислены ниже:

-
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
ov_friendsСтраница друзей для текущего пользователя
ov_communityСтраница сообщества для вашей игры
ov_playersСтраница, показывающая других людей, которые играют в ту же игру или с которыми вы недавно играли
ov_settingsНастройки наложения клиента Steam
ov_gamegroupОткрывает в веб-браузере Steam Community официальную игровую группу для этой игры.
ov_achievementsСтраница достижений для вашей игры
-
-

-

Синтаксис:

-

steam_activate_overlay(overlayindex);

- - - - - - - - - - - -
АргументОписание
overlayindexИндекс страницы пользовательского интерфейса Steam API для отображения (см. константы, перечисленные ниже).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var key = keyboard_lastkey;
- switch (key)
- {
-     case vk_f1: steam_activate_overlay(ov_friends); break;
-     case vk_f2: steam_activate_overlay(ov_community); break;
-     case vk_f3: steam_activate_overlay(ov_players); break;
-     case vk_f4: steam_activate_overlay(ov_settings); break;
-     case vk_f5: steam_activate_overlay(ov_gamegroup); break;
-     case vk_f6: steam_activate_overlay(ov_achievements); break;
- }

-

Приведенный выше код опрашивает последнюю нажатую клавишу клавиатуры, и если это любая из функциональных клавиш от 1 до 6, то открывается соответствующая страница оверлея Steam.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_activate_overlay_browser.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_activate_overlay_browser.htm index 3fe0479fb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_activate_overlay_browser.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_activate_overlay_browser.htm @@ -1,63 +0,0 @@ - - - - - - steam_activate_overlay_browser - - - - - - - - - - -

steam_activate_overlay_browser

-

С помощью этой функции вы можете открыть игровой оверлей Steam в веб-браузере и загрузить указанный URL. Для правильного разрешения необходимо использовать полный URL в виде строки, например: "http://www.steamgames.com/".

-

-

Синтаксис:

-

steam_activate_overlay(url);

- - - - - - - - - - - -
АргументОписание
url(Полный) URL-адрес оверлея для открытия.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if keyboard_check_pressed(vk_f1)
- {
-     steam_activate_overlay_browser("http://www.steamgames.com/");
- }

-

Приведенный выше код опрашивает клавиатуру на предмет нажатия клавиши F1, и если она нажата, то открывается оверлей Steam и происходит переход к заданному URL.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_activate_overlay_store.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_activate_overlay_store.htm index 64302142f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_activate_overlay_store.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_activate_overlay_store.htm @@ -1,63 +0,0 @@ - - - - - - steam_activate_overlay_store - - - - - - - - - - -

steam_activate_overlay_store

-

С помощью этой функции вы можете открыть оверлей Steam на странице магазина для игры, чтобы пользователи могли купить или загрузить DLC (например). Вам необходимо предоставить уникальный App ID для игры или DLC, который вы получите из панели управления Steam при настройке.

-

-

Синтаксис:

-

steam_activate_overlay_store(app_id);

- - - - - - - - - - - -
АргументОписание
app_idУникальный идентификатор приложения для вашей игры.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if keyboard_check_pressed(vk_f1)
- {
-     steam_activate_overlay_store(global.DLC_id);
- }

-

Приведенный выше код опрашивает клавиатуру на предмет нажатия клавиши F1, и если она нажата, то на странице открывается оверлей Steam для игрового контента, используя идентификатор приложения, сохраненный в глобальной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_activate_overlay_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_activate_overlay_user.htm index c0e9bff1c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_activate_overlay_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_activate_overlay_user.htm @@ -1,74 +0,0 @@ - - - - - - steam_activate_overlay_user - - - - - - - - - - -

steam_activate_overlay_user

-

Эта функция откроет оверлей Steam на один из выбранных диалогов, относящихся к указанному идентификатору пользователя. Доступны следующие возможные диалоговые строки:

-
    -
  • "steamid" - открывает веб-браузер Steam Community на страницу пользователя или группы
  • -
  • "chat" - открыть окно чата для указанного пользователя
  • -
-

Обратите внимание, что идентификаторы Steam могут быть большими числами, поэтому вам может понадобиться привести значение вашего идентификатора к виду int64() перед тем, как передать его в функцию.

-

-

Синтаксис:

-

steam_activate_overlay_user(dialog_name, steamid);

- - - - - - - - - - - - - - - -
АргументОписание
dialog_nameДиалог, на котором нужно открыть наложение (см. ниже).
steamidИдентификатор пользователя Steam или идентификатор группы для использования.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var key = keyboard_lastkey;
- switch (key)
- {
-     case vk_f1: steam_activate_overlay_user("steamid", global.GameGroupID); break;
-     case vk_f2: steam_activate_overlay_user("chat", global.FriendID); break;
- }

-

Приведенный выше код опрашивает последнюю нажатую клавишу клавиатуры, и если это функциональная клавиша 1 или функциональная клавиша 2, он откроет оверлей Steam для просмотра группы Steam, хранящейся в глобальной переменной "GamegroupID", или откроет окно чата для общения с пользователем, хранящимся в глобальной переменной "FriendID".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_is_overlay_activated.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_is_overlay_activated.htm index 38b71c6aa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_is_overlay_activated.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_is_overlay_activated.htm @@ -1,51 +0,0 @@ - - - - - - steam_is_overlay_activated - - - - - - - - - - -

steam_is_overlay_activated

-

Эта функция позволяет узнать, активен ли у пользователя оверлей Steam или нет. Если оверлей активен и виден пользователю, функция вернет true, а если нет, то false. Примером использования этой функции может быть опрос API Steam на предмет наличия оверлея, чтобы можно было приостановить игру на время показа оверлея.

-

-

Синтаксис:

-

steam_is_overlay_activated();

-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if steam_is_overlay_activated()
- {
-     global.Pause = true;
- }

-

Приведенный выше код проверит, активен ли оверлей Steam, и если да, то установит глобальную переменную "Pause" в true.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_is_overlay_enabled.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_is_overlay_enabled.htm index 2aad0013b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_is_overlay_enabled.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_Overlay/steam_is_overlay_enabled.htm @@ -1,55 +0,0 @@ - - - - - - steam_is_overlay_enabled - - - - - - - - - - -

steam_is_overlay_enabled

-

При использовании API Steam эта функция может быть вызвана для проверки того, что в API клиента Steam включена функция наложения.

-

-

Синтаксис:

-

steam_is_overlay_enabled();

-

-

Возвращается:

-

Boolean

-

-

Пример:

-

global.steam_api = false;
- if steam_initialised()
- {
-     if steam_stats_ready() && steam_is_overlay_enabled()
-     {
-         global.steamapi = true;
-     }
- }

-

Приведенный выше код установит глобальную переменную в true, если клиентский API Steam правильно инициализирован, вместе с функциями статистики и наложения Steam, или установит переменную в false в противном случае.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/Steam_UGC.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/Steam_UGC.htm index 071ec92e3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/Steam_UGC.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/Steam_UGC.htm @@ -1,116 +0,0 @@ - - - - - - Steam UGC - - - - - - - - - - -

Пар

-

Этот раздел предназначен для тех пользователей, которые получили доступ к API Steam для публикации своей игры на этой платформе и хотят использовать возможности, которые предоставляет мастерская и сообщество Steam для добавления и создания пользовательского контента в своих проектах. Простейшей формой пользовательского контента является возможность делать скриншоты и делиться ими, что облегчается с помощью следующих двух функций:

- -

-

Остальные функции на этой странице связаны с использованием Steam Worksop, и некоторые из них требуют Steam App ID для вашего проекта, а также User ID для человека, играющего в игру, или его имя пользователя, которое можно найти с помощью следующих функций:

- -

-

Перед использованием любой из встроенных функций API UGC(User Generated Content) Steam вам необходимо правильно настроить свою игру на панели управления Steam и ознакомиться с необходимой документацией, которая находится здесь:

- -

ПРИМЕЧАНИЕ: Вам необходимо, чтобы ваша игра была принята для интернет-магазина Steam и имела доступ к разделам для разработчиков в документации Steam API.

-

Все подписанные элементы пользовательского контента будут загружаться клиентом Steam автоматически, и вы должны иметь код в асинхронном событии Steam, чтобы поймать это и сохранить ID пользовательского контента, который был загружен, для использования в других функциях UGC.

-

ВАЖНО! Steam UGC ID могут быть огромными числами, превышающими 600 000 000. Это означает, что иногда вам может понадобиться хранить их в виде строки, а не как реальное значение, особенно при работе с буферами или при попытке записать значение в текстовый файл (поскольку это преобразует его в упрощенный стандартный формат типа "6.6624e+003", что вызовет проблемы при обратном считывании).

-

Обычный рабочий процесс для включения пользовательского контента в вашу игру будет выглядеть следующим образом:

-
    -
  1. Пользователь подписывается на элемент (либо из вашей игры с помощью steam_ugc_subscribe_item() или из клиента/браузера.
  2. -
  3. Ваша игра будет "слушать" новые подписки с помощью соответствующего кода в событии Steam Async Event.
  4. -
  5. Когда вы получаете асинхронное событие подписки, вы можете проверить, установлен ли элемент (т.е. загружен ли он) с помощью функции steam_ugc_get_item_install_info().
  6. -
  7. Если элемент не установлен, вам понадобится проверка с помощью функции steam_ugc_get_item_update_info() для отслеживания прогресса загрузки.
  8. -
-

В следующих разделах описаны все функции, необходимые для обеспечения функционирования UGC в GameMaker Studio 2:

-

-

Следующие функции по сути являются функциями-"обертками" для функций, поставляемых в API Steam для создания и загрузки содержимого на свои серверы. Поэтому перед их использованием рекомендуется ознакомиться с документацией по ссылке Steam, чтобы лучше понять, как они работают: Создание и загрузка содержимого.

- -

-

-

После того как пользовательский контент создан и доступен для загрузки в мастерской, люди могут подписаться на него через приложение Steam или через веб-портал. Однако GameMaker Studio 2 также включает следующие функции для использования API Steam для создания и отмены подписок, а также для получения информации о том, на что пользователь подписан в данный момент:

- -

-

-

-

Существует также большое количество функций, позволяющих запрашивать у Steam API информацию о доступных пользовательских контентах:

- -

-

Вы можете получить изображение предварительного просмотра любого пользовательского контента из мастерской, используя функцию steam_ugc_send_query(), чтобы получить handle файла предварительного просмотра изображения, а затем вызвать следующую функцию:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_is_screenshot_requested.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_is_screenshot_requested.htm index adf9b4ea1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_is_screenshot_requested.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_is_screenshot_requested.htm @@ -1,56 +0,0 @@ - - - - - - steam_is_screenshot_requested - - - - - - - - - - -

steam_is_screenshot_requested

-

Эта функция опрашивает API Steam, чтобы узнать, была ли нажата клавиша для создания скриншота игры. Функция возвращает true только на один шаг (игровой тик), когда клавиша нажата, и возвращает false во всех остальных случаях.

-

Обратите внимание, что если клавиша скриншота нажата, эта функция вернет true только один раз для каждого шага, когда она нажата, и вернет false для всех последующих вызовов в пределах одного шага. Например, если скриншот запрашивается в текущем кадре, и вы вызываете эту функцию в событии Step, чтобы узнать это, вы получите true; однако если вы вызовете ее снова в Draw GUI, чтобы проверить, был ли запрошен скриншот, вы получите false, поскольку функция уже была "использована" в событии Step. Чтобы использовать возвращаемое значение функции несколько раз в одном кадре, рекомендуется хранить его в переменной и считывать вместо повторного вызова функции.

-

ПРИМЕЧАНИЕ: Эта функция не делает снимок экрана. Она только сигнализирует о том, что клавиша была нажата, и вы должны использовать функции GameMaker Studio 2 экран_сохранить() или screen_save_part() для сохранения локальной копии загружаемого файла.

-

-

Синтаксис:

-

steam_is_screenshot_requested();

-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if steam_is_screenshot_requested()
- {
-     var file = "Catch_The_Haggis_" + string(global.scrn_num) + ".png");
-     screen_save(file)
-     steam_send_screenshot(file, window_get_width(), window_get_height());
-     global.scrn_num += 1;
- }

-

Приведенный выше код будет опрашивать API Steam на предмет запроса скриншота, и если он был, то будет сгенерировано уникальное имя для файла изображения, сделан скриншот, и файл будет отправлен на страницу сообщества Steam для пользователя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_send_screenshot.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_send_screenshot.htm index b9c995868..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_send_screenshot.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_send_screenshot.htm @@ -1,74 +0,0 @@ - - - - - - steam_send_screenshot - - - - - - - - - - -

steam_send_screenshot

-

С помощью этой функции вы можете загрузить снимок экрана на страницу профиля Steam Community текущего зарегистрированного пользователя. Имя файла, которое вы указываете, является именем локального файла, который был создан при создании скриншота с помощью функций GameMaker Studio 2. экран_сохранить() или screen_save_part(). Ширина и высота определяют размер изображения, а функция вернет значение 0, если по какой-либо причине она не выполнится, и значение больше 0, если она выполнится успешно.

-

-

Синтаксис:

-

steam_send_screenshot(filename, width, height);

- - - - - - - - - - - - - - - - - - - -
АргументОписание
filenameИмя файла изображения для загрузки (строка).
widthШирина изображения (целое число).
heightВысота изображения (целое число).
-

-

Возвращается:

-

Real

-

-

Пример:

-

if steam_is_screenshot_requested()
- {
-     var file = "Catch_The_Haggis_" + string(global.scrn_num) + ".png");
-     screen_save(file)
-     steam_send_screenshot(file, window_get_width(), window_get_height());
-     global.scrn_num += 1;
- }

-

Приведенный выше код будет опрашивать API Steam на предмет запроса скриншота, и если он был, то будет сгенерировано уникальное имя для файла изображения, сделан скриншот, и файл будет отправлен на страницу сообщества Steam для пользователя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_item.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_item.htm index b997cb9c9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_item.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_item.htm @@ -1,103 +0,0 @@ - - - - - - steam_ugc_create_item - - - - - - - - - - -

steam_ugc_create_item

-

Эта функция используется для подготовки API Workshop и генерирования опубликованного идентификатора файла для добавляемого элемента. Функция должна быть вызвана до того, как вы начнете делать что-либо еще с загружаемым элементом, так как вам нужно будет использовать уникальное значение опубликованного ID, которое она возвращает в событии Steam Async Event для обновления. Чтобы использовать эту функцию, необходимо указать Steam App ID вашей игры, а в качестве аргумента file_type использовать одну из следующих констант:

- - - - - - - - - - - - - - - -
ПостояннаяОписание
ugc_filetype_communityОн используется для создания файлов, которые будут загружены и доступны любому члену сообщества.
ugc_filetype_microtransИспользуется для описания файлов, которые загружены, но предназначены только для игры, чтобы рассмотреть возможность добавления в качестве официального контента.
-


- При использовании этой функции она возвращает асинхронное значение ID, которое затем может быть разобрано при срабатывании асинхронного события Steam для сообщения о создании элемента. Событие будет содержать следующие значения ключа/карты в файле async_load ds_map:

-
    -
  • "id" - Идентификатор async, возвращаемый вызывающей функцией
  • -
  • "result" - Результат операции (вещественное значение). Это будет либо константа GML ugc_result_success, либо какое-то другое вещественное число. Поэтому вы должны проверить наличие этой константы, чтобы убедиться, что вызов был успешным, и если что-то сработало неправильно. Остальные возможные возвращаемые значения отображаются как результат значения Steam "EResult", и вы должны увидеть steamclientpublic.h в заголовках SDK для всех 89 возможных значений.
  • -
  • "event_type" - Этот ключ будет содержать значение "ugc_create_item".
  • -
  • "legal_agreement_required" - Будет true или false (см. документацию Steam для более подробной информации).
  • -
  • "published_file_id" - Этот ключ хранит уникальный опубликованный ID для элемента, который представляет собой int64 (и вам может понадобиться привести его к такому виду при использовании в последующих функциях с помощью функции int64() функция)
  • -
-

-

Синтаксис:

-

steam_ugc_create_item(consumer_app_id, file_type);

- - - - - - - - - - - - - - - -
АргументОписание
consumer_app_idУникальный идентификатор приложения для вашей игры на сайте Steam.
file_typeОдна из доступных констант типа файла (перечислены ниже).
-

-

Возвращается:

-

Async ID

-

-

Расширенный пример:

-

В этом примере мы сначала вызываем функцию и сохраняем значение идентификатора async в переменной:

-

var app_id = steam_get_app_id();
- new_item = steam_ugc_create_item(app_id, ugc_filetype_community);

-

Затем отправляется запрос на Steam API для создания нового элемента Worksop, генерируя асинхронное событие, которое мы будем обрабатывать следующим образом:

-

var event_id = async_load[? "id"];
- if event_id == new_item
- {
-     var type = async_load[? "event_type"];
-     if type == "ugc_create_item"
-     {
-         global.Publish_ID = async_load[? "published_file_id"];
-     }
- }

-

Приведенный выше код проверяет тип события, и если это "ugc_create_item", то он извлекает ID опубликованного файла и сохраняет его в глобальной переменной для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_query_all.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_query_all.htm index 6472f2c85..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_query_all.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_query_all.htm @@ -1,210 +0,0 @@ - - - - - - steam_ugc_create_query_all - - - - - - - - - - -

steam_ugc_create_query_all

-

Эта функция может быть использована для запроса базы данных UGC с использованием некоторых предварительно определенных типов запросов. Функция требует следующие константы для типа создаваемого запроса, типа элемента для запроса и номера страницы для запроса - обратите внимание, что запрос возвращает - максимум 50 элементов.

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип запроса ПостоянныйОписание
ugc_query_RankedByVoteСм. документацию Steam.
ugc_query_RankedByPublicationDate-
ugc_query_AcceptedForGameRankedByAcceptanceDate-
ugc_query_RankedByTrend-
ugc_query_FavoritedByFriendsRankedByPublicationDate-
ugc_query_CreatedByFriendsRankedByPublicationDate-
ugc_query_RankedByNumTimesReported-
ugc_query_CreatedByFollowedUsersRankedByPublicationDate-
ugc_query_NotYetRated-
ugc_query_RankedByTotalVotesAsc-
ugc_query_RankedByVotesUp-
ugc_query_RankedByTextSearch-
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип соответствия ПостояннаяОписание
ugc_match_ItemsСм. документацию Steam.
ugc_match_Items_Mtx-
ugc_match_Items_ReadyToUse-
ugc_match_Collections-
ugc_match_Artwork-
ugc_match_Videos-
ugc_match_Screenshots-
ugc_match_AllGuides-
ugc_match_WebGuides-
ugc_match_IntegratedGuides-
ugc_match_UsableInGame-
ugc_match_ControllerBindings-
-


-
Функция возвращает уникальное значение хэндла запроса, которое должно быть сохранено в переменной для использования в других функциях запроса. Обратите внимание, что эта функция только подготавливает запрос, но не отправляет его - для этого вы должны вызвать функцию - steam_ugc_send_query() - и вы можете использовать другие функции steam_ugc_query_*() для уточнения поискового запроса перед его отправкой.

-

-

Синтаксис:

-

steam_ugc_create_query_all(query_type, match_type, page);

- - - - - - - - - - - - - - - - - - - -
АргументОписание
query_typeТип создаваемого запроса (см. константы, перечисленные ниже).
match_typeТип элементов пользовательского контента для запроса (см. константы, перечисленные ниже).
pageНомер страницы для запроса.
-

-

Возвращается:

-

Query Handle

-

-

Пример:

-

query_handle = steam_ugc_create_query_all(ugc_query_RankedByVote, ugc_match_Items, 1);

-

Приведенный выше код создает запрос общего запроса и сохраняет его обработку в переменной для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_query_all_ex.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_query_all_ex.htm index c624165c2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_query_all_ex.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_query_all_ex.htm @@ -1,217 +0,0 @@ - - - - - - steam_ugc_create_query_all_ex - - - - - - - - - - -

steam_ugc_create_query_all_ex

-

Эта функция может быть использована для запроса базы данных UGC. Функция требует ID игры, которая будет потреблять элемент, и/или ID игры, которая создала элемент, а также необходимо использовать следующие константы для типа создаваемого запроса, - тип элемента для запроса и номер страницы для запроса. Обратите внимание, что запрос возвращает максимум 50 элементов.

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип запроса ПостоянныйОписание
ugc_query_RankedByVoteСм. документацию Steam.
ugc_query_RankedByPublicationDate-
ugc_query_AcceptedForGameRankedByAcceptanceDate-
ugc_query_RankedByTrend-
ugc_query_FavoritedByFriendsRankedByPublicationDate-
ugc_query_CreatedByFriendsRankedByPublicationDate-
ugc_query_RankedByNumTimesReported-
ugc_query_CreatedByFollowedUsersRankedByPublicationDate-
ugc_query_NotYetRated-
ugc_query_RankedByTotalVotesAsc-
ugc_query_RankedByVotesUp-
ugc_query_RankedByTextSearch-
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип соответствия ПостояннаяОписание
ugc_match_ItemsСм. документацию Steam.
ugc_match_Items_Mtx-
ugc_match_Items_ReadyToUse-
ugc_match_Collections-
ugc_match_Artwork-
ugc_match_Videos-
ugc_match_Screenshots-
ugc_match_AllGuides-
ugc_match_WebGuides-
ugc_match_IntegratedGuides-
ugc_match_UsableInGame-
ugc_match_ControllerBindings-
-


Функция возвращает уникальное значение хэндла запроса, которое должно быть сохранено в переменной для использования в других функциях запроса. Обратите внимание, что эта функция только подготавливает запрос, но не отправляет его - для этого вы должны вызвать функцию - steam_ugc_send_query() - и вы можете использовать другие функции steam_ugc_query_*() для уточнения поискового запроса перед его отправкой.

-

-

Синтаксис:

-

steam_ugc_create_query_all_ex(query_type, match_type, page, creator_app_id, consumer_app_id);

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
query_typeТип запроса данных для создания (см. константы, перечисленные ниже).
match_typeТип элементов пользовательского контента для запроса (см. константы, перечисленные ниже).
pageНомер страницы для запроса.
creator_app_idИдентификатор приложения создателя элемента.
consumer_app_idИдентификатор потребительского приложения.
-

-

Возвращается:

-

Query Handle

-

-

Пример:

-

query_handle = steam_ugc_create_query_all_ex(ugc_query_RankedByVote, page, global.AccountID, 0, global.GameID);

-

Приведенный выше код создает запрос запроса и сохраняет его обработку в переменной для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_query_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_query_user.htm index fe8c82591..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_query_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_query_user.htm @@ -1,242 +0,0 @@ - - - - - - steam_ugc_create_query_user - - - - - - - - - - -

steam_ugc_create_query_user

-

Эта функция может быть использована для запроса базы данных пользовательского контента. Функция автоматически использует идентификатор по умолчанию для приложения, пользователя и предполагает, что запрос выполняется потребителем (а не создателем). Функция требует, чтобы вы использовали следующие - константы для типа данных для запроса, типа элемента для запроса и порядка, в котором будут отсортированы возвращаемые элементы, а также номер страницы - обратите внимание, что запрос вернет максимум 50 элементов.

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип списка ПостояннаяОписание
ugc_list_PublishedСм. документацию Steam.
ugc_list_VotedOn-
ugc_list_VotedUp-
ugc_list_VotedDown-
ugc_list_WillVoteLater-
ugc_list_Favorited-
ugc_list_Subscribed-
ugc_list_UsedOrPlayed-
ugc_list_Followed-
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип соответствия ПостояннаяОписание
ugc_match_ItemsСм. документацию Steam.
ugc_match_Items_Mtx-
ugc_match_Items_ReadyToUse-
ugc_match_Collections-
ugc_match_Artwork-
ugc_match_Videos-
ugc_match_Screenshots-
ugc_match_AllGuides-
ugc_match_WebGuides-
ugc_match_IntegratedGuides-
ugc_match_UsableInGame-
ugc_match_ControllerBindings-
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Порядок сортировки ПостояннаяОписание
ugc_sortorder_CreationOrderDescСм. документацию Steam.
ugc_sortorder_CreationOrderAsc-
ugc_sortorder_TitleAsc-
ugc_sortorder_LastUpdatedDesc-
ugc_sortorder_SubscriptionDateDesc-
ugc_sortorder_VoteScoreDesc-
ugc_sortorder_ForModeration-
-


Функция возвращает уникальное значение хэндла запроса, которое должно быть сохранено в переменной для использования в других функциях запроса. Обратите внимание, что эта функция только подготавливает запрос, но не отправляет его - для этого вы должны вызвать функцию - steam_ugc_send_query() - и вы можете использовать другие функции steam_ugc_query_*() для уточнения поискового запроса перед его отправкой.

-

-

Синтаксис:

-

steam_ugc_create_query_user(list_type, match_type, sort_order, page);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
list_typeТип создаваемого списка данных (см. константы, перечисленные ниже).
match_typeТип элементов пользовательского контента для запроса (см. константы, перечисленные ниже).
sort_orderСпособ, которым следует упорядочить данные (см. константы, перечисленные ниже).
pageНомер страницы для запроса.
-

-

Возвращается:

-

Query Handle

-

-

Пример:

-

query_handle = steam_ugc_create_query_user(ugc_list_Published, ugc_match_Items, ugc_sortorder_TitleAsc, 1);

-

Приведенный выше код создает запрос запроса и сохраняет его обработку в переменной для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_query_user_ex.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_query_user_ex.htm index fee09f965..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_query_user_ex.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_create_query_user_ex.htm @@ -1,254 +0,0 @@ - - - - - - steam_ugc_create_query_user_ex - - - - - - - - - - -

steam_ugc_create_query_user_ex

-

Эта функция может быть использована для запроса базы данных пользовательского контента. Функция требует значение ID для пользователя и ID игры, которая будет потреблять предмет, и/или ID игры, которая создала предмет. Также необходимо использовать следующие константы - для типа данных для запроса, типа элемента для запроса и порядка, в котором будут отсортированы возвращаемые элементы, а также номер страницы - обратите внимание, что запрос вернет максимум 50 элементов.

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип списка ПостояннаяОписание
ugc_list_PublishedСм. документацию Steam.
ugc_list_VotedOn-
ugc_list_VotedUp-
ugc_list_VotedDown-
ugc_list_WillVoteLater-
ugc_list_Favorited-
ugc_list_Subscribed-
ugc_list_UsedOrPlayed-
ugc_list_Followed-
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип соответствия ПостояннаяОписание
ugc_match_ItemsСм. документацию Steam.
ugc_match_Items_Mtx-
ugc_match_Items_ReadyToUse-
ugc_match_Collections-
ugc_match_Artwork-
ugc_match_Videos-
ugc_match_Screenshots-
ugc_match_AllGuides-
ugc_match_WebGuides-
ugc_match_IntegratedGuides-
ugc_match_UsableInGame-
ugc_match_ControllerBindings-
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Порядок сортировки ПостояннаяОписание
ugc_sortorder_CreationOrderDescСм. документацию Steam.
ugc_sortorder_CreationOrderAsc-
ugc_sortorder_TitleAsc-
ugc_sortorder_LastUpdatedDesc-
ugc_sortorder_SubscriptionDateDesc-
ugc_sortorder_VoteScoreDesc-
ugc_sortorder_ForModeration-
-


Функция возвращает уникальное значение хэндла запроса, которое должно быть сохранено в переменной для использования в других функциях запроса. Обратите внимание, что эта функция только подготавливает запрос, но не отправляет его - для этого вы должны вызвать функцию - steam_ugc_send_query() - и вы можете использовать другие функции steam_ugc_query_*() для уточнения поискового запроса перед его отправкой.

-

-

Синтаксис:

-

steam_ugc_create_query_user_ex(list_type, match_type, sort_order, page, account_id, creator_app_id, consumer_app_id);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументОписание
list_typeТип создаваемого списка данных (см. константы, перечисленные ниже).
match_typeТип элементов пользовательского контента для запроса (см. константы, перечисленные ниже).
sort_orderСпособ, которым следует упорядочить данные (см. константы, перечисленные ниже).
pageНомер страницы для запроса.
account_idИдентификатор счета Steam.
creator_app_idИдентификатор приложения создателя элемента.
consumer_app_idИдентификатор потребительского приложения.
-

-

Возвращается:

-

Query Handle

-

-

Пример:

-

query_handle = steam_ugc_create_query_user_ex(ugc_list_Published, ugc_match_Items, ugc_sortorder_TitleAsc, page, global.AccountID, 0, global.GameID);

-

Приведенный выше код создает запрос запроса и сохраняет его обработку в переменной для дальнейшего использования.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_download.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_download.htm index b4f070b37..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_download.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_download.htm @@ -1,85 +0,0 @@ - - - - - - steam_ugc_download - - - - - - - - - - -

steam_ugc_download

-

С помощью этой функции вы можете загрузить изображение предварительного просмотра для любого заданного элемента пользовательского контента. ugc_handle - это уникальное идентификационное значение для изображения (которое вы можете получить с помощью функции steam_ugc_send_query()), а имя файла назначения - это имя (и локальный путь в песочнице Steam ), которое вы хотите дать файлу изображения после завершения загрузки.

-

При использовании этой функции будет запущено асинхронное событие Steam, которое сообщит подробности запрашиваемого файла изображения, содержащего следующие пары ключ/значение в async_load ds_map:

-
    -
  • "id" - Идентификатор async, возвращаемый вызывающей функцией
  • -
  • "result" - Результат операции (вещественное значение). Это будет либо константа GML ugc_result_success, либо какое-то другое вещественное число. Поэтому вы должны проверить наличие этой константы, чтобы убедиться, что вызов был успешным, и если что-то сработало неправильно. Остальные возможные возвращаемые значения отображаются как результат значения Steam "EResult", и вы должны увидеть steamclientpublic.h в заголовках SDK для всех 89 возможных значений.
  • -
  • "event_type" - Этот ключ будет содержать значение "ugc_download".
  • -
  • "original_filename" - Этот ключ содержит оригинальное имя файла изображения на сервере (строка).
  • -
  • "dest_filename" - Этот ключ содержит имя файла изображения, которое вы передали (строка).
  • -
  • "ugc_handle" - Этот ключ содержит значение ugc_handle, которое вы передали вызывающей функции.
  • -
-

-

Синтаксис:

-

steam_ugc_download(ugc_handle, dest_filename);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_handleУникальный идентификатор для загружаемого превью.
dest_filenameИмя файла, под которым будет сохранен предварительный просмотр.
-

-

Возвращается:

-

Async ID

-

-

Расширенный пример:

-

В этом примере мы сначала вызываем функцию и сохраняем значение идентификатора async в переменной:

-

steam_get = steam_ugc_download(steam_handle, "\UGC\Preview_file.png");

-

Затем он отправит запрос файла на Steam API, создав асинхронное событие, которое мы будем обрабатывать следующим образом:

-

var event_id = async_load[? "id"];
- if event_id == steam_get
- {
-     var type = async_load[? "event_type"];
-     if type == "ugc_download"
-     {
-         sprite_delete(preview_sprite);
-         preview_sprite = sprite_add(async_load[? "dest_filename"], 0, false, false, 0, 0);
-     }
- }

-

Приведенный выше код проверяет тип события, а затем создает sprite из загруженного изображения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_get_item_install_info.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_get_item_install_info.htm index 03ccec532..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_get_item_install_info.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_get_item_install_info.htm @@ -1,70 +0,0 @@ - - - - - - steam_ugc_get_item_install_info - - - - - - - - - - -

steam_ugc_get_item_install_info

-

Эта функция может использоваться для получения информации о любом опубликованном файле, который был подписан и загружен в локальную область хранения Steam вашей игры. Вы задаете ID элемента и указываете индекс пустой карты DS, которая затем будет заполнена следующими парами ключ/значение, если элемент существует:

-
    -
  • "size_on_disk" - Размер файла на диске (в байтах)
  • -
  • "legacy_item" - Будет true или false в зависимости от того, является ли этот файл устаревшим или нет.
  • -
  • "folder" - Полный путь к установленному содержимому (пожалуйста, обратитесь к разделу "Установка элементов" в документации Steam SDK, поскольку "старые" элементы, загруженные старым методом, обрабатываются по-другому).
  • -
-

Если элемент существует, то функция вернет true и заполнит карту, в противном случае она вернет false и карта останется пустой.

-

-

Синтаксис:

-

steam_ugc_get_item_install_info(published_file_id, info_map);

- - - - - - - - - - - - - - - -
АргументОписание
published_file_idУникальный идентификатор для обновляемого пользовательского центра.
info_map(ранее созданный) индекс карты DS.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var item_map = ds_map_create();
steam_ugc_get_item_install_info(global.fileID, item_map);

-

Приведенный выше код запросит статус установки элемента, проиндексированного в глобальной переменной "fileID", используя DS Map для хранения информации.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_get_item_update_info.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_get_item_update_info.htm index 73fc157bf..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_get_item_update_info.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_get_item_update_info.htm @@ -1,79 +0,0 @@ - - - - - - steam_ugc_get_item_update_info - - - - - - - - - - -

steam_ugc_get_item_update_info

-

Эта функция может быть использована для получения информации о текущем состоянии загрузки для заданного ID файла. Вы задаете ID элемента и указываете индекс пустой карты DS, которая затем будет заполнена следующими парами ключ/значение, если элемент существует:

-
    -
  • "needs_update" - Возвращает true или false в зависимости от того, нуждается ли элемент в обновлении или нет.
  • -
  • "is_downloading" - Возвращает true или false в зависимости от того, загружается ли элемент в данный момент или нет.
  • -
  • "bytes_downloaded" - Количество байт, которое было загружено.
  • -
  • "bytes_total" - Общий размер (количество байт), требуемый для элемента на диске.
  • -
-

Если элемент существует, то функция вернет true и заполнит карту, в противном случае она вернет false и карта останется пустой.

-

-

Синтаксис:

-

steam_ugc_get_item_update_info(published_file_id, info_map);

- - - - - - - - - - - - - - - -
АргументОписание
published_file_idУникальный идентификатор файла для проверяемого UGC.
info_map(ранее созданный) индекс карты DS.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var info_map = ds_map_create();
- var info = steam_ugc_get_item_update_info(global.fileID, info_map);
- if info
- {
-     draw_text(32, 15, "needs_update: " + string(info_map[? "needs_update"]));
-     draw_text(32, 30, "is_downloading: " + string(info_map[? "is_downloading"]));
-     draw_text(32, 45, "bytes_downloaded: " + string(info_map[? "bytes_downloaded"]));
-     draw_text(32, 60, "bytes_total: " + string(info_map[? "bytes_total"]));
- }

-

Приведенный выше код запросит статус загрузки элемента, проиндексированного в глобальной переменной "fileID", используя DS Map для хранения информации.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_get_item_update_progress.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_get_item_update_progress.htm index 40e584d0b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_get_item_update_progress.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_get_item_update_progress.htm @@ -1,73 +0,0 @@ - - - - - - steam_ugc_get_item_update_progress - - - - - - - - - - -

steam_ugc_get_item_update_progress

-

Эта функция может быть использована для отслеживания статуса обновления элемента. Вы передаете хэндл элемента (возвращаемый функцией steam_ugc_start_item_update()) и пустую карту DS, которая затем будет заполнена следующими парами ключ/значение:

-
    -
  • "status_code" - Код состояния Steam
  • -
  • "status_string" - Строка для текущего состояния
  • -
  • "bytes_processed" - Количество байтов, обработанных на данный момент
  • -
  • "bytes_total" - Общее количество байтов в обновлении
  • -
-

Если произошла ошибка, функция вернет false и карта будет пустой, в противном случае функция вернет true.

-

-

Синтаксис:

-

steam_ugc_get_item_update_progress(ugc_update_handle, info_map);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_update_handleУникальный идентификатор для обновляемого пользовательского центра.
info_map(ранее созданный) индекс карты DS.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var uploadMap = ds_map_create();
steam_ugc_get_item_update_progress(global.itemHandle, uploadMap);
var statusCode = uploadMap[? "status_code"];
var status = uploadMap[? "status_string"];
var processed = uploadMap[? - "bytes_processed"];
var total = uploadMap[? "bytes_total"];
draw_text(32, 0, "Upload info for item:" + string(global.itemHandle));
draw_text(32, 15, "status code:" + string(statusCode));
draw_text(32, 30, "status:" + string(status));
draw_text(32, 45, "bytes processed:" +string(processed));
draw_text(32, 60, "bytes total:" + string( total));
ds_map_destroy(uploadMap); -

-

Приведенный выше код запрашивает статус загрузки элемента, проиндексированного в глобальной переменной "itemHandle", используя DS Map для хранения информации. Затем она анализируется, и полученные значения выводятся на экран.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_get_subscribed_items.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_get_subscribed_items.htm index c0579f5c0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_get_subscribed_items.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_get_subscribed_items.htm @@ -1,62 +0,0 @@ - - - - - - steam_ugc_get_subscribed_items - - - - - - - - - - -

steam_ugc_get_subscribed_items

-

Эта функция заполнит список DS всеми опубликованными идентификаторами файлов для элементов, на которые пользователь в настоящее время подписан. Сначала вы должны создать список и сохранить индекс в переменной, а затем передать его в функцию. Функция вернет - true, если все сделано правильно и API Steam инициализирован, или false, если произошла ошибка.

-

-

Синтаксис:

-

steam_ugc_get_subscribed_items(item_list);

- - - - - - - - - - - -
АргументОписание
item_listИндекс (ранее созданный) списка DS.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

steam_list = ds_list_create();
steam_ugc_get_subscribed_items(steam_list); -

-

Приведенный выше код создаст пустой список DS, а затем заполнит его идентификаторами файлов для всех подписанных элементов для пользователя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_num_subscribed_items.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_num_subscribed_items.htm index 49dd22452..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_num_subscribed_items.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_num_subscribed_items.htm @@ -1,48 +0,0 @@ - - - - - - steam_ugc_num_subscribed_items - - - - - - - - - - -

steam_ugc_num_subscribed_items

-

Эта функция может быть использована для получения количества элементов, на которые подписался текущий пользователь.

-

-

Синтаксис:

-

steam_ugc_num_subscribed_items();

-

-

Возвращается:

-

Real

-

-

Пример:

-

numSub = steam_ugc_num_subscribed_items();

-

Приведенный выше код будет хранить количество подписанных элементов в переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_add_excluded_tag.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_add_excluded_tag.htm index c4c75e970..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_add_excluded_tag.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_add_excluded_tag.htm @@ -1,65 +0,0 @@ - - - - - - steam_ugc_query_add_excluded_tag - - - - - - - - - - -

steam_ugc_query_add_excluded_tag

-

Эта функция может быть использована для дальнейшей фильтрации любого заданного запроса пользовательского контента, в частности, для исключения заданного пользовательского контента из запроса. Ручка запроса - это значение, возвращенное при создании запроса (например, с помощью, steam_ugc_create_query_user()) - а второй аргумент - это строка, которую вы хотите использовать в качестве тега для исключения. Функция вернет true, если фильтр запроса был установлен правильно, и false в противном случае.

-

-

Синтаксис:

-

steam_ugc_query_add_excluded_tag(ugc_query_handle , tag_name);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_query_handleРучка запроса, которую следует использовать.
tag_nameИмя тега для исключения (строка).
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var query_handle = steam_ugc_create_query_all(ugc_query_RankedByVote, ugc_match_Items, 1);
steam_ugc_query_add_excluded_tag(query_handle, "walking simulator");
steam_ugc_query_set_return_long_description(query_handle, true);
steam_ugc_query_set_allow_cached_response(query_handle, true);
query_ID = steam_ugc_send_query(query_handle);

-

Приведенный выше код создает запрос запроса и сохраняет его хэндл в локальной переменной для дальнейшего использования в остальных функциях, которые определяют запрос перед отправкой запроса.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_add_required_tag.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_add_required_tag.htm index 159b93a51..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_add_required_tag.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_add_required_tag.htm @@ -1,66 +0,0 @@ - - - - - - steam_ugc_query_add_required_tag - - - - - - - - - - -

steam_ugc_query_add_required_tag

-

Эта функция может быть использована для дополнительной фильтрации любого заданного запроса пользовательского контента, в частности, для поиска только тех элементов пользовательского контента с заданным тегом. Ручка запроса - это значение, возвращенное при создании запроса (например, с помощью, steam_ugc_create_query_user()) - а второй аргумент - строка, которую вы хотите использовать в качестве тега для включения. Функция вернет true, если фильтр запроса был установлен правильно, и false в противном случае.

-

-

Синтаксис:

-

steam_ugc_query_add_required_tag(ugc_query_handle , tag_name);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_query_handleРучка запроса, которую следует использовать.
tag_nameИмя тега для включения (строка).
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var query_handle = steam_ugc_create_query_all(ugc_query_RankedByTrend, ugc_match_Items, 1);
steam_ugc_query_add_required_tag(query_handle, "RPG");
steam_ugc_query_set_return_long_description(query_handle, true);
steam_ugc_query_set_allow_cached_response(query_handle, - true);
query_ID = steam_ugc_send_query(query_handle);

-

Приведенный выше код создает запрос запроса и сохраняет его хэндл в локальной переменной для дальнейшего использования в остальных функциях, которые определяют запрос перед отправкой запроса.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_allow_cached_response.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_allow_cached_response.htm index 1cefd50c4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_allow_cached_response.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_allow_cached_response.htm @@ -1,66 +0,0 @@ - - - - - - steam_ugc_query_set_allow_cached_response - - - - - - - - - - -

steam_ugc_query_set_allow_cached_response

-

Эта функция может быть использована для дополнительной фильтрации любого заданного UGC-запроса, в частности, для запроса, чтобы запрос проверял локальный кэш, а не онлайн. Ручка запроса - это значение, возвращенное при создании запроса (например, с помощью, steam_ugc_create_query_user()) - а второй аргумент - это либо true, либо false. Функция вернет true, если фильтр запроса был установлен правильно, и false в противном случае.

-

-

Синтаксис:

-

steam_ugc_query_set_allow_cached_response(ugc_query_handle , cache);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_query_handleРучка запроса, которую следует использовать.
cacheПроверять ли запросу локальный кэш или нет.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var query_handle = steam_ugc_create_query_all(ugc_query_RankedByTrend, ugc_match_Items, 1);
steam_ugc_query_add_required_tag(query_handle, "RPG");
steam_ugc_query_set_return_long_description(query_handle, true);
steam_ugc_query_set_allow_cached_response(query_handle, - true);
query_ID = steam_ugc_send_query(query_handle);

-

Приведенный выше код создает запрос запроса и сохраняет его хэндл в локальной переменной для дальнейшего использования в остальных функциях, которые определяют запрос перед отправкой запроса.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_cloud_filename_filter.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_cloud_filename_filter.htm index 1c911d03b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_cloud_filename_filter.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_cloud_filename_filter.htm @@ -1,66 +0,0 @@ - - - - - - steam_ugc_query_set_cloud_filename_filter - - - - - - - - - - -

steam_ugc_query_set_cloud_filename_filter

-

Эта функция может использоваться для дальнейшей фильтрации любого заданного UGC-запроса, в частности, для проверки и определения того, должно ли совпадать имя файла элемента Workshop или нет. Ручка запроса - это значение, возвращенное при создании запроса (например, с помощью, steam_ugc_create_query_user()) - а второй аргумент - true или false, в зависимости от того, требуется ли совпадение имен файлов. Функция вернет true, если фильтр запроса был установлен правильно, и false в противном случае.

-

-

Синтаксис:

-

steam_ugc_query_set_cloud_filename_filter(ugc_query_handle , match_cloud_filename);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_query_handleРучка запроса, которую следует использовать.
match_cloud_filenameУстанавливает, должно ли имя файла элемента UGC совпадать или нет.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var query_handle = steam_ugc_create_query_all(ugc_query_RankedByVote, ugc_match_Items, 1);
steam_ugc_query_set_cloud_filename_filter(query_handle, true);
steam_ugc_query_add_excluded_tag(query_handle, "nasty chips");
steam_ugc_query_set_return_long_description(query_handle, - true);
steam_ugc_query_set_allow_cached_response(query_handle, true);
query_ID = steam_ugc_send_query(query_handle);

-

Приведенный выше код создает запрос запроса и сохраняет его хэндл в локальной переменной для дальнейшего использования в остальных функциях, которые определяют запрос перед отправкой запроса.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_match_any_tag.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_match_any_tag.htm index 9e07abb78..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_match_any_tag.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_match_any_tag.htm @@ -1,66 +0,0 @@ - - - - - - steam_ugc_query_set_match_any_tag - - - - - - - - - - -

steam_ugc_query_set_match_any_tag

-

Эта функция может использоваться для дополнительной фильтрации любого заданного запроса пользовательского контента, в частности, для включения или отключения сопоставления тегов. Ручка запроса - это значение, возвращенное при создании запроса (например, с помощью, steam_ugc_create_query_user()) - а второй аргумент - true или false, в зависимости от того, требуется ли вам проверка на совпадение тегов. Функция вернет true, если фильтр запроса был установлен правильно, и false в противном случае.

-

-

Синтаксис:

-

steam_ugc_query_set_match_any_tag(ugc_query_handle , match_any_tag);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_query_handleРучка запроса, которую следует использовать.
match_any_tagУстанавливает, должны ли теги элементов пользовательского контента соответствовать чему-либо или нет.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var query_handle = steam_ugc_create_query_all(ugc_query_RankedByVote, ugc_match_Items, 1);
steam_ugc_query_set_match_any_tag(query_handle, false);
steam_ugc_query_add_excluded_tag(query_handle, "walking simulator");
steam_ugc_query_set_return_long_description(query_handle, - true);
steam_ugc_query_set_allow_cached_response(query_handle, true);
query_ID = steam_ugc_send_query(query_handle);

-

Приведенный выше код создает запрос запроса и сохраняет его хэндл в локальной переменной для дальнейшего использования в остальных функциях, которые определяют запрос перед отправкой запроса.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_ranked_by_trend_days.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_ranked_by_trend_days.htm index 9f814e06c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_ranked_by_trend_days.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_ranked_by_trend_days.htm @@ -1,67 +0,0 @@ - - - - - - steam_ugc_query_set_ranked_by_trend_days - - - - - - - - - - -

steam_ugc_query_set_ranked_by_trend_days

-

Эта функция может использоваться для дальнейшей фильтрации любого UGC-запроса, сделанного с помощью константы ugc_query_RankedByTrend, в частности, для поиска за несколько дней. Ручка запроса - это значение, возвращенное при создании запроса (например, с помощью, - steam_ugc_create_query_user()), а второй аргумент - количество дней, в течение которых должен выполняться запрос. Функция вернет true, если фильтр запроса был установлен правильно, - или false в противном случае.

-

-

Синтаксис:

-

steam_ugc_query_set_ranked_by_trend_days(ugc_query_handle , days);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_query_handleРучка запроса, которую следует использовать.
daysКоличество дней для запроса.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var query_handle = steam_ugc_create_query_all(ugc_query_RankedByTrend, ugc_match_Items, 1);
steam_ugc_query_set_ranked_by_trend_days(query_handle, 5);
steam_ugc_query_set_return_long_description(query_handle, true);
steam_ugc_query_set_allow_cached_response(query_handle, - true);
query_ID = steam_ugc_send_query(query_handle);

-

Приведенный выше код создает запрос запроса и сохраняет его хэндл в локальной переменной для дальнейшего использования в остальных функциях, которые определяют запрос перед отправкой запроса.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_return_long_description.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_return_long_description.htm index de7505960..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_return_long_description.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_return_long_description.htm @@ -1,65 +0,0 @@ - - - - - - steam_ugc_query_set_return_long_description - - - - - - - - - - -

steam_ugc_query_set_return_long_description

-

Эта функция может быть использована для дальнейшей фильтрации любого заданного UGC-запроса, в частности, для получения длинного текста описания в событии обратного вызова, спровоцированного при отправке запроса. Ручка запроса - это значение, возвращенное при создании запроса (например, с помощью - например, steam_ugc_create_query_user()), а второй аргумент - это либо true, либо false. Функция вернет true, если фильтр запроса был установлен правильно, и false в противном случае.

-

-

Синтаксис:

-

steam_ugc_query_set_return_long_description(ugc_query_handle , long_description);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_query_handleРучка запроса, которую следует использовать.
long_descriptionДолжен ли запрос возвращать длинный текст описания.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var query_handle = steam_ugc_create_query_all(ugc_query_RankedByVote, ugc_match_Items, 1);
steam_ugc_query_set_return_long_description(query_handle, true);
steam_ugc_query_set_allow_cached_response(query_handle, true);
query_ID = steam_ugc_send_query(query_handle);

-

Приведенный выше код создает запрос запроса и сохраняет его хэндл в локальной переменной для дальнейшего использования в остальных функциях, которые определяют запрос перед отправкой запроса.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_return_total_only.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_return_total_only.htm index 16b64ca24..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_return_total_only.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_return_total_only.htm @@ -1,66 +0,0 @@ - - - - - - steam_ugc_query_set_return_total_only - - - - - - - - - - -

steam_ugc_query_set_return_total_only

-

Эта функция может быть использована для дополнительной фильтрации любого заданного UGC-запроса, в частности, для запроса только количества результатов без какой-либо другой информации (это означает, что карта DS, созданная функцией отправки, будет содержать ключ "num_results" без каких-либо других данных карты). - без каких-либо дополнительных данных карты). Хендл запроса - это значение, возвращенное при создании запроса (например, с помощью, steam_ugc_create_query_user()), а второй аргумент - это либо true, либо - false. Функция вернет true, если фильтр запроса был установлен правильно, и false в противном случае.

-

-

Синтаксис:

-

steam_ugc_query_set_return_total_only(ugc_query_handle , total_only);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_query_handleРучка запроса, которую следует использовать.
total_onlyДолжен ли запрос возвращать только общее количество просмотров или нет.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var query_handle = steam_ugc_create_query_all(ugc_query_RankedByVote, ugc_match_Items, 1);
steam_ugc_query_set_return_total_only(query_handle, true);
steam_ugc_query_set_allow_cached_response(query_handle, true);
query_ID = steam_ugc_send_query(query_handle);

-

Приведенный выше код создает запрос запроса и сохраняет его хэндл в локальной переменной для дальнейшего использования в остальных функциях, которые определяют запрос перед отправкой запроса.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_search_text.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_search_text.htm index 24c4db5b4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_search_text.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_query_set_search_text.htm @@ -1,66 +0,0 @@ - - - - - - steam_ugc_query_set_search_text - - - - - - - - - - -

steam_ugc_query_set_search_text

-

Эта функция может использоваться для дальнейшей фильтрации любого заданного запроса пользовательского контента, в частности для поиска заданной строки в заголовке и описании элементов пользовательского контента. Ручка запроса - это значение, возвращенное при создании запроса (например, с помощью, steam_ugc_create_query_user()) - а второй аргумент - это строка, которую вы хотите использовать в качестве поискового запроса. Функция вернет true, если фильтр запроса был установлен правильно, и false в противном случае.

-

-

Синтаксис:

-

steam_ugc_query_set_search_text(ugc_query_handle , search_text);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_query_handleРучка запроса, которую следует использовать.
search_textТекст для поиска, который будет использоваться (строка) для запроса.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var query_handle = steam_ugc_create_query_all(ugc_query_RankedByVote, ugc_match_Items, 1);
steam_ugc_query_set_search_text(query_handle, "texture");
steam_ugc_query_set_return_long_description(query_handle, true);
steam_ugc_query_set_allow_cached_response(query_handle, - true);
query_ID = steam_ugc_send_query(query_handle);

-

Приведенный выше код создает запрос запроса и сохраняет его хэндл в локальной переменной для дальнейшего использования в остальных функциях, которые определяют запрос перед отправкой запроса.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_request_item_details.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_request_item_details.htm index f05bcf9b3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_request_item_details.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_request_item_details.htm @@ -1,109 +0,0 @@ - - - - - - steam_ugc_request_item_details - - - - - - - - - - -

steam_ugc_request_item_details

-

Эта функция может быть использована для получения информации о заданном ID файла. Вы указываете ID файла и задаете максимальный возраст для проверки (более подробную информацию см. в документации Steam ), затем функция возвращает уникальное значение async ID, которое может быть использовано для корректной проверки деталей в событии Steam Async. Это событие будет иметь async_load DS map, которая будет заполнена следующими парами ключ/значение:

-
    -
  • "id" - Идентификатор async, возвращаемый функцией, которая вызвала событие
  • -
  • "result" - Результат операции (вещественное значение). Это будет либо константа GML ugc_result_success, либо какое-то другое вещественное число. Поэтому вы должны проверить наличие этой константы, чтобы убедиться, что вызов был успешным, и если что-то сработало неправильно. Остальные возможные возвращаемые значения отображаются как результат значения Steam "EResult", и вы должны увидеть steamclientpublic.h в заголовках SDK для всех 89 возможных значений.
  • -
  • "event_type" - Строка "ugc_item_details"
  • -
  • "cached_data" - Будет true, если возвращаемые данные взяты из локального кэша, или false, если они взяты с сервера.
  • -
  • "published_file_id"" - Содержит уникальный идентификатор опубликованного файла для элемента
  • -
  • "file_type" - Тип используемого файла
  • -
  • "creator_app_id" - Идентификатор Steam создателя элемента.
  • -
  • "consumer_app_id" - Идентификатор Steam потребителя товара
  • -
  • "title" - Название элемента
  • -
  • "description" - Описание элемента
  • -
  • "steam_id_owner" - Идентификатор Steam владельца предмета.
  • -
  • "time_created" - Время, когда элемент был впервые создан
  • -
  • "time_updated" - Последний раз, когда элемент был обновлен
  • -
  • "time_added_to_user_list" - Время, когда элемент был подписан на него
  • -
  • "visibility" - Видимость элемента (см. steam_ugc_set_item_visibility() возвращаемые константы)
  • -
  • "banned" - Был ли предмет запрещен(true) или нет(false).
  • -
  • "accepted_for_use" - Принят ли элемент к использованию(true) или нет(false).
  • -
  • "tags_truncated" - Краткая версия тегов в виде массива
  • -
  • "tags" - Массив тегов для элемента
  • -
  • "handle_file" - Уникальное имя файла для элемента
  • -
  • "handle_preview_file" - Уникальный хэндл для превью изображения для элемента (может использоваться в качестве аргумента в функции steam_ugc_download() для загрузки изображения предварительного просмотра)
  • -
  • "filename" - Имя файла элемента
  • -
  • "file_size" - Размер файла элемента
  • -
  • "preview_file_size" - Размер изображения предварительного просмотра
  • -
  • "url" - Полный URL-адрес элемента
  • -
  • "votes_up" - Количество полученных голосов "против
  • -
  • "votes_down" - Количество полученных голосов "против
  • -
  • "score" - Общая оценка предмета
  • -
  • "account_id_owner" - ID аккаунта от владельца Steam ID (это можно использовать в функции steam_ugc_create_query_user_ex())
  • -
-

-

Синтаксис:

-

steam_ugc_request_item_details(published_file_id, max_age_seconds);

- - - - - - - - - - - - - - - -
АргументОписание
published_file_idУникальный идентификатор файла для проверяемого UGC.
max_age_seconds"Возраст" данных для проверки (рекомендуется 30 - 60 секунд).
-

-

Возвращается:

-

Async ID

-

-

Расширенный пример:

-

В этом примере мы отправляем запрос на детализацию элемента, а затем разбираем полученную карту async_load DS map, чтобы установить некоторые переменные. Сначала мы отправляем запрос:

-

steam_details = steam_ugc_request_item_details(global.fileID, 60);

-

Приведенный выше код запросит подробную информацию об элементе с идентификатором файла, сохраненным в глобальной переменной, и вызовет событие Steam Async с возвращенной информацией. В этом событии мы можем разобрать карту и сохранить некоторые значения в переменных, которые затем могут быть использованы для отображения информации пользователю:

-

var map_id = async_load[? "id"];
- var result = async_load[? "result"];
- if (map_id == steam_details) && (result == ugc_result_success)
- {
-     mTitle = async_load[? "title"];
-     mDesc = async_load[? "description"];
-     mTags = async_load[? "tags"];
-     m_hPreviewFile = async_load[? "handle_preview_file"];
-     m_hOwnerSteamId = async_load[? "steam_id_owner"];
-     mOwnerAccountId = async_load[? "account_id_owner"];
-     mPubFileId = async_load[? "published_file_id"];
-     mScore = async_load[? "score"];
- }

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_send_query.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_send_query.htm index eefd3528a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_send_query.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_send_query.htm @@ -1,101 +0,0 @@ - - - - - - steam_ugc_send_query - - - - - - - - - - -

steam_ugc_send_query

-

Эта функция может быть использована для отправки запроса. Сначала вы определяете запрос, используя соответствующие функции steam_ugc_create_query_*(), которые возвращают "хэндл запроса". Этот хэндл затем используется для установки фильтров и т.д. .... перед тем, как будет использован в этой функции для отправки запроса. - используется в этой функции для отправки запроса. Функция возвращает уникальное значение async ID, которое может быть использовано для правильной проверки деталей в событии Steam Async. - Это событие будет иметь async_load DS map, которая будет заполнена следующими парами ключ/значение:

-
    -
  • "id" - Идентификатор async, возвращаемый функцией, которая вызвала событие
  • -
  • "result" - Результат операции (вещественное значение). Это будет либо константа GML ugc_result_success, либо какое-то другое вещественное число. Поэтому вы должны проверить наличие этой константы, чтобы убедиться, что вызов был успешным, и если - в противном случае что-то сработало неправильно. Остальные возможные возвращаемые значения отображаются как результат значения Steam "EResult", и вы должны увидеть steamclientpublic.h в заголовках SDK для всех 89 возможных значений.
  • -
  • "event_type" - Строка "ugc_query".
  • -
  • "num_results" - Количество возвращаемых результатов (максимум 50)
  • -
  • "total_matching" - Общее количество совпадающих результатов
  • -
  • "cached_data" - Указывает, были ли эти данные получены из локального кэша на диске или нет (будет либо true, либо false).
  • -
  • "results_list" - индекс списка DS, где каждая запись списка является индексом DS Map, содержащим подробную информацию о конкретном элементе
  • -
-

Получив событие async типа "ugc_query", вы можете разобрать список результатов и извлечь следующую информацию из каждой из карт DS (по одной карте на элемент списка):

-
    -
  • "published_file_id"" - Содержит уникальный идентификатор опубликованного файла для элемента
  • -
  • "file_type" - Тип используемого файла
  • -
  • "creator_app_id" - Идентификатор Steam создателя элемента.
  • -
  • "consumer_app_id" - Идентификатор Steam потребителя товара
  • -
  • "title" - Название элемента
  • -
  • "description" - Описание элемента
  • -
  • "steam_id_owner" - Идентификатор Steam владельца предмета.
  • -
  • "time_created" - Время, когда элемент был впервые создан
  • -
  • "time_updated" - Последний раз, когда элемент был обновлен
  • -
  • "time_added_to_user_list" - Время, когда элемент был подписан на него
  • -
  • "visibility" - Видимость элемента (см. steam_ugc_set_item_visibility() возвращаемые константы)
  • -
  • "banned" - Был ли предмет запрещен(true) или нет(false).
  • -
  • "accepted_for_use" - Принят ли элемент к использованию(true) или нет(false).
  • -
  • "tags_truncated" - Краткая версия тегов в виде массива
  • -
  • "tags" - Строка, содержащая теги для элемента, каждый из которых разделяется запятой.
  • -
  • "handle_file" - Уникальное имя файла для элемента
  • -
  • "handle_preview_file" - Уникальный хэндл для превью изображения для элемента (может использоваться в качестве аргумента в функции steam_ugc_download() для загрузки изображения предварительного просмотра)
  • -
  • "filename" - Имя файла элемента
  • -
  • "file_size" - Размер файла элемента
  • -
  • "preview_file_size" - Размер изображения предварительного просмотра
  • -
  • "url" - Полный URL-адрес элемента
  • -
  • "votes_up" - Количество полученных голосов "против
  • -
  • "votes_down" - Количество полученных голосов "против
  • -
  • "score" - Общая оценка предмета
  • -
  • "account_id_owner" - ID счета от владельца Steam ID (это можно использовать в функции steam_ugc_create_query_user_ex())
  • -
-

-

Синтаксис:

-

steam_ugc_send_query(ugc_query_handle);

- - - - - - - - - - - -
АргументОписание
ugc_query_handleРучка запроса для отправки.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var query_handle = steam_ugc_create_query_all(ugc_query_RankedByTrend, ugc_match_Items, 1);
steam_ugc_query_add_required_tag(query_handle, "RPG");
steam_ugc_query_set_return_long_description(query_handle, true);
steam_ugc_query_set_allow_cached_response(query_handle, - true);
query_ID = steam_ugc_send_query(query_handle);

-

Приведенный выше код создает запрос запроса и сохраняет его хэндл в локальной переменной для дальнейшего использования в остальных функциях, которые определяют запрос перед отправкой запроса.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_content.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_content.htm index e79d84fef..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_content.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_content.htm @@ -1,68 +0,0 @@ - - - - - - steam_ugc_set_item_content - - - - - - - - - - -

steam_ugc_set_item_content

-

Эта функция устанавливает путь к содержимому, который будет использоваться для данного элемента, и это должен быть относительный путь к папке, содержащей файлы содержимого для загрузки - которые, в свою очередь, должны находиться в сохранении или в пакете игры (т.е. во включенном файле). - Хендл обновления - это значение, возвращаемое при вызове функции steam_ugc_start_item_update(). Функция вернет true, если доступ к API был успешным, и false, если возникла проблема.

-

-

Синтаксис:

-

steam_ugc_set_item_content(ugc_update_handle, content);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_update_handleУникальный идентификатор для обновляемого пользовательского центра.
contentСодержимое (путь), которое будет использоваться для элемента.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var app_id = steam_get_app_id();
var updateHandle = steam_ugc_start_item_update(app_id, global.Publish_ID);
steam_ugc_set_item_title(updateHandle, "My workshop item(3)!");
steam_ugc_set_item_description( updateHandle, "testing - workshop...");
steam_ugc_set_item_visibility(updateHandle, ugc_visibility_public);
var tagArray;
tagArray[0] = "Test";
tagArray[1] = "New";
steam_ugc_set_item_tags(updateHandle, tagArray);
steam_ugc_set_item_preview(updateHandle, - "promo.jpg");
steam_ugc_set_item_content(updateHandle, "WorkshopContent1");
requestId = steam_ugc_submit_item_update(updateHandle, "Version 1.2");

-

Приведенный выше код получает ID игры, затем использует его вместе с ранее сохраненным ID опубликованного файла для создания хэндла обновления для элемента. Этот хэндл затем используется для обновления различных частей информации перед отправкой обновления на серверы Workshop - сервера.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_description.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_description.htm index 80e2dbec5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_description.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_description.htm @@ -1,68 +0,0 @@ - - - - - - steam_ugc_set_item_description - - - - - - - - - - -

steam_ugc_set_item_description

-

Эта функция устанавливает описание, которое будет использоваться для данного элемента. Описание должно быть строкой, а хэндл обновления - значением, возвращенным при вызове функции steam_ugc_start_item_update(). - Функция вернет true, если обращение к API было успешным, и false, если возникла проблема.

-

-

Синтаксис:

-

steam_ugc_set_item_description(ugc_update_handle, description);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_update_handleУникальный идентификатор для обновляемого пользовательского центра.
descriptionОписание (строка - не более 8000 символов), которое будет использоваться для элемента.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var app_id = steam_get_app_id();
var updateHandle = steam_ugc_start_item_update(app_id, global.Publish_ID);
steam_ugc_set_item_title(updateHandle, "My workshop item(3)!");
steam_ugc_set_item_description( updateHandle, "testing - workshop...");
steam_ugc_set_item_visibility(updateHandle, ugc_visibility_public);
var tagArray;
tagArray[0] = "Test";
tagArray[1] = "New";
steam_ugc_set_item_tags(updateHandle, tagArray);
steam_ugc_set_item_preview(updateHandle, - "promo.jpg");
steam_ugc_set_item_content(updateHandle, "WorkshopContent1");
requestId = steam_ugc_submit_item_update(updateHandle, "Version 1.2");

-

Приведенный выше код получает ID игры, затем использует его вместе с ранее сохраненным ID опубликованного файла для создания хэндла обновления для элемента. Этот хэндл затем используется для обновления различных частей информации перед отправкой обновления на серверы Workshop - сервера.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_preview.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_preview.htm index dc8dc1bec..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_preview.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_preview.htm @@ -1,69 +0,0 @@ - - - - - - steam_ugc_set_item_preview - - - - - - - - - - -

steam_ugc_set_item_preview

-

Эта функция устанавливает изображение предварительного просмотра, которое будет использоваться для данного элемента. Изображение должно быть предоставлено в виде файла формата PNG, JPG или GIF с максимальным размером 1 МБ. Путь к изображению должен быть относительным путем в сохранении или в игре - (т.е. включенный файл). Хендл обновления - это значение, возвращенное при вызове функции steam_ugc_start_item_update(). Функция вернет true, если обращение к API было успешным - и false, если возникла проблема.

-

-

Синтаксис:

-

steam_ugc_set_item_preview(ugc_update_handle, preview);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_update_handleУникальный идентификатор для обновляемого пользовательского центра.
previewИзображение предварительного просмотра (JPG, GIF или PNG - максимальный размер 1 МБ), которое будет использоваться для элемента.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var app_id = steam_get_app_id();
var updateHandle = steam_ugc_start_item_update(app_id, global.Publish_ID);
steam_ugc_set_item_title(updateHandle, "My workshop item(3)!");
steam_ugc_set_item_description( updateHandle, "testing - workshop...");
steam_ugc_set_item_visibility(updateHandle, ugc_visibility_public);
var tagArray;
tagArray[0] = "Test";
tagArray[1] = "New";
steam_ugc_set_item_tags(updateHandle, tagArray);
steam_ugc_set_item_preview(updateHandle, - "promo.jpg");
steam_ugc_set_item_content(updateHandle, "WorkshopContent1");
requestId = steam_ugc_submit_item_update(updateHandle, "Version 1.2");

-

Приведенный выше код получает ID игры, затем использует его вместе с ранее сохраненным ID опубликованного файла для создания хэндла обновления для элемента. Этот хэндл затем используется для обновления различных частей информации перед отправкой обновления на серверы Workshop - сервера.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_tags.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_tags.htm index c3de6e773..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_tags.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_tags.htm @@ -1,68 +0,0 @@ - - - - - - steam_ugc_set_item_tags - - - - - - - - - - -

steam_ugc_set_item_tags

-

Эта функция устанавливает теги, которые будут использоваться для данного элемента. Теги должны быть добавлены в массив 1D в виде строковых элементов и массив передан в функцию. Ручка обновления - это значение, возвращенное при вызове функции steam_ugc_start_item_update(). - Функция вернет true, если доступ к API был успешным, и false, если возникла проблема.

-

-

Синтаксис:

-

steam_ugc_set_item_tags(ugc_update_handle, tags);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_update_handleУникальный идентификатор для обновляемого пользовательского центра.
tagsТеги (в виде массива), которые будут использоваться для элемента.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var app_id = steam_get_app_id();
var updateHandle = steam_ugc_start_item_update(app_id, global.Publish_ID);
steam_ugc_set_item_title(updateHandle, "My workshop item(3)!");
steam_ugc_set_item_description( updateHandle, "testing - workshop...");
steam_ugc_set_item_visibility(updateHandle, ugc_visibility_public);
var tagArray;
tagArray[0] = "Test";
tagArray[1] = "New";
steam_ugc_set_item_tags(updateHandle, tagArray);
steam_ugc_set_item_preview(updateHandle, - "promo.jpg");
steam_ugc_set_item_content(updateHandle, "WorkshopContent1");
requestId = steam_ugc_submit_item_update(updateHandle, "Version 1.2");

-

Приведенный выше код получает ID игры, затем использует его вместе с ранее сохраненным ID опубликованного файла для создания хэндла обновления для элемента. Этот хэндл затем используется для обновления различных частей информации перед отправкой обновления на серверы Workshop - сервера.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_title.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_title.htm index 16496fa65..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_title.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_title.htm @@ -1,68 +0,0 @@ - - - - - - steam_ugc_set_item_title - - - - - - - - - - -

steam_ugc_set_item_title

-

Эта функция устанавливает заголовок, который будет использоваться для данного элемента. Заголовок должен быть строкой, а хэндл обновления - значением, возвращенным при вызове функции steam_ugc_start_item_update(). - Функция вернет true, если доступ к API был успешным, и false, если возникла проблема.

-

-

Синтаксис:

-

steam_ugc_set_item_title(ugc_update_handle, title);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_update_handleУникальный идентификатор для обновляемого пользовательского центра.
titleНазвание (строка - не более 128 символов), которое будет использоваться для элемента.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var app_id = steam_get_app_id();
var updateHandle = steam_ugc_start_item_update(app_id, global.Publish_ID);
steam_ugc_set_item_title(updateHandle, "My workshop item(3)!");
steam_ugc_set_item_description( updateHandle, "testing - workshop...");
steam_ugc_set_item_visibility(updateHandle, ugc_visibility_public);
var tagArray;
tagArray[0] = "Test";
tagArray[1] = "New";
steam_ugc_set_item_tags(updateHandle, tagArray);
steam_ugc_set_item_preview(updateHandle, - "promo.jpg");
steam_ugc_set_item_content(updateHandle, "WorkshopContent1");
requestId = steam_ugc_submit_item_update(updateHandle, "Version 1.2");

-

Приведенный выше код получает ID игры, затем использует его вместе с ранее сохраненным ID опубликованного файла для создания хэндла обновления для элемента. Этот хэндл затем используется для обновления различных частей информации перед отправкой обновления на серверы Workshop - сервера.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_visibility.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_visibility.htm index 6db680556..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_visibility.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_set_item_visibility.htm @@ -1,93 +0,0 @@ - - - - - - steam_ugc_set_item_visibility - - - - - - - - - - -

steam_ugc_set_item_visibility

-

Эта функция устанавливает видимость заданного элемента, заданную с помощью одной из следующих констант:

-

- - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
ugc_visibility_publicУстановите элемент на всеобщее обозрение
ugc_visibility_friends_onlyУстановить, чтобы элемент был виден только людям из списка друзей пользователя
ugc_visibility_privateУстановите элемент в качестве частного
-

-

Ручка обновления - это значение, возвращенное при вызове функции steam_ugc_start_item_update()и функция вернет true, если доступ к API был успешным, и false, если возникла проблема.

-

-

Синтаксис:

-

steam_ugc_set_item_visibility(ugc_update_handle, visibility);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_update_handleУникальный идентификатор для обновляемого пользовательского центра.
visibilityВидимость (константа, указанная ниже), которая будет использоваться для элемента.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var app_id = steam_get_app_id();
var updateHandle = steam_ugc_start_item_update(app_id, global.Publish_ID);
steam_ugc_set_item_title(updateHandle, "My workshop item(3)!");
steam_ugc_set_item_description( updateHandle, "testing - workshop...");
steam_ugc_set_item_visibility(updateHandle, ugc_visibility_public);
var tagArray;
tagArray[0] = "Test";
tagArray[1] = "New";
steam_ugc_set_item_tags(updateHandle, tagArray);
steam_ugc_set_item_preview(updateHandle, - "promo.jpg");
steam_ugc_set_item_content(updateHandle, "WorkshopContent1");
requestId = steam_ugc_submit_item_update(updateHandle, "Version 1.2");

-

Приведенный выше код получает ID игры, затем использует его вместе с ранее сохраненным ID опубликованного файла для создания хэндла обновления для элемента. Этот хэндл затем используется для обновления различных частей информации перед отправкой обновления на серверы Workshop - сервера.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_start_item_update.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_start_item_update.htm index 8e464f22e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_start_item_update.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_start_item_update.htm @@ -1,68 +0,0 @@ - - - - - - steam_ugc_start_item_update - - - - - - - - - - -

steam_ugc_start_item_update

-

Эта функция должна быть вызвана перед добавлением или обновлением информации о пользовательском контенте. Вам необходимо предоставить уникальный идентификатор приложения для вашей игры на сайте Steam, а также уникальный идентификатор опубликованного файла, который был получен для элемента при его создании с помощью функции - steam_ugc_create_item(). Функция вернет уникальный хэндл обновления для элемента, который затем можно использовать в функциях UGC элемента для обновления (или добавления) информации для загрузки.

-

-

Синтаксис:

-

steam_ugc_start_item_update(consumer_app_id, published_file_id);

- - - - - - - - - - - - - - - -
АргументОписание
consumer_app_idУникальный идентификатор приложения для вашей игры на сайте Steam.
published_file_idУникальное значение ID опубликованного файла для данного элемента.
-

-

Возвращается:

-

Handle

-

-

Пример:

-

var app_id = steam_get_app_id();
var updateHandle = steam_ugc_start_item_update(app_id, global.Publish_ID);
steam_ugc_set_item_title(updateHandle, "My workshop item(3)!");
steam_ugc_set_item_description( updateHandle, "testing - workshop...");
steam_ugc_set_item_visibility(updateHandle, ugc_visibility_public);
var tagArray;
tagArray[0] = "Test";
tagArray[1] = "New";
steam_ugc_set_item_tags(updateHandle, tagArray);
steam_ugc_set_item_preview(updateHandle, - "promo.jpg");
steam_ugc_set_item_content(updateHandle, "WorkshopContent1");
requestId = steam_ugc_submit_item_update(updateHandle, "Version 1.2");

-

Приведенный выше код получает ID игры, затем использует его вместе с ранее сохраненным ID опубликованного файла для создания хэндла обновления для элемента. Этот хэндл затем используется для обновления различных элементов информации перед отправкой обновления на серверы Workshop - сервера.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_submit_item_update.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_submit_item_update.htm index 196531ff7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_submit_item_update.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_submit_item_update.htm @@ -1,75 +0,0 @@ - - - - - - steam_ugc_submit_item_update - - - - - - - - - - -

steam_ugc_submit_item_update

-

Эта функция отправляет UGC-элемент, индексируемый заданным хэндлом, на серверы Steam Workshop, добавляя заметки об изменениях, которые будут использоваться для данного элемента. Заметки об изменениях должны быть строкой, а хэндл обновления - значением, возвращенным при вызове функции - функцию steam_ugc_start_item_update(). При использовании этой функции она возвращает асинхронное значение ID, которое затем может быть разобрано при срабатывании асинхронного события Steam для сообщения о создании предмета. Событие будет содержать следующие значения ключа/карты в async_load DS map:

-
    -
  • "id" - Идентификатор async, возвращаемый вызывающей функцией
  • -
  • "result" - Результат операции (вещественное значение). Это будет либо константа GML ugc_result_success, либо какое-то другое вещественное число. Поэтому вы должны проверить наличие этой константы, чтобы убедиться, что вызов был успешным, и если - в противном случае что-то сработало неправильно. Остальные возможные возвращаемые значения отображаются как результат значения Steam "EResult", и вы должны увидеть steamclientpublic.h в заголовках SDK для всех 89 возможных значений.
  • -
  • "event_type" - Этот ключ будет содержать значение "ugc_update_item".
  • -
  • "legal_agreement_required" - Будет true или false (см. документацию Steam для более подробной информации).
  • -
-

-

Синтаксис:

-

steam_ugc_submit_item_update(ugc_update_handle, change_note);

- - - - - - - - - - - - - - - -
АргументОписание
ugc_update_handleУникальный идентификатор для обновляемого пользовательского центра.
change_noteПримечания к изменениям (строка), которые будут использоваться для данного элемента.
-

-

Возвращается:

-

Async ID

-

-

Пример:

-

var app_id = steam_get_app_id();
var updateHandle = steam_ugc_start_item_update(app_id, global.Publish_ID);
steam_ugc_set_item_title(updateHandle, "My workshop item(3)!");
steam_ugc_set_item_description( updateHandle, "testing - workshop...");
steam_ugc_set_item_visibility(updateHandle, ugc_visibility_public);
var tagArray;
tagArray[0] = "Test";
tagArray[1] = "New";
steam_ugc_set_item_tags(updateHandle, tagArray);
steam_ugc_set_item_preview(updateHandle, - "promo.jpg");
steam_ugc_set_item_content(updateHandle, "WorkshopContent1");
requestId = steam_ugc_submit_item_update(updateHandle, "Version 1.2");

-

Приведенный выше код получает ID игры, затем использует его вместе с ранее сохраненным ID опубликованного файла для создания хэндла обновления для элемента. Этот хэндл затем используется для обновления различных частей информации перед отправкой обновления на серверы Workshop - сервера.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_subscribe_item.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_subscribe_item.htm index 4d0f73f44..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_subscribe_item.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_subscribe_item.htm @@ -1,68 +0,0 @@ - - - - - - steam_ugc_subscribe_item - - - - - - - - - - -

steam_ugc_subscribe_item

-

Эта функция может быть использована для подписки на элемент пользовательского контента. Вы передаете ID опубликованного файла, а затем функция возвращает уникальное значение async ID, которое можно использовать для проверки того, когда подписанный элемент был загружен в событии Steam Async. - Это событие будет иметь async_load DS map, которая будет заполнена следующими парами ключ/значение:

-
    -
  • "id" - Идентификатор async, возвращаемый функцией, которая вызвала событие
  • -
  • "result" - Результат операции (вещественное значение). Это будет либо константа GML ugc_result_success, либо какое-то другое вещественное число. Поэтому вы должны проверить наличие этой константы, чтобы убедиться, что вызов был успешным, и если - в противном случае что-то сработало неправильно. Остальные возможные возвращаемые значения отображаются как результат значения Steam "EResult", и вы должны увидеть steamclientpublic.h в заголовках SDK для всех 89 возможных значений.
  • -
  • "event_type" - Строка "ugc_subscribe_item".
  • -
  • "published_file_id" - Уникальный идентификатор для опубликованного элемента.
  • -
-

-

Синтаксис:

-

steam_ugc_subscribe_item(published_file_id);

- - - - - - - - - - - -
АргументОписание
published_file_idУникальный идентификатор файла для UGC, на который нужно подписаться.
-

-

Возвращается:

-

Async ID

-

-

Пример:

-

steam_sub = steam_ugc_subscribe_item(global.pubFileID);

-

Приведенный выше код подпишется (и загрузит) элемент с идентификатором файла, хранящимся в глобальной переменной "pubFileID".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_unsubscribe_item.htm b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_unsubscribe_item.htm index fe8da9e22..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_unsubscribe_item.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Steam/Steam_UGC/steam_ugc_unsubscribe_item.htm @@ -1,68 +0,0 @@ - - - - - - steam_ugc_unsubscribe_item - - - - - - - - - - -

steam_ugc_unsubscribe_item

-

Эта функция может использоваться для отписки от элемента пользовательского контента. Вы предоставляете ID опубликованного файла, а затем функция возвращает уникальное значение async ID, которое можно использовать для проверки правильности отписки от элемента в событии Steam Async. - Это событие будет иметь async_load DS map, которая будет заполнена следующими парами ключ/значение:

-
    -
  • "id" - Идентификатор async, возвращаемый функцией, которая вызвала событие
  • -
  • "result" - Результат операции (вещественное значение). Это будет либо константа GML ugc_result_success, либо какое-то другое вещественное число. Поэтому вы должны проверить наличие этой константы, чтобы убедиться, что вызов был успешным, и если - в противном случае что-то сработало неправильно. Остальные возможные возвращаемые значения отображаются как результат значения Steam "EResult", и вы должны увидеть steamclientpublic.h в заголовках SDK для всех 89 возможных значений.
  • -
  • "event_type" - Строка "ugc_unsubscribe_item".
  • -
  • "published_file_id" - Уникальный идентификатор для опубликованного элемента.
  • -
-

-

Синтаксис:

-

steam_ugc_unsubscribe_item(published_file_id);

- - - - - - - - - - - -
АргументОписание
published_file_idУникальный идентификатор файла для UGC, от которого нужно отписаться.
-

-

Возвращается:

-

Async ID

-

-

Пример:

-

steam_sub = steam_ugc_subscribe_item(global.pubFileID);

-

Приведенный выше код подпишется (и загрузит) элемент с идентификатором файла, хранящимся в глобальной переменной "pubFileID".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/Strings.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/Strings.htm index b1c9e331e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/Strings.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/Strings.htm @@ -1,164 +0,0 @@ - - - - - - Струны - - - - - - - - - - -

Струны

-

В какой-то момент при создании игры вам понадобится использовать текст. Для работы с текстом в играх используются функции строк (строка - это просто другой способ сказать "строка текста"), и GameMaker имеет полный набор функций, позволяющих вам работать со строками различными способами, включая вставку одной строки в другую, копирование строк и возможность анализа строк на предмет содержащихся в них цифр или букв. В общем случае строка может быть создана только путем добавления текста в двойных кавычках " ", строки в одинарных кавычках не принимаются, вы также не можете разделить строку на несколько строк и ожидать, что GameMaker отобразит ее так, как если бы переносы строк были новыми строками (если только не используется строковый литерал @, как объясняется ниже).

-

Стоит отметить, что существуют определенные соглашения, которые вы можете использовать при создании строк, в основном это касается использования управляющих символов. Это символы, которым предшествует символ "\". Так, например, если вы хотите поставить кавычки в строке, у вас получится что-то вроде этого:

-

str = "Hello\"World\"";

-

GameMaker также имеет полную поддержку символов Unicode шириной четыре байта, что позволяет декодировать и кодировать символы Unicode в верхних границах стандарта (включая - но не ограничиваясь - эмодзи). Для работы с символами Unicode можно использовать символ "\" перед любым литералом Unicode - цифры шестнадцатеричного кода, которым предшествует символ "u", например, "\u00e2" для "á" - где цифры являются номером символа Unicode. При работе с Юникодом таким образом необходимо учитывать, что GameMaker будет интерпретировать все цифры, следующие за "u", поэтому если вы хотите написать, например, "áa", вам следует использовать:

-

"\u00e2\a"

-

или

-

"\u00e2\u61"

-

или

-

"\u00e2" + "a"

-

поскольку использование символа "\u00e2a" приведет к появлению символа Юникода "" (по сути превращаясь в "\ue2a").

-

GameMaker также может обрабатывать любые шестнадцатеричные литералы - обычно они записываются в виде шестнадцатеричных цифр после "0x", например, "0xff", где цифры - это номер символа, который нужно использовать. В GameMaker они записываются через "\x", а затем шестнадцатеричное значение. Эти и другие предопределенные управляющие символы перечислены в таблице ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
\nНовая строка
\rВозврат каретки
\bBackspace (0x08)
\fПодача формы (0x0c)
\tГоризонтальная вкладка (0x09)
\vВертикальная вкладка (0x0b)
\\Сама обратная косая черта (0x5c)
\aТревога (0x07)
\u[Hex Digits]Вставить символ Юникода
\x[Hex Digits]Вставить символ шестнадцатеричного литерала
\[Octal Digits]Вставить восьмеричный символ Юникода
-

ПРИМЕЧАНИЕ: Строки поддерживают подачу формы, вертикальную табуляцию и т.д... но это не означает, что рендеринг поддерживает, и при рисовании строк эти символы могут быть проигнорированы.

-

Вы также можете создавать дословные строковые литералы, предваряя всю строку символом @:

-

var test = @"
- Line breaks
- over multiple
- lines
- ";

-

Приведенный выше код выводит строку на несколько строк, как если бы в ней присутствовал символ перевода строки. Дословный строковый литерал похож на предыдущие строковые литералы версии GameMaker, но они также используют двойные или одинарные кавычки и должны иметь префикс @, они могут быть разбиты на несколько строк в файле кода и они НЕ поддерживают экранированные символы, т.е. @"Hello\World" не будет пытаться экранировать W на World и будет храниться дословно. Обратите внимание, что при использовании таких строковых литералов, как этот, вам нужно будет разбить строку, если вы хотите включить кавычки как часть строки, т.е:

-

var test = @"Hello " + "\"" + @"World" + "\""

-

Следует также отметить, что символ Unicode 9647 (▯) используется для замены недостающих глифов, которые могут быть в указанном вами шрифте при его рендеринге в событии draw. Так что если в вашем шрифте нет, например, символа °, то при написании 90° на самом деле получится 90▯.

-

Следующий список функций предназначен для работы со строками:

- -

 

-

Помимо функций, относящихся непосредственно к строкам, некоторые цели также предоставляют доступ к буферу обмена для получения и установки текстовой информации:

- -

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/ansi_char.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/ansi_char.htm index cba0defea..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/ansi_char.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/ansi_char.htm @@ -1,62 +0,0 @@ - - - - - - ansi_char - - - - - - - - - - - - -

ansi_char

-

Эта функция возвращает строку, содержащую символ с необработанным набором значений BYTE. Он не будет и не должен отображаться, но он будет правильно сохранен на диске для использования при кодировании.

-

-

Синтаксис:

-

ansi_char(val);

- - - - - - - - - - - -
АргументТипОписание
valThe raw byte value.
-

-

Возвращается:

-

(Single character)

-

-

Пример:

-

var str1 = ansi_char($EF);
var str2 = ansi_char($BB);
var str3 = ansi_char($BF);
file_text_write_string(global.saveFile, str1 + str2 + str3);

-

Приведенный выше код создает строку из необработанных байтовых данных и записывает ее в (ранее открытый) файл.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/chr.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/chr.htm index 1d982da0f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/chr.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/chr.htm @@ -1,63 +0,0 @@ - - - - - - chr - - - - - - - - - - - - -

chr

-

Эта функция возвращает строку, содержащую символ, который относится к входному коду Unicode для отображения. Этот символ зависит от кодовой страницы набора символов текущего чертежного шрифта, и если шрифт не задан, то используется кодовая страница по умолчанию для - машины.

-

-

Синтаксис:

-

chr(val);

- - - - - - - - - - - -
АргументТипОписание
valThe Unicode code value to get the string from
-

-

Возвращается:

-

-

-

Пример:

-

mystring = chr(53) + chr(48);

-

Это установит mystring на "50" (строка, а не целое число), поскольку chr(53) - это "5", а chr(48) - "0".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/clipboard_get_text.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/clipboard_get_text.htm index 1a31845d0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/clipboard_get_text.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/clipboard_get_text.htm @@ -1,54 +0,0 @@ - - - - - - clipboard_get_text - - - - - - - - - - - -

clipboard_get_text

-

Эта функция возвращает строку текста, содержащегося в буфере обмена. если текст не сохранен, то возвращается пустая строка "".

-
-

-

Синтаксис:

-

clipboard_get_text();

-

-

Возвращается:

-

String

-

-

Пример:

-

if clipboard_has_text()
- {
-     str = clipboard_get_text();
-     clipboard_set_text("");
- }

-

Приведенный выше код проверяет буфер обмена на наличие текста и, если он есть, считывает его как строку в переменную "str". Наконец, буфер обмена очищается путем установки в него пустой строки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/clipboard_has_text.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/clipboard_has_text.htm index 4e5eb27cb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/clipboard_has_text.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/clipboard_has_text.htm @@ -1,54 +0,0 @@ - - - - - - clipboard_has_text - - - - - - - - - - - -

clipboard_has_text

-

Эта функция возвращает true, если буфер обмена содержит текст, или false, если не содержит.

-
-

-

Синтаксис:

-

clipboard_has_text();

-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if clipboard_has_text()
- {
-     str = clipboard_get_text();
-     clipboard_set_text("");
- }

-

Приведенный выше код проверяет буфер обмена на наличие текста и, если он есть, считывает его как строку в переменную "str". Наконец, буфер обмена очищается путем установки в него пустой строки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/clipboard_set_text.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/clipboard_set_text.htm index 6f8bec4e1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/clipboard_set_text.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/clipboard_set_text.htm @@ -1,67 +0,0 @@ - - - - - - clipboard_set_text - - - - - - - - - - -

clipboard_set_text

-

Эта функция устанавливает в буфер обмена заданную строку. Вы можете установить пустую строку "", чтобы эффективно очистить буфер обмена от текста.

-
-

-

Синтаксис:

-

clipboard_set_text(string);

- - - - - - - - - - - - - -
АргументТипОписание
stringСтрокаThe text (as a string) to set the clipboard to hold.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if clipboard_has_text()
- {
-     str = clipboard_get_text();
-     clipboard_set_text("");
- }

-

Приведенный выше код проверяет буфер обмена на наличие текста и, если он есть, считывает его как строку в переменную "str". Наконец, буфер обмена очищается путем установки в него пустой строки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/ord.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/ord.htm index f4cee4cb1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/ord.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/ord.htm @@ -1,66 +0,0 @@ - - - - - - ord - - - - - - - - - - - -

ord

-

Эта функция принимает входную строку с одним символом и возвращает значение Unicode (UTF8) для этого символа. Обратите внимание, что при использовании функций keyboard_check* входная строка может быть длиной только в один символ и может быть только числом от 0 до 9 или заглавным римским символом от A до Z.

-

 

-

Синтаксис:

-

ord(string);

- - - - - - - - - - - - - -
АргументТипОписание
stringStringThe string with which to find the Unicode value.
-

 

-

Возвращается:

-

Real

-

 

-

Пример:

-

if keyboard_check(ord("W"))
- {
-     y -= 4;
- }

-

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

-

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string.htm index b3ecd2838..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string.htm @@ -1,63 +0,0 @@ - - - - - - string - - - - - - - - - - - -

string

-

С помощью этой функции вы можете превратить любое вещественное число в строку. Если вещественное число является целым, то оно будет сохранено без десятичных знаков, в противном случае оно будет сохранено с двумя десятичными знаками. Если вам требуется больше десятичных знаков, то используйте функцию string_format(). Также обратите внимание, что использование этой функции для переменной, хранящей массив, структуру данных или struct, преобразует содержимое этих переменных в строку, которую можно вывести на консоль или сохранить в файл для отладки.

-

 

-

Синтаксис:

-

string(val);

- - - - - - - - - - - - - -
АргументТипОписание
valRealThe real number to be turned into a string.
-

 

-

Возвращается:

-

String

-

 

-

Пример:

-

draw_text(100, 100, "Score: " + string(score) + " / Health: " + string(health));

-

Приведенный выше код использует функцию string для рисования как вещественных чисел, так и строк вместе (draw принимает только строку или вещественное число, но не оба).

-

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_byte_at.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_byte_at.htm index 370d5b758..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_byte_at.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_byte_at.htm @@ -1,66 +0,0 @@ - - - - - - string_byte_at - - - - - - - - - - - - -

string_byte_at

-

Возвращает необработанное значение байта в виде вещественного значения в заданной позиции в заданной строке.

-

-

Синтаксис:

-

string_byte_at(str, index);

- - - - - - - - - - - - - - - -
АргументТипОписание
strThe string to check.
indexThe position to get the byte from.
-

-

Возвращается:

-

-

-

Пример:

-

newbyte = string_byte_at("Hello World", 5);

-

Это установит newbyte в необработанное байтовое значение шестой буквы слова "Hello World".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_byte_length.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_byte_length.htm index fa1cbd4a8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_byte_length.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_byte_length.htm @@ -1,63 +0,0 @@ - - - - - - string_byte_length - - - - - - - - - - - -

string_byte_length

-

Эта функция возвращает количество байтов в строке. Из-за того, что они хранятся в формате UTF8, это число не будет равно числу символов в строке.

-

-

Синтаксис:

-

string_byte_length(string);

- - - - - - - - - - - - - -
АргументТипОписание
stringСтрокаThe string to measure the number of bytes of.
-

-

Возвращается:

-

Real

-

-

Пример:

-

bytesize = string_byte_length("Hello World");

-

Это установит bytesize на количество байт в "Hello World".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_char_at.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_char_at.htm index 98f672cd0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_char_at.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_char_at.htm @@ -1,66 +0,0 @@ - - - - - - string_char_at - - - - - - - - - - - -

string_char_at

-

Вы можете использовать эту функцию для возврата определенного символа в определенной позиции в строке, при этом индекс для первого символа начинается с 1. Если символ не найден или строка короче заданного значения индекса, то возвращается пустая строка "", однако если заданный индекс равен или меньше 0, то возвращается первый символ строки.

-

-

Синтаксис:

-

string_char_at(str, index);

- - - - - - - - - - - - - - - -
АргументТипОписание
strThe string to check.
indexThe position to get the character from.
-

-

Возвращается:

-

-

-

Пример:

-

str1 = "Hello World";
- str2 = string_char_at(str1, 7);

-

Это установит str2 на седьмой символ ("H" считается первым) в строке str1, в данном случае "W".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_copy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_copy.htm index 7dff51df4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_copy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_copy.htm @@ -1,73 +0,0 @@ - - - - - - string_copy - - - - - - - - - - - -

string_copy

-

С помощью этой функции вы можете легко выбрать несколько символов из строки для копирования в другую строку. Первый символ в строке всегда индексируется как 1, а не 0, как можно было бы ожидать, поэтому для копирования (например) первых пяти символов строки вам потребуется string_copy(str, 1, 5). Еще один пример приведен ниже.

-

-

Синтаксис:

-

string_copy(str, index, count);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
strThe string to copy from.
indexThe position of the first character in the string to copy from (numbered from 1)
countThe number of characters, starting from the position of the first, to copy
-

-

Возвращается:

-

-

-

Пример:

-

name = keyboard_string;
- if (string_length(name) > 15)
- {
-     keyboard_string = string_copy(name, 1, 15);
- }

-

Приведенный выше код позволяет игроку ввести строку с клавиатуры, которая затем сохраняется в переменной name. Затем эта переменная проверяется, не превышает ли она максимальную длину в 15 символов, и если да, то строка_клавиатуры заменяется 15-символьной копией строки name. Это эффективно ограничивает ввод игрока 15 символами.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_count.htm index 21a1fb090..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_count.htm @@ -1,66 +0,0 @@ - - - - - - string_count - - - - - - - - - - - - -

string_count

-

Эта функция возвращает количество повторений заданной подстроки в определенной строке. Таким образом можно проверить, сколько раз повторяется одна буква или фраза в участке хранимого текста.

-

-

Синтаксис:

-

string_count(substr, str);

- - - - - - - - - - - - - - - -
АргументТипОписание
substrThe substring to check the string for.
strThe string to check.
-

-

Возвращается:

-

-

-

Пример:

-

str1 = "Hello World";
ocount = string_count( "o", str1 );

-

Это установит переменную ocount на количество букв "о" в str1, в данном случае 2.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_delete.htm index b7605aa34..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_delete.htm @@ -1,70 +0,0 @@ - - - - - - string_delete - - - - - - - - - - - -

string_delete

-

Эта функция используется для удаления части заданной строки. Вы передаете входную строку, начальную позицию в строке, из которой нужно удалить символы (индекс начинается с 1), и количество символов, которые нужно удалить. Функция вернет новую строку без этой части.

-

-

Синтаксис:

-

string_delete(str, index, count);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
strThe string to copy and delete from.
indexThe position of the first character to remove (from 1).
countThe number of characters to remove.
-

-

Возвращается:

-

String

-

-

Пример:

-

str1 = "Helloo World";
- str2 = string_delete(str1, 5, 1);

-

Это установит str2 в "Hello World", так как удалит лишнюю букву "o" из "Hello" (которая присутствует в позиции 5).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_digits.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_digits.htm index 292191a67..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_digits.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_digits.htm @@ -1,63 +0,0 @@ - - - - - - string_digits - - - - - - - - - - - - -

string_digits

-

Вы можете использовать эту функцию для разбора заданной строки и получения из нее любых чисел. Например, допустим, у вас есть такой текст - "Мне 81 год". С помощью этой функции вы получите в ответ строку "81".

-

-

Синтаксис:

-

string_digits(string);

- - - - - - - - - - - -
АргументТипОписание
stringThe string to get the digits from.
-

-

Возвращается:

-

-

-

Пример:

-

var t_str = string_digits(input_str);
age = real(t_str);

-

Приведенный выше код принимает входную строку, очищает ее от всех символов, кроме цифр, а затем устанавливает переменную age для хранения реального числового значения возвращаемой строки (так, если входная строка была, например, "Мне 18", функция - функция вернет "18").

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_format.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_format.htm index 4f87b6b46..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_format.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_format.htm @@ -1,75 +0,0 @@ - - - - - - string_format - - - - - - - - - - - -

string_format

-

Превращает вещественное число в строку, используя ваше собственное форматирование, где вы можете выбрать, сколько "мест" сохраняется в строке и сколько десятичных знаков также сохраняется. Оба варианта могут быть очень удобными, некоторые игры предпочитают отображать счет в виде заданного количества цифр, а контроль над десятичными знаками может быть полезен для высокой точности, которую не могут обеспечить два знака после запятой в программе string() не может обеспечить. Если количество указанных знаков больше, чем отображаемое значение, и/или число плюс указанные десятичные знаки меньше общего количества знаков, то перед значением будут добавлены пробелы, чтобы компенсировать разницу (см. пример ниже). Нули будут добавлены справа от десятичной точки, если указанное значение меньше общего числа и количества десятичных знаков, которые необходимо включить. Формат по умолчанию - без дополнительных пробелов слева и только два десятичных знака справа, например, "265,73".

-

-

Синтаксис:

-

string_format(val, tot, dec);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
valРеальноThe real number to be turned into a string.
totРеальноThe total number of places of the main number to be shown. Zeroes or spaces will be inserted to match this.
decРеальноThe number of decimal places to be included.
-

-

Возвращается:

-

String

-

-

Пример:

-

str1 = string_format(1234, 8, 0);
- str2 = string_format(pi, 1, 10);
- str3 = string_format(pi, 5, 5);

-

В результате str1 примет значение " 1234", str2 - "3.1415926535", а str3 - "3.14159".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_hash_to_newline.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_hash_to_newline.htm index 632ca3a6c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_hash_to_newline.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_hash_to_newline.htm @@ -1,68 +0,0 @@ - - - - - - string_hash_to_newline - - - - - - - - - - - - -

string_hash_to_newline

-

Эта функция возвращает строку, в которой символ "#" был преобразован в новую строку. Таким образом, строка, отформатированная как:

-

"Hello#World"

-

Будет выведено на экран в виде:

-

Hello
World -

-

ВАЖНО! Эта функция предусмотрена для совместимости между GameMaker и предыдущими версиями программы, поэтому ее не следует использовать, за исключением случаев, когда необходимо воспроизвести устаревшие функции. Вместо этого - для обозначения новой строки следует использовать управляющие символы. Более подробную информацию о совместимости импорта см. здесь.

-

-

Синтаксис:

-

string_hash_to_newline(string);

- - - - - - - - - - - -
АргументТипОписание
stringThe string to convert over multiple lines
-

-

Возвращается:

-

-

-

Пример:

-

var str = string_hash_to_newline("Hello#World");
draw_text(32, 32, str);

-

Приведенный выше код преобразует строку с символом хэша в строку, разделенную на две строки, и выводит ее на экран.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_height.htm index 3aeaa39ae..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_height.htm @@ -1,63 +0,0 @@ - - - - - - string_height - - - - - - - - - - - - -

string_height

-

Эта функция возвращает высоту (в пикселях) введенной строки с учетом разделения строк и любых разрывов текста. Это очень удобно для расчета расстояния между элементами текста на основе самой высокой из букв. - составляющих строку, как она была бы нарисована с помощью draw_text() используя текущий определенный шрифт.

-

-

Синтаксис:

-

string_height(string);

- - - - - - - - - - - -
АргументТипОписание
stringThe string to measure the height of.
-

-

Возвращается:

-

-

-

Пример:

-

var hh = string_height("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
draw_text(32, 32, string(score));
draw_text(32, 32 + hh, string(lives);

-

Приведенный выше код получит высоту заданной строки, а затем нарисует две строки текста, используя возвращенную высоту строки в качестве разделителя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_height_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_height_ext.htm index a3c1dc101..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_height_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_height_ext.htm @@ -1,71 +0,0 @@ - - - - - - string_height_ext - - - - - - - - - - - - -

string_height_ext

-

Эта функция возвращает высоту (в пикселях) введенной строки с учетом разделения строк и ширины перевода строки (которая определяется как количество пикселей, которые строка может занять до того, как будет вставлен перевод строки). Это очень удобно - для расчета расстояний между элементами текста на основе самой высокой из букв, составляющих строку, а также фактической длины самой строки при распределении на несколько строк, как это было бы нарисовано с помощью draw_text_ext() использованием определенного в данный момент шрифта. Разделение и ширина могут быть установлены в -1 для получения расстояния по умолчанию.

-

-

Синтаксис:

-

string_height_ext(string, sep, w);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
stringThe string to measure the height of.
sepThe distance in pixels between lines of text as if the string was being drawn.
wThe maximum width (in pixels) of the string before a line break as if the string was bring drawn.
-

-

Возвращается:

-

-

-

Пример:

-

var hh = string_height_ext(str_Story_Text[1], -1, 100);
draw_text_ext(32, 32, str_Story_Text[1], -1, 100);
draw_text_ext(32, 32 + hh, str_Story_Text[2], -1, 100);

-

Приведенный выше код получит высоту заданной строки с учетом разделения строк и ширины перевода строки, а затем нарисует две строки текста, используя возвращенную общую высоту строки в качестве разделителя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_insert.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_insert.htm index e681e88df..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_insert.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_insert.htm @@ -1,71 +0,0 @@ - - - - - - string_insert - - - - - - - - - - - - -

string_insert

-

С помощью этой функции вы можете создать новую строку из двух строк, одна из которых вставлена в другую в заданном месте. Это может быть полезно, например, для добавления имени пользователя в заранее определенный текст, чтобы игрок вашей игры чувствовал себя - более вовлеченным в действие. При вычислении позиции для вставки следует помнить, что строки индексируются с 1, поэтому первым символом в строке является 1, а не 0, как можно предположить.

-

-

Синтаксис:

-

string_insert(substr, str, index);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
substrThe substring to be inserted.
strThe string to be copied.
indexThe position in characters of the string to insert the substring.
-

-

Возвращается:

-

-

-

Пример:

-

str2 = string_insert(username, "Hello, , how are you?", 8);

-

Это вставит строку в переменной "username" в заданную фразу, и результирующая строка будет выглядеть так: "Hello, NAME, how are you?".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_last_pos.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_last_pos.htm index feba0cf8c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_last_pos.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_last_pos.htm @@ -1,68 +0,0 @@ - - - - - - string_last_pos - - - - - - - - - - - -

string_last_pos

-

Эта функция возвращает позицию символа экземпляра подстроки в строке, осуществляя поиск от конца строки к началу (таким образом, обратный вариант функции string_pos(). Функция вернет 0, если искомая строка не найдена, или позицию первого символа искомой строки, если она найдена. Имейте в виду, что для старой поддержки строки индексируются с 1, поэтому 1 - это первая позиция в строке, а не 0, как вы могли бы ожидать.

-

-

Синтаксис:

-

string_last_pos(substr, str);

- - - - - - - - - - - - - - - -
АргументТипОписание
substrThe substring to look for in the string.
strThe string.
-

-

Возвращается:

-

-

-

Пример:

-

if (string_last_pos(",", text) != 0)
- {
-     string_insert(name, text, string_last_pos(",", text));
- }

-

Приведенный выше код ищет в строке, хранящейся в переменной "text", запятую, начиная поиск с конца строки. Если она найдена, то в эту позицию вставляется подстрока "name".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_last_pos_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_last_pos_ext.htm index 9d97a3842..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_last_pos_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_last_pos_ext.htm @@ -1,72 +0,0 @@ - - - - - - string_last_pos_ext - - - - - - - - - - - -

string_last_pos_ext

-

Эта функция возвращает позицию символа подстроки в строке, выполняя поиск в обратном направлении по строке, начиная с позиции, заданной в качестве начальной. Функция вернет 0, если искомая строка не найдена, или позицию первого символа искомой строки, если она найдена. Имейте в виду, что для старой поддержки строки индексируются с 1, поэтому 1 - это первая позиция в строке, а не 0, как вы могли бы ожидать.

-

-

Синтаксис:

-

string_last_pos_ext(substr, str, start_pos);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
substrThe substring to look for in the string.
strThe string.
start_posThe starting position to search from.
-

-

Возвращается:

-

-

-

Пример:

-

if (string_last_pos_ext(",", text, 20) != 0)
- {
-     string_insert(name, text, string_last_pos_ext(",", text, 20));
- }

-

Приведенный выше код ищет в строке, хранящейся в переменной "text", запятую перед 20-м символом, и если находит ее, то вставляет в эту позицию подстроку "name".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_length.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_length.htm index dca20096b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_length.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_length.htm @@ -1,66 +0,0 @@ - - - - - - string_length - - - - - - - - - - - -

string_length

-

Эта функция возвращает количество символов в заданной строке. Она может быть полезна для таких вещей, как определение того, когда следует ограничить длину символов пользовательского текста (например, ограничить имя игрока до 10 символов). Помните, что этот параметр отличается от string_width() тем, что измеряет количество символов в строке, а не ее ширину, отображаемую на экране в пикселях.

-

-

Синтаксис:

-

string_length(string);

- - - - - - - - - - - - - -
АргументТипОписание
stringСтрокаThe string to measure the number of characters of.
-

-

Возвращается:

-

Real

-

-

Пример:

-

if (string_length(name) > 10)
- {
-     name = string_copy(name, 1, 10);
- }

-

При этом будет проверено, превышает ли строка имени десять символов, и если да, то будут скопированы и использованы только первые десять символов.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_letters.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_letters.htm index c3fdbf1e9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_letters.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_letters.htm @@ -1,63 +0,0 @@ - - - - - - string_letters - - - - - - - - - - - - -

string_letters

-

С помощью этой функции вы можете удалить все символы, которые не относятся к категории букв. Это удобно для предотвращения ввода нежелательных символов в текст (например, ввод "#" для перехода на новую строку).

-

ПРИМЕЧАНИЕ Эта функция распознает и возвращает только 26 букв английского алфавита от A до Z (верхний или нижний регистр).

-

-

Синтаксис:

-

string_letters(string);

- - - - - - - - - - - -
АргументТипОписание
stringThe string to convert to letters.
-

-

Возвращается:

-

-

-

Пример:

-

username = string_letters(username);

-

Приведенный выше код установит переменную "username" только для буквенных символов исходной строки (если исходная строка была "MacSw33ny", то возвращаемая строка будет "MacSwny").

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_lettersdigits.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_lettersdigits.htm index e506678a0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_lettersdigits.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_lettersdigits.htm @@ -1,65 +0,0 @@ - - - - - - string_lettersdigits - - - - - - - - - - - -

string_lettersdigits

-

Эта функция возвращает копию заданной строки с удаленными буквами и цифрами, что означает, что ее можно использовать для удаления ненужных символов (таких как "#" или "?"), например, из имени пользователя или пароля.

-

ПРИМЕЧАНИЕ Эта функция возвращает только 26 букв английского алфавита от A до Z (в верхнем или нижнем регистре) и цифры 0 - 9.

-

-

Синтаксис:

-

string_lettersdigits(string);

- - - - - - - - - - - -
АргументТипОписание
stringThe string to convert to letters and digits.
-

-

Возвращается:

-

-

-

Пример:

-

if (string_length(password) > string_length(string_lettersdigits(password)))
- {
-     draw_text(32,32, "Invalid Password! Only Letters and numbers please!");
- }

-

Приведенный выше код проверяет длину строки на длину той же строки, но с удаленными символами. Если они не совпадают, на экран выводится сообщение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_lower.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_lower.htm index 56e13bc7d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_lower.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_lower.htm @@ -1,63 +0,0 @@ - - - - - - string_lower - - - - - - - - - - - - -

string_lower

-

С помощью этой функции вы можете заставить строку содержать только символы нижнего регистра.

-

ПРИМЕЧАНИЕ Эта функция определяет только 26 букв английского алфавита от A - Z.

-

-

Синтаксис:

-

string_lower(string);

- - - - - - - - - - - -
АргументТипОписание
stringThe string to convert to lowercase.
-

-

Возвращается:

-

-

-

Пример:

-

str1 = "Hello World";
str2 = string_lower(str1);

-

Приведенный выше код установит str2 на "hello world".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_ord_at.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_ord_at.htm index 394ade222..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_ord_at.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_ord_at.htm @@ -1,65 +0,0 @@ - - - - - - string_ord_at - - - - - - - - - - - -

string_ord_at

-

Вы можете использовать эту функцию для возврата кода определенного символа в определенной позиции в строке, при этом индекс начинается с 1 для первого символа. Если символ не найден или строка короче, чем значение, заданное индексом, возвращается -1.

-

-

Синтаксис:

-

string_ord_at(str, index);

- - - - - - - - - - - - - - - -
АргументТипОписание
strThe string to check.
indexThe position to get the character code from.
-

-

Возвращается:

-

-

-

Пример:

-

str = "Hello World";
char_code = string_ord_at(str, 7);

-

Это позволит получить код символа для седьмого символа (где "H" считается первым) в строке "str" и сохранить его в переменной "char_code".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_pos.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_pos.htm index 06691d75f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_pos.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_pos.htm @@ -1,68 +0,0 @@ - - - - - - string_pos - - - - - - - - - - - -

string_pos

-

Эта функция возвращает позицию символа экземпляра подстроки в строке при поиске с начала строки (для поиска с конца используйте функцию string_last_pos()). Функция вернет 0, если подстрока не найдена, или позицию первого символа подстроки, если она найдена. Имейте в виду, что для старой поддержки строки индексируются с 1, поэтому 1 - это первая позиция в строке, а не 0, как вы могли бы ожидать. Это можно использовать для фильтрации слов, которые могут считаться оскорбительными, или для поиска правильного места для вставки текста в другую строку.

-

-

Синтаксис:

-

string_pos(substr, str);

- - - - - - - - - - - - - - - -
АргументТипОписание
substrThe substring to look for in the string.
strThe string.
-

-

Возвращается:

-

-

-

Пример:

-

if (string_pos(",", text) != 0)
- {
-     string_insert(name, text, string_pos(",", text));
- }

-

Приведенный выше код ищет в строке, хранящейся в переменной "text", запятую, и если находит ее, то вставляет в эту позицию подстроку "name".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_pos_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_pos_ext.htm index 16585372c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_pos_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_pos_ext.htm @@ -1,72 +0,0 @@ - - - - - - string_pos_ext - - - - - - - - - - - -

string_pos_ext

-

Эта функция возвращает позицию символа подстроки в строке, выполняя поиск вперед по строке, начиная с позиции, заданной в качестве начальной. Функция вернет 0, если искомая строка не найдена, или позицию первого символа искомой строки, если она найдена. Имейте в виду, что для старой поддержки строки индексируются с 1, поэтому 1 - это первая позиция в строке, а не 0, как вы могли бы ожидать.

-

-

Синтаксис:

-

string_pos_ext(substr, str, start_pos);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
substrThe substring to look for in the string.
strThe string.
start_posThe starting position to search from.
-

-

Возвращается:

-

-

-

Пример:

-

if (string_pos_ext(",", text, 20) != 0)
- {
-     string_insert(name, text, string_pos_ext(",", text, 20));
- }

-

Приведенный выше код ищет в строке, хранящейся в переменной "text", запятую после 20-го символа, и если находит ее, то вставляет в эту позицию подстроку "name".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_repeat.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_repeat.htm index 7cf0afd4d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_repeat.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_repeat.htm @@ -1,66 +0,0 @@ - - - - - - string_repeat - - - - - - - - - - - - -

string_repeat

-

Эта функция просто возвращает одну и ту же строку, повторенную заданное количество раз над самой собой.

-

-

Синтаксис:

-

string_repeat(str, count);

- - - - - - - - - - - - - - - -
АргументТипОписание
strThe string to repeat.
countThe number of times to repeat the string.
-

-

Возвращается:

-

-

-

Пример:

-

str1 = "Hello World";
str2 = string_repeat(str1, 3);

-

Приведенный выше код установит str2 на "Hello WorldHello WorldHello World".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_replace.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_replace.htm index 0b9478a7c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_replace.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_replace.htm @@ -1,70 +0,0 @@ - - - - - - string_replace - - - - - - - - - - - - -

string_replace

-

Вы можете использовать эту функцию для разбора строки в поисках определенной части, которая затем может быть заменена новой строкой, которую вы указали.

-

-

Синтаксис:

-

string_replace(str, substr, newstr);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
strThe string to be copied.
substrThe substring within the string to be replaced.
newstrThe new substring to replace the previous one.
-

-

Возвращается:

-

-

-

Пример:

-

str1 = "Hello Earth";
str2 = string_replace(str1, "Earth", "World");

-

Это установит str2 в str1, но с его экземпляром "Earth", замененным на "World", в результате чего str2 будет "Hello World".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_replace_all.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_replace_all.htm index 5db95ef93..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_replace_all.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_replace_all.htm @@ -1,70 +0,0 @@ - - - - - - string_replace_all - - - - - - - - - - - - -

string_replace_all

-

Вы можете использовать эту функцию для разбора строки в поисках определенных частей, которые затем могут быть заменены новой строкой, указанной вами, во всех местах, где они встречаются.

-

-

Синтаксис:

-

string_replace_all(str, substr, newstr);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
strThe string to be copied.
substrThe substring within the string to be replaced in all instances.
newstrThe new substring to replace the previous one(s).
-

-

Возвращается:

-

-

-

Пример:

-

str1 = "Hexxo Worxd";
str2 = string_replace_all(str1, "x", "l");

-

Это приведет к тому, что str2 станет str1, но в нем экземпляры "x" будут заменены на "l", в результате чего str2 станет "Hello World".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_set_byte_at.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_set_byte_at.htm index 10de2ef65..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_set_byte_at.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_set_byte_at.htm @@ -1,71 +0,0 @@ - - - - - - string_set_byte_at - - - - - - - - - - - - -

string_set_byte_at

-

Эта функция устанавливает байт непосредственно в строке (на основе формата UTF8) и возвращает копию строки с изменениями.

-

ПРИМЕЧАНИЕ Эта функция работает невероятно медленно, поэтому тщательно подумайте, нужна ли она и где вы ее используете.

-

-

Синтаксис:

-

string_set_byte_at(str, pos, byte);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
strThe string to change the byte of.
posThe position within the string (starting at 1) to change the byte of.
byteThe new byte value.
-

-

Возвращается:

-

-

-

Пример:

-

str = string_set_byte_at("hello", 2, 97);

-

Приведенный выше код изменит значение байта второй буквы в строке и таким образом установит переменную str в значение "hallo".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_upper.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_upper.htm index a526b9b26..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_upper.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_upper.htm @@ -1,63 +0,0 @@ - - - - - - string_upper - - - - - - - - - - - - -

string_upper

-

С помощью этой функции вы можете заставить строку содержать только символы верхнего регистра.

-

ПРИМЕЧАНИЕ Эта функция распознает только 26 букв английского алфавита от A до Z.

-

-

Синтаксис:

-

string_upper(string);

- - - - - - - - - - - -
АргументТипОписание
stringThe string to convert to uppercase.
-

-

Возвращается:

-

-

-

Пример:

-

str1 = "Hello World";
str2 = string_upper(str1);

-

Приведенный выше код установит переменную str2 в значение "HELLO WORLD".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_width.htm index 10ac4e260..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_width.htm @@ -1,63 +0,0 @@ - - - - - - string_width - - - - - - - - - - - - -

string_width

-

Эта функция возвращает ширину (в пикселях) введенной строки с учетом возможных переносов строк. Это очень удобно для вычисления расстояний между элементами текста на основе общей ширины букв, составляющих строку - как она была бы нарисована с draw_text() с использованием определенного в данный момент шрифта.

-

-

Синтаксис:

-

string_width(string);

- - - - - - - - - - - -
АргументТипОписание
stringThe string to measure the width of.
-

-

Возвращается:

-

-

-

Пример:

-

var ww = string_width(str_Name + " ");
draw_text(32, 32, str_Name));
draw_text(32 + ww, 32, "has won the game!");

-

Приведенный выше код получит ширину заданной строки, а затем нарисует две строки текста, используя возвращенную ширину строки в качестве разделителя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_width_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_width_ext.htm index f3a77d916..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_width_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Strings/string_width_ext.htm @@ -1,72 +0,0 @@ - - - - - - string_width_ext - - - - - - - - - - - - -

string_width_ext

-

Эта функция возвращает максимальную ширину (в пикселях) вводимой строки с учетом разделения строк и ширины перевода строки (которая определяется как количество пикселей, которые строка может занять до того, как будет вставлен перевод строки). Это очень - удобно для вычисления расстояний между элементами текста на основе максимальной ширины строки, разделенной на несколько строк, как это было бы нарисовано при draw_text_ext() с использованием определенного в данный момент - шрифта. Разделение и ширина могут быть установлены в -1 для получения расстояния по умолчанию.

-

-

Синтаксис:

-

string_width_ext(string, sep, w);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
stringThe string to measure the width of.
sepThe distance in pixels between lines of text as if the string was being drawn.
wThe maximum width (in pixels) of the string before a line break as if the string was bring drawn.
-

-

Возвращается:

-

-

-

Пример:

-

var ww = string_width_ext(str_Story_Text[1], -1, 100);
draw_text_ext(32, 32, str_Story_Text[1], -1, 100);
draw_text_ext(32 + ww, 32, str_Story_Text[2], -1, 100);

-

Приведенный выше код получит ширину заданной строки с учетом разделения строк и ширины перевода строки, а затем нарисует две строки текста, используя возвращенную общую ширину строки в качестве разделителя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/call_cancel.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/call_cancel.htm index e53c15a6e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/call_cancel.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/call_cancel.htm @@ -1,67 +0,0 @@ - - - - - - - call_cancel - - - - - - - - - - -

call_cancel

-

Эта функция отменяет функцию обратного вызова, которая была запущена ранее с помощью call_later.

-
-

-

Синтаксис:

-

call_cancel(handle);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
handleИдентификатор источника времениThe handle to a Time Source возвращаемый call_later.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

call_cancel(handle);

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/call_later.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/call_later.htm index 177fb015e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/call_later.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/call_later.htm @@ -1,121 +0,0 @@ - - - - - - - call_later - - - - - - - - - - -

call_later

-

Эта функция запускает функцию обратного вызова через указанное время или через определенный интервал. Для этого создается источник времени (см. Источники времени).

-

Чтобы отменить функцию обратного вызова, см. call_cancel.

-

ВАЖНО Хотя эта функция возвращает фактический ID источника времени, этот ID нельзя использовать с функциями источника времени, так как источники времени, используемые call_later и call_cancel, являются "невидимыми" - они не появляются как дочерние элементы встроенных источников времени и не могут быть использованы с другими функциями источника времени. Однако они включаются в подсчет источников времени, возвращаемый функцией debug_event("ResourceCounts").

-

Аргументы

-

Ниже приведена разбивка аргументов этой функции:

-

Период

-
-

Это период времени, который может быть выражен в секундах или кадрах, в зависимости от единицы измерения, указанной в следующем аргументе.

-

При использовании кадров в качестве единицы измерения период должен быть целым числом. Нецелые значения округляются вниз (floored), за исключением значений меньше 1, которые округляются до 1.

-
-

Единица

-
-

Это единица, в которой выражается период, и может быть time_source_units_seconds или time_source_units_frames.

-

См: Единицы источника времени

-

Вы можете использовать значение частоты ударов в минуту с помощью time_bpm_to_seconds().

-
-

Обратный звонок

-
-

Вы должны указать "обратный вызов" method который будет вызываться по истечении срока действия источника времени.

-
-

Петля -

Должен ли источник времени зацикливаться.

- -

-

-

-

Синтаксис:

-

call_later(period, unit, callback, [loop=false]);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
periodРеальноThe period that the Time Source работает для, в заданных единицах
unitsИсточник времени Единица измерения ПостояннаяThe units that the given period is in
callbackМетод или Функция сценарияThe method or script function to call after the specified time
loopБулевоOPTIONAL Следует ли зацикливать источник времени (по умолчанию false).
-

-

Возвращается:

-

Time Source ID

-

-

Пример 1:

-

var _callback = function()
- {
-     show_debug_message("Five seconds have passed!");
- }
- var _handle = call_later(5, time_source_units_seconds, _callback);

-

В этом примере мы создаем функцию обратного вызова, которая показывает отладочное сообщение по истечении пяти секунд. После этого базовый источник времени уничтожается.

-

Пример 2:

-

var _create_enemy = function()
- {
-     var _x = random(room_width);
-     var _y = random(room_height);
-     instance_create_depth(_x, _y, depth, obj_enemy);
- }
-
- var _handle = call_later(10, time_source_units_seconds, _create_enemy, true); -

-

В этом примере мы создаем функцию обратного вызова, которая создает нового врага в случайной позиции в комнате. Затем эта функция выполняется каждые 10 секунд, передавая ее в call_later. Последний аргумент имеет значение true чтобы функция продолжала вызываться каждые 10 секунд.

-

Используйте call_cancel с хэндлом, возвращенным call_later, чтобы остановить источник времени и вызовы обратного вызова.

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_bpm_to_seconds.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_bpm_to_seconds.htm index 8512984af..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_bpm_to_seconds.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_bpm_to_seconds.htm @@ -1,76 +0,0 @@ - - - - - - - time_bpm_to_seconds - - - - - - - - - - -

time_bpm_to_seconds

-

Эта функция принимает значение частоты ударов в минуту и возвращает длительность каждого удара в секундах.

-

Это можно использовать при создании источника времени, чтобы использовать значение BPM для источника времени. Важно, чтобы такой источник времени использовал секунды в качестве единицы измерения.

-

-

Синтаксис:

-

time_bpm_to_seconds(bpm);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
bpmРеальноThe beats-per-minute value to convert into seconds-per-beat
-

-

Возвращается:

-

Real

-

-

Пример:

-

var _bpm = 90;
- var _seconds = time_bpm_to_seconds(_bpm);
-
- time_source = time_source_create(time_source_game, _seconds, time_source_units_seconds, function()
- {
-     show_debug_message("BEAT!");
- }, [], -1); -

-

Этот код преобразует значение 90 BPM в секунды и использует его для создания источника времени, который работает неограниченное время.

-

При каждом ударе он печатает сообщение "BEAT!" в выходной журнал.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_seconds_to_bpm.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_seconds_to_bpm.htm index 295713b56..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_seconds_to_bpm.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_seconds_to_bpm.htm @@ -1,72 +0,0 @@ - - - - - - - time_seconds_to_bpm - - - - - - - - - - -

time_seconds_to_bpm

-

Эта функция принимает длительность такта в секундах и возвращает значение частоты ударов в минуту.

-

-

Синтаксис:

-

time_seconds_to_bpm(seconds);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
secondsРеальноThe seconds-per-beat value to convert into beats-per-minute
-

-

Возвращается:

-

Real

-

-

Пример:

-

var _period = time_source_get_period(time_source);
- var _bpm = time_seconds_to_bpm(_period);
-
- show_debug_message(_bpm); -

-

Эта функция получает период источника времени, преобразует его в BPM и печатает это значение в выходной журнал.

-

Этот код следует примеру для time_bpm_to_seconds().

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_create.htm index d68c6c37b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_create.htm @@ -1,166 +0,0 @@ - - - - - - - time_source_create - - - - - - - - - - -

time_source_create

-

Эта функция создает новый источник времени. Для получения более подробной информации читайте раздел Источники времени.

-

Создание нового источника времени не запускает его автоматически; вы должны вызвать time_source_start() чтобы активировать его.

-

Новый источник времени запускается только один раз, если не указан аргумент повторений (читайте ниже).

-

Вы должны уничтожить Источник времени, используя time_source_destroy() когда он вам больше не нужен.

-

Аргументы

-

Ниже приведена разбивка аргументов функции:

-

Источник родительского времени

-
-

Это родительский источник времени, который управляет новым источником времени. Это может быть time_source_global, time_source_game или пользовательский источник времени, который уже существует.
-
- См: Встроенные источники времени -

-
-

Период

-
-

Это период времени, который может быть выражен в секундах или кадрах, в зависимости от единицы измерения, указанной в следующем аргументе.

-

При использовании кадров в качестве единицы измерения период должен быть целым числом. Нецелые значения округляются вниз (floored), за исключением значений меньше 1, которые округляются до 1.

-
-

Единица

-
-

Это единица, в которой выражается период, и может быть time_source_units_seconds или time_source_units_frames.

-

См: Единицы источника времени

-

Вы можете использовать значение частоты ударов в минуту с помощью time_bpm_to_seconds().

-
-

Обратный вызов и аргументы

-
-

Вы должны указать "обратный вызов" method который будет вызываться по истечении срока действия источника времени.

-

Вы можете дополнительно указать массив, содержащий аргументы, которые должны быть переданы в метод при его вызове.

-

Сам массив не будет передан в метод, скорее каждый элемент массива будет передан как отдельный аргумент.

-

Например, если ваша функция ожидает аргументы (x, y, object), то ваш массив args может выглядеть следующим образом: [30, 600, obj_player].

-
-

Повторы

-
-

Вы можете опционально указать, сколько раз должен повторяться источник времени. Значение 1 означает, что он запускается только один раз, что является значением по умолчанию.

-

Вы можете указать общее количество повторений, или -1, чтобы повторять бесконечно.

-

Например, если вы установите значение 3, а период источника времени - "4 секунды", то источник времени будет активен в течение 12 секунд и будет вызывать метод обратного вызова каждые 4 секунды.

-
-

Тип истечения срока действия

-
-

Это может быть время_источника_истечения_ближайшее или время_источника_истечения_после.

-

См: Типы истечения срока действия источника времени

-
-

-

Синтаксис:

-

time_source_create(parent, period, units, callback, [args, repetitions, expiry_type]);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
parentИдентификатор источника времениThe parent Time Source который управляет новым источником времени
periodРеальноThe period that the Time Source работает для, в заданных единицах
unitsИсточник времени Единица измерения ПостояннаяThe units that the given period is in
callbackМетод или Функция сценарияThe method or script function to call when the Time Source истекает
argsМассивOPTIONAL Массив, содержащий аргументы для передачи в метод
repetitionsРеальноOPTIONAL Количество повторений источника времени или -1 для бесконечного повторения.
expiry_typeСрок действия источника времени ПостояннаяOPTIONAL Истекает ли срок действия источника времени на ближайшем к его истечению кадре или на следующем кадре
-

-

Возвращается:

-

Time Source ID

-

-

Пример 1:

-

var _my_method = function()
- {
-     instance_destroy();
- }
-
- var _time_source = time_source_create(time_source_game, 300, time_source_units_frames, _my_method);
-
- time_source_start(time_source); -

-

В этом примере мы хотим, чтобы экземпляр уничтожил себя через 300 кадров.

-

Сначала код создает метод, который просто вызывает instance_destroy().

-

Затем создается источник времени, наследующий источник времени игры. Он устанавливает его период в 300 кадров.

-

Наконец, запускается источник времени.

-

-

Пример 2:

-

var _my_method = function()
- {
-     show_debug_message("A second has passed!");
- }
-
- global.time_per_second = time_source_create(time_source_game, 1, time_source_units_seconds, _my_method, [], -1, time_source_expire_after);
-
- time_source_start(global.time_per_second); -

-

В этом примере мы создаем глобальный источник времени, который истекает раз в секунду. Этот код должен быть помещен в корень файла script.

-

Сначала создается метод, который печатает сообщение в выходной журнал: "Прошла секунда!".

-

Затем он создает новый источник времени, наследуя от источника времени игры. Он устанавливает его период в 1 секунду.

-

Метод передается в источник времени, чтобы его можно было вызывать каждый раз, когда истекает срок его действия. В качестве аргументов передается пустой массив.

-

Счетчик повторений установлен на -1, поэтому источник времени никогда не останавливается и продолжает повторяться вечно. Тип истечения установлен так, чтобы обратный вызов запускался на первом кадре после истечения срока действия.

-

Наконец, запускается источник времени.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_destroy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_destroy.htm index 8aac6029d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_destroy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_destroy.htm @@ -1,79 +0,0 @@ - - - - - - - time_source_destroy - - - - - - - - - - -

time_source_destroy

-

Эта функция уничтожит заданный источник времени.

-

При желании можно указать, должны ли быть удалены и все дочерние источники времени.

-

-

Синтаксис:

-

time_source_destroy(id, [destroy_tree]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор источника времениThe Time Source уничтожить
destroy_treeБулевоOPTIONAL Следует ли уничтожать и дочерние источники времени, по умолчанию false
-

-

Возвращается:

-

N/A

-

-

Пример:

-

// Create event
- time_source = time_source_create(time_source_game, 1, time_source_units_seconds, my_method, [], -1);
-
- // Clean Up event
- time_source_destroy(time_source); -

-

Код события Create создает новый источник времени, который истекает один раз в секунду и повторяется неограниченное количество раз.

-

Код события Clean Up уничтожает этот источник времени, поскольку он не понадобится после уничтожения экземпляра.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_exists.htm index afa5ccae1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_exists.htm @@ -1,75 +0,0 @@ - - - - - - - time_source_exists - - - - - - - - - - -

time_source_exists

-

Эта функция возвращает, является ли заданный идентификатор действительным источником времени.

-

Если источник времени был уничтожен, то возвращается false, однако если источник времени был остановлен или просто истек, то он продолжает существовать, а значит, эта функция возвращает true.

-

-

Синтаксис:

-

time_source_exists(id);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор источника времениThe Time Source проверять
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if (time_source_exists(global.spawn_time_source))
- {
-     if (keyboard_check_pressed(vk_space))
-     {
-         time_source_destroy(global.spawn_time_source);
-     }
- }

-

Этот код проверяет, существует ли источник времени. Если он существует, то проверяется, была ли нажата клавиша Space.

-

В этом случае он уничтожает Источник времени.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_children.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_children.htm index 094a3463f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_children.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_children.htm @@ -1,77 +0,0 @@ - - - - - - - time_source_get_children - - - - - - - - - - -

time_source_get_children

-

Для заданного источника времени эта функция возвращает массив, содержащий Идентификатор источника времениего дочерних элементов.

-

-

Синтаксис:

-

time_source_get_children(id);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор источника времениThe Time Source чтобы получить детей
-

-

Возвращается:

-

Array of Time Source ID

-

-

Пример:

-

var _children = time_source_get_children(time_source);
- var _count = array_length(_children);
-
- for (var i = 0; i < _count; i++)
- {
-     time_source_destroy(_children[i]);
- }
-
- time_source_destroy(time_source); -

-

Этот код проходит через всех детей Источника времени и уничтожает их одного за другим.

-

В конце он уничтожает родительский Источник времени.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_parent.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_parent.htm index aa0118339..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_parent.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_parent.htm @@ -1,68 +0,0 @@ - - - - - - - time_source_get_parent - - - - - - - - - - -

time_source_get_parent

-

Эта функция возвращает Идентификатор источника времени родителя данного источника времени.

-

Возвращаемое значение может быть идентификатором пользовательского источника времени или одного из встроенных источников времени, в зависимости от того, как был создан данный источник времени.

-

-

Синтаксис:

-

time_source_get_parent(id);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор источника времениThe Time Source чтобы получить родителя
-

-

Возвращается:

-

Time Source ID

-

-

Пример:

-

var _parent = time_source_get_parent(time_source);

-

Этот код получает родителя источника времени и сохраняет его в локальной переменной.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_period.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_period.htm index 1b6527c42..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_period.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_period.htm @@ -1,65 +0,0 @@ - - - - - - - time_source_get_period - - - - - - - - - - -

time_source_get_period

-

Эта функция возвращает значение периода, установленное для данного Источника времени.

-

Значение этого периода будет выражено в единицах, установленных для источника времени (секунды или кадры).

-

-

Синтаксис:

-

time_source_get_period(id);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор источника времениThe Time Source чтобы получить значение периода для
-

-

Возвращается:

-

Real

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_reps_completed.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_reps_completed.htm index d459ed337..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_reps_completed.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_reps_completed.htm @@ -1,64 +0,0 @@ - - - - - - - time_source_get_reps_completed - - - - - - - - - - -

time_source_get_reps_completed

-

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

-

-

Синтаксис:

-

time_source_get_reps_completed(id);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор источника времениThe Time Source чтобы получить информацию для
-

-

Возвращается:

-

Real

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_reps_remaining.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_reps_remaining.htm index e9ce0a5f5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_reps_remaining.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_reps_remaining.htm @@ -1,65 +0,0 @@ - - - - - - - time_source_get_reps_remaining - - - - - - - - - - -

time_source_get_reps_remaining

-

Эта функция возвращает количество повторений, оставшихся у данного источника времени до его полной остановки.

-

Функция вернет неопределенное значение, если данный источник времени работает неопределенно долго, или если это встроенный источник времени.

-

-

Синтаксис:

-

time_source_get_reps_remaining(id);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор источника времениThe Time Source чтобы получить информацию для
-

-

Возвращается:

-

Real

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_state.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_state.htm index ebee27169..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_state.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_state.htm @@ -1,81 +0,0 @@ - - - - - - - time_source_get_state - - - - - - - - - - -

time_source_get_state

-

Эта функция возвращает состояние заданного Источника времени.

-

-

Синтаксис:

-

time_source_get_state(id);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор источника времениThe Time Source чтобы узнать состояние
-

-

Возвращается:

-

Time Source State Constant

-

-

Пример:

-

if (keyboard_check_pressed(vk_space))
- {
-     var _state = time_source_get_state(time_source);
-
-     if (_state == time_source_state_active)
-     {
-         time_source_pause(time_source);
-     }
-     else if (_state == time_source_state_paused)
-     {
-         time_source_start(time_source);
-     }
- } -

-

При нажатии клавиши Space этот код получит состояние источника времени.

-

Когда состояние активно, оно приостанавливает работу Источника времени, а когда он приостановлен, возобновляет ее.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_time_remaining.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_time_remaining.htm index fd0bb3539..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_time_remaining.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_time_remaining.htm @@ -1,65 +0,0 @@ - - - - - - - time_source_get_time_remaining - - - - - - - - - - -

time_source_get_time_remaining

-

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

-

Это значение времени будет выражено в единицах, установленных для источника времени (секунды или кадры).

-

-

Синтаксис:

-

time_source_get_time_remaining(id);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор источника времениThe Time Source чтобы получить информацию для
-

-

Возвращается:

-

Real

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_units.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_units.htm index 0d1897a26..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_units.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_get_units.htm @@ -1,63 +0,0 @@ - - - - - - - time_source_get_units - - - - - - - - - - -

time_source_get_units

-

Эта функция возвращает единицы, установленные для данного источника времени. Значение периода для источника времени выражается в этих единицах.

-

-

Синтаксис:

-

time_source_get_units(id);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор источника времениThe Time Source чтобы получить единицы измерения для
-

-

Возвращается:

-

Time Source Unit Constant

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_pause.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_pause.htm index 3494ff94d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_pause.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_pause.htm @@ -1,82 +0,0 @@ - - - - - - - time_source_pause - - - - - - - - - - -

time_source_pause

-

Эта функция приостанавливает работу заданного источника времени. Источник времени должен быть активен, когда вызывается эта функция.

-

Чтобы возобновить его, позвоните time_source_resume().

-

-

Синтаксис:

-

time_source_pause(id);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор источника времениThe Time Source сделать паузу
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (keyboard_check_pressed(vk_space))
- {
-     var _state = time_source_get_state(time_source);
-
-     if (_state == time_source_state_active)
-     {
-         time_source_pause(time_source);
-     }
-     else if (_state == time_source_state_paused)
-     {
-         time_source_resume(time_source);
-     }
- } -

-

При нажатии клавиши Space этот код получит состояние источника времени.

-

Когда состояние активно, оно приостанавливает работу Источника времени, а когда он приостановлен, возобновляет ее.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_reconfigure.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_reconfigure.htm index 8216c4e29..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_reconfigure.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_reconfigure.htm @@ -1,105 +0,0 @@ - - - - - - - time_source_reconfigure - - - - - - - - - - -

time_source_reconfigure

-

Эта функция используется для изменения основных свойств источника времени без необходимости создания совершенно нового.

-

Вы указываете существующий Источник времени, а затем устанавливаете свойства, которые также установлены в time_source_create()кроме родительского. Подробную информацию об этих свойствах читайте на этой странице.

-

Указанный источник времени будет сброшен и деактивирован, и его нужно будет запустить снова.

-

-

Синтаксис:

-

time_source_reconfigure(id, period, units, callback, [args, repetitions, expiry_type]);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор источника времениThe Time Source изменить конфигурацию
periodРеальноThe period that the Time Source работает для, в заданных единицах
unitsИсточник времени Единица измерения ПостояннаяThe units that the given period is in
callbackМетодThe method to call when the Time Source истекает
argsМассивOPTIONAL Массив, содержащий аргументы для передачи в метод
repetitionsРеальноOPTIONAL Количество повторений источника времени или -1 для бесконечного повторения.
expiry_typeСрок действия источника времени ПостояннаяOPTIONAL Истекает ли срок действия источника времени на ближайшем к его истечению кадре или на следующем кадре
-

-

Возвращается:

-

N/A

-

-

Пример:

-

function change_spawn_delay(new_delay)
- {
-     time_source_reconfigure(obj_game.spawn_time_source, new_delay, time_source_units_frames, obj_game.spawn_method, [], -1);
-     time_source_start(obj_game.spawn_time_source);
- }

-

Это создает новую функцию, которая изменяет задержку спавна, используемую для внутриигровых врагов.

-

Если игра использует источник времени под названием obj_game.spawn_time_source для спавна врагов, то этот источник времени нужно будет обновить, когда изменится задержка спавна.

-

Эта функция делает именно это, перенастраивая источник времени с новой задержкой, а затем запуская его снова.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_reset.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_reset.htm index 08e7aa78b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_reset.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_reset.htm @@ -1,70 +0,0 @@ - - - - - - - time_source_reset - - - - - - - - - - -

time_source_reset

-

Эта функция обнуляет заданный источник времени, сбрасывая его таймер и информацию о повторениях.

-

После вызова этой функции вам нужно будет снова запустить источник времени, чтобы он начал отсчет.

-

-

Синтаксис:

-

time_source_reset(id);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор источника времениThe Time Source сбросить
-

-

Возвращается:

-

N/A

-

-

Пример:

-

// Room Start event
- time_source_reset(global.spawn_time_source);
- time_source_start(global.spawn_time_source);

-

Этот код будет сбрасывать данный источник времени всякий раз, когда начинается новая комната, а затем снова запускать источник времени.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_resume.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_resume.htm index 297c8139b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_resume.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_resume.htm @@ -1,81 +0,0 @@ - - - - - - - time_source_resume - - - - - - - - - - -

time_source_resume

-

Эта функция возобновляет работу заданного источника времени и его дочерних элементов. Данный источник времени должен быть ранее приостановлен с помощью функции time_source_pause().

-

-

Синтаксис:

-

time_source_resume(id);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор источника времениThe Time Source возобновить
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (keyboard_check_pressed(vk_space))
- {
-     var _state = time_source_get_state(time_source);
-
-     if (_state == time_source_state_active)
-     {
-         time_source_pause(time_source);
-     }
-     else if (_state == time_source_state_paused)
-     {
-         time_source_resume(time_source);
-     }
- } -

-

При нажатии клавиши Space этот код получит состояние источника времени.

-

Когда состояние активно, оно приостанавливает работу Источника времени, а когда он приостановлен, возобновляет ее.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_start.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_start.htm index 282347ac7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_start.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_start.htm @@ -1,80 +0,0 @@ - - - - - - - time_source_start - - - - - - - - - - -

time_source_start

-

Эта функция запускает заданный источник времени, изменяя его состояние на time_source_state_active.

-

Указанный источник времени может быть новым источником времени, который никогда не запускался, был приостановлен, остановлен или истек без повторений.

-

Эта функция выполняет "мягкий сброс" данного источника времени, сбрасывая время истечения и оставшиеся повторения до значений, которые были для него настроены.

-

-

Синтаксис:

-

time_source_start(id);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор источника времениThe Time Source начинать
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _my_method = function()
- {
-     instance_destroy();
- }
-
- var _time_source = time_source_create(time_source_game, 300, time_source_units_frames, _my_method);
-
- time_source_start(_time_source); -

-

В данном примере мы хотим, чтобы экземпляр уничтожил себя через 300 кадров.

-

Сначала код создает метод, который просто вызывает instance_destroy().

-

Затем создается источник времени, наследующий источник времени игры. Он устанавливает его период в 300 кадров.

-

Наконец, запускается источник времени.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_stop.htm b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_stop.htm index 1b21bdb07..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_stop.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Time_Sources/time_source_stop.htm @@ -1,70 +0,0 @@ - - - - - - - time_source_stop - - - - - - - - - - -

time_source_stop

-

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

-

-

Синтаксис:

-

time_source_stop(id);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
idИдентификатор источника времениThe Time Source остановиться
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (time_source_get_state(time_source) != time_source_state_stopped)
- {
-     time_source_stop(time_source);
- }

-

Приведенный выше код остановит источник времени, если он еще не остановлен.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/Match_Making.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/Match_Making.htm index 565047f25..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/Match_Making.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/Match_Making.htm @@ -1,98 +0,0 @@ - - - - - - Сопоставление - - - - - - - - - - -

Матчмейкинг

-

Создание матчей (многопользовательская игра) для Xbox Live и UWP требует некоторой настройки, посредством установки шаблонов сессий и бункеров для создания матчей на портале разработчиков Xbox. GameMaker поддерживает это с помощью цели UWP и позволяет вам делать следующее:

-
    -
  • Создание многопользовательской сессии
  • -
  • Найти (и/или присоединиться) к многопользовательской сессии
  • -
  • Получайте уведомления, когда соответствующие игроки присоединяются или покидают сессию, а также получайте данные об их сетевом подключении
  • -
  • Получайте уведомления, когда хозяин сеанса переходит к другому пользователю
  • -
  • Получение списка пользователей в сессии
  • -
  • Оставить сессию
  • -
-

Чтобы создать многопользовательскую сессию, необходимо указать, какой шаблон сессии будет использоваться. Эти шаблоны сессий определяются в XDP, но пример показан ниже:

-

Session Name: MatchSession
- Contract Version: 107
- Session Template (JSON text):
- {
-     "constants": {
-         "system": {
-             "version": 1,
-             "maxMembersCount": 12,
-             "capabilities": {
-         },
-             "memberInitialization": {
-                 "externalEvaluation": false,
-                 "membersNeededToStart": 1
-             }
-         },
-         "custom": {}
-     }
- }

-

Описание полей можно найти в разделе "Обзор сессии" в файле справки XDK. Обратите внимание, что в настоящее время мы не поддерживаем динамическую установку параметров сессии из GameMaker.

-

Вместе с шаблоном сессии необходимо также установить бункер подбора, чтобы сессия могла быть найдена (это также делается на XDP). Хопперы используются для определения правил, которые используются при подборе игроков. Как и в случае с параметрами сессии, в настоящее время мы не поддерживаем динамическую установку параметров бункера из GameMaker: Studio. Дополнительные сведения см. в разделе "SmartMatch Matchmaking Configuration" в файле справки XDK.

-

Следующие функции доступны для Xbox Live matchmaking (обратите внимание, что вам также придется использовать сетевые функции GameMaker для соединений и т.д.):

- -

-

GameMaker предоставляет дополнительный набор функций подбора игроков, которые вы можете использовать для приглашения других игроков в сети присоединиться к сессии или для принятия приглашения присоединиться к чужой сессии. Доступны следующие функции:

- -

-

Когда игрок принимает приглашение от другого игрока, происходит одно из двух событий:

-
    -
  • Если ваша игра запущена, вы получите социальное асинхронное событие с async_load DS картой, содержащей следующие ключи/значения: -
      -
    • "id" - Это значение будет установлено в MATCHMAKING_INVITATION.
    • -
    • "invitation_id" - Это уникальное значение идентификатора сессии.
    • -
    • "invitation_host" - Это уникальное значение ID сеанса для ведущего сеанса.
    • -
    - Вы должны сохранить значения ID и Host, затем оставить все необходимые сессии и вызвать функцию xboxlive_matchmaking_join_invite(), передав в качестве аргументов значения ID приглашения и хоста приглашения в событии Step. -
  • -
  • Если ваша игра в данный момент не запущена, она будет запущена ОС. Вы получите однотипное Social Asynchronous Event с тем же набором ключей, что и перечисленные выше. Сохраните их в переменных, затем подключитесь к Xbox Live matchmaking и, наконец, позвоните по адресу xboxlive_matchmaking_join_invite().
  • -
-

После вызова xboxlive_matchmaking_join_invite() пользователь попытается присоединиться к сеансу, и вы будете получать асинхронные социальные события, как если бы вы вызвали xboxlive_matchmaking_find() на этот сеанс.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_create.htm index 2bfaad06f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_create.htm @@ -1,126 +0,0 @@ - - - - - - xboxlive_matchmaking_create - - - - - - - - - - -

xboxlive_matchmaking_create

-

Эта функция создаст многопользовательскую сессию, используя шаблон сессии, бункер подбора и шаблон Secure Device Association, которые вы должны были предварительно создать в панели XDP. Идентификатор пользователя, который вы можете получить для конкретной игровой панели, вызвав функцию xboxlive_user_for_pad() функции и видимость будет одной из следующих констант:

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Xbox Match Visibility Constant
ПостояннаяОписание
xboxlive_match_visibility_openуказывает, что к сеансу могут присоединиться другие.
xboxlive_match_visibility_privateуказывает, что сессия не видна пользователям, которые не являются членами сессии.
xboxlive_match_visibility_usetemplateуказывает, что должно использоваться значение, используемое в шаблоне сессии (обычно используется это значение, так как вы не можете отменить значение шаблона, если оно было установлено в XDP).
-

Функция возвращает уникальное значение Request ID, которое затем может быть использовано для определения правильного Social Asynchronous Event для этой функции. Это событие будет запущено после создания сессии и будет содержать DS Map в переменной async_load со следующими парами ключ/значение:

-
    -
  • "requestid" - содержит идентификатор запроса, возвращенный вызывающей функцией
  • -
  • "status" - содержит строку "session_created" для информирования о том, какой тип события был вызван.
  • -
  • "sessionid" - содержит идентификатор сессии, или -1 в случае неудачи
  • -
  • "error" - содержит 0 в случае успеха, или -1 в случае неудачи
  • -
  • "correlationid" - хэндл сессии для корреляции с функцией xboxlive_matchmaking_join_session()
  • -
-

-

Синтаксис:

-

xboxlive_matchmaking_create(user_id, visibility, template, hopper, sdatemplate, [matchattributes]);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
user_idИдентификатор пользователя XboxThe user ID pointer to use
visibilityXbox Match Visibility ConstantOne of the constants listed above
templateСтрокаThe name of the session template
hopperСтрокаThe name of the matchmaking hopper
sdatemplateСтрокаThe name of the secure device association template
matchattributesРеальноOPTIONAL Атрибуты соответствия
-

-

Возвращается:

-

Async Request ID

-

-

Пример:

-

var userID = xboxlive_user_for_pad(global.PadIndex);
- result = xboxlive_matchmaking_create(userID, xboxlive_match_visibility_usetemplate, "MatchTicketSession", "MatchTicketHopper", "PeerServerTraffic");

-

Приведенные выше действия позволят получить идентификатор пользователя на данном геймпаде, а затем инициализировать для него сеанс подбора.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_find.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_find.htm index b49a5c26a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_find.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_find.htm @@ -1,91 +0,0 @@ - - - - - - xboxlive_matchmaking_find - - - - - - - - - - -

xboxlive_matchmaking_find

-

Эта функция будет искать многопользовательскую сессию, используя шаблон сессии, бункер подбора и шаблон Secure Device Association, который вы должны были предварительно создать на панели управления XDP. Идентификатор пользователя, который вы можете получить для конкретного игрового планшета, вызвав функцию xboxlive_user_for_pad() функцию. Функция вернет уникальное значение Request ID, которое затем может быть использовано для определения правильного социального асинхронного события для этой функции. Это событие будет запущено после создания сессии и будет содержать DS Map в переменной async_load со следующими парами ключ/значение:

-
    -
  • "requestid" - содержит идентификатор запроса, возвращенный вызывающей функцией
  • -
  • "status" - содержит строку "session_created" для информирования о том, какой тип события был вызван.
  • -
  • "num_results" - содержит 1 или более, если сессия была найдена, в противном случае содержит 0.
  • -
  • "sessionid<index> " - содержит идентификатор сессии, или -1 в случае неудачи(<index/gt; является значением от 0 до "num_results" - 1).
  • -
  • "sessionOwner<index> " - содержит ID хозяина сессии, если сессия была найдена(<index> - это значение от 0 до "num_results" - 1).
  • -
  • "error" - содержит 0 в случае успеха, или -1 в случае неудачи
  • -
-

-

Синтаксис:

-

xboxlive_matchmaking_find(user_id, template, hopper, sdatemplate, [matchattributes]);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
user_idИдентификатор пользователя XboxThe user ID pointer to use
templateСтрокаThe name of the session template
hopperСтрокаThe name of the matchmaking hopper
sdatemplateСтрокаThe name of the secure device association template
matchattributesРеальноOPTIONAL Атрибуты соответствия
-

-

Возвращается:

-

Async Request ID

-

-

Пример:

-

var userID = xboxone_user_for_pad(global.PadIndex);
- result = xboxone_matchmaking_find(userID, "MatchTicketSession", "MatchTicketHopper", "PeerServerTraffic");

-

Вышеприведенная команда получит идентификатор пользователя на данном геймпаде, а затем попытается найти для него сеанс подбора.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_join_invite.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_join_invite.htm index 1634805b1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_join_invite.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_join_invite.htm @@ -1,74 +0,0 @@ - - - - - - xboxlive_matchmaking_join_invite - - - - - - - - - - -

xboxlive_matchmaking_join_invite

-

Эта функция может быть вызвана для обработки приглашения на присоединение после того, как вы успешно выполнили вызов xboxlive_matchmaking_start(). Вы передаете локальный UserID и значения приглашения (ID и ID хоста) - которые были возвращены при получении приглашения, а также имя шаблона сессии, который вы создали (строка). Затем пользователь присоединится к сессии, в которую он был приглашен, и вы получите социальные асинхронные события как - если бы вы вызвали xboxlive_matchmaking_find().

-

-

Синтаксис:

-

xboxlive_matchmaking_join_invite(user_who_received_invite, invitation_id, invitation_host, sda_template_name);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
user_who_received_inviteThe local user ID pointer.
invitation_idThe invitation ID.
invitation_hostThe invitation host ID.
sda_template_nameThe session template name.
-

-

Возвращается:

-

-

-

Пример:

-

var userID = xboxlive_user_for_pad(global.PadIndex);
xboxlive_matchmaking_join_invite(userID, global.InviteID, global.InviteHost, global.SessionTemplate);

-

Приведенное выше действие получает идентификатор пользователя для данного геймпада, а затем пытается присоединиться к сессии, в которую он был приглашен.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_join_session.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_join_session.htm index 1d3210c56..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_join_session.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_join_session.htm @@ -1,87 +0,0 @@ - - - - - - xboxlive_matchmaking_join_session - - - - - - - - - - -

xboxlive_matchmaking_join_session

-

Эта функция позволяет присоединиться к определенной сессии через хэндл сессии. Это похоже на присоединение к приглашению сессии, но полезно, когда у вас есть собственный сервер, выполняющий матчмейкинг, а не полагающийся на матчмейкинг xbox live.

-

Функция требует предоставить идентификатор пользователя, который вы можете получить для конкретного геймпада, вызвав функцию xboxlive_user_for_pad() а также шаблон Secure Device Association, который вы должны были предварительно создать на панели управления XDP.

-

Для хэндла сессии вам необходимо сначала получить "идентификатор корреляции" из сессии, к которой вы хотите присоединиться. При создании исходной сессии асинхронное социальное событие будет "session_created", и оно будет включать запись "correlationid" в возвращаемую карту (см. xboxlive_matchmaking_create()). Вам нужно будет передать этот идентификатор обратно на сервер, чтобы он затем был передан при получении запроса на подбор игроков. Как только присоединяющаяся игра получит "идентификатор корреляции" от сервера, она может вызвать эту функцию, передав идентификатор корреляции в качестве аргумента session handle.

-

Функция вернет -1, если произошла ошибка (в этом случае должен появиться консольный вывод с подробным описанием проблемы), или значение Request ID в противном случае. Значение Request ID может быть использовано для определения правильного Social Asynchronous Event для этой функции. Это событие будет запущено после создания сессии и будет содержать DS Map в переменной async_load со следующими парами ключ/значение:

-
    -
  • "requestid" - содержит идентификатор запроса, возвращенный вызывающей функцией
  • -
  • "status" - содержит строку "session_player_joined" для информирования о том, какой тип события был вызван.
  • -
  • "sessionid" - содержит идентификатор сессии, или -1 в случае неудачи.
  • -
  • "sessionOwner<index>" - содержит ID хозяина сессии, если сессия была найдена (<index>- это значение от 0 до "num_results" - 1)
  • -
  • "id" - содержит константу MATCHMAKING_SESSION
  • -
  • "error" - будет 0, если все в порядке, или -1, если что-то не получилось
  • -
-

Когда новый игрок присоединяется к сессии, карта DS будет содержать эти пары ключ/значение:

-
    -
  • "id" - содержит константу MATCHMAKING_SESSION
  • -
  • "sessionid" - содержит идентификатор сессии
  • -
  • "status" - содержит строку "session_player_joined".
  • -
  • "requestid" - Значение ID, которое было возвращено функцией, создавшей запрос
  • -
-

-

Синтаксис:

-

xboxlive_matchmaking_join_session(user_id, session_handle, sdatemplate);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
user_idThe User ID pointer to use
session_handleThe "correlation id" to use for the session ID (see description, above)
sdatemplateThe name of the secure device association template to use
-

-

Возвращается:

-

Async Request ID

-

-

Пример:

-

Request_ID = xboxlive_matchmaking_join_session(global.UserID, global.SessionID, "PeerServerTraffic");

-

Вышеприведенная команда отправит запрос на присоединение к заданной многопользовательской сессии, сохраняя значение ID запроса в переменной, чтобы его можно было проверить в асинхронном событии.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_send_invites.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_send_invites.htm index dcdbbb249..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_send_invites.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_send_invites.htm @@ -1,73 +0,0 @@ - - - - - - xboxlive_matchmaking_send_invites - - - - - - - - - - -

xboxlive_matchmaking_send_invites

-

Эта функция вызывает системный диалог Xbox Live, позволяющий пользователю отправлять приглашения в свою игру. Вы указываете локального пользователя, который должен управлять диалогом (и список друзей которого будет использоваться диалогом), уникальное значение ID сессии для сессии, в которую они хотят пригласить людей, и текст по умолчанию, который будет отображаться в диалоге. Идентификатор сессии можно получить из async_load DS-карты, созданной функцией xboxlive_matchmaking_create().

-

Функция вернет -1, если аргументы недействительны или пользователь не зарегистрирован в Xbox Live, или значение больше 0 в противном случае.

-

-

Синтаксис:

-

xboxlive_matchmaking_send_invites(from_user, session_to_invite_into, text_to_add_to_invite);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
from_userThe local user ID for controlling the dialogue.
session_to_invite_intoThe unique session ID for the session to join.
text_to_add_to_inviteA short text to add to the invitation.
-

-

Возвращается:

-

-

-

Пример:

-

if gamepad_button_check_pressed(0, gp_face1)
- {
-     var _uid = xboxlive_user_for_pad(0);
-     xboxlive_matchmaking_send_invites(_uid, global.session_ID, "Come and join my game!");
- }

-

Приведенный выше код проверяет нажатие кнопки геймпада, и если оно обнаружено, то открывается диалог Xbox Live для приглашения в сессию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_session_get_users.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_session_get_users.htm index e1dde5c29..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_session_get_users.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_session_get_users.htm @@ -1,75 +0,0 @@ - - - - - - xboxlive_matchmaking_session_get_users - - - - - - - - - - -

xboxlive_matchmaking_session_get_users

-

Эта функция создаст и заполнит карту DS деталями пользователей в указанной сессии, или -1, если произошла ошибка. Вы можете получить указатель идентификатора сессии из async_load DS map, который возвращается в асинхронном социальном событии, когда вы создали или нашли сессию (см. xboxlive_matchmaking_create() для более подробной информации). Возвращаемая карта DS будет содержать следующие пары ключ/значение:

-
    -
  • "num_results" - содержит количество пользователей в сессии
  • -
  • "userId<index>" - содержит ID пользователя (<index>- это значение от 0 до "num_results" - 1)
  • -
  • "userIsOwner<index>" - содержит 1, если пользователь является хозяином, иначе 0 (<index>- значение от 0 до "num_results" - 1)
  • -
-

-

Синтаксис:

-

xboxlive_matchmaking_session_get_users(session_id);

- - - - - - - - - - - -
АргументТипОписание
session_idThe session ID pointer to use
-

-

Возвращается:

-

Async Request ID

-

-

Пример:

-

var session_map = xboxlive_matchmaking_session_get_users(global.SessionID);
- if (session_map != -1)
- {
-     for (var i = 0; i < session_map[? "num_results"]; i++)
-     {
-         if (session_map[? "userIsOwner" + string(i)] == 1)
-         {
-             global.OwnerID = session_map[? "userId" + string(i)];
-         }
-     }
- }

-

Вышеприведенные действия позволят получить пользовательские данные для всех пользователей, участвующих в сеансе подбора, и установить глобальную переменную на ID владельца сеанса.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_session_leave.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_session_leave.htm index ae10abe24..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_session_leave.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_session_leave.htm @@ -1,63 +0,0 @@ - - - - - - xboxlive_matchmaking_session_leave - - - - - - - - - - -

xboxlive_matchmaking_session_leave

-

Эта функция заставляет пользователя, который создал или нашел указанную сессию, покинуть ее. Вы можете получить указатель идентификатора сессии из async_load DS map, который возвращается в асинхронном социальном событии при создании или нахождении сессии (см. xboxlive_matchmaking_create() для более подробной информации).

-

-

Синтаксис:

-

xboxlive_matchmaking_session_leave(session_id);

- - - - - - - - - - - -
АргументТипОписание
session_idThe Session ID pointer of the session to leave.
-

-

Возвращается:

-

-

-

Пример:

-

if gamepad_button_check_pressed(0, gp_start)
- {
-     xboxlive_matchmaking_session_leave(global.SessionID);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_set_joinable_session.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_set_joinable_session.htm index b87993d68..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_set_joinable_session.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_set_joinable_session.htm @@ -1,67 +0,0 @@ - - - - - - xboxlive_matchmaking_set_joinable_session - - - - - - - - - - -

xboxlive_matchmaking_set_joinable_session

-

Эта функция устанавливает (ранее созданную) сессию доступной для присоединения других пользователей через пользовательский интерфейс системы. У пользователя есть только одна сессия, к которой можно присоединиться одновременно, и когда он покидает сессию (или сессия завершается), это значение будет очищено, однако вы можете очистить его вручную, передав -1 в качестве аргумента session.

-

-

Синтаксис:

-

xboxlive_matchmaking_set_joinable_session(local_user, session_that_is_joinable);

- - - - - - - - - - - - - - - -
АргументТипОписание
local_userThe local user ID pointer.
session_that_is_joinableThe session ID to make joinable, or -1.
-

-

Возвращается:

-

-

-

Пример:

-

if (global.session_ID != -1)
- {
-     xboxlive_matchmaking_set_joinable_session(xboxlive_user_for_pad(0), global.session_ID);
- }

-

Приведенный выше код проверяет наличие действительного значения ID сессии, и если оно обнаружено, то устанавливает сессию как присоединяемую.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_start.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_start.htm index b5298bf4b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_start.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_start.htm @@ -1,61 +0,0 @@ - - - - - - xboxlive_matchmaking_start - - - - - - - - - - -

xboxlive_matchmaking_start

-

Эта функция должна быть вызвана до того, как вы сможете начать любую многопользовательскую сессию для данного пользователя. Она принимает указатель ID пользователя, который вы можете получить для конкретной игровой панели, вызвав функцию xboxlive_user_for_pad() и инициализирует API мультиплеера.

-

-

Синтаксис:

-

xboxlive_matchmaking_start(user_id);

- - - - - - - - - - - -
АргументТипОписание
user_idThe user ID pointer to use
-

-

Возвращается:

-

-

-

Пример:

-

global.UserID = xboxlive_user_for_pad(global.PadIndex);
xboxlive_matchmaking_start(global.UserID); -

-

Приведенный выше код получает идентификатор пользователя для заданного индекса пэда, а затем инициализирует многопользовательские возможности.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_stop.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_stop.htm index f31641c67..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_stop.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Match_Making/xboxlive_matchmaking_stop.htm @@ -1,63 +0,0 @@ - - - - - - xboxlive_matchmaking_stop - - - - - - - - - - -

xboxlive_matchmaking_stop

-

Эта функция может быть использована для завершения сеанса подбора для данного пользователя.

-

-

Синтаксис:

-

xboxlive_matchmaking_stop(user_id);

- - - - - - - - - - - -
АргументТипОписание
user_idThe user ID pointer to use
-

-

Возвращается:

-

-

-

Пример:

-

if !xboxlive_user_is_signed_in(user_id[0])
- {
-     xboxlive_matchmaking_stop(user_id[0]);
- }

-

Приведенный выше код завершит сеанс подбора для данного пользователя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Saving_Data/Saving_Data.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Saving_Data/Saving_Data.htm index 2a65d60bd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Saving_Data/Saving_Data.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Saving_Data/Saving_Data.htm @@ -1,46 +0,0 @@ - - - - - - Сохранение данных - - - - - - - - - - -

Сохранение данных

-

Следующие функции связаны с сохранением данных с помощью экспорта UWP для Xbox One и использованием функций XBox Live.

-

Хотя данные сохранения, связанные с прогрессом игрока, всегда должны быть связаны с конкретным пользователем, вы можете сохранять общие данные в области "машинного хранилища", указав в качестве аргумента пользователя значение -1. Эта область зависит от названия, но не связана с конкретным пользователем.

-

ПРИМЕЧАНИЕ: Размер сохраненного файла не может превышать 16 мегабайт!

-

Следующие функции предназначены для работы с сохраненными данными Xbox Live:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Saving_Data/xboxlive_get_file_error.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Saving_Data/xboxlive_get_file_error.htm index 7d0e9f1e6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Saving_Data/xboxlive_get_file_error.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Saving_Data/xboxlive_get_file_error.htm @@ -1,84 +0,0 @@ - - - - - - xboxlive_get_file_error - - - - - - - - - - -

xboxlive_get_file_error

-

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

-

ПРИМЕЧАНИЕ: При использовании функций асинхронного сохранения/загрузки, карта async_load map будет иметь дополнительный ключ "error", который также будет содержать одну из констант (показано ниже).

-

-

Синтаксис:

-

xboxlive_get_file_error();

-

-

Возвращается:

-

Xbox File Error Constant

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Xbox File Error Constant
ПостояннаяОписание
xboxlive_fileerror_outoflocalstorageЕсли это происходит во время сохранения, это означает, что все доступное место для сохранения игры было использовано, и пользователь отклонил предложение (представленное ОС) освободить место. Игра должна подтвердить пользователю, что он намерен продолжить игру без сохранения. Если пользователь все еще хочет иметь возможность сохраниться, игра должна повторить операцию сохранения.
xboxlive_fileerror_quotaexceededВ этом случае игра должна уведомить пользователя, что он не может больше сохранять данные, пока не освободит место, а затем предложить ему способ сделать это.
xboxlive_fileerror_noerrorФункция сохранения или загрузки файлов выполнялась без проблем.
-

-

-

Пример:

-

buffer_save(buff, "SaveGame.bin");
- if (xboxlive_get_file_error() != xboxlive_fileerror_noerror)
- {
-     show_debug_message("Save failed. Error code = " + string(xboxlive_get_file_error()));
- }

-

Приведенный выше код проверяет, не произошла ли ошибка при сохранении, и если да, то код ошибки выводится на консоль.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Saving_Data/xboxlive_get_savedata_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Saving_Data/xboxlive_get_savedata_user.htm index b8474685b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Saving_Data/xboxlive_get_savedata_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Saving_Data/xboxlive_get_savedata_user.htm @@ -1,51 +0,0 @@ - - - - - - xboxlive_get_savedata_user - - - - - - - - - - -

xboxlive_get_savedata_user

-

Эта функция возвращает указатель идентификатора пользователя, связанный в данный момент с сохранением файла (или константу pointer_null, если в данный момент идентификатор пользователя не используется). См. xboxlive_set_savedata_user() для более подробной информации.

-

-

Синтаксис:

-

xboxlive_get_savedata_user();

-

-

Возвращается:

-

Xbox User ID or pointer_null

-

-

Пример:

-

if (xboxlive_get_savedata_user() != user_id[0])
- {
-     xboxlive_set_savedata_user(user_id[0]);
- }

-

Приведенный выше код проверяет, назначен ли пользователь в качестве цели сохранения, и если нет, то он назначается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Saving_Data/xboxlive_set_savedata_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Saving_Data/xboxlive_set_savedata_user.htm index c745b9a49..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Saving_Data/xboxlive_set_savedata_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Saving_Data/xboxlive_set_savedata_user.htm @@ -1,65 +0,0 @@ - - - - - - xboxlive_set_savedata_user - - - - - - - - - - -

xboxlive_set_savedata_user

-

Эта функция определяет, что будущие файловые операции, которые работают в области сохранения игры (т.е. все записи в файлы и чтения из файлов, которые не находятся в области связки), будут ассоциироваться с указанным указателем ID пользователя. Эта функция может вызываться так часто, как это необходимо для перенаправления данных сохранения соответствующему пользователю, или вы можете использовать константу pointer_null для сохранения в общую область хранения машины.

-

-

Синтаксис:

-

xboxlive_set_savedata_user(user_id);

- - - - - - - - - - - - - -
АргументТипОписание
user_idИдентификатор пользователя Xbox или указатель_nullThe user ID (a pointer) to set for saving, or pointer_null
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if (xboxlive_get_savedata_user() != user_id[0])
- {
-     xboxlive_set_savedata_user(user_id[0]);
- }

-

Приведенный выше код проверяет, назначен ли пользователь в качестве цели сохранения, и если нет, то он назначается.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/Stats_And_Leaderboards.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/Stats_And_Leaderboards.htm index bbb6b8214..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/Stats_And_Leaderboards.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/Stats_And_Leaderboards.htm @@ -1,68 +0,0 @@ - - - - - - Статистика и таблицы лидеров - - - - - - - - - - -

Статистика и таблицы лидеров

-

Xbox One Stats (достижения и таблицы лидеров) функционируют при использовании UWP и имеют некоторые специальные функции для работы с ними, хотя они также используют некоторые стандартные встроенные функции для таблиц лидеров. Система статистики Xbox Live 2017 упрощает всю процедуру создания достижений и таблиц лидеров, позволяя создавать и использовать различные системы из GameMaker. Основное отличие системы 2017 (Title-Managed) от предыдущих систем заключается в том, что вам больше не нужно определять все статистические данные, которые вы используете в игре, в Центре партнеров, и вам также не нужно привязывать разблокировку достижений к событию/правилу статистики (поскольку они разблокируются прямым вызовом функции).

-

ПРИМЕЧАНИЕ Хотя для этой системы не требуется файл манифеста, вы все равно можете установить некоторые статистики в XDP/Partner Center. Установленные там статистические данные будут считаться "featured stats ", что означает, что вы можете иметь глобальные таблицы лидеров, а статистические данные будут отображаться на странице приборной панели игры. Для получения дополнительной информации см. эту статью от Microsoft.

-

Перед вызовом любой из функций статистики, перечисленных ниже, вы должны убедиться, что пользователь вошел в систему (см. функции User, перечисленные выше), затем настроить систему статистики и добавить пользователя в нее с помощью этих функций:

- -

-

Следующие функции используются в системе 2017 (Title-Managed) Stats:

- -

-

Следующие функции используются в системе 2013 (Event-Based) Stats:

- -

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_achievements_set_progress.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_achievements_set_progress.htm index 87f8c1f63..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_achievements_set_progress.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_achievements_set_progress.htm @@ -1,73 +0,0 @@ - - - - - - xboxlive_achievements_set_progress - - - - - - - - - - -

xboxlive_achievements_set_progress

-

Эта функция может быть использована для обновления прогресса достижения. Вы передаете идентификатор пользователя, который возвращается, например, функцией xboxlive_get_user(), а затем строку достижения - (это идентификатор достижения, присвоенный в XDP/Windows Dev Center при его создании). Наконец, вы устанавливаете значение прогресса в диапазоне от 0 до 100. Обратите внимание, что система достижений будет отклонять обновления, которые ниже текущего значения прогресса. - значение.

-

-

Синтаксис:

-

xboxlive_achievements_set_progress(user_id, achievement, progress);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
user_idThe user ID of the user to set the achievement for
achievementThe achievement to set (a string)
progressThe progress value to set (from 0 to 100)
-

-

Возвращается:

-

-

-

Расширенный пример:

-

Ниже приведен расширенный пример использования этой функции. Для начала вы должны вызвать ее в каком-либо событии, например, в событии Room Start или Create:

-

xboxlive_stats_get_social_leaderboard(user_id, "GlobalTime", 20, 1, false, false);

-

Приведенный выше код будет вызван для получения списка всех позиций в глобальной таблице лидеров в игре и сгенерирует обратный вызов Social Asynchronous Event, с которым мы поступим следующим образом:

-

var _progress = (global.Level / global.LevelMax) * 100;
xboxlive_achievements_set_progress(user_id, "Game_Completed", _progress);

-

Приведенный выше код создает процентное значение на основе некоторых глобальных переменных, а затем использует его для установки прогресса достижения для достижения "Game_Completed".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_fire_event.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_fire_event.htm index ac1580e5a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_fire_event.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_fire_event.htm @@ -1,69 +0,0 @@ - - - - - - xboxlive_fire_event - - - - - - - - - - -

xboxlive_fire_event

-

Эта функция может быть использована для запуска события stat. Аргумент "имя_события" - это имя события, которое должно быть запущено, как определено в консоли XDP для вашей игры, а следующие дополнительные параметры также будут зависеть от того, что у вас настроено для stat. Функция вернет 0, если событие было отправлено (и должно быть получено/обработано сервером) или -1, если произошла ошибка (т.е. ваше событие не было настроено, т.к. в файле манифеста событий, включенном в проект, указано другое число).

-

-

Синтаксис:

-

xboxlive_fire_event(event_name, [stat_parameters...]);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
event_nameСтрокаThe name of the event to fire.
stat_parametersПеременнаяOPTIONAL Дополнительные параметры для добавления к событию.
-

-

Возвращается:

-

Real

-

-

Пример:

-

var _user = xboxlive_get_user(0);
- var _uid = xboxlive_user_id_for_user(_user);
- result = xboxlive_fire_event("PlayerSessionStart", _uid, global.guid_str, 0, 42, 42);

-

Приведенный выше код получает некоторую информацию о пользователе, затем запускает событие stat вместе с этими (и дополнительными) данными.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_get_stats_for_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_get_stats_for_user.htm index f245e74b1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_get_stats_for_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_get_stats_for_user.htm @@ -1,86 +0,0 @@ - - - - - - xboxlive_get_stats_for_user - - - - - - - - - - -

xboxlive_get_stats_for_user

-

Эта функция может быть использована для получения данных о конкретной статистике с серверов Xbox Live. Вы вводите идентификатор пользователя, возвращаемый функцией xboxlive_get_user()затем ID конфигурации игрового сервиса (как показано на консоли XDP), и, наконец, требуемые статистические данные. Вы можете запросить максимум 14 статистических данных, но это не гарантирует, что вы получите 14 результатов, так как существует ограничение на общую длину запроса, и поэтому максимальное количество статистических данных зависит от длины названий самих статистических данных.

-

Функция вернет 0, если запрос stat был отправлен, или -1, если произошла ошибка, а обратный вызов вызовет системное асинхронное событие. Это событие будет иметь специальную карту DS async_load которая затем должна быть разобрана на предмет следующего ключа:

-
    -
  • "event_type" - должна содержать строку "stat_result", если событие было вызвано этой функцией
  • -
-

Если тип события относится к этой функции, то также будет присутствовать следующий дополнительный ключ:

-
    -
  • "user" - содержит идентификатор пользователя для запрашиваемой статистики.
  • -
-

Также может быть дополнительный набор пар ключ-значение, где ключ - это имя запрашиваемого стата, а значение - значение этого стата на сервере. Обратите внимание, что если стат никогда не создавался для данного пользователя (потому что он не вызывал событий, которые его устанавливают), значение для этого стата может быть не возвращено (ds_map_exists() можно использовать для проверки наличия статов в карте async_load ).

-

Если запрос не выполняется из-за того, что длина запроса слишком велика, в консольном выводе должно появиться сообщение с кодом ошибки:

-

xboxlive_get_stats_for_user - exception occurred getting results - 0x80190190

-

Когда это происходит, в карте async event DS должен быть ключ "succeeded" со значением "0", и в этом случае вы должны попытаться получить меньше статистических данных за один вызов.

-

-

Синтаксис:

-

xboxlive_get_stats_for_user(user_id, serviceconfig_id, statname1, …);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
user_idИдентификатор пользователя XboxThe user ID pointer.
serviceconfig_idСтрокаThe service config file ID
statname1 (2, 3, etc...)СтруныThe stat names to retrieve the information for.
-

-

Возвращается:

-

Real

-

-

Пример:

-

var _uid = xboxlive_get_user(0);
- var _configid = "00000000-0000-0000-0000-000000000000";
- xboxlive_get_stats_for_user(xbuser, _configid, "GameProgress", "CurrentMode");

-

Приведенный выше код получает идентификатор пользователя и затем использует его для запроса информации о конкретных статистических данных этого пользователя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_read_player_leaderboard.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_read_player_leaderboard.htm index 9cf144ea7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_read_player_leaderboard.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_read_player_leaderboard.htm @@ -1,126 +0,0 @@ - - - - - - xboxlive_read_player_leaderboard - - - - - - - - - - -

xboxlive_read_player_leaderboard

-

Функция возвращает информацию о таблице лидеров для заданного имени пользователя. Таблица лидеров должна быть создана ранее на приборной панели XDP для вашей игры, а вызов функции вызовет обратный вызов Social Asynchronous Event, который содержит async_load карту, заполненную соответствующими парами ключ/значение. Ключ "id" этой карты DS используется для идентификации правильного обратного вызова (для любого асинхронного события может быть более одной запускающей функции), и IT будет сопряжен с константой achievement_leaderboard_info, а также рядом других пар ключ/значение. Точное содержимое карты показано ниже:

-
    -
  • "id" - Для этой функции это должно быть achievement_leaderboard_info
  • -
  • "leaderboardid" - Уникальный ID для доски лидеров, определенный на приборной панели провайдера.
  • -
  • "numentries" - Количество записей в таблице лидеров, которые вы получили.
  • -
  • "PlayerN" - Имя игрока, где "N" - целочисленное значение, соответствующее его позиции в списке участников таблицы лидеров.
  • -
  • "PlayeridN" - Уникальный идентификатор пользователя игрока, "N".
  • -
  • "RankN" - Ранг игрока "N" в таблице лидеров.
  • -
  • "ScoreN" - Счет игрока "N".
  • -
-


- Функция требует, чтобы вы указали одну из следующих констант для установки свойств фильтра:

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
xboxlive_achievement_filter_all_playersПолучите все баллы.
xboxlive_achievement_filter_friends_onlyПолучить только оценки друзей в порядке возрастания.
xboxlive_achievement_filter_favorites_onlyПолучение только избранных оценок в порядке возрастания
xboxlive_achievement_filter_friends_altПолучить оценки только друзей в порядке убывания.
xboxlive_achievement_filter_favorites_altПолучение только избранных оценок в порядке убывания.
-

-

-

Синтаксис:

-

xboxlive_read_player_leaderboard(leaderboard_name, user_name, num_items, friend_filter);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
leaderboard_nameСтрокаThe name of the leaderboard to read, as set up on XDP.
user_nameИдентификатор пользователя XboxThe ID of the user to read from.
num_itemsРеальноThe number of items to retrieve.
friend_filterПостоянный фильтр достижений Xbox LiveOne of the filter constants (see the description, above).
-

-

Возвращается:

-

Real

-

-

Пример:

-

var _user = xboxlive_user_for_pad(0);
- var _uid = xboxlive_user_id_for_user(_user);
- xboxlive_read_player_leaderboard("MyLeaderboard", _uid, 10, achievement_filter_all_players);

-

Приведенный выше код получает идентификатор пользователя и затем использует его для запроса всех данных игрока для первых 10 мест заданной таблицы лидеров.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_add_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_add_user.htm index ef4cfad02..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_add_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_add_user.htm @@ -1,74 +0,0 @@ - - - - - - xboxlive_stats_add_user - - - - - - - - - - -

xboxlive_stats_add_user

-

Эта функция может быть использована для добавления заданного указателя ID пользователя в менеджер статистики. Это должно быть сделано до использования любой другой функции статистики для автоматической синхронизации игры с сервером XBox Live и получения последних значений. Вы указываете ID пользователя, который возвращается (например) функцией xboxlive_get_user(), и функция вернет -1, если произошла ошибка или если ID пользователя недействителен, или любое другое значение, если функция была вызвана успешно.

-

Функция создаст обратный вызов, который вызовет системное асинхронное событие. Это событие будет иметь специальную карту DS async_load которая затем должна быть разобрана на следующие ключи:

-
    -
  • "id" - Будет поддерживать постоянство achievement_stat_event
  • -
  • "eventname" - Будет содержать строку "LocalUserAdded".
  • -
  • "userid" - Идентификатор пользователя, связанный с запросом
  • -
  • "error" - 0 в случае успеха, другое значение, если произошла ошибка
  • -
  • "errormessage" - Строка с сообщением об ошибке, если таковое имеется
  • -
-

-

Синтаксис:

-

xboxlive_stats_add_user(user_id);

- - - - - - - - - - - -
АргументТипОписание
user_idThe user ID (a pointer) to add
-

-

Возвращается:

-

-

-

Пример:

-

for(var i = 0; i < xboxlive_get_user_count(); ++i;)
- {
-     user_id[i] = xboxlive_get_user(i);
-     xboxlive_stats_add_user(user_id[i]);
- }

-

Приведенный выше код получит количество доступных учетных записей пользователей, затем пройдется по ним и присвоит идентификатор учетной записи массиву, а также зарегистрирует пользователя в менеджере статистики.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_delete_stat.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_delete_stat.htm index 503961516..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_delete_stat.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_delete_stat.htm @@ -1,69 +0,0 @@ - - - - - - xboxlive_stats_delete_stat - - - - - - - - - - -

xboxlive_stats_delete_stat

-

Эта функция может быть использована для удаления статистики из менеджера статистики для заданного ID пользователя. Вы передаете идентификатор пользователя, возвращенный (например) функцией xboxlive_get_user(), затем строку stat для удаления. Это очистит значение stat и удалит его из менеджера stat, то есть оно больше не будет возвращено функциями xboxlive_stats_get_stat_names() или xboxlive_stats_get_stat().

-

Функция вернет -1, если произошла ошибка или идентификатор пользователя недействителен, или любое другое значение, если функция была вызвана успешно.

-

-

Синтаксис:

-

xboxlive_stats_delete_stat(user_id, stat);

- - - - - - - - - - - - - - - -
АргументТипОписание
user_idThe user ID pointer to delete the stat of
statThe statistic to delete (a string)
-

-

Возвращается:

-

-

-

Пример:

-

for(var i = 0; i < xboxlive_get_user_count(); i++;)
- {
-     user_id[i] = xboxlive_get_user(i);
-     xboxlive_stats_delete_stat(user_id[i], "HighScore");
- }

-

Приведенный выше код перебирает всех подключенных пользователей и удаляет указанную статистику из менеджера статистики для каждого из них.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_flush_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_flush_user.htm index 6a4631049..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_flush_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_flush_user.htm @@ -1,82 +0,0 @@ - - - - - - xboxlive_stats_flush_user - - - - - - - - - - -

xboxlive_stats_flush_user

-

Эта функция может быть использована для промывки данных статистики для данного пользователя из менеджера статистики на живой сервер, гарантируя, что сервер имеет актуальные значения. Согласно документации XBox, разработчики должны быть осторожны и не вызывать эту функцию слишком часто, так как XBox ограничит скорость запросов, а XBox OS в любом случае будет автоматически очищать статистику примерно каждые 5 минут.

-

ПРИМЕЧАНИЕ: Удаление пользователя может привести к ошибке, если статистика, установленная для пользователя, недействительна (например, имена статистики содержат неалфавитные цифровые символы).

-

Чтобы использовать функцию, введите идентификатор пользователя, возвращаемый (например) функцией xboxlive_get_user(), и значение proprity (которое будет равно 1 для высокого приоритета и 0 для низкого). Функция вернет -1, если произошла ошибка или идентификатор пользователя недействителен, или любое другое значение, если функция была успешно вызвана. Функция также генерирует обратный вызов, который вызовет системное асинхронное событие. Это событие будет иметь специальную карту DS async_load, которая затем должна быть разобрана на следующие ключи:

-
    -
  • "id" - Будет поддерживать постоянство achievement_stat_event
  • -
  • "eventname" - Будет содержать строку "StatisticUpdateComplete".
  • -
  • "userid" - Идентификатор пользователя, связанный с запросом
  • -
  • "error" - 0 в случае успеха, другое значение, если произошла ошибка
  • -
  • "errormessage" - Строка с сообщением об ошибке, если таковое имеется
  • -
-

Обратите внимание, что статистика будет автоматически удалена, когда вы удалите пользователя из менеджера статистики. См. xboxlive_stats_remove_user() для получения дополнительной информации.

-

-

Синтаксис:

-

xboxlive_stats_flush_user(user_id, priority);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
user_idИдентификатор пользователя XboxThe user ID (a pointer) to use
priorityРеальноThe prority value (0 or 1)
-

-

Возвращается:

-

Real

-

-

Пример:

-

for(var i = 0; i < array_length(user_id); ++i;)
- {
-     xboxlive_stats_flush_user(user_id[i], 0);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_get_leaderboard.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_get_leaderboard.htm index 38e66afef..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_get_leaderboard.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_get_leaderboard.htm @@ -1,128 +0,0 @@ - - - - - - xboxlive_stats_get_leaderboard - - - - - - - - - - -

xboxlive_stats_get_leaderboard

-

Эта функция может быть использована для получения глобальной таблицы рейтингов для заданной статистики. Вы предоставляете идентификатор пользователя (который возвращается, например, функцией xboxlive_get_user()), строку статистики (определенную при регистрации в качестве "Featured Stat"), а затем указываете ряд подробностей о том, какую информацию о таблице лидеров вы хотите получить. Обратите внимание, что глобальную таблицу лидеров можно получить только для int или реальных статистик, но не для строковых статистик.

-

ВАЖНО! Статы, используемые в глобальных таблицах лидеров, должны быть зарегистрированы как "Featured Stats" в XDP/Windows Dev Center, иначе будет выдана ошибка. Если вам нужны локальные (социальные) таблицы лидеров, то, пожалуйста, обратитесь к функции xboxlive_stats_get_social_leaderboard().

-

Функция создаст обратный вызов, который вызовет асинхронное событие Social. Это событие будет иметь встроенную карту DS async_load которая затем должна быть проанализирована на предмет следующих ключей:

-
    -
  • "id" - Будет поддерживать постоянство achievement_stat_event
  • -
  • "event" - Будет содержать строку "GetLeaderboardComplete".
  • -
  • "userid" - Идентификатор пользователя, связанный с запросом
  • -
  • "error" - 0 в случае успеха, другое значение, если произошла ошибка. Следующие две ошибки являются наиболее распространенными: -
      -
    • 2145844844: Не удается найти запрашиваемую таблицу лидеров (статистика не зарегистрирована в качестве основной)
    • -
    • -2145844848: Неправильный запрос (стат не является допустимым типом таблицы лидеров, должна быть строка)
    • -
    -
  • -
  • "errormessage" - Строка с сообщением об ошибке, если таковое имеется
  • -
  • "display_name" - Уникальный ID для таблицы лидеров, определенный на приборной панели провайдера.
  • -
  • "numentries" - Количество записей в таблице лидеров, которые вы получили.
  • -
-

Остальная часть карты DS также будет содержать данные таблицы лидеров со следующим форматом (где "N" - позиция в таблице лидеров, от 0 до "numentries"):

-
    -
  • "PlayerN" - Имя игрока, где "N" - целочисленное значение, соответствующее его позиции в списке лидеров.
  • -
  • "PlayeridN" - Уникальный идентификатор пользователя игрока, "N".
  • -
  • "RankN" - Ранг игрока "N" в таблице лидеров.
  • -
  • "ScoreN" - счет игрока "N".
  • -
-

-

Синтаксис:

-

xboxlive_stats_get_leaderboard(user_id, stat, num_entries, start_rank, start_at_user, ascending);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
user_idИдентификатор пользователя XboxThe user ID of the user to get the leaderboard for
statСтрокаThe stat (as a string) to create the global leaderboard from
num_entriesРеальноThe number of entries from the global leaderboard to retrieve
start_rankРеальноThe rank in the leaderboard to start from (use 0 if the "start_at_user" argument is set to true)
start_at_userБулевоSet to true начинать с ранга идентификатора пользователя, false в противном случае (устанавливается на false, если аргумент "start_rank" не равен 0)
ascendingБулевоSet to true для возрастающего порядка и false для убывающего порядка.
-

-

Возвращается:

-

N/A

-

-

Расширенный пример:

-

Ниже приведен расширенный пример использования этой функции. Для начала вы должны вызвать ее в каком-либо событии, например, в событии Room Start или Create:

-

xboxlive_stats_get_leaderboard(user_id, "GlobalTime", 20, 1, false, true);

-

Приведенный выше код будет вызван для получения списка всех позиций в социальной таблице лидеров в игре и сгенерирует обратный вызов Social Asynchronous Event, с которым мы поступим следующим образом:

-

if (async_load[? "id"] == achievement_stat_event)
- {
-     if (async_load[? "event"] == "GetLeaderboardComplete")
-     {
-         global.numentries = async_load[? "numentries"];
-         for(var i = 0; i < numentries; i++)
-         {
-             global.playername[i] = async_load[? "Player" + string(i)];
-             global.playerid[i] = async_load[? "Playerid" + string(i)];
-             global.playerrank[i] = async_load[? "Rank" + string(i)];
-             global.playerscore[i] = async_load[? "Score" + string(i)];
-         }
-     }
- }

-

Приведенный выше код проверяет возвращенную карту DS в Social Asynchronous Event, и если ее "id" совпадает с проверяемой константой, он затем проверяет, было ли событие вызвано возвращенными данными таблицы лидеров, после чего перебирает карту и сохраняет все различные значения в нескольких глобальных массивах.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_get_social_leaderboard.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_get_social_leaderboard.htm index 44f679f41..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_get_social_leaderboard.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_get_social_leaderboard.htm @@ -1,127 +0,0 @@ - - - - - - xboxlive_stats_get_social_leaderboard - - - - - - - - - - -

xboxlive_stats_get_social_leaderboard

-

Эта функция может быть использована для получения социальной таблицы рейтингов для заданной статистики. Вы предоставляете идентификатор пользователя (который возвращается, например, функцией xboxlive_get_user()), строку статистики (как определено при ее создании с помощью функций xboxlive_stats_set_stat_*), а затем указываете ряд подробностей о том, какую информацию о таблице лидеров вы хотите получить. Обратите внимание, что социальную таблицу лидеров можно получить только для int или реальной статистики, но не для строковой статистики, и что если вы отметите аргумент "favourites_only" как true, то результаты будут содержать данные только для тех друзей, которые отмечены пользователем как "любимые".

-

ВАЖНО! Статы, используемые в социальных таблицах лидеров, не нужно регистрировать как "Featured Stats" в XDP/Windows Dev Center...

-

Функция создаст обратный вызов, который вызовет социальное асинхронное событие. Это событие будет иметь специальную карту DS async_load которая затем должна быть проанализирована на предмет следующих ключей:

-
    -
  • "id" - Будет поддерживать постоянство achievement_stat_event
  • -
  • "event" - Будет содержать строку "GetLeaderboardComplete".
  • -
  • "userid" - Идентификатор пользователя, связанный с запросом
  • -
  • "error" - 0 в случае успеха, другое значение, если произошла ошибка. Ниже перечислены наиболее часто возвращаемые ошибки: -
      -
    • -2145844848: Неправильный запрос (статистика не является допустимым типом таблицы лидеров, т.е. строкой).
    • -
    -
  • -
  • "errormessage" - Строка с сообщением об ошибке, если таковое имеется
  • -
  • "display_name" - Уникальный ID для таблицы лидеров, определенный на приборной панели провайдера.
  • -
  • "numentries" - Количество записей в таблице лидеров, которые вы получили.
  • -
-

Остальная часть карты DS также будет содержать данные таблицы лидеров со следующим форматом (где "N" - позиция в таблице лидеров, от 0 до "numentries"):

-
    -
  • "PlayerN" - Имя игрока, где "N" - целочисленное значение, соответствующее его позиции в списке лидеров.
  • -
  • "PlayeridN" - Уникальный идентификатор пользователя игрока, "N".
  • -
  • "RankN" - Ранг игрока "N" в таблице лидеров.
  • -
  • "ScoreN" - счет игрока "N".
  • -
-

-

Синтаксис:

-

xboxlive_stats_get_social_leaderboard(user_id, stat, num_entries, start_rank, start_at_user, favourites_only);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
user_idИдентификатор пользователя XboxThe user ID of the user to get the leaderboard for
statСтрокаThe stat (as string) to create the global leaderboard from
num_entriesРеальноThe number of entries from the global leaderboard to retrieve
start_rankРеальноThe rank in the leaderboard to start from (use 0 if the "start_at_user" argument is set to true)
start_at_userБулевоSet to true начинать с ранга идентификатора пользователя, false в противном случае (устанавливается на false, если аргумент "start_rank" не равен 0)
favourites_onlyБулевоSet to true показывать только тех друзей, которые отмечены как "любимые" или false иначе
-

-

Возвращается:

-

N/A

-

-

Расширенный пример:

-

Ниже приведен расширенный пример использования этой функции. Для начала вы должны вызвать ее в каком-либо событии, например, в событии Room Start или Create:

-

xboxlive_stats_get_social_leaderboard(user_id, "GlobalTime", 20, 1, false, false);

-

Приведенный выше код будет вызван для получения списка всех позиций в глобальной таблице лидеров в игре и сгенерирует обратный вызов Social Asynchronous Event, с которым мы поступим следующим образом:

-

if (async_load[? "id"] == achievement_stat_event)
- {
-     if (async_load[? "event"] == "GetLeaderboardComplete")
-     {
-         global.numentries = async_load[? "numentries"];
-         for(var i = 0; i < numentries; i++)
-         {
-             global.playername[i] = async_load[? "Player" + string(i)];
-             global.playerid[i] = async_load[? "Playerid" + string(i)];
-             global.playerrank[i] = async_load[? "Rank" + string(i)];
-             global.playerscore[i] = async_load[? "Score" + string(i]);
-         }
-     }
- }

-

Приведенный выше код проверяет возвращенную карту DS в Social Asynchronous Event, и если ее "id" совпадает с проверяемой константой, он затем проверяет, было ли событие вызвано возвращенными данными таблицы лидеров, после чего перебирает карту и сохраняет все различные значения в нескольких глобальных массивах.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_get_stat.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_get_stat.htm index 7221572a4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_get_stat.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_get_stat.htm @@ -1,71 +0,0 @@ - - - - - - xboxlive_stats_get_stat - - - - - - - - - - -

xboxlive_stats_get_stat

-

Эта функция может быть использована для получения одного значения статистики из менеджера статистики для данного пользователя. Вы вводите идентификатор пользователя, возвращаемый (например) функцией xboxlive_get_user(), а затем строку stat, определенную при ее создании с помощью одной из функций xboxlive_stats_set_stat_*. Возвращаемое значение может быть либо строкой, либо вещественным числом (в зависимости от проверяемого stat), либо константой GML undefined , если stat не существует или произошла ошибка.

-

-

Синтаксис:

-

xboxlive_stats_get_stat(user_id, stat);

- - - - - - - - - - - - - - - -
АргументТипОписание
user_idThe user ID pointer to get the stat names of
statThe statistic to set (a string)
-

-

Возвращается:

-

Real, String or undefined

-

-

Пример:

-

if (game_over == true)
- {
-     if (xboxlive_stats_get_stat(p_user_id, "PercentDone") < 100)
-     {
-         var _val = (global.LevelsFinished / global.LevelsTotal) * 100;
-         xboxlive_stats_set_stat_real(p_user_id, "PercentDone", _val);
-     }
- }

-

Приведенный выше код проверяет переменную, и если это true, то проверяется значение статистики "PercentDone". Если это значение меньше 100, то генерируется значение и статистика устанавливается на это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_get_stat_names.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_get_stat_names.htm index 2bb874184..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_get_stat_names.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_get_stat_names.htm @@ -1,64 +0,0 @@ - - - - - - xboxlive_stats_get_stat_names - - - - - - - - - - -

xboxlive_stats_get_stat_names

-

Эта функция может быть использована для получения всех определенных статистик из менеджера статистики для данного пользователя. Вы вводите идентификатор пользователя, который возвращается (например) функцией xboxlive_get_user(), и функция вернет массив строк, содержащих статистику для пользователя. Если произошла ошибка или у пользователя нет статистики, массив будет возвращен, но количество элементов будет равно 0.

-

-

Синтаксис:

-

xboxlive_stats_get_stat_names(user_id);

- - - - - - - - - - - -
АргументТипОписание
user_idThe user ID pointer to get the stat names of
-

-

Возвращается:

-

-

-

Пример:

-

var _stat_str = xboxlive_stats_get_stat_names(user_id);
- for (var i = 0; i < array_length(_stat_str); ++i)
- {
-     xboxlive_stats_delete_stat(user_id, _stat_str[i]);
- }

-

Приведенный выше код извлекает все определенные статистики для указателя ID пользователя, хранящегося в данной переменной, а затем проходит по массиву и удаляет указанную статистику из менеджера статистик.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_remove_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_remove_user.htm index f42b16e97..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_remove_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_remove_user.htm @@ -1,76 +0,0 @@ - - - - - - xboxlive_stats_remove_user - - - - - - - - - - -

xboxlive_stats_remove_user

-

Эта функция может быть использована для удаления (снятия с регистрации) данного пользователя из менеджера статистики, выполняя сброс данных статистики на живой сервер. Согласно документации XBox, игра не обязана удалять пользователя из менеджера статистики, так как XBox OS все равно периодически очищает статистику. Вы передаете идентификатор пользователя, который возвращается (например) функцией xboxlive_get_user(), и функция вернет -1, если произошла ошибка или если ID пользователя недействителен, или любое другое значение, если функция была вызвана успешно.

-

ПРИМЕЧАНИЕ: Удаление пользователя может привести к ошибке, если статистика, установленная для пользователя, недействительна (например, имена статистики содержат неалфавитные цифровые символы).

-

Функция создаст обратный вызов, который вызовет системное асинхронное событие. Это событие будет иметь специальную карту DS async_load которая затем должна быть разобрана на следующие ключи:

-
    -
  • "id" - Будет поддерживать постоянство achievement_stat_event
  • -
  • "eventname" - Будет содержать строку "LocalUserRemoved".
  • -
  • "userid" - Идентификатор пользователя, связанный с запросом
  • -
  • "error" - 0 в случае успеха, другое значение, если произошла ошибка
  • -
  • "errormessage" - Строка с сообщением об ошибке, если таковое имеется
  • -
-

Обратите внимание, что если вы хотите сбросить данные статистики на живой сервер в любое время без удаления пользователя, вы можете использовать функцию xboxlive_stats_flush_user().

-

-

Синтаксис:

-

xboxlive_stats_remove_user(user_id);

- - - - - - - - - - - -
АргументТипОписание
user_idThe user ID (a pointer) to remove
-

-

Возвращается:

-

-

-

Пример:

-

for(var i = 0; i < xboxlive_get_user_count(); ++i;)
- {
-     user_id[i] = xboxlive_get_user(i);
-     xboxlive_stats_remove_user(user_id[i]);
- }

-

Приведенный выше код просматривает сохраненные идентификаторы учетных записей пользователей и удаляет (снимает с регистрации) каждого пользователя из менеджера статистики.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_set_stat_int.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_set_stat_int.htm index 5fc711e8b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_set_stat_int.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_set_stat_int.htm @@ -1,72 +0,0 @@ - - - - - - xboxlive_stats_set_stat_int - - - - - - - - - - -

xboxlive_stats_set_stat_int

-

Эта функция может быть использована для установки значения stat для заданного ID пользователя. Вы вводите идентификатор пользователя, возвращаемый (например) функцией xboxlive_get_user(), затем строку stat - для установки(если строка stat еще не существует, то будет создан новый stat и установлен на заданное значение) и значение (целое число) для установки stat. Обратите внимание, что имя stat должно быть только буквенно-цифровым, без символов и пробелов.

-

При установке значения стата любое предыдущее значение будет отменено, поэтому вы сами должны определить, следует ли обновить значение стата или нет (т.е. проверить, что высокий результат действительно самый высокий), сравнив текущее значение стата с новым, прежде чем устанавливать его. - новым, прежде чем установить его.

-

Функция вернет -1, если произошла ошибка или идентификатор пользователя недействителен, или любое другое значение, если функция была вызвана успешно.

-

-

Синтаксис:

-

xboxlive_stats_set_stat_int(user_id, stat, value);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
user_idThe user ID pointer to set the stat for
statThe statistic to set (a string)
valueThe value to set the stat to (an integer)
-

-

Возвращается:

-

-

-

Пример:

-

var _val = xboxlive_stats_get_stat(p_user_id, "GamesPlayed");
xboxlive_stats_set_stat_int(p_user_id, "GamesPlayed", ++_val);

-

Приведенный выше код извлекает значение для статистики "GamesPlayed", затем устанавливает эту же статистику в это значение плюс 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_set_stat_real.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_set_stat_real.htm index e0b78c8c5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_set_stat_real.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_set_stat_real.htm @@ -1,77 +0,0 @@ - - - - - - xboxlive_stats_set_stat_real - - - - - - - - - - -

xboxlive_stats_set_stat_real

-

Эта функция может быть использована для установки значения stat для заданного ID пользователя. Вы вводите ID пользователя, возвращенный (например) функцией xboxlive_get_user(), затем строку stat для установки(если строка stat еще не существует, то будет создана новая stat и установлена на заданное значение) и значение (вещественное) для установки stat. Обратите внимание, что имя stat должно быть только буквенно-цифровым, без символов и пробелов.

-

При установке значения стата любое предыдущее значение будет отменено, поэтому вы сами должны определить, нужно ли обновлять значение стата или нет (т.е. проверить, что высокий результат действительно является самым высоким), сравнив текущее значение стата с новым, прежде чем устанавливать его.

-

Функция вернет -1, если произошла ошибка или идентификатор пользователя недействителен, или любое другое значение, если функция была вызвана успешно.

-

-

Синтаксис:

-

xboxlive_stats_set_stat_real(user_id, stat, value);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
user_idThe user ID pointer to set the stat for
statThe statistic to set (a string)
valueThe value to set the stat to (a real)
-

-

Возвращается:

-

-

-

Пример:

-

if (game_over == true)
- {
-     if (xboxlive_stats_get_stat(p_user_id, "PercentDone") < 100)
-     {
-         var _val = (global.LevelsFinished / global.LevelsTotal) * 100;
-         xboxlive_stats_set_stat_real(p_user_id, "PercentDone", _val);
-     }
- }

-

Приведенный выше код проверяет переменную, и если это true, то проверяется значение статистики "PercentDone". Если это значение меньше 100, то генерируется значение и статистика устанавливается на это значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_set_stat_string.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_set_stat_string.htm index 8986d4fca..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_set_stat_string.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_set_stat_string.htm @@ -1,74 +0,0 @@ - - - - - - xboxlive_stats_set_stat_string - - - - - - - - - - -

xboxlive_stats_set_stat_string

-

Эта функция может быть использована для установки stat в строку для заданного ID пользователя. Вы вводите идентификатор пользователя, возвращаемый (например) функцией xboxlive_get_user(), затем строку stat для установки(если строка stat еще не существует, то будет создана новая stat и установлена в заданное значение) и затем строку, в которую нужно установить stat. Обратите внимание, что имя stat должно быть только буквенно-цифровым, без символов и пробелов, а задаваемое значение строки может содержать пробелы и специальные символы.

-

При установке строки статистики любая предыдущая строка будет отменена, поэтому вы сами должны определить, следует ли обновить строку статистики или нет, сравнив текущую строку статистики с новой перед ее установкой.

-

Функция вернет -1, если произошла ошибка или идентификатор пользователя недействителен, или любое другое значение, если функция была вызвана успешно.

-

-

Синтаксис:

-

xboxlive_stats_set_stat_string(user_id, stat, value);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
user_idИдентификатор пользователя XboxThe user ID pointer to set the stat for
statСтрокаThe statistic to set (a string)
valueСтрокаThe value to set the stat to (a string)
-

-

Возвращается:

-

Real

-

-

Пример:

-

xboxlive_stats_set_stat_string(p_user_id, "LevelName", global.LevelName);

-

Приведенный выше код устанавливает статистику "LevelName" в строку, хранящуюся в данной глобальной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_setup.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_setup.htm index 9578af4e4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_setup.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Stats_And_Leaderboards/xboxlive_stats_setup.htm @@ -1,74 +0,0 @@ - - - - - - xboxlive_stats_setup - - - - - - - - - - -

xboxlive_stats_setup

-

Эта функция должна быть вызвана до того, как вы сможете использовать любые другие функции Xbox Live stat, и просто инициализирует необходимые библиотеки в системе. Аргумент "user_id" - это необработанный ID пользователя, возвращаемый функцией xboxlive_get_user()а "service_config" и "title_id" - уникальный ID вашей игры в Xbox Live Dev Center.

-

Эта функция используется только для статистики, основанной на событиях (2013).

-

-

Синтаксис:

-

xboxlive_stats_setup(user_id, service_config_id, title_id);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
user_idИдентификатор пользователя XboxThe ID pointer of the user to check.
service_config_idСтрокаThis is the config_id string for the game.
title_idСтрокаThe unique ID for your game on the Xbox Dev Center.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var user = xboxlive_get_user(0);
- xboxlive_stats_setup(user, "4d61a1aa-61ac-4541-badd-31f91244fea6", $1244FEA6);

-

Приведенный выше код инициализирует систему статистики для заданного идентификатора пользователя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/UWP_And_XBox_Live.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/UWP_And_XBox_Live.htm index 7fd75f8a6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/UWP_And_XBox_Live.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/UWP_And_XBox_Live.htm @@ -1,60 +0,0 @@ - - - - - - UWP и Xbox Live - - - - - - - - - - -

UWP и Xbox Live

-

В этом разделе описаны функции, специально предназначенные для использования при работе с целевой платформой UWP. Начальный набор функций предназначен для управления общим поведением игры при создании UWP-приложения:

- -

-

UWP также позволяет создавать игры для платформы XBox One с использованием XBox Live API с помощью следующих функций. Эти функции требуют, чтобы вы отметили опцию Enable XBox Live в опциях игры UWP. Некоторые из этих функций требуют, чтобы пользователь был зарегистрирован в XBox Live, что GameMaker попытается сделать автоматически при запуске проекта. Такая "тихая" регистрация создаст системное асинхронное событие, которое можно проверить, чтобы убедиться в успехе или нет, прежде чем продолжить работу. Обратите внимание, что в отличие от экспорта для Xbox One Console, экспорт UWP для XBox Live позволяет войти в игру только одному пользователю одновременно.

-

ВАЖНО! Цель UWP имеет минимальную поддержку XBox Live только при настройке в рамках программы Creator Program, которая ограничена некоторыми базовыми функциями пользователя и учетной записи (см. здесь для получения дополнительной информации о настройке). Чтобы иметь возможность использовать все перечисленные здесь функции, вам необходимо иметь учетную запись ID@XBox.

-

Вы можете найти все различные функции XBox Live для использования с целью экспорта UWP в разделах, перечисленных ниже:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/Users_And_Accounts.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/Users_And_Accounts.htm index 097dbdc76..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/Users_And_Accounts.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/Users_And_Accounts.htm @@ -1,70 +0,0 @@ - - - - - - Пользователи и учетные записи - - - - - - - - - - -

Пользователи и учетные записи

-

Этот раздел предназначен для пользователей платформ UWP или Xbox One и описывает функции XBox Live, доступные для работы с пользователями и учетными записями пользователей.

-

Xbox One позволяет нескольким пользователям одновременно входить в консоль. Каждый пользователь имеет определенный контроллер, связанный с ним, и все данные сохраненных игр также зависят от конкретного пользователя. Чтобы максимально использовать эту систему, в GameMaker реализован ряд функций XBox One, связанных с ассоциацией между контроллерами и пользователями, позволяющих запрашивать информацию о пользователе, а также управлять обработкой сохраненных данных для каждого пользователя. Дополнительную информацию об этой системе можно найти в официальном документе на сайте разработчиков Microsoft.

-

ПРИМЕЧАНИЕ: Обратите внимание, что ID пользователя уникален для каждого человека и сохраняется на разных консолях, поэтому если один и тот же пользователь входит в систему на двух разных устройствах, его ID будет одинаковым.

-

Следующие функции можно использовать с учетными записями XBox Live как на сайте XBox One, так и при обычном экспорте UWP (обратите внимание, что это минимальная функциональность, разрешенная для UWP в рамках программы Creators Program, как указано в этой статье службы технической поддержки):

- -

-

Следующие функции действительны только при нацеливании на XBox One с помощью UWP с действующей учетной записью ID@XBox:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_agegroup_for_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_agegroup_for_user.htm index b9f9c9395..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_agegroup_for_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_agegroup_for_user.htm @@ -1,104 +0,0 @@ - - - - - - xboxlive_agegroup_for_user - - - - - - - - - - -

xboxlive_agegroup_for_user

-

Эта функция возвращает одну из четырех констант (показанных ниже), указывающих на возрастной диапазон, присвоенный указанному указателю идентификатора пользователя.

-

-

Синтаксис:

-

xboxlive_agegroup_for_user(user_id);

- - - - - - - - - - - - - -
АргументТипОписание
user_idИдентификатор пользователя XboxThe user ID (a pointer) to check
-

-

-

Возвращается:

-

Xbox Age Group Constant

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Xbox Возрастная группа Константа
ПостояннаяОписание
xboxlive_agegroup_unknownВозрастная группа пользователя неизвестна
xboxlive_agegroup_childВозрастная группа пользователей - от 8 до 12 лет (включительно)
xboxlive_agegroup_teenВозрастная группа пользователей - от 13 до 17 лет (включительно, и от 13 до 19 лет в Южной Корее)
xboxlive_agegroup_adultВозрастная группа пользователей - 18 лет и старше (или 20 лет и старше в Южной Корее
-

-

-

Пример:

-

var _age = xboxlive_agegroup_for_user(xboxlive_get_activating_user());
- if (_age != xboxlive_agegroup_adult)
- {
-     global.ContentControl = true;
- }
- else global.ContentControl = false;

-

Приведенный выше код проверяет возрастную группу активирующего пользователя и устанавливает глобальную переменную в значение true или false в зависимости от возвращенной константы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_gamedisplayname_for_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_gamedisplayname_for_user.htm index 883d91ee5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_gamedisplayname_for_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_gamedisplayname_for_user.htm @@ -1,64 +0,0 @@ - - - - - - xboxlive_gamedisplayname_for_user - - - - - - - - - - -

xboxlive_gamedisplayname_for_user

-

С помощью этой функции вы можете получить отображаемое имя - в виде строки - из указателя ID пользователя. Обратите внимание, что если пользователь локальный, то возвращаемое значение будет просто строкой его отображаемого имени, но если это удаленный пользователь, то строка будет его геймертагом, который можно использовать, например, для отключения/включения звука в голосовом чате.

-

-

Синтаксис:

-

xboxlive_gamedisplayname_for_user(user_id);

- - - - - - - - - - - -
АргументТипОписание
user_idThe ID pointer of the user to check.
-

-

Возвращается:

-

-

-

Пример:

-

for(var i = 0; i < xboxlive_get_user_count(); ++i;)
- {
-     user_id[i] = xboxlive_get_user(i);
-     user_name[i] = xboxlive_gamedisplayname_for_user(user_id[i]);
- }

-

Приведенный выше код получает указатель идентификатора пользователя для каждой доступной учетной записи пользователя, а затем сохраняет указатель вместе с отображаемым именем в двух массивах.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_gamerscore_for_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_gamerscore_for_user.htm index 4674be9a6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_gamerscore_for_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_gamerscore_for_user.htm @@ -1,74 +0,0 @@ - - - - - - xboxlive_gamerscore_for_user - - - - - - - - - - -

xboxlive_gamerscore_for_user

-

Эта функция возвращает XBox Live gamerscore для заданного указателя ID пользователя.

-

-

Синтаксис:

-

xboxlive_gamerscore_for_user(user_id);

- - - - - - - - - - - -
АргументТипОписание
user_idThe user ID (a pointer) to check
-

-

-

Возвращается:

-

-

-

Пример:

-

var _a = 0;
- var _num = xboxlive_get_user_count();
- for (var i = 0; i < _num; ++i)
- {
-     var _uid = xboxlive_get_user(i);
-     if (_uid != pointer_null)
-     {
-         global.UserName[_a] = xboxlive_gamedisplayname_for_user(_uid);
-         global.UserScore[_a] = xboxlive_gamerscore_for_user(_uid);
-         global.UserRep[_a] = xboxlive_reputation_for_user(_uid);
-         global.UserAvatar[_a] = xboxlive_sprite_add_from_gamerpicture(_uid, 256, 0, 0);
-         ++a;
-     }
- }

-

Приведенный выше код перебирает всех зарегистрированных пользователей и сохраняет их данные о геймерах в различных глобальных массивах.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_gamertag_for_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_gamertag_for_user.htm index bd71c9c4c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_gamertag_for_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_gamertag_for_user.htm @@ -1,58 +0,0 @@ - - - - - - xboxlive_gamertag_for_user - - - - - - - - - - -

xboxlive_gamertag_for_user

-

Эта функция позволяет получить метку Gamer Tag для текущего пользователя. Обратите внимание, что эта функция действительна только в том случае, если пользователь зарегистрирован, поэтому вы должны проверить это с помощью функции xboxlive_user_is_signed_in() перед запросом Gamer Tag. Если вы вызовете эту функцию, когда пользователь не зарегистрирован, вы получите в ответ пустую строку"".

-

-

Синтаксис:

-

xboxlive_gamertag_for_user();

-

-

Возвращается:

-

-

-

Пример:

-

if !xboxlive_user_is_signed_in()
- {
-     if (!xboxlive_user_is_signing_in())
-     {
-         xboxlive_show_account_picker();
-     }
- }
- else
- {
-     global.GamerTag = xboxlive_gamertag_for_user();
- }

-

Приведенный выше код проверяет, зарегистрирован ли пользователь в XBox Live, и если он зарегистрирован, то код получит его геймертаг и сохранит его в глобальной переменной для дальнейшего использования. Если пользователь не зарегистрирован, то код проверяет, находится ли он в процессе регистрации, в этом случае ничего не происходит, а если нет, то открывается окно выбора учетной записи, предлагая пользователю зарегистрироваться.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_generate_player_session_id.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_generate_player_session_id.htm index e6ed61a57..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_generate_player_session_id.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_generate_player_session_id.htm @@ -1,58 +0,0 @@ - - - - - - xboxlive_generate_player_session_id - - - - - - - - - - -

xboxlive_generate_player_session_id

-

Эта функция генерирует уникальную строку (содержащую GUID) для текущей сессии игрока. Затем она может быть использована с помощью функции xboxlive_fire_event().

-

-

Синтаксис:

-

xboxlive_generate_player_session_id();

-

-

Возвращается:

-

-

-

Пример:

-

if !xboxlive_user_is_signed_in()
- {
-     if (!xboxlive_user_is_signing_in())
-     {
-         xboxlive_show_account_picker();
-     }
- }
- else
- {
-     global.GamerTag = xboxlive_gamertag_for_user();
- }

-

Приведенный выше код проверяет, зарегистрирован ли пользователь в XBox Live, и если он зарегистрирован, то код получит его геймертаг и сохранит его в глобальной переменной для дальнейшего использования. Если пользователь не зарегистрирован, то код проверяет, находится ли он в процессе регистрации, в этом случае ничего не происходит, а если нет, то открывается окно выбора учетной записи, предлагая пользователю зарегистрироваться.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_get_activating_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_get_activating_user.htm index e04e13ed9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_get_activating_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_get_activating_user.htm @@ -1,49 +0,0 @@ - - - - - - xboxlive_get_activating_user - - - - - - - - - - -

xboxlive_get_activating_user

-

С помощью этой функции вы можете получить указатель идентификатора пользователя, который запустил игру с консоли.

-

ПРИМЕЧАНИЕ: Использование этого указателя зависит от того, что вы хотите делать в игре, но не стоит полагаться на то, что это будет текущий ID пользователя, так как активирующий пользователь может выйти из игры во время ее работы.

-

-

Синтаксис:

-

xboxlive_get_activating_user();

-

-

Возвращается:

-

Xbox User ID

-

-

Пример:

-

global.activUser = xboxlive_get_activating_user();

-

Вышеуказанное сохраняет указатель идентификатора активирующего пользователя в глобальной переменной

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_get_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_get_user.htm index e718ad0e8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_get_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_get_user.htm @@ -1,67 +0,0 @@ - - - - - - xboxlive_get_user - - - - - - - - - - -

xboxlive_get_user

-

С помощью этой функции вы можете получить указатель идентификатора пользователя для индексированного пользователя. Если пользователь не существует, функция вернет константу pointer_null. Количество пользователей, вошедших в систему в данный момент, можно узнать с помощью функции xboxlive_get_user_count().

-

ВАЖНО: Эта функция должна использоваться только с xboxlive_get_user_count() - не используйте ее с геймпадами. Вместо этого используйте xboxlive_user_for_pad().

-

-

-

Синтаксис:

-

xboxlive_get_user(index);

- - - - - - - - - - - - - -
АргументТипОписание
indexРеальноThe index (an integer) to get the User ID from.
-

-

Возвращается:

-

Xbox User ID or pointer_null

-

-

Пример:

-

for(var i = 0; i < xboxlive_get_user_count(); ++i;)
- {
-     user_id[i] = xboxlive_get_user(i);
- }

-

Приведенный выше цикл перебирает всех зарегистрированных пользователей и сохраняет их уникальный идентификационный указатель в массиве.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_get_user_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_get_user_count.htm index 0ae707e16..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_get_user_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_get_user_count.htm @@ -1,51 +0,0 @@ - - - - - - xboxlive_get_user_count - - - - - - - - - - -

xboxlive_get_user_count

-

С помощью этой функции вы можете узнать общее количество пользователей, которые в настоящее время зарегистрированы в системе XBox. Возвращаемое значение будет целым числом, от 0 до N, где N - количество зарегистрированных пользователей -1.

-

-

Синтаксис:

-

xboxlive_get_user_count();

-

-

Возвращается:

-

-

-

Пример:

-

for(var i = 0; i < xboxlive_get_user_count(); ++i;)
- {
-     user_id[i] = xboxlive_get_user(i);
- }

-

Приведенный выше цикл перебирает всех зарегистрированных пользователей и сохраняет их уникальный идентификационный указатель в массиве.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_pad_count_for_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_pad_count_for_user.htm index d631e7df4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_pad_count_for_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_pad_count_for_user.htm @@ -1,60 +0,0 @@ - - - - - - xboxlive_pad_count_for_user - - - - - - - - - - -

xboxlive_pad_count_for_user

-

С помощью этой функции можно узнать, сколько "слотов" пэда активно для текущего пользователя (см. xboxlive_pad_for_user() для более подробной информации).

-

-

Синтаксис:

-

xboxlive_pad_count_for_user(user_id, slot);

- - - - - - - - - - - -
АргументТипОписание
user_idThe user ID (a pointer) to check
-

-

Возвращается:

-

-

-

Пример:

-

global.slots[0] = xboxlive_pad_count_for_user(user_id[0])

-

Приведенный выше код сохраняет количество колодок, связанных с заданным указателем идентификатора пользователя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_pad_for_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_pad_for_user.htm index f2aae44ca..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_pad_for_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_pad_for_user.htm @@ -1,78 +0,0 @@ - - - - - - xboxlive_pad_for_user - - - - - - - - - - -

xboxlive_pad_for_user

-

Пользователи Xbox могут назначать различные пэды своему идентификатору пользователя, каждый из которых заполняет "слот". Эти слоты нумеруются от 0 и могут содержать любой индекс пэда, поэтому слот 0 может быть назначен пэду 3, а слот 1 - пэду 2. Эта функция может быть использована для получения пэда, назначенного на любой заданный слот, и особенно полезна, если пользователь оставляет геймпад без ввода в течение определенного времени, так как он сам отключается, поэтому вы можете проверить любой ID пользователя с помощью этой функции, чтобы убедиться, что у него есть активный геймпад, и если он не активен, то отреагировать соответствующим образом (например, поставить игру на паузу). Если геймпад активен, то будет возвращено значение его индекса, если нет, то функция вернет -1.

-

Обратите внимание, что если пэд в любом слоте становится неактивным, последующие слоты "сползают" на освободившееся место, поэтому если у вас есть три активных пэда, назначенных на слоты 0, 1 и 2, а пэд в слоте 0 неактивен, слоты 1 и к теперь станут слотами 0 и 1, поэтому слот 0 всегда должен содержать активный пэд, если только все пэды не выключены (в этом случае он возвращает -1).

-

-

Синтаксис:

-

xboxlive_pad_for_user(user_id, slot);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
user_idИдентификатор пользователя XboxThe User ID (a pointer) to check
slotРеальноThe index (an integer) of the gamepad slot to check
-

-

Возвращается:

-

Xbox Pad ID

-

-

Пример:

-

if (xboxlive_pad_for_user(user_id, 0) == -1)
- {
-     for(var i = 0; i < gamepad_get_device_count(); i++)
-     {
-         var u_id = xboxlive_user_for_pad(i);
-         if (u_id == -1)
-         {
-             async_ID = xboxlive_pad_for_user(i, u_id);
-         }
-     }
- }

-

Приведенный выше код проверяет слот 0 для заданного указателя User ID на предмет наличия назначенных геймпадов, и если нет, то назначается один.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_reputation_for_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_reputation_for_user.htm index 65ac16520..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_reputation_for_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_reputation_for_user.htm @@ -1,74 +0,0 @@ - - - - - - xboxlive_репутация_для_пользователя - - - - - - - - - - -

xboxlive_репутация_для_пользователя

-

С помощью этой функции вы можете получить оценку репутации Xbox Live для заданного указателя ID пользователя.

-

-

Синтаксис:

-

xboxlive_reputation_for_user(requesting_user_id);

- - - - - - - - - - - -
АргументТипОписание
requesting_user_idThe user ID (a pointer) of the user to check
-

-

-

Возвращается:

-

Real

-

-

Пример:

-

var _a = 0;
- var _num = xboxlive_get_user_count();
- for (var i = 0; i < _num; ++i)
- {
-     var _uid = xboxlive_get_user(i);
-     if (_uid != pointer_null)
-     {
-         global.UserName[_a] = xboxlive_gamedisplayname_for_user(_uid);
-         global.UserScore[_a] = xboxlive_gamerscore_for_user(_uid);
-         global.UserRep[_a] = xboxlive_reputation_for_user(_uid);
-         global.UserAvatar[_a] = xboxlive_sprite_add_from_gamerpicture(_uid, 256, 0, 0);
-         ++a;
-     }
- }

-

Приведенный выше код перебирает всех зарегистрированных пользователей и сохраняет их данные о геймерах в различных глобальных массивах.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_set_rich_presence.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_set_rich_presence.htm index 84f782cfb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_set_rich_presence.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_set_rich_presence.htm @@ -1,79 +0,0 @@ - - - - - - xboxlive_set_rich_presence - - - - - - - - - - -

xboxlive_set_rich_presence

-

Эта функция устанавливает строку богатого присутствия для данного пользователя. Строка Rich Presence отображает игровую активность пользователя после названия игры, в которую он играет, через дефис. Эта строка отображается под Gamertag игрока в списке "Друзья и клубы", а также в профиле пользователя Xbox Live.

-

При использовании этой функции вам необходимо предоставить указатель User ID для пользователя, а затем вы можете отметить пользователя как активного в игре в данный момент или нет (используя true/false). Если установлено значение false, то к строке присутствия будет добавлено "/afk" или что-то подобное. Следующим аргументом является ID строки богатого присутствия, который нужно показать, и, наконец, вы можете (опционально) предоставить строку service_config_id. Этот аргумент необязателен, и если он не указан, то используется SCID, указанный в опциях игры Xbox.

-

-

Синтаксис:

-

xboxlive_set_rich_presence(user_id, is_user_active, rich_presence_string, [service_config_id]);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
user_idИдентификатор пользователя XboxThe ID pointer of the user to check.
is_user_activeБулевоFlag the user as active or not.
rich_presence_stringСтрокаThe rich presence string ID to use (as defined in the Partner Center - max 50 characters)
service_config_idСтрокаOPTIONAL Это строка config_id для игры.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var pad_uid = xboxlive_user_for_pad(0);
- xboxlive_set_rich_presence(pad_uid, true, "Playing_Challenge");

-

Приведенный выше код получает указатель идентификатора пользователя, назначенного на слот [0] геймпада, а затем устанавливает строку присутствия для этого пользователя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_show_account_picker.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_show_account_picker.htm index 1d9c7d427..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_show_account_picker.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_show_account_picker.htm @@ -1,58 +0,0 @@ - - - - - - xboxlive_show_account_picker - - - - - - - - - - -

xboxlive_show_account_picker

-

Функция откроет экран выбора учетной записи XBox, чтобы пользователь мог зарегистрироваться, если он еще не зарегистрирован (если зарегистрирован, то функция ничего не сделает). Обратите внимание, что эта функция применима только при использовании сборки UWP на ПК, а не на Xbox, так как для запуска игры на Xbox пользователь должен быть уже зарегистрирован.

-

-

Синтаксис:

-

xboxlive_show_account_picker();

-

-

Возвращается:

-

-

-

Пример:

-

if !xboxlive_user_is_signed_in()
- {
-     if (!xboxlive_user_is_signing_in())
-     {
-         xboxlive_show_account_picker();
-     }
- }
- else
- {
-     global.GamerTag = xboxlive_gamertag_for_user();
- }

-

Приведенный выше код проверяет, зарегистрирован ли пользователь в XBox Live, и если он зарегистрирован, то код получит его геймертаг и сохранит его в глобальной переменной для дальнейшего использования. Если пользователь не зарегистрирован, то код проверяет, находится ли он в процессе регистрации, в этом случае ничего не происходит, а если нет, то открывается окно выбора учетной записи, предлагая пользователю зарегистрироваться.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_show_profile_card_for_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_show_profile_card_for_user.htm index 6dd673413..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_show_profile_card_for_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_show_profile_card_for_user.htm @@ -1,68 +0,0 @@ - - - - - - xboxlive_show_profile_card_for_user - - - - - - - - - - -

xboxlive_show_profile_card_for_user

-

С помощью этой функции вы можете запросить, чтобы XBox показал карточку профиля для целевого указателя ID пользователя. Функция требует как ID-указатель пользователя, который запрашивает информацию, так и ID-указатель пользователя, для которого необходимо получить карточку профиля.

-

-

Синтаксис:

-

xboxlive_show_profile_card_for_user(requesting_user_id, target_user_id);

- - - - - - - - - - - - - - - -
АргументТипОписание
requesting_user_idThe user ID (a pointer) of the requesting user
target_user_idThe user ID (a pointer) of the user to get the profile card of
-

-

-

Возвращается:

-

-

-

Пример:

-

if (gamepad(0, gp_start))
- {
-     xboxlive_show_profile_card_for_user(user[0], user[1]);
- }

-

Приведенный выше код проверяет нажатие кнопки геймпада и, если таковое обнаружено, показывает карточку профиля для данного пользователя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_sponsor_for_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_sponsor_for_user.htm index 79f37e002..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_sponsor_for_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_sponsor_for_user.htm @@ -1,63 +0,0 @@ - - - - - - xboxlive_спонсор_для_пользователя - - - - - - - - - - -

xboxlive_спонсор_для_пользователя

-

Эта функция извлекает ID спонсора данного пользователя.

-

-

Синтаксис:

-

xboxlive_sponsor_for_user(user_id);

- - - - - - - - - - - - - -
АргументТипОписание
user_idИдентификатор пользователя XboxThe ID pointer of the user to check.
-

-

Возвращается:

-

Xbox Sponsor ID

-

-

Пример:

-

var _uid = xboxlive_user_for_pad(0);
- sponsor = xboxlive_sponsor_for_user(_uid);

-

Приведенный выше код получает указатель ID пользователя для пользователя, назначенного на слот геймпада [0], а затем использует этот ID для получения ID спонсора пользователя.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_sprite_add_from_gamerpicture.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_sprite_add_from_gamerpicture.htm index fd33060b8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_sprite_add_from_gamerpicture.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_sprite_add_from_gamerpicture.htm @@ -1,91 +0,0 @@ - - - - - - xboxlive_sprite_add_from_gamerpicture - - - - - - - - - - -

xboxlive_sprite_add_from_gamerpicture

-

С помощью этой функции вы можете получить изображение геймера для заданного указателя ID пользователя. Функция работает асинхронно и будет вызывать асинхронное событие Image Loaded, чтобы сообщить вам о завершении работы функции (как в случае с HTML5/URL-вызовов к sprite_add()). Асинхронное событие Image Loaded будет иметь карту DS, хранящуюся во встроенной переменной async_load. Карта содержит следующую информацию:

-
    -
  • "filename": Полный путь к запрашиваемому файлу.
  • -
  • "id": Идентификатор загруженного ресурса. Он будет совпадать с переменной, которой вы присвоили ресурс.
  • -
  • "status": Возвращает значение меньше 0 в случае ошибки.
  • -
-

ПРИМЕЧАНИЕ: Когда вы динамически загружаете sprite в вашу игру во время выполнения, вы должны не забыть удалить его снова с помощью функции sprite_delete() когда он больше не нужен, иначе есть риск утечки памяти, что приведет к замедлению и, в конечном итоге, к краху вашей игры.

-

-

Синтаксис:

-

xboxlive_sprite_add_from_gamerpicture(user_id, imagesize, xorig, yorig);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
user_idThe user ID (a pointer) to get the gamer picture for
imagesizeSize in pixels of the sprite to be returned
xorigIndicate the x position of the origin in the sprite
yorigIndicate the y position of the origin in the sprite
-

-

Возвращается:

-

Async Request ID

-

-

Пример:

-

var _a = 0;
- var _num = xboxlive_get_user_count();
- for (var i = 0; i < _num; ++i)
- {
-     var _uid = xboxlive_get_user(i);
-     if (_uid != pointer_null)
-     {
-         global.UserName[_a] = xboxlive_gamedisplayname_for_user(_uid);
-         global.UserScore[_a] = xboxlive_gamerscore_for_user(_uid);
-         global.UserRep[_a] = xboxlive_reputation_for_user(_uid);
-         global.UserAvatar[_a] = xboxlive_sprite_add_from_gamerpicture(_uid, 256, 0, 0);
-         ++a;
-     }
- }

-

Приведенный выше код перебирает всех зарегистрированных пользователей и сохраняет их данные о геймерах в различных глобальных массивах.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_for_pad.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_for_pad.htm index 5b254b606..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_for_pad.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_for_pad.htm @@ -1,71 +0,0 @@ - - - - - - xboxlive_user_for_pad - - - - - - - - - - -

xboxlive_user_for_pad

-

Эта функция возвращает указатель User ID, связанный с заданным значением индекса геймпада, или pointer_null, если с ним не связан ни один пользователь. Обратите внимание, что эта функция должна использоваться только с индексами геймпадов, а не с индексами xboxlive_get_user_count().

-

-

Синтаксис:

-

xboxlive_user_for_pad(pad_index);

- - - - - - - - - - - -
АргументТипОписание
pad_indexThe index (an integer) of the gamepad slot to check
-

-

Возвращается:

-

Xbox User ID or pointer_null

-

-

Пример:

-

for(var i = 0; i < 11; ++i;)
- {
-     var u_id = xboxlive_user_for_pad(i);
-     if (u_id != pointer_null)
-     {
-         pad_name[i] = xboxlive_gamedisplayname_for_user(u_id);
-     }
-     else
-     {
-         pad_name[i] = "Press Play";
-     }
- }

-

Приведенный выше код перебирает все доступные слоты пэдов и проверяет, есть ли указатель идентификатора пользователя, связанный с ним. Если есть, то в массив устанавливается отображаемое имя пользователя, в противном случае в массив устанавливается текст по умолчанию.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_id_for_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_id_for_user.htm index 5767f8e11..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_id_for_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_id_for_user.htm @@ -1,60 +0,0 @@ - - - - - - xboxlive_user_id_for_user - - - - - - - - - - -

xboxlive_user_id_for_user

-

Эта функция преобразует указатель User ID в строку.

-

-

Синтаксис:

-

xboxlive_user_id_for_user(user_id);

- - - - - - - - - - - -
АргументТипОписание
user_idThe ID pointer of the user to check.
-

-

Возвращается:

-

-

-

Пример:

-

var _uid = xboxlive_user_for_pad(0);
uid_string = xboxlive_user_id_for_user(_uid);

-

Приведенный выше код получает указатель ID пользователя, назначенного на слот [0] геймпада, а затем сохраняет этот ID пользователя в виде строки в переменной экземпляра.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_active.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_active.htm index 7b38834c1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_active.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_active.htm @@ -1,70 +0,0 @@ - - - - - - xboxlive_user_is_active - - - - - - - - - - -

xboxlive_user_is_active

-

С помощью этой функции вы можете проверить, есть ли заданный идентификатор пользователя в списке пользователей, использующих консоль в данный момент, и функция вернет true, если есть, или false в противном случае. Вы можете получить указатель идентификатора пользователя с помощью функции xboxlive_get_user().

-

-

-

Синтаксис:

-

xboxlive_user_is_active(user_id);

- - - - - - - - - - - -
АргументТипОписание
user_idThe ID pointer of the user to check.
-

-

Возвращается:

-

-

-

Пример:

-

global.PlayerNum = 0;
- global.Player_ID = array_create();
- for(var i = 0; i < xboxlive_get_user_count(); ++i)
- {
-     var _uid = xboxlive_get_user(i);
-     if (xboxlive_user_is_active(_uid))
-     {
-         global.Player_ID[global.PlayerNum++] = _uid;
-     }
- }

-

Приведенный выше код перебирает все учетные записи пользователей, а затем проверяет, активны ли они. Если они активны, их идентификатор пользователя добавляется в глобальный массив.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_guest.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_guest.htm index e26b655ac..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_guest.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_guest.htm @@ -1,67 +0,0 @@ - - - - - - xboxlive_user_is_guest - - - - - - - - - - -

xboxlive_user_is_guest

-

Эта функция вернет true, если заданный указатель ID пользователя является гостевым пользователем, и false, если нет. Вы можете получить указатель идентификатора пользователя с помощью функции xboxlive_get_user().

-

-

Синтаксис:

-

xboxlive_user_is_guest(user_id);

- - - - - - - - - - - -
АргументТипОписание
user_idThe ID pointer of the user to check.
-

-

Возвращается:

-

-

-

Пример:

-

if xboxlive_user_is_guest(user_id[0])
- {
-     global.user_name[0] = "GUEST";
- }
- else
- {
-     global.user_name[0] = xboxlive_gamedisplayname_for_user(user_id[0]);
- }

-

Вышеприведенные действия сохраняют указатель идентификатора активирующего пользователя в глобальной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_remote.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_remote.htm index 220c269f6..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_remote.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_remote.htm @@ -1,72 +0,0 @@ - - - - - - xboxlive_user_is_remote - - - - - - - - - - -

xboxlive_user_is_remote

-

Эта функция проверяет заданный идентификатор пользователя и возвращает true, если проигрыватель является удаленным, или false в противном случае.

-

-

Синтаксис:

-

xboxlive_user_is_remote(user_id);

- - - - - - - - - - - -
АргументТипОписание
user_idThe ID pointer of the user to check.
-

-

Возвращается:

-

-

-

Пример:

-

global.PlayerNum = 0;
- global.Player_ID = array_create();
- for(var i = 0; i < xboxlive_get_user_count(); ++i)
- {
-     var _uid = xboxlive_get_user(i);
-     if (xboxlive_user_is_active(_uid))
-     {
-         if (!xboxlive_user_is_remote(_uid))
-         {
-             global.Remote_Player_ID[global.PlayerNum++] = _uid;
-         }
-     }
- }

-

Приведенный выше код перебирает все учетные записи пользователей, а затем проверяет, активны ли они. Если они активны, их идентификатор пользователя добавляется в глобальный массив, только если они не являются удаленными пользователями.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_signed_in.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_signed_in.htm index 245114ce9..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_signed_in.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_signed_in.htm @@ -1,58 +0,0 @@ - - - - - - xboxlive_user_is_signed_in - - - - - - - - - - -

xboxlive_user_is_signed_in

-

Функция проверит, зарегистрирован ли пользователь, и вернет true, если да, и false в противном случае. Если пользователь не зарегистрирован, вы можете вызвать функцию xboxlive_show_account_picker() чтобы открыть окно выбора учетных записей и предложить им войти в систему.

-

-

Синтаксис:

-

xboxlive_user_is_signed_in();

-

-

Возвращается:

-

-

-

Пример:

-

if !xboxlive_user_is_signed_in()
- {
-     if (!xboxlive_user_is_signing_in())
-     {
-         xboxlive_show_account_picker();
-     }
- }
- else
- {
-     global.GamerTag = xboxlive_gamertag_for_user();
- }

-

Приведенный выше код проверяет, зарегистрирован ли пользователь в XBox Live, и если он зарегистрирован, то код получит его геймертаг и сохранит его в глобальной переменной для дальнейшего использования. Если пользователь не зарегистрирован, то код проверяет, находится ли он в процессе регистрации, в этом случае ничего не происходит, а если нет, то открывается окно выбора учетной записи, предлагая пользователю зарегистрироваться.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_signing_in.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_signing_in.htm index c5a730eaa..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_signing_in.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/Users_And_Accounts/xboxlive_user_is_signing_in.htm @@ -1,58 +0,0 @@ - - - - - - xboxlive_user_is_signing_in - - - - - - - - - - -

xboxlive_user_is_signing_in

-

Функция проверяет, находится ли пользователь в процессе регистрации, и возвращает true, если это так, и false в противном случае.

-

-

Синтаксис:

-

xboxlive_user_is_signing_in();

-

-

Возвращается:

-

-

-

Пример:

-

if !xboxlive_user_is_signed_in()
- {
-     if (!xboxlive_user_is_signing_in())
-     {
-         xboxlive_show_account_picker();
-     }
- }
- else
- {
-     global.GamerTag = xboxlive_gamertag_for_user();
- }

-

Приведенный выше код проверяет, зарегистрирован ли пользователь в XBox Live, и если он зарегистрирован, то код получит его геймертаг и сохранит его в глобальной переменной для дальнейшего использования. Если пользователь не зарегистрирован, то код проверяет, находится ли он в процессе регистрации, в этом случае ничего не происходит, а если нет, то открывается окно выбора учетной записи, предлагая пользователю зарегистрироваться.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_check_privilege.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_check_privilege.htm index f96c72fef..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_check_privilege.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_check_privilege.htm @@ -1,202 +0,0 @@ - - - - - - uwp_check_privilege - - - - - - - - - - -

uwp_check_privilege

-

С помощью этой функции вы можете проверить, обладает ли данный пользователь выбранной привилегией. Функция вернет true или false в системном асинхронном событии в зависимости от того, включена привилегия или нет, а если вы установите аргумент attempt_resolution в true, а привилегия не включена, она также откроет системный диалог (приостановив игру), чтобы предложить пользователю обновить учетную запись или что-либо еще, необходимое для получения привилегии. Если пользователь включит требуемую опцию, функция вернет true.

-

Функция требует, чтобы вы использовали один из следующих символов UWP Privilege Constantдля запроса привилегий:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
UWP Privilege Constant
ПостояннаяОписание
uwp_privilege_internet_browsingПроверьте, разрешен ли просмотр Интернета
uwp_privilege_social_network_sharingПроверьте, разрешено ли делиться информацией в социальных сетях
uwp_privilege_share_kinect_contentПроверьте, разрешено ли совместное использование контроллера Kinect
uwp_privilege_video_communicationsПроверьте, разрешена ли видеосвязь
uwp_privilege_communicationsПроверьте, разрешено ли общение через Интернет
uwp_privilege_user_created_contentПроверьте, разрешен ли доступ к содержимому, созданному пользователем
uwp_privilege_multiplayer_sessionsПроверьте, разрешены ли многопользовательские онлайн-сессии
uwp_privilege_sessionsПроверьте, разрешены ли онлайн-сессии
uwp_privilege_fitness_uploadПроверьте, разрешена ли загрузка фитнес-данных
-

-

После вызова функции на сайте XBox One она вызовет асинхронное системное событие после получения результата обратного вызова, которое будет иметь специальную карту DS async_load. Затем эта карта должна быть разобрана для следующего ключа:

-
    -
  • "event_type" - должно иметь значение "check_privilege_result", если событие было вызвано этой функцией
  • -
-

Если тип события относится к этой функции, то при вызове функции на XBox также появятся следующие дополнительные клавиши:

-
    -
  • "результат" - Будет одним или несколькими из следующих значений UWP Privilege Result Constants (комбинированные значения): - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    UWP Privilege Result Constant
    КонстантаОписаниеЗначение
    uwp_privilege_result_no_issueУ пользователя нет проблем с привилегиями0
    uwp_privilege_result_purchase_requiredПользователь должен приобрести что-то дополнительное, обычно подписку, для получения доступа1
    uwp_privilege_result_abortedПроверка была прервана2
    uwp_privilege_result_bannedПользователь запрещен4
    uwp_privilege_result_restrictedПользователю ограничен доступ, обычно с помощью родительского контроля.8
    -
  • -
    -
  • "privilege" - будет одной из констант, перечисленных выше для использования в функции, чтобы вы могли проверить, какую привилегию вы запросили в случае нескольких проверок.
  • -
-

Если проект выполняется на платформе UWP, которая не является XBox One, то событие Async Event не будет запущено, и вместо этого функция немедленно вернет значение -1, 0 или 1:

-
    -
  • -1 означает -1 пользователь не имеет привилегии
  • -
  • 0 означает, что функция не смогла запросить пользователя
  • -
  • 1 означает, что пользователь имеет привилегию.
  • -
-

-

Синтаксис:

-

uwp_check_privilege(user_id, privilege, attempt_resolution);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
user_idИдентификатор пользователя XboxThe User ID pointer to check.
privilegeUWP Privilege ConstantThe privilege constant to check (see description, above).
attempt_resolutionБулевоEnable attempting a resolution if set to true, или игнорировать, если установлено значение false.
-

-

Возвращается:

-

Real

-

-

Пример:

-

var user_one = xboxlive_get_user(0);
- if (xboxlive_user_is_signed_in(user_one))
- {
-     uwp_check_privilege(user_one, xboxlive_privilege_multiplayer_sessions, true);
- }

-

Вышеописанное проверяет, вошел ли пользователь в систему, и если вошел, то проверяет разрешение на многопользовательские сессии.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_is_constrained.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_is_constrained.htm index 8da5fef7c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_is_constrained.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_is_constrained.htm @@ -1,54 +0,0 @@ - - - - - - uwp_is_constrained - - - - - - - - - - -

uwp_is_constrained

-

Эта функция возвращает true, если игра работает в режиме ограниченных ресурсов, или false, если игра работает нормально. Режим ограниченных ресурсов может быть активирован, когда игра не имеет фокуса, и в этом режиме игра сокращает ресурсы GPU. Обычно реакцией на это должна быть пауза в игре (поскольку пользователь больше не имеет контроля). Кроме того, если в этом режиме наблюдаются замедления, стоит отключить все особо нагружающие игру эффекты. Обратите внимание, что в отличие от uwp_is_suspending() эта функция возвращает значение true постоянно, пока игра находится в режиме ограничения (а не только один раз, когда это происходит впервые).

-

-

Синтаксис:

-

uwp_is_constrained();

-

-

Возвращается:

-

-

-

Пример:

-

if xboxliveis_constrained()
- {
-     if (!instance_exists(obj_PauseMenu))
-     {
-         instance_create(0,0,obj_PauseMenu);
-     }
- }

-

Приведенный выше код проверяет, является ли приложение ограниченным, и если да, то создает экземпляр объекта (используемого для приостановки игры).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_is_suspending.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_is_suspending.htm index 02de1e064..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_is_suspending.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_is_suspending.htm @@ -1,52 +0,0 @@ - - - - - - uwp_is_suspending - - - - - - - - - - -

uwp_is_suspending

-

Эта функция возвращает true для одного кадра (и false в противном случае) аналогично функции os_is_paused(). Затем у игры есть одна секунда, чтобы сохранить состояние игры, прежде чем она будет потенциально завершена системой. После завершения сохранения данных игра должна вызвать функцию uwp_suspend() чтобы приостановить игру. Возможно, игра также должна войти в состояние паузы, чтобы в случае ее возобновления системой (если она не была полностью завершена) игрок не оказался в игровой ситуации.

-

-

Синтаксис:

-

uwp_is_suspending();

-

-

Возвращается:

-

-

-

Пример:

-

if uwp_is_suspending()
- {
-     scr_Save_Game_Data();
-     uwp_suspend();
- }

-

Приведенный выше код проверяет, переходит ли приложение в режим приостановки, и если да, то вызывает сценарий для сохранения игровых данных перед приостановкой игры.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_license_trial_time_remaining.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_license_trial_time_remaining.htm index 0d90d9181..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_license_trial_time_remaining.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_license_trial_time_remaining.htm @@ -1,58 +0,0 @@ - - - - - - uwp_license_trial_time_remaining - - - - - - - - - - -

uwp_license_trial_time_remaining

-

Эта функция возвращает приблизительное количество секунд до истечения срока испытания, основанного на времени. Значение, возвращаемое этой функцией, не имеет смысла, если испытание не основано на времени или если игра не запущена в режиме испытания.

-

-

Синтаксис:

-

uwp_license_trial_time_remaining();

-

-

Возвращается:

-

-

-

Пример:

-

if uwp_license_trial_version()
- {
-     var secs = uwp_license_trial_time_remaining() mod 60;
-     var mins = uwp_license_trial_time_remaining() div 60;
-     var hours = mins div 60;
-     if secs < 10 secs = "0" + string(secs) else secs = string(secs);
-     if mins > 60 mins -= (hours * 60);
-     if mins < 10 mins = "0" + string(mins) else mins = string(mins);
-     if hours > 9 hours = "9" else hours = string(hours);
-     time_string = hours + ":" + mins + ":" + secs;
- }

-

Приведенный выше код проверяет, запущена ли игра с пробной лицензией, и если да, то создает строку с временем до истечения лицензии.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_license_trial_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_license_trial_user.htm index c5c83ce48..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_license_trial_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_license_trial_user.htm @@ -1,55 +0,0 @@ - - - - - - uwp_license_trial_user - - - - - - - - - - -

uwp_license_trial_user

-

Эта функция вернет указатель ID пользователя, чья пробная лицензия используется в настоящее время, или вернет pointer_null, если пользователь в настоящее время не активен или если игра в настоящее время не находится в пробном режиме.

-

-

Синтаксис:

-

uwp_license_trial_user();

-

-

Возвращается:

-

Xbox User ID

-

-

Пример:

-

if gamepad_button_check_pressed(0, gp_start)
- {
-     if (uwp_license_trial_version())
-     {
-         var _uid = uwp_license_trial_user();
-         uwp_show_help(_uid);
-     }
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_license_trial_version.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_license_trial_version.htm index 44bec22f5..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_license_trial_version.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_license_trial_version.htm @@ -1,51 +0,0 @@ - - - - - - uwp_license_trial_version - - - - - - - - - - -

uwp_license_trial_version

-

Эта функция может быть использована для проверки того, является ли игра пробной лицензией или нет. Если да, то функция вернет true, или false в противном случае.

-

-

Синтаксис:

-

uwp_license_trial_version();

-

-

Возвращается:

-

-

-

Пример:

-

if uwp_license_trial_version()
- {
-     global.LevelCap = 10;
- }

-

Приведенный выше код проверяет, не является ли приложение пробным, и если да, то устанавливает глобальную переменную.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_show_help.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_show_help.htm index 1f7789023..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_show_help.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_show_help.htm @@ -1,67 +0,0 @@ - - - - - - uwp_show_help - - - - - - - - - - -

uwp_show_help

-

Эта функция запускает приложение помощи Xbox One, которое, в свою очередь, отображает файл помощи вашей игры (который представляет собой файл в формате HTML, загруженный вами ранее на портал разработчиков XBox). Обратите внимание, что при вызове этой функции указывается ID пользователя, чтобы при отображении использовалась информация о локали пользователя. Идентификатор пользователя можно получить с помощью функций xboxlive_get_user(), xboxlive_get_activating_user(), или uwp_license_trial_user().

-

-

Синтаксис:

-

uwp_show_help(user_id);

- - - - - - - - - - - -
АргументТипОписание
user_idThe User ID pointer to open the helpfile for.
-

-

Возвращается:

-

-

-

Пример:

-

if gamepad_button_check_pressed(0, gp_start)
- {
-     if (uwp_license_trial_version())
-     {
-         var _uid = uwp_license_trial_user;
-         uwp_show_help(_uid);
-     }
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_suspend.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_suspend.htm index 8a6e8856f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_suspend.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_suspend.htm @@ -1,52 +0,0 @@ - - - - - - uwp_suspend - - - - - - - - - - -

uwp_suspend

-

Эта функция указывает системе, что приложение завершило сохранение данных после обнаружения запроса на приостановку. Вызов этой функции является обязательным требованием для представления Xbox One, и ее всегда следует использовать в сочетании с функцией uwp_is_suspending(), как показано в примере ниже.

-

-

Синтаксис:

-

uwp_suspend();

-

-

Возвращается:

-

-

-

Пример:

-

if uwp_is_suspending()
- {
-     scr_Save_Game_Data();
-     uwp_suspend();
- }

-

Приведенный выше код проверяет, переходит ли приложение в режим приостановки, и если да, то вызывает сценарий для сохранения игровых данных перед приостановкой игры.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_was_closed_by_user.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_was_closed_by_user.htm index cc86a6f36..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_was_closed_by_user.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_was_closed_by_user.htm @@ -1,51 +0,0 @@ - - - - - - uwp_was_closed_by_user - - - - - - - - - - -

uwp_was_closed_by_user

-

С помощью этой функции можно выяснить, была ли игра ранее выключена пользователем во время игры (т.е. была ли она завершена правильно, а не системой). Если это так, то функция вернет true, в противном случае она вернет false.

-

-

Синтаксис:

-

uwp_was_closed_by_user();

-

-

Возвращается:

-

-

-

Пример:

-

if uwp_was_closed_by_user()
- {
-     global.GameLoaded = false;
- }

-

Приведенный выше код проверяет, было ли приложение ранее завершено пользователем, и если да, то устанавливает глобальную переменную.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_was_terminated.htm b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_was_terminated.htm index 2c6b57bc3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_was_terminated.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/UWP_And_XBox_Live/uwp_was_terminated.htm @@ -1,52 +0,0 @@ - - - - - - uwp_was_terminated - - - - - - - - - - -

uwp_was_terminated

-

С помощью этой функции можно узнать, была ли игра ранее выключена системой (т.е. это не первый запуск игры). Если это было так, то функция вернет true, в противном случае она вернет false. Примером использования может быть проверка, не была ли игра ранее завершена системой, а затем (если возвращается true) загрузка предыдущего этапа, на котором находился игрок в игре. Если проверка направлена на XBox One, то требуемое поведение игр при обнаружении этого факта будет отличаться в разных версиях документации по сертификации, поэтому стоит проверить последнюю версию, чтобы понять, что должна делать игра.

-

-

Синтаксис:

-

uwp_was_terminated();

-

-

Возвращается:

-

-

-

Пример:

-

if xboxlivewas_terminated()
- {
-     buffer_load("Player_Save.sav");
-     global.GameLoaded = true;
- }

-

Приведенный выше код проверяет, не было ли приложение ранее завершено системой, и если да, то загружает буфер и устанавливает глобальную переменную.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/Variable_Functions.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/Variable_Functions.htm index ad9cf3ece..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/Variable_Functions.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/Variable_Functions.htm @@ -1,107 +0,0 @@ - - - - - - Переменные функции - - - - - - - - - - -

Переменные функции

-

Функции на этой странице предназначены для работы с различными переменными и типами переменных при использовании GameMaker Language в ваших играх. Более подробную информацию о переменных можно найти на странице " Переменные и область действия переменных".

-

Доступны следующие функции переменных:

- -

 

-

Существует несколько функций, связанных с использованием массивов. Они предназначены для обеспечения гибкости кода и позволяют создавать более функциональные и динамичные массивы при создании игр. К таким функциям относятся:

- -

 

-

Все эти следующие функции связаны с использованием переменных метода:

- -

 

-

Наконец, у вас также есть следующие функции для определения типа переменной (более подробную информацию о типах данных можно найти здесь, а таблицы типов- здесь):

- -

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_copy.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_copy.htm index eb863e486..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_copy.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_copy.htm @@ -1,97 +0,0 @@ - - - - - - array_copy - - - - - - - - - - -

array_copy

-

С помощью этой функции вы можете скопировать весь массив или его часть в другой массив в любой позиции. Вам необходимо указать исходный и конечный массивы (оба должны быть созданы ранее), а также позицию в исходном массиве для копирования и позицию в конечном массиве для копирования. Наконец, необходимо указать длину массива (или длину нужной части) для копирования. Если копируемые данные превышают длину массива назначения, массив будет расширен, чтобы принять эти данные.

-

Эта функция также может быть использована для многомерных массивов, если при указании индекса массива вы укажете, какое измерение вы хотите скопировать, следуя этой схеме:

-

// Copy to the first dimension of an array
- // from the second dimension of an array
- array_copy(item_array, 0, inventory_array[0], 0, len);
-
- // Copy to the third dimension of an array
- // from the first dimension of an array
- array_copy(item_array[0][0], 0, inventory_array, 0, len);
-
- // etc. -

-

-

Синтаксис:

-

array_copy(dest, dest_index, src, src_index, length);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
destМассивThe ID of the array to copy to.
dest_indexРеальноThe index within the array to copy to.
srcМассивThe ID of the array to copy from.
src_indexРеальноThe index with the array to start copying from.
lengthРеальноThe length (number of array indices) to copy.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if !array_equals(inventory_array, item_array)
- {
-     var len = array_length(inventory_array);
-     array_copy(item_array, 0, inventory_array, 0, len);
- }

-

Приведенный выше код проверит два массива на наличие в них эквивалентных значений, и если это не так, то код скопирует все содержимое массива "inventory_array" в массив "item_array".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_create.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_create.htm index 69e8d1b78..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_create.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_create.htm @@ -1,68 +0,0 @@ - - - - - - array_create - - - - - - - - - - - -

array_create

-

С помощью этой функции вы можете создать одномерный массив заданного размера. Вы сообщаете функции длину создаваемого массива, и она возвращает "хэндл" для массива, который вы можете присвоить переменной. В массивах, созданных таким образом, каждая запись будет инициализирована 0, если вы не укажете (необязательное) инициализирующее значение. Если вы укажете дополнительное значение для инициализации массива, то все индексы в новом массиве будут установлены в это значение вместо 0, но учтите, что в этом случае функция будет иметь более высокую производительность.

-

-

Синтаксис:

-

array_create(size, [value]);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
sizeРеальноThe size of the array to create.
valueПеременнаяOPTIONAL Значение, используемое для инициализации всех индексов массива.
-

-

Возвращается:

-

Array

-

-

Пример:

-

instance_array = array_create(100, noone);

-

Приведенный выше код создаст новый массив из 100 записей, каждая из которых будет установлена на ключевое слово noone, а затем присвоит его переменной "instance_array".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_delete.htm index 9f49299f0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_delete.htm @@ -1,68 +0,0 @@ - - - - - - array_delete - - - - - - - - - - -

array_delete

-

С помощью этой функции вы можете удалить значение (или значения) из массива в любой заданной позиции. Функция требует, чтобы вы предоставили переменную, содержащую массив, индекс (позицию) в массиве для удаления, а также количество значений для удаления.

-

-

Синтаксис:

-

array_delete(variable, index, number);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
variableThe variable that holds the array.
indexThe index (position) in the array to delete the value(s) from.
numberThe number of values to delete.
-

-

Возвращается:

-

-

-

Пример:

-

array_delete(score_array, 0, 10);

-

Приведенный выше код удалит первые 10 значений в заданном массиве, начиная с индекса 0 (таким образом, из массива будут удалены индексы с 0 по 9).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_equals.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_equals.htm index b7d0b2966..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_equals.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_equals.htm @@ -1,91 +0,0 @@ - - - - - - array_equals - - - - - - - - - - - -

array_equals

-

С помощью этой функции вы можете проверить, равны ли два массива (эквивалентны или одинаковы). Вы задаете два массива для проверки, и функция возвращает true, если они равны (эквивалентны или одинаковы), или false, если нет. Обратите внимание, что это не то же самое, что проверка одинаковости двух массивов с помощью функции ==, которая не проверяет, хранят ли два массива эквивалентные значения, а только проверяет, ссылаются ли массивы на один и тот же исходный массив. Например:

-

var a = [1,2,3,4];
- var b = [1,2,3,4];
-
- if (a == b)
- {
-     show_debug_message( "This will never fire, as a and b do not reference the SAME array" );
- }
-
- if (array_equals(a, b))
- {
-     show_debug_message( "This will fire as both arrays contain similar values" );
- } -

-

Обратите внимание, что некоторые константы могут быть не равны самим себе, что может привести к ошибке. Вот пример:

-

if (array_equals([NaN], [NaN]))
- {
-     show_debug_message( "This will never fire as NaN cannot be equal to itself" );
- }

-

Более подробную информацию см. в Таблице равенства.

-

-

Синтаксис:

-

array_equals(var1, var2);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
var1МассивThe first array.
var2МассивThe second array.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !array_equals(inventory_array, item_array)
- {
-     var len = array_length(inventory_array);
-     array_copy(item_array, 0, inventory_array, 0, len);
- }

-

Приведенный выше код проверит два массива на наличие в них эквивалентных значений, и если это не так, то код скопирует все содержимое массива "inventory_array" в массив "item_array".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_get.htm index 9075438f0..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_get.htm @@ -1,78 +0,0 @@ - - - - - - array_get - - - - - - - - - - - -

array_get

-

С помощью этой функции вы можете получить значение по индексу в массиве. Функция требует, чтобы вы указали переменную, содержащую массив, и индекс для получения значения из этого массива. Обратите внимание, что если указанный индекс массива выходит за границы, то игра завершится с ошибкой. Эта функция также может быть использована для многомерных массивов, если вы укажете, какое измерение вы хотите получить при указании индекса массива, по следующей схеме:

-

// 1D array
- array_get(my_array, 0);
- // 2D array
- array_get(my_array[0], 0);
- // 3D array
- array_get(my_array[0][0], 0);
- // etc...

-

-

Синтаксис:

-

array_get(variable, index);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
variableМассивThe variable that holds the array.
indexРеальноThe index of the array element to get the value from.
-

-

Возвращается:

-

Variable (Any valid data type that an array can hold)

-

-

Пример:

-

for (var i = 0; i < 10; ++i;)
- {
-     show_debug_message(array_get(my_array, i));
- }

-

Приведенный выше код выведет на консоль первые 10 элементов из заданных.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_height_2d.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_height_2d.htm index 367a29894..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_height_2d.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_height_2d.htm @@ -1,70 +0,0 @@ - - - - - - array_height_2d - - - - - - - - - - - -

array_height_2d

-

ВНИМАНИЕ! Эта функция устарела (и заменена на array_length()), поскольку массивы больше не ограничены только 1 или 2 измерениями, и поэтому эта функция предоставляется только для поддержки старых проектов. Все новые проекты должны использовать текущий способ создания и доступа к многомерным массивам (см. здесь для получения дополнительной информации).

-

С помощью этой функции вы можете получить высоту (количество записей) первого измерения двумерного массива. Вы задаете массив для проверки, и на выходе функция сообщает вам, сколько начальных записей он содержит. Количество записей для второго измерения массива можно получить с помощью функции array_length_2d.

-

-

Синтаксис:

-

array_height_2d(array_index);

- - - - - - - - - - - - - -
АргументТипОписание
array_indexМассивThe index of the array to check.
-

-

Возвращается:

-

Real

-

-

Пример:

-

for (var i = 0; i < array_height_2d(a); ++i;)
- {
-     for (var j = 0; j < array_length_2d(a, i); ++j)
-     {
-         a[i, j] = -1;
-     }
- }

-

Приведенный выше код будет циклически просматривать двумерный массив и устанавливать для каждой записи значение -1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_insert.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_insert.htm index b47198acb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_insert.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_insert.htm @@ -1,77 +0,0 @@ - - - - - - array_insert - - - - - - - - - - -

array_insert

-

С помощью этой функции вы можете вставить значение (или значения) в массив в любую заданную позицию. Функция требует, чтобы вы предоставили переменную, содержащую массив, индекс (позицию) в массиве для вставки, а также хотя бы одно значение для вставки, хотя по желанию вы можете предоставить дополнительные аргументы, и все они будут вставлены в массив в последовательном порядке, начиная с заданного индекса.

-

Обратите внимание, что если заданный индекс находится за пределами длины массива, значения будут добавлены по заданному индексу, а все пустые места в массиве между его последним значением и вставленными значениями будут установлены в значение по умолчанию 0.

-

-

Синтаксис:

-

array_insert(variable, index, value, [value], [value], [etc...]);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
variableМассивThe variable that holds the array.
indexРеальноThe index (position) in the array to insert the value(s) 
valueПеременнаяThe value to insert
[value], [value], [etc...]ПеременнаяOPTIONAL Дополнительные значения для вставки в массив
-

-

Возвращается:

-

N/A

-

-

Пример:

-

array_insert(score_array, score_rank, current_score);

-

Приведенный выше код вставит текущий результат в массив score по индексу, заданному переменной score_rank.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_length.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_length.htm index 428462f4e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_length.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_length.htm @@ -1,75 +0,0 @@ - - - - - - array_length - - - - - - - - - - - -

array_length

-

С помощью этой функции вы можете получить длину (количество записей) размерности массива. Вы указываете значение индекса массива, и функция возвращает целочисленное значение, представляющее количество записей, которые содержит массив. Эту функцию можно использовать и для многомерных массивов, если при указании индекса массива указать, длину какого измерения вы хотите получить, следуя следующей схеме:

-

// Returns the first dimension of the array
- val = array_length(my_array);
-
- // Returns the second dimension of the array
- val = array_length(my_array[0]);
-
- // Returns the third dimension of the array
- val = array_length(my_array[0][0]);
-
- // etc... -

-

-

Синтаксис:

-

array_length(array_index);

- - - - - - - - - - - -
АргументТипОписание
array_indexThe index of the array to check.
-

-

Возвращается:

-

-

-

Пример:

-

for (var i = 0; i < array_length(a); ++i)
- {
-     a[i] = -1;
- }

-

Приведенный выше код будет циклически просматривать массив и устанавливать для каждой записи значение -1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_length_1d.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_length_1d.htm index e16d8a67c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_length_1d.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_length_1d.htm @@ -1,68 +0,0 @@ - - - - - - array_length_1d - - - - - - - - - - - -

array_length_1d

-

ВНИМАНИЕ! Эта функция устарела (и заменена на array_length()), поскольку массивы больше не ограничены только 1 или 2 измерениями, и поэтому эта функция предоставляется только для поддержки старых проектов. Все новые проекты должны использовать текущий способ создания и доступа к многомерным массивам (см. здесь для получения дополнительной информации).

-

С помощью этой функции вы можете получить длину (количество записей) одномерного массива. Для двумерных массивов следует использовать функции array_height_2d и array_length_2d функции.

-

ВАЖНО!!! Если массив содержит более 32 000 записей, эта функция вернет ошибочное значение и не должна использоваться.

-

-

Синтаксис:

-

array_length_1d(array_index);

- - - - - - - - - - - - - -
АргументТипОписание
array_indexМассивThe index of the array to check.
-

-

Возвращается:

-

Real

-

-

Пример:

-

for (var i = array_length_1d(a) - 1; i > -1; i--;)
- {
-     a[i] = -1;
- }

-

Приведенный выше код будет циклически просматривать массив и устанавливать для каждой записи значение -1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_length_2d.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_length_2d.htm index 965e94c94..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_length_2d.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_length_2d.htm @@ -1,75 +0,0 @@ - - - - - - array_length_2d - - - - - - - - - - - -

array_length_2d

-

ВНИМАНИЕ! Эта функция устарела (и заменена на array_length()), поскольку массивы больше не ограничены только 1 или 2 измерениями, и поэтому эта функция предоставляется только для поддержки старых проектов. Все новые проекты должны использовать текущий способ создания и доступа к многомерным массивам (см. здесь для получения дополнительной информации).

-

С помощью этой функции вы можете получить длину (количество записей) второго измерения массива. Вы вводите номер записи для первого измерения, а функция возвращает количество записей второго измерения массива (для нахождения длины первого измерения используйте функцию array_height_2D()). Функция вернет 0, если данная переменная не является массивом, или 1, если переменная является одномерным массивом (так как в нем все еще есть 1 строка).

-

-

Синтаксис:

-

array_length_2d(array_index, n);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
array_indexМассивThe index of the array to check.
nРеальноThe entry of the array to get the length of.
-

-

Возвращается:

-

Real

-

-

Пример:

-

for (var i = 0; i < array_height_2d(a); ++i;)
- {
-     for (var j = 0; j < array_length_2d(a, i); ++j)
-     {
-         a[i, j] = -1;
-     }
- }

-

Приведенный выше код будет циклически просматривать двумерный массив и устанавливать для каждой записи значение -1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_pop.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_pop.htm index d6764cd79..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_pop.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_pop.htm @@ -1,61 +0,0 @@ - - - - - - array_pop - - - - - - - - - - -

array_pop

-

Эта функция удаляет последний элемент в заданном массиве и возвращает его значение. Если массив пуст, возвращается undefined.

-

-

Синтаксис:

-

array_pop(array);

- - - - - - - - - - - -
АргументТипОписание
arrayThe array to remove the last value from.
-

-

Возвращается:

-

Variable or undefined

-

-

Пример:

-

var _lastscore = array_pop(score_array);
- draw_text(32, 32, "Last Score = " + string(_lastscore));

-

Приведенный выше код извлечет последнее значение из заданного массива, а затем выведет его вместе с текстом на экран. Извлеченная запись также удаляется из массива очков.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_push.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_push.htm index 437286933..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_push.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_push.htm @@ -1,72 +0,0 @@ - - - - - - array_push - - - - - - - - - - -

array_push

-

С помощью этой функции вы можете поместить значение (или значения) в конец массива, не зная его длины. Функция требует, чтобы вы предоставили переменную, содержащую массив, а также хотя бы одно значение для вставки, хотя по желанию вы можете предоставить дополнительные аргументы, и все они будут вставляться в массив в последовательном порядке.

-

-

Синтаксис:

-

array_push(variable, value, [value], [value], [etc...]);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
variableМассивThe variable that holds the array.
valueПеременнаяThe value to push onto the end of the array
[value], [value], [etc...]ПеременнаяOPTIONAL Дополнительные значения, которые необходимо поместить в массив
-

-

Возвращается:

-

N/A

-

-

Пример:

-

array_push(score_array, obj_Player1.scr, obj_Player2.scr, obj_Player3.scr, obj_Player4.scr);

-

Приведенный выше код поместит четыре значения в конец заданного массива.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_resize.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_resize.htm index 59a5ee467..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_resize.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_resize.htm @@ -1,83 +0,0 @@ - - - - - - array_resize - - - - - - - - - - -

array_resize

-

С помощью этой функции вы можете изменить размер существующего массива на новый. Вы указываете массив, размер которого необходимо изменить, а также новое количество индексов для массива, и функция изменит размер массива. Обратите внимание, что эта функция предназначена для изменения размера массива до меньшей длины, так как вы можете изменить размер массива, просто установив новый индекс в массиве. Тем не менее, если вы используете эту функцию для увеличения размера массива, все новые индексы будут установлены в значение по умолчанию 0.

-

Эта функция также может быть использована для многомерных массивов, если при указании индекса массива вы укажете, какое измерение вы хотите изменить, следуя этой схеме:

-

// Resize the first dimension of the array
- array_resize(my_array, 10);
-
- // Resize the second dimension of the array (only for the first slot)
- array_resize(my_array[0], 10);
-
- // Resize the third dimension of the array (only for the first slots)
- array_resize(my_array[0][0], 10);
-
- // ...and so on. -

-

В коде указано, что изменяется размер только первого слота второго измерения, поскольку слоты в любом данном измерении массива не связаны между собой и могут иметь разные размеры; например:

-

array_resize(my_array[0], 10);
- array_resize(my_array[1], 22);

-

В приведенном выше коде длина второго измерения массива равна 10 в первом слоте, но 22 во втором слоте.

-

-

Синтаксис:

-

array_resize(array_index, new_size);

- - - - - - - - - - - - - - - -
АргументТипОписание
array_indexThe index of the array to resize.
new_sizeThe new size for the array (an integer, starting from 0).
-

-

Возвращается:

-

-

-

Пример:

-

if array_length(a) > 10
- {
-     array_resize(a, 10);
- }

-

Приведенный выше код проверяет длину массива, и если он имеет более 10 индексов, то его размер изменяется.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_set.htm index 9fca659ca..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_set.htm @@ -1,82 +0,0 @@ - - - - - - array_set - - - - - - - - - - -

array_set

-

С помощью этой функции вы можете установить значение индекса в массиве в значение. Функция требует, чтобы вы предоставили переменную, содержащую массив, а также индекс, который нужно установить, и значение, которое нужно установить. Эта функция также может быть использована для многомерных массивов, если при указании индекса массива вы укажете, какую размерность вы хотите установить, следуя следующей схеме:

-

// 1D array
- array_set(my_array, 0, 100);
- // 2D array
- array_set(my_array[0], 0, 100);
- // 3D array
- array_set(my_array[0][0], 0, 100);
- // etc...

-

-

Синтаксис:

-

array_set(variable, index, value);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
variableМассивThe variable that holds the array.
indexРеальноThe index of the array element to set the value for.
valueПеременнаяThe value to set.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

for (var i = 0; i < 10; ++i;)
- {
-     array_set(score_array, i, i*100));
- }

-

Приведенный выше код установит первые 10 элементов в заданном массиве в значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_sort.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_sort.htm index 3f2d2d9c4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_sort.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/array_sort.htm @@ -1,111 +0,0 @@ - - - - - - array_sort - - - - - - - - - - -

array_sort

-

С помощью этой функции вы можете отсортировать массив по возрастанию или по убыванию, а также используя пользовательскую функцию для определения порядка сортировки. Функция требует, чтобы вы указали массив для сортировки, а затем одно из следующих действий:

-
    -
  • Константы true или false для указания возрастающего (true) или убывающего (false) порядка сортировки.
  • -
  • Пользовательская функция для определения порядка сортировки
  • -
-

Эта функция изменит содержимое исходного массива, который был предоставлен. Чтобы создать отсортированную копию, используйте array_copy() для дублирования массива, а затем передайте его в эту функцию.

-

Использование пользовательской функции

-

Если вы используете пользовательскую функцию для сортировки, она должна принимать 2 аргумента, которые будут получать значения текущего элемента и следующего элемента соответственно. Функция должна возвращать любое из следующих значений, чтобы повлиять на порядок сортировки (где elm1 - текущий элемент, а elm2 - следующий элемент):

-
    -
  • 0: если elm1 и elm2 равны
  • -
  • <= -1 (отрицательное целое число): если elm1 идет раньше, чем elm2
  • -
  • >= 1 (целое положительное число): если elm1 идет после elm2
  • -
-

ПРИМЕЧАНИЕ Значение, возвращаемое вашей пользовательской функцией, должно быть целым числом. Значения с плавающей точкой меньше 1 будут считаны как 0, поэтому вы должны использовать sign() или round() если ваша функция работает со значениями с плавающей точкой.

-

Если массив содержит набор строк, то строки будут отсортированы в алфавитном порядке на основе английского алфавита при использовании стандартного типа сортировки по возрастанию/убыванию. Все остальные типы данных будут отсортированы на основе их числовых значений, точные значения которых зависят от самого типа данных (например, массив буферов будет отсортирован на основе числовых значений их адресов памяти).

-

-

Синтаксис:

-

array_sort(variable, sorttype_or_function);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
variableМассивThe variable that holds the array.
sorttype_or_function Булево или Скриптовая функция/МетодThe sort type (true для возрастания или false для убывания) или ссылку на функцию, которую следует использовать для сортировки.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var _a = [10, 9, 8, 7, 6, 5];
-
- array_sort(_a, function(current, next)
- {
-     return current - next;
- }); -

-

Приведенный выше код использует пользовательскую функцию сортировки для сортировки массива в порядке возрастания. Функция сортировки берет два элемента массива elm1 и elm2 и выполняет вычитание. Если elm1 больше, чем elm2, то в результате вычитания получается положительное число, которое переводит elm1 на место после elm2, тем самым располагая их в порядке возрастания.

-

Вот расширенный пример:

-

var _xx, _yy, _a;
-
- for (var i = 0; i < 10; i++)
- {
-     _xx = irandom(room_width);
-     _yy = irandom(room_height);
-     _a[i] = instance_create_layer(_xx, _yy, layer, obj_Bullet);
- }
-
- show_debug_message(_a);
-
- var _f = function(inst1, inst2)
- {
-     return inst1.x - inst2.x;
- }
-
- array_sort(_a, _f);
- show_debug_message(_a); -

-

Приведенный выше код создаст массив из 10 экземпляров, расположенных в случайных местах в комнате. Отладочное сообщение покажет что-то вроде следующего:

-

[ 100003,100004,100005,100006,100007,100008,100009,100010,100011,100012 ]

-

Затем код создает метод для использования в функции array_sort(), который возвращает разницу между каждым из положений X экземпляров в комнате. Затем функция array_sort() запускается с использованием этого метода, сортируя экземпляры по X от наименьшего к наибольшему. Выходные данные для массива будут выглядеть следующим образом:

-

[ 100011,100004,100009,100006,100012,100008,100010,100005,100007,100003 ]

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/bool.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/bool.htm index 335165e2f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/bool.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/bool.htm @@ -1,66 +0,0 @@ - - - - - - bool - - - - - - - - - - - -

bool

-

Эта функция попытается преобразовать заданное значение в булевский тип данных, где значение будет возвращено как true, если оно больше или равно 0,5, и false в противном случае.

-

 

-

Синтаксис:

-

bool(n)

- - - - - - - - - - - - - -
АргументТипОписание
nRealThe value to convert.
-

 

-

Возвращается:

-

Boolean

-

 

-

Пример:

-

if !is_bool(val)
- {
-     val = bool(val);
- }

-

Приведенный выше код проверяет переменную "val" на то, является ли она булевой, и если нет, то преобразует ее в булевую.

-

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/instanceof.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/instanceof.htm index b08ff3f3a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/instanceof.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/instanceof.htm @@ -1,79 +0,0 @@ - - - - - - instanceof - - - - - - - - - - - -

instanceof

-

Эта функция может быть использована для получения имени функции-конструктора, которая была использована для создания структуры. Сама структура должна быть создана с помощью функции new вместе с самим конструктором. Вы передаете переменную со ссылкой на struct для проверки, и функция возвращает либо строку с именем конструктора, либо undefined.

-

Обратите внимание, что если вы передадите функции литерал struct (т.е. struct, который был создан без использования функции-конструктора), то она просто вернет строку "struct".

-

Эта функция также может быть использована для проверки того, является ли ссылка на структуру слабая ссылка или нет, в этом случае функция вернет строку "weakref" вместо имени функции, создавшей структуру. Для получения дополнительной информации см. функцию weak_ref_create().

-

Возвращаемое имя конструктора будет включать дополнительный текст, если функция конструктора была создана не в сценарии. Если она была создана внутри объекта, ее имя будет включать объект и событие, в котором она была создана. Например, конструктор с именем test_constructor, созданный в событии Create объекта Object1, будет возвращен как "test_constructor_gml_Object_Object1_Create_0". Чтобы избежать этого, создавайте свои конструкторы в формате script.

-

-

Синтаксис:

-

instanceof(struct_id);

- - - - - - - - - - - - - -
АргументТипОписание
structСтруктураThe struct reference to use.
-

-

Возвращается:

-

String or undefined

-

-

Расширенный пример:

-

В этом примере мы должны сначала определить функцию, которая будет использоваться в качестве конструктора для нашей структуры. Следующая функция определена в активе сценария:

-

function init_struct(_a, _b, _c) constructor
- {
-     a = _a;
-     b = _b;
-     c = _c;
- }

-

Затем эту функцию можно использовать вместе с оператором new для создания структуры и заполнения ее переменными, установленными в значения аргументов, используемых в функции:

-

mystruct = new init_struct(10, 100, "Hello World");

-

Затем мы можем получить имя функции-конструктора, которая была использована следующим образом:

-

var _name = instanceof(mystruct);
- if (is_string(_name))
- {
-     show_debug_message(_name);
- }

-

Это выведет в выходной журнал строку "init_struct", которая является именем функции-конструктора, определенным в ее сценарии.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/int64.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/int64.htm index 3faf9a910..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/int64.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/int64.htm @@ -1,63 +0,0 @@ - - - - - - int64 - - - - - - - - - - - -

int64

-

Эта функция пытается преобразовать заданное значение в знаковое 64-битное целое число, при этом значение должно быть либо вещественным, либо строкой, либо int64, либо int32, либо ptr. Любой другой вариант приведет к аварийному завершению игры с сообщением об ошибке. Проверить, хранит ли переменная значение int64, можно с помощью функции is_int64().

-

-

Синтаксис:

-

int64(val);

- - - - - - - - - - - - - -
АргументТипОписание
valРеальный, Строка, или УказательThe value to convert.
-

-

Возвращается:

-

int64 (signed 64-bit integer)

-

-

Пример:

-

steam_handle = int64(global.fileReadString);

-

Приведенный выше код преобразует значение, хранящееся в глобальной переменной, в 64-битное целое число.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_array.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_array.htm index ecf621f81..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_array.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_array.htm @@ -1,66 +0,0 @@ - - - - - - is_array - - - - - - - - - - - -

is_array

-

Эта функция может быть использована для проверки и определения, содержит ли переменная массив (в этом случае она вернет true) или нет (в этом случае она вернет false).

-

-

Синтаксис:

-

is_array(n);

- - - - - - - - - - - - - -
АргументТипОписание
nПеременнаяThe variable to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if is_array(a)
- {
-     a = -1;
- }

-

Приведенный выше код проверяет переменную на то, является ли она массивом, и если функция возвращает true, то массив удаляется путем установки переменной в -1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_bool.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_bool.htm index 7f869af78..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_bool.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_bool.htm @@ -1,70 +0,0 @@ - - - - - - is_bool - - - - - - - - - - - -

is_bool

-

Эта функция возвращает, является ли данная переменная булевой (true или false) или нет. В некоторых случаях вы хотите проверить, имеет ли переменная в GameMaker булево значение, и тогда вы используете эту функцию.

-

-

Синтаксис:

-

is_bool(n);

- - - - - - - - - - - - - -
АргументТипОписание
nПеременнаяThe argument to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if is_bool(val)
- {
-     global.Sound = val;
- }
- else
- {
-     global.Sound = true;
- }

-

Приведенный выше код проверяет переменную "val" на то, является ли она действительным числом, и если да, то использует ее для установки глобальной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_infinity.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_infinity.htm index 019f2af20..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_infinity.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_infinity.htm @@ -1,66 +0,0 @@ - - - - - - is_infinity - - - - - - - - - - - -

is_infinity

-

Эта функция возвращает, является ли данная переменная infinity (бесконечным числом) или нет, возвращая true, если является, и false, если не является.

-

-

Синтаксис:

-

is_infinity(n);

- - - - - - - - - - - - - -
АргументТипОписание
nПеременнаяThe argument to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if is_infinity(global.value)
- {
-     show_debug_message("Value is infinite!");
- }

-

Приведенный выше код проверяет глобальную переменную "value" на то, бесконечна она или нет, и показывает отладочное сообщение, если это так.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_int32.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_int32.htm index a277f2a0f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_int32.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_int32.htm @@ -1,66 +0,0 @@ - - - - - - is_int32 - - - - - - - - - - - -

is_int32

-

Эта функция возвращает, является ли данная переменная 32-битным целым числом или нет. В некоторых случаях вы хотите проверить и узнать, какой тип данных имеет переменная в GameMaker, и тогда вы используете эту функцию. Она возвращает true или false в зависимости от того, является ли значение int 32 или нет.

-

-

Синтаксис:

-

is_int32(n);

- - - - - - - - - - - - - -
АргументТипОписание
nПеременнаяThe argument to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !is_int32(val)
- {
-     show_debug_message("Not a 32 bit integer!");
- }

-

Приведенный выше код проверяет переменную "val" на то, содержит ли она int32, и если нет, то выводит сообщение в консоль отладки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_int64.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_int64.htm index d26413240..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_int64.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_int64.htm @@ -1,66 +0,0 @@ - - - - - - is_int64 - - - - - - - - - - - -

is_int64

-

Эта функция возвращает, является ли данная переменная 64-битным целым числом или нет. В некоторых случаях вы хотите проверить и узнать, какой тип данных имеет переменная в GameMaker, и тогда вы используете эту функцию. Она возвращает true или false в зависимости от того, является ли значение int64 или нет.

-

-

Синтаксис:

-

is_int64(n);

- - - - - - - - - - - - - -
АргументТипОписание
nПеременнаяThe argument to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !is_int64(val)
- {
-     show_debug_message("Not a 64bit integer!");
- }

-

Приведенный выше код проверяет переменную "val" на то, содержит ли она int64, и если нет, то выводит сообщение в консоль отладки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_matrix.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_matrix.htm index 7608e159b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_matrix.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_matrix.htm @@ -1,66 +0,0 @@ - - - - - - is_matrix - - - - - - - - - - - -

is_matrix

-

Эта функция возвращает, относится ли данная переменная к матрице или нет. В некоторых случаях вы хотите проверить и узнать, к какому типу данных относится переменная в GameMaker, и тогда вы используете эту функцию. Она возвращает true или false в зависимости от того, является ли значение матрицей или нет.

-

 

-

Синтаксис:

-

is_matrix(n)

- - - - - - - - - - - - - -
АргументТипОписание
nAnyThe argument to check.
-

 

-

Возвращается:

-

Boolean

-

 

-

Пример:

-

if !is_matrix(val)
- {
-     show_debug_message("Not a valid matrix!");
- }

-

Приведенный выше код проверяет переменную "val" на наличие в ней матрицы, и если это не так, то выводит сообщение в консоль отладки.

-

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_method.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_method.htm index b6072fb0f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_method.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_method.htm @@ -1,66 +0,0 @@ - - - - - - is_method - - - - - - - - - - - -

is_method

-

Эта функция может быть использована для проверки и определения, является ли переменная переменной метода (в этом случае она вернет true) или нет (в этом случае она вернет false).

-

-

Синтаксис:

-

is_method(n);

- - - - - - - - - - - - - -
АргументТипОписание
nПеременнаяThe variable to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if is_method(get_vec)
- {
-     show_debug_message("Method variable!");
- }

-

Приведенный выше код проверяет переменную на предмет того, является ли она методом, и если функция возвращает true, то на консоль выводится отладочное сообщение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_nan.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_nan.htm index 02912b9cb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_nan.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_nan.htm @@ -1,66 +0,0 @@ - - - - - - is_nan - - - - - - - - - - - -

is_nan

-

Эта функция возвращает, является ли данная переменная NaN (не числом) или нет, возвращая true, если является, и false, если не является.

-

-

Синтаксис:

-

is_nan(n);

- - - - - - - - - - - - - -
АргументТипОписание
nПеременнаяThe argument to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if is_nan(global.value)
- {
-     show_debug_message("Value is not a number");
- }

-

Приведенный выше код проверяет глобальную переменную "value" на то, является ли она числом или нет, и показывает отладочное сообщение, если это не так.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_numeric.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_numeric.htm index 948cf5943..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_numeric.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_numeric.htm @@ -1,66 +0,0 @@ - - - - - - is_numeric - - - - - - - - - - - -

is_numeric

-

Эта функция возвращает, является ли данная переменная числовым значением (real, int32, int64 или boolean) или нет. В некоторых случаях вы хотите проверить, имеет ли переменная в GameMaker числовое значение, и тогда вы используете эту функцию. Функция вернет true, если заданное значение является числовым, и false в противном случае.

-

-

Синтаксис:

-

is_numeric(n);

- - - - - - - - - - - - - -
АргументТипОписание
nПеременнаяThe input to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if is_numeric(val)
- {
-     current_val += val;
- }

-

Приведенный выше код проверяет переменную "val" на то, является ли она числовым значением, и если да, то добавляет его к заданной переменной.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_ptr.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_ptr.htm index f92041724..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_ptr.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_ptr.htm @@ -1,66 +0,0 @@ - - - - - - is_ptr - - - - - - - - - - - -

is_ptr

-

Эта функция возвращает, является ли данная переменная указателем или нет. В некоторых случаях вы хотите проверить и узнать, какой тип данных имеет переменная в GameMaker, и тогда вы используете эту функцию. Она возвращает true или false в зависимости от того, является ли значение указателем или нет.

-

-

Синтаксис:

-

is_ptr(n);

- - - - - - - - - - - - - -
АргументТипОписание
nПеременнаяThe argument to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !is_ptr(val)
- {
-     show_debug_message("Not a valid texture!");
- }

-

Приведенный выше код проверяет переменную "val" на наличие в ней указателя, и если это не так, то выводит сообщение в консоль отладки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_real.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_real.htm index fbdfe6cef..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_real.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_real.htm @@ -1,67 +0,0 @@ - - - - - - is_real - - - - - - - - - - - -

is_real

-

Эта функция возвращает, является ли данная переменная действительным числом (единичным, двойным или целым) или нет. В некоторых случаях вы хотите проверить, является ли переменная вещественным числом, и тогда вы используете эту функцию. Она возвращает не действительное число, а true или false, поэтому значение, например, "рыба" вернет false, а значение 200 вернет true.

-

ПРИМЕЧАНИЕ: Эта функция будет возвращать false для любых enum значения, поскольку они хранятся как int64s. Правильной функцией для проверки этого типа данных является is_int64().

-

-

Синтаксис:

-

is_real(n);

- - - - - - - - - - - - - -
АргументТипОписание
nПеременнаяThe argument to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if is_real(val)
- {
-     score += val;
- }

-

Приведенный выше код проверяет переменную "val" на то, является ли она действительным числом, и если да, то добавляет ее к счету.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_string.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_string.htm index f58101e36..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_string.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_string.htm @@ -1,66 +0,0 @@ - - - - - - is_string - - - - - - - - - - - -

is_string

-

Эта функция возвращает, является ли данная переменная строковым числом или нет. В некоторых случаях вы хотите проверить и убедиться, что переменная в GameMaker содержит строку, а не вещественное число, и тогда вы используете эту функцию. Она возвращает не строку, а true или false, поэтому значение, например, "рыба" для n вернет true, а значение 200 для n вернет false.

-

-

Синтаксис:

-

is_string(n);

- - - - - - - - - - - - - -
АргументТипОписание
nПеременнаяThe argument to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if is_string(val)
- {
-     name = "Player: " + val;
- }

-

Приведенный выше код проверяет переменную "val" на наличие в ней строки, и если она содержит строку, то добавляет ее в другую строку, которая затем присваивается переменной "name".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_struct.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_struct.htm index 7c0f5c1a8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_struct.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_struct.htm @@ -1,67 +0,0 @@ - - - - - - is_struct - - - - - - - - - - - -

is_struct

-

Эта функция проверяет, является ли предоставленное значение структурой. Если это так, возвращается true, в противном случае возвращается false.

-

Обратите внимание, что переменные методов также возвращают true, а экземпляры объектов - false.

-

-

Синтаксис:

-

is_struct(val);

- - - - - - - - - - - - - -
АргументТипОписание
valПеременнаяThe value to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if is_struct(a)
- {
-     delete(a);
- }

-

Приведенный выше код проверяет переменную на предмет того, является ли она структурой, и если функция возвращает true, то структура удаляется.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_undefined.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_undefined.htm index dfc4a0f9d..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_undefined.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_undefined.htm @@ -1,68 +0,0 @@ - - - - - - is_undefined - - - - - - - - - - - -

is_undefined

-

Эта функция возвращает, определена ли данная переменная или нет. В некоторых случаях вы хотите проверить и узнать, какой тип данных имеет переменная в GameMaker, и тогда вы используете эту функцию. Она возвращает true или false в зависимости от того, определено значение или нет.

-

ПРИМЕЧАНИЕ: Эта функция не может быть использована для проверки существования переменной. Используйте variable_instance_exists() или variable_global_exists() вместо этого.

-

-

Синтаксис:

-

is_undefined(n);

- - - - - - - - - - - - - -
АргументТипОписание
nПеременнаяThe argument to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

var val = ds_map_find_value(map, 13);
- if (is_undefined(val))
- {
-     show_debug_message("Map entry does not exist!");
- }

-

Приведенный выше код проверяет переменную "val" на то, является ли она неопределенной или нет, и показывает отладочное сообщение, если это так.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_vec3.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_vec3.htm index 51ace7718..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_vec3.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_vec3.htm @@ -1,66 +0,0 @@ - - - - - - is_vec3 - - - - - - - - - - - -

is_vec3

-

В некоторых случаях вы хотите проверить и узнать, какой тип данных имеет переменная в GameMaker, и тогда вы используете эту функцию. Она возвращает true или false в зависимости от того, является ли значение трехзначным вектором или нет.

-

-

Синтаксис:

-

is_vec3(n);

- - - - - - - - - - - - - -
АргументТипОписание
nПеременнаяThe argument to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !is_vec3(val)
- {
-     show_debug_message("Not a 3 value vector!");
- }

-

Приведенный выше код проверяет переменную "val" на наличие в ней vec3, и если это не так, то выводит сообщение в консоль отладки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_vec4.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_vec4.htm index c07629bf2..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_vec4.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/is_vec4.htm @@ -1,66 +0,0 @@ - - - - - - is_vec4 - - - - - - - - - - - -

is_vec4

-

В некоторых случаях вы хотите проверить и узнать, какой тип данных имеет переменная в GameMaker, и тогда вы используете эту функцию. Она возвращает true или false в зависимости от того, является ли значение вектором из 4 значений или нет.

-

-

Синтаксис:

-

is_vec4(n);

- - - - - - - - - - - - - -
АргументТипОписание
nПеременнаяThe argument to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !is_vec4(val)
- {
-     show_debug_message("Not a 4 value vector!");
- }

-

Приведенный выше код проверяет переменную "val" на наличие в ней vec4, и если это не так, то выводит сообщение в консоль отладки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/method.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/method.htm index 42b20076e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/method.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/method.htm @@ -1,75 +0,0 @@ - - - - - - method - - - - - - - - - - - -

method

-

С помощью этой функции можно привязать существующую функцию (или метод) к данному экземпляру или структуре, создав новую переменную метода, которую можно использовать позже.

-

Вы указываете ID экземпляра, который нужно использовать (экземпляр, который активен в комнате, а не индекс объекта) или ссылку на структуру, а также ID функции (или ссылку на метод), которую вы хотите связать. Функция вернет новый метод, который может быть вызван из переменной, которой она присвоена (см. пример кода ниже).

-

Возвращаемый метод будет "привязан" к данному экземпляру или структуре, то есть он всегда будет выполняться в области видимости этого экземпляра/структуры.

-

Вы можете связывать как встроенные функции, так и определенные пользователем функции/методы, а также указывать undefined в качестве аргумента экземпляра/структуры, что означает, что текущая область видимости будет использована для привязки. self область видимости будет использоваться для связывания.

-

-

Синтаксис:

-

method(struct_ref_or_instance_id, func);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
struct_ref_or_instance_id Идентификаторструктуры или экземпляраThe unique reference or ID value of the struct or instance to use (can be self или undefined)
funcФункция или методсценария The ID of the function (or method reference) to use
-

-

Возвращается:

-

Method

-

-

Пример:

-

var _inst = instance_position(mouse_x, mouse_y, obj_Enemy);
- if (instance_exists(_inst))
- {
-     enemy_func = method(_inst, enemy_ai);
- }

-

Приведенный выше код проверяет, существует ли экземпляр врага в позиции мыши. Если да, то метод enemy_ai привязывается к экземпляру врага и возвращается как новая переменная метода "enemy_func".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/method_get_index.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/method_get_index.htm index a79513bf8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/method_get_index.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/method_get_index.htm @@ -1,67 +0,0 @@ - - - - - - method_get_index - - - - - - - - - - - -

method_get_index

-

С помощью этой функции вы можете получить индекс сценария, в котором был определен метод. Если метод не был определен в скрипте, то функция вернет -1, в противном случае она вернет значение индекса для скрипта.

-

-

Синтаксис:

-

method_get_index(method);

- - - - - - - - - - - - - -
АргументТипОписание
methodМетодThe method variable to check
-

-

Возвращается:

-

Script Asset or Real

-

-

Пример:

-

var _index = method_get_index(light_setup);
- if (_index != undefined)
- {
-     show_debug_message(script_get_name(_index));
- }

-

Приведенный выше код проверит индекс скрипта на наличие метода "light_setup", и если он не равен -1, то выведет имя скрипта в консоль.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/method_get_self.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/method_get_self.htm index 4021e4c7f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/method_get_self.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/method_get_self.htm @@ -1,62 +0,0 @@ - - - - - - method_get_self - - - - - - - - - - - -

method_get_self

-

С помощью этой функции вы можете получить идентификатор экземпляра или ссылку на структуру, которая является контекстом, используемым при вызове метода. self контекст, используемый при вызове метода. Если переменная не является методом, то функция вернет undefined. Обратите внимание, что функция также может вернуть константу pointer_null, в этом случае во время вызова используется текущий self.

-

-

Синтаксис:

-

method_get_self(method);

- - - - - - - - - - - -
АргументТипОписание
methodThe method variable to check.
-

-

Возвращается:

-

Instance IDStruct, undefined, or pointer_null

-

-

Пример:

-

var _self = method_get_self(light_properties);
- show_debug_message(string(_self));

-

Приведенный выше код получает контекст self для заданной переменной метода и выводит его на консоль.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/ptr.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/ptr.htm index 093f36f56..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/ptr.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/ptr.htm @@ -1,66 +0,0 @@ - - - - - - ptr - - - - - - - - - - - -

ptr

-

Эта функция пытается преобразовать заданное значение в тип данных указателя, где значение должно быть либо real, либо string, либо int64, либо int32, либо ptr. Любой другой вариант приведет к аварийному завершению игры с сообщением об ошибке.

-

-

Синтаксис:

-

ptr(n);

- - - - - - - - - - - - - -
АргументТипОписание
nВещественный, строка или указательThe value to convert.
-

-

Возвращается:

-

Pointer

-

-

Пример:

-

if !is_ptr(val)
- {
-     val = ptr(application_surface);
- }

-

Приведенный выше код проверяет переменную "val" на наличие в ней указателя, и если его нет, то ему присваивается указатель.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/real.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/real.htm index d72fa0b58..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/real.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/real.htm @@ -1,64 +0,0 @@ - - - - - - real - - - - - - - - - - - -

real

-

Эта функция может быть использована для преобразования заданной строки в вещественное число. При использовании этой функции учитываются цифры, знаки минус, десятичные точки и экспоненциальные части в строке, в то время как другие символы (например, буквы) вызовут ошибку будет выброшена. Если вы знаете или подозреваете, что в строке могут быть другие символы, вы можете использовать функцию string_digits() для удаления всех нечисловых символов, прежде чем использовать эту функцию для преобразования полученной строки в действительное число.

-

 

-

Синтаксис:

-

real(string)

- - - - - - - - - - - - - -
АргументТипОписание
stringStringThe string to be converted to a real value.
-

 

-

Возвращается:

-

Real

-

 

-

Пример:

-

var t_str = string_digits(input_str);
- age = real(t_str);

-

Приведенный выше код примет входную строку, очистит ее от всех символов, кроме цифр, а затем установит переменную "age" для хранения реального числового значения возвращаемой строки.

-

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/typeof.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/typeof.htm index 14e078ffb..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/typeof.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/typeof.htm @@ -1,144 +0,0 @@ - - - - - - typeof - - - - - - - - - - - -

typeof

-

Эта функция возвращает тип данных любой заданной переменной в виде строки. Возможные возвращаемые значения перечислены в таблице ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
СтрокаОписание
"number"Переменная содержит вещественное число (с плавающей точкой) - оно может включать NaN и infinity
"string"Переменная содержит строку
"array"Переменная ссылается на массив
"bool"Переменная содержит булево значение (true / false).
"int32"Переменная содержит 32-битное целое число
"int64"Переменная содержит 64-битное целое число
"ptr"Переменная содержит указатель
"undefined"Переменная не определена
"null"Переменная имеет нулевое значение (в норме это не должно наблюдаться)
"vec3"Переменная содержит вектор из 3 значений
"vec4"Переменная содержит вектор из 4 значений
"method"Переменная содержит ссылку на функцию
"struct"Переменная содержит ссылку на структуру
"ref"Переменная содержит ссылку на экземпляр
"unknown"Значение неизвестно. Это никогда не должно встречаться и означает, что что-то пошло не так на самом базовом уровне, например, перезапись памяти.
-

Обратите внимание, что бывают случаи, когда эта функция может не вернуть правильное значение для метода. Рассмотрим следующие два определения функций:

-

a = function()
- {
-     // something
- }
-
- function b()
- {
-     // Something
- } -

-

Технически, они оба считаются методами, так как связывают функцию с переменной области видимости экземпляра, однако вызов typeof() на функцию b вернет "число", а не "метод", в то время как вызов на a вернет "метод". Это связано с тем, что методам, созданным подобно методу b, присваиваются индексы сценария (которые являются целочисленными значениями), поскольку именно так компилятор распознает функции сценария, даже если функция не была определена в сценарии.

-

-

Синтаксис:

-

typeof(variable);

- - - - - - - - - - - - - -
АргументТипОписание
variableЛюбойThe variable to get the data type of.
-

-

Возвращается:

-

String (see table above)

-

-

Пример:

-

var _str = typeof(global.ExtensionInput);
- show_debug_message(" global.ExtensionInput is a " + _str);

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_global_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_global_exists.htm index 8aa85d401..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_global_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_global_exists.htm @@ -1,66 +0,0 @@ - - - - - - variable_global_exists - - - - - - - - - - - -

variable_global_exists

-

С помощью этой функции вы можете проверить, существует ли переменная в глобальной области видимости или нет. Вы задаете имя глобальной переменной, которую нужно проверить, в виде строки (см. пример кода ниже), и функция вернет true, если глобальная переменная с заданным именем существует, или false в противном случае.

-

-

Синтаксис:

-

variable_global_exists(name);

- - - - - - - - - - - - - -
АргументТипОписание
nameСтрокаThe name of the global variable to check for (as a string)
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !variable_global_exists("enemy_num")
- {
-     global.enemy_num = instance_number(obj_Enemey_Parent);
- }

-

Приведенный выше код проверит, существует ли глобальная переменная "enemy_num", и если нет, то она будет создана и ей будет задано значение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_global_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_global_get.htm index 34dd9cb2f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_global_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_global_get.htm @@ -1,65 +0,0 @@ - - - - - - variable_global_get - - - - - - - - - - - -

variable_global_get

-

С помощью этой функции вы можете получить значение из заданной именованной глобальной переменной. Вы указываете имя глобальной переменной, значение которой необходимо получить, в виде строки (см. пример кода ниже), и функция возвращает значение, хранящееся в глобальной переменной, или undefined, если переменная не существует.

-

ВАЖНО! Если глобальная переменная, которую вы получаете, не существует, то функция вернет ключевое слово undefined, и вы можете получить ошибки, которые остановят работу игры, поэтому, если вы сомневаетесь, используйте функцию variable_global_exists сначала.

-

-

Синтаксис:

-

variable_global_get(name);

- - - - - - - - - - - -
АргументТипОписание
nameThe name of the global variable to get (as a string)
-

-

Возвращается:

-

Variable (any data type) or undefined (if the named variable does not exist)

-

-

Пример:

-

if variable_global_exists("enemy_num")
- {
-     show_debug_message("enemy_num = " + string(variable_global_get("enemy_num"));)
- }

-

Приведенный выше код проверит, существует ли глобальная переменная, и если да, то выведет ее на консоль.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_global_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_global_set.htm index 3335ac26f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_global_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_global_set.htm @@ -1,70 +0,0 @@ - - - - - - variable_global_set - - - - - - - - - - -

variable_global_set

-

С помощью этой функции вы можете установить значение заданной глобальной переменной. Вы указываете имя глобальной переменной, значение которой нужно установить, в виде строки (см. пример кода ниже), а затем значение, которое нужно установить (это может быть любой допустимый тип данных). Если глобальная переменная еще не существует в игре, она будет создана, а затем ей будет присвоено значение.

-

 

-

Синтаксис:

-

variable_global_set(name, val);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
nameStringThe name of the global variable to set (as a string)
valAnyThe value to set the global variable to
-

 

-

Возвращается:

-

N/A

-

 

-

Пример:

-

if !variable_global_exists("enemy_num")
- {
-     variable_global_set("enemy_num", 0);
- }

-

Приведенный выше код проверит, существует ли глобальная переменная, и если нет, то она будет создана и установлена в 0.

-

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_exists.htm index 8bc23b12c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_exists.htm @@ -1,76 +0,0 @@ - - - - - - variable_instance_exists - - - - - - - - - - - -

variable_instance_exists

-

С помощью этой функции вы можете проверить, существует ли переменная области видимости экземпляра или нет. Вы предоставляете уникальное значение ID экземпляра (которое можно найти в свойствах экземпляра в редакторе комнаты или оно возвращается при вызове функции), а также имя переменной для проверки в виде строки (см. пример кода ниже). instance_create_layer()), а также имя переменной для проверки в виде строки (см. пример кода ниже). Функция вернет true, если переменная с заданным именем существует для данного экземпляра, и false в противном случае.

-

-

Синтаксис:

-

variable_instance_exists(instance_id, name);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
instance_idИдентификатор экземпляраThe unique ID value of the instance to check
nameСтрокаThe name of the variable to check for
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !variable_instance_exists(id, "shields")
- {
-     shields = 0;
- }

-

Приведенный выше код проверит, существует ли переменная "shields" в экземпляре, выполняющем код, и если нет, то она будет создана и инициализирована в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_get.htm index 9efb9b6b4..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_get.htm @@ -1,81 +0,0 @@ - - - - - - variable_instance_get - - - - - - - - - - - -

variable_instance_get

-

С помощью этой функции вы можете получить значение из заданной именованной переменной. Вы предоставляете уникальное значение ID экземпляра (которое можно найти в свойствах экземпляра в редакторе комнаты или оно возвращается при вызове функции), а также имя переменной, значение которой нужно получить в виде строки (см. пример кода ниже). instance_create_layer()), а также имя переменной, значение которой нужно получить в виде строки (см. пример кода ниже). Функция вернет значение переменной или undefined, если переменная не существует.

-

ВАЖНО! Если переменная, которую вы получаете, не существует, то функция вернет ключевое слово undefined, и вы можете получить ошибки, которые остановят работу игры, поэтому, если вы сомневаетесь, используйте функцию variable_instance_exists сначала.

-

-

Синтаксис:

-

variable_instance_get(instance_id, name);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
instance_idИдентификатор экземпляраThe unique ID value of the instance to use
nameСтрокаThe name of the variable to get (as a string)
-

-

Возвращается:

-

Variable (any data type) or undefined (if the named variable does not exist)

-

-

Пример:

-

if variable_instance_exists(id, "shields")
- {
-     var ss = variable_instance_get(id, "shields");
- }
- else
- {
-     var ss = -1;
- }

-

Приведенный выше код проверяет, существует ли переменная, и если существует, то значение, которое она содержит, извлекается и сохраняется в локальной переменной. Если она не существует, то локальная переменная устанавливается в -1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_get_names.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_get_names.htm index 0e7902809..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_get_names.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_get_names.htm @@ -1,75 +0,0 @@ - - - - - - variable_instance_get_names - - - - - - - - - - - -

variable_instance_get_names

-

С помощью этой функции вы можете получить массив, заполненный именами переменных экземпляра или глобальных переменных игры. Когда вы передаете значение ID экземпляра, каждая запись в массиве будет строкой имени переменной, соответствующей переменной области видимости экземпляра, которая была создана в экземпляре. Однако если вы передадите ключевое слово global, каждая запись в массиве будет строкой имени переменной, соответствующей переменной глобальной области видимости.

-

-

Синтаксис:

-

variable_instance_get_names(instance_id/global);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
instance_id/globalИдентификатор экземпляра или globalThe unique ID value of the instance to check or the keyword global
-

-

Возвращается:

-

Array (each entry is a string)

-

-

Пример:

-

var str = "";
- var array = variable_instance_get_names(id);
- show_debug_message("Variables for " + object_get_name(object_index) + string(id));
- for (var i = 0; i < array_length(array); i++)
- {
-     str = array[i] + ":" + string(variable_instance_get(id, array[i]));
-     show_debug_message(str);
- }

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_names_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_names_count.htm index e78082ae7..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_names_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_names_count.htm @@ -1,69 +0,0 @@ - - - - - - variable_instance_names_count - - - - - - - - - - - -

variable_instance_names_count

-

С помощью этой функции вы можете найти общее количество переменных, определенных для экземпляра. Вы указываете ID экземпляра для проверки, и функция возвращает целочисленное значение количества переменных, или (если экземпляра с заданным ID не существует) -1.

-

-

Синтаксис:

-

variable_instance_names_count(instance_id);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
instance_idИдентификатор экземпляраThe unique ID value of the instance to check.
-

-

Возвращается:

-

Real

-

-

Пример:

-

var _num = variable_instance_names_count(myinst);
- show_debug_message("Instance Variables = " + string(_num));

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_set.htm index 5995af47f..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_instance_set.htm @@ -1,81 +0,0 @@ - - - - - - variable_instance_set - - - - - - - - - - - -

variable_instance_set

-

С помощью этой функции вы можете установить значение заданной переменной в экземпляре. Вы предоставляете уникальное значение ID экземпляра (которое можно найти в Свойствах экземпляра в редакторе комнаты, или оно возвращается при вызове функции instance_create_layer()), имя переменной для установки значения в виде строки (см. пример кода ниже), и, наконец, значение для установки (может быть любым допустимым типом данных). Если переменная еще не существует в экземпляре, она будет создана, а затем ей будет присвоено значение.

-

-

Синтаксис:

-

variable_instance_set(instance_id, name, val);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
instance_idИдентификатор экземпляраThe unique ID value of the instance to use
nameСтрокаThe name of the variable to set (as a string)
valПеременнаяThe value to set the variable to
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if !variable_instance_exists(id, "shields")
- {
-     variable_instance_set(id, "shields", 0);
- }

-

Приведенный выше код проверит, существует ли переменная экземпляра в вызывающем экземпляре, и если нет, то она будет создана и установлена в 0.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_exists.htm index 3f61cbe92..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_exists.htm @@ -1,71 +0,0 @@ - - - - - - struct_exists - - - - - - - - - - - -

struct_exists

-

С помощью этой функции вы можете проверить, существует ли переменная в заданной структуре или нет. Вы передаете ссылку на структуру, которую нужно использовать, а также имя переменной, которую нужно проверить, в виде строки (см. пример кода ниже). Функция вернет true, если переменная с заданным именем существует в структуре, и false в противном случае.

-

 

-

Синтаксис:

-

struct_exists(struct, name);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
structStructThe struct reference to check
nameStringThe name of the struct variable to check for (as a string)
-

 

-

Возвращается:

-

Boolean

-

 

-

Пример:

-

if !struct_exists(mystruct, "shields")
- {
-     mystruct.shields = 0;
- }

-

Приведенный выше код проверит, существует ли переменная "shields" в данной структуре, и если нет, то она будет создана и инициализирована в 0.

-

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_get.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_get.htm index e037c6131..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_get.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_get.htm @@ -1,76 +0,0 @@ - - - - - - struct_get - - - - - - - - - - - -

struct_get

-

С помощью этой функции вы можете получить значение заданной именованной переменной в структуре. Вы передаете ссылку на struct, а также имя переменной, значение которой нужно получить, в виде строки (см. пример кода ниже). Функция вернет значение переменной или undefined, если именованная переменная не существует.

-

ВАЖНО! Если переменная, которую вы получаете, не существует, то функция вернет ключевое слово undefined, и вы можете получить ошибки, которые остановят работу игры, поэтому, если вы сомневаетесь, используйте функцию struct_exists() сначала.

-

 

-

Синтаксис:

-

struct_get(struct, name)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
structStructThe struct reference to use
nameStringThe name of the variable to get (as a string)
-

 

-

Возвращается:

-

Any (any data type) or undefined (if the named variable does not exist)

-

 

-

Пример:

-

if struct_exists(mystruct, "shields")
- {
-     var ss = struct_get(mystruct, "shields");
- }
- else
- {
-     var ss = -1;
- }

-

Приведенный выше код проверит, существует ли переменная в заданной структуре, и если существует, то значение, которое она содержит, будет извлечено и сохранено в локальной переменной. Если она не существует, то локальная переменная устанавливается в -1.

-

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_get_names.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_get_names.htm index 9e13b125a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_get_names.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_get_names.htm @@ -1,70 +0,0 @@ - - - - - - struct_get_names - - - - - - - - - - - -

struct_get_names

-

С помощью этой функции вы можете получить массив, заполненный именами переменных из структуры. Вы передаете ссылку на struct для проверки, и каждая запись в массиве будет строкой имен переменных, которые содержит struct.

-

 

-

Синтаксис:

-

struct_get_names(struct)

- - - - - - - - - - - - - -
АргументТипОписание
structStructThe struct reference to check.
-

 

-

Возвращается:

-

Array (each entry is a string)

-

 

-

Пример:

-

var str = "";
- var array = struct_get_names(mystruct);
- show_debug_message("Variables for struct: " + string(array));
- for (var i = 0; i < array_length(array); i++;)
- {
-     str = array[i] + ":" + string(struct_get(mystruct, array[i]));
-     show_debug_message(str);
- }

-

Приведенный выше код получит массив имен переменных для заданной структуры и затем отобразит их вместе с их значениями в отладочном выводе.

-

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_names_count.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_names_count.htm index 0b388e5ed..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_names_count.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_names_count.htm @@ -1,64 +0,0 @@ - - - - - - struct_names_count - - - - - - - - - - - -

struct_names_count

-

С помощью этой функции вы можете найти общее количество переменных, определенных для структуры. Вы указываете ID структуры, которую нужно проверить, и функция возвращает целочисленное значение количества переменных, или (если структуры с заданным ID не существует) -1.

-

 

-

Синтаксис:

-

struct_names_count(struct_id)

- - - - - - - - - - - - - -
АргументТипОписание
struct_idStructThe unique ID value of the struct to check.
-

 

-

Возвращается:

-

Real

-

 

-

Пример:

-

var _num = struct_names_count(mystruct);
- show_debug_message("Struct Variables = " + string(_num));

-

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

-

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_remove.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_remove.htm index 326a45c10..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_remove.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_remove.htm @@ -1,70 +0,0 @@ - - - - - - struct_remove - - - - - - - - - - -

struct_remove

-

С помощью этой функции вы можете удалить переменную из структуры. Вы передаете идентификатор структуры, из которой нужно удалить переменную, и строковое имя переменной, которую нужно удалить.

-

 

-

Синтаксис:

-

struct_remove(struct, name);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
structStructThe struct reference to remove the variable from
nameStringThe name of the variable to remove (as a string)
-

 

-

Возвращается:

-

N/A

-

 

-

Пример:

-

if struct_exists(mystruct, "shields")
- {
-     struct_remove(mystruct, "shields");
- }

-

Приведенный выше код проверит, существует ли заданная переменная в заданной структуре, и если да, то она будет удалена.

-

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_set.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_set.htm index 3b237fc41..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_set.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/variable_struct_set.htm @@ -1,75 +0,0 @@ - - - - - - struct_set - - - - - - - - - - -

struct_set

-

С помощью этой функции вы можете установить значение заданной переменной в структуре. Вы передаете ссылку на struct, а также имя переменной, значение которой нужно установить, в виде строки (см. пример кода ниже), и, наконец, значение, которое нужно установить (это может быть любой допустимый тип данных). Если переменная еще не существует в структуре, она будет создана, а затем ей будет присвоено значение.

-

 

-

Синтаксис:

-

struct_set(struct, name, val);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
structStructThe struct reference to set
nameStringThe name of the variable to set (as a string)
valAnyThe value to set the variable to
-

 

-

Возвращается:

-

N/A

-

 

-

Пример:

-

if !struct_exists(mystruct, "shields")
- {
-     struct_set(mystruct, "shields", 0);
- }

-

Приведенный выше код проверит, существует ли заданная переменная в заданной структуре, и если нет, то она будет создана и установлена в 0.

-

 

-

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/Web_And_HTML5.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/Web_And_HTML5.htm index 411719810..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/Web_And_HTML5.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/Web_And_HTML5.htm @@ -1,72 +0,0 @@ - - - - - - Web и HTML5 - - - - - - - - - - -

Web и HTML5

-

GameMaker предоставляет различные функции для взаимодействия с интернетом или сервером, и их можно использовать на всех доступных целевых платформах. К таким функциям относятся:

- -

-

Помимо общих функций, перечисленных выше, целевой HTML5 имеет некоторые дополнительные веб-функции, которые специально разработаны для использования играми, ориентированными на него:

- -

-

Помимо этих функций для целевого модуля HTML5, существует также специальная переменная JavaScript, которую можно использовать в тех редких случаях, когда содержимое папки html5game хранится в совершенно другом месте (URL). Обычно этот путь жестко закодирован в файле JavaScript и является относительным к месту, откуда вызывается JavaScript, но вы можете установить переменную g_GameMakerHTML5Dir перед вызовом сценария игры, и игра будет запущена из вновь определенного места. Например:

-

<script>var g_GameMakerHTML5Dir = "http://mygamealternatedirectory.com/";</script>

-

Также стоит отметить, что вы можете пометить функции сценария с помощью префикса gmcallback_, что означает, что они не будут обфусцированы при компиляции проекта для HTML5. Это очень удобно при использовании перечисленных выше функций clickable_* (более подробную информацию можно найти здесь).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/analytics_event.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/analytics_event.htm index 8d3bfb9b1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/analytics_event.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/analytics_event.htm @@ -1,63 +0,0 @@ - - - - - - analytics_event - - - - - - - - - - -

analytics_event

-

Эта функция отправит указанный текст провайдеру аналитики, который вы установили через опции HTML5 Game Options. Эту функцию можно использовать для создания пользовательской аналитики для отслеживания чего-либо, выходящего за рамки используемого провайдера.

-

-

Синтаксис:

-

analytics_event(string);

- - - - - - - - - - - -
АргументТипОписание
stringA string to send to the provider
-

-

Возвращается:

-

-

-

Пример:

-

if hs_new
- {
-     analytics_event("New hiscore of " + string (score));
- }

-

Приведенный выше код проверит переменную на наличие true, и если это так, то будет запущено специальное аналитическое событие с указанной строкой.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/analytics_event_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/analytics_event_ext.htm index bb8296909..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/analytics_event_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/analytics_event_ext.htm @@ -1,73 +0,0 @@ - - - - - - analytics_event_ext - - - - - - - - - - -

analytics_event_ext

-

Эта функция отправит указанный текст поставщику аналитики, которого вы настроили через опции HTML5 Game Options. Эта функция может быть использована для создания пользовательской аналитики для отслеживания чего-либо - а также принимать пользовательские пары параметров/значений, где параметр - строка, а значение - действительное число. Для Google Analytics вы можете добавить только одну дополнительную пару, в то время как Flurry принимает до - 7.

-

-

Синтаксис:

-

analytics_event_ext(string, string_param, value);

- - - - - - - - - - - - - - - - - - - -
АргументТипОписание
stringA string to send to the provider.
string_param[0 -9]The parameter to send (a string).
value[0 - 9]The value of the parameter (a real number).
-

-

Возвращается:

-

-

-

Пример:

-

var num, time;
ini_open("Options.ini"); -
num = ini_read_real("Data", "Plays", 0);
num += 1;
time = current_time;
analytics_event_ext(GAME_NAME, "Plays", num, "Time", time);
ini_write_real("Data", "Plays", - num);
ini_close(); -

-

Приведенный выше код получит информацию об игре из ini-файла, а также текущее время и затем отправит эти данные поставщику аналитики.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/browser_height.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/browser_height.htm index 5c5edff6c..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/browser_height.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/browser_height.htm @@ -1,68 +0,0 @@ - - - - - - browser_height - - - - - - - - - - -

browser_height

-

В этой переменной хранится высота (в пикселях) браузера, в котором запускается игра. Если браузер отсутствует, то возвращается размер окна. на следующем рисунке показано, как эта переменная связана с остальными функциями позиционирования, доступными через функции окна.

-

HTML5 canvas position examaple

-

Синтаксис:

-

browser_height

-

-

Возвращается:

-

-

-

Пример:

-

if (browser_height > window_get_height()) || (browser_width > window_get_width())
- {
-     var xx, yy;
-     if (browser_width > window_get_width())
-     {
-         xx = (browser_width - window_get_width()) / 2;
-     }
-     else
-     {
-         xx = 0;
-     }
-     if (browser_height > window_get_height())
-     {
-         yy = (browser_height - window_get_height()) / 2;
-     }
-     else
-     {
-         yy = 0;
-     }
-     window_set_position(xx, yy);
- }

-

Приведенный выше код проверяет ширину и высоту браузера на предмет того, не превышает ли они ширину и высоту текущего окна. Если они больше, то вычисляется новая позиция окна игры в браузере.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/browser_input_capture.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/browser_input_capture.htm index 48dfa005a..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/browser_input_capture.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/browser_input_capture.htm @@ -1,62 +0,0 @@ - - - - - - browser_input_capture - - - - - - - - - - -

browser_input_capture

-

С помощью этой функции вы можете установить, должно ли окно браузера захватывать весь ввод (установите ее в false) или игра должна захватывать ввод (установите ее в true). Обратите внимание, что эта функция предназначена только для использования с модулем HTML5.

-

-

Синтаксис:

-

browser_input_capture(enable);

- - - - - - - - - - - - - -
АргументТипОписание
enableБулевоEnable or disable game input capture
-

-

Возвращается:

-

N/A

-

-

Пример:

-

browser_input_capture(true);

-

Приведенный выше код устанавливает игру на захват всего ввода браузера на целевой платформе HTML5.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/browser_width.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/browser_width.htm index 5212f675e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/browser_width.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/browser_width.htm @@ -1,68 +0,0 @@ - - - - - - browser_width - - - - - - - - - - -

browser_width

-

В этой переменной хранится ширина (в пикселях) браузера, в котором запускается игра. Если браузер отсутствует, то возвращается размер окна. на следующем рисунке показано, как эта переменная связана с остальными функциями позиционирования, доступными через функции окна.

-

HTML5 canvas position examaple

-

Синтаксис:

-

browser_width

-

-

Возвращается:

-

-

-

Пример:

-

if (browser_height > window_get_height()) || (browser_width > window_get_width())
- {
-     var xx, yy;
-     if (browser_width > window_get_width())
-     {
-         xx = (browser_width - window_get_width()) / 2;
-     }
-     else
-     {
-         xx = 0;
-     }
-     if (browser_height > window_get_height())
-     {
-         yy = (browser_height - window_get_height()) / 2;
-     }
-     else
-     {
-         yy = 0;
-     }
-     window_set_position(xx, yy);
- }

-

Приведенный выше код проверяет ширину и высоту браузера на предмет того, не превышает ли они ширину и высоту текущего окна. Если они больше, то вычисляется новая позиция окна игры в браузере.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_add.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_add.htm index 7e7fc3c11..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_add.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_add.htm @@ -1,170 +0,0 @@ - - - - - - clickable_add - - - - - - - - - - - -

clickable_add

-

С помощью этой функции вы можете создать пользовательскую, кликабельную иконку, которая действует как "кнопка" вне игровой канвы, но в самом окне браузера. Функция возвращает значение ID, которое должно быть сохранено в переменной для использования во всех последующих функциях кнопки, которые ссылаются на новую кликабельную иконку. Эта функция очень полезна для предотвращения создания браузером всплывающего окна при нажатии на кнопку, поскольку все это делается в самом GameMaker.

-

Сначала необходимо задать позицию, которая является относительной по отношению к (0,0) окна браузера (левый верхний угол), а затем дать текстуре страницы запись для sprite, которую вы хотите видеть у значка кнопки (см: sprite_get_tpe()). Затем вы можете указать либо URL-адрес для открытия, либо скрипт (из браузера активов GameMaker) для открытия или запуска. Параметр "target", который вы указываете, совпадает со стандартным значением JavaScript "name" при использовании метода open() (имейте в виду, что все значения, кроме '_self', могут привести к блокировке браузера или к тому, что браузер спросит пользователя, разрешить ли ему это), а аргумент "params" совпадает с параметром JavaScript "specs" для управления свойствами нового окна/вкладки (не все браузеры могут поддерживать все функции). Если вы используете иконку для запуска внутреннего сценария, эти два последних аргумента можно оставить пустыми строками "".

-

Действительными целями являются:

- - - - - - - - - - - - - - - - - - - - - - - -
ЦельОписание
_blankОткрывает связанный документ в новом окне или вкладке.
_selfОткрывает связанный документ в том же фрейме, в котором он был щелкнут (по умолчанию).
_родительОткрывает связанный документ в родительском фрейме.
_topОткрывает связанный документ в полном тексте окна.
-

-

Доступными параметрами являются:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПараметрыОписание
'height=[px]'Высота окна, минимальное значение - 100.
'width=[px]'Ширина окна, минимальное значение - 100.
'left=[px]'Левая позиция окна.
'top=[px]'Верхнее положение окна (только в IE).
'location=[boolean]'Отображать или нет поле адреса (по умолчанию 1).
'menubar=[boolean]'Отображать или нет строку меню (по умолчанию 1).
'resizable=[boolean]'Можно ли изменять размеры окна (по умолчанию 1).
'scrollbars=[boolean]'Отображать или нет полосы прокрутки (по умолчанию 1).
'status=[boolean]'Добавлять или нет строку состояния (по умолчанию 1).
'titlebar=[boolean]'Отображать или нет строку заголовка. Этот параметр игнорируется, если вызывающее приложение не является HTML-приложением или доверенным диалоговым окном (по умолчанию 1);
'toolbar=[boolean]'Отображать или нет панель инструментов браузера (по умолчанию - да).
-


- Также стоит отметить, что если передаваемый вами аргумент URL является именем функции скрипта (т.е. не начинается с "http://") И скрипт называется gmcallback_*, то вы можете получить прямую передачу в html5-событие. Имена функций скриптов GameMaker не обфусцируются, если они начинаются с gmcallback_.

-

-

Синтаксис:

-

clickable_add(x, y, tpe, url, target, params);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x position within the window.
yРеальноThe y position within the window.
tpeВвод страницы текстурыThe texture page entry for the sprite to be used.
urlСтрокаThe URL (website address) to link to, or the script to be run.
targetСтрокаThis is the target area to open the URL in (see description).
paramsСтрокаThe various parameters for the icon (see description).
-

-

Возвращается:

-

Clickable ID

-

-

Пример:

-

home_but = clickable_add(32, 32, sprite_get_tpe(spr_MS_Home, 0), "http://macsweeney_games.com", "_blank", "width=700, height=500, menubar=0, toolbar=0, scrollbars=0");

-

Приведенный выше код создает кликабельную DOM-иконку в позиции (32, 32) страницы, на которой запущен игровой холст. Иконка использует sprite, указанный на странице текстуры как "spr_MS_Home", и при нажатии на иконку откроется новое окно для указанного URL и с определенными свойствами для этого окна.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_add_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_add_ext.htm index d99063d07..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_add_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_add_ext.htm @@ -1,100 +0,0 @@ - - - - - - clickable_add_ext - - - - - - - - - - - -

clickable_add_ext

-

С помощью этой функции вы можете создать пользовательскую, кликабельную иконку, которая действует как "кнопка" вне игровой канвы, но в самом окне браузера. Функция возвращает значение ID, которое должно быть сохранено в переменной для использования во всех последующих функциях кнопки, которые ссылаются на новую кликабельную иконку. Эта функция очень полезна для предотвращения создания браузером всплывающего окна при нажатии на кнопку, поскольку все это делается в самом GameMaker.

-

Эта функция работает точно так же, как и clickable_add() где необходимо задать позицию относительно (0,0) окна браузера, указать страницу текстуры для sprite, которую вы хотите видеть на значке кнопки (см: sprite_get_tpe()), указать URL для открытия или скрипт (из браузера активов GameMaker) для открытия или запуска, затем задать цель и параметры для использования. Однако эта функция также имеет две дополнительные опции, которые позволяют установить альфа-фактор значка от 0 (полностью прозрачный) до 1 (полностью непрозрачный) и масштаб значка, который представляет собой множитель, применяемый к используемому значению sprite. Таким образом, значение 1 - это масштаб по умолчанию, в то время как (например) 0,5 - это половинный масштаб, а 2 - двойной.

-

Также стоит отметить, что если передаваемый вами аргумент URL является именем функции скрипта (т.е. не начинается с "http://") И скрипт называется gmcallback_*, то вы можете получить прямую передачу в html5-событие. Имена функций скриптов GameMaker не обфусцируются, если они начинаются с gmcallback_.

-

-

Синтаксис:

-

clickable_add_ext(x, y, tpe, url, target, params, alpha, scale);

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
xРеальноThe x position within the window.
yРеальноThe y position within the window.
tpeВвод страницы текстурыThe texture page entry for the sprite to be used.
urlСтрокаThe URL (website address) to link to, or the script to be run.
targetСтрокаThis is the target area to open the URL in (see description).
paramsСтрокаThe various parameters for the icon (see description).
alphaРеальноThe image alpha of the icon (default 1).
scaleРеальноThe scale of the icon (default 1).
-

-

Возвращается:

-

Clickable ID

-

-

Пример:

-

home_but = clickable_add_ext(32, 32, sprite_get_tpe(spr_MS_Home, 0), "http://macsweeney_games.com", "_blank", "width=700, height=500, menubar=0, toolbar=0, scrollbars=0", 1, 2);

-

Приведенный выше код создает кликабельную DOM-иконку в позиции (32, 32) страницы, на которой запущен игровой холст. Иконка использует sprite, указанный на странице текстуры как "spr_MS_Home", и при нажатии на иконку откроется новое окно для указанного URL и с определенными свойствами для этого окна. Кнопка также будет масштабирована до удвоенного размера исходного sprite и альфа изображения равна 1.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_change.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_change.htm index 893b8c537..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_change.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_change.htm @@ -1,81 +0,0 @@ - - - - - - clickable_change - - - - - - - - - - -

clickable_change

-

С помощью этой функции вы можете изменить sprite и положение кликабельного значка, созданного ранее с помощью функции clickable_add(). Обратите внимание, что позиция основана на позиции окна, а не холста (0,0), и что ссылка на sprite должна быть сделана непосредственно со страницы текстуры (см: sprite_get_tpe()).

-

-

Синтаксис:

-

clickable_change(index, tpe, x, y)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexКликабельный идентификаторThe index of the clickable icon to change.
tpeВвод страницы текстурыThe texture page entry for the sprite to be used.
xРеальноThe new x position within the window.
yРеальноThe new y position within the window.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

switch (room)
- {
-     case rm_Menu: clickable_change(global.Help_Icon, sprite_get_tpe(spr_MS_Help, 1), 32, 32); break;
-     case rm_Game: clickable_change(global.Help_Icon, sprite_get_tpe(spr_MS_Help, 0), 200, 32); break;
- }

-

Приведенный выше код будет изменять индекс изображения и положение кликабельной иконки, индексируемой в переменной "global.Help", в зависимости от текущей комнаты.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_change_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_change_ext.htm index 2c896d322..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_change_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_change_ext.htm @@ -1,91 +0,0 @@ - - - - - - clickable_change_ext - - - - - - - - - - -

clickable_change_ext

-

С помощью этой функции вы можете изменить sprite и положение кликабельного значка, созданного ранее с помощью функции clickable_add(). Следует помнить, что позиция основывается на позиции окна, а не холста (0,0), и что ссылка на sprite должна быть сделана непосредственно со страницы текстуры (см: sprite_get_tpe()). Эта функция также позволяет изменить масштаб используемого sprite (в виде множителя, так что 1 - это значение по умолчанию, 0,5 - половина, а 2 - удвоение) и значение альфа от 0 (полностью прозрачный) до 1 (полностью непрозрачный) для конечного значка на экране.

-

-

Синтаксис:

-

clickable_change_ext(index, tpe, x, y, alpha, scale)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexКликабельный идентификаторThe index of the clickable icon to change.
tpeВвод страницы текстурыThe texture page entry for the sprite to be used
xРеальноThe new x position within the window.
yРеальноThe new y position within the window.
scaleРеальноThe scale of the icon (default 1).
alphaРеальноThe image alpha of the icon (default 1).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

switch (room)
- {
-     case rm_Menu: clickable_change_ext(global.Help_Icon, sprite_get_tpe(spr_MS_Help, 1), 32, 32, 2, 1); break;
-     case rm_Game: clickable_change_ext(global.Help_Icon, sprite_get_tpe(spr_MS_Help, 0), 200, 32, 1, 0.5); break;
- }

-

Приведенный выше код изменит индекс изображения и положение кликабельной иконки, индексируемой в переменной "global.Help", в зависимости от текущей комнаты, изменяя при этом масштаб и альфа иконки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_delete.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_delete.htm index 1308e6c2b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_delete.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_delete.htm @@ -1,65 +0,0 @@ - - - - - - clickable_delete - - - - - - - - - - -

clickable_delete

-

Эта функция должна быть использована для удаления кликабельного значка, ранее созданного с помощью функции clickable_add() из игрового окна.

-

-

Синтаксис:

-

clickable_delete(index);

- - - - - - - - - - - - - -
АргументТипОписание
indexКликабельный идентификаторIndex of the clickable icon to remove.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

if clickable_exists(global.Help_Icon)
- {
-     clickable_delete(global.Help_Icon);
- }

-

Приведенный выше код удаляет из окна игры кликабельную иконку, индексированную в глобальной переменной "Help_Icon", если она существует.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_exists.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_exists.htm index a37004e8e..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_exists.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_exists.htm @@ -1,66 +0,0 @@ - - - - - - clickable_exists - - - - - - - - - - - -

clickable_exists

-

Эта функция возвращает, была ли создана кликабельная DOM-иконка с указанным индексом или нет. Обратите внимание, что значение, используемое для проверки, должно быть инициализировано ранее, иначе вы получите ошибку, приводящую к закрытию GameMaker.

-

-

Синтаксис:

-

clickable_exists(index);

- - - - - - - - - - - - - -
АргументТипОписание
indexКликабельный идентификаторThe index of the clickable to check.
-

-

Возвращается:

-

Boolean

-

-

Пример:

-

if !clickable_exists(home_but)
- {
-     home_but = clickable_add(32, 32, sprite_get_tpe(spr_MS_Home, 0), "http://macsweeney_games.com", "_blank", "width=700, height=500, menubar=0, toolbar=0, scrollbars=0");
- }

-

Приведенный выше код проверяет переменную "home_but" на предмет того, существует ли она уже, и если нет, то создает кликабельную DOM-иконку в позиции (32, 32) страницы, на которой запущен игровой холст. Иконка использует sprite, на которую ссылается страница текстуры как "spr_MS_Home", и при нажатии на иконку откроется новое окно для указанного URL и с определенными свойствами для этого окна.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_set_style.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_set_style.htm index 7e9b687ef..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_set_style.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/clickable_set_style.htm @@ -1,70 +0,0 @@ - - - - - - clickable_set_style - - - - - - - - - - -

clickable_set_style

-

Эта функция позволяет установить свойства стиля CSS для заданной кнопки с помощью пар ключ/значение в предоставленном файле DS Map. Вам необходимо предварительно создать элемент кнопки (с помощью clickable_add()) и DS Map и предоставить сохраненные индексы для каждого из них в качестве аргументов.

-

-

Синтаксис:

-

clickable_set_style(index, map)

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
indexКликабельный идентификаторThe index of the clickable icon to style.
mapИдентификатор карты DSThe index of the DS Map для установки стиля.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

var map = ds_map_create();
- ds_map_add(map, "opacity", "0.5");
- clickable_set_style(button, map);
- ds_map_destroy();

-

Приведенный выше код изменит стиль нажимаемой кнопки с индексом, хранящимся в переменной "button".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/url_get_domain.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/url_get_domain.htm index 143e711b8..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/url_get_domain.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/url_get_domain.htm @@ -1,49 +0,0 @@ - - - - - - url_get_domain - - - - - - - - - - - -

url_get_domain

-

Вы можете использовать его для получения домена, на котором воспроизводится ваша HTML5-игра.

-

-

Синтаксис:

-

url_get_domain();

-

-

Возвращается:

-

-

-

Пример:

-

dom_name=url_get_domain();

-

Это сохранит домен вашей игры в переменной "dom_name".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/url_open.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/url_open.htm index d167baef1..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/url_open.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/url_open.htm @@ -1,63 +0,0 @@ - - - - - - url_open - - - - - - - - - - -

url_open

-

Это откроет указанный URL в браузере выбранного целевого устройства или, если вы используете модуль HTML5, в текущем открытом браузере.

-
-

-

Синтаксис:

-

url_open(url);

- - - - - - - - - - - - - -
АргументТипОписание
urlСтрокаThe URL (website address) to link to.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

url_open("http://gamemaker.io");

-

Это откроет домашнюю страницу GameMaker в текущем окне.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/url_open_ext.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/url_open_ext.htm index 778e817cd..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/url_open_ext.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/url_open_ext.htm @@ -1,93 +0,0 @@ - - - - - - url_open_ext - - - - - - - - - - -

url_open_ext

-

Это откроет указанный URL в браузере выбранного целевого устройства, или, если вы используете модуль HTML5, в текущем открытом браузере. Параметр "target", который вы указываете, совпадает со стандартным значением JavaScript "name" при использовании метода open(), и вы должны знать, что все параметры, кроме "_self", могут привести к блокировке браузером или к тому, что он спросит пользователя, хочет ли он разрешить это.

-

Действительными целями являются:

- - - - - - - - - - - - - - - - - - - - - - - -
ЦельОписание
_blankОткрывает связанный документ в новом окне или вкладке (не работает, если всплывающие окна блокируются пользователем, в этом случае можно использовать функции clickable_* вместо этого).
_selfОткрывает связанный документ в том же фрейме, в котором он был щелкнут (по умолчанию).
_родительОткрывает связанный документ в родительском фрейме.
_topОткрывает связанный документ в полном тексте окна.
-
-

-

Синтаксис:

-

url_open_ext(url, target);

- - - - - - - - - - - - - - - - - - -
АргументТипОписание
urlСтрокаThe URL (website address) to link to.
targetСтрокаThis is the target area to open the URL in.
-

-

Возвращается:

-

N/A

-

-

Пример:

-

url_open_ext("http://gamemaker.io", "_blank");

-

Это откроет домашнюю страницу GameMaker в новом окне.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/url_open_full.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/url_open_full.htm index a88d7a4f3..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/url_open_full.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/url_open_full.htm @@ -1,152 +0,0 @@ - - - - - - url_open_full - - - - - - - - - - -

url_open_full

-

Это откроет указанный URL в браузере выбранного целевого устройства или, если вы используете модуль HTML5, в текущем открытом браузере. Параметр "target", который вы указываете, совпадает со стандартным значением JavaScript "name" при использовании метода open() (имейте в виду, что все значения, кроме "_self", могут привести к блокировке браузера или к тому, что он спросит пользователя, хочет ли он разрешить это), а "options" совпадает с параметром JavaScript "specs" для управления свойствами нового окна/вкладки (не все браузеры могут поддерживать все функции).

-

Действительными целями являются:

- - - - - - - - - - - - - - - - - - - - - - - -
ЦельОписание
_blankОткрывает связанный документ в новом окне или вкладке (не работает, если всплывающие окна блокируются пользователем, в этом случае можно использовать функции clickable_* вместо этого).
_selfОткрывает связанный документ в том же фрейме, в котором он был щелкнут (по умолчанию).
_родительОткрывает связанный документ в родительском фрейме.
_topОткрывает связанный документ в полном тексте окна.
-

-

Доступными вариантами являются:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПараметрыОписание
'height=[px]'Высота окна, минимальное значение - 100.
'width=[px]'Ширина окна, минимальное значение - 100.
'left=[px]'Левая позиция окна.
'top=[px]'Верхнее положение окна (только в IE).
'location=[boolean]'Отображать или нет поле адреса (по умолчанию 1).
'menubar=[boolean]'Отображать или нет строку меню (по умолчанию 1).
'resizable=[boolean]'Можно ли изменять размеры окна (по умолчанию 1).
'scrollbars=[boolean]'Отображать или нет полосы прокрутки (по умолчанию 1).
'status=[boolean]'Добавлять или нет строку состояния (по умолчанию 1).
'titlebar=[boolean]'Отображать или нет строку заголовка. Этот параметр игнорируется, если вызывающее приложение не является HTML-приложением или доверенным диалоговым окном (по умолчанию 1);
'toolbar=[boolean]'Отображать или нет панель инструментов браузера (по умолчанию - да).
-
-

-

Синтаксис:

-

url_open_full(url, target, options);

- - - - - - - - - - - - - - - - - - - - - - - -
АргументТипОписание
urlСтрокаThe URL (website address) to link to.
targetСтрокаThis is the target area to open the URL in (see description).
optionsСтрокаStandard browser options (see description).
-

-

Возвращается:

-

N/A

-

-

Пример:

-

url_open_full("http://gamemaker.io", "_blank", "resizable=0, height=200, scrollbars=0");

-

Это откроет домашнюю страницу GameMaker в новом окне, размер которого нельзя изменить, высота 200 пикселей и нет полос прокрутки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/webgl_enabled.htm b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/webgl_enabled.htm index 05e138d05..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/webgl_enabled.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Web_And_HTML5/webgl_enabled.htm @@ -1,52 +0,0 @@ - - - - - - webgl_enabled - - - - - - - - - - -

webgl_enabled

-

Эта переменная, доступная только для чтения, возвращает, включен ли WebGL (true) или нет (false) для вашей игры. Она будет работать только для игр, запускаемых через браузер (т.е. HTML5), а для всех остальных платформ она будет возвращать true.

-

-

Синтаксис:

-

webgl_enabled

-

-

Возвращается:

-

-

-

Пример:

-

if webgl_enabled
- {
-     global.quality = 1;
- }
- else global.quality = 0;

-

Приведенный выше код проверяет флаг WebGL и затем устанавливает глобальную переменную "quality" соответствующим образом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/GameMaker_Language/GameMaker_Language_Index.htm b/Manual/contents/GameMaker_Language/GameMaker_Language_Index.htm index 729c2ed3b..e69de29bb 100644 --- a/Manual/contents/GameMaker_Language/GameMaker_Language_Index.htm +++ b/Manual/contents/GameMaker_Language/GameMaker_Language_Index.htm @@ -1,45 +0,0 @@ - - - - - - {GML_Code} - - - - - - - - - - - - - -

{GML_Code}

-

GameMaker Language (также называемый просто GML) является собственным языком сценариев GameMaker. Этот язык построен таким образом, чтобы позволить пользователям создавать свои игры интуитивно понятным и гибким способом, обладая при этом всеми возможностями любого другого крупного языка программирования. Он также является основой для Визуальный GML и при необходимости может быть использован совместно с ним.

-

Раздел руководства " GML Code " состоит из следующих разделов:

- -

 

-

 

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Navigation/Bookmarks.htm b/Manual/contents/IDE_Navigation/Bookmarks.htm index 2a8df1a47..e69de29bb 100644 --- a/Manual/contents/IDE_Navigation/Bookmarks.htm +++ b/Manual/contents/IDE_Navigation/Bookmarks.htm @@ -1,44 +0,0 @@ - - - - - - Закладки - - - - - - - - - - -

Закладки

-

Еще один метод навигации по рабочему пространству - использование закладок. Вы можете добавить до 9 "закладок" в окна IDE или разделы кода/GML Visual в скриптах или событиях объектов, а затем вы можете быстро переходить между ними, используя нужную комбинацию клавиш.

-

Чтобы добавить закладку, просто выберите окно или строку кода, которую вы хотите пометить, а затем + + NumberKey[1 - 9] на WIndows или + + NumberKey[1 - 9] на Mac, и это установит закладку, пометив элемент в IDE следующим образом:

-

CTRL Icon

-

На рисунке выше мы назначили закладки под номерами 1, 2 и 4 для разных частей IDE, и теперь мы можем перемещаться от этих окон или даже закрыть их совсем, поскольку закладка позволит нам вернуться к ним в любое время позже. Для этого нужно нажать / + NumberKey[1 - 9], и если элемент с закладкой был закрыт, он будет открыт, в противном случае рабочая область перейдет к выбранной закладке.

-

ВАЖНО Закладки не сохраняются вместе с проектом или при закрытии IDE. Они действительны только для той сессии, в которой были созданы.

-

Если вы хотите удалить закладку, вам нужно просто выбрать окно или строку кода, на которую была сделана закладка, а затем повторить действия + / + NumberKey[1 - 9], которые вы использовали для ее создания.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Navigation/IDE_Input.htm b/Manual/contents/IDE_Navigation/IDE_Input.htm index a59b6ad00..e69de29bb 100644 --- a/Manual/contents/IDE_Navigation/IDE_Input.htm +++ b/Manual/contents/IDE_Navigation/IDE_Input.htm @@ -1,120 +0,0 @@ - - - - - - Вход IDE и навигация - - - - - - - - - - -

Вход IDE и навигация

-

GameMaker IDE воспринимает ввод с помощью мыши и клавиатуры, и многие операции могут выполняться с помощью одного или другого или обоих. В общем случае вы можете нажать левую кнопку мыши для выбора чего-либо, использовать / + для выбора нескольких элементов, удерживать для перетаскивания элементов в различные доки или на рабочие области, а также для открытия контекстно-зависимых меню. Обратите внимание, что если вы запускаете GameMaker на macOS системе и используете однокнопочную мышь, используйте + для получения щелчка правой кнопкой мыши .

-

Существует также большое количество сочетаний клавиш, которые можно использовать для навигации по различным элементам рабочей области и редакторам ресурсов, и мы быстро рассмотрим некоторые из наиболее важных (полный список можно найти здесь):

-
    -
  • / + "Z" : Это отменяет предыдущее действие и работает в большинстве редакторов. У вас также есть несколько уровней отмены, поэтому вы можете нажать эту кнопку несколько раз, чтобы "откатить" изменения.
  • -
  • / + "Y" : Это повторит предыдущее действие, которое было отменено, и работает в большинстве редакторов. Как и в случае с отменой, у вас есть несколько уровней повтора.
  • -
  • / + "S" : Это заставит GameMaker сохранить ваш проект.
  • -
  • / + "T" : Откроется окно Goto, которое позволяет быстро найти и перейти к любому объекту в вашей игре, а также выполнить поиск в настройках и опциях игры. Вам будет представлен список всего, и по мере ввода поискового запроса этот список будет сокращаться, например, если все ваши комнаты имеют префикс "rm_", то при вводе этого префикса список будет сокращен, чтобы показать только те активы, которые начинаются с этого имени.
  • -
-

LMB Icon

-
    -
  • / + : Откроется окно обзора рабочего пространства, которое можно использовать для быстрой навигации между элементами, открытыми в различных рабочих пространствах. Окно будет оставаться открытым, пока удерживается или , а однократное нажатие приведет к переходу к следующему элементу в окне. Отпустив клавишу быстрого доступа, вы перейдете к выбранному элементу.
    -
    - ПРИМЕЧАНИЕ Если вы переназначите привязку для этого окна, чтобы использовать несколько модификаторов (например, + + B) или одну клавишу (например, только B ), то окно останется открытым после нажатия клавиши, независимо от того, удерживаете вы ее или нет, пока вы вручную не закроете его или не выберете элемент из окна. -
  • -
-

CONTROL Icon

-
    -
  • : Откроется руководство. Обратите внимание, что при использовании GML Visual или GML кода вы также можете выбрать действие или функцию (или ключевое слово или что-либо еще), а затем нажать или щелкнуть средней кнопкой мыши , чтобы открыть руководство на соответствующей странице.
  • -
  • : С его помощью можно свернуть или развернуть все различные пристыкованные окна на сайте IDE.
  • -
-

Другие способы перемещения по рабочему пространству включают использование комбинации клавиш / + + <Arrow Keys> для перемещения между любыми открытыми окнами в указанном направлении, а нажав и удерживая среднюю кнопку мыши и перетаскивая мышь, можно перемещаться по рабочему пространству.

-

При перемещении по различным рабочим пространствам и окнам вы можете использовать правую кнопку мыши на любом текстовом поле, чтобы открыть контекстное меню, которое по умолчанию содержит следующие поля:

-

CMD Icon

-

В некоторых ситуациях эти опции могут быть развернуты в зависимости от редактора или окна, находящегося в фокусе.

-

Помимо этих способов ввода, имеется ограниченная поддержка перьевых устройств, а также специальный режим для тех, кто работает над проектами с помощью ноутбука. Оба этих режима описаны ниже:

-

Режим ноутбука

-
-

Если вы используете GameMaker на ноутбуке, то в верхней части сайта IDE есть дополнительная опция Laptop Mode:

-

- По умолчанию он включен, но при желании его можно отключить, переключив эту - кнопку. Режим ноутбука сочетается с некоторыми инструментами на сайте IDE, что значительно улучшает работу с тачпадом, упрощая три основных вида взаимодействия с мышью: - панорамирование, - масштабирование и - прокрутка. Для этого используются две клавиши-модификатора: Левая - / - и Левая - . Когда включен режим ноутбука, - Левая - / - и - Левая - "зарезервированы" для взаимодействия с мышью, например, для панорамирования редактора комнаты, где - Left - / - это масштабирование, - Левая - прокрутка и панорамирование. Прокрутка в режиме ноутбука ведет себя так же, как и панорамирование, поэтому она должна быть - интуитивно понятной и достаточно точной, чтобы вам не нужно было использовать полосу прокрутки. Обратите внимание, что, удерживая эти кнопки, вы должны просто перемещать мышь - не щелкать и не перетаскивать, а просто перемещать - и что если есть общая комбинация клавиш, которая обычно требует - использования - / - или - клавиши, вы должны использовать - Правые клавиши клавиатуры. -

-

-

-

-

-
-

Поддержка сенсорного экрана

-
-

Напоследок отметим, что IDE для GameMaker также имеет минимальную поддержку сенсорных экранов. На всех операционных системах вы можете использовать сенсорный экран для нажатия и перетаскивания элементов в основной рабочей области, и мы поддерживаем 2 одновременных - указателей, где второе нажатие будет выполнять щелчок правой кнопкой мыши. Обратите внимание, что на Windows 8 и выше GameMaker IDE также поддерживает перьевые устройства.

-

-

-

-
-


-
- На следующих страницах содержится более подробная и специфическая информация о навигации по сайту IDE, а также информация о некоторых доступных вам инструментах навигации: -

- -

-

Здесь вы также можете найти некоторые дополнительные настройки, связанные с входом IDE:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Navigation/Keyboard_Shortcuts.htm b/Manual/contents/IDE_Navigation/Keyboard_Shortcuts.htm index 97214992e..e69de29bb 100644 --- a/Manual/contents/IDE_Navigation/Keyboard_Shortcuts.htm +++ b/Manual/contents/IDE_Navigation/Keyboard_Shortcuts.htm @@ -1,1932 +0,0 @@ - - - - - - Ярлыки клавиатуры - - - - - - - - - - -

Ярлыки клавиатуры

-

В GameMaker существует огромное количество сочетаний клавиш, и хотя большинство из них отмечены на сайте IDE рядом с пунктами меню, к которым они относятся, не все из них очевидны для пользователя в самом начале. Здесь вы можете найти полный список всех сочетаний клавиш для удобства пользования. В целом, сочетания клавиш делятся на следующие три категории:

-
    -
  • Глобальные - Глобальные ярлыки - это те, которые работают независимо от того, где вы находитесь в GameMaker IDE, если только ваш фокус не находится на определенном окне или гаджете, который его отменяет.
  • -
  • Окно - ярлыки окна - это ярлыки, которые предназначены для одного окна или вкладки, если только ярлык гаджета не отменяет его.
  • -
  • Гаджет - ярлыки гаджетов очень специфичны и работают только при использовании одного гаджета (например, подборщика цветов).
  • -
-

Ниже приведен полный список ярлыков, разбитый на разделы по редакторам:

-

Общая IDE

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Привязка клавиш WindowsПривязка клавиш macOSОбласть примененияОписание
F1F1ОбщийЗапуск файла справки
F5F5Общие сведенияЗапуск текущего проекта с использованием текущих настроек цели
F6F6Общие сведенияЗапустите текущий проект с помощью отладчика
CTRL + f7CMD + f7Общие сведенияОчистка кэша компилятора
CTRL + f8CMD + f8Общие сведенияСоздание исполняемого пакета с использованием текущих настроек цели
CTRL + NCMD + NОбщие сведенияОткройте начальную страницу
CTRL + ZCMD + ZОбщие сведенияГлобальная отмена
CTRL + YCMD + YОбщие сведенияГлобальная переделка
CTRL + ECMD + EОбщие сведенияЭкспорт текущего проекта в файл YYZ
CTRL + SCMD + SОбщийСохранить текущий проект
CTRL + CCMD + CОбщийКопирование выделенного текста из любого места в IDE
CTRL + INSERTН/ДОбщийКопирование выделенного текста из любого места в IDE
CTRL + VCMD + VОбщие сведенияВставьте текст из буфера обмена в любое место в IDE
SHIFT + INSERTН/ДОбщийВставьте текст из буфера обмена в любое место в IDE
CTRL + XCMD + XОбщие сведенияВырезать выделенный текст в любом месте IDE
SHIFT + DELETEН/ДОбщие сведенияВырезать выделенный текст в любом месте IDE
CTRL + SHIFT + SCMD + SHIFT + SОбщие сведенияСохраните текущий проект, используя "Сохранить как"
CTRL + OCMD + OОбщие сведенияЗагрузка проекта с диска
CTRL + FCMD + FОбщийОткрытый поиск в сценариях
CTRL + SHIFT + FCMD + SHIFT + FОбщие сведенияОткройте окно поиска
CTRL + SHIFT + PCMD + SHIFT + PОбщие сведенияОткройте окно предпочтений
CTRL + SHIFT + [Num0 ... Num9]CMD + CTRL + [Num0 ... Num9]ОбщийУстановите или удалите закладку от 0 до 9
CTRL + [Num0 ... Num9]CMD + [Num0 ... Num9]Общие сведенияПереход к закладке от 0 до 9
CTRL + ALT + EnterCMD + ALT + EnterОбщие сведенияПанорамирование и масштабирование в текущем активном окне
CTRL + ALT + Стрелка вверхCMD + ALT + ВверхОбщие сведенияПереход к следующему окну вверх
CTRL + ALT + стрелка внизCMD + ALT + стрелка внизОбщие сведенияПереход к следующему окну вниз
CTRL + ALT + стрелка влевоCMD + ALT + стрелка влевоОбщие сведенияПереход к следующему окну слева
CTRL + ALT + стрелка вправоCMD + ALT + стрелка вправоОбщийПереход к следующему окну вправо
CTRL + ALT + Вверх + Стрелка влевоCMD + ALT + Вверх + Стрелка влевоОбщийПереход к следующему окну вверх и влево
CTRL + ALT + Вниз + Стрелка влевоCMD + ALT + Вниз + Стрелка влевоОбщийПереход к следующему окну вниз и влево
CTRL + ALT + Стрелка вверх + Стрелка вправоCMD + ALT + Стрелка вверх + Стрелка вправоОбщие сведенияПереход к следующему окну вверх и вправо
CTRL + ALT + Стрелка вниз + Стрелка вправоCMD + ALT + Стрелка вниз + Стрелка вправоОбщие сведенияПереход к следующему окну вниз и вправо
ALT + f4ALT + f4Общие сведенияВыход из IDE
-
-
f12f12ДокиРазвернуть / Свернуть все активные доки в рабочем пространстве (вручную сжатые доки не будут разворачиваться)
SHIFT + f12SHIFT + f12ДокиПринудительное расширение всех доков в рабочем пространстве
-
-
CTRL + WCMD + WРабочее пространствоЗакрыть текущую вкладку
CTRL + TCMD + TРабочее пространствоОткрывает окно Go To для поиска по проекту
CTRL + TabCTRL + TabРабочее пространствоОбзор открытого рабочего пространства
CTRL + PageUpCMD + PageUpРабочее пространствоСфокусированное окно следующей вкладки
CTRL + PageDownCMD + PageDownРабочее пространствоСфокусированное окно предыдущей вкладки
CTRL + Enter / Numpad EnterCMD + Enter / Numpad EnterРабочее пространствоСброс масштаба рабочей области (без анимированного перехода)
CTRL + Плюс(+) / Numpad PlusCMD + Плюс(+) / Numpad PlusРабочее пространствоУвеличить рабочую область
CTRL + Минус(-) / Numpad MinusCMD + Минус(-) / Numpad MinusРабочее пространствоУменьшить масштаб рабочей области
-
-
f2f2Браузер активовПереименовать выбранный ресурс
УдалитьУдалитьБраузер активовУдалить выбранный ресурс(ы)
ALT + SALT + SБраузер активовСоздайте новый ресурс sprite
ALT + UALT + UБраузер активовСоздайте новый звуковой ресурс
ALT + BALT + BБраузер активовСоздайте новый ресурс набора плиток
АЛТ + ПАЛТ + ПБраузер активовСоздайте новый ресурс пути
ALT + CALT + CБраузер активовСоздайте новый ресурс сценария
ALT + AALT + AБраузер активовСоздайте новый ресурс шейдера
ALT + FALT + FБраузер активовСоздайте новый ресурс шрифта
АЛТ + ТАЛТ + ТБраузер активовСоздайте новый ресурс временной шкалы
АЛТ + ОАЛТ + ОБраузер активовСоздайте новый ресурс объекта
ALT + RALT + RБраузер активовСоздайте новый ресурс комнаты
ALT + IALT + IБраузер активовСоздайте новый включенный ресурс файла данных
ALT + NALT + NБраузер активовСоздайте новый ресурс заметки
ALT + EALT + EБраузер активовСоздайте новый ресурс расширения
-

-
-

Редактор путей

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Привязка клавиш WindowsПривязка клавиш macOSОбласть примененияОписание
УдалитьУдалитьРедактор путейУдалить выделенные точки из контура
TTРедактор путейУдерживая эту клавишу, щелкните и перетащите, чтобы перевести весь путь.
RRРедактор путейУдерживая эту клавишу, щелкните и перетащите, чтобы повернуть весь путь.
SSРедактор путейУдерживая эту клавишу, щелкните и перетащите, чтобы масштабировать весь путь.
XXРедактор путейЗеркальный путь
YYРедактор путейПеревернуть путь
CTRL + PCMD + PРедактор путейПанорамирование пути
CTRL + RCMD + RРедактор путейОбратный путь
-

-
-

Редактор спрайтов

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Привязка клавиш WindowsПривязка клавиш macOSОбласть примененияОписание
CTRL + ACTRL + AРедактор спрайтовВыберите все кадры в представлении кадров
CTRL + CCTRL + CРедактор спрайтовКопирование выбранных кадров
CTRL + INSERTН/ДРедактор спрайтовКопирование выбранных кадров
CTRL + VCTRL + VРедактор спрайтовВставить выбранные кадры
SHIFT + INSERTН/ДРедактор спрайтовВставить выбранные кадры
CTRL + XCTRL + VРедактор спрайтовВырезать выбранные кадры
SHIFT + УДАЛИТЬН/ДРедактор спрайтовВырезать выбранные кадры
УдалитьУдалитьРедактор спрайтовУдалить выбранные кадры
Вставка или SHIFT + AВставка или SHIFT + AРедактор спрайтовДобавьте новый кадр в конец списка кадров
SHIFT + ASHIFT + AРедактор спрайтовДобавьте новый кадр в конец списка кадров
-

-
-

Редактор наборов плиток

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Привязка клавиш WindowsПривязка клавиш macOSОбласть примененияОписание
ПобегПобегРедактор кистейОтменить выделение выбранных плиток
Плюс(+) / Numpad PlusПлюс(+) / Numpad PlusРедактор кистейУвеличьте размер кисти
Минус(-) / Numpad MinusМинус(-) / Numpad MinusРедактор кистейУменьшить размер кисти
XXРедактор кистейЗеркальная плитка
YYРедактор кистейПереверните плитку
-
-
УдалитьУдалитьАвтоплитка / АнимацияУдалить текущую сфокусированную автоплитку или набор анимации
f2f2Автоплитка / АнимацияПереименование текущей сфокусированной автоплитки или набора анимации
-
-
ВставкаВставкаАнимацияДобавить новую анимацию
Стрелка вверхСтрелка вверхАнимацияВыберите предыдущий набор анимации
Стрелка внизСтрелка внизАнимацияВыберите следующий набор анимации
Левая стрелкаЛевая стрелкаАнимацияВыберите предыдущий кадр анимации
Стрелка вправоСтрелка вправоАнимацияВыберите следующий кадр анимации
SHIFT + стрелка вверхSHIFT + стрелка вверхАнимацияПереместить текущую настройку анимации
SHIFT + стрелка внизSHIFT + стрелка внизАнимацияПереместить текущий набор анимации вниз
SHIFT + стрелка влевоSHIFT + стрелка влевоАнимацияПереместить текущий кадр анимации влево
SHIFT + стрелка вправоSHIFT + стрелка вправоАнимацияПереместить текущий кадр анимации вправо
-

-
-

Редактор изображений

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Привязка клавиш WindowsПривязка клавиш macOSОбласть примененияОписание
ПобегПобегОбщие сведенияОтменить текущий выбор / прервать текущую дугу или многоугольник
OOОбщие сведенияОткройте инструмент выбора цвета
f2f2Общие сведенияПереименовать слой
CTRL + SCMD + SОбщие сведенияСохранить изображение
CTRL + XCMD + XОбщие сведенияВыбор среза
SHIFT + УДАЛИТЬН/ДОбщие сведенияВыбор среза
CTRL + CCMD + CОбщие сведенияВыбор копии / рамка копирования
CTRL + INSERTН/ДОбщие сведенияВыбор копии / рамка копирования
CTRL + VCMD + VОбщие сведенияВставить буфер обмена в кисть / вставить скопированный кадр
SHIFT + INSERTН/ДОбщие сведенияВставить буфер обмена в кисть / вставить скопированный кадр
CTRL + SHIFT + ACMD + SHIFT + AОбщие сведенияИмпортное изображение
-
-
УдалитьУдалитьВид рамыУдаление выбранных кадров в режиме просмотра кадров
ВставкаВставкаВид рамыДобавить рамку
SHIFT + ASHIFT + AВид рамыДобавьте пустую рамку
(клавиатура) 1(клавиатура) 1Вид рамыПредыдущая рамка
(клавиатура) 2(клавиатура) 2Вид рамыСледующий кадр
-
-
BBЯщик для инструментовПереключение между предустановленной и выбранной кистью
DDЯщик для инструментовВыберите инструмент рисования (карандаш)
EEЯщик для инструментовВыберите инструмент "Ластик
FFЯщик для инструментовВыберите инструмент заливки
LLЯщик для инструментовВыберите инструмент "Линия
AAЯщик для инструментовВыберите инструмент "Дуга
RRЯщик для инструментовВыберите инструмент прямоугольник
CCЯщик для инструментовВыберите инструмент "Эллипс
PPЯщик для инструментовВыберите инструмент многоугольник
TTЯщик для инструментовВыберите инструмент "Текст
SSЯщик для инструментовВыберите инструмент выделения прямоугольника
QQЯщик для инструментовВыберите инструмент выделения краской
WWЯщик для инструментовВыберите волшебную палочку
MMЯщик для инструментовВыберите инструмент панорамирования
UUЯщик для инструментовВыберите инструмент "Поворот
ZZЯщик для инструментовПоверните текущую кисть на 90°
XXЯщик для инструментовЗеркальное отображение текущей кисти вдоль оси X
YYЯщик для инструментовПеревернуть текущую кисть вдоль оси Y
SHIFT + RSHIFT + RЯщик для инструментовВыберите инструмент "Залитый прямоугольник
SHIFT + CSHIFT + CЯщик для инструментовВыберите инструмент "Залитый эллипс
SHIFT + PSHIFT + PЯщик для инструментовВыберите инструмент "Заполненный многоугольник
SHIFT + ZSHIFT + ZЯщик для инструментовРастягивание / масштабирование текущей кисти
Плюс(+) / Numpad PlusПлюс(+) / Numpad PlusЯщик для инструментовУвеличить текущий размер кисти
Минус(-) / Numpad MinusМинус(-) / Numpad MinusЯщик для инструментовУменьшить текущий размер кисти
Период (.)Период (.)Ящик для инструментовВыберите кисть
CTRLCMDЯщик для инструментовПереключение инструмента выбора цвета при удержании кнопки
-
-
GGХолстПереключает наложение сетки
CTRL + GCMD + GХолстВключение/выключение привязки сетки
ALT + VALT + VХолстПереключение вида вертикального разделения
ALT + HALT + HХолстПереключение вида горизонтального разделения
ALT + CALT + CХолстЦентральное изображение с единичным масштабом
ALT + FALT + FХолстЦентрирование изображения и масштабирование для заполнения текущего вида
CTRL + ACMD + AХолстВыбрать все
CTRL + SHIFT + ICMD + SHIFT + IХолстВыбор инверсии
Стрелка вверхСтрелка вверхХолстПереместить выбранные пиксели на 1 пиксель вверх
Стрелка внизСтрелка внизХолстПереместить выбранные пиксели на 1 пиксель вниз
Стрелка влевоСтрелка влевоХолстПереместить выбранные пиксели на 1 пиксель влево
Стрелка вправоСтрелка вправоХолстПереместить выбранные пиксели на 1 пиксель вправо
CTRL + Плюс (+)CMD + плюс (+)ХолстУвеличение масштаба просмотра холста
CTRL + Минус (-)CMD + Минус (-)ХолстУменьшение масштаба просмотра холста
-


-

-


-

-
-

Редактор номеров

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Привязка клавиш WindowsПривязка клавиш macOSОбласть примененияОписание
PPОбщие сведенияУдерживание этой кнопки при нажатии включает опцию "выбрать из любого слоя". Отпустив ее, вы снова отключите эту опцию
CTRL +ALT + GCMD + ALT + GОбщийПереключение привязки сетки
CTRL + XCMD + XОбщийВырезать выбранные элементы из текущего слоя
SHIFT + УДАЛИТЬН/ДОбщие сведенияВырезать выбранные элементы из текущего слоя
CTRL + CCMD + CОбщие сведенияКопирование выбранных элементов из текущего слоя
CTRL + INSERTН/ДОбщие сведенияКопирование выбранных элементов из текущего слоя
CTRL + VCMD + VОбщие сведенияВставка элементов буфера обмена в текущий слой
SHIFT + INSERTН/ДОбщийВставка элементов буфера обмена в текущий слой
CTRL + ALT + RCMD + ALT + RОбщийОткройте окно свойств помещения
CTRL + ALT + PCMD + ALT + PОбщие сведенияОткройте окно свойств слоя
CTRL + ALT + LCMD + ALT + LОбщие сведенияОткройте окно просмотра слоев
CTRL + ALT + ICMD + ALT + IОбщие сведенияОткройте окно порядка создания экземпляра
-
-
TTРедактор слоев контураУдерживая эту клавишу, щелкните и перетащите, чтобы перевести весь путь.
RRРедактор слоев контураУдерживая эту клавишу, щелкните и перетащите, чтобы повернуть весь путь.
SSРедактор слоев контураУдерживая эту клавишу, щелкните и перетащите, чтобы масштабировать весь путь.
XXРедактор слоев контураЗеркальный путь
YYРедактор слоев контураПеревернуть путь
-
-
DDРедактор слоев плиткиВыберите инструмент "Карандаш
EEРедактор слоев плиткиВыберите инструмент рисования "Ластик
FFРедактор слоев плиткиВыберите инструмент рисования заливки
LLРедактор слоев плиткиВыберите инструмент Рисование линии
RRРедактор слоев плиткиВыберите инструмент рисования прямоугольника
SSРедактор слоев плиткиВыберите инструмент Выделение плитки
AAРедактор слоев плиткиВыберите инструмент Autotile
IIРедактор слоев плиткиВыберите инструмент Наследование плитки
XXРедактор слоев плиткиЗеркальная плитка или щетка
YYРедактор слоев плиткиПереверните плитку или щетку
ZZРедактор слоев плиткиПоверните плитку или щетку на 90°
-
-
Левая стрелкаЛевая стрелкаПолотно для комнатыПереместить выбранные элементы влево
Стрелка вправоСтрелка вправоПолотно для комнатыПереместить выбранные элементы вправо
Стрелка вверхСтрелка вверхПолотно для комнатыПереместить выбранные элементы вверх
Стрелка внизСтрелка внизПолотно для комнатыПереместить выбранные элементы вниз
-


-
- -

-
-

Редактор временной шкалы

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Привязка клавиш WindowsПривязка клавиш macOSОбласть примененияОписание
ВставкаВставкаОбщие сведенияДобавить момент на временную шкалу
УдалитьУдалитьОбщие сведенияУдаление выбранных моментов с временной шкалы
CTRL + XCMD + XОбщие сведенияВырезать выбранные моменты из временной шкалы
SHIFT + УДАЛИТЬН/ДОбщие сведенияВырезать выбранные моменты из временной шкалы
CTRL + CCMD + CОбщийКопирование выбранных моментов с временной шкалы
CTRL + INSERTН/ДОбщийКопирование выбранных моментов с временной шкалы
CTRL + VCMD + VОбщие сведенияВставьте моменты буфера обмена на временную шкалу
SHIFT + INSERTН/ДОбщие сведенияВставьте моменты буфера обмена на временную шкалу
CTRL + ECMD + EОбщие сведенияИзменить выбранный момент
CTRL + RCMD + RОбщие сведенияИзменение описания выбранного момента
CTRL + DCMD + DОбщие сведенияДублировать выбранный момент
CTRL + MCMD + MОбщие сведенияОбъединить выбранные моменты
CTRL + ACMD + AОбщие сведенияВыберите все моменты
CTRL + UCMD + UОбщие сведенияСнять выделение всех моментов
ALT + EnterALT + EnterОбщие сведенияРедактирование всех выбранных моментов
-


-

-


-

-
-

Редактор кода / сценариев

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Привязка клавиш WindowsПривязка клавиш macOSОбласть примененияОписание
ALTALTОбщие сведенияУдерживая ALT при нажатии и перетаскивании, можно выделить колонки текста
HOMEHOMEОбщийПереход курсора к началу сценария или события
КОНЕЦКОНЕЦОбщие сведенияПереход курсора к концу сценария или события
CTRL + MCMD + MОбщийСогните все открытые области
CTRL + UCMD + UОбщие сведенияРазвернуть все регионы
CTRL + EnterCMD + EnterОбщие сведенияПереключение региона между свернутым и развернутым состояниями
CTRL + ALT + Стрелка вверхCMD + стрелка вверхОбщие сведенияПереход к предыдущему региону
CTRL + ALT + стрелка внизCMD + стрелка внизОбщие сведенияПерейти к следующему региону
CTRL + CCMD + CОбщие сведенияКопирование любого выделенного текста в буфер обмена
SHIFT + DELETEН/ДОбщийВырезать любой выделенный текст в буфер обмена
CTRL + XCMD + XОбщийВырезать любой выделенный текст в буфер обмена
CTRL + INSERTН/ДОбщийВырезать любой выделенный текст в буфер обмена
CTRL + VCMD + VОбщие сведенияВставьте любой текст из буфера обмена в редактор
SHIFT + INSERTН/ДОбщие сведенияВставьте любой текст из буфера обмена в редактор
CTRL + DCMD + DОбщие сведенияДублировать текущую строку (или несколько строк, если они были выделены)
CTRL + KCMD + KОбщие сведенияЗакомментировать выделенную строку (или строки) текста
CTRL + FCMD + FОбщие сведенияОткройте окно локального поиска
CTRL + HCMD + HОбщие сведенияОткройте поле локального поиска и замены
CTRL + SHIFT + KCMD + SHIFT + KОбщийОтменить комментирование выбранной строки (или строк) текста
f4f4ОбщийОткройте меню фрагментов кода
f7f7Общие сведенияУменьшите размер шрифта в любом из редакторов кода
f8f8Общие сведенияУвеличьте размер шрифта в любом из редакторов кода
f9f9Общие сведенияУстановите точку перерыва
-

-
-

Редактор объектов

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Привязка клавиш WindowsПривязка клавиш macOSОбласть примененияОписание
УдалитьУдалитьОбщие сведенияУдалить текущий сфокусированный элемент редактора объектов
-
-
CTRL + DCMD + DРедактор событийДублировать выбранное событие
CTRL + CCMD + CРедактор событийКопирование выбранного события в буфер обмена
SHIFT + DELETEН/ДРедактор событийВырезать любые выбранные события в буфер обмена
CTRL + XCMD + XРедактор событийВырезать любые выбранные события в буфер обмена
CTRL + INSERTН/ДРедактор событийВырезать любые выбранные события в буфер обмена
CTRL + VCMD + VРедактор событийВставьте любые события из буфера обмена в редактор
SHIFT + INSERTН/ДРедактор событийВставьте любые события из буфера обмена в редактор
-
-
F9F9Визуальный редактор GMLОтменить текущий выбор
ПобегПобегВизуальный редактор GMLОтменить текущий выбор
УдалитьУдалитьВизуальный редактор GMLУдалить все выбранные действия
CTRL + ACMD + AВизуальный редактор GMLВыберите все действия в рабочей области
CTRL + KCMD + KВизуальный редактор GMLПереключение включено/выключено для выбранных действий
CTRL + CCMD + CВизуальный редактор GMLКопировать любые выбранные действия в буфер обмена
CTRL + INSERTН/ДВизуальный редактор GMLКопировать любые выбранные действия в буфер обмена
CTRL + XCMD + XВизуальный редактор GMLВырезать любые выбранные действия в буфер обмена
SHIFT + DELETEН/ДВизуальный редактор GMLВырезать любые выбранные действия в буфер обмена
CTRL + VCMD + VВизуальный редактор GMLВставьте любые действия из буфера обмена в редактор
SHIFT + INSERTН/ДВизуальный редактор GMLВставьте любые действия из буфера обмена в редактор
CTRL + PCMD + PВизуальный редактор GMLПереход к указанному действию
-

-
-

Редактор последовательностей

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Привязка клавиш WindowsПривязка клавиш macOSОбласть примененияОписание
CTRL + XCMD + XОбщие сведенияВырезать выбранные элементы из текущего слоя
CTRL + CCMD + CОбщие сведенияКопирование выбранных элементов из текущего слоя
CTRL + VCMD + VОбщие сведенияВставка элементов буфера обмена в текущий слой
CTRL + NUMPA D "+"CMD + NUMPAD+Общие сведенияУвеличить масштаб холста или доп. листа
CTRL + MouseWheel UPCMD + MouseWheel UPОбщие сведенияУвеличьте масштаб холста или наклеенного листа
CTRL + NUMPAD "-"CMD + NUMPAD+Общие сведенияУвеличить масштаб холста или доп. листа
CTRL + MouseWheel UPCMD + MouseWheel UPОбщие сведенияУвеличьте масштаб холста или наклеенного листа
-
-
CTRL+ HOMECMD + HOMEХолстВыравнивание элемента по центру
CTRL + SHIFT + HOMECMD + SHIFT + HOMEХолстВыравнивание по центру
CTRL + ALT + SHIFT+ ;CMD + ALT + SHIFT + ;ХолстБлокировка и разблокировка линеек
CTRL + SHIFT + ;CMD + SHIFT + ;ХолстВключить/выключить привязку к линейкам и направляющим
CTRL + ALT + PCMD + ALT + PХолстПоказать/скрыть путь
Стрелка вверхСтрелка вверхХолстПереместить выбранный элемент вверх на 1px
Стрелка ВНИЗСтрелка ВНИЗХолстПереместить выбранный элемент вниз на 1px
Стрелка влевоСтрелка влевоХолстПереместить выбранный элемент влево на 1px
Стрелка ПРЯМОЙСтрелка ПРЯМОЙХолстПереместить выбранный элемент вправо на 1px
SHIFT + Стрелка вверхSHIFT + Стрелка вверхХолстПереместить выбранный элемент вверх на 10px
SHIFT + Стрелка внизSHIFT + Стрелка внизХолстПереместить выбранный элемент вниз на 10px
SHIFT + Стрелка влевоSHIFT + Стрелка влевоХолстПереместить выбранный элемент влево на 10px
SHIFT + стрелка вправоSHIFT + стрелка вправоХолстПереместить выбранный элемент вправо на 10px
ALT + Перетащить элементALT + Перетащить элементХолстДублирует элемент
ALT + инструменты трансформацииALT + инструменты трансформацииХолстМасштаб от начала координат
CTRL + Перетащить элементCMD + перетащить элементХолстОтключение привязки для точного управления
-

-
-

Модуль отладки

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Привязка клавиш WindowsПривязка клавиш macOSОбласть примененияОписание
f5f5Общие сведенияЭто позволяет запустить игру снова после того, как она была приостановлена
f9f9Общие сведенияДобавить/удалить точку останова в строке, на которой находится курсор
f10CMD + Shift + IОбщие сведенияПерейдите к блоку кода или сценарию
f11CMD + Shift + OОбщие сведенияВойдите в блок кода или сценарий
SHIFT + f11CMD + Shift + UОбщийВыйти из блока кода или сценария
-

-
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Navigation/Menus.htm b/Manual/contents/IDE_Navigation/Menus.htm index 9bf4bea49..e69de29bb 100644 --- a/Manual/contents/IDE_Navigation/Menus.htm +++ b/Manual/contents/IDE_Navigation/Menus.htm @@ -1,51 +0,0 @@ - - - - - - Меню - - - - - - - - - - -

Меню

-

Верхнюю часть сайта GameMaker IDE занимает панель меню. Здесь вы найдете ряд выпадающих меню, которые можно использовать для навигации по сайту - IDE , выполнять задания или открывать дополнительные окна с инструментами, которые помогут вам в создании игр. Обратите внимание, что здесь перечислены меню, доступные по умолчанию, но некоторые редакторы активов добавляют дополнительные меню в зависимости от контекста. Эти дополнительные - объясняются на страницах, относящихся к редактору, который их создал.

-

По умолчанию доступны следующие меню:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Navigation/Menus/The_Build_Menu.htm b/Manual/contents/IDE_Navigation/Menus/The_Build_Menu.htm index 457019b3d..e69de29bb 100644 --- a/Manual/contents/IDE_Navigation/Menus/The_Build_Menu.htm +++ b/Manual/contents/IDE_Navigation/Menus/The_Build_Menu.htm @@ -1,44 +0,0 @@ - - - - - - Меню сборки - - - - - - - - - - -

Меню сборки

-

The Build Menu

-

В меню сборки вы можете выбрать сборку проекта для тестирования, отладки или в качестве окончательного исполняемого файла. Доступны следующие опции:

-
    -
  • Запустить - Запустить текущий проект на выбранной целевой платформе для тестирования. О различных опциях компиляции, доступных при компиляции, см. раздел Компиляция. Обратите внимание, что эта команда аналогична нажатию кнопки Run на сайте IDE.
  • -
  • Отладка - Запустите текущий проект для тестирования с помощью отладчика, чтобы вы могли увидеть подробную информацию о производительности и отладить любые ошибки или проблемы, которые могут возникнуть. Для получения дополнительной информации об отладке см. раздел Отладка. Обратите внимание, что эта команда аналогична нажатию кнопки Отладка на странице IDE.
  • -
  • Очистить - GameMaker сохраняет кэш файлов, чтобы ускорить время компиляции при тестировании. Однако иногда "несвежий" кэш может привести к странным и неожиданным ошибкам в вашей игре, и в этом случае первым делом следует очистить кэш и провести повторное тестирование. Также неплохо очистить кэш перед созданием окончательного исполняемого файла для целевой платформы. Обратите внимание, что эта команда аналогична нажатию кнопки Clean Cache на странице IDE.
  • -
  • Create Executable - компилирует текущий проект и создает исполняемый пакет (или пакеты) для целевой платформы. Сначала откроется проводник файлов, чтобы вы могли выбрать место сохранения проекта, а затем скомпилировать игру. Дополнительную информацию о настройке целей компиляции см. в разделе Компиляция. Обратите внимание, что эта команда аналогична нажатию кнопки Create Executable на странице IDE.
  • -
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Navigation/Menus/The_Edit_Menu.htm b/Manual/contents/IDE_Navigation/Menus/The_Edit_Menu.htm index 3db55bb9e..e69de29bb 100644 --- a/Manual/contents/IDE_Navigation/Menus/The_Edit_Menu.htm +++ b/Manual/contents/IDE_Navigation/Menus/The_Edit_Menu.htm @@ -1,69 +0,0 @@ - - - - - - Меню редактирования - - - - - - - - - - -

Меню редактирования

-

The Edit Menu

-

Меню редактирования - это место, где вы можете использовать общие инструменты редактирования интерфейса GameMaker. Доступными опциями являются:

-
    -
  • Отменить - отменить действие.
  • -
  • Повторить - повторное выполнение предыдущего действия.
  • -
  • Поиск и замена - откроется окно поиска, которое позволит вам найти весь ваш код (включая код создания комнаты, скрипты и события) для заданного ввода - более подробную информацию см. ниже.
  • -
-

Когда вы выбираете Поиск и замена в меню Правка, открывается следующее окно:

-

Вы можете использовать его для поиска по всем заскриптованным активам в вашей игре, включая код комнаты, код события, скрипты и шейдеры. При поиске вы можете - можете ввести новый поисковый запрос в поле вверху или нажать на значок стрелки справа, чтобы открыть список ранее найденных терминов. У вас также есть возможность задать заменяющий термин, который будет использоваться для замены первоначального поискового термина. - и здесь также есть возможность использовать ранее использованную строку замены с помощью кнопки со стрелкой справа.

-

Поиск может быть общим или вы можете уточнить его с помощью опций, расположенных под вводимыми поисковыми терминами:

-
    -
  • Вы можете сделать поиск чувствительным к регистру, в этом случае он будет включать только слова, которые точно соответствуют регистру строки поиска, т.е.: при поиске "My_Var" без этой опции вы получите результаты с "my_var", - "mY_VAR", или "My_Var", но при отмеченной опции в результаты поиска будет включен только "My_Var".
  • -
  • Вы можете выбрать включение только тех результатов поиска, которые включают только полное слово, в этом случае любые результаты, включающие поисковый термин, но не являющиеся точным совпадением, будут проигнорированы, т.е.: поиск по слову "game" без этой отметки - покажет такие вещи, как функция "game_end()" или переменные типа "game_state", в то время как при установке этого флажка и выполнении поиска будут показаны только результаты, содержащие само слово "game".
  • -
  • Вы можете выбрать, чтобы поиск игнорировал комментарии. Если этот флажок установлен, любые комментарии в вашем коде, содержащие поисковый запрос, будут просто игнорироваться и не отображаться в результатах поиска.
  • -
  • Вы можете применить фильтр к результатам поиска на основе различных типов активов в обозревателе активов. По умолчанию установлено значение "Все", но при нажатии на него откроется следующее меню, в котором вы можете отметить или снять отметку - активы, которые будут включены в поиск:
  • -
-

После того, как вы задали термин поиска (и, по желанию, замены) и настроили параметры поиска, вы можете использовать различные кнопки в нижней части окна - чтобы выбрать способ выполнения поиска и любые действия. К этим кнопкам относятся:

-
    -
  • Найти все: Найти все условия поиска и показать их в окне вывода.
  • -
  • Найти предыдущий: найти предыдущий экземпляр поискового термина. Это позволит открыть актив, содержащий ссылку, в рабочей области (если он еще не открыт) и перейти к нему.
  • -
  • Найти следующий: Найти следующий экземпляр поискового термина. Это откроет актив, содержащий ссылку, в рабочей области (если он еще не открыт) и вызовет к нему панорамирование.
  • -
  • Заменить все: Выполнит поиск заданного термина с заданными параметрами, а также заменит его в активах новым термином, который вы указали.
  • -
  • Заменить: Это заменит текущий выбранный термин в текущем редакторе, где он выделен, на выбранный термин замены.
  • -
  • Остановить поиск: Остановить текущий поиск, если он ведется.
  • -
-

Нажатие клавиши Escape при открытом окне очистит выбранное поле, однако если это поле уже пустое, то окно будет закрыто.

-

Все результаты использования окна "Поиск и замена" будут показаны в окне "Результаты поиска " в нижней части сайта IDE. Каждый результат можно дважды щелкнуть, чтобы открыть актив с термином в текущей рабочей области и перейти к нему, готовому к редактированию.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Navigation/Menus/The_File_Menu.htm b/Manual/contents/IDE_Navigation/Menus/The_File_Menu.htm index 78d8eff7f..e69de29bb 100644 --- a/Manual/contents/IDE_Navigation/Menus/The_File_Menu.htm +++ b/Manual/contents/IDE_Navigation/Menus/The_File_Menu.htm @@ -1,68 +0,0 @@ - - - - - - Меню "Файл - - - - - - - - - - -

Меню "Файл

-

The File Menu

-

В меню "Файл" вы можете изменить, сохранить или импортировать проекты, а также установить предпочтения GameMaker IDE. Доступны следующие опции:

-
    -
  • Новый проект - предназначен для создания нового проекта с нуля в GameMaker. Откроется диалог "Сохранить", и вам будет предложено выбрать место для сохранения нового проекта. После того, как вы дадите проекту имя и укажете место для сохранения, вы перейдете в новое, пустое рабочее пространство, чтобы начать работу над проектом. Файлы проектов сохраняются с расширением *.yyp.
  • -
  • Открыть проект - откроется проводник файлов, в котором можно выбрать ранее созданный файл проекта *.yyz для загрузки. Обратите внимание, что при импорте, если проект был создан с использованием версии ниже 2.3.0, то вы получите следующее предупреждение: Если вы решите продолжить, то откроется проводник файлов, и вы сможете дать проекту обновленное имя и место для сохранения, так что оригинальный проект не будет перезаписан. После преобразования проекта в новый формат 2.3.0+ он откроется в IDE, и вы получите сообщение о том, что преобразование прошло успешно. Вам следует проверить отчет о совместимости, который был создан в процессе преобразования, и посмотреть, есть ли что-то, что необходимо исправить, прежде чем пытаться запустить или скомпилировать проект. Обратите внимание, что если вы получаете повторяющиеся ошибки при попытке открыть проект, созданный в версии, предшествующей 2.3.0, то вам следует обратиться по адресу YoYo Games (используя опцию "Сообщить об ошибке" из меню справки), предоставив исходный файл *.yyp, который вы пытаетесь конвертировать.
  • -
  • Импорт проекта - Здесь вы можете импортировать проекты, которые ранее были экспортированы в архив *.yyz (см. раздел "Экспорт проекта", ниже), или - если у вас есть проект, созданный с помощью устаревшей версии GameMaker: Studio 1.4 - вы можете выбрать эту опцию для импорта файла *.gmx или *.gmz из этой линейки продуктов. Как и при открытии проекта, если файл *.yyz был создан в версии GameMaker до обновления 2.3.0, то его нужно будет конвертировать, так как формат файла проекта изменился с этим обновлением.
  • -
-

ПРИМЕЧАНИЕ: Чтобы импортировать предыдущий проект GameMaker в GameMaker, он должен быть создан с помощью версии 1.4, и даже в этом случае он может не работать непосредственно при импорте. Между GameMaker и GameMaker: Studio 1.4, поэтому ваши старые проекты могут потребовать доработки, чтобы они заработали. Пожалуйста, обратитесь к статье Перенос игры GM:S 1.4 на GameMaker в базе знаний GameMaker и к разделу руководства, посвященному устаревшим функциям и скриптам совместимости.

-

ВАЖНО! При импорте проекта *.yyz, содержащего шрифтовые ресурсы, может потребоваться "регенерация" шрифтов путем их удаления/добавления или изменения шрифта в редакторе шрифтов, а затем его повторной установки. Это происходит потому, что существующая информация о шрифтах сохраняется на сайте *.yyz при экспорте, а при последующем импорте или на другой машине в проекте могут быть не установлены необходимые шрифты (или может быть установлен другой шрифт с тем же именем). Это следует делать только в том случае, если у вас возникли проблемы с отображением шрифта после импорта.

-
    -
  • Последние проекты - Вы можете использовать эту опцию для просмотра недавно использованных проектов. При выборе этой опции вновь откроется Стартовая страница (если вы ее закрыли), и вы сможете выбрать недавно использованный проект из списка.
  • -
  • Сохранить проект - сохранит вашу игру в том же месте, которое вы указали при создании проекта (или в том месте, откуда вы его открыли).
  • -
  • Сохранить проект как - То же самое, что и выше, только вы указываете местоположение и новое имя проекта.
  • -
  • Экспорт проекта - позволяет экспортировать проект либо в виде файла, либо в виде шаблона:
    - -
      -
    • YYZ - экспортирует проект в один файл *.yyz, что очень удобно для отправки копий людям или для сохранения резервных копий.
    • -
    • Как шаблон - Это позволит вам экспортировать ваш проект как шаблон, который вы сможете использовать в качестве основы для других проектов на The Start Page. При выборе этой опции появится следующее окно:
      - Сначала нужно нажать на "Редактировать информацию о шаблоне", чтобы убедиться, что информация о шаблоне верна, а затем выбрать "Экспорт", когда вы откроете это приглашение во второй раз, чтобы сохранить проект как шаблон. Затем вы увидите его в меню "Шаблон" на начальном экране. -
    • -
    -
  • -
  • Параметры - выбрав этот пункт, вы перейдете в окно параметров, где можно настроить внешний вид и работу GameMaker.
  • -
  • Новая IDE - При выборе этой опции будет открыт новый экземпляр IDE для использования (он откроется на стартовой странице).
  • -
  • Моя учетная запись - Эта опция откроет ваш веб-браузер по умолчанию и приведет вас на страницу вашей учетной записи YoYo.
  • -
  • Выход - при выборе этого пункта вы выйдете из GameMaker. Вам нужно будет снова войти в систему с той же лицензией (или любой другой), чтобы иметь возможность использовать продукт в дальнейшем.
  • -
-

ВАЖНО! Если вы пользовались бесплатной лицензией GameMaker, а затем приобрели одну из других лицензий, вам, возможно, придется выйти из системы IDE, затем перезапустить GameMaker и снова войти в систему, чтобы убедиться, что новая лицензия применена правильно (хотя это должно произойти автоматически).

-
    -
  • Exit - выход из GameMaker на рабочий стол.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Navigation/Menus/The_Help_Menu.htm b/Manual/contents/IDE_Navigation/Menus/The_Help_Menu.htm index ce51d3348..e69de29bb 100644 --- a/Manual/contents/IDE_Navigation/Menus/The_Help_Menu.htm +++ b/Manual/contents/IDE_Navigation/Menus/The_Help_Menu.htm @@ -1,64 +0,0 @@ - - - - - - Меню справки - - - - - - - - - - -

Меню справки

-

The Help Menu

-

Это меню связано с получением помощи при использовании GameMaker. Оно содержит следующие пункты меню:

-
    -
  • Открыть руководство - открытие справочного руководства. Обратите внимание, что нажатие кнопки помощи в строке меню также откроет документ, как и нажатие кнопки .
  • -
  • База знаний - Здесь вы перейдете в базу знанийGameMaker, где можно найти статьи о настройке платформы, известных проблемах, использовании GameMaker и многое другое.
  • -
  • Сообщить об ошибке - Если вы обнаружили какие-либо ошибки или у вас возникли проблемы при использовании GameMaker, вы можете сообщить о них здесь.
  • -
  • Open Log In Explorer - открывает каталог в вашей системе, где вы можете найти файл ui.log, который обычно необходим для отправки сообщений об ошибках, связанных с IDE. -
    -
  • -
  • GameMaker.io - Открыть веб-сайт GameMaker.
  • -
  • GameMaker Community - откроет форумы GameMaker Community в вашем браузере. Обратите внимание, что это форум под управлением сообщества , поэтому если у вас есть сообщение об ошибке или требуется техническая помощь, вам следует сначала обратиться на официальный сайт поддержки (см. выше). -
    -
  • -
  • Заметки о выпуске - откроет в вашем браузере заметки о выпуске для GameMaker. Если вам понадобится откатить обновление, вы можете получить инсталляторы предыдущих версий, щелкнув по ссылке с номером версии на этой странице.
  • -
  • Current Runtime Release Notes - Поскольку время выполнения может обновляться независимо от IDE, оно имеет свой собственный набор Runtime Release Notes. Выбор этой опции откроет их в вашем браузере, но имейте в виду, что последняя версия программы может быть не той, которую вы используете. Чтобы узнать, какая среда выполнения у вас установлена, или получить информацию о том, как добавлять, удалять или активировать среды выполнения, обратитесь к разделу Параметры среды выполнения.
  • -
  • Необходимые SDK - В связи с кроссплатформенным характером GameMaker требуется ряд SDK сторонних производителей. Нажав на эту кнопку, вы перейдете к статье поддержки, в которой подробно описано, что вам нужно для каждой конкретной платформы. -
    -
  • -
  • Открыть проект в проводнике - откроет место сохранения текущего загруженного проекта в проводнике файлов ОС. -
    -
  • -
  • Обновить системные шрифты - обновляет системные шрифты, которые может видеть GameMaker. Это полезно для обнаружения новых шрифтов, которые вы установили, пока был открыт IDE. -
    -
  • -
  • Лицензии - Открывается окно с лицензиями на все сторонние библиотеки, используемые в GameMaker.
  • -
  • About - Открывает окно "About GameMaker", где вы можете получить информацию о версии продукта (это важно для сообщения о любых ошибках или проблемах) и посмотреть титры.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Navigation/Menus/The_Layouts_Menu.htm b/Manual/contents/IDE_Navigation/Menus/The_Layouts_Menu.htm index 53d950ba2..e69de29bb 100644 --- a/Manual/contents/IDE_Navigation/Menus/The_Layouts_Menu.htm +++ b/Manual/contents/IDE_Navigation/Menus/The_Layouts_Menu.htm @@ -1,44 +0,0 @@ - - - - - - Меню макетов - - - - - - - - - - -

Меню макетов

-

Это меню связано с сохранением и загрузкой различных макетов IDE. Вы можете настроить IDE по своему усмотрению, располагая некоторые элементы (например, браузер активов, - или Output Windows) расположены иначе, чем по умолчанию. Это позволит вам настроить GameMaker в соответствии с вашим рабочим процессом. С помощью опций этого меню вы можете сохранить макеты текущего проекта в виде файла *.xml, который затем можно загрузить в любой проект, чтобы установить одинаковые макеты. Опции этого меню следующие:

-
    -
  • Загрузить макет - откроется проводник файлов, в котором можно выбрать ранее сохраненный файл макета *.xml для загрузки.
  • -
  • Сохранить макет - Откроется проводник файлов, в котором вы можете назвать и сохранить текущий макет IDE в виде файла *.xml.
  • -
  • Сброс макета - сброс текущего макета IDE к настройкам по умолчанию.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Navigation/Menus/The_Marketplace_Menu.htm b/Manual/contents/IDE_Navigation/Menus/The_Marketplace_Menu.htm index 07fce66ea..e69de29bb 100644 --- a/Manual/contents/IDE_Navigation/Menus/The_Marketplace_Menu.htm +++ b/Manual/contents/IDE_Navigation/Menus/The_Marketplace_Menu.htm @@ -1,47 +0,0 @@ - - - - - - Меню рынка - - - - - - - - - - -

Меню Marketplace

-

The Marketplace Menu

-

Помимо создания собственных активов и кода для своих проектов, у вас также есть доступ к сайту GameMaker Marketplace, где вы можете загрузить как бесплатные, так и платные активы для добавления в свои проекты. Подробнее о сайте Marketplace вы можете узнать из - разделе, посвященном GameMaker Marketplace, а опции из этого меню приведены ниже:

-
    -
  • Перейдите в Marketplace - откройте окно Marketplace, где вы можете просматривать активы.
  • -
  • Моя библиотека - просмотр текущей библиотеки материалов Marketplace.
  • -
  • Моя история покупок - Эта опция откроет браузер и переведет вас на страницу учетной записи пользователя, вошедшего в систему, чтобы вы могли просмотреть историю покупок для этой учетной записи.
  • -
  • Обновить существующий пакет - Эта опция откроет мастер обновления пакета, чтобы вы могли обновить существующий пакет Marketplace, который вы ранее создали.
  • -
  • Создать пакет - С помощью этой опции можно открыть мастер создания пакета, чтобы создать новый пакет активов или учебник для сайта Marketplace.
    -
  • -
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Navigation/Menus/The_Tools_Menu.htm b/Manual/contents/IDE_Navigation/Menus/The_Tools_Menu.htm index 4b3aee8f3..e69de29bb 100644 --- a/Manual/contents/IDE_Navigation/Menus/The_Tools_Menu.htm +++ b/Manual/contents/IDE_Navigation/Menus/The_Tools_Menu.htm @@ -1,48 +0,0 @@ - - - - - - Меню инструментов - - - - - - - - - - -

Меню инструментов

-

The Tools Menu

-

Это меню позволяет вам открыть различные отдельные инструменты, доступные вам в GameMaker, со следующими опциями:

-
    -
  • Группы текстур - просмотр окна группы текстур.
  • -
  • Аудиогруппы - Просмотр окна аудиогрупп.
  • -
  • Sound Mixer - просмотр окна Sound Mixer.
  • -
  • Generate Project Images - Открывает окно Generate Project Images.
  • -
  • Создать локальный пакет - открывает окно Asset Packager, позволяющее создавать и сохранять локальные пакеты активов для дальнейшего использования.
  • -
  • Импорт локального пакета - открывает окно проводника файлов, в котором можно выбрать локальный пакет активов и импортировать его, либо добавив его в текущий проект, либо создав новый проект. - для него.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Navigation/Menus/The_Windows_Menu.htm b/Manual/contents/IDE_Navigation/Menus/The_Windows_Menu.htm index 7724add7f..e69de29bb 100644 --- a/Manual/contents/IDE_Navigation/Menus/The_Windows_Menu.htm +++ b/Manual/contents/IDE_Navigation/Menus/The_Windows_Menu.htm @@ -1,47 +0,0 @@ - - - - - - Меню Windows - - - - - - - - - - -

Меню Windows

-

The Windows Menu

-

Это меню предназначено для открытия общих окон доков IDE. Поскольку доки могут быть переупорядочены, а их содержимое может быть удалено как отдельные окна или даже полностью закрыто, это окно позволяет вам снова открыть их, если вы обнаружите, что они вам для чего-то нужны. - Окна, которые можно открыть отсюда, - это окно браузера активов и все различные окна вывода (Output, Search, Source Control, - Точки останова и Ошибки компиляции/синтаксиса).

-

Далее вы можете открыть окно Инспектор. Это окно используется для проверки свойств выбранного в данный момент элемента IDE, и эти свойства можно редактировать по мере необходимости.

-

После опции Инспектор у вас есть список Недавние окна, а также возможность открыть окно Переменные среды, где вы можете увидеть различные пути, на которые указывают различные переменные среды, используемые в Предпочтениях. - на которые указывают различные переменные окружения, используемые в Предпочтениях. Эти переменные нельзя редактировать (ни их названия, ни пути/настройки), но вы можете выбрать и скопировать/вставить любую из них для использования в другом месте. - в другом месте.

-

Наконец, у вас есть возможность открыть учебные окна. Это позволит вновь открыть все окна, связанные с учебным проектом. - но только если этот проект был создан в рамках учебного курса (в противном случае эта опция будет недоступна). Информацию о создании собственных обучающих проектов можно найти в разделе о Marketplace (поскольку все обучающие проекты создаются, размещаются и загружаются оттуда).

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Navigation/Recent_Windows.htm b/Manual/contents/IDE_Navigation/Recent_Windows.htm index 5569a296c..e69de29bb 100644 --- a/Manual/contents/IDE_Navigation/Recent_Windows.htm +++ b/Manual/contents/IDE_Navigation/Recent_Windows.htm @@ -1,38 +0,0 @@ - - - - - - Последние окна - - - - - - - - - - -

Последние окна

-

Список недавних окон можно открыть из меню Windows, в нем отображается короткий список (по умолчанию в нем максимум 10 пунктов) окон, которые вы открывали ранее. Вначале этот список будет пустым, но по мере открытия различных окон в IDE (например, sprite, скрипт, объект и т.д.) список будет пополняться. Если вам нужно вернуться к любому из этих ранее открытых окон, просто щелкните левой кнопкой мыши на элементе в списке, и рабочая область перейдет к этому окну. Если вы нажмете правую кнопку мыши на элементе, то откроется следующее меню: Здесь вы можете выбрать удаление элемента (или элементов, поскольку вы можете использовать + или / + для выбора нескольких) из списка или перемещение их в начало списка. В меню RMB также есть дополнительная опция, позволяющая полностью очистить список. Стоит отметить, что список Recent Windows может быть прикреплен к боковым сторонам IDE, и вы также можете настроить некоторые Параметры, чтобы изменить его поведение.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/Additional_IDE_Tools.htm b/Manual/contents/IDE_Tools/Additional_IDE_Tools.htm index 25575629a..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/Additional_IDE_Tools.htm +++ b/Manual/contents/IDE_Tools/Additional_IDE_Tools.htm @@ -1,46 +0,0 @@ - - - - - - Дополнительные инструменты IDE - - - - - - - - - - -

Дополнительные инструменты IDE

-

В этом разделе руководства описаны дополнительные инструменты IDE, которые могут помочь вам в создании игр и которые не рассматриваются в других разделах руководства, а также инструменты, которые являются полезными дополнениями к другим разделам IDE.

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/Local_Asset_Packages.htm b/Manual/contents/IDE_Tools/Local_Asset_Packages.htm index e097f89d0..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/Local_Asset_Packages.htm +++ b/Manual/contents/IDE_Tools/Local_Asset_Packages.htm @@ -1,54 +0,0 @@ - - - - - - Пакеты местных активов - - - - - - - - - -

Пакеты местных активов

-

В меню Инструменты есть две опции для создания и импорта пакетов локальных активов. Пакет локальных активов - это группа ресурсов, сохраненных с помощью формата файла *.yymp, которые можно легко установить в существующие проекты. Это означает, что вы можете создать собственную библиотеку пакетов для часто используемых ресурсов, таких как библиотеки сценариев, заставки, системы меню и т.д., не прибегая к помощи GameMaker Marketplace.

-

-

Создание пакета активов

-

Чтобы создать пакет активов, необходимо сначала создать ресурсы, которые вы хотите сохранить в проекте, а затем в меню Инструменты выбрать опцию Создать локальный пакет. Откроется следующее окно:

-

В этом окне вы можете указать необязательное имя издателя и обязательные отображаемое имя и идентификатор пакета. Идентификатор пакета будет использоваться для создания имени файла, под которым будет сохранен пакет, и к нему автоматически будет добавлено расширение *.yymp при создании. Вы также можете задать номер версии пакета и выбрать, подписывать его или нет (по умолчанию эта функция отключена). Подписание пакета требует создания сертификата подписи (вы можете сделать это в Предпочтениях Marketplace), и означает, что любой актив, который был подписан, не сможет быть импортирован, если он был подделан после создания.

-

После того, как вы заполнили детали пакета, вы можете перейти к выбору активов, которые вы хотите включить, из раздела "Проект" справа (используя левую кнопку мыши или комбинацию / и вместе с левой кнопкой мыши). Выбранные ресурсы могут быть перемещены в представление "Пакет активов" с помощью кнопок Добавить или Добавить все и могут быть снова удалены с помощью кнопок Удалить и Удалить все.

-

Когда вы будете довольны выбором ресурсов и заполните необходимые данные, при нажатии кнопки Ok откроется проводник файлов, где вы сможете выбрать место для сохранения пакета. После выбора пакет будет создан и появится окно подтверждения с возможностью открыть местоположение пакета в проводнике файлов ОС.

-

-

Импорт пакета активов

-

Существует два способа импорта локального пакета активов:

-
    -
  • первый - просто перетащить файл *.yymp из окна проводника в GameMaker IDE.
  • -
  • второй - выбрать опцию "Импорт локального пакета" в меню Инструменты.
  • -
-

При использовании меню Tools откроется окно проводника, в котором можно перейти к расположению пакета и выбрать его для импорта. В любом случае в GameMaker откроется следующее окно:

-

Слева находится содержимое пакета, а справа - те его части, которые вы хотите импортировать. Вы можете выбрать один или несколько ресурсов из пакета (используя левую кнопку мыши или комбинацию / и вместе с левой кнопкой мыши) и затем использовать кнопку Добавить , чтобы добавить их для импорта, или использовать кнопку Добавить все , чтобы добавить все для импорта.

-

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

-

Обратите внимание, что пакеты активов, созданные с помощью версии, предшествующей GameMaker.3, потребуют конвертации, поскольку формат файла проекта изменился с обновлением 2.3. Это означает, что если активы часто импортируются в другие проекты, предпочтительнее импортировать весь проект и преобразовать все файлы, а затем экспортировать их как новый пакет в новое место.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/Project_Image_Generator.htm b/Manual/contents/IDE_Tools/Project_Image_Generator.htm index 58d409fd0..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/Project_Image_Generator.htm +++ b/Manual/contents/IDE_Tools/Project_Image_Generator.htm @@ -1,63 +0,0 @@ - - - - - - Генератор изображений проекта - - - - - - - - - - -

Генератор изображений проекта

-

Генератор изображений проекта доступен из меню Инструменты в - в верхней части окна GameMaker IDE. Этот инструмент предназначен для быстрого создания всех различных заставок, рекламных изображений и иконок, необходимых для различных целевых платформ, из одного набора изображений. Вы предоставляете базовое изображение - и базовую иконку, а затем нажимаете кнопку Generate , и ваши параметры игры для каждой платформы будут обновлены новыми изображениями.

-

Для корректной работы необходимо предоставить заставку высокого разрешения и изображение иконки высокого разрешения. Рекомендуемые размеры:

-
    -
  • Splash Screen: не менее 1920x1080px, или 1080x1920px для портрета, и созданный как 24bit *.png без прозрачности.
  • -
  • Иконки: не менее 1024x1024px (это размер самой большой иконки, которая требуется), и созданные как 24bit *.png, которые могут иметь прозрачность.
  • -
-

После того, как вы предоставите эти изображения, они будут показаны в окне предварительного просмотра, и вы сможете установить тип "подгонки", который будет использоваться при применении их к различным платформам. Вы можете выбрать один из следующих вариантов:

-
    -
  • Сохранять соотношение сторон - масштабирование изображения с сохранением соотношения сторон и добавлением цвета фона для заполнения боковых сторон, если соотношение сторон не 1:1.
  • -
  • Stretch To Fit - растягивает изображения до полного размера картинки/иконки.
  • -
  • Crop To Fit (Обрезать по размеру) - для этого берется базовое изображение и подгоняется по горизонтальной или вертикальной оси, а затем обрезается оставшаяся часть. Например, если у вас есть изображение 640x480, которое должно быть использовано в качестве заставки для 480x800, - то изображение будет увеличено, чтобы соответствовать вертикальной оси (480 -> 800), а остальная часть изображения будет обрезана. Аналогично, если у вас есть изображение 1080x1920, которое должно соответствовать 800x800, то изображение будет уменьшено, чтобы соответствовать горизонтальной оси (480 -> 800), а остальная часть будет обрезана. - а оставшаяся часть будет обрезана.
  • -
-

Вы также можете задать цвет фона как для значков, так и для изображений. Этот цвет будет использоваться для "подгонки" изображения при масштабировании с учетом соотношения сторон. На следующем рисунке показано, как это будет выглядеть после того, как все будет настроено:

-

Теперь вам остается только нажать на кнопку Generate , и GameMaker заполнит все параметры игры Image и - Иконки с изображениями для каждой платформы.

-

ПРИМЕЧАНИЕ: Исключением из вышеприведенного утверждения являются адаптивные значки Android. Они не будут созданы с помощью этого инструмента из-за особенностей их структуры.

-

ВАЖНО! Хотя этот инструмент создаст все необходимые вам изображения, это не означает, что он идеален! Он постарается сделать все возможное, чтобы изображения соответствовали различным размерам и разрешениям для каждой платформы, но иногда это может выглядеть не так. - но иногда это может выглядеть не так, как вы хотите, поскольку на самом деле не существует решения "один размер подходит всем". Поэтому после запуска этого инструмента мы рекомендуем вам пересмотреть все изображения в Опциях игры каждой платформы и подправить те, которые выглядят не совсем так, как вы хотите. - вручную.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/Remote_Workers.htm b/Manual/contents/IDE_Tools/Remote_Workers.htm index a16a3f5ba..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/Remote_Workers.htm +++ b/Manual/contents/IDE_Tools/Remote_Workers.htm @@ -1,107 +0,0 @@ - - - - - Удаленные работники - - - - - - - - - - -

Удаленные работники

-

Когда вы компилируете свою игру, вы обычно используете "Local" рабочий, то есть компьютер, на котором установлен GameMaker. Однако при некоторых обстоятельствах вам может понадобиться использовать другой компьютер для сборки ваших проектов. Например, - если вы работаете на Mac и хотите создать проект Windows, то вам нужно настроить удаленного работника и поручить сборку Windows PC. По сути, когда вы используете удаленного работника, GameMaker будет отправлять все - необходимые файлы с локальной машины, на которой он запущен, на машину удаленного работника, а затем использует эту машину для создания окончательного исполняемого файла проекта (либо сохраняя его на удаленной машине, либо возвращая его на локальную машину). - Однако прежде чем вы сможете воспользоваться этой функцией, вам необходимо установить определенные инструменты на машину сборки и выполнить некоторые настройки, о которых мы расскажем здесь.

-

ВАЖНО! Вы можете настроить удаленного работника между локальным Windows ПК и удаленным Windows ПК, или между локальным Mac ПК и удаленным Windows ПК, но в настоящее время вы не можете настроить локальный Windows (или Mac) ПК и удаленный Mac ПК, т.е. вы не можете - иметь удаленного работника Mac, только Windows.

-

Начальная настройка

-
-

Чтобы настроить удаленного работника, необходимо сначала установить приложение для сборки Remote Worker на компьютер, который будет использоваться. Вы можете найти этот инструмент, зайдя в меню Build Menu в GameMaker на локальной машине и выбрав опцию "Show Remote Worker Installer":

-

Кроме того, вы можете щелкнуть значок "глаз" в диспетчере целей и получить - установщик Remote Worker таким образом:

-

- Программа установки будет называться что-то вроде "GameMakerStudio-Remote-Installer-X.X.X.XXX.exe" - и вам нужно скопировать его на компьютер, который вы хотите использовать в качестве удаленного работника (вам не нужно устанавливать GameMaker на удаленном работнике, только эту программу).

-

После того как вы скопируете его на ПК сборки, установите его, следуя подсказкам на экране. По завершении работы программы установки ОС может запросить доступ через брандмауэр к вашей сети. После того, как вы предоставите доступ, программа установки откроет - страницу в вашем веб-браузере, и вы должны записать IP-адрес и номер порта, указанные на этой странице, поскольку они понадобятся вам на следующем этапе.

-

Теперь вам нужно вернуться на машину, где установлен GameMaker - 2 и щелкнуть на кнопке Target Manager , чтобы открыть окно Target Manager, - перейдите в раздел Worker и нажмите кнопку Add Worker . После этого откроется - следующее окно:

-

Здесь вам нужно дать имя вашему удаленному рабочему устройству (это то, что будет - в списке Worker в Target Manager), а затем в разделе Host Name добавить адрес вместе с портом, который был показан и отмечен ранее с рабочей машины.

-

Если все прошло правильно, вы должны получить сообщение о том, что вы можете успешно подключиться к машине удаленного работника. После того, как вы установили Remote Worker и подключились к основному компьютеру IDE, вам нужно будет настроить Local - Build Settings для каждой платформы (см. раздел ниже для более подробной информации), прежде чем вы сможете скомпилировать свой проект.

-

-
-

Удаленные настройки

-
-

На странице настроек отображаются различные пути и параметры сборки для приложения Remote Worker. В верхней части страницы настроек указаны различные пути, которые будут использоваться приложением Remote Worker. - прежде чем делать что-либо еще, их следует пересмотреть и установить альтернативные пути, если это необходимо (в целом, пути по умолчанию должны быть в порядке). Вы можете получить доступ к странице настроек Remote Worker любым из следующих способов:

-
    -
  • Нажмите на ссылку "Настройки" в верхней части страницы Remote Worker, которая открывается в браузере вашей удаленной машины:
  • -
  • Используйте RMB на значке в трее Remote Worker, чтобы открыть настройки в браузере удаленной машины:
  • -
  • На локальной машине откройте диспетчер целей и нажмите на значок "cog", чтобы открыть настройки рабочего в окне на локальной машине:
  • -
-

Откроется страница настроек, где вы можете увидеть (и установить) различные опции, позволяющие задать пути для сборки вашего проекта:

-

Build Menu Remote Worker Installer

-
-

Локальные настройки сборки

-
-

После проверки путей, по которым будет работать приложение Remote Worker, вы можете установить (при необходимости) различные настройки локальной сборки. Для разных платформ потребуются различные инструменты сборки, которые должны быть установлены на компьютере для сборки, а удаленный работник должен иметь возможность использовать их на странице настроек. - удаленный работник должен иметь возможность использовать их для сборки ваших игр через страницу настроек . Первые настройки здесь - это общие настройки:

-

Здесь вы можете установить порт для - Help Server и порт для отладчика . Их можно изменить, если у вас возникнут проблемы с подключением при использовании модуля отладки, но в целом следует оставить значения по умолчанию.

-

Теперь вы можете перейти к настройке различных опций для платформ, на которых может работать удаленный работник:

-

Если у вас есть доступ к целевой платформе Windows, - вы сможете сразу же выполнить сборку с помощью удаленного рабочего на ПК Windows, используя опцию виртуальной машины (VM). Однако если вы хотите использовать YoYo Compiler (YYC), то вам также необходимо установить путь к Visual Studio на компьютере сборки. Подробную информацию о том, как настроить ПК Windows для компиляции ваших проектов, можно найти в следующей статье службы поддержки:

- -


-
-

Компиляция

-
-

После того как вы настроили Remote Worker и выполнили настройки локальной сборки (см. раздел выше), вы можете начать использовать его для компиляции ваших игр. Для этого нужно просто выбрать Remote Worker из списка Target Manager - в списке Target Manager, выбрать платформу для тестирования/компиляции, а также любые другие опции (например, тип компиляции или конфигурацию), а затем нажать Play или Create Executable .

-
ПРИМЕЧАНИЕ: Доступные платформы в диспетчере целей будут меняться в зависимости от возможностей компьютера удаленного работника, и не все цели будут доступны. Также обратите внимание, что для удаленных работников не существует цели "Тест".
-

Если вы просто воспроизводите проект, то машина Remote Worker скомпилирует и запустит его, но если вы создаете исполняемый файл, то Remote Worker скомпилирует проект, а затем вернет файл *.zip на - локальную машину для сохранения.

-

Следует отметить, что ни кнопка Debug , ни кнопка Clean не будут доступны при использовании Remote Worker. Также обратите внимание, что в настоящее время вы можете выполнять только одну удаленную сборку за раз.

-

-
-


После установки и запуска Remote Worker на вашей удаленной машине он появится на панели задач в виде значка, и вы можете щелкнуть по нему правой кнопкой мыши, чтобы вызвать следующие опции:

-

Target Manager Remote Worker Installer

-
    -
  • Открыть: Откройте приложение Remote Worker в браузере по умолчанию.
  • -
  • Показать журнал: Откройте файл журнала для удаленного работника в браузере.
  • -
  • Настройки сети: Здесь вы можете отфильтровать, какие машины вы хотите иметь возможность отправлять сборки на машину удаленного работника. Каждый фильтр может быть фильтром в стиле CIDR или именем хоста машины для разрешения. Вы должны знать, что если вы хотите, чтобы несколько машин подключались к одному удаленному работнику, или если вы смешиваете типы подключения (т.е. проводное и Wi-Fi), то вам может понадобиться отредактировать диапазон разрешенных IP-адресов.
  • -
  • Редактировать настройки: Откройте меню настроек удаленного работника (описано в разделе Настройки, выше).
  • -
  • Выход: Выйти из приложения Remote Worker. Это означает, что вы больше не сможете подключиться (или скомпилировать) к приложению с локальной машины, пока не перезапустите приложение Remote Worker.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/Sound_Mixer.htm b/Manual/contents/IDE_Tools/Sound_Mixer.htm index a7e2b3f7d..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/Sound_Mixer.htm +++ b/Manual/contents/IDE_Tools/Sound_Mixer.htm @@ -1,47 +0,0 @@ - - - - - - Звуковой микшер - - - - - - - - - - -

Звуковой микшер

-

При создании любого проекта бывает полезно проверить и установить громкость групп звуков вместе, чтобы быть уверенным, что в игре все они звучат правильно. Это может быть непросто, если вам приходится открывать каждый отдельный звуковой редактор в рабочей области, поэтому GameMaker позволяет вам открыть окно Sound Mixer, в котором вы можете воспроизводить несколько звуков в одном месте и соответствующим образом настраивать их уровни громкости. Это окно можно открыть из редактора звуков (что добавит выбранный звук в представление микшера) или из меню Инструменты.

-

Чтобы добавить звуки в микшер, вы можете использовать / + для выбора звуков в браузере активов, а затем открыть меню правой кнопки мыши и выбрать Open In Sound Mixer. В качестве альтернативы можно щелкнуть на звуковом активе и перетащить его в микшер.

-

Сам смеситель разделен на следующие разделы:

-
    -
  • Элементы управления колонкой: Этот раздел содержит элементы управления колонкой звуков. Вы можете выбрать воспроизведение всех звуков в колонке, а также установить их зацикливание или перемотку к началу. Вы также можете установить громкость, с которой они должны воспроизводиться, и изменение этого значения изменит его для всех звуков в группе в реальном времени.
  • -
  • Аудиогруппа: Если вы назначили звуковые ресурсы различным аудиогруппам, вы можете выбрать группу из этого выпадающего меню, и все звуки будут добавлены в текущую колонку звукового микшера.
  • -
  • Звуковые ресурсы: В этой части представления колонок отображаются все звуки, которые были добавлены в микшер. Вы можете установить общую громкость для всех звуков колонки в верхней части микшера, а затем использовать регуляторы громкости отдельных звуков для ее изменения по мере необходимости, а также воспроизводить и зацикливать отдельные звуки. Чтобы удалить звук из представления колонки, просто нажмите кнопку закрытия для этого звука, а также вы можете развернуть/свернуть регуляторы громкости и воспроизведения отдельных звуков, чтобы сделать представление более компактным.
  • -
  • Связать колонки: Кнопка Link Columns свяжет соседние колонки, то есть их регуляторы громкости и воспроизведения будут связаны между собой. Таким образом, любые звуки, находящиеся в любой из связанных колонок, будут иметь свою громкость при изменении регулятора любой из колонок.
  • -
  • Дополнительная колонка / Добавить колонку: Вы можете добавить столько дополнительных колонок в звуковой микшер, сколько необходимо, нажав на большую кнопку справа от микшера. Каждая дополнительная колонка будет добавлена к самой правой колонке и может быть связана с предыдущей, и вы можете добавлять звуки или аудиогруппы, как обычно. Если вам нужно удалить колонку из микшера, то вы можете найти кнопку Remove Sound Group , расположенную рядом с выпадающим меню Audio Group.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/Source_Control.htm b/Manual/contents/IDE_Tools/Source_Control.htm index 8a1439f4a..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/Source_Control.htm +++ b/Manual/contents/IDE_Tools/Source_Control.htm @@ -1,64 +0,0 @@ - - - - - - Контроль источников - - - - - - - - - - -

Контроль источников

-

Управление контролем исходных текстов (SCM) - это название метода работы с подверсиями или резервными копиями ваших проектов через репозиторий и локальный источник. По сути, решение SCM - это независимый программный пакет, который контролирует все аспекты поддержания, изменения и сравнения версий вашего проекта в процессе работы над ним. Это особенно полезно для тех, кто работает в команде и должен иметь возможность контролировать, кто что делает, и не беспокоиться о потере данных или внесении изменений, которые впоследствии придется отменить, но и отдельные пользователи могут воспользоваться этой мощной, но гибкой системой.

-

GameMaker использует Git в качестве SCM, который должен быть установлен и настроен отдельно, прежде чем SCM можно будет использовать в рамках GameMaker. См. документацию Git для получения более подробной информации относительно Git.

-

Ниже вы найдете ссылки на небольшое руководство по настройке этого плагина и использованию инструментов SCM в проекте.

-

ВАЖНО! Мы рекомендуем вам иметь некоторые рабочие знания о том, как работает контроль исходных текстов, прежде чем пытаться использовать его в GameMaker.

- -

-

В строке менюGameMaker появится выпадающее меню Source Control, которое будет заполнено следующими опциями после активации Source Control для вашего проекта (подробности см. в разделе Настройка плагина Git выше):

-

Здесь мы опишем каждый из доступных вариантов (большинство из них более подробно описаны в разделах учебника выше):

-
    -
  • Создать репозиторий проекта: Эта опция позволяет создать локальный репозиторий в том же каталоге, где находятся файлы проекта.
  • -
  • Клонировать репозиторий: Эта опция позволит вам клонировать хранилище из источника в новое место назначения.
  • -
  • Зафиксировать изменения: С помощью этой опции вы можете отобразить измененные файлы в вашем проекте и затем зафиксировать их в репозитории.
  • -
  • Push Changes: После выполнения фиксации или слияния эта опция используется для переноса изменений в основной репозиторий.
  • -
  • Pull Changes: С помощью этой опции вы можете обновить локальный репозиторий, извлекая измененные файлы из главного репозитория.
  • -
  • Просмотреть историю: Откроется окно истории, где можно просмотреть всю историю версий проекта и выбрать откат определенных путей файлов или целых ревизий.
  • -
  • Показать конфликты: Это откроет окно Conflicts и перечислит все конфликтующие файлы, которые могут существовать в проекте, позволяя вам разобраться с ними либо через GameMaker IDE, либо с помощью специального инструмента слияния.
  • -
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/Source_Control/Cloning_A_Repository.htm b/Manual/contents/IDE_Tools/Source_Control/Cloning_A_Repository.htm index c1e5f6e2f..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/Source_Control/Cloning_A_Repository.htm +++ b/Manual/contents/IDE_Tools/Source_Control/Cloning_A_Repository.htm @@ -1,54 +0,0 @@ - - - - - - Клонирование хранилища - - - - - - - - - -

Клонирование хранилища

-

Когда ваш проект хранится во внешнем репозитории, вам необходимо помнить о том, что нужно как вносить свои изменения, так и извлекать новые. Причина этого заключается в том, что при фиксации вы сохраняете свои изменения локально, что позволяет вам работать вдали от интернет-подключения и синхронизировать их, когда вы будете готовы, а для синхронизации вы отправляете свои изменения в удаленный репозиторий. Выталкивание изменений означает, что вы хотите перетащить все изменения, сделанные другими, из удаленного репозитория в ваш локальный репозиторий. Однако это означает, что могут возникнуть ситуации, когда люди будут редактировать одни и те же файлы, что, в свою очередь, приведет к конфликту слияния. Вам необходимо знать, как справляться с такими конфликтами, поэтому мы намеренно создадим один из них, а затем покажем, как с ним справиться.

-

ПРИМЕЧАНИЕ: Совместное использование локального репозитория проекта (даже через службу синхронизации файлов, такую как Dropbox) не рекомендуется, поскольку коммиты обычно записываются непосредственно в него, и, таким образом, у вас очень слабая защита от конфликтов.

-

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

-
    -
  • Перейдите в раздел Source Control > Clone Repository.
  • -
  • В поле URL введите путь к проекту, который мы установили в руководстве по реверсированию файлов выше (по умолчанию это будет <DRIVE>:\Users\<Username>\Documents\GameMaker\<ProjectName>).
  • -
  • Затем нам нужно задать путь для клонирования: -
    - Когда мы нажмем кнопку "Ok", мы получим следующее предупреждение о попытке клонирования "непустого" хранилища: -
    - Здесь мы можем снова нажать "Ok".
  • -
  • Теперь нам будет представлен проводник каталогов для создания "пустого" прокси-репозитория (это репозиторий, который можно безопасно хранить, например, на Dropbox). Найдите место, где мы хотим создать этот прокси-репозиторий, и выберите (или создайте) папку для использования.
  • -
-

Как только мы это сделаем, GameMaker переместит исходный проект на прокси-сервер, а новый переместит по пути, который мы указали в окне Clone Repository, а затем автоматически откроет браузер файлов, чтобы мы могли открыть сохраненный проект. Если мы теперь перейдем в Source Control > View History, то увидим наши исходные коммиты плюс новый коммит "Push For Clone".

-

Теперь вы клонировали свой репозиторий и можете продолжить работу над локальной версией проекта.

-

-

- -
© Copyright YoYo Games Ltd. 2024 All Rights Reserved
- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/Source_Control/Conflicts.htm b/Manual/contents/IDE_Tools/Source_Control/Conflicts.htm index 0d5b4e4ec..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/Source_Control/Conflicts.htm +++ b/Manual/contents/IDE_Tools/Source_Control/Conflicts.htm @@ -1,56 +0,0 @@ - - - - - - Конфликты - - - - - - - - - - -

Конфликты

-

В этом разделе мы рассмотрим разрешение конфликтов между клонированным локальным репозиторием и мастер-репозиторием. Предполагая, что вы сейчас используете локальный репозиторий, нам нужно будет отредактировать файл, а затем вызвать какой-то конфликт, поэтому откройте тестовый сценарий, который мы использовали, и измените сообщение "Hello World" на что-то вроде этого:

-

show_debug_message("Hello World, How Are You?");

-

Теперь вы должны сохранить проект и зафиксировать его в локальном репозитории. Теперь, поскольку мы связаны с удаленным мастер-репозиторием (даже если он клонирован на тот же диск), нам нужно выполнить Push, чтобы перенести изменения на мастер. Для этого перейдите в Source Control > Push Changes, что даст нам обновление статуса на вкладке Source Control Output:

-

Теперь нам нужно открыть наш оригинальный проект (не клонированный), поэтому перейдите к тому месту, где вы сохранили его на диске - или просто проверьте недавние проекты в меню Файл, так как они должны быть прямо под текущим проектом - и загрузите его в GameMaker. Простой способ проверить, что у вас правильный проект, - это просто проверить скрипт, который у вас есть, и если сообщение "Hello World", то у вас правильный проект, или вы можете открыть окно View History и проверить таким образом.

-

Теперь вам нужно снова отредактировать скрипт, чтобы он выглядел примерно так:

-

show_debug_message("This will cause a conflict.");

-

Это можно сохранить на диске, а изменения зафиксировать, но если вы попытаетесь продвинуть эти изменения, вы получите следующее сообщение:

-

Кто-то уже внёс изменения, которых у вас ещё нет! Это означает, что вам нужно сделать pull в репозитории и посмотреть, в чем именно проблема, поэтому перейдите в Source Control > Pull Changes. Появится два окна, первое - предупреждение об измененных файлах (как и в предыдущих действиях, здесь нужно выбрать Reload , а не Save), а второе - окно Conflicts :

-

В этом окне конфликтующие файлы будут показаны в списке слева, и вы можете выбрать файлы из этого списка с помощью левой кнопки мыши (или выбрать несколько файлов с помощью / или вместе с ). У вас есть четыре варианта действий с конфликтующими файлами, доступные с помощью кнопок справа:

-
    -
  • Использовать их - Это перезапишет сделанные вами изменения изменениями из удаленного репозитория.
  • -
  • Use Mine - Это отменит изменения из удаленного репозитория теми, которые вы только что внесли.
  • -
  • Слияние - Попытка открыть внешний инструмент слияния для обработки конфликта.
  • -
  • Выберите инструмент слияния - Это позволит вам настроить инструмент слияния (подробнее см. раздел " Внешние инструменты слияния/разделения ").
  • -
-

Теперь вы можете использовать кнопки, чтобы разобраться с конфликтом, но перед этим давайте откроем файл с конфликтом, чтобы увидеть, в чем именно проблема. Если вы откроете скрипт, который находится в конфликте, он будет выглядеть следующим образом:

-

Это показывает, что "This Will Cause A Conflict" находится в HEAD (это то, что мы поместили в локальный репозиторий), а "Hello World, How Are You?" извлекается из master, удаленного репозитория. Теперь вы можете вернуться в окно Conflicts и нажать Use Theirs, чтобы вытащить измененный файл и перезаписать текущий файл HEAD. Теперь сценарий будет помечен как измененный, и вам следует сделать новый коммит и push, прежде чем продолжать.

-

Обратите внимание, что на самом деле мы можем исправить это в GameMaker IDE. Если мы удалим строки 1, 2, 3 и 5, так что останется только show_debug_message("Hello World, How Are You?"), и сохраним его, это устранит конфликт, так как Git будет считать, что вы знаете, что делаете со своим собственным файлом. Однако это чревато ошибками, поэтому рекомендуется установить инструмент слияния, затем настроить и использовать его, а не пытаться выполнить слияние вручную.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/Source_Control/External_Merge_Diff_Tools.htm b/Manual/contents/IDE_Tools/Source_Control/External_Merge_Diff_Tools.htm index e03899adc..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/Source_Control/External_Merge_Diff_Tools.htm +++ b/Manual/contents/IDE_Tools/Source_Control/External_Merge_Diff_Tools.htm @@ -1,71 +0,0 @@ - - - - - - Внешние инструменты слияния/разделения - - - - - - - - - - -

Внешние инструменты слияния/разделения

-

Инструмент слияния

-

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

-

Поскольку каждый инструмент слияния отличается от другого, существует четыре макроса, которые могут быть использованы для указания файлов для него, которые можно настроить из окна Конфликты , нажав кнопку с надписью Choose Merge Tool:

-

Source Control Conflict Window

-

Когда вы нажмете на эту кнопку, откроется окно Параметры плагина Git:

-

Здесь указывается путь к выбранному инструменту слияния, а затем макрос (или макросы) Merge Tool Options, который будет использоваться при принятии решения о том, что делать, со следующими доступными опциями:

-
    -
  • ${scm_mine}: путь к вашей версии
  • -
  • ${scm_theirs}: путь к их версии
  • -
  • ${scm_base}: путь к версии, предшествующей конфликтующим изменениям
  • -
  • ${scm_merged}: путь к месту сохранения инструмента слияния
  • -
-

В качестве помощи в настройке, когда вы указываете путь к определенным инструментам слияния, GameMaker заполнит некоторые значения по умолчанию для начала работы, в зависимости от выбранного инструмента:

-
    -
  • KDiff3: "${scm_theirs} "${scm_mine}" -o "${scm_merged}"
  • -
  • Мельд: "${scm_mine}" "${scm_merged}" "${scm_theirs}"
  • -
  • Notepad++: ${scm_merged}
  • -
  • TortoiseMerge: /base:"${scm_base}" /theirs:"${scm_theirs}" /mine:"${scm_mine}" /merged:"${scm_merged}"
  • -
  • DiffMerge: "${scm_mine}" "${scm_merged}" "${scm_theirs}"
  • -
-

Обратите внимание, что если у вас нет (или вы не хотите использовать) инструмент слияния, то вы можете открыть сценарий в IDE и попытаться исправить его оттуда.

-

Итак, вернемся к нашему примеру конфликта, как указано в разделе " Конфликты"... Мы выполнили извлечение из master, и один из файлов оказался конфликтным. Откроется окно Source Control Conflicts , где вы можете щелкнуть на конфликтующем сценарии, а теперь щелкните на Merge, поскольку вы настроили инструмент слияния. При нажатии на кнопку объединить откроется инструмент, в котором вы сможете разобраться с конфликтом, а затем использовать макрос(ы) для внесения необходимых изменений. Когда вы закончите и закроете инструмент слияния, в GameMaker IDE появится следующее окно подтверждения:

-

Просто ответьте "Да" на этот запрос, поскольку вы только что сделали это сами с помощью инструмента слияния, а затем вам нужно зафиксировать это изменение, чтобы обозначить окончание операции слияния(Source Control > Commit Changes). Теперь в окне Commit будет показано, что слияние находится в процессе, а также будут показаны некоторые неустановленные файлы:

-

Эти непостановочные файлы - наш файл сценария с добавлением .base, .ours и .theirs. Мы можем безопасно удалить все эти файлы, поэтому щелкните на верхнем, а затем + на нижнем, чтобы выбрать их все. Затем щелкните правой кнопкой мыши на выбранных файлах и выберите Delete Path, чтобы удалить их. Для нас также предварительно заполнено сообщение о фиксации, в котором говорится, что это было слияние и что возник конфликт (мы можем дополнить или изменить его по своему усмотрению).

-

Теперь мы можем нажать кнопку Commit .

-

Из-за того, что у вас могут возникнуть проблемы с другими файлами, это означает, что ваш рабочий процесс при использовании удаленных или общих хранилищ должен быть следующим:

-

Make Changes > Save > Commit > Pull > Merge > Push

-

Инструмент Diff

-

Вы также должны настроить инструмент Diff Tool для использования при выполнении фиксаций в репозитории. Он настраивается в Предпочтениях, как и инструмент Слияние:

-

Инструмент Diff настраивается точно так же, как и инструмент Merge, но использует только опции ${scm_base} и ${scm_theirs} - в данном случае ${scm_base} представляет немодифицированный файл, а ${scm_theirs} - текущее состояние файла. Опции инструмента должны быть предварительно заполнены опциями по умолчанию для Meld, KDiff3 и TortoiseMerge, как и для инструмента Merge. Обратите внимание, что GameMaker не поддерживает вывод однофайловых diff-патчей, поэтому для Notepad++ опции по умолчанию отсутствуют.

-

Чтобы просмотреть изменения между текущей и предыдущей ревизиями с помощью инструмента Diff, просто откройте окно Commit и дважды щелкните на файле. Если инструмент был настроен правильно, он будет запущен, и вы сможете увидеть изменения между файлами.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/Source_Control/Repository_Options.htm b/Manual/contents/IDE_Tools/Source_Control/Repository_Options.htm index d0de4f7f7..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/Source_Control/Repository_Options.htm +++ b/Manual/contents/IDE_Tools/Source_Control/Repository_Options.htm @@ -1,45 +0,0 @@ - - - - - - Параметры репозитория - - - - - - - - - - -

Параметры репозитория

-

Установив исполняемый файл Git и включив Source Control для вашего проекта, вам теперь необходимо связать GameMaker IDE с репозиторием, что делается одним из двух способов:

-
    -
  • Создание репозитория проекта
  • -
  • Клонирование существующего хранилища
  • -
-

В первом случае, при создании репозитория проекта, будет создан репозиторий Git непосредственно там, где находится ваш проект. На языке Git это "непустой репозиторий", поэтому Push/Pull в данном случае не имеют смысла, но вы все равно сможете фиксировать и отслеживать изменения проекта, а также при необходимости возвращать изменения и ревизии. Чтобы настроить его, вам просто нужно выбрать Source Control > Create Project Repository в главном меню.

-

Для удобства вы также можете клонировать внешний репозиторий через IDE. Опять же, вам понадобится имя пользователя и пароль для репозитория, к которому вы собираетесь подключиться, установленные в ваших настройках идентификации, а затем просто нажмите Source Control > Clone Repository. Заполните URL (используя вариант HTTPS, а не SSH) и укажите, куда вы хотите его отправить:

-

После завершения клонирования он автоматически откроет браузер файлов, чтобы вы могли открыть проект, если захотите.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/Source_Control/Reverting_Files.htm b/Manual/contents/IDE_Tools/Source_Control/Reverting_Files.htm index 309df8d80..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/Source_Control/Reverting_Files.htm +++ b/Manual/contents/IDE_Tools/Source_Control/Reverting_Files.htm @@ -1,79 +0,0 @@ - - - - - - Реверсирование файлов - - - - - - - - - - -

Реверсирование файлов

-

В предыдущих разделах вы видели, как создавать репозиторий и фиксировать в нем данные, но что произойдет, если вы допустите ошибку и захотите "откатиться" к предыдущей фиксации? Давайте сделаем преднамеренную ошибку и посмотрим, как с ней справиться...

-

Прежде всего, создайте новый ресурс - в этом примере мы создадим ресурс Script - изначально вы не увидите значка состояния, так как с точки зрения контроля источников он еще не существует. В ресурс сценария добавьте простую строку кода, например:

-

show_debug_message("Hello World");

-

Если теперь вы закроете редактор кода, сценарий будет сохранен, и в браузере активов рядом с ним появится значок измененного файла . Теперь откройте окно Commit , и вы увидите, что изменения происходят в четыре этапа, поскольку новые ресурсы добавляются автоматически:

-

Изменения будут поэтапными:

-
    -
  • файл проекта .yyp
  • -
  • файл представления
  • -
  • сам скрипт GML
  • -
  • файл .yy, ссылающийся на него
  • -
-

Вы должны ввести сообщение о фиксации, а затем нажать кнопку Commit , как мы объясняли ранее. Теперь вернемся к нашему сценарию и изменим строку кода на (например):

-

show_debug_message("Hello World, how are you?");

-

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

-

Чтобы отменить изменение, нам сначала нужно снова открыть окно фиксации, поэтому мы снова переходим в Source Control > Commit Changes. Наш измененный файл снова будет поставлен в очередь, готовую к фиксации, но это не то, что нам нужно, поэтому мы нажмем кнопку Unstage All, чтобы убрать его из области постановки.

-

Если мы теперь щелкнем правой кнопкой мыши на файле, который мы изменили, мы получим контекстное меню с опцией " Вернуть путь":

-

При выборе этой опции вы вернете файлы в предыдущее состояние, в котором они находились.

-

ВАЖНО! При реверсировании вы получите сообщение с просьбой перезагрузить или сохранить текущий проект, так как программа проверки файлов обнаружила изменения на диске:
- Вы должны нажать Reload, а не save, так как сохранение сохранит то, что находится в памяти, а не перезагрузит реверсированные файлы. -

-

Это все замечательно для тех случаев, когда вы что-то редактируете и хотите внести изменения, не выполняя фиксацию, но как быть, если вы зафиксировали одно или несколько изменений и хотите откатиться к предыдущей фиксации? Что ж, давайте снова отредактируем наш сценарий так:

-

show_debug_message("This is a bad idea");

-

Теперь мы зафиксируем его, как и раньше, чтобы он попал под контроль исходного кода. Итак, это была плохая идея, и мы хотим откатиться назад, а значит, для начала нам нужно открыть окно Source Control > View History. Теперь в этом окне мы увидим список всех предыдущих коммитов, начиная с начального коммита, коммита для скрипта, а затем коммита для скрипта, который мы отредактировали как "плохую идею":

-

Теперь у нас есть два варианта. Мы можем отменить всю ревизию - что приведет к изменению всех файлов, которые были изменены в выбранном коммите - или мы можем выбрать отмену пути - что приведет к отмене только одного файла. Для начала давайте сделаем первый вариант:

-
    -
  • Щелкните правой кнопкой мыши на нашей второй фиксации в панели Commit History (фиксация "Hello World").
  • -
  • Выберите Revert To This Revision и затем выберите ReLoad в предупреждающем сообщении.
  • -
-

Вы должны увидеть, что сценарий теперь имеет красный значок состояния , и если мы откроем его, то получим следующее:

-

Затем мы можем выполнить фиксацию проекта и вернуться к исходному состоянию. Однако мы также можем отменить это действие для файла и вернуть фиксацию "плохой идеи", сделав следующее:

-
    -
  • Откройте окно Commit Changes.
  • -
  • Снимите с экрана сценарий с кодом "Hello World".
  • -
  • Щелкните правой кнопкой мыши и " Вернуть путь".
  • -
-

Теперь мы снова имеем ошибочный файл в проекте! Что ж, мы можем воспользоваться этой возможностью и изменить путь только к этому файлу, а не возвращать все к предыдущей ревизии. Для этого нам нужно сделать следующее:

-
    -
  • Откройте окно История просмотров.
  • -
  • Щелкните на второй фиксации (фиксация "Hello World").
  • -
  • Щелкните правой кнопкой мыши на нашем скрипте GML в панели Files и выберите Revert Path.
  • -
-

У нас снова должен быть код "Hello World", и мы можем сделать свежий коммит, чтобы обновить контроль исходного кода с исправленным файлом.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/Source_Control/Setting_Up_Git_Plugin.htm b/Manual/contents/IDE_Tools/Source_Control/Setting_Up_Git_Plugin.htm index 914573bca..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/Source_Control/Setting_Up_Git_Plugin.htm +++ b/Manual/contents/IDE_Tools/Source_Control/Setting_Up_Git_Plugin.htm @@ -1,42 +0,0 @@ - - - - - - Настройка плагина Git - - - - - - - - - - -

Настройка плагина Git

-

Прежде чем мы сможем использовать плагин Git, нам необходимо настроить исполняемый файл Git для использования, зайдя в раздел Plugins - Source Control (Git) в Preferences:

-

Plugins Git SCM Preferences

-

Путь к исполняемому файлу Git должен быть автоматически заполнен, если он найден с помощью GameMaker, однако если поле пустое, вы можете нажать на кнопку и вручную выбрать файл git.exe, включенный в папку cmd вашей установки Git, которая обычно находится внутри C:\Program Files\Git\.

-

Остальные параметры Git см. на странице Параметры плагина.

-

Прежде чем вы сможете использовать Source Control для своего проекта, вам нужно зайти в Параметры игры и включить Source Control:

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/Source_Control/Standard_Workflow.htm b/Manual/contents/IDE_Tools/Source_Control/Standard_Workflow.htm index 7bdac73f7..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/Source_Control/Standard_Workflow.htm +++ b/Manual/contents/IDE_Tools/Source_Control/Standard_Workflow.htm @@ -1,60 +0,0 @@ - - - - - - Стандартный рабочий процесс - - - - - - - - - - -

Стандартный рабочий процесс

-

По мере работы над проектом вы будете создавать sprites, редактировать сценарии, удалять графики и все остальное, что потребуется по мере развития проекта. Это все действия, которые вы, возможно, захотите отследить и вернуть, если что-то пойдет не так. Это основная причина для использования Source Control - чтобы можно было исправить любые ошибки - и мы быстро проведем вас через основной рабочий процесс с самого начала, чтобы вы поняли, как это работает.

-

Начиная с самого начала, создайте новый проект GML, а затем активируйте контроль исходных текстов через основные опции. Это даст нам доступ к меню Source Control в верхней части, поэтому мы сразу же перейдем и выберем Create Project Repository. Если вы посмотрите на ресурсы комнат, то увидите, что комната по умолчанию приобрела красный восклицательный знак , означающий, что она была изменена по сравнению с предыдущим состоянием. Если бы у нас были другие ресурсы в проекте, вы бы увидели, что все они имеют одинаковый значок, как показано на изображении ниже:

-

Теперь у нас есть возможность либо зафиксировать пустой проект как есть, либо довести его до базового состояния. Сейчас мы сделаем первую фиксацию, поэтому нажмите Source Control > Commit Changes. Теперь у нас откроется новое окно, разделенное на три области:

-

SCM Modified Icon

-
    -
  • Поэтапные изменения: Здесь представлены изменения, которые будут зафиксированы в исходном тексте. Скорее всего, здесь будет пусто, но может быть показано изменение Main Options, что вполне нормально.
  • -
  • Неустановленные изменения: Здесь показаны файлы, которые изменились, но мы не сообщили Git, что хотим зафиксировать их - это "ожидающие" изменения.
  • -
  • Commit Message: Это примечание, которое мы можем добавить, чтобы объяснить суть изменений.
  • -
-

Пока что нажмите кнопку Stage All, так как мы хотим зафиксировать все изменения, введите что-то вроде "First Commit!" в Commit Message и нажмите Commit. Теперь на всех наших ресурсах должна стоять зеленая галочка, означающая, что изменений не обнаружено.

-

Стоит отметить, что при работе в этом окне различные сообщения Staged и Unstaged будут сопровождаться символом. Используемый символ зависит от операции и файла, при этом используются следующие:

-
    -
  • [...] - Поэтапное изменение (ранее было [A])
  • -
  • [+] - добавлено недавно
  • -
  • [->] - Переименовано/перемещено
  • -
  • [-] - удалено
  • -
  • [M] - Непостановочные изменения
  • -
  • [?] - Неотслеживаемый файл
  • -
  • [!] - Отсутствующий файл
  • -
-

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

-

Поработав некоторое время, вы можете захотеть проверить и посмотреть, что вы зафиксировали в тот или иной момент времени, и для этого вам понадобится открыть историю коммитов. Чтобы открыть окно истории, просто перейдите в Source Control > View History, что откроет еще одно окно с тремя панелями:

-

Верхняя панель описывает коммиты, средняя панель описывает комментарий к выбранному коммиту, а нижняя панель описывает файлы, которые были изменены в этом коммите. Обратите внимание, что если вы настроили инструмент Diff Tool, то двойной щелчок на любом файле в этом окне откроет инструмент diff, и вы сможете увидеть изменения между файлами.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/The_Debugger.htm b/Manual/contents/IDE_Tools/The_Debugger.htm index 0e318843e..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/The_Debugger.htm +++ b/Manual/contents/IDE_Tools/The_Debugger.htm @@ -1,153 +0,0 @@ - - - - - Отладчик - - - - - - - - - - -

Отладчик

-

Отладчик - это мощный инструмент для проверки вашей игры, особенно полезный для поиска ошибок и багов в коде, а также для проверки того, что скрипты выполняются тогда, когда они должны выполняться, и что переменные и массивы содержат те - ожидаемые значения и т.д.. Вы можете запустить отладчик, запустив свою игру из GameMaker IDE с помощью кнопки Debug в верхней части сайта IDE, или зайдя в меню Build и выбрав пункт "Debug".

-

ПРИМЕЧАНИЕ: Вам может быть предложено Windows Firewall (или любой другой программой брандмауэра, которую вы запускаете) создать исключение безопасности для этого модуля. Вы должны сделать это, иначе он не будет работать правильно. Это связано с тем, как - работы отладчика и необходимо для отладки мобильных платформ.

-

Когда вы запускаете игру в режиме отладки, на сайте IDE будут отображаться различные инструменты, доступные для отладчика:

-

На изображении выше показана стандартная компоновка отладчика, но, как и в случае с другими аспектами IDE, вы можете настроить ее в соответствии со своими потребностями, закрыв - окна, которые вам не нужны, или изменить размеры документов и окон, которые вам нужны. Вы можете в любой момент сбросить раскладку отладчика или снова открыть закрытые окна из контекстного меню отладчика в верхней части IDE:

-

Ниже мы объясним, для чего нужен каждый раздел отладчика:

-

Просмотр графика

-
-

Представление Graph показывает графическое отображение того, как ваш проект использует память и частоту кадров с течением времени:

-

График показывает текущее и среднее использование памяти, а также текущий и средний FPS с течением времени, и вы можете увеличивать или уменьшать масштаб, используя кнопки / вместе с колесиком мыши , а если вы наведете курсор мыши на любой из элементов графика, он покажет вам значение для этого элемента в выбранной точке.

-

В представлении Graph также отображаются определенные события отладки в виде точек по всей длине графика. Эти события автоматически генерируются GameMaker в определенные моменты работы игры, чтобы показать конкретные важные события, но вы также можете - добавить свои собственные элементы графика с помощью функций show_debug_message() и debug_event(). - Системные события будут отмечены другим цветом, чем события, вызванные кодом:

-

При запуске игры в режиме отладки и наведении курсора на эти события будет показан список всех событий, которые были вызваны в этот момент в игре, - и у вас есть возможность вытащить список в отдельное окно для редактирования, нажав на текст "Нажмите, чтобы открыть в новом окне":

-

Debug Icon

-

-
-

Просмотр ресурсов

-
-

Вид ресурсов показывает список всех ресурсов, используемых в проекте, которые могут содержать код или действия GML Visual. Этот раздел работает аналогично Браузеру ресурсов, и вы можете развернуть элементы - в нем, чтобы показать больше информации, например, различные события для определенного объекта. Затем вы можете дважды щелкнуть на любом из ресурсов, чтобы открыть код для него в представлении кода. - код для него в окне Code View, где можно проверить значения, добавить или удалить точки останова.

-

-
-

Стек вызовов

-
-

В этом окне отображается текущий стек вызовов событий, а также номер строки, по которой выполняется код. Стек вызовов - это, по сути, структура данных "последний вошел - первый вышел", которая показывает порядок выполнения всего игрового - кода как из программы GameMaker - поскольку отладка осуществляется с помощью виртуальной машины (VM), - так и из того, что вы написали для игры. Отладчик должен быть - быть приостановлен , прежде чем здесь появится какая-либо информация.

-

-
-

Панель инструментов

-
-

На панели инструментов находятся элементы управления отладчиком, а также основная информация, такая как использование памяти, текущий (реальный) FPS для игры и индикатор, показывающий, подключен ли отладчик в данный момент или нет (индикатор будет зеленым, если он подключен к работающему экземпляру вашего проекта, и красным в противном случае). - к запущенному экземпляру вашего проекта и красным в противном случае). Доступными элементами управления являются:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The Debugger WindowsЭто позволяет запустить игру снова после того, как она была приостановлена (сочетание клавиш "f5").
Debugger Context MenuЭто приостановит (прервет) игру.
Debug GraphПерезапускает игру.
Control IconОстанавливает игру.
CMD IconВойдите в блок кода или сценарий (сочетание клавиш "f11").
MMB IconПерейдите к блоку кода или сценарию (сочетание клавиш "f10").
Debug Graph EventsВыйдите из блока кода или сценария (сочетание клавиш + "f11").
Debug EventsВключите или выключите обновление отладочной информации в реальном времени (по умолчанию выключено).
-

Первые три кнопки используются для управления игрой, позволяя вам в любой момент начать, приостановить, перезапустить или остановить ее. Когда игра приостановлена (либо нажатием кнопки Пауза - или в точке останова), вы можете использовать три кнопки шагов для перехода по коду.

-

Когда мы говорим о "шаге" по коду, мы просто имеем в виду, что вы можете сказать своей игре выполнить текущую строку кода, а затем "шагнуть" к следующей, что позволит вам выполнить всю игру по одной строке кода за раз. - если вы того пожелаете. Обычно для этого используется кнопка Step In, но у вас также есть кнопка для перехода по коду и кнопка для выхода из кода. Шаг за шагом полезен, когда - когда нужно выполнить большой скрипт, так как при нажатии этой кнопки весь скрипт или блок кода будет выполнен за один шаг и остановится на следующей строке, в то время как шаг из кода выведет вас из скрипта (он будет выполняться, но весь сразу) и остановится на следующем шаге после изменения области действия. - и остановится на следующем шаге после этого, когда область видимости изменится.

-

Последний значок обновления в реальном времени позволяет отладочному окну обновлять свои данные в реальном времени, так что вы можете видеть, как изменяются переменные или создаются и уничтожаются экземпляры, как это происходит. Обратите внимание, что это может повлиять на производительность игры - и что не вся информация доступна в реальном времени. Например, часы состояния рендеринга (см. раздел " Часы") нельзя просматривать в реальном времени.

-

-
-

Просмотр кода

-
-

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

-

Когда любое окно кода открыто в представлении кода, вы можете щелкнуть левой кнопкой мыши в желобе (где находятся номера строк), чтобы добавить или удалить точки останова (см. - далее на этой странице информацию о точках останова).

-

Вы также можете использовать правую кнопку мыши , чтобы открыть Контекстное меню, которое также позволяет добавлять или удалять точки останова и копировать любой - выделенный код в буфер обмена.

-

-
-

Часы

-
-

Этот раздел посвящен "наблюдению" за различными аспектами вашей игры для более глубокой и детальной отладки. Подробно об этом рассказывается на следующей странице:

- -
-


Важно отметить, что во время работы игры она по умолчанию не обновляет значения переменных и другие данные в окнах отладки, поэтому сначала необходимо либо использовать кнопку Pause в отладчике, чтобы приостановить игру до того, как станут доступны локали, глобали и другие данные, либо включить обновление в реальном времени с помощью иконок в верхней части экрана . Единственным - Единственным исключением из этого правила является вид профиля , который обновляется в реальном времени при включении независимо от переключателя реального времени, так как у него есть своя собственная кнопка включения/выключения. Полную информацию об этом представлении вы можете найти на следующей странице:

- -

Еще одной важной частью отладки игры является использование точек останова. Точка останова - это место в коде вашего проекта, которое вы хотите остановить, чтобы вы могли видеть, что происходит. При запущенном отладчике вы можете добавлять или удалять точки останова - в любое время и в любом блоке кода или сценария, щелкнув левой кнопкой мыши на в желобе (где находятся номера строк), или вы можете использовать правую кнопку мыши. чтобы - открыть Контекстное меню, которое также позволяет добавлять и удалять точки останова:

-

Точки останова также могут быть установлены из GameMaker IDE. При написании проекта они могут быть добавлены или удалены в любое время с помощью команды - f9 (или с помощью правой кнопки мыши и выбора "toggle breakpoint"), либо на действие в окне объекта - (для пользователей GML Visual), либо на строке в окне редактора кода. Теперь, когда вы запускаете свою игру в режиме отладки, она будет приостанавливаться в точке (или точках), которую вы определили.

-

Точки останова, установленные на сайте IDE, сохраняются вместе с проектом и сохраняются при различных запусках, пока не будут удалены. Однако если вы добавите точку останова в код в отладчике, она будет потеряна после закрытия модуля или начала нового запуска теста. - Обратите внимание, что все точки останова отображаются в окне вывода, где их можно включить, отключить или даже удалить.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/The_Debugger/The_Profiler.htm b/Manual/contents/IDE_Tools/The_Debugger/The_Profiler.htm index 5ff280b24..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/The_Debugger/The_Profiler.htm +++ b/Manual/contents/IDE_Tools/The_Debugger/The_Profiler.htm @@ -1,80 +0,0 @@ - - - - - - Профилировщик - - - - - - - - - - -

Профилировщик

-

Отладчик позволяет просматривать код и находить любые проблемы в кодовой базе, но иногда необходимо проверить более тонкие детали, чтобы правильно оптимизировать игру. Опция Profile помогает сделать это, предоставляя обзор производительности, показывая время, необходимое для вызова функций, скриптов и даже время, необходимое для завершения определенного события.

-

Помимо главного окна, показывающего все различные события, сценарии и вызываемые функции, у вас также есть следующие опции для использования Profiler:

-

Включить / Выключить

-
-

Это кнопка для включения или отключения профилировщика. При включении профайлер запустится, и вы начнете видеть события, скрипты и функции в списке главного окна вместе с различными значениями данных для каждого из них. То, как отображаются эти данные - будет зависеть от режима отображения времени и режима просмотра (оба эти параметра более подробно описаны ниже).

-


-
-

Отображение времени

-
-

Этот флажок позволяет переключаться между средним и абсолютным временем для профилировщика. Если он не установлен, значения, отображаемые в главном окне, будут представлять собой общее количество вызовов, сделанных к - функции, скрипту или событию, и общее время, затраченное (время указано в микросекундах) на выполнение профиля. Однако если вы включите эту функцию, то в этих столбцах будет показано среднее время, затраченное на каждый шаг для каждой функции, - сценария или события, а также среднее количество вызовов этой функции.

-


-
-

Режим просмотра

-
-

Это меню позволяет выбрать режим просмотра, который может быть либо сверху вниз, либо снизу вверх.

-

При выборе режима просмотра сверху вниз профиль будет показан сверху вниз (более или менее аналогично иерархии стека вызовов), поэтому будет показано событие, затем сценарий, а затем все использованные функции. Обратите внимание, что вы можете дважды щелкнуть на любой из записей, чтобы открыть ее в окне отладки Source , если оно у вас есть. - если оно у вас есть. Если вы видите значок рядом с именем, значит, в этом разделе есть дополнительные вызовы сценария или функции. - и щелчок на развернет дерево, чтобы показать их.

-

При выборе режима просмотра " Снизу вверх " все будет показано снизу вверх, так что вы сможете увидеть все функции и вызовы сценария по отдельности. При использовании этого режима просмотра щелчок на развернет функцию или сценарий, чтобы показать, что именно было вызвано.

-


-
-

Посмотреть цель

-
-

Цель просмотра позволяет вам выбрать между просмотром проекта GML (данные о событиях и коде), фоновых процессов движка или и того, и другого. Если вы выберете "GML", то вы получите события, функции и скрипты, вызываемые - Каждый шаг, в то время как представление "Engine" покажет только вызовы движка, необходимые проекту, позволяя вам увидеть любые узкие места в том, как ваш проект обрабатывает вещи. Если вы выберете "Both", то оба набора данных будут - но обратите внимание, что в сочетании с представлением "Снизу вверх" различные вызовы сценариев и функций будут вложены в вызовы движка, и вам нужно будет щелкнуть по , чтобы развернуть их.

-


-
-


- Данные профиля отображаются в четырех столбцах, и нажатие на любой из них позволяет отсортировать данные в соответствии с критериями столбца.

-

Debug Profile Window

-
    -
  • Имя: Это имя вызываемого события, сценария или функции, рядом с которым может стоять для обозначения дальнейших вызовов этого события или функции (в зависимости от выбранного режима просмотра ). Вы можете дважды щелкнуть на любом из имен, чтобы открыть блок кода или сценарий в окне Source. Щелкнув по верхней части этого столбца, вы отсортируете имена в алфавитном порядке.
  • -
  • Время: Здесь отображается либо общее время, которое заняла функция (или сценарий, или событие) во время профилирования, либо среднее время вызова каждого шага (в зависимости от выбранной опции отображения времени ), которое отображается в микросекундах.
  • -
  • Вызовы: Здесь вы можете увидеть либо общее количество обращений к данному событию, функции или сценарию, либо среднее количество обращений к нему за один шаг (опять же, в зависимости от выбранной опции Time Display ).
  • -
  • Step%: Значение, показанное здесь, - это общий процент одного шага, который сделал вызов.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/The_Debugger/Watches.htm b/Manual/contents/IDE_Tools/The_Debugger/Watches.htm index 5bd06430f..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/The_Debugger/Watches.htm +++ b/Manual/contents/IDE_Tools/The_Debugger/Watches.htm @@ -1,126 +0,0 @@ - - - - - Часы - - - - - - - - - - -

Часы

-

Идея отладчика заключается в том, чтобы позволить вам "наблюдать" за каждой деталью вашей игры. Для этого используются "окна наблюдения", которые по умолчанию открываются в окне Output, прикрепленном - IDE Вы можете щелкнуть на каждой из различных вкладок, чтобы увидеть содержащиеся в них часы, некоторые из которых могут обновляться в реальном времени (если включена отладка в реальном времени на панели инструментов отладчика), в то время как другие требуют, чтобы отладчик приостановил игру.

-

Когда вы наблюдаете за переменными в любом из окон, они могут быть одного из нескольких типов данных. Однако из-за того, как GameMaker хранит определенные данные, отладчик не всегда может точно знать, что именно хранит - переменная. Это происходит потому, что внутренние значения ID для структур данных или экземпляров являются целыми числами , и поэтому отладчик не всегда знает, является ли целочисленное значение, хранящееся в переменной, значением структуры данных или экземпляра, или это - просто целочисленное значение. По этой причине вы можете щелкнуть правой кнопкой мыши на любом значении переменной и получить всплывающее окно со списком доступных типов данных. - которыми может быть эта переменная:

-

Строки и массивы не допускают такой возможности, и стоит отметить, что даже если структура данных хранится в переменной экземпляра, ее ID номер - является глобальным, поэтому если у вас есть четыре экземпляра и каждый из них создает список ds_list (например), каждый список будет иметь ID от 0 до 3, и не все они будут равны 0.

-

Выбрав тип данных, переменная отобразит записи в структуре, просто щелкнув по маленькому значку рядом с ее названием. Это позволит раскрыть структуру - Вы также можете изменить некоторые значения для показанных переменных, просто дважды щелкнув на значении и присвоив ему новое значение.

-

ПРИМЕЧАНИЕ: вы не можете переназначить массивы или структуры данных таким образом, но вы можете изменить некоторые из их содержимого (вы не можете изменить значения "ключа" в картах, а также значение приоритета для очередей приоритетов).

-

Ниже приведен список всех различных окон часов, а также объяснение того, для чего они нужны и как их использовать:

-

Местные жители

-
-

В окне Locals отображаются свойства текущего шага, которые включают имя текущего события (или сценария), выполняемого в настоящее время - смещение в коде виртуальной машины (VM) для текущего сценария (аббревиатура "PC" означает "счетчик программ"), экземпляр "self", выполняющий - блок кода, и "другой" экземпляр в событии. Последняя часть действительна только в том случае, если событие является событием столкновения или в коде используется "with". Если экземпляр находится в столкновении, - "other" покажет другой экземпляр (и его переменные) в столкновении, но если это with, то экземпляр "Self" становится тем, который выполняет код, а "Other" - это экземпляр. - with В остальное время "other" будет просто показывать те же данные, что и "Self".

-

Обратите внимание, что экземпляры "Self" и "Other" можно развернуть, щелкнув на , чтобы увидеть - список всех локальных переменных и переменных экземпляра, которые в настоящее время объявлены для просматриваемого блока кода. Если вы щелкните правой кнопкой мыши на значении, вы можете установить его тип , чтобы увидеть детали структур данных.

-


-
-

Globals

-
-

В окне Globals будет показан список - всех объявленных в данный момент глобальных переменных и их значений. Если вы щелкните правой кнопкой мыши на значении, вы можете установить его тип , чтобы увидеть подробности о структурах данных.

-


-
-

Часы

-
-

В этом окне вы можете добавить конкретную переменную, которую - которую вы хотите отслеживать. Это может быть глобальная переменная или переменная области видимости экземпляра , встроенная переменная или даже массив или структура данных. Если в коде экземпляра, который - в коде экземпляра есть наблюдаемая переменная, она будет показана здесь, что означает, что вы можете легко отслеживать значение без необходимости искать его в окнах Locals или Globals . Если вы щелкните правой кнопкой мыши на значении, вы можете установить его тип, удалить его или очистить все часы из окна.

-


-
-

Экземпляр

-
-

Как следует из названия, в этом окне отображаются все переменные экземпляра , - локальные переменные для события экземпляра, встроенные переменные и структуры, связанные с экземпляром, который в данный момент просматривается в окне Source (если на экземпляр ссылаются, используя - ключевое слово "other" или оператор with , то в этом окне будут показаны свойства этого экземпляра). Если вы щелкните правой кнопкой мыши на значении, вы можете установить его тип, удалить его или очистить все часы из окна.

-


-
-

Все экземпляры

-
-

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

-


-
-

Выбранный экземпляр

-
-

Это окно предназначено для того, чтобы - вы выбираете экземпляр из своей игры. Для этого нужно просто приостановить игру, а затем щелкнуть на любом видимом экземпляре в окне игры. Информация об экземпляре, находящемся под курсором мыши, будет отображена в окне Selected - Instance, где вы можете увидеть встроенные переменные, переменные экземпляра и структуры, как и в окне Instances.

-


-
-

Состояния рендеринга

-
-

Эти часы показывают всю доступную информацию - о состоянии текущего рендеринга кадра, например, альфа-канал или цвет заливки. Эта информация не может быть обновлена в реальном времени, поэтому вам придется приостановить игру, чтобы обновить и получить информацию о кадре. - детали. -

-


-
-

Поверхности / Текстуры

-
-

Эти часы позволяют вам увидеть - что именно рисуется на любых поверхностях , которые есть в вашей игре (включая поверхность приложения), а также увидетьстраницы текстур, которые находятся в памяти. Вы можете выбрать текстуры или поверхности из меню в нижней части часов, а затем навести курсор мыши на идентификатор текстуры или поверхности, чтобы он отобразился во всплывающем окне:

-

Обратите внимание, что отладчик должен быть приостановлен , прежде чем они обновятся.

-


-
-

Профиль

-
-

В этом окне вы можете увидеть текущий профиль системы тестируемой игры и проверить все в вашей игре, от целых событий до отдельных вызовов функций, чтобы увидеть, как они работают и выявить - любые проблемные области или узкие места. Дополнительную информацию о профилировании см. на следующей странице:

- -


-
-

Буфер

-
-

Если вы инициализировали какие-либо буферы в вашей игре, то в этом окне будут показаны данные буфера. Вы можете выбрать любой созданный буфер, установив значение Buffer ID, которое будет начинаться с 0 для первого буфера, созданного - в вашей игре, и увеличивается на 1 для каждого последующего буфера:

-

Если вы щелкните правой кнопкой мыши на окне данных или нажмите кнопку Отображение данных, вы можете выбрать способ отображения данных, установив выравнивание и тип, а также задать, как - данные располагаются в поле Выбор столбцов. Здесь есть выпадающее окно, в котором можно выбрать из списка раскладок по умолчанию.

-
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/The_Inspector.htm b/Manual/contents/IDE_Tools/The_Inspector.htm index 21d25c456..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/The_Inspector.htm +++ b/Manual/contents/IDE_Tools/The_Inspector.htm @@ -1,110 +0,0 @@ - - - - - - Инспектор - - - - - - - - - - -

Инспектор

-

В окне инспектора отображаются все свойства, связанные с выбранными элементами на сайте IDE.

-

Вы можете выбрать один или несколько элементов в любом редакторе, просмотреть или изменить их различные свойства:

-
-
The Inspector Window -
Инспектирование дорожки последовательности
-
-
The Inspector Window -
Инспектирование звуковых активов
-
-
-

Инспектор можно открыть из меню Windows в верхней части окна GameMaker:

-

Выберите эту опцию, чтобы открыть новое окно инспектора - вы можете иметь несколько открытых окон одновременно.

-

После открытия окна инспектора вы можете прикрепить его в любом месте IDE, или использовать его как плавающее окно:

-

-

Использование инспектора

-

Инспектор позволяет просматривать и редактировать активы, не полагаясь исключительно на рабочие пространства.

-

Например, обычно вы можете редактировать код события в полноэкранном режиме и часто переходить обратно в рабочую область для редактирования свойств объекта.

-

С помощью инспектора можно просматривать детали объекта, оставаясь в полноэкранном режиме:

-

Это позволяет изменять свойства объекта и удалять/изменять события при редактировании его кода в полноэкранном режиме, а также устанавливать родительские права, определения переменных и многое другое.

-

Хотя в данном примере рассматриваются только объекты, Инспектор может гораздо больше и позволяет редактировать множество различных видов активов (например, Sprites, шрифты, анимационные кривые и т.д.).

-

Элементы редактора

-

Помимо активов, в редакторе можно также осматривать элементы, такие как слои в комнате, дорожки в последовательности и т.д.

-

Инспектор позволяет применить фильтр или эффект к слою комнаты, чего нельзя сделать в самом редакторе комнат:

-

-

ПРИМЕЧАНИЕ Когда вы применяете фильтр/эффект к слою, не являющемуся FX, с помощью Инспектора, он всегда применяется как "однослойный" эффект, т.е. его эффект будет применяться только к этому конкретному слою, а не к другим слоям, расположенным ниже него.

-

Кнопка "Открыть редактор"

-

Если актив выбран, вы можете нажать "Открыть редактор" в Инспекторе, чтобы открыть редактор актива.

-

Например, если сделать это с объектом, откроется редактор объектов, где вы можете изменить его свойства, добавить события и т.д.

-

Однако при редактировании чего-либо внутри помещения, например, экземпляра или слоя, инспектор будет фокусироваться только на редакторах внутри редактора помещения.

-
-
При выборе "Открыть редактор" для экземпляра откроется редактор экземпляра, а не редактор объекта
-
-

Как показано выше, выделение экземпляра в помещении и нажатие кнопки "Открыть редактор" в инспекторе откроет редактор экземпляра.

-

Аналогично, если выбрать слой Path и нажать "Открыть редактор", фокус переместится на панель слоев, где можно редактировать свойства слоя, вместо того, чтобы открыть редактор активов Path.

-
-
Выбор "Открыть редактор" для слоя контура приведет к фокусировке на редакторе для этого слоя
-
-

Multi-Select

-

Инспектор позволяет одновременно просматривать и редактировать свойства нескольких активов и элементов (например, слоев помещений и дорожек последовательности).

-

Выберите нужные активы или элементы, удерживая CTRL / CMD и щелкая левой кнопкой мыши. Выбранные элементы появятся в списке "мультивыбора" в Инспекторе:

-
-
Три дорожки Sprite, выбранные в последовательности.
-
-

Нажмите X рядом с элементом, чтобы удалить его из выбора.

-

Редактирование значений

-

Если выбранные вами элементы имеют одинаковое значение для какого-либо свойства, это общее значение появится в этом поле.

-

Однако если элементы имеют разные значения для какого-либо свойства, редактор просто покажет - вместо этого значения.

-
-
Значения, отображаемые для нескольких дорожек в последовательности.
-
-

Вы можете изменить любое из этих полей. При изменении значения оно будет применено ко всем выбранным элементам.

-

Выбор внутри списка

-

Вы можете выбрать любой элемент в списке мультивыбора для просмотра и редактирования его свойств без необходимости сбрасывать выбор.

-
-
Просмотр любого одного элемента в списке мультивыбора
-
-

Щелкните по пустой области в списке, чтобы вернуться к виду мультивыбора.

-

Обратите внимание, что вы не можете выбрать несколько элементов в этом списке.

-

Выделение выбора

-

Когда элемент выбран в списке мультивыбора, он отображается в редакторе с красным контуром:

-
-
Дорожка spr_player, выбранная в списке мультивыбора, появляется с красным контуром в редакторе последовательностей
-
-

Цвет этого контура можно изменить в Настройках помещения и Настройках последовательности.

-

Многочисленные инспекторы

-

Вы можете открыть несколько окон инспектора в любое время, и каждое из них может быть связано с определенным элементом на сайте IDE.

-

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

-

Для этого нужно открыть инспектор, выбрать элемент IDE для проверки, а затем нажать кнопку блокировки на инспекторе, чтобы заблокировать его на элементе (показано на рисунке ниже). После блокировки инспектора можно открыть другой и повторить процесс.

-

Обратите внимание, что заблокированное окно инспектора не блокирует редактирование любых значений для инспектируемого элемента. Он просто фиксирует инспектор на выбранном элементе, и вы можете продолжать редактировать его в любое время, даже если исходный элемент не является основным фокусом IDE.

-

С помощью функции блокировки вы можете одновременно открыть несколько инспекторов, каждый из которых будет заблокирован на определенном активе, как показано в примере ниже:

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/IDE_Tools/The_Micro_Web_Server.htm b/Manual/contents/IDE_Tools/The_Micro_Web_Server.htm index 415c3b5f6..e69de29bb 100644 --- a/Manual/contents/IDE_Tools/The_Micro_Web_Server.htm +++ b/Manual/contents/IDE_Tools/The_Micro_Web_Server.htm @@ -1,48 +0,0 @@ - - - - - - Micro Web Server - - - - - - - - - - -

Micro Web Server

-

Основной функцией этого небольшого инструмента является подключение и передача файлов на некоторые из доступных целевых платформ для GameMaker (например, на HTML5). Он также обслуживает файлы для руководства GameMaker при автономном использовании.

-

Когда вы запускаете игру на объекте, для которого требуется Micro Web Server, вы увидите, как открывается новое окно, когда игра передается на выбранное устройство:

-

Micro Web Server Window

-

ПРИМЕЧАНИЕ При первом запуске игры на цели, для которой требуется Micro Web Server, может появиться предупреждение брандмауэра. В этом случае следует разрешить веб-серверу взаимодействовать через брандмауэр.

-

Когда Micro Web Server запущен, вы можете получить доступ к своей игре с любого локального устройства (и даже удаленно, если правильно настроено перенаправление портов). Просто зайдите на локальный IP-адрес вашего компьютера через порт, указанный в этом окне, и вы сможете играть в свою игру с другого устройства, например, мобильного телефона или другого компьютера.

-

Допустим, локальный IP-адрес вашего компьютера - 192.168.0.110( как его найти,читайте здесь ), а порт, указанный в окне Micro Web Server, - 51264. Запустив игру на компьютере, вы подключитесь к 192.168.0.110:51264 через браузер на мобильном телефоне и будете играть в свою игру.

-

Веб-сервер покажет определенное количество отладочной информации, связанной с файлами, которые были обслужены, и имеет кнопку для ее очистки в нижней части. Рядом с кнопкой "Очистить" указан путь к корневому JS-файлу проекта, а под ней находится опция Скорость сети. По умолчанию она установлена на "Без ограничений", но нажатие на нее открывает список различных сетевых опций:

-

Изменение этой настройки также изменит параметр Размер пакета вправо. Вы также можете изменить этот параметр вручную, в этом случае для параметра Скорость сети будет установлено значение "Пользовательская". Установка значения, отличного от максимального, эффективно снизит скорость передачи данных по сети и позволит вам тестировать игры в среде с низкой пропускной способностью.

-

Вы также можете увидеть список разрешенных IP-адресов вместе с номером используемого порта , но их нельзя редактировать в Micro Web Server. Вместо этого их следует установить в настройках диспетчера устройств для данного целевого устройства или в настройках HTML5 Preferences при использовании устройства "По умолчанию".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/Compiling.htm b/Manual/contents/Introduction/Compiling.htm index 196eb61c9..e69de29bb 100644 --- a/Manual/contents/Introduction/Compiling.htm +++ b/Manual/contents/Introduction/Compiling.htm @@ -1,138 +0,0 @@ - - - - - - Компиляция - - - - - - - - - - -

Компиляция

-

Компиляция вашей игры может означать одно из двух: компиляция для тестирования или компиляция для создания финальной версии игры для конкретной целевой платформы. исполняемый пакет для конкретной целевой платформы. Эта страница призвана подробно объяснить оба варианта.

-

Компиляция для тестирования

-

Компиляция игры для тестирования может быть выполнена простым нажатием кнопки Play в верхней части страницы IDE, которая запустит игру для тестирования с использованием указанной цели. Вы также можете запустить игру в режиме отладки, используя кнопку Debug . При этом игра будет запущена, но также откроется окно отладки, где вы сможете проследить за работой игры и увидеть любые проблемы (более подробную информацию см. в разделе " Отладка" ).

-

Целевые установки

-

По умолчанию GameMaker запускается и отлаживается с помощью встроенной виртуальной машины (VM), что практически аналогично запуску на используемой настольной ОС. Однако GameMaker является кроссплатформенным движком, и вы можете тестировать, отлаживать и компилировать исполняемые пакеты ваших проектов на нескольких различных целевых платформах (конкретные доступные платформы зависят от деталей вашей лицензии). Для изменения текущей целевой платформы вы можете щелкнуть на кнопке Targets , чтобы открыть окно Targets Window, которое будет выглядеть примерно так (точные детали зависят от типа вашей лицензии):

-

В верхней части окна, рядом с кнопкой "Цели", отображаются текущие настройки, которые указывают на платформу и конкретные настройки, используемые в данный момент, а остальная часть окна занята деталями и опциями для всех доступных целей, которые вы можете выбрать для использования вместо них. Каждый раздел этого окна объясняется ниже:

-
-
    -
-
-

Платформа

-
-

В этом разделе перечислены все доступные целевые платформы. Содержание этого списка зависит от имеющейся у вас лицензии, но в нем всегда будет присутствовать, по крайней мере, цель "Opera GX". Чтобы выбрать цель, просто щелкните на ней ; это приведет к обновлению остальных окон опций для отображения различных деталей в зависимости от выбранной платформы.

-

Подробные сведения о компиляции для каждой платформы приведены в разделе "Создание конечного исполняемого пакета" ниже.

-
-

Выход

-
-

Каждая целевая платформа может иметь один или несколько форматов вывода, основными из которых являются:

-
    -
  • VM: Цель VM (виртуальная машина) использует общий бегунок для каждой платформы, а затем интерпретирует код для вашей игры. Обычно этот вариант используется для тестирования из-за более быстрого времени сборки, но он не дает такого же прироста производительности, как использование опции YYC (если она доступна). Вы можете использовать его для компиляции исполняемых пакетов для небольших игр или игр, в которых производительность не является проблемой.
  • -
  • YYC: YYC(YoYo Compiler) генерирует код C++ из вашего кода GML, а затем использует компилятор C++ для компиляции в родной код для целевой платформы. Он удаляет ненужные функции и выполняет множество других методов оптимизации, чтобы создать меньший по размеру и улучшенный по производительности исполняемый пакет.
    -
    - Это может увеличить производительность вашей игры как минимум в два или три раза, особенно в играх с большим количеством логики, и идеально подходит для больших или требовательных к процессору проектов. Время компиляции может занять больше времени, поэтому всегда следует очищать кэш компилятора перед сборкой окончательного полного пакета активов для целевой платформы. Обратите внимание, что YYC-цель может потребовать установки дополнительных инструментов для выбранной платформы, иначе она не будет работать - вы можете найти дополнительную информацию об этом в Справочном центре YoYo Games, а также на страницах настроек отдельных целей, описанных в этом руководстве. -
  • -
  • JavaScript: Цель JavaScript будет доступна только для определенных целей, таких как цель HTML5, и задает компиляцию игры в чистый JavaScript. При этом для вывода JS используется ECMAScript 2015 (или ES6).
  • -
-

For 2024.800+ beta versions of GameMaker, some platforms may also include the "GMRT" and "GMRT VM" outputs as part of the GMRT (GameMaker Runtime) open beta.

-
    -
-
-

Устройство

-
-

Некоторые платформы (например, iOS или Android) позволяют связать одно или несколько устройств с GameMaker, чтобы игры могли выборочно компилироваться для них. Первоначально список устройств будет пуст, и вам нужно щелкнуть на значке карандаша , чтобы открыть редактор устройств:

-

Здесь вы можете добавить новые устройства, а также заставить GameMaker проверить подключение к любому устройству (устройствам), которое может быть подключено. Точное содержание этого окна зависит от специфики платформы (см. раздел " Диспетчер устройств " для получения точной информации о конкретной платформе). После того как устройство будет найдено или добавлено, оно будет показано в этом окне, как показано в данном примере для Android:

-

Точные процедуры и требования по настройке устройств и устранению неполадок можно найти в соответствующем разделе базы знанийGameMaker.

-
-

Конфигурация

-
-

Как объясняется в разделе Конфигурациивы можете хранить определенные детали для компиляции вашей игры как Конфиги. Этот раздел окна Targets позволяет вам автоматически выбирать конфигурацию GameMaker для конкретной целевой платформы.

-
-

Существует также ряд предпочтений, которые можно установить для изменения и настройки рабочего процесса компиляции, о которых рассказывается на следующей странице:

- -

Создание конечного исполняемого пакета

-

Обзор

-

Вы можете просто нажать кнопку Create Executable на сайте IDE, чтобы начать сборку компилятора, или выбрать Create Executable из меню Build Menu. Любой из этих способов запустит процесс сборки, который будет зависеть от выбранной целевой платформы.

-

На цели Opera GX откроется специальное окно, позволяющее скомпилировать и загрузить вашу игру на GX.games; на всех остальных целях откроется окно проводника файлов, где вы можете дать окончательное имя, которое вы хотите использовать для исполняемого файла вашей игры, а затем нажать кнопку Save , чтобы начать процесс компиляции и сборки. После этого будут созданы необходимые файлы, и вы сможете распространять игру по своему усмотрению.

-

Для некоторых платформ компиляция вашего игрового проекта потребует, чтобы вы установили правильные настройки инструменты сборки (см. здесь), а также заполнить соответствующие Параметры платформы.

-

В зависимости от вашей лицензии, у вас может быть возможность собирать игру через командную строку, что позволит вам настроить непрерывную интеграцию для вашего проекта и упростить процесс сборки и тестирования. Дополнительную информацию о сборке через командную строку можно найти на этой странице.

-

ПРИМЕЧАНИЕ Перед окончательной сборкой проекта для релиза всегда следует очистить кэш компилятора ассетов (с помощью значка "метлы" в верхней части сайта IDE). GameMaker кэширует многие файлы игры, чтобы снизить скорость компиляции до минимума, и иногда они могут быть повреждены, поэтому безопаснее очистить этот кэш перед сборкой релиза.

-

Максимальный размер конечного пакета игры составляет 4 ГБ, за исключением 32-битного Windows, где он составляет 2 ГБ. См. советы по уменьшению размера финальной игры.

-

Форматы целей

-

Каждый целевой параметр сохраняется в формате, характерном для конкретной платформы, перечисленных ниже:

-
    -
  • Opera GX - При компиляции для цели "Opera GX" вы увидите окно "Opera GX Packaging", которое сначала попросит вас войти в систему, используя вашу учетную запись Opera:Обратите внимание, что вам не нужно входить в систему, если вы уже вошли в GameMaker, используя вашу учетную запись Opera.
    -
    - После того, как вы вошли в систему, начнется компиляция вашей игры и ее загрузка на GX.games. Затем вы можете нажать на "Редактировать игру в Opera", чтобы отредактировать ее в GX.games DevCloud и опубликовать:
    - Пожалуйста, обратитесь к этой странице, чтобы узнать больше о процессе загрузки игры в Opera GX, и к этой странице для настройки различных видов экспорта, таких как YYC и Mobile. -
  • -
  • Windows - При компиляции для общей операционной системы Windows вам сначала будет предложено выбрать между созданием инсталлятора и Zip-пакета , где инсталлятор будет представлять собой один исполняемый файл, который установит вашу игру, а Zip-файл будет представлять собой один сжатый файл формата *.zip со всеми файлами вашей игры, хранящимися внутри (файлы нужно будет извлечь для запуска игры). Если вы отметите флажок " Запомнить вариант упаковки ", то GameMaker запомнит этот выбор для всех последующих компиляций (его можно сбросить или изменить в настройках Windows). Более подробную информацию вы можете найти в Справочном центре YoYo Games. Обратите внимание, что цель Windows может компилировать 32-битные или 64-битные исполняемые файлы в зависимости от того, что вы выбрали в Общих параметрах игры. Мы настоятельно рекомендуем всем новым проектам использовать x64 Runtime для создания 64-битных исполняемых файлов, так как 32-битная среда выполнения будет устаревать и удаляться в будущем.
  • -
  • Ubuntu (Linux) - При компиляции для Ubuntu вам будет предложено выбрать между созданием .AppImage или .zip файла, содержащего исполняемый файл x64 или ARM (однако AppImage не поддерживает ARM). Более подробную информацию вы можете получить в Справочном центре YoYo Games.
    - .AppImage используется для распространения в виде пакета через любого дистрибьютора, кроме Steam, в то время как .zip используется только для загрузки на Steam (поскольку он использует Steam Runtime). Из-за этого созданный .zip не может быть открыт как обычный zip-файл. -
  • -
  • HTML5 - Если вы выбрали сборку HTML5, то будет создан файл index.html (это имя по умолчанию, но вы можете дать ему собственное имя в Настройках платформы), а также папка с файлами вашей игры, которые будут сохранены в указанном месте. Для того чтобы ваша игра работала, необходимо, чтобы оба эти файла были загружены на сервер. Сайт index.html также можно настроить, чтобы показать вашу игру с другим цветом фона, или в другом положении и т.д... но для этого необходимо знание HTML, и вы также можете указать свой собственный индексный файл при сборке пакета (см. Опции игры HTML5). Вы можете узнать больше в Справочном центре YoYo Games.
  • -
  • Android - Для устройств Android вы можете выбрать файл *.apk или *.aab (Android App Bundle) из окна, которое отображается для сохранения игры:
    -
    - Тип выбранного вами файла зависит от магазина, на который вы хотите ориентироваться: файл *.aab требуется для Google Play, а файл *.apk можно использовать в других магазинах. Более подробную информацию вы можете получить в Справочном центре YoYo Games. -
  • -
  • iOS - При компиляции для iOS будет создан файл xarchive, который затем используется в Xtools для создания окончательного пакета iOS. Обратите внимание, что для компиляции по адресу iOS вам потребуется компьютер Apple Mac под управлением OSX или выше, а также соответствующие сертификаты и разрешения. Более подробную информацию вы можете получить в Справочном центре YoYo Games.
  • -
  • macOS - При компиляции для цели macOS сначала будет предложено выбрать между созданием DMG и Zip-файла :
    - "Package as DMG" создаст установочный пакет .dmg, который можно использовать для установки игры на компьютер Mac. Обратите внимание, что во время процесса сборки на Mac появится программа установки, которая исчезнет после завершения процесса сборки.
    -
    - "Package as Zip" создаст либо файл *.app, либо файл *.pkg, в зависимости от того, хотите ли вы впоследствии загрузить его в Mac App Store или нет. Как и в случае с iOS, вам потребуется компьютер Apple Mac под управлением OSX или выше, а также соответствующие сертификаты и разрешения. Более подробную информацию вы можете получить в Справочном центре YoYo Games. -
  • -
  • Windows UWP - Для Windows UWP, GameMaker создаст пакет *.appxbundle, который затем можно загрузить в магазин Windows или распространять в других местах. Когда вы нажмете кнопку Create Executable, вам будет предложено сообщить GameMaker, какой тип пакета вы хотите создать (может быть для архитектур ARM, x64 и/или x86), и выбрать те цели, на которых будет поддерживаться игра (вы должны выбрать хотя бы одну, но можете выбрать все три или любую комбинацию):
    -
    - Если вы отметите флажок Package For Store Upload, то окончательный созданный пакет будет представлять собой файл *.appxupload, который, согласно спецификации Microsoft, должен использоваться для отправки приложений в их магазин, как объясняется в этой статье здесь (все выбранные архитектуры будут включены, как и в случае с *.appxbundle). Вы можете узнать больше о настройке и компиляции под платформу UWP в Справочном центре YoYo Games. -
  • -
  • Reddit - For a compilation guide, see the GameMaker Wiki. Note that you cannot use debug mode or create an executable when targetting Reddit, as compilation for the Reddit SDK happens through the "Run" (F5) button.
  • -
-

После создания пакета исполняемых активов вы можете передать файл другим людям или разместить его на своем сайте для скачивания, или загрузить эти файлы на различные хостинги для индивидуального распространения или даже в интернет-магазины (например, Google Play, Apple App Store или Microsoft Store) для общего распространения и розничной продажи.

-

Обратите внимание, что вы можете свободно распространять игры, созданные с помощью GameMaker, любым способом, включая их продажу. Конечно, это предполагает, что sprites, изображения и звуки, которые вы использовали для создания игры, также могут быть распространены или проданы и что вы обладаете юридическими правами на все активы, а также предполагает, что игра соответствует EULA YoYo Games для GameMaker.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/Debugging.htm b/Manual/contents/Introduction/Debugging.htm index 33ce5b0b0..e69de29bb 100644 --- a/Manual/contents/Introduction/Debugging.htm +++ b/Manual/contents/Introduction/Debugging.htm @@ -1,76 +0,0 @@ - - - - - - Отладка - - - - - - - - - - -

Отладка

-

При программировании игры, будь то с помощью GML Code или GML Visual, очень легко допустить ошибки - использование неправильных переменных, передача неправильных аргументов или использование неправильных функций - вот лишь некоторые из наиболее распространенных ошибок, которые мы все допускаем, и эти ошибки не всегда обнаруживаются программой проверки синтаксиса, которая включена в редактор сценариев/действий. Это означает, что эти ошибки становятся очевидными только после запуска или компиляции вашей игры, и даже тогда иногда бывает трудно понять, что именно идет не так. Поэтому бывает крайне важно знать, как ваша игра работает на выбранном устройстве, а также посмотреть, какие экземпляры находятся в комнате, какие глобальные переменные были созданы и множество других деталей. Проверка этих вещей называется "отладкой кода", а любые ошибки или проблемы, которые вы можете найти, называются "багами".

-

Вы можете проверить многие из этих вещей самостоятельно, добавив в свои игры так называемый "отладочный код", который будет выводить на экран необходимую информацию, или настроить его так, чтобы он показывал сообщения при возникновении ошибки, но это часто требует много работы, а если вы не уверены, где именно возникла проблема, то поиск ошибки может занять много времени и превратиться в метод проб и ошибок. Для этого в GameMaker есть специальный тестовый режим Debug Mode, который запускает модуль отладки, а также комплексная система отчетов об ошибках, которая выводит сообщения при компиляции, чтобы помочь вам отследить любые проблемы в вашей игре.

-

В следующих разделах рассматриваются различные способы отладки игры:

-

-

Отчеты об ошибках

-
-

Когда во время компиляции и выполнения проекта возникает ошибка, об этом сообщается сообщением в окне Compile Errors Output Window, подобным показанному ниже:

-

Большинство сообщений об ошибках компилятора строятся по одной схеме: в сообщении указывается объект, в котором произошла ошибка, затем Событие с номером строки и, наконец, краткое описание самой ошибки. Этот тип информации, предоставляемый сообщением об ошибках, очень важен, поскольку он обнаруживает и сообщает о синтаксических и языковых ошибках, которые приведут к краху вашей готовой игры, но он не сообщает о более тонких ошибках и не дает обратной связи по производительности. Для таких случаев следует использовать режим отладки (описан ниже).

-

Помимо этих ошибок компиляции, вы также можете получить ошибки синтаксиса. Они будут обнаружены при добавлении действий или кода GML Visual и показаны в окне Syntax Errors Output Window, как показано на рисунке ниже:

-

Как и в случае с ошибками компилятора, окно ошибок синтаксиса направит вас к объекту, событию и конкретным строкам, которые вызывают проблему, и часто будет показано краткое объяснение того, в чем заключается ошибка.

-

-
-

Режим отладки

-
-

Если вам нужно проверить все более тщательно, вы можете запустить игру в режиме отладки, нажав кнопку запуска отладки . При этом вместе с игрой откроется модуль отладки. Этот модуль позволяет вам следить за тем, как все работает в вашей игре, начиная с глобальной производительности и заканчивая значениями отдельных переменных в отдельных экземплярах. Более подробную информацию о модуле отладки, его возможностях и о том, как его использовать, вы можете найти на следующей странице:

- -

Обратите внимание, что при использовании модуля отладки вы также можете добавить точки останова в ваш код или GML Visual. Точка останова - это точка в игровом цикле, где вы хотите, чтобы модуль отладки приостановился и позволил вам пройти по коду игры по строчке за раз. Вы можете добавить точки останова с помощью клавиши "F9", и они будут показаны в окне вывода, где вы можете включать/выключать их по мере необходимости.

-

-
-

Дополнительные инструменты

-
-

В качестве дополнительного инструмента для отладки скомпилированных игр существуют определенные параметры командной строки, которые можно использовать при запуске финального пакета игры на сайте Windows. Информацию о том, как это работает, смотрите здесь.

-

Вы также можете генерировать отладочное наложение при тестовом запуске игры, которое будет показывать дополнительную отладочную информацию о производительности игры в процессе ее выполнения, а также выводить отладочные сообщения в консоль компиляции, где вы можете ввести свой собственный текст, чтобы помочь отладить поведение вашей игры. Для получения дополнительной информации см. следующие страницы:

- -

-
-

-

Существует также набор предпочтений, связанных с отладкой и использованием инструментов отладки. Более подробную информацию вы можете найти на следующей странице:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/Introduction_To_GameMaker_Studio_2.htm b/Manual/contents/Introduction/Introduction_To_GameMaker_Studio_2.htm index fa37b5974..e69de29bb 100644 --- a/Manual/contents/Introduction/Introduction_To_GameMaker_Studio_2.htm +++ b/Manual/contents/Introduction/Introduction_To_GameMaker_Studio_2.htm @@ -1,45 +0,0 @@ - - - - - - Введение в GameMaker - - - - - - - - - - -

Введение в GameMaker

-

GameMaker - это инструмент, созданный для того, чтобы вы и ваша команда могли создавать новые и инновационные игры, а также прототипы идей самым быстрым и интуитивно понятным способом на различных целевых платформах. Он предназначен в первую очередь для создания 2D-игр, хотя вполне можно создавать и 3D-игры, и поставляется с рядом инструментов и редакторов, которые помогут вам реализовать ваши мечты и идеи, а ваш конечный проект будет перенесен на несколько платформ из одних и тех же исходных ресурсов.

-

Для тех, кто новичок в мире программирования или никогда раньше не пользовался инструментами для создания игр, GameMaker предлагает интуитивно понятный и простой в использовании интерфейс действий GML Visual, который позволит вам очень быстро начать создавать свои собственные игры с помощью визуальных сценариев:

-

The GameMaker IDE

-

Если вы более опытный - или менее наглядный - программист, то для создания своих игр вы можете использовать фирменный язык сценариев GML :

-

Вы даже можете комбинировать оба варианта и смешивать функции GML с визуальными действиями GML, что дает вам огромную гибкость в выборе способа написания. Все это изложено интуитивно понятным образом, причем различные аспекты вашей игры "цепляются" друг за друга в IDE, чтобы дать вам уникальное и очень наглядное представление рабочего процесса.

-

GameMaker поставляется с рядом мощных инструментов, таких как полноценный редактор изображений для создания собственных спрайтов и возможность использования наборов плиток, а также вы можете импортировать изображения, созданные в любом внешнем редакторе, включая скелетную анимацию Spine и векторные файлы формата SWF. После того, как у вас есть изображения, их просто нужно присвоить объектам в редакторе объектов, добавить код или действия GML Visual, а затем поместить экземпляры этих объектов в игровую комнату в редакторе комнат. Есть также дополнительные инструменты для создания контуров, последовательностей, шейдеров и многого другого. Вы обнаружите, что IDE также невероятно гибок, и его можно настроить в соответствии с вашими потребностями, если стандартная настройка IDE не охватывает то, что вам нужно, используя различные Параметры.

-

Этот файл справки расскажет вам все, что нужно знать о программе GameMaker и о том, как с ее помощью можно создавать собственные игры. Однако, пожалуйста, поймите, что даже с такой программой, как GameMaker, создание компьютерных игр не является абсолютно простым делом - поэтому здесь нет кнопки "сделайте мне MMORPG"! Помните также, что в создании игр есть много аспектов, и все они одинаково важны: игровой процесс, графика, звуки, взаимодействие с пользователем и т.д... Но самый важный из всех аспектов - это терпение. Хотя GameMaker является мощным инструментом, он не может сделать все за вас одним нажатием кнопки, поэтому начните с простых примеров, и вы увидите, что создание игр - это не только большое удовольствие, но и очень полезная работа с GameMaker!

-

Более подробную информацию, примеры, учебники, а также ссылки на полезные форумы и другие замечательные ресурсы можно найти на сайте GameMaker.

-

-

- - - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/Marketplace/Creating_A_Marketplace_Asset.htm b/Manual/contents/Introduction/Marketplace/Creating_A_Marketplace_Asset.htm index 54c7b1a79..e69de29bb 100644 --- a/Manual/contents/Introduction/Marketplace/Creating_A_Marketplace_Asset.htm +++ b/Manual/contents/Introduction/Marketplace/Creating_A_Marketplace_Asset.htm @@ -1,68 +0,0 @@ - - - - - - Создание рыночного актива - - - - - - - - - - -

Создание актива Marketplace

-

При выборе опции " Создать пакет " в меню IDE Marketplace вы попадете в следующее рабочее пространство: . Здесь Сначала вы должны выбрать идентификатор издателя, под которым вы хотите опубликовать пакет активов (который вы должны были настроить на панели Publisher Dashboard), затем указать отображаемое имя и номер версии. Идентификатор пакета будет создан на основе отображаемого имени и используемой учетной записи издателя, но вы можете изменить его на другой, если хотите, чтобы он сохранял формат обратного URL. Затем вам нужно выбрать тип пакета активов:

-
    -
  • Актив: Это коллекция активов (sprites, скрипты, объекты и т.д...), которые вы хотите продать на Marketplace.
  • -
  • Демо: Это демо-версия для демонстрации некоторой концепции или идеи игры
  • -
  • Учебник: Загружаемый актив представляет собой учебник, предназначенный для запуска из GameMaker IDE (подробнее см. на этой странице ).
  • -
-

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

-

ПОМНИТЕ! Чтобы иметь возможность создавать или использовать пакеты активов, вы должны предварительно создать сертификат профиля пользователя. Вы можете сделать это в разделе Marketplace Preferences, который объясняется здесь.

-

Когда вы будете удовлетворены выбором активов и захотите загрузить свой пакет на сайт Marketplace, просто нажмите кнопку Ок внизу, и пакет активов будет создан и загружен на сайт Marketplace. Когда загрузка будет завершена, откроется новая рабочая область с просмотром страницы активов в браузере для редактирования. Более подробную информацию о том, как это настроить, см. на следующей странице:

- -

Если вам нужно обновить Marketplace Asset, вы делаете примерно то же самое, что и при создании исходного пакета, только теперь вам нужно указать пакет для обновления из выпадающего списка доступных пакетов:

-

При обновлении вы не сможете изменить идентификатор пакета, и вы должны знать, что отображаемый номер версии будет текущим номером версии, и вы должны увеличивать его по мере необходимости, иначе обновление будет неудачным (поскольку вы не можете иметь два пакета активов с одинаковым номером версии). Также есть поле, в котором можно добавить текст для журнала изменений актива, который будет загружен вместе с активом и отображен на странице Marketplace.

-

ВАЖНО! Активы, созданные в GameMaker версии 2.3+, будут доступны только тем пользователям, которые используют версию 2.3 и выше. Если вы обновляете актив с предыдущей версии, этот актив все еще будет доступен пользователям, которые не обновили его, и будет сосуществовать с обновленной версией 2.3+.

-

-

Загрузка через веб-страницу

-

Вы можете загружать активы через фактическую веб-страницу Marketplace, а не через IDE, что может понадобиться, если загрузка через IDE по какой-либо причине не удалась. Для начала создайте пакет и попытайтесь загрузить его через IDE, как показано выше, а если это не удалось, перейдите в окно Output Window и проверьте журнал на наличие строки, показывающей, куда был сохранен создаваемый пакет перед попыткой загрузки. Например:

-

В Windows:

-

Created package file:
- C:\Users\WINDOWSUSERNAME\AppData\Roaming\GameMaker\GM_USERNAME\Marketplace\Packages\com.publishername.assetname.yymp

-

На macOS:

-

Created package file:
- /Users/MACUSERNAME/.config/GameMaker/GM_USERNAME/Marketplace/Packages/com.publishername.assetname.yymp

-

Вам нужно перейти в это место и скопировать файл *.YYMP в безопасное место, поскольку это будет файл, который вы будете загружать на сайт Marketplace.

-

На данном этапе вам необходимо открыть сайт Marketplace в веб-браузере и перейти к листингу актива, затем перейти к разделу Версии, а затем нажать кнопку Загрузить версию, как показано на рисунке ниже:

-

Это приведет вас на страницу загрузки новой версии, где вы можете добавить информацию о загружаемой версии, если это необходимо, а также предоставить файл, нажав кнопку Choose FIle и выбрав ранее созданный файл *.YYMP:

-

Добавление файла загрузит версии и покажет индикатор выполнения, а когда загрузка будет завершена и вы будете удовлетворены деталями, вы можете нажать кнопку Сохранить, чтобы сохранить актив в листинге. Обратите внимание, что актив будет находиться в стадии обработки в течение нескольких минут, прежде чем его можно будет опубликовать.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/Marketplace/Creating_A_Publisher_Account.htm b/Manual/contents/Introduction/Marketplace/Creating_A_Publisher_Account.htm index c375fb445..e69de29bb 100644 --- a/Manual/contents/Introduction/Marketplace/Creating_A_Publisher_Account.htm +++ b/Manual/contents/Introduction/Marketplace/Creating_A_Publisher_Account.htm @@ -1,85 +0,0 @@ - - - - - - Создание учетной записи издателя - - - - - - - - - - -

Создание учетной записи издателя

-

Прежде чем вы сможете использовать GameMaker Marketplace для покупки или продажи активов, вы должны завести учетную запись YoYo, а если вы хотите продавать пакеты активов, вам также необходимо зарегистрировать учетную запись Marketplace Publisher .

-

Для регистрации в качестве издателя необходимо выполнить следующие действия:

-
    -
  • Войдите в свою учетную запись YoYo.
  • -
  • Войдя в приборную панель своего аккаунта, посетите страницу регистрации издателя. Ее можно найти на панели инструментов аккаунта YoYo в разделе Publisher, где нужно щелкнуть на разделе Sell Your Assets:
    - -
  • -
  • На следующей странице нажмите кнопку Регистрация, а затем введите основную информацию о вашей личности издателя, например, имя издателя, электронную почту и типы активов, которые вы планируете загружать.
  • -
-

Вы должны прочитать и принять соглашение с издателем Marketplace, прежде чем завершить регистрацию своего аккаунта издателя. После этого ваша регистрация будет завершена, но учтите, что все регистрации должны быть проверены YoYo Games, поэтому ваш новый Издатель не будет доступен вам сразу. Когда ваша регистрация будет проверена, вы получите уведомление по указанному вами адресу электронной почты (обратите внимание, что мы работаем в стандартные рабочие часы в Великобритании, поэтому заявки, поданные в выходные дни и т.д., могут быть одобрены с задержкой).

-

После регистрации вы попадете в свой аккаунт издателя, где сможете увидеть уже указанные данные и отредактировать их, а также загрузить аватар:

-

Теперь вы должны перейти в раздел "Детали платежа" и заполнить там форму:

-

Обратите внимание на то, что:

-
    -
  • В настоящее время Marketplace предлагает оплату только через PayPal, поэтому при создании аккаунта издателя вам потребуется указать действующий email для аккаунта PayPal, иначе оплата не будет произведена.
  • -
  • Для пользователей из Великобритании/ЕС следует указать действительный номер НДС, если это относится к вашей организации (для пользователей за пределами Великобритании перед номером НДС следует указать двузначный код страны).
  • -
-

Если вы планируете загружать на сайт Marketplace только бесплатные активы, то поля PayPal и VAT можно игнорировать. Затем вы можете нажать кнопку Submit, чтобы продолжить.

-

После проверки регистрации вы можете использовать остальные опции консоли издателя. Это "дом" всех ваших операций по публикации активов, и вы можете видеть меню пунктов в левой части страницы. Каждый из них отображает различные сведения о вашей деятельности по публикации:

-
    -
  • Активы: Эта страница дает вам быстрый обзор ваших активов (sprites, аудио, проекты и т.д.), позволяет просматривать и редактировать их детали, просматривать статистику продаж, загрузок, а также публиковать новую версию вашего актива. Вы также можете добавлять новые активы, созданные вами, для публикации. Более подробную информацию о публикации активов можно найти на странице: Листинг актива.
  • -
  • Услуги: Здесь вы можете увидеть услуги, которые вы предлагаете другим пользователям Marketplace, а также отредактировать их данные, обновить или добавить новые. Более подробную информацию об услугах см. на странице: Listing A Service.
  • -
  • Сведения о счете: Обновите публичный профиль вашего издателя в магазине и добавьте платежные реквизиты через Account Details (см. выше дополнительную информацию о настройке платежного счета).
  • -
  • Доступ пользователей: Если вы работаете в команде, вы можете добавить несколько пользователей к своей учетной записи Publisher и установить, к каким частям консоли Publisher Console они могут получить доступ. Учетная запись, которая регистрирует учетную запись Publisher, является владельцем и имеет полный доступ ко всем частям консоли разработчика. Затем владелец может добавлять учетные записи пользователей и управлять тем, к каким частям Консоли разработчика они имеют доступ. Просто укажите адрес электронной почты человека, которого вы хотите добавить, а затем отметьте те части идентификатора издателя, к которым вы хотите предоставить ему доступ.
    - -
  • -
  • Аналитика: Консоль разработчика дает вам доступ к ежедневным отчетам о продажах и загрузках, а также к графикам, позволяющим отслеживать эффективность ваших активов. Вы можете фильтровать отчеты по нескольким параметрам, включая платные или бесплатные, категорию, страну и дату.
  • -
  • Покупки: Здесь вы можете увидеть список всех покупок, которые были сделаны с вашими активами (бесплатные покупки будут показаны, но с ценой $0.00)
  • -
  • Условия для авторов: Здесь приведены действующие Правила и условия публикации автора на сайте Marketplace. Вы должны принять их, прежде чем сможете опубликовать что-либо, даже бесплатные ресурсы.
  • -
-

Обратите внимание, что после создания и верификации одной учетной записи издателя вы можете вернуться на панель инструментов YoYo Account и создать другие учетные записи, если это необходимо. Таким образом, вы можете создать два отдельных аккаунта, один из которых будет продавать художественные активы, а другой - кодовые активы (например).

-

Прежде чем приступить к представлению актива или услуги на сайте Marketplace, ознакомьтесь с рекомендациями, изложенными на следующей странице:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/Marketplace/Creating_A_Tutorial.htm b/Manual/contents/Introduction/Marketplace/Creating_A_Tutorial.htm index cec3c9444..e69de29bb 100644 --- a/Manual/contents/Introduction/Marketplace/Creating_A_Tutorial.htm +++ b/Manual/contents/Introduction/Marketplace/Creating_A_Tutorial.htm @@ -1,48 +0,0 @@ - - - - - - Создание учебника - - - - - - - - - - -

Создание учебника Marketplace

-

Создание учебника похоже на создание обычного пакета активов Marketplace , только теперь вам нужно добавить определенные включаемые файлы, а также включить начальную страницу учебника (и дополнительную страницу видео). Рабочая область учебника будет выглядеть примерно так:Как объяснялось выше для общих Marketplace активов, вам нужно выбрать издателя, затем дать учебнику имя и уникальный ID (обратный формат URL), а затем в выпадающем списке "тип" выбрать учебник. Это даст вам дополнительные возможности добавить базовый HTML-файл, с которого будет начинаться учебник, а также (по желанию) видеофайл и URL. Видеофайл должен использовать шаблон, предоставленный с сайта Marketplace, как и остальная часть учебника, который вы можете получить здесь. Когда пользователь загрузит учебник, видео будет загружено в отдельный фрейм на сайте IDE. Обратите внимание, что страницы, которые вы указываете для начальной страницы и страницы видео, являются относительными путями в Included Files, и вы можете открыть проводник, чтобы выбрать что-то другое, кроме тех, которые GameMaker заполняет поля по умолчанию.

-

На самом деле для создания учебника вам потребуется добавить в проект Included Files, и они должны быть добавлены очень специфическим образом, чтобы IDE правильно определил, какие файлы будут использоваться в учебнике. Основная структура папок показана на рисунке ниже:

-

Итак, у нас есть две основные папки:

-
    -
  • TutorialContent: Все ваши файлы HTML, CSS для их оформления, изображения, необходимые для них (не изображения, необходимые для ресурсов, а те, которые будут отображаться в учебнике), а также шаблон видео, если требуется, помещаются сюда. У вас могут быть и подпапки, если вы хотите разделить учебник, например, на главы, но у вас должен быть как минимум один базовый файл HTML, который будет использоваться в качестве начальной страницы учебника.
  • -
  • TutorialResources: В этой папке есть еще две вложенные папки для изображений и звуковых ресурсов. Если ваш учебник требует от пользователя добавить sprite (например), и вы хотите включить его в учебник, то вы поместите ресурс изображения в папку Images. Эти папки импортируются в проект учебника, и когда пользователь открывает редактор sprite и хочет добавить изображение, путь по умолчанию для окна проводника будет указан в этом месте, что облегчает пользователю поиск необходимых ресурсов.
  • -
-

Чтобы ваш учебник работал в рамках IDE , вы должны иметь такую структуру папок, а также базовую стартовую страницу HTML с файлом CSS для стилизации. Существует ряд специальных ссылок, которые можно использовать в ваших обучающих проектах, чтобы перейти к части видео или открыть руководство по определенному разделу или функции, и все они приведены в официальных шаблонах учебников Marketplace.

-

ВАЖНО! Мы настоятельно рекомендуем вам загрузить шаблоны учебников с Marketplace, прежде чем пытаться создавать свои собственные учебники. Они содержат примеры всех важных частей HTML, а также CSS и изображения для воссоздания кнопок и меню в учебнике, что позволит вам беспокоиться о содержании, а не о том, как его отобразить.

-

После того, как вы установите включенные файлы и предоставите необходимую информацию, вы можете нажать кнопку Окей, и учебник будет загружен на сайт Marketplace, после чего откроется рабочее пространство в листинге актива, и вы сможете редактировать его и добавлять значки, текст, скриншоты и т.д.. После публикации актива учебника пользователи смогут найти его в разделе " Учебники" на Стартовой странице, где его можно скачать и установить.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/Marketplace/Listing_A_Service.htm b/Manual/contents/Introduction/Marketplace/Listing_A_Service.htm index 1dffaf1ba..e69de29bb 100644 --- a/Manual/contents/Introduction/Marketplace/Listing_A_Service.htm +++ b/Manual/contents/Introduction/Marketplace/Listing_A_Service.htm @@ -1,80 +0,0 @@ - - - - - - Перечисление услуг - - - - - - - - - - -

Перечисление услуг

-

Помимо наличия активов на сайте Marketplace, вы также можете создавать Услуги. Прежде чем продолжить, пожалуйста, убедитесь, что вы прочитали сопутствующие страницы, перечисленные ниже, поскольку вам нужно будет выполнить описанные в них шаги, прежде чем вы сможете подать предложение о предоставлении услуг:

- -

Услуги - это подраздел сайта GameMaker Marketplace, где частные лица или компании могут предложить свои услуги третьим лицам. Если, например, у вас есть рекламный API или что-то подобное, что вы хотите предложить пользователям GameMaker, то вы можете предложить свои услуги здесь. Аналогичным образом, если вы музыкант, художник или программист с портфолио, которое можно показать людям, и хотите предложить себя для работы, то вы также можете сделать предложение услуг здесь.

-

ВАЖНО! YoYo Games не несет ответственности за любые проблемы между подрядчиком и заказчиком, и не будет посредником или иным образом участвовать в случае возникновения спора.

-

Вы можете получить доступ к панели услуг с главной страницы Marketplace, из верхнего меню "Категории" или выбрав ее из меню справа:

-

Нажав на зеленую стрелку, вы откроете дополнительное подменю, показывающее категории доступных услуг (например, монетизация или реклама), или вы можете выбрать пункт Услуги, чтобы увидеть их все.

-

Из списка предоставляемых услуг вы можете щелкнуть на любой из них, чтобы перейти к обзору услуг, который будет содержать всю информацию о предлагаемой услуге, а также ссылки для связи с поставщиком, регистрации в его службе и т.д.. Вы также можете получить дополнительные ссылки на дополнительные ресурсы, необходимые для работы услуги, например, ссылку на SDK-актив для сайта, предлагающего сервис таблиц лидеров и достижений.

-

Прежде чем связаться с любым из поставщиков услуг, о которых объявлено на сайте Marketplace, обязательно ознакомьтесь с отзывами других пользователей (если таковые имеются), прочитайте предоставленное EULA и убедитесь, что вы понимаете все указанные условия предоставления услуг. YoYo Games не несет ответственности за любые отношения между конечным пользователем и любой службой, и лишь предоставляет удобное место для размещения объявлений.

-

Чтобы создать свой собственный список услуг, вы должны сначала сделать следующее:

-
    -
  • Настройте страницу учетной записи Marketplace Publisher.
  • -
  • Заполните основную информацию о вашей личности издателя, например, имя издателя и электронную почту, а также выберите "Другое" из представленного списка типов активов.
  • -
-

По завершении вам будет отправлено письмо с подтверждением и ссылкой для активации новой учетной записи. После получения письма с подтверждением вы можете приступать к настройке списка услуг. Вы можете сделать это, нажав на пункт меню Услуги в левой части окна издателя, после чего вам будет предложено ознакомиться с Условиями предоставления услуг, с которыми вы должны согласиться, прежде чем продолжить. После принятия вы попадете на страницу со списком всех ваших текущих предложений услуг. Чтобы создать новую услугу, просто нажмите кнопку с надписью "Добавить новую услугу".

-

На этой странице вы определяете тип добавляемой вами услуги, подробно описываете, что вы предлагаете, а также любую другую необходимую информацию. От вас требуется следующая информация:

-
    -
  • Основная категория: Это тип услуг, которые вы предлагаете. После того, как вы установили основную категорию, вы можете выбрать дополнительные подкатегории (если они имеются), которые помогут людям найти соответствующую услугу при поиске на сайте Marketplace.
  • -
  • Display Name (Отображаемое имя): Имя службы, которое будет отображаться на странице служб (не более 255 байт).
  • -
  • Описание: Краткое описание (менее 2000 слов), которое описывает вашу услугу, ее функциональность и возможные варианты использования, а также ссылки на дополнительную документацию и т.д..
  • -
  • Ключевые слова: Одно или несколько слов, которые могут быть использованы для сужения поиска, чтобы найти вашу услугу на сайте Marketplace. Эти ключевые слова должны быть релевантны предлагаемой услуге!
  • -
  • Сопутствующие активы: Если для вашей услуги требуются дополнительные активы (GMZ, SDK и т. д.), вы можете создать для нее обычный листинг активов Marketplace и дать ссылку на него здесь. Вам нужно дать название актива и затем выбрать его из появившегося списка. Актив должен быть опубликован ранее.
  • -
  • Электронная почта поддержки: Учетная запись электронной почты, по которой люди могут обращаться к вам за поддержкой, если они захотят связаться с вами по поводу предлагаемых услуг.
  • -
  • Веб-сайт поддержки: URL, где пользователь может получить поддержку по услуге (т.е.: FAQ, форумы, контакты и т.д.).
  • -
  • Пользовательское EULA: URL, где пользователь может прочитать специальное EULA, написанное для предлагаемой услуги (если оно не указано, то ваша услуга будет подпадать под общее EULA YoYo Games, найденное здесь).
  • -
  • URL-адрес политики конфиденциальности: Если ваша услуга требует данных устройства или пользователя, или если услуга предназначена для детей, то вы должны предоставить ссылку на политику конфиденциальности.
  • -
  • Маркетинговый URL: URL, по которому пользователь может получить дополнительную информацию об услуге и издателе, а также посмотреть видео, скриншоты и любые другие сопутствующие маркетинговые материалы.
  • -
-

Наконец, от вас потребуется предоставить несколько изображений для надлежащего продвижения ваших услуг на сайте Marketplace. Иконка (200x200 PNG) и графический элемент (1140x360 PNG), затем по крайней мере один снимок экрана (который должен быть PNG, но может быть выполнен в следующих размерах: 1280×720, 1366×768, 1600×900 или 1920×1080), и, наконец, у вас есть возможность добавить видео с YouTube или Vimeo. Более подробную информацию и рекомендации по настройке активов листинга можно найти в Руководстве по стилю Marketplace.

-

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

-

Если у вашего сервиса есть SDK или вы хотите создать для него расширение, то о том, как это сделать, вы можете узнать из статьи Создание актива Marketplace. После этого вы добавите URL-адрес пакета активов в раздел "Связанные активы" в листинге услуг.

-

Когда вы впервые отправляете предложение услуг на Marketplace, оно должно быть рассмотрено YoYo Games, чтобы убедиться, что оно соответствует минимальным критериям начального уровня. Это означает, что:

-
    -
  • ваши скриншоты, иконки и графические элементы должны быть четкими и иметь отношение к предлагаемой услуге.
  • -
  • ваше описание услуги должно соответствовать услуге, которую вы предоставляете после того, как с вами связались.
  • -
  • ваше описание услуги должно быть последовательным, подробным и хорошо написанным.
  • -
  • все ссылки в описании или на странице листинга корректны и релевантны.
  • -
  • предлагаемая вами услуга - это то, что подпадает под правила и рекомендации по допустимым материалам (сюда входят скриншоты и иконки)
  • -
-

Процесс рецензирования может занять день или два, но после его завершения ваша услуга станет общедоступной на странице Marketplace Services. Если обзор не прошел, вам будет отправлено электронное письмо с уведомлением, а если вы не знаете, почему вам не удалось пройти обзор или что вы можете сделать, чтобы пройти процесс обзора, обратитесь в службу поддержки, и вам помогут.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/Marketplace/Listing_An_Asset.htm b/Manual/contents/Introduction/Marketplace/Listing_An_Asset.htm index 9679065af..e69de29bb 100644 --- a/Manual/contents/Introduction/Marketplace/Listing_An_Asset.htm +++ b/Manual/contents/Introduction/Marketplace/Listing_An_Asset.htm @@ -1,84 +0,0 @@ - - - - - - Перечисление активов - - - - - - - - - - -

Перечисление активов

-

Первое, что вам нужно сделать перед публикацией актива, - это открыть в браузере торговую площадку и создать листинг актива. Здесь не обязательно заполнять все детали, но нам необходимо предоставить некоторую начальную информацию, чтобы вы могли хотя бы загрузить пакет. Итак, войдите в свою учетную запись YoYo, затем перейдите в раздел " Издатели" и выберите созданную вами личность издателя:

-

В открывшемся окне Marketplace вы увидите список уже загруженных активов (если таковые имеются), а также кнопку с надписью "+Add New Asset". В результате откроется следующее окно:

-

Отображаемое имя - это то, что будет отображаться в качестве названия пакета на сайте Marketplace, а идентификатор пакета - это то, что будет использоваться для идентификации пакета в GameMaker и на панели издателя Marketplace. Идентификатор пакета должен быть уникальным для загружаемого актива и должен соответствовать обратному формату URL, например: com.<Company Name>.<PackageName>.

-

ПРИМЕЧАНИЕ: Активы с идентификатором издателя, которые не соответствуют вышеуказанному правилу, могут загружаться некорректно!

-

Таким образом, создается первоначальный листинг для вашего пакета, и теперь вы можете либо вернуться на страницу активов и добавить дополнительные листинги, либо продолжить заполнение сведений о рыночном листинге для нового добавляемого актива. На странице листинга вы определяете тип добавляемого пакета активов, а также предоставляете подробную информацию о том, что он содержит, и другую необходимую информацию:

-

Здесь вы должны заполнить каждое из следующих полей:

-
    -
  • Основная категория: это тип актива, который вы создаете. После того, как вы установили основную категорию, вы можете продолжить выбирать дальнейшие подкатегории для sprites, что поможет людям найти соответствующий актив при поиске Marketplace.
  • -
  • Идентификатор пакета: Здесь отображается идентификатор пакета для добавляемого актива. Его нельзя изменить, и каждый идентификатор является уникальным для создаваемого рыночного листинга.
  • -
  • Отображаемое имя: Название актива, которое будет отображаться на странице рыночного листинга (не более 255 байт).
  • -
  • Описание: Краткое описание (менее 2000 слов), которое описывает актив, его функциональность и возможные варианты использования.
  • -
  • Ключевое слово: Одно или несколько слов, которые могут быть использованы для сужения поиска, чтобы найти ваш актив на сайте Marketplace. Эти ключевые слова должны быть релевантны активу!
  • -
  • Возрастная оценка: Возрастная оценка, которая должна быть применена к активу, со следующими критериями:
  • -
  • 4+: Имущество в этой категории не содержит предосудительных материалов.
  • -
  • 9+: Имущество в этой категории может содержать слабые или нечастые проявления мультяшного, фантастического или реалистичного насилия, а также нечастый или слабый зрелый, наводящий на размышления или ужасающий контент, который может не подходить для детей младше 9 лет.
  • -
  • 12+: Имущество в этой категории может также содержать нечастые мягкие выражения, частые или интенсивные мультфильмы, фантазии или реалистичное насилие, а также мягкие или нечастые зрелые или наводящие на размышления темы, которые могут не подходить для детей младше 12 лет.
  • -
  • 17+: Имущество в этой категории может также содержать: частые и интенсивные оскорбительные выражения, частые и интенсивные мультфильмы, фантастическое или реалистичное насилие, частые и интенсивные зрелые, ужасные и наводящие на размышления темы, а также сексуальное содержание, наготу, алкоголь, табак и наркотики, которые могут не подходить для детей младше 17 лет.
  • -
  • Цена: Уровень цен, на который должны быть установлены ваши активы. Тщательно продумайте цену, которую вы здесь установите, и убедитесь, что она соответствует качеству и количеству продукта, который вы предлагаете.
  • -
  • Требуемые модули: Здесь вы можете выбрать минимальные или абсолютные требования для правильного использования ваших активов.
  • -
  • Электронная почта поддержки: Учетная запись электронной почты, по которой люди могут связаться с вами для получения поддержки, если у них возникнут какие-либо проблемы с активом.
  • -
  • URL поддержки: URL, по которому пользователь может получить поддержку по данному активу (т.е.: FAQ, форумы, контакты и т.д.).
  • -
  • Маркетинговый URL: URL-адрес, по которому пользователь может получить дополнительную информацию об активе и издателе, а также посмотреть видео, скриншоты и любые другие сопутствующие маркетинговые материалы.
  • -
  • URL-адрес политики конфиденциальности: Если ваш актив требует данных об устройстве или пользователе, или если актив предназначен для детей, то вы должны предоставить ссылку на политику конфиденциальности.
  • -
-

Наконец, от вас потребуется предоставить несколько изображений для надлежащего маркетинга ваших активов на сайте Marketplace. Иконка (200x200 PNG) и графический элемент (1140x360 PNG), затем как минимум один снимок экрана (который должен быть PNG, но может быть выполнен в следующих размерах: 1280×720, 1366×768, 1600×900 или 1920×1080), и, наконец, у вас есть возможность добавить видео с YouTube или Vimeo.

-

О лучших практиках заполнения этих деталей и создания изображений читайте на следующей странице:

- -

Заполнив все эти данные, вы можете нажать кнопку "Сохранить", которая вернет вас в раздел "Активы" на приборной панели издателя. Теперь вы должны увидеть, что ваши активы перечислены, и вы готовы загрузить пакет и опубликовать его, что делается простым нажатием кнопки " Опубликовать vx.x.x. ":

-

Обратите внимание, что настройка листинга услуг несколько отличается от настройки листинга активов, и вы можете найти полную информацию на следующей странице:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/Marketplace/Marketplace_Style_Guide.htm b/Manual/contents/Introduction/Marketplace/Marketplace_Style_Guide.htm index 7426e3a74..e69de29bb 100644 --- a/Manual/contents/Introduction/Marketplace/Marketplace_Style_Guide.htm +++ b/Manual/contents/Introduction/Marketplace/Marketplace_Style_Guide.htm @@ -1,133 +0,0 @@ - - - - - - Руководство по стилю на рынке - - - - - - - - - - -

Руководство по стилю на рынке

-

Эта страница предназначена для тех, кто создает активы и услуги для GameMaker Marketplace. Здесь мы приводим краткое руководство, которое поможет вам при описании и брендировании ваших активов, когда вы создаете листинг активов:

-

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

-

Отображаемое имя

-
-

Ваше отображаемое имя должно быть уникальным для вашего актива и не содержать слов, защищенных торговой маркой, если только вы сами не являетесь ее владельцем. Следует помнить, что, хотя ваше отображаемое имя должно адекватно описывать ваш продукт, в поле, отображаемое на главной странице магазина, помещается только около 11 символов. Подробнее об этом читайте в разделе "Значок" ниже.

-

-
-

Описание

-
-

Описание вашего актива должно адекватно описывать, для чего используется ваш актив и как он используется, если вы не включили эту информацию в сам актив. Описания не обязательно должны быть длинными, но одно предложение, которое не более чем повторяет отображаемое имя, вероятно, не привлечет много клиентов! Если ваш пакет активов основан на графике, вы можете перечислить типы изображений, которые он содержит. Если актив представляет собой музыкальный альбом, возможно, вы захотите предоставить список треков. Если актив основан на коде, часто бывает полезно добавить короткий блок кода, показывающий, для чего его можно использовать, и так далее, и тому подобное.

-

Ваше описание также будет более привлекательным, если вы правильно его отформатируете, используя следующую разметку:

-
    -
  • Курсивный текст: Чтобы создать курсивный текст, поместите текст между одной парой звездочек (*), например:
    -
    - *этот текст набран курсивом*. -
  • -
  • Полужирный текст: Чтобы создать полужирный текст, поместите текст между двумя парами звездочек (*), как, например:
    -
    - **этот текст выделен жирным**. -
  • -
  • Полужирный и курсивный текст: Чтобы создать полужирный и курсивный текст, поместите текст между тремя парами звездочек (*), как, например:
    -
    - ***Этот текст выделен жирным и курсивом***. -
  • -
  • Ссылки URL: Чтобы создать ссылки URL, поместите текст, на который вы хотите сослаться, между квадратными скобками [ ], а затем ссылайтесь на ссылку с четким интервалом между ними, как показано ниже:
    -
    - это [ссылка] на веб-страницу
    - [ссылка]:http://gamemaker.io
    -
    - Совет: Чтобы сделать страницу более аккуратной, лучше располагать ссылки внизу страницы. -
  • -
  • Списки с пунктирными точками: Чтобы создать маркированный список, убедитесь, что над и под списком есть разрыв строки, а затем начните каждую строку со звездочки (*) или дефиса (-), например:
    -
    - * Пункт списка первый
    - * Пункт второй
    - * Список третий -
  • -
  • Нумерованные списки: Чтобы создать нумерованный список, убедитесь, что над и под списком есть разрыв строки, а затем начните каждую строку с последовательных цифр, например:
    -
    - 1. Первый элемент списка
    - 2. Перечислите пункт два
    - 3. Перечислите пункт три -
  • -
  • Блоки кода: Чтобы создать блок кода с отступом, убедитесь, что над и под кодом есть разрыв строки, а затем начните каждую строку с четырех пробелов, например:
    -
    - Lorem ipsum Взгляните на мой код:
    -
    - game_maker_function(arguments);
    - yet_another_function(more, arguments, here); -
  • -
-

-
-

Ключевые слова

-
-

При выборе ключевых слов для вашего актива старайтесь использовать сочетание слов, которые люди обычно ищут в связи с вашим активом, и некоторые слова, которые делают ваш актив уникальным. Например, хорошим набором ключевых слов для движка платформера могут быть: Platform, Jump и Gravity , а также слова, которые описывают ваш уникальный ресурс, например Zombie, Space или Tiger. Вы также можете включить в каждый актив один-единственный тег, представляющий имя вашего издателя, чтобы гарантировать, что ваши активы появятся, если пользователь будет искать активы, разработанные именно вами.

-

-
-

Особенность графики

-
-

Художественная графика - это обязательное условие, если вы хотите, чтобы ваш актив был показан в основном демонстрационном ролике на главной странице сайта Marketplace. На сайте нет заголовков или описаний, отображаемых на графике, поэтому всегда стоит указывать название вашего актива и краткое описание на графике. Например, если вы создаете шейдер, то, вероятно, недостаточно просто использовать обычный снимок экрана в качестве графического элемента, поскольку пользователи могут не понять, является ли актив шейдером, скриптом или sprites, используемым на картинке. При добавлении текста или важных значков в графику следует помнить о других элементах на странице. Ниже приведено изображение, представляющее достойную безопасную зону для включения важного текста и изображений на графике.

-

Empty Asset Listing

-
-

Икона

-
-

Иконка для вашей игры очень важна, поскольку она отображается во всех списках категорий и является единственным реальным способом рекламы вашего актива для людей, просматривающих главную страницу рынка. Ваша иконка должна быть уникальной для каждого актива; повторное использование иконки с логотипом издателя для каждого отдельного актива только запутает потенциальных покупателей с первого взгляда и не даст реальной рекламы того, что делает каждый отдельный актив. Следует также отметить, что название вашего актива будет сокращено в объявлениях на рынке примерно до 11 символов, поэтому, если название вашего актива довольно длинное, вы можете включить его в изображение, чтобы пользователи могли видеть полный текст. Хороший пример иконки актива смотрите ниже:

-

Marketplace Feature Graphic

-
-

Скриншоты

-
-

Скриншоты - это то, с чем многие сталкиваются, особенно если их актив не основан на графике. Однако скриншоты важны для брендинга вашего актива, даже если он полностью основан на коде. Ниже приведены некоторые "до" и "не" создания скриншотов для вашего рыночного актива.

-

Делать:

-
    -
  • Включите макет или скриншот вашего актива в действии, если в нем много визуальных элементов.
  • -
  • Не стесняйтесь включать скриншоты вашего актива в IDE GameMaker, если IDE не является основным объектом внимания на скриншоте. Следите за тем, чтобы рядом с GameMaker на этих скриншотах не появлялись другие программы и значки: например, на панели задач вашего компьютера.
  • -
  • При желании включите логотип вашей компании и текст, описывающий основные преимущества использования вашего актива.
  • -
-

Не делайте этого:

-
    -
  • Не делайте скриншоты, жалуясь на то, что скриншоты обязательны, или с надписью "blank", "screenshot", "place-holder" или любым другим содержанием, которое не стоит собственного скриншота. Если ваш актив не содержит большого количества визуальных элементов, используйте скриншот, чтобы рассказать о продукте подробнее. Если нужно, скопируйте и вставьте описание в изображение, добавив красивый фон или копию логотипа вашего издателя. Все, что связано с вашим активом, лучше, чем шутка или пустой экран.
  • -
  • Не используйте на скриншотах логотип YoYo Games, имя YoYo Games, имя GameMaker или любые другие официальные изображения или словесные знаки YoYo Games. Люди, пользующиеся магазином, уже знают, что актив работает с GameMaker, поэтому включение логотипа YoYo Games может запутать брендинг вашего актива. Этот пункт относится и к другим изображениям, таким как графический элемент и значок актива. Однако, как объяснялось выше, вы можете показать сам GameMaker IDE в действии, если этого требует ваш актив.
  • -
  • Не включайте в свои скриншоты изображения, защищенные авторским правом, такие как sprites из существующих игр. Если ваш актив - движок для платформера, но вы не очень хорошо разбираетесь в искусстве, не поддавайтесь искушению использовать sprites из существующей игры в качестве подставки. Если ваш актив будет замечен в нарушении прав другого лица или компании, ваш актив может быть удален из магазина.
  • -
-

-
-

Видео

-
-

Видео трейлер - это отличный способ продвижения вашего актива на рынке. Это особенно важно, если ваш актив содержит звуковые файлы в качестве основного преимущества, так как это единственный способ, с помощью которого пользователи могут предварительно просмотреть звуки до загрузки актива. Если ваш актив основан на звуке, вам следует включить несколько звуковых клипов или приличный фрагмент музыки в аудио для видео-трейлера.

-

Если ваш актив основан на коде, может быть полезно увидеть его в действии, даже если это означает просто записать 15 секунд или около того игрового видео из вашей собственной копии GameMaker.

-

Лучшие видео - широкоэкранные и не менее 1280 x 720 пикселей, хотя это не имеет большого значения, лишь бы ваш актив был представлен справедливо.

-

Рекомендации по брендингу, изложенные выше для скриншотов, применимы и к видео, вы не должны включать логотипы GameMaker или чужую интеллектуальную собственность в свои видео, если у вас нет разрешения.

-

-
-


- Следование приведенным выше рекомендациям не гарантирует популярности или популярности вашего актива, но это, безусловно, поможет, и нет никакого вреда в том, чтобы сделать ваши активы настолько желанными, насколько они могут быть! Мы надеемся, что эта статья была вам полезна, и, как обычно, если у вас есть вопросы, не стесняйтесь отправить тикет или задать их нам в социальных сетях.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/Marketplace/Purchasing_An_Asset.htm b/Manual/contents/Introduction/Marketplace/Purchasing_An_Asset.htm index 19cdff7d5..e69de29bb 100644 --- a/Manual/contents/Introduction/Marketplace/Purchasing_An_Asset.htm +++ b/Manual/contents/Introduction/Marketplace/Purchasing_An_Asset.htm @@ -1,44 +0,0 @@ - - - - - - Приобретение активов - - - - - - - - - - -

Приобретение активов

-

Чтобы приобрести актив на сайте Marketplace, вы должны сначала войти в свою учетную запись GameMaker. После создания учетной записи и входа на сайт Marketplace вы можете просмотреть доступные пакеты активов. Вы можете загрузить официальные расширения или контент, созданный другими членами сообщества, причем контент может быть как платным, так и бесплатным.

-

Если вы покупаете пакет активов для GameMaker, вам нужно просто выбрать его из списка и нажать кнопку "Купить за [цена]". Это добавит товар в вашу корзину, и вы сможете либо перейти к оформлению заказа, либо продолжить просмотр активов и добавить дальнейшие покупки.

-

Buy Asset Button

-

ПРИМЕЧАНИЕ: Бесплатные активы не будут добавлены в вашу корзину, вместо этого вам просто будет предложено согласиться с условиями EULA, а затем, после принятия, актив будет добавлен в вашу библиотеку.

-

Когда вы будете готовы приступить к оплате, вы можете выбрать опцию "Корзина" в верхней правой части экрана, и перед вами откроется обзор товаров в вашей корзине. Здесь вы можете оплатить покупку кредитной картой или через PayPal, а также изменить сделанные покупки:

-

После завершения оплаты у вас появится экран "Покупка завершена", где вы сможете распечатать квитанцию. Вам также будет отправлено электронное письмо с данными подтверждения платежа. После завершения покупки (как бесплатного, так и платного актива) вы можете вернуться в меню GameMaker Marketplace и нажать на пункт меню "Моя библиотека", где вы сможете загрузить и установить приобретенные активы. Более подробно о том, как устанавливать активы, читайте на странице " Библиотека ".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/Marketplace/Rating_And_Flagging_Assets.htm b/Manual/contents/Introduction/Marketplace/Rating_And_Flagging_Assets.htm index 619438f45..e69de29bb 100644 --- a/Manual/contents/Introduction/Marketplace/Rating_And_Flagging_Assets.htm +++ b/Manual/contents/Introduction/Marketplace/Rating_And_Flagging_Assets.htm @@ -1,59 +0,0 @@ - - - - - - Рейтинг и флагирование активов - - - - - - - - - - -

Рейтинг и флагирование активов

-

На сайте Marketplace вам доступно огромное количество активов, и иногда бывает трудно решить, является ли тот или иной пакет тем, что вам нужно. Чтобы помочь вам определиться, существует система рейтингов и комментариев, где вы можете увидеть оценки (от одной звезды до пяти), которые имеет пакет активов, а также прочитать комментарии, сделанные другими пользователями.

-

Оценивая продукт с сайта Marketplace, учитывайте не только то, был ли он полезен лично вам, но и то, считаете ли вы его полезным в целом, а также принимайте во внимание, насколько хорошо он документирован, есть ли у него дополнительные функции, считаете ли вы его хорошо сделанным или нет. Отметить что-то одной звездой только потому, что это не то, что вы ожидали или не понимаете, как это работает, несправедливо по отношению к человеку, который выставил этот актив на продажу, поэтому старайтесь быть справедливыми при выставлении оценки.

-

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

-

ПРИМЕЧАНИЕ: Хотя негативные комментарии имеют свое место и могут помочь, вы не должны оскорблять или отвергать создателя комментируемого контента, а также оскорблять его продукт. Если вы так сильно переживаете по поводу какого-либо перечисленного актива, что хотите оскорбить его или злитесь, подумайте о том, чтобы отметить сам актив для рассмотрения на сайте YoYo Games (см. ниже).

-

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

-

Обратите внимание, что вы также можете оценивать активы из библиотеки GameMaker, хотя это не позволяет вам делать комментарии к активу, поэтому, возможно, вы захотите уделить время и перейти на страницу Marketplace для данного актива, ведь отзывы очень важны!

-

При просмотре сайта Marketplace вы можете встретить комментарии, которые вы считаете оскорбительными или неуместными. Такие комментарии можно пометить, нажав на значок флага справа от актива:

-

Вы можете отмечать активы по разным причинам:

-
    -
  • Вводящее в заблуждение содержание: рекламируемое содержание не соответствует тому, что содержится в упаковке
  • -
  • Оскорбительное содержание: содержание не соответствует указанному возрастному рейтингу или просто неуместно независимо от указанного возрастного рейтинга
  • -
  • Нарушение авторских прав: содержание не является оригинальным для автора или нарушает авторские права третьей стороны
  • -
  • Неправильная категория: содержимое не соответствует категории, в которую оно было загружено
  • -
-

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

-

Вы также можете отмечать комментарии, сделанные другими пользователями, в разделе комментариев актива с помощью кнопки "флаг":

-

Вы можете узнать больше о том, что считается приемлемым содержанием, на следующей странице:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/Marketplace/Submission_Guidelines.htm b/Manual/contents/Introduction/Marketplace/Submission_Guidelines.htm index 486e5cf20..e69de29bb 100644 --- a/Manual/contents/Introduction/Marketplace/Submission_Guidelines.htm +++ b/Manual/contents/Introduction/Marketplace/Submission_Guidelines.htm @@ -1,104 +0,0 @@ - - - - - - Руководство по подаче документов - - - - - - - - - - -

Руководство по подаче документов

-

Наша цель - позволить всем, кто увлекается созданием контента, связанного с играми, делиться своими творениями с сообществом GameMaker. Однако мы хотим, чтобы и издатель, и конечный пользователь продукции получали максимальное удовольствие от нашего магазина, а это значит, что все загружаемые для публикации материалы должны соответствовать некоторым минимальным требованиям и не содержать ничего, что может быть ограничено политикой Marketplace. Контент, который не соответствует требованиям, будет отмечен другими пользователями как таковой и удален из магазина. Для получения дополнительной информации о пометке активов см. следующую статью:

- -

Поэтому мы составили этот краткий список рекомендаций по публикации, который охватывает такие области, как ограничения на содержание, контроль качества и рекомендации по лучшей практике для обеспечения успеха ваших активов:

-
    -
  • Качество, а не количество: Для того чтобы YoYo Marketplace представлял ценность как для наших издателей, так и для наших клиентов, существует определенный уровень качества, который мы должны поддерживать во всех предложениях нашего магазина, поэтому вы должны убедиться, что все, что вы загружаете, является максимально качественным и действительно полезным для клиента. Для этого мы ценим общее качество активов, а не их количество, поэтому, например, пакет из 25 прекрасно анимированных sprites будет предпочтительнее, чем плохая подборка из 100 средних sprites.
  • -
  • Ценность для разработчиков: Это один из самых важных моментов, которые следует отметить в отношении YoYo Marketplace. Конечная цель - довольный клиент, поэтому на Marketplace будут приниматься только те активы, которые предоставляют разработчикам то, что они иначе не смогли бы создать сами, или производство чего стоило бы им денег или времени. Поэтому, прежде чем представить актив, спросите себя "Действительно ли люди захотят то, что я могу предложить?".
  • -
  • Качественный продукт: Все активы в магазине должны быть качественными. На sprites следует загружать только хорошо сделанные Marketplace, анимации, аудио и код (см. раздел "Специфическая информация об активах" ниже). Поэтому код должен быть хорошо прокомментирован, звук хорошо сбалансирован, а расширения хорошо документированы. Активы, которые будут отмечены как не соответствующие нашим минимальным стандартам качества, будут удалены с рынка.
  • -
  • Соотношение цены и качества: Цель YoYo Marketplace - предложить большое соотношение цены и качества, поэтому простые активы, такие как отдельные sprites, анимации или звуки не будут допущены на Marketplace. Все sprites, анимации, звуки, скрипты и т.д... должны быть представлены в виде набора или пакета, быть универсальными и реально полезными для разработчика.
  • -
  • Простота использования: Обеспечение доступности и простоты использования ваших активов имеет первостепенное значение, а это значит, что вы должны стремиться к тому, чтобы ваши активы были хорошо документированы, прокомментированы и представлены. Это означает, что разработчики с большей вероятностью будут использовать их, что, в свою очередь, гарантирует хорошие рейтинги и, в конечном счете, увеличение продаж.
  • -
  • Ваша собственная работа: Все активы, представленные в магазине, должны быть работой издателя и никого другого. Запрещается размещать активы, загруженные или скопированные с других сервисов, даже если они бесплатны. Издатели, подозреваемые или уличенные в нарушении авторских прав, торговых марок или любых других видов интеллектуальной собственности, будут отстранены от работы и лишены доступа к магазину, если будут уличены в нарушении EULA YoYo. Как издатель на YoYo Marketplace вы несете юридическую ответственность и можете быть привлечены к суду YoYo Games Ltd., владельцем ИС и всеми, кто приобретает и использует актив.
  • -
  • Выделяйтесьиз толпы: Убедитесь, что ваш актив выделяется четкими, хорошо сделанными иконками, скриншотами и графикой. Те пользователи, которые уже публиковали игры в различных магазинах приложений, или те из вас, кто публиковал активы через другие сайты, теперь знают, насколько важна конечная презентация продукта и как она может повлиять на продажи. Активы с плохой визуальной привлекательностью с меньшей вероятностью будут куплены или загружены, поэтому уделите некоторое время дизайну иконок и созданию скриншотов и видеороликов (если применимо) для активов, которые вы хотите продать.
  • -
  • Именование: Убедитесь, что название вашего актива адекватно описывает ваш актив, позволяя разработчикам быстро идентифицировать ваш актив как решение, которое они ищут. Имена должны быть уникальными и не должны содержать нестандартных символов или знаков подчеркивания. В названиях не должны использоваться торговые марки, и мы не принимаем названия, включающие YoYo, YoYo Games, Marketplace, GameMaker или GameMaker Studio.
  • -
  • Организация: Как вы организуете активы в файле проекта GMEZ, зависит от вас, но мы настоятельно рекомендуем вам создать структуру папок, которая четко показывает ваши активы как отдельные, чтобы, когда пользователь импортирует их в свою игру, они были четко отличимы от собственных активов. Например, если ваш актив называется "TOP DOWN AI", то вы должны создать папку под названием "Top Down AI" для всех активов, которые есть в проекте, и поместить все в эту папку, используя дополнительные подпапки по мере необходимости. Также полезно четко обозначить все ресурсы, которые не являются необходимыми и поставляются как часть демонстрации или учебника, чтобы конечный пользователь мог просто удалить их.
  • -
  • Документация: Все представленные активы должны содержать документацию, описывающую, что делает ваш актив, как настроить или установить ваш актив и как его использовать. Включение примера сцены или проекта, в котором используется ваш актив, также полезно, как и любые видео или ссылки на учебники и т.д... постарайтесь сделать вашу документацию как можно более обширной, особенно если вы создаете расширения или проекты.
  • -
  • Максимальный размер актива: размер активов Marketplace не может превышать 50 Мб. Это сделано для того, чтобы пользователи могли добавлять множество активов Marketplace в свой проект, не увеличивая размер проекта слишком сильно, а также для того, чтобы все активы на Marketplace оставались достаточно маленькими для использования.
  • -
-

Это общие рекомендации для всех активов, которые вы загружаете на сайт Marketplace, но ниже приведены некоторые дополнительные рекомендации в зависимости от типа загружаемых активов.

-

Графические активы

-
-

Все графические активы (sprites, фоны и анимация) должны быть максимально качественными и приносить реальную пользу конечному пользователю. Вся растровая графика, такая как плитки и текстуры, должна использовать - формат сжатия без потерь, такой как PSD, PNG или TIFF, а изображения с потерями, такие как JPEG, не должны использоваться, и другие пользователи могут отмечать такие продукты для удаления.

-

Если загружаемые графические ресурсы - это шрифты, то они должны быть вашей собственной работы и самого высокого качества. Они должны охватывать хотя бы минимальный стандартный набор символов ASCII, - и быть полезными для людей, создающих игры. Мы не разрешаем перепаковку бесплатных шрифтов или любых других шрифтовых ресурсов, лицензированных у другой организации.

-


-
-

Кодированные активы

-
-

Все скрипты и закодированные активы должны быть хорошо документированы. Вы должны использовать комментарии по всему коду, чтобы объяснить и идентифицировать области для пользователя, а также иметь встроенные функции обработки ошибок и отладки. Ваш код также должен быть отформатирован как можно ближе - как можно ближе к тому, что оговорено ниже:

-
    -
  • Весь код должен быть закомментирован - Хорошо расположенный комментарий может значительно помочь пользователям понять ваш код и извлечь из него максимальную пользу, поэтому добавляйте его там, где это необходимо. Лучше дать слишком много информации, чем слишком мало.
  • -
  • Последовательное отступы - Существует большое разнообразие техник отступов для блоков кода, и мы не требуем, чтобы одна из них использовалась больше, чем любая другая. Однако мы требуем, чтобы ваш код был последовательным, поэтому, если вы берете новую строку - для открытой скобки один раз, вы должны сделать это для всех, т.е. придерживаться единого стиля.
  • -
  • Группировка кода - старайтесь избегать "стен" кода и добавляйте разрывы строк между соответствующими разделами. Например, если у вас много объявлений переменных, а затем цикл for, добавьте между ними пустую строку для "группировки". - код в очевидные разделы. Это улучшает читабельность.
  • -
  • Последовательное именование - сохраняйте последовательность в именовании переменных и скриптов. Пожалуйста, не используйте, например, camelCase для одних вещей и under_bar для других, поскольку, опять же, это влияет на читабельность.
  • -
  • Согласованные имена локальных переменных - Обычно переменные должны быть описательными и содержать одно или несколько слов. Но это не обязательно относится к локальным (временным) переменным. Они могут быть короткими, как один символ, и это - хорошей практикой является использование согласованных имен для ваших локальных переменных, которые имеют одну и ту же роль.
  • -
-

Если вы загружаете шейдерный актив на Marketplace, тщательно продумайте, как вы его представляете, и убедитесь, что он работает так, как заявлено. Вы можете загружать отдельные шейдеры или "пакеты", содержащие несколько шейдеров, но в любом случае шейдер должен быть четко документирован, а фактический код должен быть прокомментирован, чтобы обеспечить легкий доступ к нему. - в любом случае шейдер должен быть четко документирован, а фактический код должен быть прокомментирован, чтобы обеспечить легкий доступ для всех пользователей.

-

-
-

Активы расширения

-
-

Активы расширений должны поставляться с полной документацией, в которой описано, как их использовать, а также все предостережения и известные проблемы. Ваши расширения должны быть максимально просты в использовании, а если они имеют какие-либо компоненты пользовательского интерфейса, то они должны быть интуитивно понятными и ясными. - Если расширение основано на SDK или файлах сторонних разработчиков, то вы должны иметь правильное лицензирование и предоставить ссылки на исходную документацию.

-


-
-

Аудио активы

-
-

Перед загрузкой любых аудиоматериалов убедитесь, что они имеют максимально возможное качество и что они нормализованы таким образом, что все звуки имеют одинаковый базовый диапазон мин/макс в дБ, и убедитесь, что баланс (басы, стереополе и т.д...) - правильный. Перед загрузкой протестируйте все звуки в GameMaker Studio 2, чтобы убедиться, что формат кодирования совместим и их можно услышать. Звуковые эффекты должны быть в формате WAV и могут быть моно или стерео, а музыка - должна быть либо OGG, либо MP3 и стерео.

-


-
-

-

Подробности о том, как создать листинг Marketplace для ваших активов, а также о том, как загрузить их в магазин, вы найдете на следующих страницах:

- -

Кроме того, на следующей странице есть руководство по стилизации страниц активов и услуг:

- -

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/Marketplace/Your_Marketplace_Library.htm b/Manual/contents/Introduction/Marketplace/Your_Marketplace_Library.htm index 39f6bb300..e69de29bb 100644 --- a/Manual/contents/Introduction/Marketplace/Your_Marketplace_Library.htm +++ b/Manual/contents/Introduction/Marketplace/Your_Marketplace_Library.htm @@ -1,53 +0,0 @@ - - - - - - Ваша библиотека на рынке - - - - - - - - - - -

Ваша библиотека Marketplace

-

Окно библиотеки показывает приобретенные вами пакеты и дает вам возможность загрузить их и/или добавить в ваш проект.Слева находятся фильтры различных категорий, которые можно использовать, чтобы увидеть, что есть в каждой из них, а в середине - список активов в вашей библиотеке. Каждый из них может быть выбран, чтобы вы могли увидеть обзор того, что он делает (справа), и все они имеют значки для просмотра, загрузки или установки пакета активов в проект. Обратите внимание, что в верхней части главного окна есть два дополнительных фильтра, где вы можете выбрать для просмотра только те активы, которые были созданы специально для GameMaker, а также фильтр, показывающий только те активы, которые вы уже загрузили на свою машину. Вы также можете в любой момент обновить список отображаемых активов, нажав на кнопку Refresh .

-

Чтобы добавить пакет активов в текущий проект, необходимо сначала загрузить его, нажав на кнопку Загрузить , а после завершения загрузки нажать на кнопку Импорт , чтобы добавить его в проект. При добавлении пакета таким образом будет создано расширение в текущем проекте, и вам будет предложено выбрать из различных ресурсов пакета активов те, которые вы хотите добавить (или вы можете импортировать их все). Вы также можете выбрать опцию Импортировать все ресурсы в новый проект, и вместо добавления активов в ваш текущий проект GameMaker предложит вам дать имя новому проекту и сохранить активы в этом проекте. Обратите внимание, что если вы перейдете непосредственно в библиотеку со стартовой страницы, вы обнаружите, что большинство активов нельзя добавить по отдельности, и вместо этого вам придется использовать кнопку Добавить все. Это происходит потому, что у вас нет проекта для добавления активов, поэтому GameMaker должен создать новый проект, в который вы сможете добавить все активы из пакета (когда вы нажмете кнопку Import, вам будет предложено сохранить новый проект с выбранным вами именем).Добавив активы в браузер активов, вы можете использовать их в своей игре так же, как и активы, созданные вами самостоятельно. Обратите внимание, что активы, загруженные с сайта Marketplace, предназначены для индивидуального использования и не могут быть переданы третьим лицам, хотя вы можете создать их резервную копию и скопировать их в другие места для безопасности - если только актив не имеет пользовательского EULA, в котором говорится об обратном.

-

ПРИМЕЧАНИЕ: Люди, создающие пакеты активов для Marketplace, прилагают все усилия, чтобы создать для вас отличный ресурс, поэтому, пожалуйста, оценивайте активы, которые вы покупаете, когда вы их тестируете или используете. Это поощряет разработчика, а также является полезным руководством для других пользователей в отношении качества доступных активов. Вы можете легко оценить загруженные активы из окна Библиотеки.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/Our_Knowledge_Base.htm b/Manual/contents/Introduction/Our_Knowledge_Base.htm index 3ecdc215d..e69de29bb 100644 --- a/Manual/contents/Introduction/Our_Knowledge_Base.htm +++ b/Manual/contents/Introduction/Our_Knowledge_Base.htm @@ -1,51 +0,0 @@ - - - - - - Наша база знаний - - - - - - - - - - -

Наша база знаний

-

В руководстве по GameMaker, которое вы сейчас читаете, содержится вся информация, необходимая для использования продукта и начала создания игр. Однако оно не содержит информации о настройке для различных платформ, для которых GameMaker может создавать игры, а также никаких руководств или помощи по различным расширениям, которые доступны для расширения функциональности для некоторых платформ. В нем также не содержится никакой последней информации, которая может быть актуальна для продукта или конкретных платформ и которую не удалось включить в это руководство. Однако вся эта и другая информация доступна вбазе знаний GameMaker . Ниже вы найдете ссылки на различные разделы сайта, которые могут быть вам полезны:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/Our_Social_Links.htm b/Manual/contents/Introduction/Our_Social_Links.htm index 9a53b5d06..e69de29bb 100644 --- a/Manual/contents/Introduction/Our_Social_Links.htm +++ b/Manual/contents/Introduction/Our_Social_Links.htm @@ -1,62 +0,0 @@ - - - - - - Наши социальные ссылки - - - - - - - - - - -

Наши социальные ссылки

-

Помимо технической информации в руководстве и в Базе знаний, GameMaker также имеет ряд социальных сетей и страниц поддержки и информации, где вы можете найти последние новости, предложения и другую информацию, касающуюся GameMaker. Ссылки на эти сайты вы можете найти ниже:

- -

Вы также можете посмотреть игры, созданные с помощью GameMaker, на сайте GameMaker Showcase (а также представить свои собственные!) по следующей ссылке:

- -

Наконец, чтобы получить дополнительную помощь в программировании и использовании GameMaker, вы можете присоединиться к официальным форумам или заглянуть в официальное сообщество Facebook по следующим ссылкам:

- -

-

-

-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/The_Asset_Browser.htm b/Manual/contents/Introduction/The_Asset_Browser.htm index 03af59b4c..e69de29bb 100644 --- a/Manual/contents/Introduction/The_Asset_Browser.htm +++ b/Manual/contents/Introduction/The_Asset_Browser.htm @@ -1,344 +0,0 @@ - - - - - - Браузер активов - - - - - - - - - - -

Браузер активов

-

Ядро вашей игры будет создано из активов, добавленных в Браузер активов, расположенный по умолчанию в правой части IDE. Именно здесь вы можете добавить все, что требуется вашей игре для запуска, включая игровую комнату, спрайты, объекты, пути и ряд других вещей. Для базовой игры в GameMaker потребуется комната для запуска (новые проекты всегда создаются с уже созданным активом комнаты), и, как правило, по крайней мере один объект и sprite, хотя, скорее всего, вы будете использовать гораздо больше!

-

The Asset Browser Components

-

Браузер активов - это место, где вы будете создавать и организовывать активы для своей игры, а также изменять некоторые другие аспекты, например, настройки и конфигурации, специфичные для конкретной платформы. Ниже приведены пояснения к каждому из разделов.

-

Панель поиска

-
-

В строке поиска можно ввести текст и использовать его для фильтрации того, что отображается в основном списке активов. Например, набрав "room", вы увидите все активы, в названии которых есть слово "room". Чтобы вернуть список активов к виду по умолчанию, просто удалите любой текст из строки поиска.

-

-
-

Добавить актив

-
-

С помощью кнопки Добавить актив вы можете выбрать добавление нового актива в список активов. При нажатии откроется следующее окно:

-

Create Asset Window

-

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

-

Активы, которые вы можете добавить здесь, перечислены далее в этом разделе руководства.

-

-
-

Фильтр

-
-

При нажатии на кнопку Фильтр активов откроется следующее окно:

-

Здесь вы можете выбрать способ фильтрации и отображения активов, перечисленных в браузере активов. Вы можете упорядочить их от A - Z или от Z - A, а также выбрать сначала упорядочить группы, а затем активы в группах, или упорядочить все вместе. Если вы выберите фильтр Custom Order, то сможете выбрать один или несколько активов, перетащить их вверх или вниз по дереву браузера активов и расположить их так, как вам нужно (обратите внимание, что опция "Сначала группы" будет отключена).

-

Вы также можете выбрать один или несколько типов активов для фильтрации, и в списке активов будут показаны только те активы, которые находятся в проекте этих типов. При выборе "Любой тип" фильтр будет сброшен. Вы также можете фильтровать с помощью любых назначенных вами тегов (теги рассматриваются далее в этом разделе руководства). Обратите внимание, что если вы выбрали любой фильтр, кроме "Любой тип", кнопка фильтрации изменит цвет, чтобы визуально показать, что фильтрация активна.

-

-
-

Доп. информация

-
-

Меню "Дополнительно" позволяет открыть следующие окна (каждое из которых рассматривается отдельно на связанных страницах):

- -

-
-

Быстрый доступ

-
-

Этот раздел браузера активов используется для предоставления вам различных методов быстрого доступа к важным или часто используемым активам и состоит из следующих разделов:

-
    -
  • Последние: Здесь вы можете найти список последних использованных активов. По умолчанию здесь отображается максимум 10 активов, но вы можете изменить это значение в настройках браузера активов.
  • -
  • Избранное: После добавления некоторых активов в список активов у вас могут появиться активы, к которым вы часто обращаетесь в любой момент времени, поэтому для облегчения работы вы можете пометить эти активы как "избранные", что добавит их в этот список и позволит вам быстро найти их. Чтобы отметить актив как избранный, воспользуйтесь правой кнопкой мыши на нем и выберите пункт "Избранное" во всплывающем меню. Обратите внимание, что вы можете снова воспользоваться правой кнопкой мыши , чтобы снять отметку с любого актива, а если вы используете кнопку на главной папке "Избранное", вы можете выбрать "Очистить все ", чтобы удалить все.
  • -
  • Порядок комнат: Здесь вы можете изменить порядок, в котором будут запускаться ваши комнаты. Для запуска всех проектов требуется хотя бы одна комната, и комната, находящаяся в верхней части списка, является "домашней" комнатой и будет первой комнатой, в которую вы войдете при первом запуске игры (она отмечена значком "дома" ). Чтобы быстро изменить порядок комнат, просто нажмите и перетащите комнату вверх или вниз по списку, а затем отпустите кнопку мыши, чтобы поместить ее на новое место. Если вы нажмете на значок "дом", то откроется Менеджер комнат, а если вы воспользуетесь правой кнопкой мыши на комнате, то сможете создать дочернюю комнату. Более подробную информацию о порядке комнат и дочерних комнатах можно найти на странице Менеджер комнат.
  • -
  • Сохраненные фильтры: При использовании опций фильтрации вы можете захотеть сохранить сделанный выбор для дальнейшего использования. Для этого настройте фильтр, как описано выше на этой странице, затем нажмите правую кнопку мыши на этой опции и выберите Сохранить фильтр. Фильтр будет сохранен в этом списке, и при необходимости вы можете переименовать его. Чтобы использовать фильтр, просто дважды щелкните на нем или воспользуйтесь правой кнопкой мыши в меню Применить фильтр. Вы также можете удалять и переименовывать сохраненные фильтры из меню RMB .
  • -
  • Теги: Всем активам в браузере активов могут быть присвоены определенные пользователем теги. Они будут перечислены здесь, и вы можете использовать их для фильтрации активов, отображаемых в списке активов. Вы можете дважды щелкнуть по любому тегу (или использовать правую кнопку мыши опцию Filter By Tag), чтобы применить этот тег к фильтру списка активов. Все примененные теги отображаются в нижней части обозревателя активов в разделе Информация . Дополнительную информацию о тегах см. далее на этой странице.
  • -
  • Опции игры: Здесь вы можете быстро получить доступ к различным опциям игры для вашего проекта. Они управляют различными аспектами проекта, связанными с настройкой и компиляцией для различных целевых платформ (доступные опции Game Options зависят от типа вашей лицензии). Более подробную информацию о каждой из перечисленных опций вы можете найти в разделе " Опции игры".
  • -
-
-

-
-
-

Список активов

-
-

В этом разделе браузера активов перечислены все различные активы, которые вы используете в своей игре. По умолчанию - когда вы создаете новый проект - он будет заполнен многочисленными группами папок, обозначенными различными видами активов, которые можно добавить, но их можно переименовать или даже удалить, и не обязательно хранить активы одного вида в каждой группе. Например, вам может показаться более полезным выделить группу активов для каждого уровня вашей игры, а не для каждого вида активов, поэтому вы можете создать группы папок с названиями "Уровень 1", "Уровень 2" и т.д. и хранить все различные активы для каждого уровня в одной папке. Как организовать все это - зависит только от вас!

-

Чтобы добавить новый актив в список, можно воспользоваться кнопкой Добавить актив в верхней части браузера активов или открыть меню правой кнопки мыши в любом месте списка активов, а затем выбрать ресурс для создания:

-

После создания актива он будет открыт в рабочей области, и вы можете переименовать его в то, что подходит для вашей игры, но учтите, что имена активов могут быть только буквенно-цифровыми, не могут начинаться с цифры и могут использовать знак подчеркивания "_" в качестве дополнительного символа. Вы также можете использовать меню правой кнопки, чтобы создать новые группы папок, содержащие активы, используя опцию " Создать группу ", и назвать их можно как угодно. Если вы хотите переименовать какой-либо актив или группу папок, то вы можете сделать медленный двойной щелчок на них или использовать опцию меню RMB Переименовать.

-

Важной особенностью обозревателя активов является возможность раскрашивать активы, чтобы они были лучше различимы в списке. Это можно сделать, нажав правую кнопку мыши на узле списка активов слева, а затем выбрав цвет из появившейся палитры. Если вы сделаете это для папки, то это также окрасит все активы, содержащиеся в папке:

-

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

-

Отдельные активы также могут быть окрашены независимо от группового цвета с помощью RMB на примечании актива или с помощью палитры в нижней части меню RMB (хотя это можно отключить в настройках браузера активов). Обратите внимание, что вы можете использовать или / вместе с левой кнопкой мыши для выбора нескольких активов и назначения цвета всем им одновременно:

-

List Icon

-

Как вы будете распределять их по цветам, зависит от вас - это может быть тип активов, использование или любые другие критерии!

-

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

-

-
-

Информация

-
-

Информационная панель в нижней части браузера активов показывает, сколько всего активов находится в списке активов, а также количество активов, которые выбраны в данный момент. В этом разделе также отображаются все теги, которые использовались для фильтрации списка активов (более подробную информацию о тегах см. ниже), и вы можете нажать на них, чтобы удалить фильтр тегов, если это необходимо.

-

Grid Icon

-
-

Управление масштабированием

-
-

Регуляторы масштабирования можно использовать для увеличения или уменьшения содержимого браузера активов с минимальным значением 50% до максимального значения 250% от текущего DPI GameMaker IDE. Если вы хотите вернуть значение 100% по умолчанию, то просто дважды щелкните на процентном значении слева от ползунка. Обратите внимание, что в настройках браузера ассетов есть несколько параметров, позволяющих регулировать этот параметр.

-
-

-

-

Теги

-

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

-

Чтобы создать метку, необходимо воспользоваться меню RMB на активе, а затем выбрать опцию Редактировать метки. Откроется редактор тегов, где вы можете ввести тег, который хотите использовать, а затем либо нажать , либо ввести запятую, чтобы применить его:

-

Вы можете присвоить несколько тегов одному элементу, а также использовать кнопки или / вместе с левой кнопкой мыши для выбора нескольких активов и присвоения тега всем им одновременно. После добавления все теги будут видны в меню быстрого доступа, а также в опциях фильтра (как описано в разделах выше), поэтому их можно использовать для быстрой фильтрации списка активов и отображения только тех элементов, которые содержат выбранный тег или теги.

-

Присвоение тега группе папок не приведет к автоматическому присвоению его активам внутри группы.

-

Важно отметить, что активы, которые создаются, пока теги являются частью активного фильтра , получают эти теги автоматически. Это означает, что если вы, например, просматриваете все активы под тегом "Level 1", то все новые активы, созданные с активным фильтром, также будут иметь тег "Level 1" при создании.

-

Наконец, теги также можно использовать в коде проекта для идентификации любого актива и последующего действия с ним, что делает их очень мощным инструментом, поскольку вы можете кодировать поведение, основанное на теге или группе тегов. Например, представьте, что у вас есть проект с тегом "Die On Touch". При программировании проекта вы можете проверить этот тег и закодировать соответствующую функциональность, а затем художники и дизайнеры уровней могут создавать новые активы любого типа и помечать их тегом "Die On Touch", а затем использовать этот актив при разработке уровня. Любой код, который был запрограммирован на использование этого тега, будет автоматически включать эти новые активы.

-

Более подробную информацию об использовании тегов в коде проекта можно найти в разделе " Активы и теги".

-

-

-

Меню юаней

-

При работе с браузером активов вы можете использовать правую кнопку мыши на любом ресурсе или папке, чтобы открыть меню опций:

-

Точные параметры, доступные вам, будут зависеть от контекста, в котором был сделан щелчок, и ниже мы покажем содержимое меню, когда оно открыто на активе или группе папок в списке активов (в других контекстах будут показаны некоторые из них, но не все):

-
    -
  • Создать - Создать новый актив. При выборе этого пункта вам будет представлен список доступных типов активов, которые могут быть созданы, чтобы вы могли выбрать один из них. Обратите внимание, что если вы откроете это меню на определенном активе, появится дополнительная возможность создать ресурс того же типа, перечисленного чуть ниже, так что вам не придется искать тип актива в списке.
  • -
  • Редактировать (Все) - открыть редактор свойств ресурсов для выбранного актива (активов) или группы папок (обратите внимание, что вы можете дважды щелкнуть на отдельном активе, чтобы открыть его для редактирования).
  • -
  • Редактировать теги - откроется редактор тегов, в котором можно добавить или удалить теги к выбранному активу (активам) или группе (группам) папок.
  • -
  • Переименовать - переименование актива или группы папок.
  • -
  • Дублировать - создание дубликата выбранного актива или активов.
  • -
  • Избранное - пометить актив или активы как избранные, добавив их в раздел быстрого доступа в верхней части браузера активов.
  • -
  • Добавить существующие - добавить существующие активы из другой папки проекта GameMaker. Обратите внимание, что активы, созданные с помощью версии, предшествующей 2.3.0, потребуют конвертации, так как формат файла проекта изменился с обновлением 2.3.0. Это означает, что если активы часто импортируются в другие проекты, предпочтительнее будет импортировать весь проект, конвертировать все файлы, а затем сохранить их в новом месте.
  • -
  • Добавить существующие из моей библиотеки - добавление активов в список активов из элемента вашей библиотеки Marketplace. Обратите внимание, что активы Marketplace, созданные с помощью версии, предшествующей 2.3.0, потребуют преобразования, так как формат файла проекта изменился с обновлением 2.3.0.
  • -
  • Удалить - удалить выбранный актив(ы) из проекта. Это нельзя отменить!
  • -
  • Создать группу - добавление новой группы папок в список активов.
  • -
  • Развернуть дочерние папки - развернуть выбранную в данный момент группу папок вместе с любыми содержащимися в ней вложенными папками.
  • -
  • Развернуть все - развернуть все группы папок в списке активов.
  • -
  • Заключить договор со всеми - заключить договор со всеми группами папок в списке активов.
  • -
  • Открыть в новом браузере активов - эта опция доступна только для групп папок; она открывает группу в новом окне браузера активов, содержащем только содержимое родительской группы, для которой была выбрана эта опция.
  • -
  • Открыть в проводнике - откроет проводник файлов на месте расположения файла, который был сохранен для ресурса в папке проекта.
  • -
  • Цвет - Здесь вы можете выбрать новый цвет, который будет использоваться для актива. При использовании для группы папок все активы в папке получат выбранный цвет, а при использовании для одного или нескольких активов этот цвет отменяет все цвета, установленные для группы папок (если вы не переопределили этот параметр в настройках браузера активов).
  • -
-

-

-

Типы активов

-

Теперь вы знаете, как работает браузер активов, вам следует познакомиться с различными типами активов, которые вы можете добавить в него. Ниже мы приведем обзор каждого из различных типов активов, которые вы можете использовать в своих проектах:

-

-

Import Icon Анимационные кривые - -

-
-

Кривая анимации - это ресурс, содержащий одну или несколько кривых, которые представляют, как значение изменяется со временем, и может использовать линейную интерполяцию или интерполяцию катмул-ром для перехода между значениями на кривой. Значения, которые вы задаете, могут быть от -1 до 1 по вертикальной оси, а длительность по горизонтальной оси всегда нормирована от 0 до 1, что позволяет легко задавать различные временные диапазоны с помощью множителей в коде вашей игры. Анимационные кривые состоят из "каналов", и каждый канал может иметь свои собственные настройки кривой, что позволяет вам, например, описать пространственную позицию с помощью двух каналов для позиции x/y или цветовой градиент с помощью 4 каналов для представления цветового формата. Активы анимационных кривых можно использовать при работе с последовательностями, а также получить доступ к ним с помощью кода, что делает их мощным инструментом при создании игр.

-

Подробнее о добавлении кривых анимации вы можете узнать из раздела " Кривые анимации".

-

-
-

Расширения

-
-
-

Расширения - это дополнительные файлы и код, которые вы можете добавить для расширения функциональности GameMaker, а также для добавления активов в вашу игру из Marketplace. Формат расширения зависит от конечной целевой платформы, но в целом они пишутся на C++, C# или JavaScript.

-
-

Подробнее о добавлении расширений вы можете узнать из раздела о редакторе расширений.

-

-
-

Шрифты

-
-

Когда вы хотите нарисовать текст в вашей игре, этот текст по умолчанию будет нарисован стандартным шрифтом Arial 12 пунктов, но для создания более интересных или уникальных текстов вы, вероятно, захотите использовать другие шрифты. Для этого используется Редактор шрифтов. Здесь вы можете выбрать шрифт, который есть у вас на компьютере, и импортировать его в GameMaker для использования в вашей игре, установив различные атрибуты, такие как размер, вес или стиль. После импорта и добавления в качестве ресурса вы можете установить его для рисования с помощью соответствующего кода или действий.

-
ПРИМЕЧАНИЕ: Если вы добавляете шрифты в свою игру, убедитесь, что у вас есть лицензия, необходимая для их повторного распространения, если только они не являются общественным достоянием или не защищены авторским правом.
-

Меню RMB для шрифтов содержит следующую опцию (а также опции, перечисленные далее на этой странице):

-
    -
  • Назначить группу текстур - при выборе этой опции вам будет представлен список доступных групп текстур, из которого вы можете выбрать ту, в которую добавите шрифт, или создать новую, если это необходимо. Если в браузере активов выбрано несколько шрифтов или выбрана групповая папка шрифтов, то все они будут добавлены в выбранную группу текстур. Дополнительные сведения о группах текстур см. здесь.
  • -
  • Регенерировать шрифт - с помощью этой опции вы можете заставить GameMaker регенерировать кэш шрифта. Обычно это требуется только в том случае, если шрифт поврежден или изменился в системе.
  • -
-

Подробнее о добавлении шрифтов вы можете узнать из раздела о редакторе шрифтов.

-

-
-

Примечания

-
-

Заметки - это просто окна редактора кода, в которых можно писать что угодно. Они предназначены для хранения фрагментов кода, игровой информации, списков дел, командных сообщений и т.д..

-

Подробнее о добавлении заметок вы можете узнать из раздела о редакторе заметок.

-

-
-

Объекты

-
-

Объекты - это особые ресурсы, которые мы используем для управления аспектами игры и для выполнения определенных действий. Чаще всего с ними связаны спрайты, чтобы вы видели их в игровой комнате, но иногда они используются как контроллер "за сценой" для выполнения действий, связанных с пользователем, или для синхронизации и т.д.. Им может быть задано поведение, и они могут реагировать на определенные события, а также друг на друга, и большинство вещей, которые вы видите в игре, основаны на объектах и их взаимодействии. Обратите внимание, что мы говорим "на основе", потому что на самом деле вы не размещаете объекты непосредственно в игровой комнате, а размещаете экземпляры этих объектов, которые, по сути, являются копиями (или клонами, если хотите) ресурса объекта. Это очень важно помнить, поскольку экземпляры и объекты - это не одно и то же, и у каждого из них есть свой собственный набор функций, которые могут на них влиять.

-

Все объекты имеют набор свойств, которые вы можете указать в редакторе объектов, например sprite, использует ли он физику или нет, является ли он "дочерним" объектом другого объекта. Они также имеют ряд встроенных переменных, которые затем можно использовать в действиях, скриптах и коде. Эти встроенные переменные используются для определения положения объекта при размещении в игровой комнате, скорости анимации, направления движения и множества других параметров. Чтобы контролировать поведение объекта во времени, каждый игровой кадр разбивается на серию событий, поэтому вы можете добавить код или действия в определенное событие, и они будут выполняться только при наступлении этого события, а события могут быть вызваны такими вещами, как нажатие кнопки мыши или столкновение с другими экземплярами.

-

Объекты в самом реальном смысле являются строительными блоками вашей игры, и вместе с комнатами будут составлять основу любого проекта, который вы создадите.

-

Меню RMB для объектов содержит следующую опцию (а также опции, перечисленные далее на этой странице):

-
    -
  • Открыть все сценарии событий - при выборе этой опции все назначенные события для объекта будут открыты в новой рабочей области в виде вкладок сценариев.
  • -
-

Подробнее о добавлении объектов вы можете узнать из раздела о редакторе объектов.

-

-

-
-

Пути

-
-

В какой-то момент при создании игр вам может понадобиться, чтобы экземпляр одного из ваших объектов следовал по пути через уровень. Это можно сделать, просто создав массив позиций в комнате и заставив экземпляр перемещаться между ними, но это может быть трудоемкой задачей, которую сложно изменить, протестировать и адаптировать для различных задач. Именно в этом случае вы захотите создать ресурс пути.

-

Основная идея ресурса пути довольно проста - вы определяете путь, рисуя его в редакторе путей, затем вы можете поместить действие (или код) в событие объекта, чтобы указать объекту следовать по этому конкретному пути в игровой комнате. Вы можете задать скорость движения по пути и ряд других действий, связанных с положением и ориентацией пути в комнате.

-

Подробнее о добавлении путей вы можете узнать из раздела о редакторе путей.

-

-
-

Номера

-
-

Всем играм, которые вы создаете в GameMaker, для запуска нужна как минимум одна комната (но их может быть много, много больше), а комната - это, по сути, пространство, где вы размещаете экземпляры объектов, составляющих вашу игру, и где будет происходить действие игры. Однако редактор комнат является одним из самых мощных ресурсов, доступных вам, поскольку он позволяет не только добавлять экземпляры объектов, но и настраивать "вид" на комнату, добавлять фоны и плитки, которые рисуются для создания игрового мира, создавать дополнительные спецэффекты, которые не зависят от системы объект/экземпляр, а также запускать код независимо от объекта. Комнаты также могут наследовать свойства других комнат, что означает, что вы можете создать одну комнату, например, с кучей плиток, а затем создать другую комнату, которая наследует эти плитки, так что вам не придется создавать их заново.

-

Меню RMB для номеров содержит следующую опцию (а также опции, перечисленные далее на этой странице):

-
    -
  • Создать дочернюю комнату - создается новая комната как дочерняя по отношению к выбранной комнате. Дочерние комнаты - это новые активы комнат, которые наследуют свойства, слои и содержимое слоев от родительской комнаты, и будут отображаться связанными с родительской комнатой в Менеджере комнат.
  • -
-

Подробнее о добавлении комнат вы можете узнать из раздела о редакторе комнат.

-

-
-

Скрипты

-
-

Ресурс сценария - это просто контейнер для одной или нескольких написанных вами функций. Например, допустим, вы хотите, чтобы все вражеские объекты при смерти создавали несколько различных инстансов - например, золото, взрыв, кровь, а также воспроизводили звук. Теперь вы можете добавить весь необходимый код в каждый объект, который этого требует, но в целом вам лучше создать одну функцию в ресурсе скрипта и затем вызвать ее. Это означает, что вам нужно добавить только одну строку кода в объекты для вызова этой новой скриптовой функции, а если вы хотите что-то изменить, вам нужно изменить это только один раз в скрипте, и все объекты будут автоматически выполнять новый код, а не проходить через каждый объект и изменять одно и то же в нескольких местах.

-

Меню RMB для скриптов содержит следующую опцию (а также опции, перечисленные далее на этой странице):

-
    -
  • Преобразовать в GML Visual / GML - Это преобразует выбранный сценарий в GML Visual или GML. Если сценарий GML, то он будет помещен в действие Execute Code, в то время как GML Visual будет переведен непосредственно в код GML (как показано в разделе Изменение GML Visual в код).
  • -
-

Подробнее о добавлении скриптов вы можете узнать из раздела о редакторе скриптов.

-

-
-

Последовательности

-
-

Актив последовательности - это, по сути, набор других ресурсов, которые выполняют динамическую анимацию во времени. Они могут содержать sprites, экземпляры, звуки и другие вещи, и каждый из них может быть настроен на движение, изменение цвета или запуск/остановку во времени в самой последовательности путем назначения активов на определенные дорожки в последовательности. К этим дорожкам могут быть применены различные атрибуты, которые могут быть статичными или изменяться со временем. Все редактирование последовательности происходит в редакторе после довательностей, который состоит из:

-
    -
  • холст - где вы размещаете активы, составляющие последовательность
  • -
  • панель дорожек - здесь вы размещаете активы для создания дорожек активов, а также создаете дорожки параметров для манипулирования активами с течением времени
  • -
  • Dope Sheet - здесь вы добавляете/удаляете/редактируете ключевые кадры каждого трека и управляете их поведением во времени.
  • -
-

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

-

Подробнее о добавлении последовательностей вы можете узнать из раздела оредакторе последовательностей .

-

-
-

Шейдеры

-
-

Шейдеры - это очень мощный инструмент, который можно использовать для манипулирования графикой, выводимой вашей игрой на экран, позволяя создавать невероятно быстрые эффекты, которые могут варьироваться от, например, добавления тонкого цветового оттенка к sprite, до эффектов искажения всего экрана. По сути, это программа из двух частей, которая работает непосредственно на самой видеокарте, что делает ее очень быстрой, поскольку всю работу выполняет GPU, и освобождает циклы CPU для кода вашей игры. Полный шейдер состоит из программы вершинного шейдера и программы фрагментного шейдера (также известного как пиксельный шейдер). Обе эти маленькие программы работают вместе, чтобы манипулировать тем, что графическая карта отображает на экране. Это позволяет в реальном времени управлять положением, цветом и альфа-значениями, которые выводятся в буфер дисплея.

-

GameMaker поддерживает следующие языки шейдеров:

- - - - - - - - - - - - - - - - - - - - - - - -
Язык шейдеровЦелевая платформа
GLSL ES Все целевые платформы
GLSLMac и Ubuntu (Linux)
HLSL11Windows, UWP, XboxOne
PSSLPlaystation 4
-


- Меню RMB для шейдеров содержит следующую опцию (а также опции, перечисленные далее на этой странице):

-
    -
  • Shader Type - Здесь вы можете установить тип языка шейдеров, который используется для шейдерного ресурса.
  • -
-

Asset Browser Filter Options

-

Подробнее о добавлении шейдеров вы можете узнать из раздела о редакторе шейдеров.

-

-
-

Звуки

-
-

Звук - важная часть любой игры, как для придания глубины игровому процессу и обратной связи в виде звуковых эффектов, так и для придания атмосферы в виде музыки. GameMaker принимает файлы форматов WAV, MP3 и OGG.

-

В целом, файлы WAV используются для любых коротких звуковых эффектов, поскольку, несмотря на то, что они имеют больший размер, они воспроизводятся мгновенно, так как не требуют декодирования. Файлы MP3 и OGG следует использовать для фоновой музыки или любых эффектов, которые воспроизводятся в течение длительного периода времени или имеют довольно большой размер файла. Эти файлы намного меньше, чем WAV-файлы, но они требуют больших затрат процессора, так как перед воспроизведением их необходимо декодировать.

-

Меню RMB для звуков содержит следующие опции (а также опции, перечисленные далее на этой странице):

-
    -
  • Open In Sound Mixer - откроет все выбранные звуки в Sound Mixer.
  • -
  • Назначить аудиогруппу - при выборе этой опции вам будет представлен список доступных аудиогрупп, и вы сможете выбрать одну из них для добавления звука или, при необходимости, создать новую. Если в браузере активов выбрано несколько звуков или выбрана групповая папка звуков, то все звуки будут добавлены в выбранную аудиогруппу. Дополнительные сведения о группах звуков см. здесь.
  • -
-

Icon RMB

-

Подробнее о добавлении звуков вы можете узнать из раздела о редакторе звуков.

-

-

-
-

Спрайты

-
-

Спрайты обычно являются визуальным представлением объектов в создаваемых вами играх. Таким образом, sprite - это изображение, нарисованное с помощью редактора изображений GameMaker или созданное с помощью любой внешней программы рисования и импортированное в GameMaker. Используемое изображение не обязательно должно быть одним статичным объектом... это может быть и "стрип" изображение, т.е. несколько изображений в одном файле, которые затем могут быть использованы для создания одного анимированного sprite. Например, следующие 10 изображений образуют sprite для персонажа, который машет руками во время прыжка с парашютом.
- И фактически готовая анимация будет выглядеть так, если ее поместить в игру: -

-

Такой файл sprite обычно имеет формат PNG, но GameMaker также принимает векторные sprites в формате SWF, а спрайты Spine в формате JSON (с сопутствующей текстурой atlas ).

-

Меню RMB для sprites содержит следующие опции (а также опции, перечисленные далее на этой странице):

-
    -
  • Назначить группу текстур - При выборе этой опции вам будет представлен список доступных групп текстур, и вы сможете выбрать одну из них для добавления sprite или, при необходимости, создать новую. Если в браузере активов выбрано несколько sprites - или вы выбрали папку группы sprites - то все sprites будут добавлены в выбранную группу текстур. Дополнительные сведения о группах текстур см. здесь.
  • -
  • Создать Sprite из изображения (изображений) - При выборе этой опции откроется проводник файлов, в котором можно выбрать одно или несколько изображений, из которых будет создан sprite. Если выбрать несколько изображений, то sprite будет создан с несколькими рамками, по одной для каждого выбранного изображения.
  • -
  • Открыть в редакторе изображений - откроет sprite в редакторе изображений для редактирования, не открывая сначала редактор Sprite.
  • -
-

Icon RMB

-

Подробнее о добавлении sprites вы можете узнать из раздела о редакторе спрайтов.

-

-
-

Плитки

-
-

Наборы плиток взяты из ресурсов sprite, но классифицируются как отдельный ресурс, поскольку GameMaker по-разному обрабатывает их при создании вашей игры. По сути, набор плиток - это единое изображение, которое GameMaker разобьет на отдельные секции в зависимости от значений, заданных вами для различных параметров. Затем вы можете использовать их в редакторе комнат (или процедурно через код) для создания карты плиток в вашей комнате. Они отлично подходят для создания любых статичных элементов в комнате, таких как рельеф, стены, задники и т.д., поскольку они не имеют таких накладных расходов, как объекты.

-

Выше приведен пример sprite, который будет использоваться в качестве набора плиток для создания стен. Как видите, он может быть "разбит" на куски размером 64x64 пикселя, которые затем помещаются в редактор помещений.

-
ПРИМЕЧАНИЕ Плитки всегда квадратные, поэтому если вам нужно что-то другое, вы должны использовать экземпляр с sprite или слой актива в редакторе помещений.
-

Меню RMB для наборов плиток содержит следующую опцию (а также опции, перечисленные далее на этой странице):

-
    -
  • Назначить группу текстур - при выборе этой опции вам будет представлен список доступных групп текстур, и вы сможете выбрать одну из них для добавления тайлсета или, при необходимости, создать новую. Если в браузере активов выбрано несколько наборов тайлов или выбрана папка с набором тайлов, то все они будут добавлены в выбранную группу текстур. Дополнительную информацию о группах текстур см. здесь.
  • -
-

The Home Room Icon

-

Подробнее о добавлении наборов плиток вы можете узнать из раздела о редакторе наборов плиток.

-

-
-

Временные рамки

-
-

В большинстве игр вы хотите, чтобы определенные вещи происходили в определенные моменты времени. Вы можете попытаться добиться этого, используя события тревоги в экземпляре, но когда все становится слишком сложным, это уже не сработает, тем более что вы ограничены только двенадцатью сигналами тревоги. Вот почему у нас есть ресурс временной шкалы. На временной линии вы указываете, какие действия должны произойти в любой конкретный момент игрового времени, и вы можете использовать все действия, доступные для объекта в различных событиях, а также код. Создав временную линию, вы можете назначить ее объекту, и тогда экземпляр этого объекта будет выполнять действия и код в указанные моменты времени при размещении или создании в комнате.

-

Подробнее о добавлении временных шкал вы можете узнать из раздела о редакторе временных шкал.

-

-
-


- Если вы хотите получить более подробное руководство по использованию различных редакторов, перечисленных выше, обратитесь к следующему разделу руководства:

- -

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/The_Marketplace.htm b/Manual/contents/Introduction/The_Marketplace.htm index 501cb585d..e69de29bb 100644 --- a/Manual/contents/Introduction/The_Marketplace.htm +++ b/Manual/contents/Introduction/The_Marketplace.htm @@ -1,69 +0,0 @@ - - - - - - Рынок - - - - - - - - - - -

Рынок

-

Marketplace - это онлайн рынок GameMaker для покупки и продажи пакетов активов. Пакет активов может представлять собой практически все, что связано с GameMaker, то есть: sprites, скрипты, шейдеры или даже полноценные игровые движки или фреймворки. Чтобы иметь возможность создавать, покупать и продавать пакеты, вы должны быть зарегистрированы на сайте Marketplace в качестве издателя и войти в систему через GameMaker (это произойдет автоматически при входе в программу) или с главной веб-страницы Marketplace. Более подробную информацию о том, как стать издателем, вы можете найти на страницах, ссылки на которые приведены внизу этой страницы.

-

ПРИМЕЧАНИЕ: Чтобы иметь возможность создавать или использовать пакеты активов, вы должны предварительно создать сертификат профиля пользователя. Вы можете сделать это в настройках Marketplace Preferences, которые описаны на этой странице.

-

В этом окне вы можете получить доступ к своей учетной записи пользователя (и связанным с ней учетным записям издателей) в правом верхнем углу страницы, а также просмотреть и купить или загрузить пакеты активов для использования. Полную информацию о том, как купить и загрузить пакет активов, можно найти на страницах, ссылки на которые приведены внизу этой страницы.

-

Вы можете легко получить доступ к Marketplace из выпадающего меню Marketplace в верхней части GameMaker IDE, и это дает вам возможность открыть библиотеку пакетов активов, а также создать свои собственные (активы или учебники) и обновить все существующие пакеты. Библиотека Marketplace в GameMaker подробно описана на следующей странице:

- -

На следующих страницах рассматривается процесс создания учетной записи издателя, внесения актива или услуги в список, а затем создания и загрузки пакета активов, а также несколько других важных деталей:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/The_Output_Window.htm b/Manual/contents/Introduction/The_Output_Window.htm index 51a540090..e69de29bb 100644 --- a/Manual/contents/Introduction/The_Output_Window.htm +++ b/Manual/contents/Introduction/The_Output_Window.htm @@ -1,114 +0,0 @@ - - - - - - Окно вывода - - - - - - - - - - -

Окно вывода

-

The Output Dock

-

Когда вы впервые открываете проект в GameMaker, в нижней части экрана появляется пристыкованное окно Output Window . Это пристыкованное окно содержит различные вкладки, которые показывают различную выходную информацию для вашего проекта, в зависимости от определенных обстоятельств. Док можно закрыть, нажав кнопку в нижней части IDE, а также щелкнуть и перетащить любую вкладку в пристыкованном окне в другой док, чтобы изменить ее положение, или щелкнуть на панели содержимого дока и перетащить ее в рабочую область, чтобы создать отдельное окно:

-

Вы также можете щелкнуть и перетащить пристыкованный вывод в другой вывод для создания окна вывода с разделенным видом, как показано в примере ниже, где два вывода ошибок были размещены в одной вкладке (вы можете медленно щелкнуть на вкладке, чтобы изменить ее имя):

-

Вы можете в любой момент восстановить состояние по умолчанию на сайте IDE, выбрав команду Сброс макета в окне Макеты, а также вы можете снова открыть любую закрытую вкладку из меню Окна. Вы также можете изменить способ отображения содержимого каждого окна вывода, отредактировав Параметры окна вывода.

-

Ниже описаны вкладки, установленные по умолчанию в доке:

-

Выход

-
-

В общем окне Output отображается весь вывод компилятора, а также любые сообщения, которые вы добавили в игру с помощью функции - функция show_debug_message() функцию. Большая часть отображаемой начальной информации является просто отладочной информацией о том, как собирается игра, и - как таковая, может быть проигнорирована. Однако если у вас возникли проблемы со сборкой проекта для целевой платформы, это может оказаться полезным для поиска причины, а также предоставить информацию для службы поддержки, если вы обратитесь к ней. Обратите внимание, что вы можете изменить - количество информации, отображаемой здесь, в разделе Компиляция раздела Предпочтения.

-

-
-

Результаты поиска

-
-

Окно поиска и замены можно открыть с помощью сочетания клавиш / + + " F" или через меню Правка. После того как вы введете условия поиска, результаты будут показаны в этом окне в формате:

-

[object] - [event] - [Line Number]: [search string]

-

Если поисковый запрос найден в сценарии, то он будет просто:

-

[script] - [Line Number]: [search string]

-

Затем вы можете дважды щелкнуть на любой из возвращенных записей, чтобы открыть данный актив в нужной позиции для редактирования.

-

В этом окне также будут показаны результаты для функции Feather "Найти все ссылки".

-

-
-

Контроль источников

-
-

В этом окне будет показан весь вывод для вашего плагина SCM. Вы можете узнать больше о - о настройке Source Control здесь.

-

-
-

Точки останова

-
-

Точки останова - это места в коде вашей игры или GML Visual, где вы указали GameMaker приостановить выполнение проекта в режиме отладки. - режиме отладки. Вы можете добавить точку останова в любом месте игрового цикла с помощью клавиши " F9", и когда вы это сделаете, она появится на этой вкладке вывода. Вы можете включать и выключать их (не удаляя) - нажав на флажок слева, а если вы используете правую кнопку мыши на одной из них, то вы получите небольшое меню, которое позволит вам удалить точку останова или открыть код/GML Visual - окно, в котором находится точка останова. -

-

-
-

Ошибки синтаксиса

-
-

Синтаксические ошибки - это те ошибки в вашем коде, которые синтаксическая проверка GameMaker - обнаружила. Существует множество причин, по которым вы можете получить синтаксическую ошибку - например, в вашем коде есть символ ";", когда ожидается символ ":" - и их следует устранить до того, как вы попытаетесь протестировать или скомпилировать свою игру. Каждая запись о синтаксической ошибке в - в окне вывода можно дважды щелкнуть левой кнопкой мыши , чтобы открыть окно в отмеченной позиции и устранить ошибку.

-

Синтаксические ошибки будут обновляться по мере написания кода (между вводом текста и появлением ошибок в этом окне будет небольшая пауза, чтобы избежать появления сообщений об ошибках в незаконченном коде), и будут соответствовать формату:

-

[object] - [event] - [Line Number] - [Position In Line]: [error string]

-

Или если ошибка находится в скрипте, она будет:

-

[script] - [Line Number] - [Position in line]: [error string]

-

Обратите внимание, что синтаксические ошибки обычно препятствуют компиляции игры, однако есть ошибки, которые будут отмечены, которые не препятствуют компиляции, но которые, тем не менее, должны быть устранены. Речь идет о следующих ошибках:

-
    -
  • для объявленных переменных, которые нигде не используются
  • -
  • для переменных, используемых где-то, которые еще не были объявлены
  • -
-

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

-

-
-

Ошибки компиляции

-
-

Ошибка компилятора возникает, когда ваша игра сталкивается с какой-то ошибкой, которую не смогла обнаружить проверка синтаксиса, или когда ошибка связана с тем, как вы настроили параметры компиляции. Когда это происходит, игра выдает ошибку компилятора и прекращает работу. Все ошибки компилятора будут показаны и в окне общего вывода, но они также будут перечислены здесь отдельно (поскольку они могут "потеряться" в остальном общем выводе).

-

Все сообщения об ошибках компилятора будут иметь одинаковый формат:

-

[object] - [event] - [Line Number]: [error string]

-

Если ошибка найдена в сценарии, то это будет просто:

-

[script] - [Line Number]: [error string]

-

Затем вы можете дважды щелкнуть на любой из записей об ошибках компилятора, чтобы открыть данный актив в позиции, отмеченной как дающая ошибку. Полный список возможных сообщений об ошибках см. здесь.

-
-

Сообщения перьев

-
-

Icon LMB

-

В окне Feather Messages отображаются все ошибки, предупреждения и предложения, о которых сообщает Feather. Вы можете дважды щелкнуть любой элемент в списке, чтобы перейти к соответствующему окну кода.

-

Дополнительную информацию см. в разделе Сообщения Feather (Feather enabled).

-
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/The_Start_Page.htm b/Manual/contents/Introduction/The_Start_Page.htm index 4595aa3d2..e69de29bb 100644 --- a/Manual/contents/Introduction/The_Start_Page.htm +++ b/Manual/contents/Introduction/The_Start_Page.htm @@ -1,93 +0,0 @@ - - - - - - Начальная страница - - - - - - - - - - -

Начальная страница

-

Когда вы впервые откроете GameMaker, вам будет предложено войти в свою учетную запись YoYo или Opera (или зарегистрироваться, если вы еще не зарегистрировались - см. здесь). После регистрации и входа в систему на стартовой странице откроется основная среда GameMaker IDE:

-

The Start Page

-

Когда вы впервые запустите GameMaker, вы сможете увидеть описание каждого элемента начального экрана, наведя на него курсор.

-

Здесь вы можете нажать кнопку "SKIP to Setup Wizard", чтобы начать создавать свой первый проект с помощью мастера Setup Wizard, который проведет вас через все шаги, необходимые для создания вашей первой игры в GameMaker.

-

-

Вы также можете нажать кнопку "Закрыть", чтобы закрыть мастер и продолжить работу с GameMaker вручную, а также установить флажок "Не показывать мне снова", если вы не хотите видеть мастер при повторном запуске GameMaker.

-

Элементы стартовой страницы

-

Стартовая страница содержит следующие элементы:

-
    -
  • Строка меню IDE: Здесь показаны меню, которые вы можете использовать в IDE; более подробная информация приведена в разделе ниже.
  • -
  • Параметры проекта: В разделе "Проекты" можно создавать, открывать или импортировать проекты. Более подробно об этом рассказывается далее на этой странице.
  • -
  • Последние проекты: Здесь вы можете увидеть список предыдущих проектов, которые вы можете открыть. Вы также можете увидеть полное название проекта и путь к нему, а нажатие левой кнопки мыши приведет к открытию проекта. Вы также можете переключать вид этого раздела между режимом плитки и режимом списка, нажимая кнопки в правом верхнем углу.
  • -
  • Сведения о версии: В этом разделе содержится подробная информация о текущей используемой версии IDE, а также о текущей версии Runtime. В этом разделе вы также будете получать уведомления о любых изменениях, доступных для IDE или Runtime.
  • -
  • Сведения о пользователе: Здесь отображается имя пользователя вашей учетной записи YoYo и время последнего входа в систему.
  • -
  • Полезные ресурсы: Здесь показаны различные плитки, на которые можно нажать, чтобы получить доступ к официальным обучающим ресурсам по GameMaker.
  • -
-

Меню IDE

-

В верхней части находятся общие меню IDE, которые описаны в следующих разделах руководства:

- -

Обратите внимание, что в верхней строке меню также появятся контекстно-специфические пункты меню, в зависимости от того, на каком окне вы сфокусировались в данный момент. Например, если в фокусе находится окно редактора изображений, то здесь появятся дополнительные пункты меню "Изображения", "Просмотр" и "Эффекты". Эти дополнительные пункты меню описаны в соответствующих разделах руководства для рабочей области или окна, которое их создало.

-

-

Начало нового проекта

-

Вы можете нажать кнопку New , чтобы создать новый проект, кнопку Open , чтобы открыть существующий проект, или кнопку Import , чтобы открыть сжатый файл проекта GameMaker YYZ или старый файл проекта GameMaker: Studio 1.4 GMX. Как при открытии, так и при импорте откроется проводник файлов, в котором вы сможете найти нужный вам файл проекта.

-

ПРИМЕЧАНИЕ: GameMaker не полностью обратно совместим с GameMaker: Studio 1.4, но импортированные проекты 1.4 должны работать, так как устаревшая функциональность была воссоздана автоматически с помощью скриптов совместимости. Подробную информацию о возможных проблемах и изменениях, внесенных в GML, можно найти в статье Справочного центра " Перенос проекта GMS 1.4 на GameMaker", а также в разделе руководства " Устаревшие функции".

-

Чтобы создать новый проект, просто нажмите кнопку с надписью New, которая откроет меню Template:

-

-

Выберите шаблон (или начните с пустого проекта), выберите имя и место сохранения проекта, а затем нажмите "Поехали!".

-

-

-

- - - - - - \ No newline at end of file diff --git a/Manual/contents/Introduction/Workspaces.htm b/Manual/contents/Introduction/Workspaces.htm index b2c39f67d..e69de29bb 100644 --- a/Manual/contents/Introduction/Workspaces.htm +++ b/Manual/contents/Introduction/Workspaces.htm @@ -1,148 +0,0 @@ - - - - - - Рабочие места - - - - - - - - - - -

Рабочие места

-

После входа в систему и начала нового проекта GameMaker перенесет вас в начальную рабочую область с несколькими основными окнами, пристыкованными к IDE. В целом, рабочее пространство - это просто область, где вы можете организовать различные активы для вашей игры во время работы:

-

Workspaces

-

Как вы можете видеть, начальное рабочее пространство находится на вкладке в верхней части экрана (и вы можете переименовать его, дважды щелкнув по вкладке), но вы можете создавать дополнительные рабочие пространства для проекта, щелкая по сбоку, что дает вам несколько возможных рабочих пространств для любого отдельного проекта. Например, вы работаете над взаимодействием между игроком и несколькими вражескими объектами, тогда игрок будет находиться в отдельном рабочем пространстве, вражеские объекты - в другом, и, возможно, еще одно рабочее пространство будет предназначено только для отображения скриптов, используемых обоими.

-

Еще одной важной особенностью рабочих пространств является то, что вы можете щелкнуть на вкладке и, удерживая кнопку мыши нажатой, перетащить ее из основного окна IDE в отдельное окно, что очень упрощает организацию работы, если вы используете, например, несколько дисплеев. Вы также можете объединить эти вторичные окна рабочей области обратно в основное, перетащив вкладку обратно в первое окно. Обратите внимание, что хотя при выполнении этого действия у вас, как кажется, запущены два экземпляра IDE, оба они предназначены для одного и того же проекта, и вы не можете иметь один проект в одном, а другой - в другом, если только вы специально не откроете два экземпляра GameMaker.

-

Когда вы впервые запускаете GameMaker, ваше рабочее пространство уже будет заполнено несколькими окнами, которые будут " пристыкованы" к IDE. Краткое описание этих окон приведено ниже:

-
    -
  • Output - На изображении выше вы также видите окно Output. В этом окне есть несколько вкладок, относящихся к контролю исходного кода, поиску и отладке, причем начальная вкладка предназначена для вывода консоли/компилятора, который показывает, что происходит во время компиляции игры для тестирования или при создании финального пакета для распространения. Здесь также будут отображаться любые отладочные сообщения, которые вы решите отправлять из проекта во время выполнения, и их можно настроить на отображение разного количества информации в общих настройках. Если вы закрыли окно вывода и хотите восстановить его, вы можете воспользоваться меню Windows.
  • -
  • Активы - В правой части экрана вы можете найти кнопку Браузер активов. Здесь вы можете создавать и редактировать различные активы, которые использует ваша игра, а также создавать и изменять конфигурации, параметры игры, порядок комнат и другие вещи. Активы создаются щелчком правой кнопки мыши на папке с активами (или в любом другом месте основного вида браузера активов) и выбором пункта Создать, или щелчком на значке плюса вверху и выбором актива из окна Создать актив (обратите внимание, что этим способом можно создать несколько активов одного типа одновременно, установив значение внизу):
    -
    - При выборе любого из этих вариантов будет создан новый пустой ресурс данного типа с выделенным полем имени, чтобы вы могли сразу дать ему имя. Обратите внимание, что хотя по умолчанию браузер активов прикреплен к IDE, вы можете убрать его в собственное окно, щелкнув на тексте "Браузер активов" вверху и перетащив его. Вы можете в любой момент снова прикрепить его, перетащив его в боковые или нижние части окна IDE. Если вы закрыли окно браузера активов и хотите восстановить его, вы можете воспользоваться меню Windows. Для получения дополнительной информации о доступных активах см. раздел " Редакторы". -
  • -
-

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

- -

-

-

Меню RMB рабочей области

-

Находясь в любой рабочей области, вы можете в любой момент вызвать меню правой кнопки, щелкнув правой кнопкой мыши в любом месте, что вызовет следующее меню:

-

Add New Workspace

-

При нажатии на кнопку Assets (Активы ) откроется список всех активов в Asset Browser, которые вы можете создать, и при выборе любого из них будет создан ресурс этого актива, а рабочая область будет сфокусирована на окне редактора этого ресурса. Если вы щелкните опцию Windows , вам будет показан список всех открытых в данный момент окон в рабочей области, и вы можете выбрать любое из них, чтобы сфокусировать рабочую область на этом окне. Наконец, у вас есть опция Go To , которая откроет следующее окно:

-

LMB Icon

-

Это окно позволяет вам искать каждый актив, функцию, игровой параметр и предпочтение в вашем проекте по введенному вами поисковому термину. Например, если ввести "icon" в качестве поискового термина, то будут показаны все элементы в вашем проекте, в названии которых есть "icon", например: если sprite - это spr_Icon_Play, то он будет показан здесь, как и объект " obj_Iconoclast", и вы даже увидите опции игры для различных иконок, например, "Icon for hdpi". Щелчок на любом из объектов, показанных в отфильтрованном списке, откроет его в текущей рабочей области или сфокусирует рабочую область на нем, если он уже открыт.

-

Обратите внимание, что вы также можете использовать сочетание клавиш / + T, чтобы открыть окно Go To, и что количество элементов в списке (по умолчанию) установлено на максимум 16. Вы можете изменить этот максимальный предел, а также другие параметры поиска в разделе Go To (Перейти к ) Общих настроек.

-

Более подробную информацию о навигации по рабочему пространству см. в разделе " Ввод и навигация IDE".

-

-

-

Стыковка

-

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

-

Обратное верно, и если вы перетащите определенные окна к краям рабочей области (или к нижней части), то они будут пристыкованы, то есть, по сути, станут частью наложения окон IDE и перестанут быть независимыми. Для этого перетащите окно в область, к которой вы хотите пристыковаться, и она будет выделена, чтобы показать, что вы можете пристыковать окно там:

-

Таким образом, вы можете создать индивидуальный опыт работы с IDE, который соответствует вашему рабочему процессу и способу ведения дел. Стоит отметить, что все пристыкованные окна можно скрыть/открыть по отдельности, нажав кнопку сбоку от пристыкованных элементов (выделена на изображении в верхней части этой страницы), или вы можете скрыть/открыть все пристыкованные элементы с помощью быстрой кнопки в верхней части IDE, а также отметить, что IDE запоминает пристыкованные окна между сессиями.

-

ПРИМЕЧАНИЕ: Некоторые окна исчезают из дока при смене редактора, например, в редакторе комнат. Однако, когда вы вернетесь в соответствующий редактор, они снова откроются в доке.

-

-

Быстрые кнопки

-

Ниже мы приводим список быстрых кнопок, которые доступны по умолчанию в GameMaker. Эти кнопки находятся в верхней части сайта IDE и представляют собой многие из наиболее распространенных команд, которые вы будете использовать во время работы в GameMaker, чтобы сделать ваш рабочий процесс более плавным (обратите внимание, что большинство этих кнопок имеют эквивалентный пункт меню ):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LMB IconОткрывает начальную страницу в новом рабочем пространстве
Icon RMBСоздайте новый проект.
Resources MenuОткройте ранее созданный проект.
Icon LMBСохранить текущий проект. Обратите внимание, что по умолчанию GameMaker сохраняет ваш проект автоматически (в зависимости от установленных вами параметров ), а эта кнопка предназначена просто для того, чтобы вы могли принудительно сохранить проект в любое время.
Icon RMBНажатие на эту кнопку приведет к тестовому запуску вашего текущего проекта вместе с модулем отладки. Используйте это для тестирования и отладки вашей игры. Подробнее об отладочном модуле вы можете узнать из раздела об отладчике.
RMB Menu OptionsНажатие на эту кнопку приведет к тестовому запуску вашего проекта на выбранной целевой платформе.
Goto WindowЭта кнопка может использоваться для отмены компиляции ваших игр в целевой модуль или (только для определенных целей) для остановки игры во время ее работы после компиляции.
CTRL Key IconНажатие этой кнопки очистит кэш компилятора текущих активов. GameMaker сохраняет изображения, звуки, скрипты и т.д. в кэше, чтобы сэкономить время при тестировании игры, так как повторно компилируется только то, что было изменено перед тестированием. Однако со временем этот кэш может стать поврежденным или "устаревшим", или вы можете захотеть провести полное тестирование без предварительного кэширования, в этом случае вы можете очистить кэш, нажав эту кнопку. -
ВАЖНО
: Рекомендуется всегда очищать кэш перед созданием исполняемого файла для любой целевой платформы. -
CMD Key IconПри нажатии на эту кнопку откроется редактор основных параметров игры. Обратите внимание, что это только основные, общие параметры для текущего проекта, но у вас могут быть и специфические для платформы параметры, перечисленные в браузере активов.
Icon LMBНажмите здесь, чтобы открыть руководство (или в качестве альтернативы нажмите ).
Un-docking the asset browserЭто уменьшит масштаб сфокусированной рабочей области, чтобы все стало меньше (вы также можете добиться этого, удерживая кнопки / и используя колесико мыши ).
Docking The Asset BrowserЭто вернет сфокусированную рабочую область в состояние 1:1.
Docking IconЭто увеличит масштаб сфокусированной рабочей области, чтобы все стало крупнее (вы также можете добиться этого, удерживая кнопки / и используя колесико мыши ).
Home IconЭто переключит все пристыкованные элементы между скрытыми и не скрытыми.
New Project IconЭто позволит включить и выключить режим ноутбука (он появится только в том случае, если вы используете ноутбук - подробнее см. раздел " Вход IDE" ).
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Quick_Start_Guide/Creating_Sound_Effects.htm b/Manual/contents/Quick_Start_Guide/Creating_Sound_Effects.htm index 84fa3625d..e69de29bb 100644 --- a/Manual/contents/Quick_Start_Guide/Creating_Sound_Effects.htm +++ b/Manual/contents/Quick_Start_Guide/Creating_Sound_Effects.htm @@ -1,58 +0,0 @@ - - - - - Создание звуковых эффектов - - - - - - - - - - - -

Создание звуковых эффектов

-

Все игры должны иметь звуковые эффекты, а большинство из них - еще и музыку, что означает, что вы должны иметь возможность добавить их в свою игру в GameMaker. Это делается с помощью Звуковой редактор, - который открывается всякий раз, когда вы создаете новый звуковой актив в браузере активов:

-

The Sound Editor

-

Звуки в GameMaker могут быть несжатыми или сжатыми, причем сжатые звуки имеют дополнительные возможности по работе с ними во время выполнения. Несжатые звуки - это те, которые были сохранены как файлы формата WAV, в то время как сжатые звуки могут быть в формате MP3 или OGG. Как правило, небольшие звуковые эффекты нужно сохранять в формате WAV - например, звуки стрельбы, звуки нажатия кнопок, - и т.д.), а более крупные эффекты или музыку - MP3 или OGG. Как и в случае с другими различными ресурсами, рекомендуется давать звукам имена с соответствующим префиксом, например, " snd_". - чтобы вы могли легко идентифицировать их позже.

-

ПРИМЕЧАНИЕ: Несжатый звук означает, что он не подвергался никакому типу сжатия. алгоритм применяется к нему. Применение сжатия к звуку означает, что он будет занимать меньше места в памяти, но также означает, что его нужно распаковать перед воспроизведением, а поскольку небольшие звуковые эффекты обычно используются часто и очень быстро - и не занимают много места в памяти - вам нужны дополнительные затраты процессора на распаковку звука при его воспроизведении. - и не занимают много места в памяти, вам не нужны дополнительные затраты процессора на распаковку при воспроизведении. Однако, поскольку такие вещи, как музыкальные файлы, могут быть очень большими, вы хотите, чтобы они были сжаты, так как в этом случае они будут занимать меньше места в памяти. - и дополнительные затраты процессора на декомпрессию незначительны, поскольку они обычно воспроизводятся по одному.

-

Добавить звук очень просто: нажмите кнопку добавить звук , а затем найдите в открывшемся проводнике файлов нужный вам файл (вы также можете перетаскивать и - перетащить звуковые файлы на GameMaker IDE, и они будут добавлены как новый звуковой актив). Выбрав и загрузив один из звуковых файлов, вы можете просмотреть его с помощью показанных элементов управления воспроизведением, а также изменить определенные атрибуты для того, чтобы экспортировать файл. - экспортировать файл. Если вы не уверены в этом, то просто оставьте все как есть, хотя если вы добавляете музыку или звуки в формате MP3 / OGG, то вам, вероятно, следует изменить - на формат Compressed - Not Streamed.

-

Более подробную информацию о звуковом редакторе можно найти на странице, ссылка на которую приведена ниже:

- -

Обратите внимание, что звуки занимают много места на диске, поэтому следует быть осторожным при их создании для своих игровых проектов. Действительно ли вам нужен звуковой эффект с частотой 48 КГц, который воспроизводится лишь долю секунды? Скорее всего, нет! Поэтому подумайте о снижении частоты дискретизации до 11025 или 22050 для эффектов, а для более длинных вещей, таких как музыка, или для зацикленных эффектов подумайте также об использовании сжатого формата. Обратите внимание, что если вы планируете использовать 3D-позиционные аудиоэффекты, - то исходный звуковой файл должен быть монофоническим.

-

Теперь вы можете закрыть звуковой редактор и перейти к рассмотрению объектов и экземпляров...

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Quick_Start_Guide/Creating_Sprites.htm b/Manual/contents/Quick_Start_Guide/Creating_Sprites.htm index 426487f3a..e69de29bb 100644 --- a/Manual/contents/Quick_Start_Guide/Creating_Sprites.htm +++ b/Manual/contents/Quick_Start_Guide/Creating_Sprites.htm @@ -1,82 +0,0 @@ - - - - - Создание спрайтов - - - - - - - - - - - -

Создание спрайтов

-

Теперь, когда вы знаете, что такое программа, пришло время рассмотреть некоторые из различных активов , которые могут быть использованы в GameMaker для создания вашей игры. Для начала мы рассмотрим спрайты, - которые, как правило, являются одним из первых ресурсов, необходимых при создании любого проекта. Как объясняется в разделе " Браузер активов", sprite - это изображение, которое может быть анимировано (хотя это не обязательно), а затем нарисовано на экране. - хотя это и не обязательно), а затем нарисованное на экране. Обычно sprite ассоциируется с объектом, но вы можете рисовать sprites самостоятельно, либо из кода, либо в редакторе комнат Asset Layer (мы поговорим об этом подробнее позже, - в разделе о комнатах). Вы также можете создать sprite для использования в качестве набора плиток, но этот вариант мы также рассмотрим в одном из следующих разделов.

-

Когда вы создаете новый проект со Стартовой страницы, в браузере активов будут только пустые папки для ресурсов, которые могут вам понадобиться, поэтому вам нужно щелкнуть правой кнопкой мыши на папке активов sprite и выбрать опцию Создать (если у вас нет папки активов sprite, вы можете создать ее из меню правой кнопки мыши, а затем создать sprite, или вы можете просто щелкнуть правой кнопкой мыши в любом месте браузера активов и создать ее). - и создать его). Это создаст новый актив sprite и откроет папку редактор спрайтов (если редактор sprite не открывается, просто дважды щелкните на новом активе):

-

Как вы можете видеть, в верхней левой части окна есть поле для имени sprite. Все sprites (и все другие активы) должны иметь - чтобы вы (и GameMaker) могли легко их идентифицировать, хотя вы должны заметить, что это имя на самом деле просто переменная который содержит значение идентификатора - которое "указывает" на ресурс, в данном случае sprite. Лучше всего дать каждому sprite описательное имя, чтобы вы могли с первого взгляда определить, является ли конкретный актив sprite или объектом, или чем-то еще, и многие люди делают это - префиксом или суффиксом ресурса с буквами " spr" - например, " spr_Ball". Обратите внимание, что имена ресурсов ограничиваются использованием только букв, цифр и символа подчеркивания - символ "_", а название всех ресурсов должно начинаться с буквы, а не с цифры.

-

Другие возможности редактора sprite мы обсудим в конце этого раздела, но сначала нам нужно объяснить, как нарисовать sprite. Это делается в программе Редактор изображений. Изображение - редактор изображений - это очень мощный инструмент для создания графики в вашей игре, который открывается нажатием кнопки Редактировать изображение .

-

Icon RMB

-

Мы не будем слишком углубляться в доступные здесь инструменты - для этого есть раздел руководства "Редактор изображений", - но вкратце у вас есть:

-
    -
  • В левом верхнем углу находится вид рамки - здесь отображается рамка (рамки) вашего sprite, размер которой можно изменить с помощью значков лупы.
  • -
  • В центре находится холст для рисования - на нем отображается выбранная рамка, готовая к рисованию, и вы можете использовать среднюю кнопку мыши для панорамирования и колесико мыши для увеличения или уменьшения масштаба.
  • -
  • В правом верхнем углу находятся основные кисти - здесь вы можете выбрать кисть для рисования, и любые пользовательские кисти также будут добавлены сюда.
  • -
  • В центре справа находится окно выбора цвета - здесь мы можем выбрать цвет для левой и/или правой кнопки мыши, поскольку рисовать на холсте можно одновременно одной или другой кнопкой.
  • -
  • Сразу под выбором цвета находятся инструменты - это различные инструменты рисования, включая кисть, заливку, маскировку и инструменты для создания фигур. Обратите внимание, что некоторые из инструментов разделены по диагонали и рисуют либо очерченные, либо заполненные - в зависимости от того, на какой стороне линии вы нажмете, чтобы выбрать их.
  • -
  • В правом нижнем углу находится вид слоев - как и во многих других инструментах рисования, вы можете создавать различные слои для рисования, что позволяет вам экспериментировать с расположением, цветом и т.д., не беспокоясь о разрушении того, что находится под слоем. - то, что находится под ним.
  • -
-

Нарисуйте что-нибудь в редакторе изображений и некоторое время поиграйте с опциями, затем, когда вы будете готовы, закройте рабочую область редактора изображений (при этом изображение будет сохранено), чтобы вернуться к основной рабочей области с редактором sprite. Мы обсудим - несколько других возможностей редактора sprite, которые важно знать, когда вы только начинаете работать...

-

Первое, что вам нужно знать, это как установить начало координат для sprite. Начало координат - это просто точка, которая будет использоваться для "привязки" нашего sprite в комнате, и в данном случае мы хотим установить ее в центре.

-

Итак, щелкните в нисходящем меню для установки начала координат и выберите "середина - центр":

-

LMB Icon

-

Вы увидите, как синий маркер начала координат на изображении предварительного просмотра переместится в центр sprite. Обратите внимание, что вы можете разместить начало координат в любом месте, просто щелкнув на изображении предварительного просмотра. - можно также вручную ввести положение начала координат, добавив значения в поля x/y вверху.

-

Еще одна важная вещь, которую необходимо знать, - как установить маску столкновений для sprite. Маска столкновений - это область, которую GameMaker будет проверять на предмет столкновения с любым другим объектом в игре, - По умолчанию она установлена на прямоугольник (что также является самым быстрым решением). Обратите внимание, что вы можете установить режим обнаружения для параметра ограничивающая рамка быть либо автоматическим - (значение по умолчанию) или вручную. Если вы выберете ручной режим, вы сможете установить значения ограничивающей рамки слева, справа, сверху и снизу.

-

The Sprite Editor

-

Любой тип маски столкновений, кроме прямоугольника, будет решаться медленнее, но при создании небольшой, простой игры это обычно не является проблемой. Обратите внимание, что вы также можете импортировать sprites, сделанный в других программах, нажав на кнопку Import в редакторе GameMaker. - sprite редактора, а также вы можете перетащить файлы изображений на GameMaker IDE, чтобы добавить их как sprites в Asset Browser. Вы также можете перетащить sprites из браузера активов, чтобы добавить их непосредственно к объектам, в этом случае на IDE будут выделены места, куда можно добавить . - места, в которые можно добавить sprite:

-

Если вы хотите получить более подробную информацию о редакторе Sprite и редакторе изображений, обратитесь к следующим разделам руководства:

- -

Теперь вы можете закрыть редактор sprite, поскольку мы собираемся перейти к обсуждению наборов плиток.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Quick_Start_Guide/Creating_Tile_Sets.htm b/Manual/contents/Quick_Start_Guide/Creating_Tile_Sets.htm index d786c544c..e69de29bb 100644 --- a/Manual/contents/Quick_Start_Guide/Creating_Tile_Sets.htm +++ b/Manual/contents/Quick_Start_Guide/Creating_Tile_Sets.htm @@ -1,63 +0,0 @@ - - - - - Создание наборов плиток - - - - - - - - - - - -

Создание наборов плиток

-

Наборы плиток создаются на основе sprites, но они также классифицируются как отдельный тип активов, поскольку способ работы GameMaker с ними несколько отличается от работы с sprites и объектами. Итак, набор плиток - это коллекция плиток, созданная - вместе в одном sprite, а плитка - это просто графический ресурс, который добавляется в комнату GameMaker как часть объекта. карта плиток. Эти карты плиток затем рисуются на - экран с минимальной обработкой CPU/GPU, что делает их идеальными для проектирования любых статичных объектов в уровнях.

-

Для того чтобы обработка плиток была такой быстрой, они имеют определенные ограничения, самое основное из которых заключается в том, что они могут быть только прямоугольными или квадратными (если вам нужно что-то иное, чем это, то вам нужно будет создать обычный спрайт - и использовать Asset Layer в редакторе комнат, но об этом мы поговорим в следующем разделе о комнатах). Другие ограничения включают тот факт, что их можно поворачивать только на 90°, зеркально отображать или переворачивать, и они могут быть - анимировать только кадры, число которых равно 2 (т. е. 2, 4, 8, 16 и т. д.).

-

Давайте рассмотрим простой пример набора плиток - несколько квадратных настенных плиток для игры "сверху вниз":

-

Example Tile Set Sprite

-

Для начала нам нужно сделать из этого набора плиток спрайт, что можно сделать в редактореспрайтов/редакторе изображений(или во внешнем редакторе изображений, а затем импортировать как ). - редакторе, а затем импортируется как sprite). Окончательный вариант sprite должен выглядеть примерно так:

-

Обратите внимание, что самая первая плитка на этом изображении пустая. То, как карта плиток для комнаты хранится в GameMaker, означает, что - что первая плитка всегда должна быть пустой, так как это, по сути, плитка "удаления" или "пустого пространства" (эта "пустая" плитка будет иметь индексное значение 0 - плитки индексируются значением, которое - начинается с 0 и отсчитывается слева направо, сверху вниз). Таким образом, при создании наборов плиток левая верхняя угловая плитка всегда должна быть пустой. Также обратите внимание, что хотя на изображении выше показан полный набор настенных плиток, состоящий из 47 плиток, вам может - не нужно так много, так как вы можете поворачивать и переворачивать плитки при размещении их в редакторе комнаты позже.

-

Когда sprite создан, мы можем перейти к определению самого набора плиток, что означает, что сначала нужно создать новый ресурс набора плиток, щелкнув правой кнопкой мыши на активе Tile Set asset - и выбрав Create (Создать). Откроется редактор наборов плиток, куда можно добавить sprite и задать его свойства:

-

Tile Set Sprite

-

Мы установили размер набора плиток 64px, а остальные параметры оставили по умолчанию, так как нам не нужны смещения или что-то подобное (значения смещения полезны для любого набора плиток sprite, который имеет пробелы вокруг каждой из плиток). - плитки). Вы захотите назвать актив набора плиток, используя соответствующий префикс, например " ts_", чтобы вы могли легко идентифицировать его позже, и обратите внимание, что действуют те же ограничения, что и для sprites, т.е. имя не может начинаться с цифры, и может использоваться только в качестве префикса. - с цифры и может использовать только символ подчеркивания "_" и буквенно-цифровые символы.

-

Теперь вы можете закрыть редактор наборов плиток, так как вы можете использовать набор плиток "как есть" для создания слоев карты плиток в редакторе помещений, однако если вы хотите узнать больше о расширенных функциях редактора наборов плиток, то смотрите следующий раздел - руководство:

- -

Теперь перейдем к разговору о добавлении звуковых эффектов в ваш проект...

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Quick_Start_Guide/Drawing.htm b/Manual/contents/Quick_Start_Guide/Drawing.htm index 400485094..e69de29bb 100644 --- a/Manual/contents/Quick_Start_Guide/Drawing.htm +++ b/Manual/contents/Quick_Start_Guide/Drawing.htm @@ -1,277 +0,0 @@ - - - - - - Рисование - - - - - - - - - - - -

Рисование

-

Цель этого раздела (и следующего раздела " Движение и управление") - дать вам практические примеры GML или GML Visual, чтобы вы могли как можно быстрее приступить к созданию своих первых игровых проектов. Мы не будем объяснять все слишком подробно, поскольку хотим, чтобы вы как можно быстрее приступили к созданию игры, поэтому мы рекомендуем вам изучить все ссылки по ходу дела и использовать функцию "поиск" в руководстве для поиска дополнительной информации о том, в чем вы не уверены.

-

В этом разделе мы сосредоточимся на простом рисовании информации на экране, как в виде текста, так и в виде изображений, а также расскажем немного больше о различных событиях Draw, в частности, об основном событии Draw и событии Draw GUI (обратите внимание, что в некоторых примерах вам потребуется добавить другие события, но мы будем объяснять их по мере того, как мы до них дойдем).

-

The Draw Events

-

Прежде чем двигаться дальше, вы можете создать новый проект (либо GML, либо GML Visual) на Стартовой странице и добавить (или создать) несколько sprites, а также объект или два, поскольку мы дадим вам некоторый код, который вы сможете протестировать с их помощью. В качестве sprite для нашего объекта подойдет даже белый квадрат!

-

Как уже упоминалось в разделе " Объекты и экземпляры", если вы не добавите к объекту событие Draw Event, то GameMaker будет рисовать по умолчанию, то есть, если объекту назначен sprite, то этот sprite будет нарисован, вместе с любыми добавленными трансформациями. Что мы подразумеваем под трансформациями? Ну, каждый объект имеет ряд встроенных переменных, которые управляют тем, как экземпляр объекта рисует свой sprite при рисовании по умолчанию, и вы можете изменять эти переменные по ходу игры, чтобы изменить способ рисования sprite.

-

ПРИМЕЧАНИЕ: Список всех встроенных переменных, которые можно использовать для преобразования экземпляра sprites, можно найти здесь. GML У визуальных пользователей есть несколько специальных действий, влияющих на эти переменные, которые вы можете найти здесь, а также вы можете использовать сами переменные вместе с действиями Get Instance Variable и Set Instance Variable.

-

Давайте рассмотрим несколько примеров:

-

Изменение альфа (прозрачности)

-
-

Альфа-значение - это то, что контролирует прозрачность рисуемого объекта, и в GameMaker вы можете использовать встроенную переменную image_alpha, чтобы изменить прозрачность назначенного объекта sprite. Чтобы увидеть, как это работает, откройте (или создайте) объект, присвойте ему sprite, а затем создайте событие Create Event. В событии Create Event просто добавьте следующий GML Visual или GML:

-

GML VisualDraw Example For Transparency

-

var _val = random(1); -
- image_alpha = _val; -

-

Альфа изображения рассчитывается как значение от 0 до 1, где 0 - полностью прозрачное, а 1 - полностью непрозрачное (по умолчанию установлено значение 1). Поэтому в данном примере мы просто устанавливаем альфа-фактор изображения на случайное десятичное значение от 0 до 1. Разместите несколько экземпляров этого объекта в комнате, а затем нажмите кнопку Play в верхней части сайта IDE.

-

Вы должны увидеть, что каждый экземпляр объекта рисует свой sprite с разной прозрачностью, например:

-

Play Icon

-

-
-

Изменение цветовой гаммы (тонирование)

-
-

Когда ваш объект по умолчанию рисует sprite, этот sprite фактически рисуется смешанным (или тонированным) цветом, и значение этого цвета хранится во встроенной переменной image_blend. По умолчанию этот цвет белый, что означает, что при отображении на экране цвет не будет добавлен к sprite. Однако вы можете использовать другие цвета для достижения специальных эффектов, например, использовать красный цвет, чтобы показать, что экземпляр получил некоторые повреждения.

-

В этом примере мы собираемся смешивать различные цвета с sprite во время нажатия и удержания клавиши, поэтому вам нужно открыть (или создать) объект, присвоить ему sprite, а затем дать объекту событие Key Down <Space>.

-

Example Of Sprites Drawn With Different Alpha Values

-

В этом событии Key Down Event добавьте следующий GML Visual или GML:

-

Add Key Down Event

-

var _col = choose(c_red, c_green, c_blue, c_yellow, c_fuchsia, c_orange); -
- image_blend = _col; -

-

Разместите несколько экземпляров этого объекта в комнате, а затем нажмите кнопку Play в верхней части сайта IDE и протестируйте нажатие и отпускание клавиши Space . Вы должны увидеть, что каждый экземпляр будет быстро менять свой цвет, пока клавиша удерживается, и перестанет меняться, когда клавиша будет отпущена:

-

GML VisualExample Using Key Down Event

-

-
-

Изменение масштаба

-
-

Еще одним свойством, которое мы можем изменить для нашего sprite, является масштаб , позволяющий нам рисовать его больше или меньше, когда мы захотим. Масштаб определяется независимо по осям X и Y двумя отдельными переменными: image_xscale и image_yscale. По умолчанию они установлены в 1, и действуют как множители, так что значение 0,5 будет половиной масштаба, а значение 2 - удвоением масштаба.

-

ВАЖНО! Изменение назначенного масштаба sprite с помощью этих переменных также изменит размер ограничивающей рамки, что означает, что область обнаружения столкновений для sprite также изменится.

-

В этом примере мы будем использовать простую математику, чтобы заставить экземпляр масштабировать sprite вверх и вниз в цикле. Для начала откройте (или создайте) объект, присвойте ему sprite, а затем дайте объекту событие Create Event. В этом событии добавьте следующее:

-

Play Icon

-

timer = 0;

-

Теперь добавьте событие Step Event к объекту с помощью этого:

-

Example Showing Colour Blending

-

timer = timer + 1; -
- var _val = dsin(timer); -
- image_xscale = 1 + _val; -
- image_yscale = 1 + _val; -

-

Здесь мы используем функцию maths dsin() для создания значения между -1 и 1 с помощью переменной timer, а затем применяем ее к переменным scale. После размещения нескольких экземпляров в комнате и нажатия кнопки Play вы должны увидеть, как экземпляры масштабируются вверх и вниз от масштаба 0 до масштаба 2, а затем обратно.

-

GML VisualSet Variable Example

-

И последнее... измените раздел " image_yscale" на " 1 - _val" и посмотрите, что получится!

-

-
-

-

Приведенные выше примеры иллюстрируют лишь некоторые из множества способов манипулирования объектом sprite, когда GameMaker рисует по умолчанию, но как быть, если вы хотите нарисовать несколько объектов? В таких случаях вам необходимо использовать событие Draw Event, чтобы явно указать GameMaker, что рисовать, что мы и сделаем в следующих примерах.

-

Рисование двух (или более) Sprites вместе

-
-

Для этого примера вам понадобятся два sprites и один объект. Назовите объекты sprites " spr_One" и " spr_Two", затем установите начало координат объекта " spr_One" в центр, а для объекта " spr_Two" установите начало координат в левую среднюю часть:

-

Назначьте первый sprite (" spr_One" с центром начала координат) созданному вами объекту, а затем добавьте событие Create Event. В событии Create Event добавьте следующие GML Visual или GML:

-

GML VisualActions To Change Sprite Scale

-

draw_angle = 0;

-

Мы собираемся использовать эту переменную для поворота " spr_Two" во времени и нарисовать его наложенным на sprite, присвоенный объекту (" spr_One"). Для этого нам нужно добавить к объекту событие Draw Event . Этим мы сообщаем GameMaker, что хотим взять на себя управление тем, что рисует объект, что означает, что наш код будет включать вызов draw_self() функция или Нарисовать себя действие. Это действие просто повторяет действия объекта при отсутствии события Draw Event и по умолчанию рисует назначенный sprite. Затем мы нарисуем второй sprite, который мы хотим использовать в качестве вращающегося оверлея sprite. Визуальные GML и GML выглядят следующим образом:

-

Play Icon

-

draw_self(); -
- draw_angle = draw_angle + 0.5; -
- draw_sprite_ext(spr_Two, 0, x, y, 1, 1, draw_angle, c_red, 1); -

-

Добавьте несколько экземпляров объекта в редактор комнаты, а затем нажмите кнопку Play в верхней части IDE. Если все прошло правильно, вы должны увидеть что-то вроде этого:

-

-

Прежде чем мы оставим этот пример, давайте немного подправим его, и вместо того, чтобы просто вращать " spr_Two", мы сделаем так, чтобы он указывал на позицию мыши. Для этого нам нужно изменить событие Draw Event GML Visual или GML, чтобы оно выглядело следующим образом:

-

Show Origins For Sprites

-

draw_self(); -
- draw_angle = point_direction(x, y, mouse_x, mouse_y); -
- draw_sprite_ext(spr_Two, 0, x, y, 1, 1, draw_angle, c_red, 1); -

-

Запустите проект снова, и на этот раз вы увидите нечто совсем другое!

-

Теперь sprite указывает на мышь независимо от того, куда вы ее переместили! Как видите, наслоение sprites - это отличный способ добавить детали к объекту или заставить что-то двигаться независимо от "базового" sprite, назначенного объекту, и это мощный инструмент, который вы, вероятно, будете часто использовать в своих собственных проектах.

-

-
-

Рисование вещей, отличных от спрайтов

-
-

В событии Draw Event можно рисовать не только sprites, но и другие объекты, например текст или фигуры. В этом примере мы будем использовать визуальную функцию GML или GML draw_self() для рисования объекта sprite, но мы также нарисуем некоторые другие вещи, начиная с текста. Для этого примера вам понадобится sprite и объект (с назначенным ему sprite ). В объекте сначала добавьте событие Create Event с этим GML Visual или GML:

-

Set Draw Angle Variable In DnD

-

name = choose("Fred", "Jonas", "Sharon", "Kate", "Frank", "John", "Monica", "Amanda"); -
- number = irandom(100); -

-

Все, что это делает, это говорит GameMaker выбрать одно из перечисленных имен и присвоить его переменной, а также сгенерировать случайное число от 0 до 100 для каждого экземпляра объекта. Мы хотим вывести эти значения на экран, поэтому для этого нужно добавить событие Draw Event и в него добавить следующее GML Visual или GML:

-

Draw Two Sprites With DnD

-

draw_self(); -
- draw_set_halign(fa_center); -
- draw_text(x, y + 32, "My name is " + name); -
- draw_text(x, y + 48, "My number is " + string(number)); -

-

В приведенном выше коде вы заметите, что мы используем string() функция или Число в строку для переменной "number", которую мы хотим нарисовать. Это связано с тем, что весь текст должен состоять из символов, а не из значений, и поэтому нам нужно использовать эту функцию/действие для преобразования значения числа в символы, которые мы хотим нарисовать. В данном случае мы берем сгенерированное нами случайное число и превращаем его в "строку" символов, которые можно нарисовать. Также обратите внимание, что мы установили выравнивание текста. Это просто указывает GameMaker, где начать рисовать текст относительно заданной позиции, и в данном случае мы хотим, чтобы текст был выровнен по оси x.

-

Добавьте несколько экземпляров объекта в редактор комнаты, а затем нажмите кнопку Play в верхней части страницы IDE. Вы должны увидеть нечто подобное:

-

Play Icon

-

Во всех примерах до сих пор мы рисовали sprite, назначенный экземпляру, но это не всегда так. В событии draw можно нарисовать все, что угодно, независимо от назначенного sprite. Чтобы проиллюстрировать этот момент, мы изменим имеющийся код, удалив вызов draw_self() и заменив его функцией для рисования цветного эллипса, как показано ниже:

-

Animation Drawing Two Sprites Together

-

draw_ellipse_colour(x - 50, y - 32, x + 50, y + 32, c_fuchsia, c_lime, false); -
- draw_set_halign(fa_center); -
- draw_text(x, y + 32, "My name is " + name); -
- draw_text(x, y + 48, "My number is " + string(number)); -

-

Запустите проект снова, и вы должны увидеть следующее:

-

Edited Draw Code For Drawing Two Sprites With DnD

-

Важно отметить, что даже если мы не рисуем назначенный sprite, он все равно будет использоваться для обнаружения столкновений. Таким образом, пока вы рисуете что-то одно, столкновения все равно будут рассчитываться на основе назначенного sprite, как если бы он был размещен в комнате вместе с экземпляром, даже если он не виден. Это довольно удобно, так как позволяет рисовать разные sprites, но сохранять единую маску столкновений на основе назначенного sprite. Также обратите внимание, что вы все еще можете применять различные преобразования, такие как X/Y масштаб, и столкновения будут основываться на измененном размере, даже если ничего не будет нарисовано, чтобы показать это.

-
-

-

-

Уровень графического интерфейса

-

В начале страницы мы упоминали, что будем говорить о событии Draw GUI Event, а также о событии Draw Event, поэтому давайте рассмотрим их сейчас. Событие Draw GUI Event работает с так называемым слоем GUI Layer, который представляет собой специальный слой рисунка фиксированной ширины и высоты, который рисуется поверх экземпляров в комнате. Слой GUI хорош тем, что он не перемещается вместе с камерой комнаты, поэтому это идеальное место для добавления статичных элементов GUI, таких как очки, шкалы здоровья и другая информация, которую ваша игра должна передать пользователю. Более подробную информацию о слое GUI можно найти в разделе " События рисо вания" руководства.

-

ПРИМЕЧАНИЕ: Комнаты могут быть больше, чем размер экрана, поэтому вы можете иметь большие уровни, по которым игрок может перемещаться. Это означает, что в редакторе комнат (или в коде) вам нужно определить камеру , которая будет следовать за действием вашей игры. По сути, это способ настройки фиксированной области экрана для отображения различных частей большой комнаты в зависимости, например, от положения игрока в комнате, и он используется во многих играх. Вспомните, как в классических играх, таких как Mario или Zelda, взгляд всегда следует за главным героем. Это делается с помощью камер. Для получения дополнительной информации см. раздел Свойства комнаты в разделе "Редактор комнат" руководства.

-

Все следующие примеры будут использовать событие Draw GUI, поэтому вам нужно будет создать объект и добавить к нему это событие. Обратите внимание, что объекту не нужно назначать sprite, так как мы не хотим рисовать что-либо по умолчанию, и нам не нужно, чтобы он обнаруживал столкновения. Подобные объекты, предназначенные только для рисования или управления определенными аспектами игры, часто называют объектами-контроллерами. Также обратите внимание, что во всех примерах мы будем использовать один и тот же объект, поэтому мы рекомендуем вам проходить их один за другим (хотя это не является строго необходимым).

-

Текст рисунка

-
-

При рисовании на слое GUI левый верхний угол является исходным положением, справа - +X, внизу - +Y. Это делает позиционирование текста и графики очень простым, как вы увидите в этом примере. Все, что мы собираемся сделать здесь, это нарисовать значение, которое представляет собой счет игрока, поэтому в нашем объекте нам нужно добавить событие Create Event для инициализации переменной для хранения этого значения, как показано ниже:

-

Animation Drawing Two Sprites Pointing At Mouse

-

player_score = 0;

-

Мы также хотим добавить к объекту событие Keyboard Down <Space>, поскольку мы будем использовать его для увеличения счета каждый раз, когда вы нажимаете клавишу Space.

-

Setting Variables Using DnD

-

В этом случае добавьте следующее:

-

Drawing Text Using DnD

-

var _val = irandom(100); -
- player_score = player_score + _val; -

-

Наконец, давайте нарисуем значение оценки в событии Draw GUI, вот так:

-

В этом случае добавьте следующее:

-

Play Icon

-

draw_set_halign(fa_left); -
- draw_set_colour(c_yellow); -
- draw_text(32, 32, "SCORE:"); -
- draw_set_colour(c_white); -
- var _str = string(player_score); -
- draw_text_transformed(32, 48, _str, 2, 2, 0); -

-

Вы заметите, что мы использовали жестко заданные (или фиксированные) значения для позиции x/y рисуемого текста, поскольку нам не нужно, чтобы он был относительно какого-либо экземпляра, так как мы рисуем на слое GUI. Мы также использовали функцию "set color", чтобы изменить цвет текста, а также функцию "transformed", чтобы сделать фактическое значение очков больше, что иллюстрирует, как можно настраивать текстовые элементы в собственных играх.

-

Добавьте один экземпляр этого объекта в комнату, а затем нажмите кнопку Play . Когда игра запустится, нажмите и отпустите клавишу <Space>, и вы увидите, что значение счета увеличивается.

-

Sprites Being Drawn Along With Text

-

-
-

Рисование спрайтов

-
-

В этом примере мы собираемся использовать слой GUI для рисования некоторых sprites. Наиболее очевидное применение для этого - нарисовать жизни игроков, так что давайте сделаем именно это! Для этого примера вам понадобится sprite, размер которого должен быть примерно 64x64 пикселя, но его не следует назначать объекту, так как мы будем рисовать его сами.

-

Для начала нам нужно добавить несколько новых переменных к объекту в событии Create (если вы делали предыдущий пример, добавьте следующие переменные ниже тех, что уже есть):

-

Drawing Shapes Along With Text Using DnD

-

player_lives = 3; -
- gui_w = display_get_gui_width(); -

-

В этом коде мы инициализируем переменную для жизней игрока, но мы также создаем переменную для хранения ширины слоя GUI, чтобы мы могли правильно расположить все относительно правой части экрана. Мы могли бы просто ввести значение в код и использовать его, но это означало бы, что если мы изменим размер комнаты или добавим камеры и т.д., то нам придется пройтись по коду и изменить значение везде. Использование display_get_gui_width() означает, что нам не нужно беспокоиться о любых будущих изменениях, так как код будет автоматически адаптироваться к любому размеру слоя GUI.

-

Далее мы хотим добавить к объекту событие Keyboard Pressed <Enter> Event, поскольку мы будем использовать его для изменения количества жизней при каждом нажатии клавиши Enter:

-

Example Of Drawing Shapes And Text Together

-

В этом случае добавьте следующее:

-

Draw GUI Event In An Object

-

player_lives = player_lives - 1; -
-
- if player_lives < 0 -
- { -
- player_lives = 3; -
- } -

-

Наконец, нам нужно нарисовать sprites на экране. Для этого мы будем использовать цикл " for" (информация об использовании GML здесь, а для GML Visual здесь), а также переменную GUI width, чтобы расположить все в правом верхнем углу экрана. Итак, добавьте это в событие Draw Gui Event (после любых других действий, которые могли быть в предыдущих примерах):

-

Defining A Variable Using DnD

-

for (var i = 0; i < player_lives; i += 1) -
- { -
- var _xx = gui_w - 48 - (i * 70); -
- draw_sprite(spr_Heart, 0, _xx, 48); -
- } -

-

Если вы еще не добавили экземпляр этого объекта в комнату, добавьте его сейчас (только один!), а затем нажмите кнопку Play . После запуска игры нажимайте клавишу <Enter> несколько раз, чтобы увидеть, как меняются жизни.

-

Adding A Space Key Pressed Event

-

Прежде чем оставить этот пример, поэкспериментируйте с количеством жизней и посмотрите, что получится. Сейчас оно установлено на 3, но измените событие Create и событие Key Pressed, чтобы установить значение на 5, или 10... если вы все сделали правильно, то код должен адаптироваться и нарисовать их все правильно!

-

-
-

Рисование панели здоровья

-
-

Последний пример посвящен рисованию панели здоровья на слое GUI. Это можно сделать разными способами, но в GameMaker есть встроенная функция, специально предназначенная для создания полос здоровья, поэтому мы будем использовать именно ее, хотя вы можете создать свою собственную, используя sprites или фигуры. Для начала, как и раньше, нам нужно инициализировать переменную для хранения значения здоровья, поэтому добавьте следующий GML Visual или GML в событие Create объекта (после любого другого кода, который уже может там быть):

-

GML VisualActions In The Space Key Event

-

player_health = 100;

-

Мы хотим использовать клавиши со стрелками для изменения значения здоровья вверх или вниз в зависимости от того, какая клавиша со стрелкой нажата, и мы могли бы сделать это, добавив два события Keyboard Pressed <Arrow>, однако, вероятно, проще использовать событие Step Event и некоторый код для проверки наличия клавиш, поэтому давайте добавим событие Step Event сейчас с помощью следующего GML Visual или GML:

-

Drawing Text To The GUI Layer Using DnD

-

if keyboard_check(vk_up)
- {
-     if (player_health < 100)
-     {
-         player_health = player_health + 1;
-     }
- }
-
- if (keyboard_check(vk_down))
- {
-     if (player_health > 0)
-     {
-         player_health = player_health - 1;
-     }
- } -

-

После этого мы можем приступить к рисованию панели здоровья, что делается в событии Draw GUI, добавляя следующее (после всего остального, что уже есть):

-

Play Icon

-

var _xx = display_get_gui_width() / 2;
-
- draw_healthbar(_xx - 50, 24, _xx + 50, 40, player_health, c_black, c_red, c_lime, 0, true, true); -

-

Добавьте экземпляр этого объекта в комнату, если вы еще не сделали этого (только один!), а затем нажмите кнопку Play . После запуска игры нажимайте клавиши <Up Arrow> и <Down Arrow> несколько раз, чтобы увидеть, как меняется здоровье.

-

Animation Showing Text Being Drawn To The GUI Layer

-
-

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Quick_Start_Guide/Movement_And_Controls.htm b/Manual/contents/Quick_Start_Guide/Movement_And_Controls.htm index f574af24d..e69de29bb 100644 --- a/Manual/contents/Quick_Start_Guide/Movement_And_Controls.htm +++ b/Manual/contents/Quick_Start_Guide/Movement_And_Controls.htm @@ -1,212 +0,0 @@ - - - - - - Движение и управление - - - - - - - - - - - -

Движение и управление

-

В предыдущем разделе этого краткого руководства были приведены примеры рисования объектов на экране, но просто рисовать объекты не очень хорошо, если вы не можете их перемещать... поэтому в этом разделе мы приведем несколько примеров перемещения объектов, а также несколько основных схем управления для различных типов игр. Все примеры приведены с использованием GML Visual, а также GML Code, поэтому вы можете использовать тот вариант, с которым вам удобнее работать. Обратите внимание, что мы не будем объяснять здесь все слишком подробно, поскольку мы хотим, чтобы вы как можно быстрее приступили к созданию вещей, поэтому мы рекомендуем вам изучать все ссылки по ходу работы и использовать функцию "поиск" в руководстве для поиска дополнительной информации о том, в чем вы не уверены.

-

Прежде чем двигаться дальше, вы, возможно, захотите создать новый проект (либо GML, либо GML Visual) на Стартовой странице, добавить (или создать) несколько sprites, а также объект или два - поскольку мы дадим вам некоторый код, который вы сможете протестировать с их помощью - и убедиться, что в проекте есть комната для размещения экземпляров. Не слишком заботьтесь о том, как выглядит созданный вами sprites, так как подойдет даже простой белый квадрат, и как только вы все подготовите, можете приступать к работе над примерами, перечисленными ниже.

-

-

Двигайтесь по направлению к мыши

-
-

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

-

Для начала откройте объект, присвойте ему адрес sprite, а затем назначьте ему глобальное событие Left Mouse Down:

-

LMB Icon

-

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

-

Adding The Mouse Left Button Down Event

-

move_towards_point(mouse_x, mouse_y, 2);

-

Здесь мы указываем экземпляру двигаться к позиции на экране, в данном случае к позиции "mouse_x" и "mouse_y" ("mouse_x" и "mouse_y" являются встроенными переменными, которые всегда хранят текущую позицию курсора мыши). Визуал GML делает это путем установки "direction" и " speed" Переменные экземпляра, в то время как GML делает это с помощью функции move_towards_point() (она также устанавливает переменные speed и direction , только в одной, простой в использовании функции).

-

Поместите экземпляр этого объекта в комнату и нажмите кнопку Play , затем щелкните по комнате, чтобы заставить объект двигаться в направлении мыши:

-

Отлично! Экземпляр объекта теперь перемещается в направлении того места, где вы щелкнули мышью, и если вы удерживаете кнопку нажатой, экземпляр будет просто следовать за курсором мыши. Однако есть проблема... После того, как вы щелкните один раз и отпустите кнопку, объект продолжит движение и в конце концов покинет комнату! Есть несколько способов исправить это, и выбор того или иного зависит от того, что вы хотите сделать, но самым простым на данный момент является простое добавление события Global Mouse Button Released, поэтому добавьте его к объекту и дайте ему следующий код:

-

GML VisualTo Move Instance Towards Mouse

-

speed = 0;

-

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

-

Прежде чем мы оставим этот пример, необходимо решить еще один вопрос... Если нажать и удерживать кнопку мыши, но не перемещать курсор, то экземпляр будет двигаться к курсору, а затем "вибрировать" вокруг него. Это происходит потому, что экземпляр движется быстрее, чем на 1 пиксель за раз, и поэтому "перебегает" позицию, а затем пытается вернуться назад, затем снова перебегает и т.д... (сделайте скорость движения 5 или что-то вроде этого, чтобы увидеть проблему, если она не очевидна сразу).

-

Чтобы решить эту проблему, нам нужно добавить событие Step Event к объекту с помощью этого кода:

-

Play Icon

-

var _dist = point_distance(x, y, mouse_x, mouse_y);
-
- if (_dist <= speed)
- {
-     speed = 0;
- } -

-

Здесь мы просто проверяем расстояние от экземпляра до позиции мыши, и если оно равно или меньше текущей скорости, мы устанавливаем скорость на 0. Это заставляет экземпляр останавливаться, когда он достаточно близко к позиции мыши, и мы не получаем этой неприятной проблемы "вибрации".

-

-
-

4-х и 8-ми стороннее движение с помощью клавиатуры

-
-

Всамом начале этого руководства мы показали вам следующее действие и код для перемещения экземпляра вправо на два пикселя каждый игровой шаг:

-

LMB Icon

-

x = x + 2;

-

Этот тип перемещения называется позиционным , поскольку мы, по сути, поднимаем экземпляр и помещаем его в новое положение каждый раз, когда выполняется код. В этом примере мы покажем, как использовать этот тип движения для перемещения экземпляра в четырех направлениях: вверх, вниз, влево и вправо.

-

Для начала откройте объект и присвойте ему адрес sprite. Теперь мы могли бы добавить различные события клавиатуры в этот момент и в каждом из них заставить экземпляр двигаться в нужном направлении, однако мы хотим, чтобы игрок мог двигаться только в одном направлении за раз, и сделать это с помощью только событий клавиатуры немного сложнее, чем с помощью кода. Вместо этого мы будем использовать событие Step Event - которое вы должны добавить сейчас к объекту - со следующими действиями или кодом, чтобы использовать клавиши со стрелками для перемещения:

-

Animation Of Instance Moving Towards Mouse

-

if keyboard_check(vk_left)
- {
-     x = x - 2;
- }
- else if (keyboard_check(vk_right))
- {
-     x = x + 2;
- }
- else if (keyboard_check(vk_up))
- {
-     y = y - 2;
- }
- else if (keyboard_check(vk_down))
- {
-     y = y + 2;
- }

-

Мы используем структуру " if... else if... else if...", чтобы гарантировать, что объект будет двигаться только в одном направлении за один раз, поэтому объект должен иметь возможность двигаться только вверх, вниз, влево или вправо, но не по диагонали. Поместите экземпляр объекта в комнату и нажмите кнопку Play , чтобы протестировать его прямо сейчас! Если все прошло правильно, у вас должно получиться что-то вроде этого:

-

GML VisualTo Set The Instance Speed

-

Мы можем легко модифицировать этот код для преобразования 4-стороннего движения в 8-стороннее... просто удалите команды " else" из блоков кода, чтобы все выглядело следующим образом:

-

Play Icon

-

if keyboard_check(vk_left)
- {
-     x = x - 2;
- }
- if (keyboard_check(vk_right))
- {
-     x = x + 2;
- }
- if (keyboard_check(vk_up))
- {
-     y = y - 2;
- }
- if (keyboard_check(vk_down))
- {
-     y = y + 2;
- }

-

Теперь, когда вы нажмете кнопку Play , это будет выглядеть примерно так:

-

Animation Showing Instance Vibrating

-

И последнее, на что стоит обратить внимание пользователям, кодирующим с помощью GML... При использовании GML Visual вы можете выбрать клавишу клавиатуры, которую вы хотите использовать, из выпадающего списка, но с GML все не так просто. Существует ряд констант клавиатуры, которые вы можете использовать - например, константы клавиш со стрелками, показанные в коде выше, - но нет констант для буквенно-цифровых клавиш. Они обрабатываются несколько иначе и требуют использования функции ord(). В приведенном ниже коде показано, как это будет работать, если вместо клавиш со стрелками использовать WASD:

-

if keyboard_check(ord("A"))
- {
-     x = x - 2;
- }
- if (keyboard_check(ord("D")))
- {
-     x = x + 2;
- }
- if (keyboard_check(ord("W")))
- {
-     y = y - 2;
- }
- if (keyboard_check(ord("S")))
- {
-     y = y + 2;
- }

-

-
-

Движение геймпада

-
-

Мы рассмотрели движение мыши и клавиатуры, а значит, пришло время рассказать о движении геймпада . Теперь мы не будем рассматривать d-pad, поскольку он работает точно так же, как и клавиатура (просто замените функции клавиатуры в примере выше на gamepad_button_check() или If Gamepad button Down), поэтому в этом примере мы рассмотрим использование аналогового стика для перемещения.

-

Для начала нам нужно определить используемый геймпад. Геймпадам присваивается значение ID от 0 до 11, поэтому мы будем использовать цикл " for" для определения ID всех подключенных геймпадов и сохранения этого значения ID в переменной для дальнейшего использования. Поскольку мы хотим определить только первый подключенный геймпад, а не все, мы будем использовать команду " break" после обнаружения геймпада, чтобы он "прервал" цикл (например, если первый подключенный геймпад имеет ID 4, то цикл будет выполняться только 5 раз, проверяя значения ID 0 - 4, а затем выходя из цикла при обнаружении геймпада). Итак, создайте (или откройте) объект, присвойте ему sprite, а затем добавьте событие Create Event со следующими параметрами:

-

GML VisualActions For The Step Event

-

gamepad_id = -1;
-
- for (var i = 0; i < 12; i += 1;)
- {
-     if (gamepad_is_connected(i))
-     {
-         gamepad_id = i;
-         gamepad_set_axis_deadzone(gamepad_id, 0.2);
-
-         break;
-     }
- } -

-

Обратите внимание, что в приведенном выше коде мы установили deadzone для геймпада. Это связано с тем, что аналоговые стики на разных моделях геймпадов имеют разную чувствительность, и иногда они могут быть настолько чувствительными, что если не установить мертвую зону, то они могут вызывать нежелательные движения в играх. Поэтому мы устанавливаем мертвую зону на значение 0,2, чтобы указать GameMaker игнорировать любые значения стиков геймпада ниже этого абсолютного значения.

-

Чтобы добавить фактическое движение, нам понадобится событие Step Event, поэтому добавьте его сейчас и дайте ему следующий адрес GML Visual или GML:

-

GML VisualExample

-

if gamepad_id > -1
- {
-     var _h = gamepad_axis_value(gamepads[0], gp_axislh);
-     var _v = gamepad_axis_value(gamepads[0], gp_axislv);
-     x += _h * 4;
-     y += _v * 4;
- }

-

Здесь мы проверяем левый стик на горизонтальное или вертикальное движение. Функции оси возвращают значение между -1 и 1, поэтому для горизонтальной оси -1 - это движение влево, 0 - не движение и 1 - движение вправо, а для вертикальной оси -1 - вверх, 0 - не движение и 1 - вниз. Обратите внимание, что значения находятся в диапазоне от -1 до 1, поэтому, например, горизонтальная ось может вернуть значение 0,5, что означает, что стик находится на полпути между положением "покоя" и полным отклонением вправо. По этой причине мы умножаем значение на 4 (на самом деле можно умножать на любое значение, в зависимости от скорости, с которой должен двигаться экземпляр) - это означает, что скорость экземпляра будет меняться в зависимости от того, насколько сильно было сделано движение по оси стика.

-

Поместите экземпляр этого объекта в комнату и нажмите кнопку Play . а затем передвигайтесь с помощью левого стика подключенного геймпада. Вы должны увидеть что-то вроде этого:

-

GML VisualStep Event Movement Actions

-

-
-

Усовершенствованное 8-стороннее движение

-
-

В этом последнем примере мы рассмотрим наш код 8-стороннего движения и решим проблему, которая заключается в том, что диагональное движение на самом деле быстрее, чем движение вверх/вниз/влево/вправо. Это происходит потому, что при движении по диагонали вы двигаетесь вдоль гипотенузы прямоугольного треугольника, созданного значениями перемещений x/y:

-

Play Icon

-

Чтобы было понятнее, что происходит, давайте уберем весь текст и sprites и просто покажем ту же линию движения, повернутую на 45°, чтобы она была горизонтальной:

-

Animation Showing 4-Way Keyboard Movement

-

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

-

Чтобы справиться с этим, нам придется хранить входные значения от нажатых клавиш независимо друг от друга в переменных, а затем проверять их и перемещаться в соответствии с комбинацией нажатых клавиш. Итак, для этого вам понадобится объект с назначенным sprite, и вам нужно будет дать ему событие Step Event со следующими действиями или кодом:

-

GML VisualStep Event Movement Actions

-

ПРИМЕЧАНИЕ Мы разделили визуальные действия выше на две колонки, чтобы их было легче визуализировать, но в визуальном редакторе они будут располагаться последовательно.

-

var _left = keyboard_check(vk_left);
- var _right = keyboard_check(vk_right);
- var _up = keyboard_check(vk_up);
- var _down = keyboard_check(vk_down);
- var _hspd = _right - _left;
- var _vspd = _down - _up;

-

Нам нужно будет добавить еще немного кода для реального перемещения, но прежде давайте немного объясним это. Мы хотим преобразовать движения влево/вправо/вверх/вниз в эквивалентные значения скорости по горизонтали и вертикали, поэтому для этого мы получаем значение каждой клавиши, а затем выполняем некоторые основные математические операции, чтобы получить значения скорости. Это работает потому, что если клавиша нажата, то действие или функция проверки вернет "1", а если она не нажата, то функция вернет 0. Так, например, если нажата правая клавиша, то для " _hspd" вы получите "1 - 0 = 1", а если левая, то для " _hspd" вы получите "0 - 1 = -1" (а если они обе нажаты, то будет "1 - 1 = 0", так что экземпляр не будет двигаться). Помните, что в комнате GameMaker для перемещения вправо мы прибавляем к позиции x , а для перемещения влево - вычитаем, поэтому этот код даст нам положительное или отрицательное значение, которое мы можем прибавить или вычесть для перемещения по горизонтали или вертикали в зависимости от клавиатурного ввода.

-

Теперь мы можем добавить код, который фактически перемещает экземпляр, поэтому - все еще в событии Step Event, и после вышеуказанного кода - добавьте следующее:

-

Play Icon

-

if (_hspd != 0 || _vspd != 0)
- {
-     var _spd = 4;
-     var _dir = point_direction(0, 0, _hspd, _vspd);
-     var _xadd = lengthdir_x(_spd, _dir);
-     var _yadd = lengthdir_y(_spd, _dir);
-     x = x + _xadd;
-     y = y + _yadd;
- }

-

Приведенный выше код сначала проверяет, истинно ли одно из двух выражений, т.е. не равны ли 0 переменные горизонтальной или вертикальной скорости. Обратите внимание, что в проверке " if" GML используется символ " ||". В программировании это означает " or", поэтому - на простом языке - вы проверяете

-

if the variable _hspd does not equal zero
- or
- if the variable _vspd does not equal zero -

-

Таким образом можно объединить несколько выражений в проверки " if", и существует несколько различных способов оценки этих выражений (для получения дополнительной информации см. раздел " Выражения" здесь).

-

Следующий раздел кода хранит значение фактической скорости движения в переменной, а затем получает направление, используя значения _hspd и _vspd , которые могут быть -1, 0 или 1. Функция направления проверяет направление от (0, 0), так как мы не используем комнатные координаты, а хотим, чтобы она оценивала направление от 0° до 360° на основе значений переменных. Следующая диаграмма иллюстрирует происходящее лучше, чем попытка объяснить это словами:

-

Animation Showing 8-Way Keyboard Movement

-

ПРИМЕЧАНИЕ Направление в GameMaker рассчитывается против часовой стрелки, поэтому 0° и 360° находятся справа, 90° - вверх, 180° - вправо и 270° - вниз.

-

Наконец, мы используем lengthdir_x() и lengthdir_y() для фактического перемещения переменной. Это вектор функции, которые принимают длину (расстояние) и направление, а затем вычисляют новое положение на заданной оси на основе этих значений (более подробное объяснение см. в описании функций).

-

Это очень много, и не волнуйтесь, если вы еще не все поняли! Со временем вы поймете! Теперь осталось только добавить экземпляр этого объекта в комнату, а затем нажать кнопку Play . и вы получите шелковисто-гладкое движение в 8 направлениях без каких-либо проблем, связанных с движением по диагонали:

-

Getting Gamepad ID Using DnD

-
-

-

Мы надеемся, что эти примеры - и предыдущие примеры для рисования - достаточно понятны, чтобы начать создавать свои собственные проекты! На последней странице этого Краткого руководства вы найдете краткое изложение того, что вы узнали, а также ссылки на дополнительные учебные материалы.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Quick_Start_Guide/Objects_And_Instances.htm b/Manual/contents/Quick_Start_Guide/Objects_And_Instances.htm index 4808e7f81..e69de29bb 100644 --- a/Manual/contents/Quick_Start_Guide/Objects_And_Instances.htm +++ b/Manual/contents/Quick_Start_Guide/Objects_And_Instances.htm @@ -1,97 +0,0 @@ - - - - - - Объекты и экземпляры - - - - - - - - - - - -

Объекты и экземпляры

-

С помощью активов, которые вы уже видели, вы можете добавить несколько красивых изображений и звуков в браузер игровых активов, но они еще ничего не делают в самой игре! Для этого нам нужен самый важный актив в GameMaker- актив объекта . Объекты - это особый актив, который мы используем для управления аспектами игры и для выполнения определенных действий. Чаще всего они связаны с sprite, чтобы вы могли видеть их в игровых комнатах, но иногда они используются как "закулисные" объекты контроллера , чтобы делать такие вещи, как отслеживание статистики, установка тайминга для cut-scenes и т.д. ... Объектам можно придать поведение, они могут реагировать на определенные события и друг на друга, и большинство вещей, которые вы видите в игре, основаны на объектах и их взаимодействии с пользователем и друг с другом.

-

Мы не можем говорить об объектах, не говоря об экземплярах. В игре, созданной с помощью GameMaker, персонажи, монстры, шары, стены и т.д., которые вы видите в игре, фактически все считаются экземплярами. Экземпляр - это, по сути, "копия" объекта, которая находится в браузере активов и затем помещается в комнату (считайте, что объекты - это шаблоны для экземпляров). Поэтому, когда мы говорим о том, что что-то влияет на экземпляр или изменяет его, мы имеем в виду, что одна конкретная копия объекта в комнате подвергается воздействию, а все остальные - нет, но когда мы говорим о влиянии на объект или его изменении, мы имеем в виду, что все, что мы делаем с ним, будет отражено во всех экземплярах, созданных с этого момента. Итак, объект - это шаблон для экземпляра, а экземпляр - это то, что мы размещаем в комнате, чтобы создать нашу игру.

-

Чтобы создать новый актив-объект, нужно просто щелкнуть правой кнопкой мыши на папке активов Objects и выбрать Create (или щелкнуть правой кнопкой мыши в любом месте браузера активов и выбрать Create Object).

-

Icon RMB

-

Это окно редактора объектов, в котором отображаются текущие свойства объекта, и первое, что вы должны сделать, это назвать объект, опять же используя префикс типа " obj_" или какой-либо другой идентификатор. Вообще, чтобы объект мог рисовать что-либо и регистрировать столкновения с экземплярами других объектов, ему должен быть присвоен адрес sprite, который добавляется с помощью кнопки . Откроется проводник активов, где вы можете выбрать sprite для использования (вы также можете перетащить sprites из проводника активов и бросить их в редактор объектов, чтобы назначить их):

-

The Object Editor

-

Если у вас еще нет подходящего sprite, вы можете нажать на кнопку New Sprite , чтобы создать новый актив sprite и отредактировать его по своему усмотрению, точно так же, как если бы вы создали актив с помощью стандартных опций создания sprite, только теперь он будет автоматически назначен объекту, который был открыт, когда вы начали его создавать. После выбора sprite вы также можете нажать на кнопки Edit Sprite или Edit Image , чтобы отредактировать изображения самого sprite или актива sprite. Это может быть быстрее, чем сначала найти sprite в браузере активов, а затем указать, что вы хотите его отредактировать.

-

После добавления или создания sprite вы можете изменить некоторые другие свойства объекта, например, сделать его видимым или нет, или какую маску столкновений он должен иметь. Для простых игр вам, вероятно, не нужно ничего менять, и теперь вы можете перейти к добавлению событий к объекту.

-

События - это незаметные моменты в игровом цикле, когда события происходят в соответствии с тем, что вы для них запрограммировали. GameMaker работает с циклами этих событий - с момента начала работы над комнатой до момента ее завершения происходит игровой цикл, в котором на каждом шаге запускается серия событий, и вы можете разместить в своих экземплярах GML код или GML Visual действия, которые реагируют на эти события ( шаг - это момент игрового времени, регулируемый настройками скорости игры - также называемый "кадром").

-

Чтобы добавить событие, нажмите на кнопку Добавить событие:

-

Add Sprite Icon

-

Выше вы можете видеть все различные категории событий, некоторые из которых содержат другие подкатегории. Мы не будем рассматривать здесь все события, но вкратце расскажем о пяти наиболее важных из них:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The Asset ExplorerСоздать событиеЭто событие происходит при первом создании экземпляра объекта и является самым первым, что происходит в экземпляре, который был помещен в комнату через редактор комнат при входе в комнату. Это означает, что данное событие является идеальным местом для инициализации переменных, запуска временных линий, установки путей и т.д... и всего остального, что обычно нужно сделать только один раз или только когда экземпляр впервые появляется в комнате.
LMB IconШаговое мероприятиеGameMaker делит игровое время на шаги, а скорость игры определяет, сколько таких шагов должно быть в секунду. Шаг, по сути, представляет собой цикл, который постоянно выполняется со всеми событиями, проверяемыми и запускаемыми по мере необходимости во время игры, поэтому, как вы можете себе представить, событие Step Event - это событие, которое проверяется на каждом шаге игры, пока существует экземпляр. Обратите внимание, что категория Step Event имеет три подкатегории для "тонкой настройки" времени внутри экземпляра, но в целом вы будете чаще всего использовать главное событие Step Event.
New Sprite IconСобытие столкновенияОчевидно, что при создании игры очень важно знать, когда два (или более) экземпляра объекта столкнулись, и для этого у нас есть событие столкновения. Это событие, которое вы помещаете в объект и затем указываете, какой другой объект вы должны проверить на столкновения. После добавления события и выбора объекта для проверки вы можете добавить код GML или GML Visual для разрешения столкновения.
LMB IconНичейное событиеСуществует несколько различных событий рисования в категории событий рисования, но чаще всего используется то, которое находится вверху и называется просто "Draw". Это общее событие рисования будет вызываться, как и событие шага, каждый игровой кадр, но оно работает двумя разными способами. Первый - это когда вы не добавляете это событие к объекту... Если указанное событие Draw Event отсутствует, то GameMaker по умолчанию будет рисовать sprite, назначенный объекту, используя любые преобразования, которые были применены в других местах объекта (например, для изменения размера или альфа-смешивания), так что даже если в списке событий не указано событие Draw Event, оно все равно выполняется и будет рисовать на экране, когда экземпляр будет помещен в комнату. Второй способ работает, когда вы добавляете само событие и включаете в него любой GML или GML Visual. Добавление чего-либо в событие говорит GameMaker: " Я хочу управлять тем, что вы рисуете для экземпляров этого объекта", и это полностью отменяет рисование по умолчанию. Это означает, что вы можете иметь объект с назначенным sprite, затем установить событие draw на рисование текста, и sprite не будет нарисован, поскольку вы не сказали GameMaker нарисовать его, хотя текст будет нарисован.
Edit Sprite IconУничтожить событиеЭто событие является самым последним событием, которое выполняется при уничтожении экземпляра. Его часто упускают из виду при добавлении поведения к объектам, но оно может быть очень полезным - например, для создания эффектов взрыва или частиц при убийстве врага, или для повторного рождения нового экземпляра объекта в другой части комнаты, или даже для добавления очков к счету.
-

- For further information on all the different events, please see here. -

-

Более подробную информацию о различных мероприятиях можно найти здесь.

-

Затем можно нажать на событие в списке, чтобы добавить его к объекту.

-
-

При добавлении события откроется редактор GML Code или GML Visual, в зависимости от типа создаваемого события. В этом окне вы можете добавить код или действия, которые вы хотите выполнять каждый раз, когда это событие срабатывает в игровом цикле.

-

Edit Image Icon

-

Более подробную информацию об использовании GML в событиях объектов вы можете найти на двух страницах, приведенных ниже:

- -

Полное объяснение всех различных частей редактора объектов можно найти здесь:

- -

В следующей части этого руководства мы рассмотрим еще один тип ресурсов - последовательности...

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Quick_Start_Guide/Quick_Start_Guide.htm b/Manual/contents/Quick_Start_Guide/Quick_Start_Guide.htm index 1b0b01a9f..e69de29bb 100644 --- a/Manual/contents/Quick_Start_Guide/Quick_Start_Guide.htm +++ b/Manual/contents/Quick_Start_Guide/Quick_Start_Guide.htm @@ -1,50 +0,0 @@ - - - - - - Создание игры с помощью GameMaker - - - - - - - - - - - -

Краткое руководство пользователя

-

Добро пожаловать в Руководство по быстрому старту! Этот раздел руководства предназначен для ознакомления с наиболее важными аспектами GameMaker и покажет вам основы, чтобы вы могли как можно быстрее создавать игры. Руководство охватывает основные функции IDE, а также дает краткое введение в программирование, чтобы вы могли максимально быстро использовать возможности продукта, независимо от того, используете ли вы GML Code или GML Visual.

-

Чтобы проиллюстрировать рабочий процесс GameMaker и заставить вас сразу приступить к созданию чего-либо, мы подготовили это руководство, которое поможет вам пройти путь от самых основ того, что такое GameMaker и что такое программа, через создание общих активов и до того, как закодировать такие базовые вещи, как движение и счет.

-

Создание игр с помощью GameMaker - концептуально довольно простое и понятное дело, если следовать следующим общим шагам:

-
    -
  • Создание активов изображений (спрайты, наборы плиток, шрифты) и добавление их в браузер активов.
  • -
  • Создайте активы объектов для представления вещей, которые вы хотите использовать в своей игре, и назначьте им необходимые активы изображений.
  • -
  • Запрограммируйте эти объекты на выполнение определенных действий в ответ на конкретные события.
  • -
  • Добавьте экземпляры этих объектов в комнату , где они будут выполнять свои программы.
  • -
-

Мы рассмотрим специфику каждого из перечисленных пунктов на следующих страницах, но это общий порядок действий, необходимых для создания игры. Важно отметить, что основными "строительными блоками" для игры всегда будут sprites, объекты и комнаты, хотя существует ряд вспомогательных активов, которые также могут быть использованы для добавления дополнительной функциональности или поведения этих элементов (например, такие как шейдеры, или временные шкалы).

-

Теперь, прежде чем мы перейдем к более подробному объяснению каждой из этих вещей, мы быстро обрисуем, как GameMaker превратит вышеупомянутые строительные блоки в вашу игру. В основном, все происходит в так называемом игровом цикле, скорость которого измеряется в кадрах в секунду, а один "кадр" называется шагом в GameMaker. По умолчанию частота кадров в секунду (или FPS) равна 60, что означает, что за каждую секунду GameMaker будет запускать игровой цикл 60 раз, и на каждом шаге (цикле/кадре) будет происходить ряд событий, и игра будет развиваться.

-

Чтобы помочь понять это, представим, что у вас есть персонаж, которого вы хотите перемещать по игровой комнате. Вы создадите спрайт для этого персонажа, затем создадите объект и присвоите ему адрес sprite, а в объект добавите событие под названием Step Event. В этом событии вы прикажете ему переместиться вправо на 2 пикселя. Затем вы поместите экземпляр этого объекта в игровую комнату, и когда вы запустите игру, объект начнет двигаться вправо на 2 пикселя каждый шаг (событие Step Event выполняется раз в шаг игры), так что за 1 секунду объект переместится на 120 пикселей вправо.

-

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

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Quick_Start_Guide/Rooms.htm b/Manual/contents/Quick_Start_Guide/Rooms.htm index f0417b8e0..e69de29bb 100644 --- a/Manual/contents/Quick_Start_Guide/Rooms.htm +++ b/Manual/contents/Quick_Start_Guide/Rooms.htm @@ -1,117 +0,0 @@ - - - - - Номера - - - - - - - - - - - -

Номера

-

Все игры, которые вы создаете в GameMaker, должны иметь хотя бы одну комнату для запуска (но могут иметь и много, много других), а комната - это просто пространство, где вы размещаете экземпляры объектов, составляющих вашу игру, а также плитки и любые другие графические ресурсы. - Когда вы впервые создаете комнату в браузере активов, перед вами открывается новая рабочая область, в которой вы можете редактировать ее. Редактор комнат рабочая область, в которой можно редактировать ее свойства, - примерно так:

-

The Room Editor

-

По умолчанию инструменты комнаты будут расположены слева, с тремя основными разделами:

-
    -
  • Редактор слоев: Все в комнате располагается на слоях, и существуют различные типы слоев, которые вы можете выбрать (подробнее об этом позже). Слои упорядочены по глубине , и эта глубина определяет порядок, в котором - содержимое слоев будет выводиться на экран при запуске игры. Глубина упорядочивается от наибольшей к наименьшей, так что чем меньше глубина, тем ближе к "камере", а чем больше глубина, тем дальше. Например, слой с глубиной - глубиной -300 будет отображаться поверх слоя с глубиной -100, а слой с глубиной 1000 будет отображаться под всем, что имеет глубину меньше этой. Обратите внимание, что по умолчанию GameMaker упорядочивает глубину слоев в соответствии с позицией - в редакторе слоев, и вы можете перетаскивать слои с помощью мыши, чтобы изменить их порядок, и GameMaker изменит порядок глубин в соответствии с этим.
  • -
  • Свойства слоя: Каждый слой, который вы добавляете в комнату, имеет свои собственные свойства, и эти свойства меняются в зависимости от типа слоя. В этом окне можно изменить эти свойства и отредактировать, как будет отображаться слой. - рендеринга.
  • -
  • Свойства комнаты: Комнаты также имеют ряд свойств, и их можно задать здесь. Здесь можно задать такие параметры, как размер комнаты, активные порты обзора камеры и некоторые другие.
  • -
-

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Фоновый слойФоновый слой - это слой, который может быть заполнен одним цветом или одним изображением. Его можно перемещать и позиционировать в пределах комнаты, и у вас может быть несколько фоновых слоев. Обычно он используется, как следует из названия, - для создания постоянного фона для всех остальных слоев в комнате. По умолчанию новая комната всегда будет содержать фоновый слой, но вы можете удалить его, если он вам не нужен.
Уровень экземпляровСлой экземпляров - это место, где размещаются все экземпляры объектов, необходимых для игры. Чтобы добавить экземпляр в слой, просто щелкните на объекте в - браузере активов, а затем перетащите его в рабочую область редактора комнат. Когда вы отпустите кнопку мыши, экземпляр этого объекта будет добавлен в комнату. По умолчанию новая комната всегда будет содержать слой экземпляра, но вы можете удалить его, если он вам нужен. - если он вам не нужен.
LMB IconПлитка Слой картыПосле создания набора плиток необходимо добавить плитки в комнату, что делается путем создания слоя карты плиток. Слой карты плитки - это слой, позволяющий добавлять плитки из любого созданного вами набора плиток, который будет автоматически настроен на использование сетки размером с ячейки набора плиток. В каждую ячейку сетки можно добавить только одну плитку, поэтому если вам необходимо, чтобы несколько плиток занимали одно и то же пространство, то следует использовать несколько слоев карты плиток.
Слой путиСлой путей - единственный, который фактически не отображается при запуске игры. Этот слой является скорее "удобным" слоем для создания или редактирования активов Path , поскольку он позволяет добавлять или редактировать пути в реальном пространстве комнаты.
Слой активовИногда вы хотите получить красивый графический эффект, но не хотите накладных расходов на использование экземпляра или не нуждаетесь в том, чтобы он делал что-то, кроме рисования. Можно использовать карту плиток, но, учитывая, что карты плиток ограничены использованием сетки и только - одно изображение на ячейку сетки, они могут быть немного ограниченными. В этом случае можно использовать слой активов. Слой активов просто берет ресурс sprite и рисует его, используя параметры, которые вы задали при добавлении его в комнату. Sprites и - последовательности могут быть добавлены в этот слой так же, как экземпляры объектов добавляются в слой экземпляров, т.е. вы щелкаете на sprite в браузере активов, а затем - перетаскиваете его в рабочую область редактора комнаты.
Filter/Effect LayerThis layer applies a filter or effect to all the layers below it. Note that a single-layer effect can be applied to any layer via The Inspector.
UI LayerThis creates a global UI layer that is shared among rooms.
-

- -

-

Мы не будем здесь подробно рассказывать о редакторе помещений (для этого есть этот раздел руководства), но мы кратко объясним, как добавить экземпляры в слой экземпляров, поскольку вам нужно будет - поскольку это необходимо знать для следующего раздела Краткого руководства.

-

Чтобы добавить экземпляр в редактор комнаты, сначала нужно выбрать слой экземпляра в редакторе слоев слева (или создать его, если таковых нет). Затем вы можете перейти в Браузер активов и просто щелкнуть , перетащить оттуда нужный вам объект и бросить его в комнату в нужном вам месте, что добавит один экземпляр этого объекта в вашу игру:

-

-

Если вы хотите разместить несколько экземпляров в комнате, то можно выбрать объект в дереве ресурсов, а затем нажать и удерживать для предварительного просмотра ресурса, - а если дополнительно нажать левую кнопку мыши , то можно "закрасить" его в слой комнаты.

-

LMB Icon

-

Обратите внимание, что при добавлении активов в редактор комнаты им присваивается позиция, основанная на их положении по осям X и Y относительно начала комнаты. Начало комнаты - это позиция (0, 0), которая в GameMaker является верхним левым углом, - вправо - это +X, а вниз - +Y, например:

-

В приведенном выше примере экземпляр размещен в центре комнаты в позиции (X:512, Y:384). Также можно выйти за пределы - и иметь позиции, которые больше, чем длина оси комнаты, или даже меньше, чем начало комнаты - в этом случае координаты X/Y будут иметь отрицательные значения.

-

Более подробную информацию о редакторе помещений вы можете найти в следующем разделе руководства:

- -

На этом мы заканчиваем рассмотрение редактора комнат в этом кратком руководстве, и теперь вы должны знать достаточно, чтобы приступить к созданию sprites и объектов и проектированию комнат для них. В следующих разделах этого руководства будут рассмотрены некоторые основы программирования. - основы программирования, чтобы помочь вам на этом пути, начиная с собственно рисования объектов на экране.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Quick_Start_Guide/Sequences.htm b/Manual/contents/Quick_Start_Guide/Sequences.htm index 640c42102..e69de29bb 100644 --- a/Manual/contents/Quick_Start_Guide/Sequences.htm +++ b/Manual/contents/Quick_Start_Guide/Sequences.htm @@ -1,50 +0,0 @@ - - - - - - Последовательности - - - - - - - - - - - -

Последовательности

-

Последний актив, который мы рассмотрим в этом руководстве, прежде чем перейти к обсуждению того, как все это объединяется в редакторе помещений, - это актив " Последовательности ". Последовательность - это, по сути, коллекция других активов, которые собраны в одном месте и затем анимированы вместе. Окончательная анимация (последовательность) может быть добавлена к комнатам в вашей игре подобно инстансам.

-

Последовательности создаются с помощью Редактор последовательностей который открывается каждый раз, когда вы создаете новый актив последовательности в браузере активов:

-

Чтобы создать базовую последовательность, добавьте звук, sprite или экземпляр на холст последовательности, а затем расположите его в том месте, где он должен находиться в начале последовательности. При этом создается Отслеживание активов в панели дорожек , а также добавляет a ключевой кадр в Dope Sheet, чтобы показать продолжительность, в течение которой актив будет виден.

-

Время для последовательности задается в кадрах (что для экземпляров равно шагам, т.е. один кадр равен одному игровому шагу), и вы можете увидеть, что произойдет на любом данном кадре, перемещая последовательность головка воспроизведения на доп-листе. Положение головки воспроизведения также используется для добавления ключевых кадров - кадров, в которых вы хотите, чтобы какое-то состояние изменилось в начале или в конце. Ключевые кадры параметров хранятся на дорожки параметров для данного актива.

-

Таким образом, вы позиционируете актив и устанавливаете его масштаб, цвет и другие свойства в кадре 0 последовательности. Затем вы записываете клавиши параметров актива и перемещаете головку воспроизведения на кадр, где вы хотите установить следующее состояние актива (положение, цвет и т.д.). На этом кадре вы снова измените различные параметры и запишите ключи для них, а затем повторите этот процесс в течение всей последовательности. Когда вы нажмете кнопку воспроизведения последовательности, актив будет анимирован, при этом последовательность будет интерполироваться между различными состояниями параметров, что в итоге даст примерно такой результат:

-

Мы не будем вдаваться в подробности о том, как работают последовательности, но достаточно сказать, что они являются невероятно мощным инструментом для создания любых эффектов: от cut-scenes, меню, состояний персонажей и многого другого.

-

На странице, ссылка на которую приведена ниже, подробно описано, как использовать последовательности в своих играх:

- -

Теперь мы можем перейти к разговору о редакторе комнат, в котором все эти части вашей игры собираются вместе...

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Quick_Start_Guide/Summary.htm b/Manual/contents/Quick_Start_Guide/Summary.htm index 664cb610f..e69de29bb 100644 --- a/Manual/contents/Quick_Start_Guide/Summary.htm +++ b/Manual/contents/Quick_Start_Guide/Summary.htm @@ -1,62 +0,0 @@ - - - - - - Резюме - - - - - - - - - - - -

Резюме

-

Мы подошли к концу этого краткого руководства и надеемся, что вы получили достаточно знаний и уверенности, чтобы начать использовать GameMaker для создания собственных проектов! Если вы прошли через все страницы этого руководства, то теперь вы должны знать следующее:

-
    -
  • Как создавать спрайты и наборы плиток и редактировать их в редакторе изображений
  • -
  • Как создавать объекты и комнаты
  • -
  • Разница между объектом и экземпляром
  • -
  • Как GameMaker рисует предметы и как использовать событие Draw Event
  • -
  • Разница между событием Draw и событием Draw GUI
  • -
  • Как перемещать предметы в комнате
  • -
  • Основные понятия программирования, такие как переменные, функции и выражения
  • -
-

Вы прошли долгий путь за короткое время, но это еще не конец путешествия. В этом руководстве есть два обширных справочных раздела, в которых рассматриваются все аспекты работы с IDE и программирования с помощью GML Visual или GML, и мы настоятельно рекомендуем вам возвращаться к этим разделам всякий раз, когда вы в чем-то не уверены или хотите попробовать что-то новое:

- -

На стартовой странице вы также можете получить ряд обучающих материалов по GameMaker, в которых используются основные концепции, изученные здесь, для создания небольших и забавных игр, таких как Space Rocks.

-

За дополнительной технической помощью по таким вопросам, как настройка различных целевых платформ, вам следует обращаться в службу поддержки GameMaker, а компания GameMaker также ведет серию технических блогов, в которых освещаются всевозможные аспекты использования GameMaker, от самых базовых концепций до самых продвинутых техник, так что здесь найдется что-то для каждого. В частности, обратите внимание на следующую статью:

- -

Мы также хотели бы отметить, что у GameMaker есть собственные форумы под названием GMC ( Game Maker Community), которые управляются сообществом и полны полезных участников, готовых уделить немного своего времени, чтобы помочь вам в решении любых программных или технических вопросов, которые у вас могут возникнуть.

-

Наконец, в Интернете существует огромное количество ресурсов по GameMaker, поэтому всегда пробуйте искать информацию в браузере, если вы застряли или ищете учебники. Кроме того, существует множество активных сообществ на таких сайтах, как Reddit или Discord , где вы можете зарегистрироваться и принять участие.

-

Что бы вы ни делали, мы надеемся, что вы получите удовольствие от использования GameMaker, и если (когда!) вы сделаете игру и опубликуете ее, не забудьте оставить нам строчку, чтобы рассказать о ней для GameMaker Showcase!

-

Счастливой игры!

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Quick_Start_Guide/What_Is_Programming_.htm b/Manual/contents/Quick_Start_Guide/What_Is_Programming_.htm index 0ddd2e458..e69de29bb 100644 --- a/Manual/contents/Quick_Start_Guide/What_Is_Programming_.htm +++ b/Manual/contents/Quick_Start_Guide/What_Is_Programming_.htm @@ -1,149 +0,0 @@ - - - - - - Что такое программирование? - - - - - - - - - - - -

Что такое программирование?

-

В предыдущем разделе мы описали, как работает GameMaker для создания вашей игры, но независимо от sprites, объектов или комнат, которые вы добавили, ничего не произойдет, если вы не запрограммируете это. Но что такое программа?

-

В общем смысле программа - это просто набор инструкций (или заявление), которые вы даете компьютеру, чтобы он выполнил определенные задачи. Эти задачи могут быть самыми разными: от простого указания компьютеру нарисовать что-то на экране до вычисления значения на основе пользовательского ввода и последующей реакции на него, но во всех случаях это логическая структура, которая даст определенный результат. На предыдущей странице мы говорили о перемещении экземпляра объекта вправо на 2 пикселя, поэтому давайте посмотрим на программу, которая это сделает:

-

В GML Visual это будет выглядеть следующим образом:

-

GML VisualExample

-

А если использовать код GML, то это будет выглядеть следующим образом:

-

x = x + 2;

-

Чтобы понять, что происходит выше, мы должны сначала поговорить о Переменных, затем мы перейдем к обсуждению Функций и, наконец, Условий , поскольку эти три вещи, как правило, составляют основную часть любой программы.

-

-

Переменные

-
-

Переменные - это краеугольный камень программирования, наряду с функциями (которые мы рассмотрим вкратце в ближайшее время). Переменная - это просто именованное значение, и в приведенном выше случае переменная называется "x". Теперь "x" может быть любым значением, например -126, или 583, или даже 1,56378, но фактическое значение "x" не имеет значения, поскольку оно может меняться (отсюда и название "переменная"). Важно то, что мы берем "x" и прибавляем к нему 2. Стоит отметить, что в данном случае "x" - это встроенная переменная, то есть переменная, которая создается GameMaker для всех объектов, но вы можете создавать и свои собственные переменные.

-

Чтобы создать переменную, ее необходимо объявить , прежде чем ее можно будет использовать. Объявление переменной - это сообщение программе GameMaker о том, что эта новая переменная существует и у нее есть начальное значение. Чтобы объявить переменную, достаточно сделать следующее:

-

Declare GML VisualVariables

-

или:

-

points = 0;

-

Как только переменная объявлена, ее можно использовать в дальнейшем программном коде или действиях. Самое замечательное в переменных то, что они позволяют "повторно использовать" значение в разных местах, не задумываясь о том, что это за значение. Например, у вас есть переменная "damage", и вы используете ее в различных местах, чтобы указать GameMaker на нанесение определенного урона другим объектам в игре. Мы можем объявить "damage" как 20, но позже решить, что это слишком большое значение, и изменить его на 10. Если бы мы использовали значение 20 вместо переменной, нам пришлось бы перебрать весь наш код или действия и изменить 20 на 10, что отнимает много времени и чревато ошибками. Однако использование переменной означает, что нам нужно только один раз изменить значение 10 на 10, когда мы его объявляем, а весь остальной код или действия будут использовать это новое значение.

-

Стоит отметить, что существует множество различных типов переменных, и каждый из них имеет несколько различных способов использования. Мы не будем рассматривать это здесь, но вы можете получить более подробную информацию из раздела руководства " Обзор языка GameMaker ".

-

Однако переменные - это только первая часть истории. Следующая часть - это использование функций...

-

-
-

Функции

-
-

Следующей важной частью программирования является использование функций наряду с переменными. Функция - это просто инструкция компьютеру сделать что-то, и она может иметь как входные, так и выходные значения (то есть вы можете передать ей значение, и она выполнит некоторую операцию, а затем вернет другое значение), хотя не все функции требуют ввода и не имеют выхода. Чтобы лучше понять это, давайте рассмотрим встроенную функцию в GameMaker.

-

Функция, которую мы рассмотрим, это instance_number(), которая в GML Visual является действием Get Instance Count. Эта функция/действие позволяет получить количество экземпляров данного объекта в игровой комнате, и вы будете использовать ее следующим образом:

-

Get Instance Count GML VisualAction

-

или:

-

number = instance_number(obj_Enemy);

-

В обоих приведенных выше примерах функция принимает идентификатор объекта в качестве входного значения (параметр аргумент или параметр) и выдает выходное значение ( возвращаемое значение), которое представляет собой количество экземпляров данного объекта, присутствующих в комнате на момент вызова функции/действия. Обратите внимание, что для хранения возвращаемого значения мы используем переменную "number". Эта переменная может быть объявлена до выполнения кода, или она будет считаться объявленной после выполнения кода, и ей будет присвоено возвращаемое значение из функции/действия.

-

Стоит отметить, что вы не ограничены только использованием встроенных действий GameMaker Language или GML Visual и можете создавать собственные функции для расширения возможностей программирования (подробнее об этом можно узнать здесь для GML и здесь для GML Visual).

-

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

-

-
-

Условные обозначения

-
-

Значительная часть программирования состоит из задавания вопросов. Эти вопросы, как правило, простые, которые могут быть оценены как true или false, и называются условными (а значения true и false называются булевыми ). Наиболее распространенным и широко используемым условием является вопрос "if", который используется для проверки того, является ли что-то true или false , и последующих действий. Простым примером может быть удаление персонажа из игры, если его здоровье опускается ниже нуля, что на обычном языке будет выражено как:

-

if the character variable "hp" is less than or equal to zero, then destroy it.

-

Чтобы преобразовать вышеизложенное в код, мы должны сделать следующее:

-

GML VisualConditional

-

или:

-

if (hp <= 0)
- {
-
-     instance_destroy();
-
- } -

-

Итак, выше мы задаем вопрос "если переменная hp меньше или равна 0", а затем, если эта оценка равна true, мы вызываем функцию instance_destroy() или действие Destroy Object Instance. Обратите внимание, что "then" (если что-то... то что-то...) является неявным и вам не нужно его добавлять, а также обратите внимание, что в коде GML мы используем скобки {} для "блокировки" кода, который мы хотим выполнить, когда " if" оценит true GML Visual это символизируется опусканием действий справа от действия "If"). Все, что добавлено между скобками, будет выполняться, только если " if" оценит true, поэтому в одном "блоке" можно запустить более одного оператора.

-

Еще один момент, который следует отметить при использовании условного выражения "if", заключается в том, что к нему можно добавить утверждение "else", тогда условное выражение будет выглядеть так: "если что-то оценивается как true , то сделайте то-то, иначе сделайте что-то другое". Таким образом можно работать с условным выражением, возвращающим true или false. Приведем пример на эту тему:

-

GML VisualIf... Else.. Example

-

или:

-

if (countdown <= 0)
- {
-
-     instance_create_layer(x, y, "Instances", obj_Bullet);
-
-     countdown = 30;
-
- }
- else
- {
-
-     countdown = countdown - 1;
-
- } -

-

Приведенный выше код переводится на простой язык как:

-

if the countdown variable is less than or equal to zero then:
-
-     create an instance of the object "obj_Bullet" at the current x/y position on the layer "instances",
-
-     reset the countdown variable to 30.
-
- else:
-
-     subtract one from the countdown variable. -

-

Не стоит слишком беспокоиться о фактическом создании экземпляра в приведенном выше коде, поскольку мы рассмотрим это более подробно в следующих разделах. Важно понять, что вы можете создавать условные выражения, которые проверяют, является ли что-то true или false , и заставляют вашу программу реагировать по-разному. Это может показаться очень простой вещью, но на самом деле она невероятно мощная и станет основой почти всего, что вы будете делать при программировании в GameMaker.

-
-

-

Итак, отвечая на наш вопрос "Что такое программирование?", можно сказать, что программирование - это использование комбинации утверждений - которые могут использовать переменная s для формирования выражениеs, функции для выполнения задач и условный s, чтобы задавать вопросы - и затем выполнять эти утверждения параллельно для достижения цели. Ниже вы можете увидеть немного более сложную программу в GML Visual и GML. Можете ли вы догадаться, что она делает?

-

GML VisualFinal Code Example

-

или:

-

if mouse_check_button_pressed(mb_left) == true
- {
-
-     x = mouse_x
-
-     y = mouse_y
-
-     image_blend = c_red;
-
- }
- else
- {
-
-     if (mouse_check_button_released(mb_left) == true)
-     {
-
-         image_blend = c_white;
-
-     }
-
- } -

-

СпойлерПриведенный выше код сначала проверяет, нажата ли кнопка мыши ( левая кнопка мыши, которая определяется с помощью константы " mb_left"), - и если она была нажата, то перемещает экземпляр, выполняющий код, в текущую позицию мыши (определяется с помощью встроенных переменных " mouse_x" и " mouse_y") и - также устанавливает цвет наложения экземпляра на красный. Если кнопка мыши не была нажата, то проверяется, была ли она отпущена, и если была, то сбрасывается цвет наложения экземпляра на белый (обратите внимание, что - мы снова используем некоторые встроенные константы - " c_red" и " c_white" - для простого определения цветов).

-

-

Надеюсь, теперь вы имеете более полное представление о том, что такое программирование, поэтому давайте перейдем к изучению IDE GameMaker и посмотрим, как добавлять активы, такие как спрайты , объекты и другие важные ресурсы, которые понадобятся вашей игре.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/Error_Reporting.htm b/Manual/contents/Setting_Up_And_Version_Information/Error_Reporting.htm index 03bf0ab98..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/Error_Reporting.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/Error_Reporting.htm @@ -1,44 +0,0 @@ - - - - - - Отчеты об ошибках IDE - - - - - - - - - - -

Отчеты об ошибках IDE

-

Хотя при создании GameMaker были приняты все меры для обеспечения стабильности и надежности программы, всегда существует вероятность возникновения проблем, учитывая характер программного обеспечения и операционных систем, на которых оно работает. В большинстве случаев любые ошибки отлавливаются программой GameMaker, и вам может быть предложено сохранить ваши проекты, а затем закрыть и перезапустить программу. Если это произойдет, мы просим вас сообщить об ошибке в службу поддержки. Вы можете сделать это, воспользовавшись опцией Report A Bug (Сообщить об ошибке ) в меню Help (Помощь ), и мы просим вас предоставить как можно больше информации, а также ссылку на файл GameMaker ui.log, который можно найти в следующих местах, в зависимости от ОС:

-
    -
  • На сайте Windows - C:\ProgramData\GameMaker
  • -
  • На сайте macOS - /Users/Shared/GameMaker/ (Macintosh HD > Users > Shared > GameMaker)
  • -
-

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

-

В этом окне вы увидите некоторые данные отчетов о сбоях, собранные GameMaker, и сможете отправить их на адрес YoYo Games, чтобы они могли посмотреть, что произошло, и по возможности исправить проблему в будущих обновлениях. Если вы хотите узнать, какие именно данные отправляются, обратитесь к этой статье на сайте GameMaker Helpdesk.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/GMS2_Version_Information.htm b/Manual/contents/Setting_Up_And_Version_Information/GMS2_Version_Information.htm index b157ba41f..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/GMS2_Version_Information.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/GMS2_Version_Information.htm @@ -1,68 +0,0 @@ - - - - - - Информация о версии GameMaker - - - - - - - - - - -

Лицензирование и информация о версии

-

Существуют различные версии лицензий, которые вы можете получить для GameMaker, выбор которых во многом зависит от аудитории, на которую вы хотите ориентироваться, а также от того, хотите ли вы просто получать удовольствие от создания игр или же хотите продавать и распространять их.

-

Актуальную информацию о лицензиях GameMaker можно найти на следующей странице:

- -

Независимо от того, какую версию GameMaker вы используете, все они требуют одинаковой базовой настройки перед использованием. Все перечисленные ниже разделы посвящены этому и включают информацию об обновлении IDE и Runtimes, о необходимых SDK для конкретных целевых модулей, а также о настройках IDE, позволяющих адаптировать работу GameMaker под ваш собственный стиль работы.

- -

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences.htm index b362bd898..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences.htm @@ -1,73 +0,0 @@ - - - - - - Предпочтения IDE - - - - - - - - - - -

Предпочтения IDE

-

Окно настроек является важной частью GameMaker, поскольку именно в нем вы можете настроить и кастомизировать свой опыт использования IDE, а также установить SDK для конкретной платформы и т.д.. В этом разделе мы рассмотрим специфические области окна настроек IDE - для отдельных целевых платформ смотрите раздел " Настройки целевых платформ". Обратите внимание, что после изменения любых настроек в этом окне необходимо нажать кнопку Применить , чтобы они вступили в силу.

-

Если, изменив здесь параметры, чтобы настроить GameMaker по своему вкусу, вы захотите сделать резервную копию установленных вами настроек, вам нужно перейти в эту папку в Windows:

-

%AppData%/GameMaker/<your_account_name>/

-

Или эту папку на Mac:

-

~/.config/GameMaker

-

Затем скопируйте следующие два файла в безопасное место:

-
    -
  • local_settings.json
  • -
  • cloud_settings.json
  • -
-

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

-

Параметры GameMaker можно открыть из меню Файл в верхней левой части IDE:

-

После открытия окна "Параметры" вам будут доступны следующие различные опции (в этом списке отсутствуют все предпочтения, специфичные для конкретной платформы, о них вы можете прочитать здесь):

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Anim_Curve_Editor_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Anim_Curve_Editor_Preferences.htm index 734e70958..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Anim_Curve_Editor_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Anim_Curve_Editor_Preferences.htm @@ -1,44 +0,0 @@ - - - - - - Предпочтения редактора кривых анимации - - - - - - - - - - -

Предпочтения редактора кривых анимации

-

The Animation Curve Preferences

-

Параметры кривых анимации используются для определения определенных свойств при работе с редактором кривых анимации. Доступны следующие опции:

-
    -
  • Автоматическая реакция на удаление кривой: Этот параметр можно использовать для управления всплывающим сообщением, которое показывается при удалении кривой из редактора анимационных кривых. По умолчанию здесь отображается предупреждающее сообщение, но вы можете установить значение - "Хорошо", и диалог не будет показан.
  • -
-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Asset_Browser_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Asset_Browser_Preferences.htm index 268cea237..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Asset_Browser_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Asset_Browser_Preferences.htm @@ -1,83 +0,0 @@ - - - - - - Предпочтения браузера активов - - - - - - - - - - -

Предпочтения браузера активов

-

Параметры браузера активов используются для определения определенных свойств функционирования браузера активов и его элементов. Основными параметрами являются:

-
    -
  • Показывать быстрый доступ: При включении этой опции в верхней части браузера активов будет отображаться раздел "Быстрый доступ". Эта опция включена по умолчанию.
  • -
  • Создавать папки по умолчанию в новом проекте: Если эта опция включена, все новые проекты будут начинаться с уже созданными папками активов по умолчанию, а если выключена, будет создана только папка комнаты с комнатой по умолчанию, необходимой для всех проектов. Эта опция включена по умолчанию.
  • -
  • Максимальное количество активов, открываемых одновременно без предупреждения: Вы можете выбрать несколько активов для одновременного открытия, используя / + для их выбора, а затем щелкнув правой кнопкой мыши на и выбрав пункт "Открыть все". Если вы выбрали больше, чем указано в этом параметре, то вам будет показано предупреждение, поскольку одновременное открытие слишком большого количества активов может привести к проблемам с производительностью на низкопроизводительных машинах. Значение по умолчанию равно 10.
  • -
  • Максимальное количество недавно отредактированных элементов: Этот параметр регулирует количество активов, перечисленных в разделе "Последние" браузера активов. Значение по умолчанию - 10.
  • -
  • Размер цветовой палитры: Здесь можно установить количество цветов, доступных в палитре браузера активов для групп активов. Значение по умолчанию - 16, минимальное значение - 16, максимальное - 100.
  • -
  • Применять цвета активов в Быстром доступе: Если флажок установлен, этот параметр будет использовать цвета, установленные для любого данного типа актива, для окраски актива в разделе быстрого доступа браузера. При снятии флажка цвет актива не будет использоваться. Эта опция включена по умолчанию.
  • -
  • Цвета группы переопределяют цвета дочерних активов: Если флажок установлен, то для окрашивания всех активов внутри группы будет использоваться групповой цвет верхнего уровня, игнорируя цвет, установленный для отдельного актива. По умолчанию этот параметр отключен.
  • -
  • Создайте диалоговый стиль актива: Когда вы нажимаете кнопку "Добавить актив" в браузере активов, появляется окно, показывающее различные активы, которые могут быть добавлены в ваш проект. Это окно может быть представлено в виде списка или в виде сетки, и этот параметр определяет, что будет отображаться по умолчанию. Значение по умолчанию - сетка.
  • -
  • Порядок сортировки по умолчанию: С помощью этого параметра можно установить порядок сортировки активов в браузере по умолчанию: по алфавиту или от А до Я или от Я до А. По умолчанию - от А до Я.
  • -
  • Поумолчанию сортировать сначала папки: Если этот параметр включен, браузер активов будет сортировать сначала папки, затем все "свободные" активы, а если этот параметр отключен, то все активы и папки будут сортироваться вместе. Этот параметр включен по умолчанию.
  • -
  • Двойной щелчок на спрайте открывает редактор изображений: По умолчанию двойной щелчок на любом активе открывает этот актив для редактирования, но часто при работе с sprites, после первоначальной настройки при создании нового актива, вы открываете его для редактирования изображения, а не свойств sprite. При выборе этой опции откроется редактор изображений для актива sprite, а не сам актив sprite. Вы все еще можете открыть редактор sprite, щелкнув правой кнопкой мыши и выбрав Редактировать. По умолчанию эта опция выключена.
  • -
  • Двойной щелчок на объекте открывает все события объекта: По умолчанию двойной щелчок на любом активе открывает этот актив для редактирования, но часто при работе с объектами, после первоначальной настройки при создании нового актива, вы открываете его для редактирования только событий, а не свойств объекта. При выборе этой опции различные события объекта будут открыты в новом рабочем пространстве, причем каждому событию будет отведена своя вкладка в новом рабочем пространстве. Вы все еще можете открыть редактор объектов, щелкнув правой кнопкой мыши и выбрав Edit. По умолчанию эта опция выключена.
  • -
  • Разгруппировка порядка комнат удаляет пустую группу: Если эта функция включена, при разгруппировке всех помещений, принадлежащих к папке группы, папка группы также будет удалена. Если это действие отключено, то при разгруппировке комнат останется пустая папка группы в обозревателе активов. Эта функция включена по умолчанию.
  • -
  • Масштаб по умолчанию (%): Этот параметр устанавливает процент масштабирования по умолчанию для браузера активов при запуске нового проекта. Значение по умолчанию равно 100%.
  • -
  • Минимальный масштаб (%): Этот параметр устанавливает минимальное значение масштаба, допустимое для браузера активов. По умолчанию - 50%.
  • -
  • Максимальный масштаб (%): Этот параметр устанавливает максимальное значение масштаба, допустимое для браузера активов. По умолчанию - 250%.
  • -
  • Показывать линии деревьев: Здесь вы можете включить/выключить древовидные линии, которые отображаются сбоку от активов в браузере активов. По умолчанию флажок установлен, чтобы показывать линии деревьев.
  • -
  • Разворачивать дерево при изменении фильтра: Этот параметр заставит браузер активов развернуть все свернутые узлы дерева при изменении параметров фильтра. Отключение опции предотвратит это. По умолчанию включена.
  • -
-

-

Диалоги подтверждения

-
-

Здесь вы можете выбрать поведение диалоговых окон подтверждения при работе с активом - из браузера активов. Доступны следующие варианты:

-
    -
  • Автоматическая реакция на удаление актива: При удалении актива из браузера активов обычно появляется предупреждение с вопросом, уверены ли вы, что хотите продолжить. При установке этого параметра на "ОК" сообщение будет подавлено. - как если бы вы нажали кнопку "OK", чтобы продолжить. Значение по умолчанию - "Показать сообщение".
  • -
  • Автоматическая реакция на удаление группы Room Order: При удалении папки группы, содержащей комнаты, из браузера активов обычно появляется предупреждение, спрашивающее, уверены ли вы и хотите ли выполнить удаление (в котором перечислены все комнаты в группе). - которые будут удалены). Если установить для этого параметра значение "OK", сообщение будет заблокировано, как если бы вы нажали кнопку OK, чтобы продолжить и удалить все помещения в группе, а также саму папку группы. Значение по умолчанию - "Показать - Сообщение".
  • -
  • Автоматическая реакция на открытие нескольких активов: Как упоминалось выше в общих настройках браузера активов, при одновременном открытии нескольких активов из браузера активов вы можете получить предупреждение, если их количество превышает указанное. - При установке этого параметра в значение "ОК" предупреждение будет подавлено, как если бы вы нажали кнопку "ОК" для продолжения работы. Значение по умолчанию - "Показать сообщение".
  • -
  • Автоматическая реакция на преобразование GML Visual в GameMaker Language: Когда вы выбираете опцию преобразования узла GML Visual в GML, вам будет предложено подтвердить изменение, поскольку его нельзя отменить. При установке этого параметра на "OK" - предупреждение будет подавлено, как если бы вы нажали кнопку "OK", чтобы продолжить. Значение по умолчанию - "Показать сообщение".
  • -
  • Автоматическая реакция на установку родителя комнаты с помощью перетаскивания узла: В разделе "Наследование" окна Room Manager можно перетащить комнату на другую комнату, чтобы сделать ее дочерней по отношению к комнате, на которую она перетаскивается. При выполнении - вы получите предупреждение с вопросом, уверены ли вы и хотите ли вы продолжить. Если установить для этого параметра значение "OK", сообщение будет заблокировано, как если бы вы нажали кнопку OK, чтобы продолжить. Значение по умолчанию - "Показать сообщение".
  • -
  • Автоматическая реакция на ошибку дублирования имени группы: Когда вы создаете групповую папку для организации активов и называете ее так же, как другую папку в браузере, появится сообщение с вопросом, хотите ли вы продолжить и иметь - две папки с одинаковыми именами. Если установить для этого параметра значение "OK", предупреждение будет подавлено, как если бы вы нажали кнопку "OK", чтобы продолжить. Значение по умолчанию - "Показать сообщение".
  • -
  • Автоматическая реакция на установку родительской комнаты с помощью перетаскивания узла: Когда вы перетаскиваете комнату на другую комнату в Менеджере комнат, а затем отпускаете ее, появляется сообщение с вопросом, хотите ли вы сделать эту комнату "дочерней" по отношению к той. - перетаскиваемой комнаты. Если установить для этого параметра значение "OK", предупреждение будет подавлено, как если бы вы нажали кнопку "OK", чтобы продолжить. Значение по умолчанию - "Показать сообщение".
  • -
-

-
-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Drag_And_Drop_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Drag_And_Drop_Preferences.htm index 82e2a1567..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Drag_And_Drop_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Drag_And_Drop_Preferences.htm @@ -1,69 +0,0 @@ - - - - - Предпочтения при перетаскивании - - - - - - - - - - -

Предпочтения Drag And Drop™

-

Параметры Drag and Drop™ используются для определения того, как выглядит и как ощущается редактор сценариев Drag and Drop™. - Ниже перечислены различные доступные параметры, а также описание того, что каждый из них делает.

-
    -
  • Расположение панели инструментов DnD™ по умолчанию: По умолчанию панель инструментов DnD™ (где хранятся все различные библиотеки действий) располагается справа от редактора, но вы можете использовать эту опцию, чтобы она располагалась по умолчанию слева.
  • -
  • Режим видимости обзора узла DnD™: Обзор узла - это краткий описательный текст, который появляется рядом с определенными действиями в рабочей области действий, например, вот это действие Destroy Instance:
    -
    - Вы можете включить их всегда, включить их только если действие свернуто (настройка по умолчанию), - или вообще отключить их.
  • -
  • Автоматическая реакция на преобразование DnD™ в GameMaker Language: Когда вы конвертируете событие или сценарий Drag and Drop в код GML, по умолчанию вы получите сообщение, предупреждающее вас о том, что вы собираетесь сделать, и спрашивающее, хотите ли вы продолжать. - Если установить этот параметр на "OK", то изменение просто завершится без показа сообщения.
  • -
  • Автоматическая реакция на удаление узла DnD™: Когда вы удаляете узел события Drag and Drop, по умолчанию вы получите сообщение, предупреждающее вас о том, что вы собираетесь сделать, и спрашивающее, хотите ли вы продолжить. Установка этого параметра на "ОК" - просто разрешит удаление без показа сообщения.
  • -
  • Максимальный размер для миниатюр действий панели инструментов DnD™: В нижней части панели инструментов действий находится ползунок для изменения размера иконок Drag and Drop. Этот параметр будет использоваться для определения максимально допустимого размера (по умолчанию 64px).
  • -
  • Минимальный размер для миниатюр действий панели инструментов DnD™: В нижней части панели инструментов действий находится ползунок для изменения размера иконок Drag and Drop. Этот параметр будет использоваться для определения минимально допустимого размера (по умолчанию 16px).
  • -
  • Размер по умолчанию для миниатюр действий на панели инструментов DnD™: Этот параметр будет использоваться для определения размера по умолчанию для всех иконок действий в панели инструментов (по умолчанию 32px).
  • -
  • Максимальное количество недавно использованных действий для отображения: На панели инструментов действий в верхней части находится библиотека, в которой хранятся действия, которые вы использовали в последнее время. С помощью этой опции можно изменить максимальное количество последних действий, которые - будет показано (по умолчанию 5).
  • -
  • Толщина цепи, соединяющей действия DnD™: Определяет толщину графической цепочки, связывающей различные действия в блоке кода DnD (по умолчанию 3px).
  • -
  • Время опускания мыши для начала перетаскивания узлов (мс): Когда вы щелкаете на узле и перетаскиваете его, вы перепозиционируете узел в коде действия. Однако если вы на мгновение задержите мышь, а затем перетащите, вы переместите - положение узла в рабочей области, но не в порядке кода. Этот параметр устанавливает количество миллисекунд, которое необходимо выждать при нажатой кнопке мыши, прежде чем узел будет перемещен (не перепозиционирован). По умолчанию - 350.
  • -
  • Скрыть панель обзора узлов DnD™: Здесь вы можете выбрать, скрыть ли панель обзора редактора кода действий. По умолчанию она отключена, и ее включение уберет из редактора текстовый список цепочек действий.
  • -
-

Также есть подменю для комментариев DnD™:

-

Параметры комментариев управляют различными цветовыми и форматирующими параметрами для любых комментариев, которые были - были добавлены к сценариям действий Drag and Drop™. К этим параметрам относятся:

-
    -
  • Цвет: Цвет по умолчанию для текста, записываемого в окно (по умолчанию ARGB #FF53E270).
  • -
  • Имя шрифта: Имя шрифта для использования (доступные шрифты зависят от установленных в вашей системе).
  • -
  • Стиль: Используемый стиль шрифта, например, жирный или курсив (обратите внимание, что не во всех окнах можно использовать одинаковые стили, а также это зависит от используемого шрифта).
  • -
  • Размер: Размер шрифта для данного окна вывода.
  • -
  • Сглаживание: Здесь вы можете установить режим сглаживания для рендеринга шрифта выходных окон. Вы можете позволить IDE принимать решения, выбрав Use Default, - или принудительно включить или выключить , выбрав одну из этих опций.
  • -
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Extension_Editor_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Extension_Editor_Preferences.htm index 23d132fe4..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Extension_Editor_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Extension_Editor_Preferences.htm @@ -1,44 +0,0 @@ - - - - - - Предпочтения редактора расширений - - - - - - - - - - -

Предпочтения редактора расширений

-

Настройки редактора расширений включают в себя несколько параметров, связанных с сообщениями, которые вы - отображаются при его использовании, подробности описаны ниже:

-
    -
  • Автоматическая реакция на удаление файла: По умолчанию здесь отображается сообщение с вопросом, уверены ли вы, что хотите удалить, но вы можете установить значение "OK", чтобы все удаления завершались без этого сообщения, как если бы вы - как если бы вы уже нажали кнопку "ОК".
  • -
  • Автоматическая реакция на удаление файлов прокси: Как и выше, здесь задается сообщение, которое будет показано вам при удалении любых файлов прокси.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Feather_Settings.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Feather_Settings.htm index 9d6f58344..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Feather_Settings.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Feather_Settings.htm @@ -1,112 +0,0 @@ - - - - - - Перо - - - - - - - - - - -

Перо

-

Feather обеспечивает интеллектуальное завершение кода и улучшенную проверку синтаксиса в ваших сценариях GML Code, а также интеллектуальные опции рефакторинга.

-

На этой странице содержится информация о следующих частях Feather:

- -
-

См. также (placeholder)

-
    -
  1. Список тем
  2. -
-
-

Базовые опции

-

Базовые настройки пера содержат следующие параметры:

-
    -
  • Включите Feather: Включите или отключите Feather здесь. При отключении функции Feather не будут доступны на сайте IDE.
  • -
  • Задержка разбора документа: Количество времени, в течение которого Feather ожидает проверки вашего сценария после внесения в него изменений.
  • -
  • Компактные всплывающие подсказки: Включение этого параметра удалит некоторые всплывающие подсказки, которые появляются при наведении курсора на ключевые слова, например, описание параметров для функций, что в конечном итоге сделает ваши всплывающие подсказки меньше.
  • -
  • Максимальное количество полей struct, отображаемых всплывающими подсказками: Когда вы наводите курсор на ссылку на структуру, всплывающая подсказка отображает переменные внутри этой структуры, вплоть до числа, введенного здесь.
  • -
  • Рефакторинг ссылок на имя актива при переименовании актива в браузере активов: Включение этого параметра гарантирует, что при переименовании актива в браузере активов все упоминания о нем в коде также будут отредактированы, чтобы эти ссылки не сломались.
  • -
  • Предпочитать многострочный стиль комментариев JSDoc при создании из Quick Fix: Когда вы генерируете JSDoc комментарии для функции через меню Quick Fixes, созданный JSDoc будет использовать либо однострочные, либо многострочные комментарии, в зависимости от этой опции.
  • -
  • Включить режим строгих типов: Когда эта опция включена, Feather более строго следит за тем, чтобы вы использовали правильные типы данных в своем коде.
  • -
-

Выделение

-

-

Этот раздел содержит настройки для изменения цветов, используемых для подчеркивания части кода, чтобы отметить ошибку, предупреждение или предложение:

-
    -
  • Цвет ошибок: Цвет, используемый для ошибок.
  • -
  • Цвет предупреждения: Цвет, используемый для предупреждений.
  • -
  • Цвет предложения: Цвет, используемый для предложений.
  • -
-

Серьезность сообщения

-

Этот раздел содержит все правила, которые Feather использует для проверки вашего кода, и позволяет настроить степень серьезности каждого правила.

-

Профиль

-

В этом выпадающем окне вы можете выбрать один из нескольких предустановленных профилей для правил GM*. Доступны следующие профили:

-
    -
  • None: Этот профиль не будет показывать никаких сообщений об ошибках.
  • -
  • SyntaxErrors: Если вы используете этот профиль, будут показаны синтаксические ошибки, наряду с теми, что показаны в профиле None.
  • -
  • TypeErrors: Этот профиль также показывает ошибки типа в дополнение к профилю SyntaxErrors .
  • -
  • Все: Этот профиль показывает все, что может анализировать Feather.
  • -
-

Правила ГМ*

-

Вы можете установить правило как "Ошибка", "Предупреждение" или "Предложение", что влияет на то, как код, нарушающий правило, будет сообщаться вам в редакторе кода и в окне сообщений Feather.

-

Вы можете установить для правила значение "Игнорировать", которое будет игнорировать все случаи нарушения этого правила.

-

Все правила, начинающиеся с "GM1000", проверяют ваш синтаксис на возможные фатальные ошибки, а правила, начинающиеся с "GM2000", являются правилами лучшей практики, которые помогают вам предотвратить ошибки в вашей игре.

-

Правила именования

-

Этот раздел позволяет задать правила именования для активов, переменных и различных других частей GML Code.

-

Правило GM2017 в разделе "Серьезность сообщения" должно быть включено, чтобы правила именования вступили в силу. По умолчанию оно отключено.

-

Настройки в этом разделе следующие:

-
    -
  • Блокирующий список идентификаторов: Это список идентификаторов, разделенных пробелами, которые будут игнорироваться для всех правил именования.
    -
    - Например, у вас есть правило использовать obj_ в качестве префикса для объектов, но вы хотите, чтобы менеджер объектов и сеть оставались как есть и не использовали префикс obj_.
    -
    - В этом случае вы напишете manager network в поле Indentifier Blocklist. Feather будет игнорировать эти объекты и любые другие идентификаторы (переменные, перечисления, параметры и т.д.) с такими же именами. -
  • -
  • <идентификатор> Правило именования: Вы можете установить правила именования для каждого типа идентификаторов в списке, таких как активы, макросы, перечисления, параметры функций, переменные и т.д.
    -
    - В каждом выпадающем списке правил именования есть следующие опции: -
      -
    • Префикс: Текст, который должен появиться перед именем идентификатора, который может быть obj_ для объектов, _ для локальных переменных и т.д. в зависимости от ваших предпочтений.
    • -
    • Суффикс: Текст, который должен появиться после имени идентификатора.
    • -
    • Стиль именования: Выберите стиль именования для идентификатора. Вы можете выбрать следующие варианты: -
        -
      • Без ограничений: Для данного типа идентификаторов форматирование не применяется.
      • -
      • Верхний регистр (UpperCamelCase): MyHealth, ObjGrappleHook, MaxInventoryItemsAllowed и т.д.
      • -
      • lowerCamelCase: myHealth, objGrappleHook, maxInventoryItemsAllowed, etc.
      • -
      • ALL_UPPER: MY_HEALTH, OBJ_GRAPPLE_HOOK, MAX_INVENTORY_ITEMS_ALLOWED, etc.
      • -
      • all_lower: my_health, obj_grapple_hook, max_inventory_items_allowed, etc.
      • -
      -
    • -
    -
  • -
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Font_Editor_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Font_Editor_Preferences.htm index 8ac80af26..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Font_Editor_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Font_Editor_Preferences.htm @@ -1,57 +0,0 @@ - - - - - Предпочтения редактора шрифтов - - - - - - - - - - -

Предпочтения редактора шрифтов

-

Параметры редактора шрифтов используются для определения поведения редактора шрифтов. - Ниже перечислены различные доступные параметры, а также описание того, что каждый из них делает.

-
    -
  • Обновлять шрифты, импортированные из проектов GameMaker 1: Когда этот флажок установлен, GameMaker попытается обновить шрифты и регенерировать их текстуру. Это произойдет только в том случае, если: -
      -
    • Это предпочтение включено
    • -
    • Шрифт доступен на машине
    • -
    • GameMaker может найти подходящее лицо в семействе шрифтов (это наиболее вероятная причина несоответствия при импорте).
    • -
    - Обратите внимание, что это также произойдет, если шрифт GameMaker 1 не имеет кэшированной текстуры шрифта. Если устаревший шрифт не может быть обновлен, то GameMaker по умолчанию будет использовать кэшированную - текстуру шрифта, и редактор шрифтов больше не позволит вам редактировать шрифт, показывая опцию резервного копирования и обновления на другой:
    -
    - Щелкнув на этой опции, вы сможете редактировать шрифт, либо добавив отсутствующий шрифт, либо установив другой. - резервная копия шрифта хранится в папке font asset, как <font name>.yy.gms1 и <font name>.png.gms1. Чтобы восстановить эти файлы, вручную удалите файлы <font name>.yy и замените их этими, удалив расширение .gms1 из имен файлов. Важно! Все активы хранят свои имена в файле .yy, поэтому вы должны отредактировать их - и поместить правильное имя ресурса в поле <name> (если оно отличается).
  • -
  • Автоматический выбор для диалога неудачной регенерации содержимого: Когда вы собираетесь регенерировать текстуру шрифтового актива, вам показывается предупреждение. Установка этого параметра на "ОК" означает, что шрифт будет регенерирован без предупреждения. - показано.
  • -
  • Автоматический выбор для диалога о неудачной регенерации шрифта: При неудачной регенерации текстуры шрифтового актива отображается предупреждение. Установка этого параметра в "ОК" позволяет пропустить показ сообщения.
  • -
  • Автоматический выбор для обновления импортированных устаревших шрифтов: При импорте устаревшего проекта вы можете получить предупреждение об устаревших шрифтах и предложение об обновлении. Установка этого параметра на "ОК" приведет к автоматическому обновлению без - показа этого сообщения.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/GML_Code_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/GML_Code_Preferences.htm index f97014023..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/GML_Code_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/GML_Code_Preferences.htm @@ -1,46 +0,0 @@ - - - - - - Предпочтения кода GML - - - - - - - - - - -

Предпочтениякода GML

-

ПараметрыGML Code используются для определения того, как некоторые возможности языка для кодирования будут отображаться на сайте IDE программы GameMaker. Опции для GML Code следующие:

-
    -
  • Отображать типы аргументов в строке состояния: Эта опция относится к случаям, когда вы используете собственные пользовательские сценарии и используете нотацию JSDoc для определения различных аргументов и т.д.. (см. здесь для получения дополнительной информации). Если эта опция отмечена, и вы указали типы аргументов в сценарии, то они будут показаны в строке состояния в нижней части редактора, заключенные в {}. По умолчанию эта опция выключена.
  • -
  • Отображать описания аргументов в строке состояния: Если этот флажок установлен, то любые описания, которые вы дали своим пользовательским скриптам, используя нотацию JSDoc, будут отображаться в строке состояния в нижней части окна редактора. По умолчанию эта опция выключена.
  • -
  • Показывать американское написание для системных функций: По умолчанию GameMaker использует английское написание функций, например, draw_text_colour(), однако это может быть не совсем то, к чему вы привыкли, поэтому вы можете переключиться на американское написание с помощью этой опции, так что функции станут, например, draw_text_color(). По умолчанию эта опция выключена.
  • -
  • Максимальное количество отображаемых синтаксических ошибок: Это значение устанавливает максимальное количество синтаксических ошибок, которые будут отображаться в любой момент времени. Если вы обнаружили, что IDE отстает, попробуйте уменьшить это значение. По умолчанию это значение равно 50.
  • -
  • Включить предупреждения о ссылках на переменные: Если эта функция включена, она будет отмечать любые потенциальные проблемы с переменными, например, когда переменная определена где-то, но фактически не используется в коде. Если эта функция отключена, эти предупреждения больше не будут отображаться. По умолчанию эта функция включена.
  • -
  • Включить сворачивание операторов как регионов: Если эта функция включена, скобки в вашем коде можно сворачивать как регионы. Это включено по умолчанию.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/GML_Visual_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/GML_Visual_Preferences.htm index 487e47e61..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/GML_Visual_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/GML_Visual_Preferences.htm @@ -1,54 +0,0 @@ - - - - - - Визуальные предпочтения GML - - - - - - - - - - -

Визуальные предпочтенияGML

-

Сайт Визуальный GML Preferences используются для определения того, как выглядит и ощущается визуальный редактор. Различные доступные опции перечислены ниже вместе с описанием того, что каждая из них делает.

-
    -
  • Расположение панели инструментовGML Visual по умолчанию: По умолчанию панель инструментов GML Visual (где хранятся все различные библиотеки действий) располагается справа от редактора, но вы можете использовать эту опцию, чтобы она располагалась по умолчанию слева.
  • -
  • Режим видимости обзора узлаGML Visual: "Обзор узла" - это краткий описательный текст, который появляется рядом с определенными действиями в рабочей области действий, например, это действие Destroy Instance:
    -
    - Вы можете включить их всегда, включить только если действие свернуто (настройка по умолчанию) или вообще отключить. -
  • -
  • Автоматическая реакция на преобразование GML Visual в GameMaker Language: Когда вы конвертируетеGML Visual событие или сценарий в код GML, вы по умолчанию получите сообщение, предупреждающее о том, что вы собираетесь сделать, и спрашивающее, хотите ли вы продолжать. Установка этого параметра в значение "OK" приведет к тому, что изменение будет выполнено без показа сообщения.
  • -
  • Автоматическая реакция на удаление узла GML Visual: Когда вы удаляете GML Visual узел события, вы по умолчанию получите сообщение, предупреждающее вас о том, что вы собираетесь сделать, и спрашивающее, хотите ли вы продолжить. Установка этого параметра в "OK" просто завершит удаление без показа сообщения.
  • -
  • Максимальный размер для миниатюр действий панели инструментов GML Visual: В нижней части панели инструментов действий есть ползунок для изменения размера GML Visual значков. Этот параметр будет использоваться для определения максимально допустимого размера (по умолчанию 64px).
  • -
  • Минимальный размер для миниатюр действий панели инструментов GML Visual: В нижней части панели инструментов действий имеется ползунок для изменения размера GML Visual значков. Этот параметр будет использоваться для определения минимально допустимого размера (по умолчанию 16px).
  • -
  • Размер по умолчанию для миниатюр действий панели инструментов GML Visual: Этот параметр будет использоваться для определения размера по умолчанию для всех значков действий в панели инструментов (по умолчанию 32px).
  • -
  • Максимальное количество недавно использованных действий для отображения: В верхней части панели инструментов действий находится библиотека, в которой хранятся действия, которые вы использовали в последнее время. С помощью этой опции можно изменить максимальное количество последних действий, которые будут отображаться (по умолчанию 5).
  • -
  • Толщина цепи, соединяющей действия GML Visual: Определяет толщину графической цепочки, связывающей различные действия в GML Visual блоке кода (по умолчанию 3px).
  • -
  • Время опускания мыши для начала перетаскивания узлов (мс): Когда вы щелкаете на узле и перетаскиваете его, вы изменяете положение узла в рамках кода действия. Однако если вы на мгновение задержите мышь, а затем перетащите, вы переместите положение узла в пределах рабочей области, но не в порядке кода. Этот параметр устанавливает количество миллисекунд, которое необходимо выждать при нажатой кнопке мыши, прежде чем узел будет перемещен (не перепозиционирован). По умолчанию - 350.
  • -
  • Скрыть панель обзора узла GML Visual: Здесь вы можете выбрать, скрыть ли панель обзора редактора кода действий. По умолчанию она отключена, и ее включение уберет из редактора текстовый список цепочек действий.
  • -
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Background.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Background.htm index aec98b5d1..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Background.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Background.htm @@ -1,55 +0,0 @@ - - - - - - Справочная информация - - - - - - - - - - -

Предпочтения фона

-

Background Preferences

-

Параметры фона касаются фона рабочей области, а также того, что и как он будет отображаться. Опции следующие:

-
    -
  • Фоновое изображение: Это файл изображения, которое будет использоваться в качестве фона для различных рабочих пространств. Имеется изображение по умолчанию, и оно включено по умолчанию, но вы можете выбрать здесь свое собственное изображение. Типы изображений - *.png , *.gif, *.jpg, *.jpeg, *.tif, *.tiff, - *.ico, *.bmp, *.2bp или *.mdi, но обратите внимание, что независимо от исходного формата изображения, все файлы будут сохранены для использования в качестве файлов *.png, - поэтому, например, анимированные файлы *.gif будут отображаться только как один начальный кадр.
  • -
  • Масштабирование изображения: Этот параметр определяет, как фоновое изображение будет масштабироваться в различных рабочих пространствах. Можно выбрать следующие варианты: -
      -
    • Растянуть - изображение будет растянуто, чтобы соответствовать рабочей области, изменяя масштаб в зависимости от видимых доков.
    • -
    • Плитка - изображение будет растянуто на всю рабочую область.
    • -
    • Наилучшее соответствие - изображение будет масштабироваться для пропорционального соответствия рабочему пространству, с добавлением полос по краям, если оно не соответствует 1:1.
    • -
    • Растягивание рабочего стола - фон будет покрывать все рабочее пространство и будет перемещаться, а не менять масштаб при открытии/закрытии доков.
    • -
    • Screen Stretch - фон будет покрывать область размером с окно и будет обрезаться/расширяться, чтобы показать больше или меньше изображения при открытии/закрытии доков.
    • -
    -
  • -
  • Показывать фоновые изображения на рабочих пространствах: Этот параметр определяет, следует ли показывать выбранное фоновое изображение или нет. По умолчанию эта опция включена.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Compiling.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Compiling.htm index 70797aba0..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Compiling.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Compiling.htm @@ -1,50 +0,0 @@ - - - - - - Компиляция - - - - - - - - - - -

Предпочтения компиляции

-

Compiling Preferences

-

Параметры компиляции касаются определенных опций, связанных с выводом результатов при компиляции вашей игры для тестирования или создания пакета, а также определенных областей процесса компиляции. Опции включают в себя:

-
    -
  • Автоматически открывать окно синтаксической ошибки при ее обнаружении: Включить или отключить уведомление о синтаксических ошибках при компиляции. По умолчанию этот параметр выключен.
  • -
  • Показывать окно компиляции во время компиляции: По умолчанию окно компиляции будет показано при компиляции проектов, даже если док компиляции закрыт (он будет открыт для компиляции). Если снять флажок, это поведение будет отключено, и окно компиляции будет видно только в том случае, если оно открыто.
  • -
  • Показывать команды компилятора в выводе компиляции: Этот флажок установлен по умолчанию и заставляет компилятор показывать все соответствующие команды в окне компиляции. Если снять этот флажок, вывод станет меньше и будет содержать меньше информации.
  • -
  • Показывать подробный вывод компилятора: Установка этого флажка заставит компилятор показывать дополнительные команды, связанные с процессом компиляции. Обычно это требуется только при отладке и может быть запрошено службой поддержки, если у вас возникнут проблемы. По умолчанию он выключен (и это рекомендуемая настройка).
  • -
  • Использовать замену для путей к дискам: Если этот параметр отмечен, GameMaker будет создавать - и удалять, когда это больше не требуется, - виртуальные диски для использования в качестве замены полных путей к файлам. Эти виртуальные диски обходят все потенциальные проблемы, связанные с тем, что пути к файлам слишком длинны для ОС (особенно при компиляции для Android или использовании расширений), поэтому рекомендуется включить эту опцию. Однако если у вас возникают проблемы с созданием GameMaker таких виртуальных дисков, вы можете отключить эту опцию. По умолчанию эта опция включена.
  • -
  • Показывать пакет в проводнике по завершении сборки: Установка этого флажка заставит GameMaker открыть окно проводника ОС в том месте, где был создан окончательный исполняемый пакет. По умолчанию эта опция включена.
  • -
  • Очищать окно вывода при запуске компиляции: По умолчанию окно компилятора будет очищать все предыдущие сообщения из окна вывода компилятора в начале каждой сборки, однако снятие этого флажка сохранит предыдущие журналы компилятора. Эта опция включена по умолчанию и является рекомендуемой конфигурацией, поскольку большие журналы компилятора могут замедлить время компиляции.
  • -
  • Автоматически останавливать выполнение перед упаковкой: По умолчанию, если ваша игра уже запущена и вы пытаетесь создать исполняемый файл, вам будет показано сообщение об ошибке и потребуется остановить игру вручную перед созданием исполняемого файла. Вы можете включить эту опцию, чтобы всегда пропускать это сообщение об ошибке и автоматически останавливать игру, если она запущена, когда выбран пункт "Создать исполняемый файл". По умолчанию эта опция выключена.
  • -
  • Максимальное количество параллельных заданий компиляции: Это значение устанавливает максимальное количество ядер процессора для компиляции проекта. Значение по умолчанию равно 8, и в целом его не нужно изменять, но если вы работаете на ноутбуке или машине низкого класса, возможно, вам захочется уменьшить это значение. По умолчанию установлено значение 8.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Confirm_Dialogs.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Confirm_Dialogs.htm index afd72555d..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Confirm_Dialogs.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Confirm_Dialogs.htm @@ -1,51 +0,0 @@ - - - - - - Диалоги подтверждения - - - - - - - - - - -

Подтверждение предпочтений диалогового окна

-

Confirm Dialog Prefs

-

Параметры "Подтверждение диалога" касаются некоторых общих всплывающих окон подтверждения, которые будут появляться при выполнении определенных действий в GameMaker IDE. Опции следующие:

-
    -
  • Автоматическая реакция на закрытие рабочей области с помощью сочетания клавиш: Упомянутое выше сочетание клавиш можно использовать для закрытия любой открытой вкладки, но иногда вы можете случайно закрыть пустую вкладку, которая вам необходима. Чтобы предотвратить это, вы можете - можете установить опцию "Показать сообщение" (опция по умолчанию), чтобы спросить, действительно ли вы хотите закрыть эту пустую вкладку. Другие настройки: "Нет", чтобы ничего не делать, если используется ярлык, или "Хорошо", чтобы закрыть вкладку без - сообщения.
  • -
  • Автоматическая реакция на перезапуск запущенной сборки: Когда вы перезапускаете сборку, а другая предыдущая сборка все еще запущена, вас спросят, хотите ли вы сначала остановить текущую сборку. Если вы не отметите это сообщение, оно будет подавлено - сообщение и заставит GameMaker считать, что вы нажали "Ок" в качестве ответа. По умолчанию для этой опции установлено значение "Показывать сообщение".
  • -
  • Автоматический ответ на предупреждение при попытке отладки YYC: Цель YYC компилируется в нативный код и поэтому не может быть отлажена с помощью встроенного отладчика. Когда вы попытаетесь использовать отладчик на цели YYC, вы получите предупреждение - информирующее вас об этом, а также о том, что проект будет скомпилирован с использованием виртуальной машины. По умолчанию для этого параметра установлено значение "Показать сообщение", но если установить его на "OK", это предупреждение будет подавлено.
  • -
  • Автоматическая реакция на сброс макета проекта: Когда вы выбираете сброс макета проекта (из меню "Макеты"), по умолчанию вам будет показано предупреждающее сообщение - о том, что это приведет к закрытию всех открытых окон ресурсов. Однако вы можете подавить это сообщение и автоматически сбросить макет, выбрав "Ок", или ничего не делать, выбрав "Нет". Значение по умолчанию - "Показать - Сообщение".
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Debugging.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Debugging.htm index 08b0a3dc7..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Debugging.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Debugging.htm @@ -1,73 +0,0 @@ - - - - - - Отладка - - - - - - - - - - -

Предпочтения отладки

-

Debugging Prefs

-

Настройки здесь связаны с отладчикомGameMaker, и у вас есть следующие опции:

-
    -
  • Автоматическая реакция на закрытие отладчика: Эта опция позволяет установить автоматическую реакцию при закрытии отладчика. Если установить значение "Показать сообщение", вам будет показан диалог, когда вы захотите закрыть отладчик, в то время как при установке значения "Да" или "Нет" этот диалог не будет показан, а будет выполнено указанное задание. - если установить значение "Да" или "Нет", то диалог не будет показан и будет выполнено указанное задание.
  • -
  • Включить отладку в реальном времени: Установка этой опции позволит вам отлаживать ваши игровые проекты в реальном времени, когда вы запускаете их с сайта IDE. Эта опция установлена по умолчанию.
  • -
  • Порт отладчика: Здесь задается номер порта, который будет использовать модуль отладки. Значение по умолчанию - 6509.
  • -
  • Показывать значки событий в представлении ресурсов отладчика: Установите, следует ли показывать значки в представлении ресурсов отладчика. По умолчанию этот параметр установлен.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/File_Watcher.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/File_Watcher.htm index aaa73370e..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/File_Watcher.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/File_Watcher.htm @@ -1,48 +0,0 @@ - - - - - - Наблюдатель за файлами - - - - - - - - - - -

Предпочтения наблюдателя за файлами

-

File Watcher Preferences

-

File Watcher - это название части IDE, которая следит за файлами, связанными с проектом, на предмет изменений, вызванных внешними программами (например, редактированием изображения во внешнем редакторе) или внутренними изменениями, например, редактированием сценария. - актив. В целом, эти настройки не нужно редактировать, но на некоторых системах - например, тех, которые используют SSD в качестве диска для сохранения файлов проекта - наблюдатель за файлами может сообщать вам об изменениях, когда вы делаете такие вещи, как простое сохранение проекта или редактирование любого актива сценария. - или при редактировании любого актива проекта, и в этом случае вам может понадобиться изменить эти настройки.

-

Доступны следующие настройки:

-
    -
  • Включить File Watcher: Здесь можно включить или отключить систему File Watcher. Если эта функция отключена, IDE больше не будет обнаруживать файлы, измененные внешними источниками, поэтому при отключении этой функции следует соблюдать осторожность. - этой функции. По умолчанию функция File Watcher включена.
  • -
  • Установите допуск File Watcher в MS после сохранения В IDE: Это настраивает время между сохранением файла и проверкой изменений наблюдателем за файлами. Вы можете изменить это значение, если вы сохраняете проект, а File Watcher - ошибочно появляется сообщение о том, что что-то изменилось, в этом случае вы увеличиваете задержку до тех пор, пока сообщение не перестанет появляться. Значение по умолчанию составляет 2000 мс, но может варьироваться от 1 мс до 10 000 мс.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Go_To.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Go_To.htm index 18a278372..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Go_To.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Go_To.htm @@ -1,47 +0,0 @@ - - - - - - Перейти к - - - - - - - - - - -

Перейти к настройкам

-

Go To Prefs

-

Здесь задаются настройки для окна Go To, которое можно открыть с помощью сочетания клавиш / + T или щелкнув правой кнопкой мыши на пустой области в рабочей области .

-
    -
  • Максимальное количество отображаемых результатов поиска: Этот параметр управляет максимальным количеством возвращаемых результатов при использовании окна поиска Go To.
  • -
  • Включить стилизацию результатов поиска (выключить для лучшей производительности): Этот параметр включает или отключает стилизацию текста для активов, найденных в окне Go To, и включен по умолчанию. Отключение этого параметра должно повысить производительность, если вы считаете, что окно поиска Go To работает медленно на вашей системе.
  • -
  • Поиск в активах: Эта опция позволяет окну Go To искать в браузере активов любые активы, соответствующие поисковому запросу, и включена по умолчанию.
  • -
  • Поиск в предпочтениях: Эта опция позволяет окну Go To искать в Preferences любые опции, соответствующие поисковому запросу, и включена по умолчанию.
  • -
  • Поиск в Redefine Keys: Эта опция позволяет окну Go To искать в меню Redefine Keys любые опции, соответствующие поисковому запросу, и включена по умолчанию.
  • -
  • Поиск в параметрах игры: Эта опция позволяет окну Go To искать в Game Options любые опции, соответствующие поисковому запросу, и включена по умолчанию.
  • -
  • Поиск в пользовательских функциях: Эта опция позволяет окну Go To искать в ваших сценариях и объектах любые функции, соответствующие поисковому запросу, и включена по умолчанию. Обратите внимание, что эта опция работает только с синтаксисом функции сценария (function name()), но не с синтаксисом переменной метода (name = function()).
  • -
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Help.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Help.htm index 9b604a05d..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Help.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Help.htm @@ -1,44 +0,0 @@ - - - - - - Помощь - - - - - - - - - - -

Предпочтения справки

-

Help Prefs

-

Справочное руководство разработано для работы как веб-страница, и хотя файлы могут храниться локально (в зависимости от ваших настроек), для их просмотра требуется использование внешнего браузера. Здесь можно изменить следующие настройки, связанные со справочным руководством:

-
    -
  • Язык руководства: Здесь задается язык руководства. По умолчанию это "English".
  • -
  • Использовать онлайн-руководство: Включите этот параметр, чтобы использовать веб-сайт интерактивного руководства при каждом открытии руководства, или отключите его, чтобы запускать руководство локально. По умолчанию эта функция отключена.
  • -
  • Порт справочного руководства: Устанавливает номер порта для использования веб-сервера микросправки, если отключен параметр "Использовать интерактивную справку". Значение по умолчанию - 51290.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Input.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Input.htm index fdf483352..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Input.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Input.htm @@ -1,52 +0,0 @@ - - - - - - Вход - - - - - - - - - - -

Предпочтения ввода

-

Input Window Prefs

-

Параметрыввода управляют определенными аспектами ввода с помощью мыши и клавиатуры в IDE. Доступны следующие параметры:

-
    -
  • Медленное время двойного щелчка (мс): Некоторые области IDE требуют более медленного двойного щелчка для корректной работы, например, при переименовании ресурса (быстрый двойной щелчок откроет редактор ресурсов, а медленный двойной щелчок позволит вам переименовать его). Эта опция позволяет установить скорость обнаружения, по умолчанию она равна 500 мс.
  • -
  • Время блокировки прокрутки (мс): Этот параметр определяет время, которое GameMaker должен ждать между прокручиваемыми окнами, которые перекрываются. По сути, когда вы прокручиваете окно "A", курсор может навестись на другую прокручиваемую область в окне "B", поэтому этот параметр определяет, как долго вы должны ждать после остановки прокрутки "A", прежде чем сможете прокрутить "B", чтобы случайно не начать прокручивать разные панели. Значение по умолчанию равно 500 мс.
  • -
  • Обернуть курсор вокруг экрана при панорамировании: Если эта функция включена, курсор будет огибать границы экрана при панорамировании рабочего пространства. По умолчанию включено.
  • -
  • Скорость прокрутки: Этот параметр управляет скоростью прокрутки в различных рабочих пространствах. Значение по умолчанию равно 1.
  • -
  • Расстояние перетаскивания вкладки до размаксимизации рабочего стола (px): Когда вы перетаскиваете вкладку рабочего пространства из ее положения по умолчанию в пределах IDE, если в это время активно только одно рабочее пространство, то окно GameMaker разворачивается и перемещается с помощью мыши (если активно более одного рабочего пространства, то создается новый экземпляр IDE для размещения рабочего пространства). Этот параметр определяет, насколько далеко нужно перетащить вкладку, чтобы рабочая область распознала ее; значение по умолчанию - 50px.
  • -
  • Минимальный уровень масштабирования для взаимодействия с содержимым окна (%): Этот параметр управляет точкой отсечения масштаба, при которой мышь больше не сможет взаимодействовать с окнами рабочей области (т.е. добавлять узлы, перетаскивать окна и т.д.). Значение по умолчанию равно 40.
  • -
  • Для масштабирования колесиком мыши требуется клавиша Ctrl: Если флажок установлен, во всех редакторах (и в основной рабочей области) будет включен зум с помощью / + колесика мыши , если флажок снят, зум будет включаться только с помощью колесика мыши MMB Icon.
  • -
  • Ctrl + MMB для открытия унаследованного события вместо руководства: Когда эта опция отмечена, удерживая / + среднюю кнопку мыши в объекте, вы откроете наследуемое событие объекта (если оно есть), а не руководство.
  • -
  • Добавляет смещение при выделении текста для предотвращения перескакивания строк: Когда этот параметр отмечен, высота задуманной строки при выделении одной строки в любом текстовом окне будет смещена, что делает ее менее подверженной вертикальной неточности. Эта опция включена по умолчанию.
  • -
  • Включить режим ноутбука на всех устройствах: Установка этого флажка отобразит кнопку Laptop Mode на сайте IDE, что позволит вам включать или выключать режим по мере необходимости, независимо от того, является ли устройство, на котором запущен GameMaker, ноутбуком или нет. По умолчанию флажок не установлен.
  • -
  • Принудительный режим ноутбука: Этот параметр изменяет, будет ли использоваться режим ноутбука или нет, и по умолчанию он включен. Вы можете отключить этот параметр, чтобы режим ноутбука не включался автоматически при запуске IDE на ноутбуке.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Output_Windows.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Output_Windows.htm index ca0080a0c..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Output_Windows.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Output_Windows.htm @@ -1,75 +0,0 @@ - - - - - - Выходные окна - - - - - - - - - - -

Предпочтения окна вывода

-

Output Window Prefs

-

Параметры Окно вывода управляют различными цветовыми и форматирующими параметрами для различных окон вывода на сайте IDE. Каждое из различных окон имеет одинаковый - набор опций, которые перечислены ниже:

-
    -
  • Цвет: Цвет по умолчанию для текста, записываемого в окно.
  • -
  • Имя шрифта: Имя шрифта, который необходимо использовать (доступные шрифты зависят от установленных в вашей системе).
  • -
  • Стиль: Используемый стиль шрифта, например, жирный или курсив (обратите внимание, что не во всех окнах можно использовать одинаковые стили, а также это зависит от используемого шрифта).
  • -
  • Размер: Размер шрифта для данного окна вывода.
  • -
  • Сглаживание: Здесь вы можете установить режим сглаживания для рендеринга шрифта выходных окон. Вы можете позволить IDE принимать решения, выбрав Использовать по умолчанию, или принудительно включить или - Off , выбрав одну из этих опций.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Paths.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Paths.htm index a637ef45a..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Paths.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Paths.htm @@ -1,103 +0,0 @@ - - - - - - Пути - - - - - - - - - - -

Предпочтения пути

-

Path Prefs

-

Параметры Path управляют различными путями к файлам, которые требуются элементам в GameMaker IDE, а также для любых внешних редакторов, которые вам необходимы. Для IDE существуют следующие опции:

-
    -
  • Временный каталог: Место для сохранения всех временных папок. По умолчанию на Windows это -

    \Users\<Username>\AppData\Local\Temp\GameMaker

    - А на macOS это: -

    /var/folders/<Path_Hash>/GameMaker

    -

    -
  • -
  • Каталог кэша IDE: Место для сохранения кэша IDE. По умолчанию на Windows это -

    \Users\<Username>\AppData\Roaming\GameMaker\Cache

    - А на macOS это: -

    /Users/<Username>/.config/GameMaker/Cache

    -

    -
  • -
  • Каталог кэша активов: Место для сохранения кэша активов для каждого проекта. По умолчанию на Windows это -

    \Users\<Username>\AppData\Roaming\GameMaker\Cache

    - А на macOS это: -

    /Users/<Username>/.config/GameMaker/Cache

    -

    -
  • -
  • Расположение "Мои проекты": Место, где GameMaker будет первоначально создавать новые проекты. По умолчанию на Windows это -

    \Users\<Username>\Documents\GameMaker

    - А на macOS это -

    /Users/<Username>/GameMaker

    -

    -
  • -
  • Automatically delete temp directory on close: Установка этого флажка заставит GameMaker автоматически удалять папку Temp, которую он создает в проекте для компиляции и т.д.. Этот параметр включен по умолчанию, а снятие флажка отключает его (это означает, что вам придется вручную удалять все временные файлы).
  • -
  • Автоматически удалять кэш активов при закрытии: Если этот флажок установлен, то папка кэша компилятора активов будет удаляться при выходе из GameMaker. По умолчанию эта опция выключена, и ее включение будет означать, что при каждой загрузке и запуске любого проекта кэш нужно будет создавать заново (что может занять время, зависящее от размера игры).
  • -
  • Автоматически удалять кэш IDE при закрытии: Если этот флажок установлен, то кэш-папка компилятора IDE будет удаляться при выходе из GameMaker. По умолчанию эта опция выключена, и ее включение будет означать, что при каждом запуске GameMaker кэш придется создавать заново.
  • -
  • Удалить временную папку: Нажатие этой кнопки приведет к удалению временной папки проекта.
  • -
  • Удалить кэш активов: Нажатие этой кнопки приведет к удалению кэша активов компилятора для проекта.
  • -
  • Удалить кэш IDE: Нажав на эту кнопку, вы удалите кэш IDE.
  • -
-

Для задания путей к внешним редакторам существуют следующие варианты:

-
    -
  • Путь к внешнему редактору/просмотрщику для SWF-файлов: Если вы работаете с форматом SWF sprites, вы можете установить это значение на путь к предпочитаемой программе просмотра/редактору, и когда вы нажмете кнопку Редактировать изображение в редакторе Sprite, откроется данная программа. По умолчанию путь не задан.
  • -
  • Путь к внешнему редактору/просмотрщику для файлов Spine: Если вы работаете с форматом Spine sprites , вы можете установить это значение на путь к предпочитаемой программе просмотра/редактору, и когда вы нажмете кнопку Редактировать изображение в редакторе Sprite, откроется данная программа. По умолчанию путь не задан.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Power_Saving.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Power_Saving.htm index 40b501197..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Power_Saving.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Power_Saving.htm @@ -1,45 +0,0 @@ - - - - - - Энергосбережение - - - - - - - - - - -

Параметры энергосбережения

-

Power Saving Prefs

-

Параметры энергосбережения здесь влияют на то, сколько энергии CPU и GPU будет использоваться для генерации GameMaker IDE (по сути, это снижает базовую частоту кадров, на которой работает программа, и таким образом снижает энергопотребление).

-

Варианты здесь следующие:

-
    -
  • Частота кадров переменного тока (%): Базовый модификатор частоты кадров IDE при подключении к входу питания. По умолчанию - 100%.
  • -
  • Частота кадров при питании от батареи (%): Базовый модификатор частоты кадров IDE при использовании питания от батареи. По умолчанию 35%.
  • -
  • Фоновая частота кадров (%): Базовый модификатор частоты кадров IDE, когда GameMaker не находится в фокусе (независимо от источника питания). По умолчанию 15%.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Recent_Windows.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Recent_Windows.htm index 3475a9e01..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Recent_Windows.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Recent_Windows.htm @@ -1,44 +0,0 @@ - - - - - - Последние окна - - - - - - - - - - -

Последние Windows предпочтения

-

Recent Wndows Prefs

-

Настройки здесь содержат параметры отображения элементов в списке " Недавние окна":

-
    -
  • Переместить сфокусированные окна в начало списка: Если этот параметр включен и вы щелкните на любом элементе в списке Недавние окна, выбранный элемент будет перемещен в начало списка. По умолчанию эта функция отключена.
  • -
  • Отображать только открытые в данный момент окна: Включение этого параметра заставит список Recent Windows удалять те элементы, которые больше не открыты в рабочей области (т.е. закрытие любого окна также удалит его из списка). По умолчанию эта функция отключена.
  • -
  • Максимальное количество отображаемых окон: Устанавливает максимальное количество ранее открытых окон, которые будут отображаться в списке Recent Windows. По умолчанию - 10.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Resources.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Resources.htm index a06e3d73c..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Resources.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Resources.htm @@ -1,45 +0,0 @@ - - - - - - Ресурсы - - - - - - - - - - -

Предпочтения ресурсов

-

Resources Preferences

-

Настройки здесь содержат параметры того, как определенные ресурсы будут рисоваться в ваших проектах:

-
    -
  • Начальный цвет рисования по умолчанию для новых проектов: Когда вы используете шрифт или рисуете фигуру с помощью функций GameMaker или действий GML Visual без указания цвета, будет использоваться цвет, заданный здесь. Цвет по умолчанию - является белый ( ARGB: $FFFFFFFF).
  • -
  • Начальный цвет окна по умолчанию для новых проектов: Эта опция используется для установки цвета фона HTML-страницы для цели HTML5, а также для установки цвета, отображаемого вне комнат на всех целях (включая HTML5). Цвет по умолчанию - черный (ARGB: $000000FF).
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Workspace.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Workspace.htm index 7d7072442..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Workspace.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General/Workspace.htm @@ -1,50 +0,0 @@ - - - - - - Рабочее пространство - - - - - - - - - - -

Предпочтения рабочего пространства

-

Workspace Prefs

-

Настройки здесь влияют на то, как вы будете перемещаться в различных рабочих пространствах GameMaker рабочие пространства. Опции следующие:

-
    -
  • Клавиатурная навигация по рабочему пространству Диапазон степеней: В рабочей области может быть открыто несколько окон для различных объектов и ресурсов, поэтому для быстрого перемещения между ними можно использовать комбинацию клавиш / + + <Arrow Keys>. Учитывая, что окна в рабочей области не выровнены по сетке, IDE должен выбрать, какое окно вы имеете в виду, когда нажимаете любое из 8 возможных направлений, и - эта опция позволяет задать "угол обзора", который используется. Значение по умолчанию составляет 40°.
  • -
  • Отступы столбцов цепочки рабочего пространства (px): Элементы рабочего пространства часто "связаны" друг с другом (например, редактор кода связан с редактором событий, а редактор событий связан с редактором объектов), и этот параметр позволяет установить - расстояние по горизонтали между любыми двумя связанными окнами. Значение по умолчанию - 30px.
  • -
  • Отступ строки цепочки рабочего пространства (px): Как упоминалось выше, элементы рабочего пространства часто "цепляются" друг к другу, и этот параметр позволяет установить вертикальное расстояние между любыми двумя цепочками. Значение по умолчанию - 20px.
  • -
  • Количество сегментов цепочки рендеринга рабочего пространства: Здесь вы можете установить максимальное количество сегментов для цепочек рендеринга. Уменьшение этого значения может повысить производительность на низкопроизводительных машинах. Значение по умолчанию равно 20.
  • -
  • Цвет звеньев цепи рабочего пространства: Это цвет, который будет использоваться для отображения цепей между элементами рабочего пространства. Цвет по умолчанию - ARGB $99DD00.
  • -
  • Навигация по рабочему пространству с помощью клавиатуры сбрасывает масштаб: Как упоминалось выше, вы можете переходить от окна к окну в рабочей области с помощью сочетаний клавиш. Вы также можете увеличивать и уменьшать масштаб рабочей области с помощью кнопок / + колесико мыши . Установка этой опции означает, что если вы увеличили масштаб рабочей области и используете горячие клавиши для перехода к другому окну, то рабочая область будет возвращена к виду 1:1 и центрирована на выбранном окне. По умолчанию эта опция выключена.
  • -
  • Цепочки рабочих пространств могут пересекаться: При включении этого параметра цепочки рабочих пространств могут пересекаться и накладываться друг на друга. По умолчанию этот параметр выключен.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General_Preferences.htm index 1ad290b9c..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/General_Preferences.htm @@ -1,80 +0,0 @@ - - - - - - Общие предпочтения - - - - - - - - - - -

Общие предпочтения

-

Общие параметры используются для определения общего поведения среды GameMaker IDE. Самые общие из них перечислены на главной странице, в то время как многие другие разделены на несколько подкатегорий, которые описаны далее на этой странице.

-
    -
  • Язык IDE: Эта опция позволяет выбрать язык для сайта IDE из прилагаемого списка. По умолчанию это английский язык.
  • -
  • Шрифт IDE: Эта опция позволяет вам изменить шрифт, используемый на сайте IDE. По умолчанию это Open Sans.
  • -
  • Максимальная частота кадров редактора GameMaker: Этот параметр позволяет установить максимальную частоту кадров, с которой будет обновляться GameMaker IDE, что позволяет установить частоту кадров в соответствии со скоростью обновления вашего монитора. Значение по умолчанию - 60.
  • -
  • Скин IDE: Здесь вы можете выбрать один из различных скинов, которые может использовать IDE. По умолчанию GameMaker поставляется с двумя скинами, светлым и темным, и при начальной установке используется темный скин.
  • -
  • Аудиоустройство по умолчанию: Здесь вы можете выбрать аудиоустройство по умолчанию, которое будет использовать GameMaker IDE. Вы можете обновить список, нажав кнопку Refresh Button .
  • -
  • Автоматическая реакция на подтверждение выхода: Эта опция позволяет установить, будет ли показано подтверждающее сообщение при выходе из GameMaker. По умолчанию установлено значение "показать сообщение", но его можно установить так, чтобы пропустить сообщение, как если бы вы нажали кнопку OK.
  • -
  • Automatic Response to The System Font Changed Dialog: Этот параметр позволяет установить, следует ли показывать подтверждающее сообщение, когда системный шрифт был добавлен, удален или отредактирован. По умолчанию установлено значение "показать сообщение", но его можно установить, чтобы пропустить сообщение, как если бы вы нажали кнопку OK.
  • -
  • Включить уведомления: Установка этого флажка позволит IDE показывать уведомления о новых исполнениях и т.д.. По умолчанию эта опция включена.
  • -
  • Тайм-аут уведомления (мс): Устанавливает продолжительность времени (в миллисекундах), в течение которого будет отображаться уведомление. По умолчанию - 6000.
  • -
  • Выход при выходе: Если эта опция отмечена, то IDE автоматически завершит сеанс пользователя при закрытии GameMaker. Эта опция предназначена в первую очередь для пользователей системы образования, поскольку, если она отмечена, это означает, что при каждом завершении работы программы пользователь будет выходить из системы, освобождая место в сессии для других пользователей. По умолчанию эта функция выключена.
  • -
  • Показывать экран приветствия при запуске: Этот параметр включен по умолчанию и просто указывает GameMaker показывать короткую заставку при запуске программы. Если снять флажок, то заставка не будет отображаться.
  • -
  • Разрешить закрытие пустых вкладок с помощью сочетания клавиш: Вы можете закрыть все открытые вкладки с помощью сочетания клавиш / + W, но если вы отключите эту опцию, сочетание клавиш перестанет работать. По умолчанию эта опция включена.
  • -
  • Открытие новых ресурсов для редактирования при перетаскивании файлов в IDE: Некоторые ресурсы (например, sprites или звуки) можно перетащить на основную рабочую область в GameMaker IDE, и они будут обнаружены и добавлены как новый ресурс в браузере ресурсов. По умолчанию соответствующий редактор ресурсов также будет открыт для редактирования, но если снять флажок с этой опции, то редакторы не будут открыты, и вам придется открывать их вручную.
  • -
  • Открывать новые ресурсы для редактирования при создании: Если этот флажок установлен, то каждый раз, когда вы создаете новый ресурс в браузере активов, соответствующий редактор ресурсов будет открываться автоматически. Этот параметр установлен по умолчанию, и снятие флажка означает, что вам придется вручную открывать все вновь созданные ресурсы.
  • -
  • Автоматически перезагружать измененные файлы: Если этот флажок установлен, то IDE будет автоматически сканировать и проверять файлы на предмет того, не были ли они изменены вне GameMaker, и перезагружать их, если это так.
  • -
  • Отключите анимацию переходов IDE: GameMaker IDE имеет ряд анимированных переходов для таких вещей, как открытие окон и т.д... однако они не всем по вкусу, и вы можете ощутить прирост производительности, если отключите их на старых или маломощных машинах. Вы можете отключить их здесь, по умолчанию они включены.
  • -
  • Opt-in To Feedback Surveys: Когда эта опция отмечена, вы сообщаете GameMaker, что желаете участвовать в опросах обратной связи, то есть время от времени во время работы будет появляться сообщение об участке, над которым вы работаете, с просьбой поставить оценку и оставить отзыв. По умолчанию эта опция включена.
  • -
  • Включить переопределение DPI: Эта опция позволяет переопределить настройки DPI по умолчанию на свои собственные. Вы должны сначала включить опцию, а затем установить либо значение Raw DPi Override (значение по умолчанию 96), либо процентное соотношение DPi (значение по умолчанию 100%). После изменения вам будет предложено перезапустить IDE, что может потребовать сохранения любой работы, выполняемой в текущем открытом проекте. Обратите внимание, что минимальный процент DPi составляет 50%, а максимальный - 500%, и если вы наведете курсор мыши на значок информации, то увидите рекомендуемое максимальное значение для используемого дисплея:
    -
    - Обратите внимание, что если вы превысите рекомендуемое значение DPi для монитора, появится уведомление, позволяющее сбросить DPi. -
  • -
  • Allow empty tabs to be closed via the keyboard shortcut: You can close any open Tabs using the keyboard shortcut Icon CTRL / Icon CMD + W, but if you disable this option that shortcut will no longer work. This is enabled by default.
  • -
-

Выше перечислены основные опции, доступные в общих настройках, но есть ряд дополнительных опций, доступных вам в подкатегориях, перечисленных ниже:

-

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Image_Editor_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Image_Editor_Preferences.htm index c39350c9b..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Image_Editor_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Image_Editor_Preferences.htm @@ -1,149 +0,0 @@ - - - - - Предпочтения редактора изображений - - - - - - - - - - -

Предпочтения редактора изображений

-

Image Editor Prefs

-

Параметры редактора изображений используются для определения того, как выглядит и ощущается окно редактора изображений. Ниже перечислены общие параметры:

-
    -
  • Развернуть sprite наложение элементов управления по умолчанию: Если этот флажок установлен, элементы управления sprite и информация о кадре будут отображаться в редакторе изображений каждый раз, когда вы открываете sprite для редактирования (его можно снова закрыть с помощью кнопки свернуть - , но позже он снова откроется при редактировании sprite ). Если флажок не установлен, элементы управления sprite и информация о рамке будут скрыты при открытии . - sprite . По умолчанию флажок не установлен.
  • -
  • Режим зацикливания по умолчанию: Кнопка цикла в редакторе изображений может быть настроена на работу в двух различных режимах: либо воспроизведение один раз, при котором анимация остановится, когда дойдет до последнего кадра, либо цикл с начала, при котором анимация вернется - или "пинг-понг", когда анимация будет идти вверх по изображениям до конца, а затем снова вниз по ним до начала. По умолчанию здесь используется значение "loop".
  • -
  • Рисовать тонкий контур выделения: Если флажок установлен, то контур выделения будет иметь абсолютную ширину 1px, независимо от масштаба изображения. Если флажок снят, то контур выделения будет иметь относительную ширину 1px. - и масштабироваться вместе с изображением. По умолчанию этот параметр отмечен.
  • -
  • Основной цвет контура выделения: Контур раздела представляет собой пунктирную линию, чередующуюся между двумя цветами. Этот параметр позволяет установить первый из этих цветов (включая альфа) и имеет значение по умолчанию ARGB #FFFFFD0.
  • -
  • Вторичный цвет контура выделения: Контур раздела представляет собой пунктирную линию, которая чередуется между двумя цветами. Этот параметр позволяет задать второй из этих цветов (включая альфа), значение по умолчанию - ARGB #0000D0.
  • -
  • Цвет фона редактора: При редактировании кадра sprite изображение может увеличиваться или уменьшаться или не помещаться в окне рисунка целиком, в этом случае будет отображаться цвет фона, который можно задать здесь. Значение по умолчанию - ARGB - #282828FF.
  • -
-

Параметры редактора изображений также имеют следующие подкатегории:

-

Справочная информация

-
-

- Collapse Nodes Icon

-

Здесь вы можете задать параметры фона, на котором будут редактироваться изображения sprite. По умолчанию это сетка из серых квадратов, но вы можете использовать следующие настройки для ее изменения:

-
    -
  • - Стиль холста: Здесь вы устанавливаете "стиль" для фона, который может быть либо " - Блочный узор" или " - Одноцветный". Одноцветный просто устанавливает фон на выбранный вами цвет (с помощью параметра Цвет 1, как объясняется ниже), в то время как блочный узор является параметром по умолчанию (который также может быть изменен с помощью остальных - опций, показанных ниже). По умолчанию - " - Блочный узор".
  • -
  • - Размер блока холста: Когда вы выбрали - Block Pattern для фона, здесь можно задать размер отдельного блока. По умолчанию - 16px, минимальное значение - 2px, максимальное - 256px.
  • -
  • - Основной цвет холста: Если для фона выбран - Single Colour для фона, то используется именно этот цвет. Вы можете щелкнуть по образцу цвета, чтобы открыть редактор цветов и изменить его. При использовании опции - Block Pattern, этот параметр задает первый цвет для чередующихся блоков. По умолчанию используется цвет ( - ARGB) #FFC3C3C3.
  • -
  • - Холст вторичного цвета (стиль блочного рисунка): Если для фона выбран - Block Pattern для фона, то цвет, используемый для чередования с цветом 1 (см. выше), будет именно этот. Вы можете щелкнуть по образцу цвета, чтобы открыть редактор цветов и изменить его. Цвет по умолчанию - (ARGB) #FF808080.
  • -
-

-
-

Диалоги подтверждения

-
-

- Image Editor Background Prefs

-

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

-
    -
  • - Автоматическая реакция на удаление кадров: Когда вы удаляете кадр, по умолчанию появляется сообщение с вопросом, уверены ли вы, что хотите это сделать. Установив этот параметр на "OK", вы можете удалить это сообщение и разрешить удаление кадра - без дальнейших сообщений. По умолчанию установлено значение "Показать сообщение".
  • -
  • - Автоматическая реакция на замену изображений при импорте полос: Когда вы выбираете Импорт полосы из выпадающего меню Изображение, вы получите сообщение с предупреждением о том, что вы перезапишете все изображения, уже имеющиеся в ресурсе sprite, - с возможностью продолжить или нет. Здесь вы можете указать, показывать ли это сообщение, или пусть IDE просто выберет опцию "Да" или "Нет". Значение по умолчанию - "Показать сообщение".
  • -
  • - Автоматический ответ на фиксацию изменений при смене инструмента: Когда вы меняете инструменты рисования после редактирования кадра, по умолчанию появляется сообщение с вопросом, хотите ли вы зафиксировать внесенные изменения. Установив этот параметр на "ОК", вы - можно убрать это сообщение и разрешить фиксацию редактирования кадра без последующих сообщений при смене инструмента. Если вы выберете "Нет", то редактирование рамки будет молча отменено при смене инструментов. По умолчанию установлено значение "Показать - сообщение". -
  • -
  • - Автоматическая реакция на предупреждение о заблокированном слое: Если вы попытаетесь отредактировать заблокированный слой, то по умолчанию появится сообщение, информирующее вас о том, что вы не можете этого сделать. Если вы установите для этого параметра значение "OK", то никакого сообщения показано не будет - и редактирование будет тихо провалено.
  • -
  • - Автоматический ответ на предупреждение о групповом выделении: Если вы выделите несколько слоев в редакторе слоев, а затем попытаетесь рисовать или редактировать, то по умолчанию будет показано сообщение о том, что это невозможно. Вы можете выбрать "OK" - здесь, чтобы убрать это сообщение и молча не редактировать изображения вместе, пока не будет выбран только один слой. По умолчанию установлено значение "Показать сообщение".
  • -
-

-

-
-

Настройки сетки

-
-

- Сетка - Параметры настройки используются для задания способа представления сетки изображений, при этом доступны следующие варианты:

-
    -
  • - Расстояние между горизонтальными линиями сетки (px): Это значение задает расстояние между горизонтальными линиями сетки изображений. Значение по умолчанию равно 1px.
  • -
  • - Расстояние между вертикальными линиями сетки (px): Это значение задает расстояние между вертикальными линиями сетки изображений. Значение по умолчанию равно 1px.
  • -
  • - Отображать сетку: Если этот флажок установлен, то редактор изображений будет открываться с включенной сеткой изображений. По умолчанию выключено.
  • -
  • - Привязка к сетке: Если этот флажок установлен, то редактор изображений будет автоматически привязывать определенные инструменты к сетке изображения. По умолчанию выключено.
  • -
  • - Цвет линии сетки: Здесь можно задать цвет (включая альфа-значение) для сетки изображения. По умолчанию это ( - ARGB) #FF000000.
  • -
-

-
-

Инструменты

-
-

- Здесь вы можете установить различные параметры - для работы и отображения некоторых инструментов рисования. -

-

Если вы используете - Arc Tool - , то здесь - можно задать различные цвета, используемые для рисования свойств узла:

-
    -
  • - Цвет опорных точек: задает цвет для различных опорных точек на сплайне/дуге. По умолчанию ( - ARGB) #FFFF0000.
  • -
  • - Цвет контрольной точки: Установите цвет для каждой из "ручек" контрольной точки на опорной точке. По умолчанию (ARGB) #FFFF0000.
  • -
  • - Цвет касательной линии: задает цвет линий, связывающих контрольные точки с привязками. По умолчанию (ARGB) #FF00FFFF.
  • -
  • - Цвет выделенной точки: задает цвет, который будет использоваться для всех выделенных опорных точек на сплайне/дуге. По умолчанию (ARGB) #FF00FF00.
  • -
  • - Размер точки: Установите размер различных точек привязки и контрольных точек, которые будут использоваться. По умолчанию - 10px.
  • -
-
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Language_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Language_Preferences.htm index 61eb89296..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Language_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Language_Preferences.htm @@ -1,47 +0,0 @@ - - - - - - Языковые предпочтения - - - - - - - - - - -

Языковые предпочтения

-

The Language Preferences

-

Параметры языка содержат опции для языка GameMaker:

-
    -
  • Язык сценариев по умолчанию: Выберите между GML Code и GML Visual для всех сценариев, которые создаются во всех проектах. Дополнительную информацию см. в разделе Язык GameMaker.
  • -
-

-

В этом разделе содержатся следующие дополнительные меню предпочтений:

- -

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Marketplace_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Marketplace_Preferences.htm index b665f639f..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Marketplace_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Marketplace_Preferences.htm @@ -1,74 +0,0 @@ - - - - - - Предпочтения рынка - - - - - - - - - - -

Предпочтения рынка

-

The Marketplace Preferences

-

Настройки Marketplace Preferences используются для настройки сертификата Marketplace для загрузки или покупки активов. Форма сертификата состоит из следующих разделов, если вы уже создали сертификат (см. - далее на этой странице для получения подробной информации о том, как создать сертификат):

-
    -
  • Файл сертификата: В этом разделе вы указываете файл *.pem, который Marketplace использует для сертификации активов. Если у вас есть ранее созданный сертификат, то вы можете нажать кнопку браузера файлов - и добавить его в форум, но если у вас нет сертификата и вы хотите его создать, то вам следует опустить любую информацию здесь и вместо этого нажать на кнопку Создать новый сертификат (пояснение ниже).
  • -
  • Пароль сертификата: Здесь необходимо ввести пароль сертификата для выбранного выше файла. Пароль создается при первом создании файла *.pem (см. раздел Создание нового сертификата, - ниже) и будет необратимо связан с созданным файлом сертификата.
  • -
  • Проверить: После заполнения вышеуказанных полей необходимо нажать эту кнопку, чтобы убедиться, что пароль и выбор файла верны и работают вместе.
  • -
-

Диалоги подтверждения

-
-

- Здесь вы можете выбрать поведение диалогов подтверждения при работе с ресурсом из браузера активов. Доступны следующие варианты:

-
    -
  • - Автоматическая реакция на удаление контента в автономном режиме: Когда вы удаляете рыночный актив из своей библиотеки без веб-соединения, вы обычно получаете предупреждение с вопросом, уверены ли вы, что хотите продолжить. Если установить этот параметр на "ОК" - сообщение будет подавлено, как если бы вы нажали кнопку "OK", чтобы продолжить. Значение по умолчанию - "Показать сообщение".
  • -
-

-
-

-

-

Создание нового сертификата

-

Если вы ранее не создавали файл сертификата для использования Marketplace, то вам следует нажать кнопку " Создать новый сертификат " в нижней части этой формы. После этого откроется новое окно, в котором вам будет предложено - ввести следующую информацию:

-
    -
  • Имя издателя: Это имя, которое будет использоваться в качестве имени издателя для актива. На панели управления Marketplace вы можете настроить различных издателей, если вам это необходимо, и каждый из них должен иметь свой собственный соответствующий *.pem - файл сертификата.
  • -
  • Пароль сертификата: Здесь вы должны указать уникальный пароль для создаваемого файла сертификата. Будьте внимательны при выборе пароля, так как вы не сможете изменить его позже, и если вы не указали правильный пароль для файла сертификата в - вы не сможете обновить существующие активы Marketplace (или загрузить новые).
  • -
-

Указав эти данные, вы можете нажать кнопку Создать сертификат, чтобы - сгенерировать файл *.pem. Вам будет предложено указать место сохранения и имя файла, которые следует записать для дальнейшего использования. После этого новый файл и пароль будут автоматически - и пароль будут автоматически добавлены в поля формы, перечисленные выше, и вы сможете нажать на кнопку Проверить , чтобы убедиться, что сертификат был сгенерирован правильно.

-

ПРИМЕЧАНИЕ: Мы рекомендуем вам сделать снимок экрана с фактическими настройками, а также сделать копию файла *.pem . Оба файла следует сохранить в безопасном месте для дальнейшего использования или на случай, если вам понадобится - переустановить GameMaker. Вы не можете обновлять уже загруженные активы, если только обновленный пакет не подписан тем же сертификатом, которым был подписан оригинал.
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Object_Editor_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Object_Editor_Preferences.htm index 81da80fd4..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Object_Editor_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Object_Editor_Preferences.htm @@ -1,53 +0,0 @@ - - - - - - Предпочтения редактора объектов - - - - - - - - - -

Предпочтения редактора объектов

-

-

Параметры редактора объектов используются для определения определенных свойств окна редактора объектов. Основной раздел содержит следующие опции:

-
    -
  • Щелчок для открытия метода события: Этот параметр определяет, нужно ли выполнить двойной или одинарный щелчок на событии объекта, чтобы открыть его. По умолчанию установлено значение двойного щелчка.
  • -
  • Наследуемые события альфа: Эта опция позволяет изменить альфа, с которой будут рисоваться все унаследованные события в списке событий объекта. По умолчанию установлено значение 0.5 (значения должны быть между 0 и 1).
  • -
  • Формат метки события: Здесь вы можете включить или выключить различные возможные тексты, которые могут быть применены к метке события в списке событий редактора объектов. По умолчанию включено только описание события.
  • -
  • Добавить содержимое события по умолчанию: По умолчанию эта опция включена, и все, что она делает, это добавляет простой комментарий в редактор кода для всех новых событий, чтобы напомнить вам, что вы можете добавить туда свой код.
  • -
  • Содержание события по умолчанию: Здесь вы можете редактировать комментарии, которые по умолчанию добавляются в окно кода для новых событий.
  • -
-

Следующая подкатегория также существует для редактора объектов:

-

Диалоги подтверждения

-
-

The Object Editor Confirm Dialog Preferences

-

В этом разделе рассматриваются диалоговые окна, которые могут быть показаны при использовании редактора объектов, при этом доступна следующая опция:

-
    -
  • Автоматическая реакция на преобразование GML Visual в Gamemaker Language: Вы можете использовать правую кнопку мыши в рабочей области GML Visual, чтобы выбрать опцию преобразования всего GML Visual для этого события в GML код. По умолчанию здесь выводится предупреждающее сообщение с вопросом, хотите ли вы продолжить, но вы можете установить значение "Хорошо", и диалог не будет показан перед преобразованием.
  • -
  • Автоматическая реакция на превышение лимита вершин физики: Этот параметр можно использовать для управления всплывающим сообщением, которое будет показано, когда вы превысите допустимое количество вершин в физическом редакторе формы. По умолчанию здесь отображается предупреждающее сообщение, но вы можете установить значение "Ок", и диалог не будет показан.
  • -
  • Автоматический выбор при удалении события: Этот параметр можно использовать для управления всплывающим сообщением, которое показывается при удалении события в списке событий редактора объектов. Действием по умолчанию здесь является показ предупреждающего сообщения, но вы можете установить значение "Ок", и диалог не будет показан.
  • -
-
-

-

- - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Plugin_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Plugin_Preferences.htm index 70078ae13..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Plugin_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Plugin_Preferences.htm @@ -1,62 +0,0 @@ - - - - - - Предпочтения плагина - - - - - - - - - - -

Предпочтения плагина

-

Параметры плагинов используются для управления любыми дополнительными плагинами, которые были добавлены в GameMaker IDE. По умолчанию здесь есть один раздел, посвященный плагину Source Control для интеграции проектов GameMaker с Git.

-

Контроль источников (Git)

-
-

В этом разделе рассматриваются настройки, которые необходимы для работы плагина Git SCM с GameMaker.

-
    -
  • Путь к исполняемому файлу Git: Это местоположение исполняемого файла Git, который GameMaker использует для всех команд Source Control. Как показано на рисунке выше, он будет расположен в папке cmd вашей установки Git.
  • -
-

Ниже вы можете настроить инструмент Merge Tool и Diff Tool для Source Control с этими параметрами(необязательно):

-
    -
  • Слияние (расположение инструмента): здесь указывается полный путь к файлу инструмента слияния Git.
  • -
  • Слияние (опции инструмента): В этом поле можно добавить любые дополнительные команды, которые будут выполняться при использовании инструмента слияния.
  • -
  • Diff (расположение инструмента): Здесь вы указываете полный путь к файлу инструмента Git diff.
  • -
  • Diff (опции инструмента): В этом поле вы можете добавить любые дополнительные команды, которые будут выполняться при использовании инструмента diff.
  • -
-

Finally there are two more options that affect how Git is set up in new projects: 

-
    -
  • Add skeleton .git defaults to new projects: When this setting is enabled, GameMaker will add .gitignore and .gitattributes Files to new projects that you create. It is enabled by default.
  • -
  • Add skeleton .git defaults to imported projects: When this setting is enabled, GameMaker will add .gitignore and .gitattributes Files to projects that you import from a .yyz file. It is enabled by default.
  • -
-
    -
-
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Redefine_Keys_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Redefine_Keys_Preferences.htm index a1928b31a..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Redefine_Keys_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Redefine_Keys_Preferences.htm @@ -1,88 +0,0 @@ - - - - - - Переопределение предпочтений клавиш - - - - - - - - - - -

Переопределение предпочтений клавиш

-

Раздел "Переопределить клавиши " раздела "Параметры" позволяет вам изменить сопоставления для различных сочетаний клавиш, предусмотренных в IDE GameMaker.

-

Поиск

-

В верхней части находится строка поиска, которую можно использовать для поиска определенных команд, введя название (например, "Копировать"), комбинацию клавиш (например, "CTRL+C") или местоположение (например, "Текстовый редактор").

-

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

-

-

Рядом со строкой поиска находится меню Фильтр, которое описано в отдельном разделе далее на этой странице.

-

Список команд

-

В "Списке команд" отображаются все доступные ярлыки, которые можно переназначить, разделенные на различные категории в зависимости от расположения этих ярлыков. При нажатии на любое место в этом списке отображаются команды, которые можно использовать в этом месте:

-

Информация по каждой команде разделена на две колонки:

-
    -
  • Команда: Это название команды/короткого пути и описание действия, которое она выполняет.
  • -
  • Клавиши: Здесь отображается текущее отображение клавиатуры для команды. Вы можете дважды щелкнуть на любом элементе в этой колонке, чтобы переназначить команду, просто нажав соответствующую комбинацию клавиш на клавиатуре (они должны удерживаться одновременно, аналогично тому, как будет использоваться ярлык). Как только вы отпустите новую комбинацию клавиш, она будет зарегистрирована и применена к команде. -
    -
    Дважды щелкните по ярлыку, чтобы ввести новый!
    -
    - Нажатие кнопки во время редактирования команды выведет вас из режима редактирования и не приведет к изменению выбранной команды. -
  • -
-

Вы можете изменить сортировку списка команд, нажав на заголовок столбца (либо "Команда", либо "Ключи"), чтобы отсортировать список, используя значения из этого столбца, чередуя возрастание и убывание при каждом нажатии.

-

Окно столкновения

-

Если вы попытаетесь установить комбинацию клавиш, которая уже используется другими командами, вы увидите специальное окно "Clash":
- В этом окне будет показано местоположение и имя команды, которая уже использует комбинацию клавиш, которую вы пытаетесь использовать. В случае если комбинация клавиш используется несколькими командами, в списке будут показаны все из них.
-
- Здесь у вас есть две опции: "Отменить" и "Переопределить (ВСЕ) и переназначить": -

-
    -
  • Нажатие кнопки "Отмена" приведет к закрытию окна Clash и не внесет изменений ни в одну команду.
  • -
  • Нажатие кнопки "Override (ALL) and Reassign" назначит новую комбинацию клавиш выбранной команде и очистит привязки всех других команд, которые ранее использовали ту же комбинацию.
  • -
-

После использования функции "Переопределить и переназначить" GameMaker выделит переопределенную команду в списке команд, чтобы вы могли назначить ей новую комбинацию клавиш. Если было отменено несколько команд, фильтр будет изменен, чтобы отобразить только эти команды, и вы сможете применить к ним новые сочетания клавиш. Этот фильтр можно очистить, нажав на кнопку "Очистить".
-
- Если вы хотите использовать другую привязку для выбранной команды, вы можете развернуть раздел "Предлагаемые свободные клавиши", чтобы увидеть список комбинаций клавиш, которые не используются нигде на сайте IDE. Нажав на "Использовать" рядом с любой из этих комбинаций, вы назначите ее выбранной команде и решите проблему. -

-

Меню фильтра

-

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

-
    -
  • "Показывать несвязанные команды": Включение этого параметра отобразит все команды, которые были развязаны, т.е. их привязки были удалены. Команды, которые остаются несвязанными, не могут быть использованы, так как для них не назначена комбинация клавиш.
  • -
  • "Показывать только переопределенные команды": Включение этого параметра отобразит только те команды, которые были изменены вручную, т.е. их привязки отличаются от привязок по умолчанию.
  • -
-

Ниже есть множество опций, позволяющих указать места, которые будут отображаться в списке команд. По умолчанию установлен флажок "All Locations", что означает, что вы увидите команды из всех мест на сайте IDE. Снятие флажка "All Locations" снимет флажки со всех остальных пунктов, расположенных ниже, что позволит вам вручную выбрать те, которые вы хотите видеть; например, снятие флажка со всех пунктов и установка флажка "Image Editor" покажет вам только команды, которые можно использовать в редакторе изображений.

-

Очистка команд

-

Двойной щелчок на существующей комбинации клавиш позволит вам изменить ее, однако во время этого вы можете нажать на кнопку "Очистить" под списком команд, чтобы очистить привязку для этой команды.

-

Если вы случайно переопределили некоторые сочетания клавиш и хотите вернуть их к настройкам по умолчанию, вы можете нажать кнопку "Восстановить настройки по умолчанию" в верхней части окна "Параметры", чтобы вернуть все команды к их отображениям по умолчанию, или посетить страницу " Сочетания клавиш", чтобы проверить привязки по умолчанию и вернуть команды вручную.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Room_Editor_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Room_Editor_Preferences.htm index 63c0afb42..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Room_Editor_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Room_Editor_Preferences.htm @@ -1,104 +0,0 @@ - - - - - - Предпочтения редактора помещений - - - - - - - - - - -

Предпочтения редактора помещений

-

-

Параметры редактора помещений используются для определения внешнего вида и поведения редактора помещений. Общие настройки следующие:

-
    -
  • Расстояние начала затухания цепи (px): Устанавливает расстояние от родительского окна, на котором звено цепи будет исчезать. По умолчанию 10px.
  • -
  • Расстояние остановки затухания цепи (px): Устанавливает расстояние от родительского окна до конца затухания звена цепи. По умолчанию - 100px.
  • -
  • Минимальная альфа цепочки: Устанавливает конечное значение альфа после точки затухания для цепочки альфа. По умолчанию 0,3.
  • -
  • Расстояние между глубинами слоев по умолчанию: Когда вы создаете несколько слоев в редакторе помещений, им автоматически присваивается глубина, основанная на их положении в списке слоев. Эта глубина увеличивается на величину, указанную здесь. Значение по умолчанию равно 100, поэтому каждый слой будет иметь глубину предыдущего слоя + 100.
  • -
  • Ширина комнаты по умолчанию: задает начальную ширину, которая будет выбрана по умолчанию для новой комнаты. По умолчанию это 1024px.
  • -
  • Высота помещения по умолчанию: Устанавливает начальную высоту, которая будет выбрана по умолчанию для новой комнаты. По умолчанию - 768px.
  • -
  • Добавьте слои комнаты по умолчанию: Когда вы создаете любой новый ресурс комнаты, GameMaker генерирует для вас несколько "базовых" слоев - фоновый слой и слой экземпляра. Вы можете отключить это поведение здесь, чтобы новые комнаты не имели заранее созданных слоев. По умолчанию эта функция включена.
  • -
  • Показывать виды помещения: Если в комнате активны виды, это отображается контуром, где границы вида будут находиться в комнате, и видимость этой области можно переключить с помощью специальной кнопки в самом редакторе. Однако вы можете выбрать, чтобы границы вида были невидимы при открытии комнаты, сняв флажок с этой опции (кнопку все равно можно использовать, чтобы показать их снова). Значение по умолчанию - on, что делает границы вида видимыми при открытии комнаты.
  • -
  • Цвет выделения инспектора: Цвет, используемый для выделения элемента, выбранного в списке мультивыбора инспектора.
  • -
  • Другие цветовые параметры: Они связаны с различными цветами, которые используются во всем интерфейсе редактора помещений, и если вы дважды щелкните на любом из образцов, вы сможете изменить цвет для этой настройки.
  • -
  • Настройка мастер-громкости: Настройка мастер-громкости для воспроизведения предварительного просмотра в редакторе помещений, значение от 0 до 1. По умолчанию - 1.
  • -
-

Для редактирования доступны дополнительные опции из перечисленных ниже подкатегорий:

-

Диалоги подтверждения

-
-

-

Параметры Confirm Dialogs используются для изменения сообщений, которые отображаются в редакторе помещений при выполнении определенных действий. Вы можете изменить следующие сообщения:

-
    -
  • Автоматическая реакция на обновление глубины слоев: при изменении глубины слоев отображается сообщение, предупреждающее, что при этом автоматически обновляются все остальные глубины слоев. С помощью этой опции можно выбрать отображение сообщения, обновление слоев, как если бы вы нажали "Ок", или отсутствие обновления, как если бы вы нажали "Нет".
  • -
  • Автоматическая реакция на предупреждение о блокировке слоя: Если вы попытаетесь удалить слой в комнате, а он окажется заблокированным, по умолчанию вам будет показано сообщение. Однако если установить этот параметр в значение "Ok", сообщение не будет показано, и вы просто не сможете удалить слой.
  • -
  • Автоматическая реакция на предупреждение о блокировке элемента: Если вы попытаетесь удалить элемент, который оказался заблокированным, то по умолчанию вам будет показано сообщение. Однако если установить для этого параметра значение "Ok", сообщение не будет показано, и вы просто не сможете удалить элемент.
  • -
  • Автоматическая реакция на предупреждение о блокировке слоя владельца элемента: Если вы попытаетесь удалить элемент на слое, а слой окажется заблокированным (даже если элемент не заблокирован), то по умолчанию будет показано сообщение о невозможности удаления. Однако если установить этот параметр в значение "Ok", то сообщение не будет показано, и вы просто не сможете удалить элемент.
  • -
  • Создание нового слоя актива при перетаскивании секвенций/прайтов на неподходящие слои: Если вы попытаетесь добавить sprite (или последовательность) в слой, который не является слоем активов, то по умолчанию будет показано сообщение, информирующее о том, что это не может быть сделано, и спрашивающее, хотите ли вы создать новый слой активов для перетаскиваемого элемента. Однако при установке этого параметра на "Ok" сообщение не будет показано и автоматически будет создан новый слой для sprites (и последовательности).
  • -
  • Автоматическая реакция на удаление элемента родительской комнаты: Здесь вы можете выбрать, что произойдет, если вы удалите элемент, который является частью родительской комнаты (и поэтому присутствует во всех дочерних комнатах). По умолчанию отображается предупреждающее сообщение, и вы можете решить, что делать, но вы можете выбрать "Удалить все", чтобы подавить сообщение и продолжить удаление элемента из родительской комнаты и всех ее дочерних комнат, или выбрать "Сохранить все", чтобы подавить сообщение и прервать удаление.
  • -
  • Автоматическая реакция на удаление слоя родительской комнаты: Здесь вы можете выбрать, что произойдет, если вы удалите слой, который является частью родительской комнаты (и поэтому присутствует во всех дочерних комнатах). По умолчанию отображается предупреждающее сообщение, и вы можете решить, что делать, но вы можете установить значение "Удалить все", чтобы подавить сообщение и продолжить удаление слоя из родительской комнаты и всех ее дочерних комнат, или выбрать "Сохранить все", чтобы подавить сообщение и прервать удаление.
  • -
  • Автоматическая реакция на ошибку перетаскивания недопустимого актива: Если вы попытаетесь добавить актив в слой, который не предназначен для данного типа актива (например, добавить путь в слой экземпляра), то по умолчанию будет показано сообщение, информирующее вас о том, что это невозможно сделать. Однако при установке этого параметра на "Ok" сообщение не будет показано, и вы просто не сможете добавить актив. Обратите внимание, что этот параметр не применяется к экземплярам, sprites или последовательностям.
  • -
  • Создание нового слоя экземпляра при перетаскивании объектов на неподходящие слои: Если вы попытаетесь добавить экземпляр объекта в слой, который не является слоем экземпляра, то по умолчанию будет показано сообщение о том, что это невозможно сделать, и задан вопрос, хотите ли вы создать новый слой экземпляра для перетаскиваемого элемента. Однако при установке этого параметра на "Ok" сообщение не будет показано и автоматически будет создан новый слой для экземпляра.
  • -
  • Автоматическая реакция на ошибку перетаскивания при недопустимом выборе слоя: Здесь вы можете выбрать, что произойдет, если вы перетащите ресурс в редактор помещения, когда вы выбрали несколько слоев в редакторе слоев (или вообще не выбрали ни одного слоя). По умолчанию отображается предупреждающее сообщение, но вы можете установить этот параметр на "OK", чтобы подавить сообщение и продолжить работу, не добавляя никаких ресурсов.
  • -
  • Автоматическая реакция на ошибку перетаскивания заблокированного или невидимого слоя: Здесь вы можете выбрать, что произойдет, если вы перетащите ресурс на слой, который был заблокирован или помечен как невидимый. По умолчанию отображается предупреждающее сообщение, но вы можете установить этот параметр на "OK", чтобы подавить сообщение и продолжить работу, не добавляя никаких ресурсов.
  • -
-

-

-
-

Настройки сетки

-
-

Room Editor Grid Settings Preferences

-

Параметры настройки сетки используются для изменения работы наложения сетки, при этом доступны следующие опции:

-
    -
  • Горизонтальное расстояние между ячейками сетки (px): Устанавливает горизонтальное расстояние между ячейками сетки комнаты в пикселях. Значение по умолчанию - 32px.
  • -
  • Вертикальное расстояние между ячейками сетки (px): Устанавливает вертикальное расстояние между ячейками сетки помещения в пикселях. Значение по умолчанию - 32px.
  • -
  • Отображать сетку: Эта опция включает или выключает сетку помещения при первом открытии помещения. По умолчанию она включена, но даже если она выключена, вы можете включить ее снова с помощью соответствующей кнопки в редакторе комнаты.
  • -
  • Привязка к сетке: С помощью этого параметра вы можете установить, будут ли активы помещения привязываться к сетке по умолчанию или нет при первоначальном открытии помещения. По умолчанию он включен, но даже если он выключен, вы можете включить его снова с помощью соответствующей кнопки в редакторе комнаты.
  • -
  • Цвет линии сетки: Эта опция позволяет задать цвет (включая альфа-компонент) линий сетки помещения. Значение по умолчанию - ( ARGB) #30FFFFFF.
  • -
-


-

-
-

Умные гиды

-
-

Room Editor Smart Guides Preferences

-

В этом разделе подробно описаны предпочтения Smart Guides для редактора помещений. Доступны следующие опции:

-
    -
  • Включить интеллектуальные направляющие: Этот параметр используется для включения/выключения использования интеллектуальных направляющих в редакторе помещений. По умолчанию включено.
    -
  • -
  • Включить линейки: Этот параметр включает/выключает боковые линейки в редакторе помещений. По умолчанию включена.
    -
  • -
  • Привязать линейки к краям: При включении этого параметра направляющие, перетащенные в редакторе комнат из линеек, будут привязаны к любым объектам, размещенным в комнате. По умолчанию включена.
    -
  • -
  • Расстояние привязки: Этот параметр указывает редактору помещений, на каком расстоянии от объекта должна находиться направляющая, прежде чем она будет "привязана" к стороне объекта. Значение по умолчанию - 6px.
    -
  • -
-


-

-
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Runtime_Feed_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Runtime_Feed_Preferences.htm index 8d67294d4..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Runtime_Feed_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Runtime_Feed_Preferences.htm @@ -1,60 +0,0 @@ - - - - - - Предпочтения подачи во время выполнения - - - - - - - - - - -

Предпочтения подачи во время выполнения

-

Предпочтения Runtime Feeds используются для отображения и изменения установленного в данный момент Runtime, а также текущего используемого Runtime. В GameMaker может быть одновременно установлено несколько различных средств выполнения, и вы можете установить, какое из них будет использоваться в данном предпочтении. В идеале вы хотите использовать самую современную среду выполнения, но иногда могут возникнуть проблемы, или вам может потребоваться использовать более старую среду для сравнения и т.д... поэтому здесь вы можете изменить среду выполнения, которую GameMaker использует для создания вашей игры.

-

Первый раздел этого предпочтения связан с тем, откуда вы берете инструменты выполнения, и требует ввода URL-адреса RSS-канала. Этот канал будет сканироваться на предмет обновлений инструментов времени выполнения, которые затем можно будет загрузить и установить. По умолчанию в этом разделе отображается URL-адрес основного канала выполнения, но вы можете нажать кнопку Добавить , чтобы создать новый канал выполнения, где вы укажете имя и URL-адрес RSS-канала, а затем нажмите кнопку Применить, чтобы указать GameMaker доступ к нему. Вам нужно будет закрыть и снова открыть окно Предпочтения, чтобы новый канал был показан.

-

После создания фида времени выполнения он будет перечислен в этом разделе как подкатегория, и у вас всегда должен быть хотя бы один фид в списке (по умолчанию это мастер-фид ). Независимо от используемого времени выполнения, все они будут иметь одинаковые функции, описанные ниже на примере Мастер-фида:

-

Настройки Runtime Feed используются для выбора, установки и удаления различных инструментов времени выполнения. В верхней части отображается текущее используемое средство выполнения, дата его создания и место, в котором оно хранится на жестком диске. Под этими сведениями находится список всех доступных средств выполнения, и вы можете выбрать любое из них, чтобы изменить его на "работающее" средство выполнения, используемое для компиляции ваших проектов.

-

Чтобы выбрать другую среду выполнения, просто найдите ее в списке и дважды щелкните на ней . Если среда выполнения не была загружена и установлена, вам будет предложено сделать это, а после установки вам будет предложено закрыть и перезапустить IDE, чтобы новая среда выполнения могла быть инициализирована.

-

В этом списке указаны все доступные среды выполнения, номер их версии, дата их выпуска и - если они установлены - путь к месту их установки. С правой стороны также отображаются различные значки состояния, которые выглядят следующим образом:

- - - - - - - - - - - - - - - -
The Runtime Feeds PreferencesЗдесь отмечается текущее время выполнения, которое было выбрано для использования при создании ваших проектов.
The Runtime Feed Master PreferencesНажатие на эту кнопку инициирует загрузку и установку выбранной среды выполнения (в правом верхнем углу IDE будет показана строка состояния).
LMB IconНажав на эту кнопку, вы удалите выбранную программу с жесткого диска.
-

Вы можете в любое время обновить список запусков из данного RSS-канала, нажав кнопку обновления , а также очистить жесткий диск от старых запусков, нажав кнопку "Clean Runtimes Now".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Sequences_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Sequences_Preferences.htm index 436af9840..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Sequences_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Sequences_Preferences.htm @@ -1,73 +0,0 @@ - - - - - - Последовательности Предпочтения - - - - - - - - - - -

Последовательности Предпочтения

-

Параметры последовательностей используются для определения определенных свойств функционирования редактора последовательностей и его элементов. Основными параметрами являются:

-
    -
  • Показывать рамку холста во вновь созданных последовательностях: Если опция включена, интеллектуальная направляющая рамки холста будет отображаться на холсте редактора последовательностей для всех новых последовательностей. Эта опция может быть включена/выключена по желанию из свойств холста в самом редакторе. Значение по умолчанию - включено.
  • -
  • Ширина кадра холста для вновь создаваемых последовательностей: Здесь вы можете установить ширину рамки по умолчанию для всех новых последовательностей. Значение по умолчанию - 1366px.
  • -
  • Высота кадра холста длявновь создаваемых последовательностей: Здесь вы можете установить высоту рамки по умолчанию для всех новых последовательностей. Значение по умолчанию - 768px.
  • -
  • Пауза при щелчке на холсте: Если этот параметр отмечен, щелчок в любом месте холста редактора последовательностей приостанавливает воспроизведение последовательности. Эта опция включена по умолчанию.
  • -
  • Задержка выбора перекрытия в миллисекундах: Этот параметр определяет, как долго нужно ждать, прежде чем появится панель инструментов элементов для перекрывающихся элементов на холсте редактора последовательностей. Значение по умолчанию - 1000 мс.
  • -
  • Поле вставки точки пути перевода: На холсте редактора последовательностей, когда вы добавили актив и затем создали дорожку параметров положения, будут нарисованы пунктирные линии, демонстрирующие путь, по которому актив будет двигаться при перемещении. Если подвести мышь близко к этой линии, то можно добавить к ней новую точку дорожки параметров, а этот параметр устанавливает расстояние от линии перевода, на котором должна находиться мышь, прежде чем будет показан маркер точки. Значение по умолчанию - 6px.
  • -
  • Автоматически создавать дорожки параметров по умолчанию: Если этот параметр включен, он автоматически добавляет дорожки параметров для позиции, масштаба, вращения и начала координат ко всем новым дорожкам, созданным на панели дорожек последовательности. По умолчанию отключена.
  • -
  • Автоматически растягивать вновь созданные активы: Эта опция растягивает все вновь созданные ключи активов до длины последовательности. По умолчанию отключена.
  • -
  • Высота дорожки кривой анимации в доп. листе: С помощью этого параметра можно установить, сколько линий дорожек параметров, использующих кривые, будет занимать лист dopw в режиме просмотра ключевых кадров. По умолчанию - 2, но можно выбрать 1 или 3.
  • -
  • Текст по умолчанию для новой текстовой дорожки: Текстовая строка, используемая при создании новой текстовой дорожки в последовательности.
  • -
  • Inspector selection color: Цвет, используемый для выделения дорожки, выбранной в списке Inspector Multi-Select.
  • -
-

-

Диалоги подтверждения

-
-

Параметры Confirm Dialogs используются для изменения сообщений, которые отображаются в редакторе последовательности при выполнении определенных действий. Вы можете изменить следующие сообщения:

-
    -
  • Автоматический выбор для встраивания отредактированной кривой: Если вы попытаетесь вставить отредактированную анимационную кривую, по умолчанию будет показано сообщение для подтверждения действия. Однако если установить этот параметр в значение "Да", сообщение не будет отображаться, и встраивание будет происходить каждый раз. Если установить значение "Нет", то встраивание не будет происходить каждый раз.
  • -
  • Автоматический выбор для преобразования кривой в ключевые кадры: Если вы попытаетесь преобразовать кривую анимации в ключевые кадры, по умолчанию будет показано сообщение с вопросом, хотите ли вы продолжить. Однако при установке этого параметра на "Ok" сообщение не будет показано, и вы просто не сможете преобразовать кривую.
  • -
-

-
-

Умные гиды

-
-

Здесь можно выбрать поведение интеллектуальных направляющих при работе в редакторе последовательностей. Доступны следующие варианты:

-
    -
  • Включить интеллектуальные направляющие: Здесь можно включить или выключить интеллектуальные направляющие на холсте редактора последовательностей. По умолчанию эта функция включена.
  • -
  • Включить линейки: Здесь можно включить или выключить интеллектуальные направляющие на холсте редактора последовательностей. По умолчанию эта функция включена.
  • -
  • Привязать линейки к краям: Эта опция позволяет линейкам "привязываться" к краям активов на холсте секвенций (и наоборот). По умолчанию включена.
  • -
  • Расстояние привязки: Это расстояние (в пикселях), на котором элемент должен находиться от линейки (или линейка от элемента), чтобы он "привязался" к позиции. Значение по умолчанию - 6px.
  • -
-


-

-
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Spline_Editor.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Spline_Editor.htm index 801a1da8f..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Spline_Editor.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Spline_Editor.htm @@ -1,54 +0,0 @@ - - - - - Редактор сплайнов - - - - - - - - - - -

Предпочтения редактора сплайнов

-

Предпочтения редактора сплайнов используются - в основном для определения того, как выглядят гладкие траектории в редакторе контуров, хотя они влияют и на некоторые другие аспекты IDE (например, редактор форм физики). - Editor). Существуют следующие параметры:

-
    -
  • Точность точки вставки контура (px): Устанавливает значение точности (в пикселях) для вставки точек на пути, т.е. мышь должна находиться в этом диапазоне, чтобы вставить точку, а не добавить новую. По умолчанию - 20px.
  • -
  • Ширина точки привязки: задает ширину точек привязки в пикселях. По умолчанию 8px;
  • -
  • Высота точки привязки: Установите высоту точек привязки в пикселях. По умолчанию 8px;
  • -
  • Цвет контура: Цвет, который будет использоваться для отображения контура при его редактировании. По умолчанию это ( ARGB) #FFFFFFFF.
  • -
  • Цвет выделенного сегмента пути: Цвет, который будет использоваться для выделения выбранных сегментов пути. По умолчанию (ARGB) #FFFFFFFF.
  • -
  • Цвет недопустимого пути: Цвет, который будет использоваться для выделения недопустимого пути. По умолчанию (ARGB) #FF0000FF.
  • -
  • Цвет опорных точек: Цвет, который будет использоваться для рисования опорных точек контура. По умолчанию (ARGB) #FFC0C0C0.
  • -
  • Цвет недействительных опорных точек: Цвет, который будет использоваться для рисования опорных точек контура. По умолчанию (ARGB) #FF800000.
  • -
  • Цвет выделенной опорной точки: Цвет, который будет использоваться для рисования опорных точек пути, которые были выделены (выбраны). По умолчанию (ARGB) #FF00A4FF.
  • -
  • Цвет выделенных недействительных опорных точек: Цвет, который будет использоваться для рисования опорных точек, которые выделены, но недействительны. По умолчанию (ARGB) #FFA400FF.
  • -
  • Цвет опорной точки при наведении мыши: Цвет, который будет использоваться для рисования активных опорных точек. По умолчанию (ARGB) #FFFFFFFF.
  • -
  • Цвет недействительной опорной точки при наведении мыши: Цвет, который будет использоваться для рисования активных, но недействительных опорных точек. По умолчанию (ARGB) #FF0000FF.
  • -
  • Цвет наложения маски: задает цвет наложения для масок, если они включены (см. выше). По умолчанию (ARGB) #FF404040.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Sprite_Editor_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Sprite_Editor_Preferences.htm index 4d383aa3a..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Sprite_Editor_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Sprite_Editor_Preferences.htm @@ -1,65 +0,0 @@ - - - - - - Предпочтения редактора спрайтов - - - - - - - - - - -

Предпочтения редактора спрайтов

-

Sprite Editor Preferences

-

Параметры редактора спрайтов используются для определения внешнего вида и функций редактора спрайтов. Существуют следующие параметры:

-
    -
  • Начало по умолчанию sprite: Эта опция позволяет установить положение начала по умолчанию для всех новых ресурсов sprite, которые вы создаете. Значение по умолчанию - верхний левый угол.
  • -
  • Тип маски столкновений по умолчанию sprite: Эта опция позволяет установить вид маски столкновений по умолчанию, который будет использоваться для новых sprites. Можно выбрать следующие варианты: прямоугольник, повернутый прямоугольник, эллипс, ромб или точная / точная на кадр. По умолчанию используется прямоугольник.
  • -
  • Режим анимации по умолчанию sprite: Эта опция позволяет установить режим анимации по умолчанию для sprites в редакторе sprite. Вы можете выбрать либо " Кадры в секунду", либо " Кадры на игровой кадр", - при этом по умолчанию используется значение " Кадры в секунду".
  • -
  • Скорость анимации по умолчанию sprite : Эта опция позволяет установить значение скорости анимации по умолчанию при создании нового актива sprite. Обратите внимание, что это значение связано с режимом анимации, и, например, 3 кадра в секунду - это не то же самое, что 30 кадров на игровой кадр, поэтому убедитесь, что вы правильно установили это значение в зависимости от предпочитаемого режима. Значение по умолчанию - 30.
  • -
  • Ширина по умолчанию sprite : Эта опция позволяет установить ширину по умолчанию для всех новых создаваемых sprites. Значение по умолчанию - 64.
  • -
  • Высота по умолчанию sprite: Эта опция позволяет установить высоту по умолчанию для всех новых sprites. Значение по умолчанию - 64.
  • -
  • Применить изменение размера и масштаба к началу координат sprite: Если эта опция отмечена, то при изменении размера или масштаба sprite будет изменено начало координат sprite, при этом новое начало координат будет перемещено/масштабировано в соответствии с новыми значениями для sprite. Обратите внимание, что - это применимо только для пользовательских sprite истоков, которые не заблокированы в редакторе sprite. Если начало заблокировано или sprite использует одно из положений по умолчанию - например, "Центр" или "Сверху слева" и т.д., - то эта опция будет - будет выделена серым цветом и недоступна для изменения. По умолчанию включена.
  • -
-

Следующая подкатегория также существует для редактора Sprite:

-

Диалоги подтверждения

-
-

- The Sprite Editor Confirm Dialog Preferences

-

Доступные здесь параметры управляют сообщениями, появляющимися при необходимости подтверждения какого-либо действия. Вы можете изменить эти настройки, чтобы показывать сообщение всегда или отклонять его при определенном действии (Да или Нет):

-
    -
  • Автоматическая реакция на импорт файлов: Когда вы импортируете новое изображение, а одно уже существует, по умолчанию вам будет предложено продолжить импорт и перезаписать существующее изображение или отменить операцию. Этот параметр позволяет подавить это сообщение и - всегда либо отменять импорт, выбрав "Нет", либо перезаписывать текущий sprite, выбрав "Да". Значение по умолчанию - "Показывать сообщение".
  • -
  • Автоматическая реакция на сбой загрузки изображения: Когда вы импортируете новый образ и импорт не удается, по умолчанию вам будет показано предупреждающее сообщение, информирующее вас о том, что произошел сбой. Эта опция позволяет отключить это сообщение, выбрав "Ок". - Значение по умолчанию - "Показать сообщение".
  • -
-
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Start_Screen_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Start_Screen_Preferences.htm index f49fc34d9..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Start_Screen_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Start_Screen_Preferences.htm @@ -1,43 +0,0 @@ - - - - - - Предпочтения начального экрана - - - - - - - - - - -

Предпочтения начального экрана

-

Параметры начального экрана позволяют изменить поведение начальной страницы. Основными опциями являются:

-
    -
  • Показать экскурсию: Позволяет выбрать, будет ли показан вводный тур при запуске IDE. Эта функция автоматически отключается при первом пропуске тура.
  • -
  • Показывать мастер настройки: Этот параметр позволяет выбрать, будет ли мастер настройки отображаться при запуске IDE. Мастер установки, по сути, проводит вас через шаги, необходимые для создания нового проекта.
  • -
  • Стиль списка последних проектов: Это позволяет изменить отображение списка последних проектов на стартовой странице между "Списком" и "Сеткой".
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Text_Editor_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Text_Editor_Preferences.htm index 02c34e7e6..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Text_Editor_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Text_Editor_Preferences.htm @@ -1,85 +0,0 @@ - - - - - - Предпочтения текстового редактора - - - - - - - - - - -

Предпочтения текстового редактора

-

Параметры текстовых редакторов используются для определения того, как выглядят и воспринимаются различные редакторы кода/скриптов. На главной странице есть следующие параметры:

-
    -
  • Задержка проверки синтаксиса (мс): Время задержки (в миллисекундах) перед запуском программы проверки синтаксиса. Значение по умолчанию - 2000 мс.
  • -
  • Задержка завершения кода (мс): Время задержки (в миллисекундах).
  • -
  • Открывать скрипты в полноэкранном редакторе: Если отметить этот параметр, ресурсы сценария будут автоматически открываться в новом рабочем пространстве. Если флажок не установлен, они будут открываться в окне в текущей рабочей области. По умолчанию эта опция не отмечена.
  • -
  • Открывать шейдеры в полноэкранном редакторе: Если отметить этот параметр, ресурсы шейдеров будут автоматически открываться в новом рабочем пространстве. Если флажок не установлен, они будут открываться в окне в текущей рабочей области. По умолчанию эта опция не отмечена.
  • -
  • Открывать события объектов в полноэкранном редакторе: Если установить этот флажок, редакторы кода событий объектов будут автоматически открываться в новой рабочей области. Если флажок снят, они будут открываться в окне, прикрепленном к редактору объектных событий. По умолчанию эта опция не отмечена.
  • -
  • Открывать сценарии событий в виде вкладок в том же окне: При добавлении кода или GML Visual к событию, окно кода прикрепляется к окну события, и когда эта опция отмечена, все последующие события, открытые для редактирования, будут добавляться в то же окно в виде вкладок сверху. Если снять этот флажок, каждое событие будет открываться как собственное уникальное окно с цепочкой. Эта опция отмечена по умолчанию.
  • -
  • Открытие связанных скриптов в виде вкладок в одном окне: Когда вы имеете несколько связанных скриптов и открываете их, по умолчанию они будут сгруппированы в одном окне в виде вкладок. Если снять этот флажок, они будут открываться каждый в своем собственном окне/рабочем пространстве. Эта опция установлена по умолчанию.
  • -
  • Панорамировать текстовый редактор в поле зрения при фокусировке: Когда вы открываете текстовый редактор из события объекта, выбор этой опции автоматически панорамирует рабочую область, чтобы редактор оказался в пределах границ. По умолчанию эта опция выключена.
  • -
  • Ширина окна кода по умолчанию: установите ширину (в пикселях) окна кода по умолчанию при открытии. Значение по умолчанию - 900.
  • -
  • Высота окна кода по умолчанию: Установите высоту (в пикселях) окна кода по умолчанию при открытии. Значение по умолчанию - 600.
  • -
  • Минимальная ширина окна кода: Установите минимальную ширину (в пикселях), допустимую для окна кода. Значение по умолчанию - 300.
  • -
  • Минимальная высота окна кода: Установите минимальную высоту (в пикселях), допустимую для окна кода. Значение по умолчанию - 200.
  • -
-

-

Помимо вышеперечисленных опций есть две подкатегории, Редактор кода и Визуальный редактор, описанные ниже.

-

Редактор кода

-

The Text Editor Preferences

-

Параметры цвета используются для изменения того, как редактор кода и сценариев отображает различные тексты. Каждый пункт имеет несколько подпунктов, позволяющих определить, как именно должен выглядеть каждый отдельный фрагмент текста, как показано на рисунке выше. В общем, вы можете задать цвет, шрифт, размер и стиль для каждого из различных вариантов. Далее вы также можете задать более общий стиль для таких вещей, как выделение строк, кодовых скобок и т.д..

-

The Text Editor Colour Preferences

-

Под цветовыми предпочтениями находятся различные параметры стиля. Эти параметры используются для настройки поведения редактора кода/скрипта, при этом доступны следующие опции:

-
    -
  • Сохранять табуляцию: Если флажок установлен, то нажатия клавиш табуляции будут сохраняться в редакторе как символы табуляции - ' \t' - в то время как снятый флажок означает, что табуляции преобразуются в пробелы. По умолчанию выключено.
  • -
  • Размер табуляции: Количество пробелов, на которое при нажатии клавиши "Tab" должен быть сделан отступ от кода. По умолчанию - 4.
  • -
  • Показать пробельные символы: Отображать " ." для показа пробельных символов (см. рисунок ниже). По умолчанию выключено.
  • -
  • Показывать номера строк: Показывать ли номера строк слева внизу или нет. По умолчанию включено.
  • -
  • Показать линии табуляции: Отображение " ...." для показа пространства с вкладками. По умолчанию выключено.
  • -
  • Включить цветовое кодирование: Включите или отключите цветовое кодирование для редактора. Если код выключен, он не будет стилизован, а если включен, то будет стилизован с использованием форматирования, приведенного выше в разделе Цвет. По умолчанию включено.
  • -
  • Лимит строк документа: задает максимальное количество строк для любого данного документа редактора. Значение по умолчанию равно 0 (0 или меньше по сути является бесконечным), а любое другое значение будет ограничивать допустимое количество строк.
  • -
  • Выравнивание отступа на новых строках: Включите или отключите автоотступ для вашего кода. По умолчанию включено, что позволит сохранить все табуляции, установленные в строке, при добавлении новой строки.
  • -
  • Автоматический отступ после скобки: Включите или отключите автоотступ для кода при добавлении скобок {}. По умолчанию включено, что приводит к табуляции следующей строки кода при добавлении новой скобки { и новой строки.
  • -
  • Включить завершение кода: Включить или отключить окно завершения кода. Когда вы пишете код и эта опция включена, вы получите всплывающее окно, показывающее возможные функции, которые вы можете использовать, основываясь на текущем вводимом тексте. По умолчанию включено.
  • -
  • Автоматическое добавление функциональных скобок: Включите или отключите автоматическое добавление скобок () при использовании автозаполнения. При написании кода, когда эта функция включена, IDE будет автоматически добавлять две скобки (), которые требует функция, помещая курсор в них, если функция принимает аргументы, или помещая курсор после них, если не принимает. Эта функция работает, только если функция была выбрана из автозаполнения. По умолчанию включено.
  • -
  • Undo / Redo Stack Limit: Здесь вы можете установить предел стека Undo/Redo. Все, что меньше 0, по сути, бесконечно (ограничено доступной памятью), в то время как положительные значения ограничат стек этим числом, удаляя любое действие в хвосте стека при достижении предела. По умолчанию -1.
  • -
  • Выделить совпадения выделения: При этом будет слегка выделена любая часть кода, которая дублируется в других местах. Так, например, если вы выделите функцию, все экземпляры этой функции в текущем окне кода также будут выделены. По умолчанию включено.
  • -
  • Цветовое кодирование/завершение кода для устаревших функций: Это позволит выделить любой устаревший участок кода. По умолчанию включено.
  • -
-

Визуальный редактор

-

The Code Editor Preferences

-

Параметры Комментарии управляют различными опциями цвета и форматирования для любых комментариев, которые были добавлены к вашим визуальным сценариям GML. К этим параметрам относятся:

-
    -
  • Цвет: Цвет по умолчанию для текста, записываемого в окно (по умолчанию ARGB #FF53E270).
  • -
  • Имя шрифта: Имя шрифта, который необходимо использовать (доступные шрифты зависят от установленных в вашей системе).
  • -
  • Стиль: Используемый стиль шрифта, например, жирный или курсив (обратите внимание, что не во всех окнах можно использовать одинаковые стили, а также это зависит от используемого шрифта).
  • -
  • Размер: Размер шрифта для данного окна вывода.
  • -
  • Сглаживание: Здесь вы можете установить режим сглаживания для рендеринга шрифтов выходных окон. Вы можете позволить IDE принимать решения, выбрав Use Default, или принудительно включить или выключить , выбрав одну из этих опций.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Tile_Set_Editor_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Tile_Set_Editor_Preferences.htm index a9577f052..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Tile_Set_Editor_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Tile_Set_Editor_Preferences.htm @@ -1,44 +0,0 @@ - - - - - - Предпочтения редактора набора плиток - - - - - - - - - - -

Предпочтения редактора набора плиток

-

The Tile Set Editor Preferences

-

В настройках редактора наборов плиток есть следующая опция для автоплитки:

-

Цвет фона автоплитки: Этот параметр устанавливает цвет фона в редакторе наборов плиток в разделе создания автоплиток. По умолчанию используется цвет (rgba) #808080FF.

-

В настройках редактора наборов плиток также есть подраздел " Диалоги подтверждения ":

-

Опция, доступная здесь, управляет сообщением, появляющимся при изменении размера ячеек набора плиток. - размер ячейки набора плиток, что повлияет на отрисовку слоев карты плиток помещения (в результате чего слои будут обрезаны). По умолчанию вам будет предложено продолжить или отменить операцию, а эта опция позволяет подавить это сообщение, выбрав "Хорошо". - что позволит продолжить изменение ячеек набора плиток независимо от влияния на слои карты помещения. Значение по умолчанию - "Показать сообщение".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Timeline_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Timeline_Preferences.htm index 82866ef17..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Timeline_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/IDE_Preferences/Timeline_Preferences.htm @@ -1,45 +0,0 @@ - - - - - - Предпочтения временной шкалы - - - - - - - - - -

Предпочтения временной шкалы

-

The Timeline Preferences

-

Параметры временной шкалы используются для определения определенных свойств при работе с редактором временной шкалы. Доступны следующие опции:

-
    -
  • Автоматическая реакция на преобразование GML Visual в GameMaker Language: Когда вы используете опцию меню правой кнопки мыши на моменте временной шкалы для преобразования GML визуальных действий в скрипт (код), вы получите запрос, хотите ли вы продолжить, поскольку это одностороннее преобразование. Изменение этого параметра на "Ок" подавит сообщение и продолжит преобразование, как если бы вы нажали "Ок" в диалоге. По умолчанию установлено значение "Показывать сообщение".
  • -
  • Утоматический ответ на предупреждение о постоянном действии: Некоторые действия на временной шкале нельзя отменить, и когда это происходит, вы получаете предупреждающее сообщение с вопросом, хотите ли вы продолжать. Изменение этого параметра на "Хорошо" подавит сообщение и продолжит действие, как если бы вы нажали "Хорошо" в диалоге. По умолчанию установлено значение "Показать сообщение".
  • -
  • Открывать новые моменты для редактирования при создании: Обычно, когда вы добавляете новый момент на временную шкалу, GameMaker автоматически открывает редактор, чтобы вы могли добавить в него свой код или GML Visual. Однако если вы снимите флажок с этой опции, момент будет добавлен без открытия редактора (его можно открыть, дважды щелкнув на моменте). По умолчанию эта опция включена.
  • -
-

-

-

- -
© Copyright YoYo Games Ltd. 2026 All Rights Reserved
- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/Installation_Guide.htm b/Manual/contents/Setting_Up_And_Version_Information/Installation_Guide.htm index 46160b0e5..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/Installation_Guide.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/Installation_Guide.htm @@ -1,55 +0,0 @@ - - - - - - Руководство по установке - - - - - - - - - - -

Руководство по установке

-

GameMaker предназначен для использования на настольных компьютерах с macOS и Windows с минимальными техническими характеристиками, указанными здесь.

-

Вы можете загрузить программу установки GameMaker со страницы вашей учетной записи YoYo на веб-сайте YoYo Games. После установки, при первом запуске GameMaker вам может быть предложено обновить продукт, прежде чем вы сможете им пользоваться. После установки обновлений вам потребуется ввести лицензионные данные вашей учетной записи YoYo Games (более подробную информацию см. здесь ), прежде чем вы сможете использовать продукт, то есть при первом использовании GameMaker у вас должно быть подключение к Интернету. После первоначального входа в систему вы сможете использовать продукт в автономном режиме, однако он будет периодически требовать подключения для проверки учетной записи.

-

Стоит отметить, что в зависимости от типа лицензии, которую вы имеете, вам может потребоваться установить дополнительные компоненты или выполнить дополнительные шаги для настройки и использования GameMaker для определенных платформ. Полную информацию о том, что требуется для каждой платформы, можно найти в этой статье на сайте YoYo Games Helpdesk: GameMaker Required SDKs.

-

-

-

Стабильная и бета-версии

-

Версия, которую вы загружаете с веб-страницы YoYo Games, должна быть текущей стабильной версией GameMaker, но может быть доступна и другая " бета" версия, которая используется для демонстрации или тестирования новых функций до того, как они войдут в окончательную стабильную сборку. Полная информация о версии приведена ниже:

-
    -
  • Стабильная: Эта версия является той, которую вы будете использовать для общей разработки, и рекомендуется для использования с любым коммерческим продуктом. В ней могут отсутствовать некоторые функции, доступные в бета-версиях, но это потому, что они не были полностью протестированы или требуют дополнительной работы.
  • -
  • Бета-версия: Бета-версия GameMaker предназначена для тех, кто хочет опробовать новые функции до того, как они будут добавлены в стабильную сборку, или для тех, кому требуется ближайшее исправление какой-либо проблемы. Не рекомендуется использовать бета-сборку для окончательного создания игры, если только она не содержит важное исправление ошибки, которая тормозит ваш проект. Вы можете получить бета-сборку GameMaker со страницы "Загрузки" вашего аккаунта YoYo. Ее можно установить и запустить параллельно со стабильной сборкой. Обратите внимание, что если вы используете GameMaker через Steam , то у вас не будет доступа к бета-сборке продукта через Steam, хотя вы все равно сможете загрузить и использовать настольную версию.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/Licencing_Information.htm b/Manual/contents/Setting_Up_And_Version_Information/Licencing_Information.htm index 76c2685a7..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/Licencing_Information.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/Licencing_Information.htm @@ -1,56 +0,0 @@ - - - - - - Лицензирование и вход в систему - - - - - - - - - -

Информация о лицензировании

-

После того как вы загрузили и установили GameMaker, при первом использовании вам будет предложено ввести данные вашей лицензии:

-

GameMaker Login Screen

-

Счет YoYo

-

Ваша лицензия привязана к учетной записи YoYo (YYA), которую вы должны завести, чтобы иметь возможность пользоваться GameMaker. В этой учетной записи хранятся все ваши лицензионные данные для продуктов YoYo Games, которыми вы владеете, а также она используется для GameMaker Marketplace. Дополнительную информацию о YYA вы можете найти на следующей странице:

- -

Счет в Opera

-

Вы можете использовать кнопку "Opera Single Sign-In" для входа в систему, используя учетную запись Opera, однако для этого необходимо иметь учетную запись YoYo и сначала связать учетную запись Opera с учетной записью YoYo (что можно сделать на этой странице).

-

Информация о лицензировании

-

Информацию о том, как получить лицензии на GameMaker, вы можете прочитать на следующих страницах:

- -

ВАЖНО После приобретения новой лицензии на GameMaker мы рекомендуем вам выйти из системы IDE, затем перезапустить GameMaker и снова войти в систему, чтобы убедиться, что новая лицензия применена правильно. Выйти из системы можно через меню Файл.

-

-

Поддержка прокси-сервера

-

Если вам требуется поддержка прокси для вашей установки GameMaker, ее можно добавить, просто щелкнув на прокси. При этом откроется следующее окно:

-

Теперь вы можете добавить данные своего доверенного лица. Некоторые из полей, показанных выше, являются необязательными, и если вам что-то не нужно, просто оставьте это поле пустым. Однако прежде чем продолжить, стоит отметить, что если вы установили прокси в параметрах Интернета Windows, и он не требует ввода имени пользователя/пароля, то он должен быть установлен "как есть", и вам, вероятно, не потребуется настраивать прокси в GameMaker.

-

Если ваш прокси-сервер требует имя пользователя и/или пароль, то вам нужно добавить их в поля, показанные в окне выше. Обратите внимание, что в этих случаях имя пользователя/пароль/прокси всегда будут обязательными, а IP прокси также должен быть добавлен порт, т.е. xx.xx.xx.xx:port.

-

После того, как вы добавили необходимую информацию, нажмите кнопку Окей и войдите в GameMaker как обычно.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences.htm index acf6d1b40..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences.htm @@ -1,51 +0,0 @@ - - - - - - Предпочтения платформы - - - - - - - - - - -

Предпочтения платформы

-

В этом разделе руководства рассматриваются различные предпочтения для конкретной платформы, которые необходимо установить, прежде чем вы сможете компилировать свои игры для определенных целей. Как правило, эти параметры нужно установить только один раз для начала (хотя в будущих обновлениях среды исполнения может потребоваться изменить некоторые вещи, но об этом будет сказано в Release Notes). Они используются для указания на любые SDK, которые требуются, и установки основных параметров компиляции, чтобы вы хотели, чтобы GameMaker компилировал ваши игровые проекты для той или иной платформы. Обратите внимание, что доступные платформы будут зависеть от лицензии, которую вы имеете, и не все из них могут быть доступны.

-

Ниже приведен список всех доступных целевых платформ для стандартных лицензий:

- -

Обратите внимание, что помимо настройки этих параметров, вам также необходимо настроить устройства, на которые нацелены некоторые из этих платформ, иначе вы не сможете ни скомпилировать, ни протестировать свои проекты. Дополнительную информацию см. в разделе о компиляции и в разделе о диспетчере устройств.

-

В руководстве не указаны различные предпочтения консолей (Xbox, PlayStation и Nintendo Switch) из-за различных юридических ограничений, поддерживаемых различными компаниями. Если у вас есть лицензия на консоль, то вы можете получить эту информацию в службе поддержки YoYo Games, но сначала вы должны связаться с YoYo Games, указав свой ID консоли, и запросить разрешение на просмотр различных разделов.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Android.htm b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Android.htm index 7a2472615..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Android.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Android.htm @@ -1,65 +0,0 @@ - - - - - - Android - - - - - - - - - - -

Предпочтения Android

-

Предпочтения Android разделены на различные разделы, перечисленные ниже:

-

В верхней части предпочтений вы можете установить максимальный размер кучи памяти JDK (по умолчанию 2 ГБ). Далее необходимо настроить различные пути , чтобы GameMaker знал, где искать различные инструменты, необходимые для создания конечного исполняемого пакета и тестирования вашей игры. Здесь есть три раздела для Android SDK, Android NDK и Java JDK. Эти пути должны быть заполнены автоматически, но если у вас возникнут проблемы, вы можете нажать кнопку справа, чтобы открыть проводник файлов и вручную выбрать местоположение каждого элемента. Подробную информацию о том, какие версии требуются для каждого из элементов SDK, можно найти здесь. Пути должны проверяться по мере их применения, и в сообщении будет показано "Found" или сообщено о каких-либо ошибках (в этом случае вам следует пересмотреть всю информацию, чтобы убедиться в ее правильности).

-

Ниже представлены различные варианты упаковки:

-
    -
  • Всегда делать полную установку APK: Отметив этот флажок, GameMaker удалит все предыдущие версии вашей игры с вашего устройства, а также все связанные с ней файлы (например, *.ini ) с вашего тестового устройства перед установкой новой версии игры.
  • -
  • Установить на пакет: Когда эта опция отмечена, компиляция конечного исполняемого пакета *.apk также автоматически установит его на выбранное в данный момент целевое устройство.
  • -
-

Наконец, мы переходим к хранилищу ключей. Это файл, который будет использоваться для "подписи" всех ваших приложений Android, поэтому заполните все данные правильно и помните, что этот файл будет необходим для создания и обновления всех ваших приложений Android в будущем, а это значит, что после установки он должен быть сохранен. рекомендуется сделать скриншот используемых настроек и создать резервную копию конечного файла.. Если вы потеряете этот файл, вы не сможете обновить ни одну из существующих игр, загруженных в магазин.

-

Для создания нового файла keystore необходимы следующие данные:

-

Android Preferences Packaging

-
    -
  • Filename: Это имя файла хранилища ключей.
  • -
-

ПРИМЕЧАНИЕ: Это не ваше имя или название компании, а имя генерируемого файла! Если у вас уже есть файл keystore из предыдущих проектов, вы можете нажать здесь кнопку браузера файлов и направить GameMaker к ранее созданному файлу keystore (или нажать кнопку Import ). В этом случае вы должны заполнить остальную необходимую информацию (точно так же, как и при первом создании файла), но вы не должны нажимать кнопку Generate Keystore ! Это приведет к созданию нового файла keystore, который перезапишет предыдущий.

-
    -
  • Общее имя: Обычно это ваше имя.
  • -
  • Пароль: Ваш пароль безопасности для файла keystore, который должен состоять не менее чем из шести символов.
  • -
  • Псевдоним: Это другое имя, которое может быть использовано для файла keystore и должно отличаться от имени, введенного выше.
  • -
  • Alias Password: Ваш псевдонимный пароль безопасности для файла keystore, который должен состоять не менее чем из шести символов.
    -
    - ПРИМЕЧАНИЕ Если версия вашего Android Studio 4.2 или выше, вы должны использовать один и тот же пароль для полей "Пароль" и "Псевдонимный пароль". Использование разных паролей и псевдонимов приведет к сбою сборки. -
  • -
  • Организационное подразделение: Отдел в компании, частью которого вы являетесь.
  • -
  • Организация: Название вашей компании.
  • -
  • Местонахождение: Название города или населенного пункта, в котором вы находитесь.
  • -
  • Страна: Стандартный двухбуквенный код страны, в которой вы находитесь.
  • -
-

Когда эта информация будет заполнена и вас все устроит, нажмите кнопку с надписью Generate Keystore for GameMaker, чтобы создать необходимый файл keystore. Это может занять некоторое время, но после завершения работы его, как правило, не нужно будет менять снова. Обратите внимание, что вы можете нажать кнопку Import , чтобы импортировать ранее созданный файл keystore (см. раздел Filename , выше), а также получить SHA1-хэш файла keystore, нажав кнопку Generate Key Hash . При нажатии этой кнопки будут сгенерированы два специальных хэш-ключа безопасности, непосредственно связанных с вашим файлом keystore, которые требуются некоторым веб-сайтам для корректной работы (например, Facebook или Google Play для хэша Sha1). Если вам это понадобится, просто нажмите кнопку, а затем скопируйте и вставьте созданные хэш-ключи.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/HTML5.htm b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/HTML5.htm index 3756c4518..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/HTML5.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/HTML5.htm @@ -1,46 +0,0 @@ - - - - - - HTML5 - - - - - - - - - - -

Предпочтения HTML5

-

Параметры HTML5 имеют следующие опции:

-

HTML5 Preferences

-
    -
  • Тип упаковки по умолчанию: При создании конечного исполняемого пакета HTML5 вы можете выбрать между Package as loose files - который просто создаст все необходимые файлы в папке - и Package as Zip - который создаст сжатый файл ZIP , содержащий игру и все дополнительные файлы. По умолчанию вам будет предоставлен выбор, какой из этих двух вариантов вы хотите выбрать при компиляции, но вы можете установить это предпочтение, чтобы всегда использовать один или другой. Обратите внимание, что когда эта опция установлена на Show Dialogue, в реальном диалоговом окне, появляющемся при компиляции, выбор "Remember Packaging Option" установит это предпочтение на выбранный вами вариант.
  • -
  • Порт веб-сервера по умолчанию: позволяет изменить порт по умолчанию для веб-сервера HTML5. Значение по умолчанию - 51264.
  • -
  • Адрес веб-сервера по умолчанию: Здесь вы можете изменить адрес веб-сервера по умолчанию для веб-сервера HTML5. Значение по умолчанию - 127.0.0.1.
  • -
  • Разрешенные IP-адреса веб-сервера по умолчанию: Здесь вы можете добавить любые разрешенные IP-адреса для веб-сервера, и они будут установлены по умолчанию для всех устройств, добавленных через Target Manager.
  • -
-

ВАЖНО При использовании конкретного целевого устройства (т.е. браузера) вместо этих настроек используются значения IP и порта, установленные для этого конкретного устройства. Проверьте Диспетчер устройств, чтобы увидеть список ваших устройств с их подробной информацией.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Opera_GX_Preferences.htm b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Opera_GX_Preferences.htm index 564a37be5..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Opera_GX_Preferences.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Opera_GX_Preferences.htm @@ -1,45 +0,0 @@ - - - - - - Opera GX - - - - - - - - - - -

Предпочтения Opera GX

-

В настройках Opera GX есть следующие опции:

-

-
    -
  • Расположение Emscripten SDK: Это местоположение Emscripten SDK, необходимого для сборок YYC, созданных для Opera GX. Информацию о настройке SDK читайте в разделе Настройка для Opera GX.
  • -
  • Порт веб-сервера по умолчанию: Позволяет изменить порт по умолчанию для веб-сервера Opera GX. Значение по умолчанию - 51264.
  • -
  • Адрес веб-сервера по умолчанию: Здесь вы можете изменить адрес веб-сервера по умолчанию для веб-сервера Opera GX. Значение по умолчанию - 127.0.0.1.
  • -
  • Разрешенные IP-адреса веб-сервера по умолчанию: Здесь вы можете добавить любые разрешенные IP-адреса для веб-сервера, и они будут установлены по умолчанию для всех устройств, добавленных через Target Manager.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Steam.htm b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Steam.htm index 9aaf83e8d..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Steam.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Steam.htm @@ -1,43 +0,0 @@ - - - - - - Пар - - - - - - - - - - -

Предпочтения Steam

-

SDK Steam используется для сборок Windows, macOS и Ubuntu (Linux), которые будут распространяться через платформу Steam. В этом разделе приведены параметры настройки, необходимые для обеспечения его работы в ваших проектах:

-

Steam Preferences

-
    -
  • Путь к Steam SDK: Системный путь к месту установки Steam SDK. После установки этого пути к SDK вам нужно будет активировать Steam в Опциях игры, а затем - для каждой платформы добавить App ID.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Windows.htm b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Windows.htm index 80cd1cb3d..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Windows.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Windows.htm @@ -1,45 +0,0 @@ - - - - - - Windows - - - - - - - - - - -

Предпочтения Windows

-

Настройки Windows имеют следующие параметры:

-

Windows Preferences

-
    -
  • Расположение Visual Studio: Эта опция предназначена для указания GameMaker на установку Microsoft Visual Studio на компьютере сборки.
  • -
  • Тип упаковки по умолчанию: При создании конечного исполняемого пакета Windows вы можете выбрать между созданием инсталлятора (с помощью NSIS) и сжатым файлом ZIP . - в котором будет содержаться игра и все дополнительные файлы. По умолчанию при компиляции вам будет показан диалог выбора между этими двумя вариантами, но вы можете установить это предпочтение, чтобы всегда использовать один или другой. Обратите внимание, что когда эта опция установлена на - Show Dialog, в реальном диалоговом окне, появляющемся при компиляции, включение опции "Remember Packaging Option" установит это предпочтение на выбранный вами вариант.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Windows_UWP.htm b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Windows_UWP.htm index 994fb2645..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Windows_UWP.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/Windows_UWP.htm @@ -1,47 +0,0 @@ - - - - - - Windows UWP - - - - - - - - - - -

Предпочтения Windows UWP

-

Настройки Windows UWP имеют следующие параметры:

-

Windows UWP Preferences

-
    -
  • Расположение Visual Studio: Эта опция предназначена для указания GameMaker на установку Microsoft Visual Studio на компьютере сборки.
  • -
  • Win UWP Tools location: Эта опция предназначена для указания GameMaker на путь установки инструментов UWP на компьютере сборки.
  • -
  • Архитектура пакета по умолчанию: По умолчанию при компиляции исполняемого файла UWP отображается диалоговое окно для выбора между архитектурами x86, x64 и ARM . Вы можете установить этот параметр - на одну из этих трех архитектур, которая будет выбираться по умолчанию при компиляции исполняемого файла.
  • -
  • Автоматическая реакция на создание пакета магазина: В диалоговом окне, отображаемом при компиляции, вы можете выбрать создание пакета магазина. Вы можете установить для этой опции значение Да или Нет , которое будет использоваться по умолчанию - всякий раз, когда вы выбираете компиляцию исполняемого файла.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/iOS.htm b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/iOS.htm index a9a53bd56..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/iOS.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/iOS.htm @@ -1,46 +0,0 @@ - - - - - - iOS - - - - - - - - - - -

Предпочтения iOS

-

Настройки iOS имеют следующие параметры:

-

iOS Preferences

-
    -
  • Подавить сборку и запуск: По умолчанию при создании проекта iOS и последующей сборке конечного исполняемого пакета, GameMaker будет собирать пакет, а затем пытаться запустить его на всех подключенных устройствах. Установка этой опции - подавить сборку приложения и его запуск на устройстве и просто создать проект XCode на главном компьютере Mac
  • -
  • Путь установки macOS: Путь установки файлов проекта на компьютере Mac для сборки.
  • -
  • Идентификатор команды по умолчанию: Здесь вы можете добавить свой идентификатор команды по умолчанию, присвоенный вам компанией Apple. Этот идентификатор команды будет использоваться при отправке файлов вашей игры на сайт - Xcode для сборки приложения и позволит Xcode генерировать необходимые сертификаты подписи. Обратите внимание, что эта настройка будет применяться по умолчанию ко всем играм, созданным для iOS, но ее можно изменить для каждого проекта в разделе Общие параметры игры iOS.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/macOS.htm b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/macOS.htm index ff25c43fd..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/macOS.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/macOS.htm @@ -1,43 +0,0 @@ - - - - - - macOS - - - - - - - - - - -

Предпочтения macOS

-

Настройки macOS имеют следующие параметры:

-

macOS Preferences

-
    -
  • Идентификатор команды по умолчанию: Здесь вы можете добавить свой идентификатор команды по умолчанию, присвоенный вам компанией Apple. Этот идентификатор команды будет использоваться при отправке файлов вашей игры на Xcode для сборки приложения и позволит Xcode генерировать необходимые сертификаты подписи. Обратите внимание, что эта настройка будет применяться по умолчанию ко всем играм, созданным для macOS, но ее можно изменить для каждого проекта в разделе Общие параметры игры macOS.
  • -
  • Автоматический выбор упаковки: Здесь вы можете установить предпочтение по умолчанию для создания исполняемого файла для цели macOS. Опция "Показать диалог" всегда будет показывать диалог перед созданием исполняемого файла, предлагая вам выбрать между DMG и Zip, но вы можете установить любой из этих вариантов в Предпочтениях, чтобы пропустить этот диалог. Обратите внимание, что включение опции "Запомнить вариант пакета" в диалоге также установит этот параметр на выбранный тип пакета.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/tvOS.htm b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/tvOS.htm index a3f26f3e6..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/tvOS.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/Platform_Preferences/tvOS.htm @@ -1,49 +0,0 @@ - - - - - - tvOS - - - - - - - - - - -

Предпочтения tvOS

-

Настройки tvOS имеют следующие параметры:

-

tvOS Preferences

-
    -
  • Автоматический ответ на предупреждение об ограничении постоянного хранилища tvOS : игры tvOS имеют ограниченное локальное хранилище для файлов, и при компиляции для этой цели по умолчанию будет показано предупреждение, напоминающее об этом факте. Вы можете изменить - настройку здесь, чтобы отключить это предупреждение, выбрав "OK". По умолчанию установлено значение "Показать сообщение".
  • -
  • Подавить сборку и запуск: По умолчанию, когда вы создаете проект tvOS, а затем собираете окончательный исполняемый пакет, GameMaker собирает пакет, а затем пытается запустить его на всех подключенных устройствах. Установка этой опции - подавить сборку приложения и его запуск на устройстве и просто создать проект XCode на главном компьютере Mac.
  • -
  • Путь установки macOS: Путь установки файлов проекта на компьютере Mac для сборки.
  • -
  • Идентификатор команды по умолчанию: Здесь вы можете добавить свой идентификатор команды по умолчанию, присвоенный вам компанией Apple. Этот идентификатор команды будет использоваться при отправке файлов вашей игры на сайт - Xcode для сборки приложения и позволит Xcode генерировать необходимые сертификаты подписи. Обратите внимание, что эта настройка будет применяться по умолчанию ко всем играм, созданным для tvOS, но ее можно изменить для каждого проекта в разделе Общие параметры tvOS. - Параметры игры.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/Release_Notes.htm b/Manual/contents/Setting_Up_And_Version_Information/Release_Notes.htm index 3c1b09d20..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/Release_Notes.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/Release_Notes.htm @@ -1,46 +0,0 @@ - - - - - - Примечания к выпуску - - - - - - - - - - -

Примечания к выпуску

-

Каждый выпуск GameMaker сопровождается собственным набором примечаний к выпуску. В них содержится подробная информация о внесенных изменениях, а также полный список всех исправленных ошибок. Это бесценный инструмент для принятия решения - обновлять ли текущую версию, или когда вы обнаруживаете что-то, что может оказаться ошибкой после выхода релиза.

-

Примечания к выпуску разделены на два разных набора в связи с тем, что и IDE, и фактический Runtimes могут быть обновлены независимо друг от друга. Вы можете найти текущие заметки о выпуске для IDE по ссылке ниже:

- -

Вы можете найти текущие примечания к выпуску Runtimes по ссылке ниже:

- -

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/Required_SDKs.htm b/Manual/contents/Setting_Up_And_Version_Information/Required_SDKs.htm index ad1fcdee0..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/Required_SDKs.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/Required_SDKs.htm @@ -1,42 +0,0 @@ - - - - - - Необходимые SDK - - - - - - - - - - -

Необходимые SDK

-

СамGameMaker не имеет особых требований, кроме перечисленных на странице "Установка", и установит все необходимые зависимости при первой установке продукта в составе пакета. Однако если у вас есть какая-либо лицензия, кроме свободной , то вам также потребуется установить и поддерживать SDK и другие инструменты сборки, которые требуются для экспортных модулей этой лицензии.

-

Полный список необходимых инструментов и SDK для каждой платформы можно найти по следующей ссылке:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/The_Device_Manager.htm b/Manual/contents/Setting_Up_And_Version_Information/The_Device_Manager.htm index 313552a51..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/The_Device_Manager.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/The_Device_Manager.htm @@ -1,184 +0,0 @@ - - - - - - Диспетчер устройств - - - - - - - - - - -

Диспетчер устройств

-

Доступ к диспетчеру устройств осуществляется нажатием на кнопку с карандашом в списке целей:

-

Нажав на эту кнопку, вы откроете диспетчер устройств, где вы можете настроить различные устройства для целевых платформ, на которых вы хотите компилировать и тестировать (обратите внимание, что доступные платформы зависят от имеющейся у вас Лицензии, и не все из них могут быть видны). Ниже вы найдете подробную информацию о настройке устройств для каждой из целевых платформ:

-

Android

-
-

- Здесь вы можете нажать на кнопку - Добавить новое устройство, чтобы добавить новое устройство Android в список вручную, или вы можете нажать кнопку - Определить устройство, чтобы GameMaker автоматически определил все устройства, подключенные через проводное соединение. Вы также можете настроить - Android Virtual Device, нажав на кнопку с надписью - Запустить AVD. Откроется менеджер виртуальных устройств Android, где вы можете создать новое AVD (см. - здесь для получения дополнительной информации). После того, как устройство будет создано, вам нужно запустить его из менеджера AVD, а затем в GameMaker нажать на кнопку - Detect Device и он должен быть автоматически добавлен в список устройств: -
-

-

- После добавления устройства (физического или виртуального), - вы можете проверить соединение с помощью кнопки - Проверить соединение или удалить его из списка, нажав кнопку - Удалить устройство. -

-

-
-

-
-

HTML5

-
-

- Менеджер устройств HTML5 предназначен для добавления различных браузеров в список устройств для таргетинга при запуске. Для начала вам следует - нажать кнопку - Detect Browsers, что приведет к созданию устройств для каждого из установленных на вашем компьютере браузеров. Если вашего браузера нет в списке, вы также можете нажать кнопку - Add New Browser, а затем дать устройству имя и указать GameMaker путь к исполняемому файлу браузера. -

-

Дополнительные доступные поля могут быть настроены для управления тем, как браузер запускает ваши проекты, с помощью следующих опций:

-
    -
  • - Аргументы командной строки браузера: Здесь вы можете добавить любые аргументы командной строки, которые будут добавлены к пути браузера. Вы можете найти список этих аргументов в следующих ссылках на основные популярные браузеры: - -
  • -
  • - Адрес веб-сервера: Адрес веб-сервера - сервера (по умолчанию 127.0.0.1). Вам может понадобиться изменить этот параметр в зависимости от спецификаций различных API, например, Facebook потребует, чтобы этот параметр был установлен в значение - http://localhost (и затем внести его в белый список в консоли приложений). -
  • -
  • - Порт веб-сервера: установите - номер порта для веб-сервера (по умолчанию 51264). -
  • -
  • - Разрешенные IP-адреса веб-сервера / диапазоны CIDR IP: Установите разрешенный веб-сервер, имена хостов и диапазоны CIDR IP при необходимости. -
  • -
-

-
-

iOS

-
-

- Прежде чем приступить к настройке устройств iOS, необходимо настроить - настроить устройство Mac и проверить его подключение (подробности см. ниже). После этого вы можете выбрать Mac, который вы хотите настроить, из выпадающего меню в верхней части окна и затем нажать кнопку - Detect Device, чтобы GameMaker автоматически нашел все подключенные устройства iOS, включая симуляторы. После подключения подробная информация об устройстве будет показана в списке в этом окне, и вы можете отредактировать имя устройства, чтобы сделать его - более удобным для пользователя (это изменение влияет только на то, как устройство будет представлено в диспетчере целей, и ни на что другое). -

-

-
-

-
-

tvOS

-
-

- Прежде чем приступить к настройке устройств tvOS, необходимо - настроить устройство Mac и проверить его подключение (подробности см. ниже). После этого вы можете выбрать Mac, который вы хотите настроить, из выпадающего меню в верхней части окна и затем нажать кнопку - Detect Device, чтобы GameMaker автоматически нашел все подключенные устройства tvOS, включая симуляторы. После подключения подробная информация об устройстве будет показана в списке в этом окне, и вы можете отредактировать имя устройства, чтобы сделать его - более удобным для пользователя (это изменение влияет только на то, как устройство будет представлено в диспетчере целей, и ни на что другое). -

-

-
-

-
-

macOS

-
-

- Чтобы добавить устройство Mac в менеджер, необходимо сначала нажать - на кнопку с надписью - Добавить новое устройство, которая добавит устройство и создаст несколько пустых полей, которые необходимо заполнить для включения соединения. -
-

-

Сначала вам необходимо - дать имя устройству, чтобы его можно было идентифицировать в списке целей, а затем указать - имя хоста (или IP) компьютера Mac. Затем необходимо указать - имя пользователя , с которым вы хотите установить связь, и - пароль , который он использовал. При желании вы также можете изменить - Install Folder на компьютере Mac на то место, где вы предпочитаете, чтобы GameMaker хранил файлы сборки ваших проектов. -

-

Когда все будет готово, вы можете нажать на кнопку - Проверить соединение, чтобы убедиться, что GameMaker может взаимодействовать с компьютером Mac. -

-

- ПРИМЕЧАНИЕ: Если вы разрабатываете для iOS, вы должны сначала сделать это и установить рабочее соединение с Mac, который вы хотите использовать для разработки. -
-

-

- ПРИМЕЧАНИЕ: Вы - должны быть включены - Удаленный вход на целевом компьютере mac. Это можно сделать, перейдя в - Предпочтения -> - Общий доступ и - Включить удаленный вход для пользователя, которому вы хотите предоставить возможность входа. -

-

-
-

Ubuntu (Linux)

-
-

Чтобы добавить устройство Ubuntu (Linux) в менеджер, необходимо сначала нажать на кнопку Add New Device ("Добавить новое устройство "). - добавит устройство и создаст несколько пустых полей, которые необходимо заполнить для включения соединения.

-

Сначала необходимо назвать устройство, чтобы его можно было идентифицировать в списке целей, а затем указать имя хоста (или IP) машины Ubuntu (или VM). Затем необходимо указать имя пользователя , на которого - вы хотите связать с ним, и пароль , который он использовал. Также необходимо указать папку install на машине Ubuntu, которую вы хотите использовать для установки ваших проектов. Когда все это будет сделано, вы можете нажать - на кнопку Test Connection, чтобы убедиться, что GameMaker может взаимодействовать с машиной Ubuntu.

-

Обратите внимание, что конечный исполняемый файл, созданный GameMaker, будет зависеть от архитектуры устройства, на которое он нацелен, которая может быть либо x64, либо ARM. Например, если вы подключите Raspberry Pi 3 или 4, - созданный исполняемый файл будет 32-разрядным ARM-исполняемым файлом, а если вы подключите ПК Linux, то это будет 64-разрядный x64-исполняемый файл.

-

-
-

Windows UWP

-
-

Прежде чем добавить устройство для цели Windows 10 UWP, необходимо включить режим разработчика и настроить портал устройств на устройстве. Если вы этого не сделаете, GameMaker не сможет взаимодействовать - с устройством и не сможет правильно создавать UWP-приложения.

-

Самый простой способ включить режим разработчика - просто ввести " Режим разработчика" в поиск Windows и затем щелкнуть на появившемся пункте " Настройки". Откроется следующее окно:

-

Вам нужно выбрать опцию Режим разработчика (для этого может потребоваться, чтобы Windows загрузил и - установить некоторые дополнительные пакеты), а затем выбрать опцию под ней, Enable Device Portal. Портал устройства - это то, что позволит GameMaker взаимодействовать с ПК Windows 10, и когда он будет включен, вам потребуется - указать имя пользователя и пароль:

-

Обратите внимание, что имя пользователя и пароль должны быть уникальными для портала и не должны быть теми, которые используются в вашей учетной записи Microsoft - или другие учетные данные Windows. После ввода этой информации нажмите кнопку Apply (Применить ), затем закройте менеджер настроек и вернитесь в GameMaker.

-

Для получения дополнительной информации о Портале устройств см. статью Microsoft: Портал устройств для настольных компьютеров.

-

Теперь вы можете открыть диспетчер устройств в GameMaker и настроить устройство (или устройства) для использования:

-

Чтобы добавить в менеджер Windows 10 UWP-совместимое устройство, необходимо сначала нажать на кнопку " Добавить новое устройство ". - добавит устройство и создаст несколько пустых полей, которые необходимо заполнить для включения соединения.

-

Сначала необходимо назвать устройство, чтобы его можно было идентифицировать в списке целей, а затем указать хост - это IP-адрес устройства Windows 10 в сети, на котором будет размещена игра, с суффиксом " :50443" для задания номера порта. После этого добавьте имя пользователя и пароль , которые вы установили в Device Portal (как упоминалось ранее). Вы можете оставить PIN-код пустым, так как он - не требуется для UWP Windows 10 Desktop.

-

Более подробную информацию о настройке для различных выходов UWP (Desktop, XboxOne) можно найти в службе поддержки YYG: Настройка UWP.

-

-
-

-

В нижней части всех окон различных устройств имеется опция Очистить устройства, при нажатии на которую все подключенные устройства будут удалены из списка.

-

После настройки устройств вы можете подключиться к любому из них с помощью опции Target в верхней части GameMaker IDE, и тестирование/создание вашей игры перенесет проект на это устройство:

-

Icon LMB

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Setting_Up_And_Version_Information/Updating_Guide.htm b/Manual/contents/Setting_Up_And_Version_Information/Updating_Guide.htm index 1796f0200..e69de29bb 100644 --- a/Manual/contents/Setting_Up_And_Version_Information/Updating_Guide.htm +++ b/Manual/contents/Setting_Up_And_Version_Information/Updating_Guide.htm @@ -1,48 +0,0 @@ - - - - - - Руководство по обновлению - - - - - - - - - - -

Руководство по обновлению

-

GameMaker IDE будет периодически проверять наличие обновлений и автоматически загружать их. Некоторые из этих обновлений будут необязательными, и вы можете не устанавливать их, если не хотите этого делать или считаете, что некоторые изменения могут сломать - проект, который вы собираетесь опубликовать. Однако есть и такие обновления, которые содержат важные исправления или улучшения, которые нельзя пропускать, и в этих случаях GameMaker принудительно установит обновление.

-

New Version Window

-

GameMaker - это больше, чем просто IDE. Он имеет ряд различных инструментов выполнения, которые он использует за кулисами для создания игр для различных целевых платформ. Эти инструменты в основном представляют собой различные программы запуска и компиляторы, которые требуются для каждой платформы. - и вы можете иметь несколько из них в любой момент времени. Это означает, что вы можете "выбирать", какую версию компилятора и бегунка использовать, если у вас возникли проблемы с текущей версией компилятора - или нацелены на очень специфическую целевую версию или платформу. Инструменты будут автоматически обновляться при появлении новой версии, но вы можете использовать настройки Runtime Feeds Preferences, чтобы выбрать, какие из них вы хотите использовать. - Более подробную информацию об обновлениях во время выполнения см. в разделе Настройки - Runtime Feeds.

-

Обратите внимание, что загрузка и установка среды выполнения может занять несколько минут, но вы можете видеть индикатор хода загрузки в правом верхнем углу IDE:

-

Installing a Runtime

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Audio_Groups.htm b/Manual/contents/Settings/Audio_Groups.htm index 8075f566a..e69de29bb 100644 --- a/Manual/contents/Settings/Audio_Groups.htm +++ b/Manual/contents/Settings/Audio_Groups.htm @@ -1,58 +0,0 @@ - - - - - - Аудиогруппы - - - - - - - - - - -

Аудиогруппы

-

Менеджер аудиогрупп доступен из меню Инструменты на сайте IDE. Здесь вы можете - добавлять, удалять и переименовывать аудиогруппы, а также задавать параметры их экспорта на платформу. GameMaker позволяет назначать каждый из аудиоресурсов (звуковые эффекты и музыку) на разные аудиогруппы - чтобы попытаться оптимизировать количество звуков, воспроизводимых в каждый момент времени, а также предоставить вам дополнительный контроль над тем, на какие платформы они экспортируются.

-

Чтобы определить аудиогруппу, нужно нажать на кнопку Добавить новую, в результате чего будет создана новая группа, которой можно дать имя. Чтобы изменить группу, - нажмите на выпадающем меню и выберите ту, которую вы хотите изменить.

-

ПРИМЕЧАНИЕ: Если вы выбрали потоковое аудио для звука в редакторе звуков, вы не сможете назначить звук аудиогруппе, поскольку потоковые звуки не упакованы так же, как другие - и вы имеете полный контроль над тем, когда они загружаются, воспроизводятся и выгружаются с помощью кода.

-

Чтобы добавить звук в аудиогруппу, необходимо открыть редактор звука для этого звука, а затем выбрать группу из предложенных вариантов, или же можно добавить активы в аудиогруппу через - меню правой кнопки мыши в Браузере активов. Вы можете выбрать один или несколько звуковых активов (или - всю папку группы активов), а затем использовать меню RMB для добавления звуков в любую группу. Вы также можете нажать кнопку Добавить ресурс в нижней части редактора аудиогрупп, чтобы добавить активы таким образом.

-

После добавления звука в пользовательскую аудиогруппу вы можете использовать это окно, чтобы выборочно выбрать, в какую платформу экспортировать звук. Может оказаться, что по умолчанию все ваши звуки имеют наивысшее качество, но для HTML5 (например) - вы хотите использовать звуковой файл более низкого качества, чтобы использовать меньше памяти. В этом случае вы добавляете файлы более низкого качества в GameMaker, а затем назначаете их новой звуковой группе. Затем вы выбираете эту аудиогруппу из выпадающего меню и устанавливаете - экспорт только в HTML5, и удалить экспорт в HTML5 из опций экспорта аудиогруппы более высокого качества. Важно отметить, что вы не можете изменить параметры экспорта для аудиогруппы "по умолчанию" и что она всегда будет - экспортироваться на все доступные платформы при создании окончательного пакета игры.

-

После определения аудиогрупп и назначения им звуков вы можете увидеть их в списке слева при выборе группы. Всегда будет доступна аудиогруппа "по умолчанию", и все звуки, входящие в эту группу, будут всегда - будут включены в пакет игры для всех платформ, и все они будут загружены в память при запуске (если в свойствах редактора звуков они не отмечены как "потоковые"), но когда вы создаете пользовательскую звуковую группу, файлы, добавленные в нее - не будут загружены в память до тех пор, пока вы не вызовете функцию audio_group_load(). Таким образом, вы можете контролировать - какие аудиофайлы находятся в памяти в любой момент времени. Обратите внимание, что для всех функций аудиогрупп необходимо указать значение ID аудиогруппы. - Это просто имя, которое вы дали аудиогруппе.

-

Аудиогруппы также связаны с настройками конфигураций. Когда вы выбираете конфигурацию, вы можете открыть окно Audio Groups и выбрать цели экспорта с правой стороны для этой конфигурации, и - затем изменение конфигураций изменит эти цели вывода. Обратите внимание, что вы не можете установить звуковые ресурсы для разных групп на основе каждой конфигурации, только цель экспорта для данной группы.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Building_via_Command_Line.htm b/Manual/contents/Settings/Building_via_Command_Line.htm index 90e6fc7cd..e69de29bb 100644 --- a/Manual/contents/Settings/Building_via_Command_Line.htm +++ b/Manual/contents/Settings/Building_via_Command_Line.htm @@ -1,474 +0,0 @@ - - - - - - Сборка через командную строку - - - - - - - - - -

Сборка через командную строку

-

ПРИМЕЧАНИЕ Сборка исполняемых пакетов через командную строку доступна только для определенных лицензий, поэтому посмотрите на этой странице, чтобы узнать, поддерживает ли это ваша лицензия. Для всех остальных лицензий вы можете запускать и отлаживать свой проект через командную строку без каких-либо ограничений.

-

В дополнение к сборке проекта через IDE, GameMaker позволяет создавать проекты через интерфейс командной строки, используя множество опций и команд, описанных ниже. Вы можете использовать это для сборки проекта, его тестирования и развертывания на нескольких платформах с помощью одного пакетного файла, а также для настройки непрерывной интеграции с помощью сервера автоматизации, такого как Jenkins.

-

Это делается путем запуска исполняемого файла Igor.exe, находящегося в вашей папке времени выполнения, и передачи опций и команд, перечисленных на этой странице. На компьютере Windows он будет находиться в папке C:\ProgramData\GameMaker\Cache\runtimes\runtime-[version]\bin, а на Mac - в папке /Users/Shared/GameMaker/Cache/runtimes/runtime-[version]/bin.

-

-

Игорь CI Билдинг

-

Настройка

-

Чтобы настроить сборку CI на машине, вам нужно сделать следующее:

-
    -
  • Установите GameMaker и необходимые программы выполнения
  • -
  • Сборка проектов через IDE для требуемых целей, чтобы убедиться, что они работают нормально
  • -
  • Тестовая сборка из командной строки (см. примеры ниже)
  • -
  • Создайте пакетный файл, который будет выполнять сборку, требуемую в рамках задачи (проверьте это из командной строки)
  • -
  • Настройте среду CI (это зависит от того, как вы собираетесь собирать свои игры); мы предлагаем использовать Jenkins
  • -
  • Настройте задачу CI и убедитесь, что все необходимые условия настроены (например, синхронизация контроля исходных текстов с вашим проектом).
  • -
  • Подключите пакетный файл к задаче CI и проведите тестирование в среде Jenkins
  • -
-

Примечания

-
    -
  • Некоторые платформы могут иметь проблемы с длиной путей к файлам, в этом случае вам потребуется subst виртуальных дисков на вашем ПК (как это делает IDE ), прежде чем передавать их в команды.
  • -
  • Некоторые платформы (в частности, Android) автоматически subst диск во время сборки, поэтому в случае ошибки вам может потребоваться вручную очистить его.
  • -
-

Опции

-

Ниже перечислены опции, которые можно использовать при запуске исполняемого файла Igor :

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ВариантОписание
/uf=[user_folder]Папка пользователя, используемая для получения информации о лицензии -
-
- На сайте Windows это будет: %appdata%\GameMaker\<user_name>_<number> -
- На macOS это будет: ~/.config/GameMaker/<user_name>_<number>
/rp=[runtime_root]Корневая папка программы выполнения
/project=[project_YYP_file]Полный путь к файлу проекта .yyp.
/cache=[cache_dir_path]Используемый каталог кэша (по умолчанию \cache в текущем каталоге).
/temp=[temp_dir_path]Временный каталог, который будет использоваться (по умолчанию c:\temp).
/of=[output_folder_filename]Выходной каталог, куда будет извлечена сборка; не указывайте только каталог, так как последующая запись всегда удаляется (например: указание d:\game\output поместит файлы игры в d:\game). -
-
- Если этот параметр не указан, в той же директории, где находится файл .bat (или откуда запущена команда), будет создан каталог с именем output, содержащий извлеченные файлы сборки.
/tf=[target_file]Фактическое имя файла создаваемого ZIP-файла или программы установки NSIS
/config=[configName]Имя используемой конфигурации (по умолчанию Default).
/runtime=YYC|VMТип вывода (либо YYC, либо VM), по умолчанию VM
/j=[NumCPUs]Количество процессоров, используемых в процессе сборки
/device=[device_name_from_IDE]Имя целевого устройства, установленное в IDE
-

Примеры

-

Ниже приведены примеры команд сборки для всех платформ:

-

Opera GX

-
-

Очистка проекта Opera GX:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] -- OperaGX Clean

-

Запуск Opera GX:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] -- OperaGX Run

-
-

Windows

-
-

Уборка Windows проект:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] -- Windows Clean

-

Построение VM для Windows -- Run, PackageZip и PackageNsis:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] -- Windows Run

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] -- Windows PackageZip

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] -- Windows PackageNsis

-

Создание YYC для Windows - Run, PackageZip и PackageNsis:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /platform=YYC -- Windows Run

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /platform=YYC -- Windows PackageZip

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /platform=YYC -- Windows PackageNsis

-
-

macOS

-
-

Уборка macOS проект:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] -- Mac Clean

-

Создание виртуальной машины для macOS на компьютере Mac:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] -- Mac Package

-

Обратите внимание, что на Mac для запуска Игоря необходимо использовать mono, поэтому перед всеми командами нужно писать mono, например: mono Igor.exe [options]

-

Создание виртуальной машины для macOS на ПК:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /device=[device_IDE_Name] -- Mac Package

-

Создание YYC для macOS на компьютере Mac:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /platform=YYC -- Mac Package

-

Построение YYC для macOS во время работы на ПК:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /platform=YYC /device=[device_IDE_Name] -- Mac Package

-
-

Linux / Ubuntu

-
-

Уборка Linux проект:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] -- Linux Clean

-

Создание виртуальной машины для Linux на ПК:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /device=[device_IDE_Name] -- Linux Package

-

Построение YYC для Linux во время работы на ПК:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /platform=YYC /device=[device_IDE_Name] -- Linux Package

-
-

HTML5

-
-

Чистка проекта HTML5:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] -- HTML5 Clean

-

Создание папки HTML5 (обязательно укажите целевую папку с помощью /tf):

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_folder] -- HTML5 folder

-
-

iOS

-
-

Создание виртуальной машины для iOS на компьютере Mac:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] -- ios Package

-

Создание виртуальной машины для iOS на ПК:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /device=[device_IDE_Name] -- ios Package

-

Создание YYC для iOS на компьютере Mac:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /platform=YYC -- ios Package

-

Построение YYC для iOS во время работы на ПК:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /platform=YYC /device=[device_IDE_Name] -- ios Package

-
-

Android

-
-

Уборка Android проект:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] -- Windows Clean

-

Создание Android APK с помощью VM:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] -- Android Package

-

Создание Android APK с помощью YYC:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /platform=YYC -- Android Package

-
-

tvOS

-
-

Уборка tvOS проект:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] -- tvos Clean

-

Создание виртуальной машины для tvOS на компьютере Mac:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] -- tvos Package

-

Создание виртуальной машины для tvOS на ПК:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /device=[device_IDE_Name] -- tvos Package

-

Создание YYC для tvOS на компьютере Mac:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /platform=YYC -- tvos Package

-

Построение YYC для tvOS во время работы на ПК:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /platform=YYC /device=[device_IDE_Name] -- tvos Package

-
-

PS4

-
-

Проект "Очистка PS4":

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] -- ps4 Clean

-

Сборка VM для PS4 на ПК:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /device=[device_IDE_Name] -- ps4 Package

-

Создание YYC для PS4 во время работы на ПК:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /platform=YYC /device=[device_IDE_Name] -- ps4 Package

-
-

PS5

-
-

Чистка проекта PS5:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] -- ps5 Clean

-

Создание виртуальной машины для PS5 на ПК:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /device=[device_IDE_Name] -- ps5 Package

-

Создание YYC для PS5 во время работы на ПК:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /platform=YYC /device=[device_IDE_Name] -- ps5 Package

-
-

Xbox One

-
-

Чистка проекта Xbox One:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] -- XBoxOne Clean

-

Создание VM для Xbox One на ПК:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /device=[device_IDE_Name] -- XBoxOne Package

-

Создание YYC для Xbox One во время работы на ПК:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /platform=YYC /device=[device_IDE_Name] -- XBoxOne Package

-
-

Xbox Series X/S

-
-

Чистка проекта Xbox Series X/S:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] -- XBoxOneSeriesXS Clean

-

Создание виртуальной машины для Xbox Series X/S:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /device=[device_IDE_Name] -- XBoxOneSeriesXS Package

-

Создание YYC для Xbox Series X/S:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /platform=YYC /device=[device_IDE_Name] -- XBoxOneSeriesXS Package

-
-

Переключатель

-
-

Уборка Switch проект:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] -- Switch Clean

-

Создание виртуальной машины для Switch на ПК:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /device=[device_IDE_Name] -- Switch Package

-

Создание виртуальной машины для YYC на ПК:

-

Igor.exe /uf=[user_folder] /rp=[runtime_path] /project=[project_YYP_file] /cache=[cache_dir_path] /temp=[temp_dir_path] /of=[output_folder_filename] /tf=[target_file] /platform=YYC /device=[device_IDE_Name] -- Switch Package

-
-

-

Время выполнения Игоря

-

Здесь перечислены опции, которые могут быть использованы при работе с программой Igor:

- - - - - - - - - - - - - - - - - - - - - - - -
ВариантОписание
/uf=[user_folder]Установите пользовательскую папку, используемую для получения информации о лицензии, чтобы GameMaker знал, какие модули могут быть установлены
/lf=[license_file]Установите прямой путь к файлу лицензии, может использоваться как альтернатива установке пользовательской папки (/uf).
/ru=[runtime_url]Установите URL для получения информации о времени выполнения (по умолчанию используется стабильный выпуск).
/rp=[runtime_root]Установите локальную папку установки времени выполнения для списка установленных времен выполнения или установки новых времен выполнения
-

Здесь перечислены команды, которые можно использовать в среде выполнения Igor:

-

Синтаксис:

-

Igor.exe [command]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
КомандаОписание
Runtime ListПеречисляет версии, доступные в фиде (номер версии, дата/время сборки).
Runtime ListInstalled [directory]Перечисляет исполнительные программы, доступные в текущей папке (directory= полный путь к папке). -
-
- Вы можете указать каталог для поиска, но если он не указан, то по умолчанию будет использоваться текущий каталог. -
-
- Также проверяется, есть ли внутри каталога файл receipt.json и папка manifest (чтобы убедиться, что это действительно среда выполнения).
Runtime Info [version]Выводит информацию о последнем времени выполнения на заданном канале; также требуется файл лицензии для отображения информации о модулях, доступных для пользователя -
-
- version может быть либо строкой, используемой для поиска по названиям фидов (например: "739" покажет информацию для всех сборок, содержащих 739 в номере версии), либо all, чтобы показать информацию для всех фидов. -
-
- Будет выведен список модулей с именами файлов .zip для каждого модуля.
Runtime Install [version]Устанавливает последнюю версию runtime из указанного фида, используя указанный version в качестве фильтра поиска; если он не указан, по умолчанию устанавливается последняя версия. Он получит все модули, которые есть у пользователя на его лицензии.
Runtime Verify [folder=.]Рассчитывает контрольные суммы для всех установленных файлов и сравнивает их с контрольными суммами, записанными в манифесте folder. Вы можете указать папку для проверки, однако если она не указана, то по умолчанию будет использоваться текущий каталог. -
-
- При этом будут отмечены все файлы, контрольные суммы которых не совпадают, отсутствующие файлы и файлы, которых не должно быть. -
-
- Обратите внимание, что сами файлы манифеста не проверяются, и пользователь может изменить файлы манифеста, чтобы они соответствовали установленным.
-

-

Игорь Тестинг

-

Вот варианты, которые можно использовать для тестирования ваших сборок с помощью Igor:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ВариантОписание
/uf=[user_folder]Установите пользовательскую папку, используемую для получения информации о лицензии, чтобы GameMaker знал, какие модули могут быть установлены
/lf=[license_file]Установите прямой путь к файлу лицензии, может использоваться как альтернатива установке пользовательской папки (/uf).
/df=[device_file]Установите прямой путь к файлу devices.json, может использоваться как альтернатива установке пользовательской папки (/uf).
/timeout=[number_of_seconds_to_wait]Таймаут, используемый для теста в секундах, по умолчанию 120 секунд; тест будет остановлен по истечении этого таймаута и будет помечен как неудачный
/waittime=[number_of_seconds_to_wait]Количество секунд ожидания в главном цикле перед объявлением теста пройденным, по умолчанию 30 секунд
/device=[device_name]Используется для поиска имени устройства в файле devices.json пользовательской папки.
/target=[list_of_targets]Список целей, разделенный запятыми, в формате PLATFORM|DEVICE, например: /target="Windows|Local,HTML|Firefox" -
-
- Если вы укажете all, тесты будут пытаться запустить для каждого устройства в файле devices.json.
-

Существует одна команда, которую вы можете использовать для запуска тестов с помощью Igor:

-

Igor.exe Tests RunTests [test_directory/test_filename]

-

Вы должны указать либо каталог тестирования, либо имя файла тестирования.

-
    -
  • Если это каталог, Игорь будет искать файл с именем tests.json в каталоге -
      -
    • Если файл не найден, Игорь будет рекурсивно искать файлы .yyz и .yyp в каталоге -
        -
      • Каждый найденный проект будет собран и запущен на Windows.
      • -
      • Он будет ждать, пока бегунок не дойдет до главного цикла -
          -
        • Тест пройден, если проект все еще запущен по истечении времени ожидания.
        • -
        • Тест не пройден, если проект не скомпилировался в течение тайм-аута или завершился до истечения времени ожидания.
        • -
        -
      • -
      -
    • -
    • Если найден файл tests.json, Игорь запустит тесты, описанные в этом файле (см. пример ниже).
    • -
    -
  • -
  • В качестве альтернативы вы можете указать прямой путь к файлу tests.json вместо каталога
  • -
-

-

Файл Tests.json

-

Формат

-

Файл tests.json должен иметь следующий формат:

-
    -
  • Файл JSON должен содержать массив объектов
  • -
  • Каждый объект должен описывать один тест -
      -
    • Объект test должен содержать следующие ключи: -
        -
      • name: Имя, используемое для сообщения о том, прошел тест или нет.
      • -
      • path: Путь к файлу или папке .yyp, .yyz, .gml, .js для теста.
      • -
      • command: Команда Igor для теста (Run, CreatePackage и т.д., как описано выше)
      • -
      -
    • -
    • Объект теста может также содержать эти ключи: -
        -
      • platform: Передается непосредственно в Igor для выполнения теста
      • -
      • device: Имя устройства из файла devices.json
      • -
      • target: Цель в формате "PLATFORM|TARGET", например: "Windows|Local"
      • -
      • timeout: Таймаут для всего теста, включая компиляцию и выполнение; если он превышен, тест будет остановлен и помечен как неудачный.
      • -
      • waittime: Длительность ожидания после входа в основной цикл для принятия решения о том, прошел ли тест.
      • -
      • owner: адрес электронной почты пользователя, которому будет отправлено письмо в случае неудачи теста.
      • -
      -
    • -
    -
  • -
-

Пример

-

Вот пример файла tests.json:

-

[ -
- { -
- "name" : "Game Idea Windows", -
- "path" : "C:/scratch/GameIdea.yyz", -
- "platform" : "Windows", -
- "command" : "Run", -
- "timeout" : "500", -
- "waittime" : "30" -
- }, -
- { -
- "name" : "Platformer Game Windows", -
- "path" : "C:/Users/<MY USERNAME>/Documents/GameMaker/Platformer Game/PlatformerGame.yyp", -
- "target" : "Windows|Local,HTML5|selenium:firefox,PS4|Default", -
- "command" : "Run" -
- }, -
- { -
- "name" : "Puzzle Game Windows", -
- "path" : "C:/Users/<MY USERNAME>/Documents/GameMaker/Puzzle Game/PuzzleGame.yyp", -
- "platform" : "HTML5", -
- "command" : "Run", -
- "device" : "selenium:chrome" -
- } -
- ]

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/Settings/Command_Line_Parameters.htm b/Manual/contents/Settings/Command_Line_Parameters.htm index e7e216117..e69de29bb 100644 --- a/Manual/contents/Settings/Command_Line_Parameters.htm +++ b/Manual/contents/Settings/Command_Line_Parameters.htm @@ -1,91 +0,0 @@ - - - - - - Параметры командной строки - - - - - - - - - - -

Параметры командной строки

-

При создании игр важно протестировать исполняемый файл, чтобы убедиться, что окончательная компиляция корректна и не содержит непредвиденных ошибок или различий. Однако создание исполняемого файла означает, что, поскольку у вас нет доступа ни к консоли отладки, ни к окну компилятора, может быть трудно определить и отладить любые проблемы, которые вы можете найти. Однако для этого есть решение - использовать параметры командной строки для установки определенных свойств при запуске исполняемой версии игры, что, в свою очередь, позволяет создавать выходные журналы и тестировать другие специальные ситуации.

-

ПРИМЕЧАНИЕ Это доступно только для стандартного целевого модуля Windows .

-

Чтобы это заработало, сначала необходимо создать исполняемый файл игры Windows и установить его на тестовой машине. После этого необходимо создать ярлык игры на рабочем столе. Именно здесь мы будем добавлять параметры, которые будут передаваться на *.exe (чтобы создать ярлык, щелкните правой кнопкой мыши на исполняемом файле игры и выберите Отправить на > Рабочий стол (создать ярлык)).

-

После создания ярлыка вы можете использовать любой из следующих параметров в целевом пути:

-

-noaudio: Это отключает все звуки в вашей игре.

-

-inawindow: Заставляет игру запускаться в окне, даже если она запущена в полноэкранном режиме.

-

-output <filename>: Отправляет вывод консоли на имя файла, включая любые отладочные сообщения, которые есть в вашей кодовой базе.

-

-debugoutput <filename>: Отправляет консольный вывод в указанный файл, исключая любые пользовательские отладочные сообщения, но включая дополнительную информацию из бегущей строки для сообщения об ошибке.

-

-software: Заставляет игру использовать программную обработку вершин вместо аппаратной для рендеринга игровой графики. Это особенно полезно для тех ПК, которые используют встроенный чипсет Intel GFX или демонстрируют проблемы с отображением на старых машинах.

-

-intel: Это включит исправление для плохих драйверов Intel, независимо от того, какой GPU используется. Это решение для плохих драйверов замедлит работу, что даст заметное снижение производительности вашей игры, поэтому если вам не нужно исправление, не используйте его.

-

-vanillaGFX: Использование этого параметра отключает любую проверку производителя драйвера и может быть очень полезно для тестирования вашей игры "как есть".

-

Стоит отметить, что <filename> в -output и -debugoutput при желании может быть одним и тем же, так как файл открывается и закрывается при каждой записи.

-

Теперь вы должны перейти к тому месту, где вы создали ярлык исполняемого файла игры, а затем щелкнуть на нем правой кнопкой мыши и выбрать пункт "Свойства".

-

Откроется окно, аналогичное приведенному выше. Здесь вы можете добавить в Target path вашу командную строку. Просто прокрутите до конца заданного пути, добавьте пробел, а затем строку параметров. Так, например, для создания вывода файла отладки вы можете сделать следующее:

-

D:\Users\Me\GameMaker\CustomLoadBar-Default-1.0.0.0\CustomLoadBar.exe -debugoutput debug.txt

-

В результате будет создан файл под названием "debug.txt" в том же месте, что и исполняемый файл (не в месте расположения ярлыка, а там, где установлена игра) с информацией об отладке и компиляторе вашей готовой игры. Нажмите на "OK", а затем используйте ярлык для запуска игры, чтобы она использовала эти параметры и помогла в отладке.

-

Более подробную информацию о том, как отладить вашу игру, вы найдете в разделе руководства " Отладка".

-

А/Б тестирование с помощью командной строки

-
-

Бегущая строка YoYo также имеет специальный параметр командной строки:

-

-game <filename>: загружает заданный файл игры -
-

-

Зачем вам это нужно? Обычно вы этого не делаете, но если вы хотите иметь более одной версии вашей игры одновременно, это можно сделать с помощью этого метода, что значительно упрощает сравнительные тесты A/B. С помощью этого метода вы можете провести фокус-тестирование с кем-то другим или, как дизайнер, получить лучшее представление о вещах, проводя тесты бок о бок.

-

Чтобы настроить его, необходимо знать несколько вещей. Для начала вам понадобится путь к самому Runner. Его можно найти в папке Program Data вашей ОС Windows (по умолчанию она может быть скрыта, поэтому вам придется изменить свойства просмотра, чтобы увидеть ее), а типичный формат выглядит следующим образом: -
-
-

-

C:\ProgramData\GameMaker\Cache\runtimes\<runtime_version>\windows\Runner.exe -
-

-

Обратите внимание, что папка runtime_version будет зависеть от установленных у вас в данный момент времен выполнения. Вам также понадобится путь к файлу <yourgame>.win, поскольку именно на него мы будем указывать бегунку. Самый простой способ найти этот путь - зайти в папку Temp (обычно она находится по адресу %localappdata%\Temp\GameMakerStudio\<game_name>\) и просто найти *.win, так как это покажет вам все доступные файлы, и вы сможете просто выбрать тот, к которому вам нужно получить полный путь.

-

Теперь мы могли бы создать ярлык для бегущей строки, как мы это сделали для исполняемого файла, а затем изменять параметры по мере необходимости, но это означает необходимость открывать и редактировать ее между тестами, что сводит на нет цель использования этой функциональности для тестирования бок о бок. Вместо этого мы создадим пару маленьких "пакетных" файлов, чтобы справиться с этой задачей.

-

Для этого сначала создайте новый текстовый документ на рабочем столе и откройте его в Блокноте (или любом другом текстовом редакторе). Добавьте следующее: -
-
-

-

START C:\ProgramData\GameMaker\Cache\runtimes\<runtime_version>\windows\Runner.exe -game <LOCAL TEMP PATH>\<GAMENAME>.win -
-

-

Вам нужно установить временный путь к файлу игры *.win, а затем сохранить его как "GM_Test_1.bat" на рабочем столе (имейте в виду, что Блокнот автоматически сохранит файл *.txt, если вы не выберете "все файлы" в опциях диалога сохранения). Пример того, как должна выглядеть ваша конечная команда: -
-

-

START C:\ProgramData\GameMaker\Cache\runtimes\runtime-9.9.1.199\windows\Runner.exe -game D:\Users\Mark\AppData\Local\Temp\GameMaker\AlphaDog_Reboot\AlphaDog_Reboot.win -
-

-

Теперь создайте другой текстовый файл и добавьте ту же строку, только на этот раз укажите путь ко второй версии игры, с которой вы хотите провести тестирование бок о бок, и сохраните его как "GM_Test_2.bat". Вы можете дважды щелкнуть по любому из этих файлов , чтобы открыть различные версии вашей игры, а наличие этих файлов в виде пакетных файлов означает, что вы можете легко открыть их снова, чтобы отредактировать их и изменить тестируемую игру.

-

-
-

-

-
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Configurations.htm b/Manual/contents/Settings/Configurations.htm index f73e05fd7..e69de29bb 100644 --- a/Manual/contents/Settings/Configurations.htm +++ b/Manual/contents/Settings/Configurations.htm @@ -1,58 +0,0 @@ - - - - - - Конфигурации - - - - - - - - - - -

Конфигурации

-

В связи с требованиями кроссплатформенной разработки и необходимостью того, чтобы один продукт был доступен и адаптирован для различных клиентов, устройств или платформ, GameMaker включает конфигурации для упрощения работы. Используя эту систему, вы можете быстро переключаться между различными заставками, иконками и прилагаемыми файлами и в любой момент протестировать или экспортировать только те из них, которые подходят для целевой платформы или клиента, и все это на основе одного и того же базового кода.

-

Чтобы иметь возможность справляться с различными требованиями клиентов и платформ, вы можете использовать редактор конфигурации, который доступен из меню Extras в браузере активов:

-

Все игры, созданные в GameMaker, начинаются с конфигурации "по умолчанию", которая указана в редакторе, когда вы впервые его открываете:

-

Для настройки конфигураций рекомендуется сначала подготовить конфигурацию "по умолчанию", включив в нее все настраиваемые активы проекта. Для этого просто пройдитесь по следующему списку опций и установите в них то, что требуется по умолчанию:

-
    -
  • Параметры расширения: Установите различные поля "Копировать в..." на необходимые платформы для конфигурации. Любые "Прокси" файлы, созданные здесь, будут иметь свою "Целевую" платформу, связанную с конфигурацией.
  • -
  • Редактор спрайтов: Установите группу текстур, в которую вы хотите добавить sprites.
  • -
  • Редактор наборов плиток: Установите группу текстур, в которую будут добавлены наборы плиток.
  • -
  • Редактор шрифтов: Установите группу текстур, в которую нужно добавить шрифты.
  • -
  • Менеджер групп текстур: Здесь вы можете задать любые свойства для каждой конфигурации, включая родительскую группу, к которой принадлежит группа текстур.
  • -
  • Менеджер аудиогрупп: Здесь можно настраивать звуки, которые назначаются различным аудиогруппам...
  • -
  • Включенные файлы: Установите в поле "Копировать в..." необходимые платформы для конфигурации.
  • -
-

После того как вы установили конфигурацию по умолчанию, вы можете добавить новую конфигурацию в редактор конфигурации, щелкнув правой кнопкой мыши на папке конфигураций и выбрав Add Config, или нажав кнопку "Create" в нижней части окна. Новая конфигурация будет отображаться как "дочерняя" от конфигурации по умолчанию - все пользовательские конфигурации являются дочерними от конфигурации по умолчанию - и вы можете дать ей соответствующее имя.

-

Чтобы отредактировать конфигурацию, необходимо либо дважды щелкнуть на ней , либо воспользоваться правой кнопкой мыши , выбрав пункт меню "Set Config", который выделит конфигурацию в редакторе, после чего можно приступать к ее настройке. Для этого просто перейдите к перечисленным выше опциям и измените их на желаемые настройки для вновь созданной конфигурации. GameMaker автоматически сохранит эти значения для конфигурации, и вы сможете переключаться между конфигурациями в любое время, просто используя опцию меню RMB или дважды щелкнув на .

-

Дальнейшие конфигурации могут быть добавлены либо как дочерние элементы конфигурации по умолчанию, либо как дочерние элементы конфигураций, определенных пользователем, которые вы создали, в зависимости от того, какая конфигурация была выделена в редакторе при ее создании. На изображении примера ниже видно, что у нас определено три пользовательских конфигурации, две из которых являются дочерними для конфигурации по умолчанию, а еще одна - дочерняя для конфигурации, определенной пользователем:

-

Стоит отметить, что вы можете использовать любую заданную конфигурацию с любой заданной целевой платформой при компиляции или тестировании ваших проектов. Для этого необходимо выбрать нужную конфигурацию в разделе Config в Target Manager:

-

Вы также можете открыть редактор конфигурации в любое время из менеджера целей, нажав на кнопку меню в правом верхнем углу (как выделено на рисунке выше).

-

После того как вы зададите конфигурацию для использования таким образом, при компиляции с целью тестирования или создания конечного пакета активов будет использоваться выбранная конфигурация. Более подробную информацию об окне Цели см. в разделе Компиляция.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Game_Options.htm b/Manual/contents/Settings/Game_Options.htm index 1086a8a52..e69de29bb 100644 --- a/Manual/contents/Settings/Game_Options.htm +++ b/Manual/contents/Settings/Game_Options.htm @@ -1,76 +0,0 @@ - - - - - - Параметры игры - - - - - - - - - - -

Параметры игры

-

Параметры игры разделены на два раздела: Основные параметры и Настройки платформы. Основные параметры начинаются с раздела " Общие параметры", где вы можете задать определенные параметры, которые будут влиять на игру независимо от платформы, на которой она будет работать.

-

Окно состоит из следующих разделов:

-
    -
  • Язык сценариев по умолчанию: Выберите, должны ли события объектов и сценарии в текущем проекте использовать GML Code или GML Visual, или всегда спрашивать при создании нового сценария.
  • -
  • Game Frames Per Second: Это значение устанавливает ограничение на количество кадров в секунду, которое GameMaker должен пытаться поддерживать в процессе работы вашей игры. Это значение представляет собой количество раз, которое игровой цикл будет выполняться за одну секунду (один игровой цикл считается одним "кадром"), и по умолчанию установлено на значение 60, хотя часто используется и 30. Существует много споров о том, какая скорость комнаты является идеальной, но на самом деле ответ зависит от типа игры, которую вы делаете, размера комнаты, количества экземпляров и интенсивности кода. Например, если у вас большая комната и скорость комнаты 30, игра может выглядеть "отрывистой", так как чем больше область, на которую вы смотрите, тем легче глазу воспринимать низкую скорость комнаты, но если игра интенсивная, то установка скорости комнаты на 120 может привести к "лагам", так как fps падает из-за объема выполняемой обработки. Поэтому будьте осторожны с этим значением и старайтесь всегда регулировать его в соответствии с потребностями вашей игры.
  • -
  • Default Draw Colour: Цвет по умолчанию для рисования текста или форумов (и других вещей), когда цвет не был задан с помощью кода.
  • -
  • Default Draw Colour Вне области комнаты: Цвет по умолчанию, который будет использоваться для очистки фона любой области за пределами игровой комнаты.
  • -
  • Генерировать изображения проекта: При нажатии на эту кнопку откроется инструмент Генератор изображений проекта.
  • -
  • Дата начала проекта: Дата начала проекта.
  • -
  • Время использования проекта: Продолжительность времени, прошедшего с момента начала проекта.
  • -
  • GUID проекта: Это уникальный идентификатор, который создается для каждого проекта в GameMaker. Если вы хотите изменить его, вы можете нажать кнопку Create New GUID, чтобы создать новый идентификатор.
  • -
  • Генерировать мипмапы для отдельных страниц текстур: Эта опция заставит GameMaker создавать мипмапы для тех sprites, которые отметили опцию Seperate Texture Page в настройках текстур редактора Sprite. Включение mipmapping означает, что оригинальная страница текстуры для sprite будет масштабирована и отфильтрована в несколько разрешений в файле текстуры. Обычно эта функция выключена, но если вы используете представления для увеличения или уменьшения больших областей игровой комнаты или работаете с 3D-игрой, то вы можете включить ее и затем использовать функции Mipmapping Functions для настройки того, как игра работает с различными уровнями mipmap. Обратите внимание, что если вы не отмечаете sprites как использующую отдельные текстурные страницы, вы все равно можете включить мипмаппинг для каждой группы текстур в менеджере групп текстур. По умолчанию эта опция выключена.
  • -
  • Включить контроль исходных текстов: Если вы хотите, чтобы проект находился под SCM (Source Control Management), то вам необходимо установить этот флажок. По умолчанию он выключен (дополнительную информацию о контроле исходных текстов см. здесь).
  • -
  • Автор: Имя автора игры (или издателя, или студии).
  • -
  • Последнее изменение проекта: В этом разделе просто отображается дата/время последнего изменения проекта (не редактируется).
  • -
  • Принять лицензию Spine: Здесь вы можете установить флажок, чтобы вам была показана лицензия Spine Runtime License и принять ее. Это позволит вам использовать Spine sprites в вашей игре (эта лицензия также будет показана при первой попытке добавить Spine sprite в ваш проект, если вы предварительно не отметили лицензию здесь).
  • -
  • Режим совместимости столкновений: Это указывает GameMaker использовать устаревшую систему столкновений, применявшуюся до версий 2022 года (в которой использовались целочисленные значения вместо плавающих). Для получения дополнительной информации читайте раздел Режим совместимости столкновений. По умолчанию этот режим отключен, и рекомендуется отключать его для новых проектов.
  • -
  • Включить поведение копирования при записи для массивов: Это включает устаревшее поведение копирования при записи массивов для текущего открытого проекта. Для получения дополнительной информации читайте Копировать при записи. По умолчанию эта функция отключена, и рекомендуется не включать ее для новых проектов.
  • -
-

Раздел Основные параметры также содержит меню Информация о шаблоне.

-

В браузере активов будут доступны и другие игровые опции в зависимости от целевых платформ, доступных для имеющейся у вас лицензии, и не все из них могут быть доступны или видны.

-

Настройки платформы

-

Существуют следующие варианты игр для конкретных платформ:

- -

ПРИМЕЧАНИЕ Различные варианты консольных игр не перечислены здесь из-за различных юридических ограничений, поддерживаемых различными компаниями. Если у вас есть лицензия на консоль, то вы можете получить эту информацию в службе поддержки YoYo Games, но сначала вы должны связаться с YoYo Games, указав свой ID консоли, и запросить разрешение на просмотр различных разделов.

-

Некоторые проекты GameMaker могут также показывать опции игры для платформы Amazon Fire. Это устаревшие опции, доступные только для чтения, поскольку GameMaker теперь поддерживает платформу Fire напрямую, используя игровые опции Android. Если ваш проект все еще показывает Amazon Fire, вы можете получить информацию об этих опциях на следующей странице:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Game_Options/Amazon_Fire.htm b/Manual/contents/Settings/Game_Options/Amazon_Fire.htm index c2ee0d993..e69de29bb 100644 --- a/Manual/contents/Settings/Game_Options/Amazon_Fire.htm +++ b/Manual/contents/Settings/Game_Options/Amazon_Fire.htm @@ -1,108 +0,0 @@ - - - - - - Amazon Fire - - - - - - - - - - -

Варианты игр для Amazon Fire (наследие)

-

ВАЖНО Опции Amazon Fire видны только для старых проектов и доступны только для чтения. Amazon Fire и все другие цели Android теперь настраиваются в Опциях игры для Android.

-

В этом разделе описаны различные доступные вам опции, которые определяют, как будут компилироваться ваши игровые проекты Amazon Fire. Различными разделами являются:

-

-

Общие сведения

-

Первая часть раздела General посвящена информации о продукте и настройкам сборки. Вы должны заполнить информацию о продукте, которая включает в себя отображаемое имя проекта, информацию о его пакете, которая состоит из домена, компании и продукта. Информация о пакете может состоять только из букв A-Z и цифр 0-9, без символов и других специальных знаков, а также не должна содержать заглавных букв. Эти данные будут использованы для создания идентификатора пакета в формате "com.company.myappname".

-

ПРИМЕЧАНИЕ: Если вы уже настроили параметры игры на цели Android, вы можете нажать кнопку "Sync from Android" в верхней части, чтобы перенести соответствующую информацию с цели Android на Amazon Fire.

-

Затем необходимо установить Build Tools, а также Target, Minimum и Compile SDK версии.

-

ПРИМЕЧАНИЕ: Существует также опция для использования версии "Support Library". Начиная с GameMaker v2.2.4 и выше, этот параметр больше не требуется, и любые значения, используемые здесь, будут игнорироваться. Этот параметр сохраняется для использования в старых проектах, которым требуется более ранняя версия исполнения, чем 2.2.4.

-

Инструменты сборки (и библиотека поддержки, если требуется) используются, когда GameMaker собирает вашу игру для Android/Amazon Fire и должны быть установлены на соответствующие значения, основанные на инструментах, которые вы установили с помощью Android Studio.

-
    -
  • Target SDK указывает на то, что вы протестировали свое приложение на версии (вплоть до включительно), которую вы здесь указали. Это просто для того, чтобы дать ОС Android представление о том, как она должна работать с вашим приложением с точки зрения возможностей ОС. Для всех практических целей большинство приложений захотят установить Target SDK на последнюю выпущенную версию API (как используется параметром Compile SDK). Это позволит вашему приложению выглядеть как можно лучше на самых последних устройствах Android. Обратите внимание, что с ноября 2019 года Google сделал API уровня 28 обязательной целью.
  • -
  • Минимальная версия SDK - это минимальный уровень API, на котором будет работать ваш проект. С ноября 2019 года Google сделал уровень API 16 абсолютно минимально необходимым, но если вы добавите расширения, то они могут потребовать более высокий минимальный уровень API.
  • -
  • Версия SDK для компиляции - это версия API, под которую компилируется проект. Это означает, что вы можете использовать функции API Android, включенные в эту версию API. Если вы попытаетесь использовать, например, функции API 16, но установите Compile SDK 15, то получите ошибку компиляции. Однако если вы установите Compile SDK на 28, вы сможете запустить приложение на устройстве с API 26 (а также на всех предыдущих версиях).
  • -
-

Вы можете выбрать один из предопределенных целевых параметров, нажав на кнопку Pre-populate SDK values to chosen API level, которая откроет список различных API на выбор. При выборе любого из них все файлы SDK будут заполнены соответствующими значениями, которые вы можете использовать или редактировать по мере необходимости.

-

ПРИМЕЧАНИЕ: Для правильной компиляции проектов необходимо установить соответствующие API в Android SDK Manager или через Android Studio.

-

Вторая часть раздела "Общие сведения" охватывает различные ориентации , в которых может быть запущена ваша игра для наилучшего восприятия пользователем. Доступны следующие варианты:

-
    -
  • Портрет
  • -
  • Перевернутый портрет
  • -
  • Ландшафт
  • -
  • Перевернутый пейзаж
  • -
-

Наконец, у вас есть следующие различные опции:

-
    -
  • Включить поддержку Bluetooth/iCade: Это добавит поддержку геймпадов bluetooth или iCade в ваш игровой проект. По умолчанию эта функция включена.
  • -
  • Запустить анализ кода Lint: Когда эта опция отмечена, инструменты сборки будут запускать lint-анализ кода проекта в процессе сборки, обеспечивая более глубокую проверку ошибок и показывая больше информации в окне вывода по мере компиляции проекта (также будет создан LOG-файл, путь к которому будет показан в конце компиляции в окне вывода). Обратите внимание, что не все ошибки, отмеченные lint-анализом, обязательно являются проблемными для вашей игры, и включение этой функции может означать, что ваша игра больше не компилируется, даже если она выключена, она будет компилироваться и запускаться нормально. По сути, эта опция нужна только для отладки, и по умолчанию она выключена.
  • -
  • Место установки: Здесь вы можете установить место установки по умолчанию для вашей игры. Можно установить значение Automatic, в этом случае игра будет установлена в место, выбранное пользователем на его устройстве, или значение Prefer External, которое всегда будет пытаться установить игру на внешнее хранилище устройства.
  • -
-

Здесь также можно установить параметр Amazon Fire Sleep Margin. Эта опция связана с уменьшением заикания при запуске игры на определенных системах. В принципе, если ваша игра работает быстрее, чем ваша комнатная скорость, GameMaker будет "спать" оставшееся время, но этот сон может быть довольно неточным, и в итоге вы можете спать дольше, чем нужно, в результате чего ваш кадр занимает больше времени, что вызывает заикание. Чтобы обойти эту проблему, мы можем спать меньше времени, а затем зациклиться на оставшемся времени, чтобы сделать его более точным - хотя проблема с зацикливанием заключается в том, что это приводит к увеличению загрузки процессора, что, в свою очередь, может привести к повышению температуры процессора и увеличению расхода батареи. По умолчанию это значение установлено на 4, и в 99,99% случаев вас это устроит, но для устройств с низким уровнем производительности или для устройств с большим количеством запущенных фоновых процессов это может быть не идеальным решением, и может потребоваться значение от 5 до 10. Обратите внимание, что эта конфигурация зависит от конкретного устройства, и то, что работает на вашем устройстве, может не подойти другому пользователю, поэтому, если вы сомневаетесь, оставьте значение 4.

-

-

Графика

-

Здесь вы можете изменить следующие детали, связанные с тем, как будет отображаться ваша игра, при этом доступны следующие опции:

-
    -
  • Интерполировать цвета между пикселями: Включает линейную интерполяцию, которая, по сути, "сглаживает" пиксели. Для четкой пиксельной графики ее следует выключить, но если у вас есть красивые альфа-смешения и сглаженные края графики, ее лучше оставить включенной. По умолчанию эта функция включена.
  • -
  • Глубина цвета экрана: Здесь можно установить глубину цвета для рендеринга в 16 или 24 бита. Если установить значение 24 бит, это повлияет на совместимость с некоторыми старыми устройствами, а также увеличит объем необходимой памяти ashmem (это общая память на устройствах AmazonFire).
  • -
  • Масштабирование: Здесь можно выбрать масштабирование холста рисунка с сохранением соотношения сторон экрана устройства - добавление "прокладок" по краям для соответствия экрану - или растягивание холста рисунка в соответствии с экраном устройства.
  • -
-

Наконец, есть возможность задать размер страницы текстуры. По умолчанию (и наиболее совместимый) размер - 2048x2048, но вы можете выбрать любой размер от 256x256 до 8192x8192. Также есть кнопка Предварительный просмотр которая сгенерирует страницы текстур для этой платформы и затем откроет окно, чтобы вы могли увидеть, как они выглядят. Это может быть очень полезно, если вы хотите увидеть, как структурированы текстурные страницы, и предотвратить создание текстурных страниц большего (или меньшего) размера, чем необходимо. Более подробную информацию о текстурных страницах можно найти здесь.

-

ПРИМЕЧАНИЕ: Помните, что чем больше размер страницы текстуры, тем меньше совместимость вашей игры с различными браузерами и устройствами.

-

-

Иконки

-

В этом разделе вы можете добавить различные изображения иконок, которые понадобятся вашему проекту для различных страниц магазина и устройств. Все изображения иконок должны быть созданы как 24-битные файлы *.png соответствующих размеров.

-

Стоит отметить, что в GameMaker есть инструмент Project Image Generator, который можно использовать для автоматического создания всех изображений, необходимых для различных целевых платформ, для которых компилируется ваша игра. Если вы используете этот инструмент, вам следует пересмотреть созданные изображения, чтобы убедиться, что они соответствуют вашим требованиям. Инструмент генерирует как значки, так и изображения (см. раздел ниже).

-

-

Изображения

-

Здесь можно задать цвет границы, который будет использоваться в качестве фона для заставки, не заполняющей весь экран. Вы также можете добавить заставки в конечный файл игры, как для ландшафтного , так и для портретного режима, которые будут отображаться во время загрузки игры на устройство. Этот экран должен быть 24-битным *.png файлом, и рекомендуется, чтобы он был такого же размера, как первая комната (или вид) вашей игры. Если вам требуется, чтобы заставка отображалась в течение определенного времени, вы также можете задать его здесь в диапазоне от 0 до 10 секунд (время по умолчанию 0 означает, что она будет отображаться только в течение загрузки актива). Вы также можете выбрать способ отображения заставки из следующих вариантов:

-
    -
  • Сохранить соотношение сторон: Это позволит сохранить соотношение сторон изображения по сравнению с экраном устройства, добавляя "подложку" по краям, где это необходимо.
  • -
  • Crop To Fit: Это позволит сохранить изображение в соотношении 1:1 с экраном устройства и обрезать (или подрезать) края по мере необходимости.
  • -
  • Растянуть: Это растягивает изображение, чтобы заполнить экран устройства (и может исказить отображаемое изображение).
  • -
-

Наконец, вы можете установить изображение баннера, которое также является 24-битным *.png.

-

-

Разрешения

-

На этой вкладке вы можете изменить некоторые разрешения, которые ваша игра может запросить в манифесте Amazon Fire. GameMaker автоматически назначает разрешения по мере необходимости, исходя из функций, используемых игрой, однако вы можете обнаружить, что для вашей игры требуется разрешение, которое не было правильно назначено (например, при использовании пользовательских расширений), в этом случае отметьте нужное разрешение.

-

В приведенном ниже списке указаны доступные разрешения:

-
    -
  • WRITE_EXTERNAL_STORAGE: Позволяет вашей игре записывать данные на внешнее хранилище.
  • -
  • READ_PHONE_STATE: Разрешить доступ к состоянию телефона только для чтения.
  • -
  • ACCESS_NETWORK_STATE: Разрешить вашей игре доступ к информации о сетях.
  • -
  • INTERNET: Разрешить вашей игре открывать сетевые сокеты.
  • -
  • BLUETOOTH: Позволяет вашей игре подключаться к сопряженным устройствам Bluetooth.
  • -
  • RECORD_AUDIO: Позволяет вашей игре записывать звук с микрофона.
  • -
-

ПРИМЕЧАНИЕ: Если вы не уверены, что они вам нужны, вам, вероятно, следует просто оставить их не отмеченными по умолчанию и позволить GameMaker разобраться с разрешениями для вашей игры.

-

В разделе Amazon Fire Permissions также есть область, где вы можете вводить разрешения в теги Android-приложений в разделе Androidmanifest.xml. Полный список доступных тегов можно найти в документации Android здесь:

- -

Стоит отметить, что для целевого API 28 и выше, вам больше не будет разрешено использовать внешние веб-вызовы с помощью "http" - вместо этого требуется "https" - если вы не добавите следующий тег:

-

android:usesCleartextTraffic = "true"

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Game_Options/Android.htm b/Manual/contents/Settings/Game_Options/Android.htm index 2460b5ab2..e69de29bb 100644 --- a/Manual/contents/Settings/Game_Options/Android.htm +++ b/Manual/contents/Settings/Game_Options/Android.htm @@ -1,148 +0,0 @@ - - - - - - Android - - - - - - - - - - -

Варианты игр для Android

-

В этом разделе описаны различные доступные вам опции, которые определяют, как будут компилироваться ваши игровые проекты Android. Различными разделами являются:

-

-

Общий

-

Первая часть раздела General посвящена информации о продукте и настройкам сборки. Вы должны заполнить информацию о продукте, которая включает в себя отображаемое имя проекта, информацию о его пакете, которая состоит из домена, компании и продукта. Информация о пакете может состоять только из букв A-Z и цифр 0-9, без символов и других специальных знаков, а также не должна содержать заглавных букв. Эти данные будут использованы для создания идентификатора пакета в формате "com.company.myappname".

-

Затем необходимо установить Build Tools, а также Target, Minimum и Compile SDK версии.

-

ПРИМЕЧАНИЕ: Существует также опция для использования версии "Support Library". Начиная с GameMaker v2.2.4 и выше, этот параметр больше не требуется, и любые значения, используемые здесь, будут игнорироваться. Этот параметр сохраняется для использования в старых проектах, которым требуется более ранняя версия исполнения, чем 2.2.4.

-

Инструменты сборки (и библиотека поддержки, если требуется) используются, когда GameMaker собирает вашу игру для Android, и должны быть установлены на соответствующие значения, основанные на инструментах, которые вы установили с помощью Android Studio.

-
    -
  • Target SDK указывает, что вы протестировали свое приложение на версии (вплоть до включительно), которую вы здесь указали. Это просто для того, чтобы дать ОС Android представление о том, как она должна работать с вашим приложением с точки зрения возможностей ОС. Для всех практических целей большинство приложений захотят установить Target SDK на последнюю выпущенную версию API (как используется параметром Compile SDK). Это позволит вашему приложению выглядеть как можно лучше на самых последних устройствах Android. Обратите внимание, что с ноября 2019 года Google сделал API уровня 28 обязательной целью.
  • -
  • Минимальная версия SDK - это минимальный уровень API, на котором будет работать ваш проект. С ноября 2019 года Google сделал уровень API 16 абсолютно минимально необходимым, но если вы добавите расширения, то они могут потребовать более высокий минимальный уровень API.
  • -
  • Версия SDK для компиляции - это версия API, под которую компилируется проект. Это означает, что вы можете использовать функции API Android, включенные в эту версию API. Если вы попытаетесь использовать, например, функции API 16, но установите Compile SDK 15, то получите ошибку компиляции. Однако если вы установите Compile SDK на 28, вы сможете запустить приложение на устройстве с API 26 (а также на всех предыдущих версиях).
  • -
-

Вы можете выбрать один из предопределенных целевых параметров, нажав на кнопку Pre-populate SDK values to chosen API level, которая откроет список различных API на выбор. При выборе любого из них все файлы SDK будут заполнены соответствующими значениями, которые вы можете использовать или редактировать по мере необходимости.

-

ПРИМЕЧАНИЕ: Для правильной компиляции проектов вы должны установить соответствующие API в Android SDK Manager или через Android Studio.

-

General Android Game Options 1

-

Вторая часть раздела " Общие" охватывает архитектуры процессоров, для которых будет производиться сборка, со следующими вариантами (вы можете выбрать все из них или только те, которые вам нужны, но учтите, что каждый из них увеличит конечный размер скомпилированного apk):

-
    -
  • Сборка для ARMV5 (отмечено по умолчанию)
  • -
  • Сборка для ARMV7 (Проверено по умолчанию)
  • -
  • Сборка для x86 (отмечено по умолчанию)
  • -
  • Build for Mips (отмечено по умолчанию)
  • -
  • Сборка для ARM64
  • -
  • Сборка для x86_64
  • -
-

После настройки вы можете выбрать различные ориентации, в которых может быть запущена ваша игра для наилучшего восприятия пользователем. Доступны следующие варианты:

-
    -
  • Портрет
  • -
  • Перевернутый портрет
  • -
  • Ландшафт
  • -
  • Перевернутый пейзаж
  • -
-

Наконец, у вас есть следующие различные опции:

-
    -
  • Включить поддержку Bluetooth/iCade: Это добавит поддержку геймпадов bluetooth или iCade в ваш игровой проект. По умолчанию эта функция включена.
  • -
  • Запустить анализ кода Lint: Когда эта опция отмечена, инструменты сборки будут запускать lint-анализ кода проекта в процессе сборки, обеспечивая более глубокую проверку ошибок и показывая больше информации в окне вывода по мере компиляции проекта (также будет создан LOG-файл, путь к которому будет показан в конце компиляции в окне вывода). Обратите внимание, что не все ошибки, отмеченные lint-анализом, обязательно являются проблемными для вашей игры, и включение этой функции может означать, что ваша игра больше не компилируется, даже если она выключена, она будет компилироваться и запускаться нормально. По сути, эта опция нужна только для отладки, и по умолчанию она выключена.
  • -
  • Место установки: Здесь вы можете установить место установки по умолчанию для вашей игры. Можно установить значение Automatic, в этом случае игра будет установлена в место, выбранное пользователем на его устройстве, или значение Prefer External, которое всегда будет пытаться установить игру на внешнее хранилище устройства.
  • -
-

Здесь также можно установить параметр Android Sleep Margin. Эта опция связана с уменьшением заикания при запуске игры на определенных системах. В принципе, если ваша игра работает быстрее, чем ваша комнатная скорость, GameMaker будет "спать" оставшееся время, но этот сон может быть довольно неточным, и в итоге вы можете спать дольше, чем нужно, в результате чего ваш кадр занимает больше времени, что вызывает заикание. Чтобы обойти эту проблему, мы можем спать меньше времени, а затем зациклиться на оставшемся времени, чтобы сделать его более точным - хотя проблема с зацикливанием заключается в том, что это приводит к увеличению загрузки процессора, что в свою очередь может привести к повышению температуры процессора и увеличению расхода заряда батареи. По умолчанию это значение установлено на 4, и в 99,99% случаев вас это устроит, но для устройств с низким уровнем производительности или для устройств с большим количеством запущенных фоновых процессов это может быть не идеальным решением, и может потребоваться значение от 5 до 10. Обратите внимание, что эта конфигурация зависит от конкретного устройства, и то, что работает на вашем устройстве, может не подойти другому пользователю, поэтому, если вы сомневаетесь, оставьте значение 4.

-

-

Адаптивные иконки

-

В Android 8.0 (уровень API 26) появились адаптивные значки пусковой установки для ваших игр, и эти значки могут отображаться в разных моделях устройств в различной форме. Для решения этой проблемы необходимо предоставить несколько изображений переднего плана и фона, чтобы ваши значки отображались в разных размерах. Этими размерами значков являются:

-
    -
  • 81x81 пиксель (LDPI)
  • -
  • 108x108 пикселей MDPI)
  • -
  • 162x162 пикселей (HDPI)
  • -
  • 216x216 пикселей (XHDPI)
  • -
  • 324x324 пикселей (XXHDPI)
  • -
  • 432x432 пикселей (XXXHDPI)
  • -
-

Вы можете предоставить каждое фоновое и фоновое изображение по отдельности, либо выбрать опцию Generate Icons From File. Это означает, что GameMaker сгенерирует необходимые изображения иконок из базового файла (XXXHDPI). Вам нужно предоставить по одному изображению для переднего и заднего плана, а затем нажать кнопку Generate, и иконки будут созданы. Все изображения должны быть в формате *.png.

-

Важно понимать, что ваши адаптивные иконки могут быть замаскированы на любом устройстве, поэтому у вас также есть возможность посмотреть, как они будут выглядеть вместе с этими масками в меню Preview Adaptive Icons:

-

Обратите внимание, что это просто предварительный просмотр того, как иконка может выглядеть с выбранной маской, и настройка не влияет на то, как экспортируются и отображаются иконки, поскольку это зависит от устройства и ОС, на которой будет запущена игра. Также обратите внимание, что эти значки не создаются для вас как часть генерации изображений при использовании инструмента Project Image Generator.

-

-

Графика

-

Здесь вы можете изменить следующие детали, связанные с тем, как будет отображаться ваша игра, при этом доступны следующие опции:

-
    -
  • Интерполировать цвета между пикселями: Включает линейную интерполяцию, которая, по сути, "сглаживает" пиксели. Для четкой пиксельной графики ее следует выключить, но если у вас есть красивые альфа-смешения и сглаженные края графики, ее лучше оставить включенной. По умолчанию эта функция включена.
  • -
  • Глубина цвета экрана: Здесь можно установить глубину цвета для рендеринга в 16 или 24 бита. Если установить значение 24 бит, это повлияет на совместимость с некоторыми старыми устройствами, а также увеличит объем необходимой памяти ashmem (это общая память на устройствах AmazonFire).
  • -
  • Поддержка устройств: Этот параметр устанавливает, поддерживать ли только устройства с выделенным GPU или все устройства. В принципе, если ваша игра имеет какие-либо расширенные функции рисования, такие как альфа-смешивание, аддитивное смешивание, поверхности и т.д., вам следует ограничиться теми устройствами, которые имеют GPU, иначе вы рискуете получить негативные комментарии и низкий рейтинг вашей игры из-за графических ошибок или сбоев на старых устройствах.
  • -
  • Масштабирование: Здесь можно выбрать масштабирование холста рисунка с сохранением соотношения сторон экрана устройства - добавление "прокладок" по краям для соответствия экрану - или растягивание холста рисунка в соответствии с экраном устройства.
  • -
-

Наконец, есть возможность задать размер страницы текстуры. По умолчанию (и наиболее совместимый) размер - 2048x2048, но вы можете выбрать любой размер от 256x256 до 8192x8192. Есть также кнопка Preview , которая генерирует страницы текстур для этой платформы и открывает окно, чтобы вы могли увидеть, как они выглядят. Это может быть очень полезно, если вы хотите увидеть, как структурированы текстурные страницы, и предотвратить создание текстурных страниц большего (или меньшего) размера, чем необходимо. Более подробную информацию о текстурных страницах можно найти здесь.

-

ПРИМЕЧАНИЕ: Помните, что чем больше размер страницы текстуры, тем меньше совместимость вашей игры с различными браузерами и устройствами.

-

-

Иконки

-

В этом разделе вы можете добавить различные изображения иконок , которые понадобятся вашему проекту для различных страниц магазина и устройств. Все изображения иконок должны быть созданы в виде 24-битных файлов *.png соответствующих размеров.

-

Стоит отметить, что в GameMaker есть инструмент Project Image Generator, который можно использовать для автоматического создания всех изображений, необходимых для различных целевых платформ, для которых компилируется ваша игра. Если вы используете этот инструмент, вам следует пересмотреть созданные изображения, чтобы убедиться, что они соответствуют вашим требованиям. Инструмент генерирует как значки, так и изображения (см. раздел ниже).

-

-

Изображения

-

Здесь можно задать цвет границы, который будет использоваться в качестве фона для заставки, не заполняющей весь экран. Вы также можете добавить заставки в конечный файл игры, как для ландшафтного , так и для портретного режимов, которые будут отображаться во время загрузки игры на устройство. Этот экран должен быть 24-битным *.png файлом, и рекомендуется, чтобы он был такого же размера, как первая комната (или вид) вашей игры. Если вам требуется, чтобы заставка отображалась в течение определенного времени, вы также можете задать его здесь в диапазоне от 0 до 10 секунд (время по умолчанию 0 означает, что она будет отображаться только в течение загрузки актива). Вы также можете выбрать способ отображения заставки из следующих вариантов:

-
    -
  • Сохранить соотношение сторон: Это позволит сохранить соотношение сторон изображения по сравнению с экраном устройства, добавляя "подложку" по краям, где это необходимо.
  • -
  • Crop To Fit: Это позволит сохранить изображение в соотношении 1:1 с экраном устройства и обрезать (или подрезать) края по мере необходимости.
  • -
  • Растянуть: Это растягивает изображение, чтобы заполнить экран устройства (и может исказить отображаемое изображение).
  • -
-

Наконец, вы можете установить изображение баннера для игры на телевизионных устройствах Android, которое также является 24-битным *.png.

-

-

Упаковка

-

Android General Options Part 2

-

Одной из особенностей использования Google Play для ваших игр Android является возможность лицензирования ваших игр. Это означает, что ваши игры будут находиться под контролем Google, так что играть в них смогут только те, кто скачал их через их рынок, что позволит избежать распространения нелегальных копий вашего продукта.

-

Чтобы активировать эту функцию в своей игре, необходимо скопировать открытый ключ в поле с надписью Google Licencing Public Key. Эту лицензию можно найти, зайдя на свою страницу разработчиков Google Play, а затем выбрав игру, которую вы хотите отредактировать. На странице профиля игры прокрутите страницу вниз до раздела "Сервисы и API" и найдите там открытый ключ, необходимый для включения этой функции.

-

После активации, если кто-либо, не имеющий права владеть вашей игрой, попытается сыграть в нее, ему будет показано всплывающее окно с сообщением о том, что лицензия не может быть найдена на его устройстве, а затем ему будет предоставлена возможность повторить попытку и проверить еще раз или выйти из игры.

-

Еще одна особенность лицензирования заключается в том, что ваша игра может использовать расширения APK. Это способ обойти максимальный размер приложения в 50 МБ, установленный Google Play (и только Google Play). При этом ваша игра будет создана из двух частей: небольшого файла *.apk и более крупного файла *.zip, который будет содержать все активы вашей игры, и оба эти файла будут загружены в магазин. Когда пользователь впервые запустит вашу игру, zip-архив будет загружен и распакован. Более подробную информацию об этой опции вы можете найти здесь.

-

Вы также можете использовать Google Dynamic Asset Delivery для создания пакетов приложений размером до 1 ГБ при использовании опции экспорта *.aab. При этом все игровые активы упаковываются как активы "времени установки", которые устанавливаются вместе с самим приложением. Более подробную информацию об этой функции можно найти здесь.

-

Наконец, у вас есть возможность подготовить окончательный пакет приложения как игру для Android TV (галочку следует ставить только в том случае, если ваша игра соответствует рекомендациям Android TV).

-

-

Разрешения

-

На этой вкладке вы можете изменить некоторые разрешения, которые ваша игра может запросить в манифесте Android. GameMaker автоматически назначает разрешения по мере необходимости, исходя из функций, используемых игрой, однако вы можете обнаружить, что для вашей игры требуется разрешение, которое не было правильно назначено (например, при использовании пользовательских расширений), в этом случае отметьте нужное разрешение.

-

В приведенном ниже списке указаны доступные разрешения:

-
    -
  • WRITE_EXTERNAL_STORAGE: Позволяет вашей игре записывать данные на внешнее хранилище.
  • -
  • READ_PHONE_STATE: Разрешить доступ к состоянию телефона только для чтения.
  • -
  • ACCESS_NETWORK_STATE: Разрешить вашей игре доступ к информации о сетях.
  • -
  • INTERNET: Разрешить вашей игре открывать сетевые сокеты.
  • -
  • BLUETOOTH: Позволяет вашей игре подключаться к сопряженным устройствам Bluetooth.
  • -
  • RECORD_AUDIO: Позволяет вашей игре записывать звук с микрофона.
  • -
-

ПРИМЕЧАНИЕ: Если вы не уверены, что они вам нужны, вам, вероятно, следует просто оставить их не отмеченными по умолчанию и позволить GameMaker разобраться с разрешениями для вашей игры.

-

В разделе Android Permissions также есть область, где вы можете вводить разрешения в теги Android-приложений в разделе Androidmanifest.xml. Полный список доступных тегов можно найти в документации Android здесь:

- -

Стоит отметить, что для целевого API 28 и выше, вам больше не будет разрешено использовать внешние веб-вызовы с помощью "http" - вместо этого требуется "https" - если вы не добавите следующий тег:

-

android:usesCleartextTraffic="true"

-

-

Социальная

-

Этот раздел предназначен для включения различных социальных функций в вашей игре Android. Можно выбрать следующие опции:

-
    -
  • Google - Включить облачное сохранение: Отметив этот флажок, вы включите функцию Google Cloud Saving, и вам будет предложено загрузить и установить соответствующее расширение из Marketplace. См. раздел "Облачное сохранение" на странице " Асинхронные функции ".
  • -
  • Google - идентификатор служб Google: Здесь можно ввести идентификатор Google Services ID вашего приложения.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Game_Options/HTML5.htm b/Manual/contents/Settings/Game_Options/HTML5.htm index 91659c1b2..e69de29bb 100644 --- a/Manual/contents/Settings/Game_Options/HTML5.htm +++ b/Manual/contents/Settings/Game_Options/HTML5.htm @@ -1,84 +0,0 @@ - - - - - - HTML5 - - - - - - - - - - -

Параметры игры HTML5

-

В этом разделе описаны различные доступные вам опции, которые определяют, как будут компилироваться ваши игровые проекты HTML5. Различными разделами являются:

-

-

Общие сведения

-

В этом разделе у вас есть поля для заполнения следующей информации о вашей игре:

-
    -
  • Заголовок браузера: Здесь вы можете указать текст, который будет использоваться для строки заголовка вкладки вашей игры в браузере.
  • -
  • Версия: Номер версии вашей игры.
  • -
  • Имя папки: Имя папки, в которой будут храниться файлы вашей HTML5-игры (по умолчанию "html5game").
  • -
  • Выходное имя: Это имя выходного HTML-файла, которое может быть изменено на любое другое, кроме установленного по умолчанию "index.html".
  • -
-

-

Ниже полей с информацией об игре у вас также есть следующие опции:

-
    -
  • Вывод отладки в консоль: Это позволяет отправлять все отладочные данные в консоль JS вашего браузера. По умолчанию эта функция выключена.
  • -
  • Отобразить курсор: Это отключает курсор мыши, когда он находится над холстом игры. По умолчанию эта функция включена.
  • -
  • Отображать предупреждение "Running Outside Server": Если вы тестируете игру локально (т.е. нажимаете на индексный файл с вашего компьютера, а не с сервера - не рекомендуется), то вы обычно получаете предупреждение, информирующее вас о том, что все будет работать не так, как вы ожидаете, из-за безопасности браузера для локальных файлов. Вы можете отключить это предупреждение, сняв флажок. По умолчанию она включена.
  • -
-

Ниже общих настроек находятся дополнительные параметры:

-
    -
  • Включенный файл index.html: Эта функция предназначена для добавления пользовательского файла "index.html", который будет использоваться вместо предопределенного файла, создаваемого GameMaker по умолчанию. Это может быть очень полезно, если у вас есть дизайн веб-сайта или вы хотите включить определенные функции во все ваши сборки HTML5. Используемый файл должен быть включен в проект игры как Included File.
  • -
  • Расширение панели загрузки: Это позволит изменить стандартную панель загрузки на ту, которая была добавлена в ваш проект GameMaker в качестве расширения.
  • -
  • Prepend output .js: Здесь вы можете дополнить вывод *.js любым дополнительным JavaScript, необходимым для вашей игры. Например, приложение Chrome Store может потребовать, чтобы вы добавили window.localStorage = undefined; в выходной JS, для чего вы будете использовать эту опцию.
  • -
-

-

Аналитика

-

Этот раздел позволяет добавить аналитику в вашу игру, позволяя вам использовать определенные сторонние продукты для отслеживания вашей игры и ее продаж или игр. Вы можете указать, использовать ли Flurry Analytics или Google Analytics для отслеживания вашей игры. В силу характера этих функций, одновременно может быть активна только одна из них, и после того, как вы отметили опцию Enable Flurry Analytics или Enable Google Analytics, вы также должны добавить присвоенный вам уникальный ID в соответствующую область.

-

Информацию о функциях, которые вы можете использовать для отправки аналитических данных, смотрите здесь.

-

-

Графика

-

Здесь вы можете изменить следующие параметры, связанные с тем, как будет отображаться ваша игра (обратите внимание, что не все браузеры будут отображать вашу игру одинаково, поэтому проверьте эти параметры на как можно большем количестве браузеров, чтобы убедиться, что они дают желаемый эффект):

-
    -
  • Разрешить переключение в полноэкранный режим: Установка этого флажка позволит пользователю переключать игру из оконного режима в полноэкранный, используя / + "F" на Mac и F10 на Windows. По умолчанию эта опция включена.
  • -
  • Интерполировать цвета между пикселями: Включает линейную интерполяцию, которая, по сути, "сглаживает" пиксели. Для четкой пиксельной графики ее следует выключить, но если у вас есть красивые альфа-смешения и сглаженные края графики, ее лучше оставить включенной. По умолчанию эта функция включена.
  • -
  • Центрировать игру в браузере: Установка этого флажка автоматически центрирует экран игры в браузере, в котором запущена игра. По умолчанию эта опция выключена.
  • -
  • Использовать встроенные частицы: Эта опция экспортирует sprites, необходимые для встроенной системы частиц, вместе с вашей игрой. Эти sprites хранятся на отдельных страницах текстур, что означает, что они не являются наиболее эффективным методом генерации частиц для этой платформы, поэтому рекомендуется (если не используется WebGL) снять флажок с этой опции и использовать собственные частицы sprites, которые будут храниться на основных страницах текстур вместе с вашей игрой. По умолчанию эта опция включена.
  • -
  • Использовать встроенный шрифт: Эта опция экспортирует встроенный шрифт GameMaker вместе с остальными файлами игры. Это немного увеличит размер текстурных страниц и потребует небольшого количества дополнительной памяти и хранилища, поэтому, если ваша игра не использует встроенный шрифт Arial, эту опцию следует отключить. По умолчанию он включен.
  • -
  • WebGL: Выберите, отключить ли поддержку WebGL, сделать ее необязательной (автоопределение) или сделать ее обязательным требованием для вашей игры. Следует отметить, что для тестирования производительности при любых обстоятельствах, вам следует отключить эту функцию, а затем обычно устанавливать ее на автоопределение для публикации. Если сделать его обязательным требованием, это может значительно снизить совместимость вашей игры с различными типами браузеров. По умолчанию установлено автоопределение.
  • -
  • Масштабирование: Ваша игра может быть настроена на автоматическое масштабирование рисуемого холста для поддержания соотношения сторон в браузере, или вы можете выбрать полномасштабный режим. При полномасштабном варианте игра не будет отображаться на весь экран в браузере, а будет растягиваться, чтобы нарисованное соответствовало размеру холста, определенному первой комнатой игры. По умолчанию это соотношение сторон сохраняется.
  • -
-

Наконец, есть возможность задать размер страницы текстуры. По умолчанию (и наиболее совместимый) размер - 2048x2048, но вы можете выбрать любой размер от 256x256 до 8192x8192. Также есть кнопка Предварительный просмотр которая сгенерирует страницы текстур для этой платформы и затем откроет окно, чтобы вы могли посмотреть, как они выглядят. Это может быть очень полезно, если вы хотите увидеть, как структурированы текстурные страницы, и предотвратить создание текстурных страниц большего (или меньшего) размера, чем необходимо. Более подробную информацию о текстурных страницах можно найти здесь.

-

ПРИМЕЧАНИЕ: Помните, что чем больше размер страницы текстуры, тем меньше совместимость вашей игры с различными браузерами и устройствами.

-

-

Изображения

-

В этом разделе вы можете задать фавикон и заставку. Фавикон должен быть создан в виде файла *.ico и может иметь размер 16x16, 32x32, 48x48 или 64x64 пикселей, глубину цвета 8 бит, 24 бит или 32 бит. Заставка должна быть размером с холст, на котором будет располагаться ваша игра, и она будет перекрывать любые загрузочные полосы, если вы отметите опцию Use Splash Screen (т.е. у вас может быть загрузочная полоса, ИЛИ заставка, но не обе). Разрешается использовать изображения меньшего или большего размера, но они будут масштабироваться под размер. Заставка должна быть изображением *.png.

-

Стоит отметить, что в GameMaker есть инструмент Project Image Generator, который можно использовать для автоматического создания всех изображений, необходимых для различных целевых платформ, для которых компилируется ваша игра. Если вы используете этот инструмент, вам следует пересмотреть созданные изображения, чтобы убедиться, что они соответствуют вашим требованиям.

-

-

Социальная

-

Социальная вкладка используется для настройки взаимодействия с Facebook в вашей игре. Если вам нужны функции Facebook, вам нужно установить флажок "Использовать Facebook", а затем ввести идентификатор приложения Facebook и отображаемое имя приложения Facebook. Обратите внимание, что доступ ко всем функциям Facebook осуществляется через расширение, и когда вы впервые отметите флажок " Использовать Facebook ", вам будет предложено загрузить и установить расширение Facebook из Marketplace (возможно, вам потребуется войти в свой аккаунт YoYo, прежде чем оно будет загружено).

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Game_Options/Opera_GX.htm b/Manual/contents/Settings/Game_Options/Opera_GX.htm index ae0517612..e69de29bb 100644 --- a/Manual/contents/Settings/Game_Options/Opera_GX.htm +++ b/Manual/contents/Settings/Game_Options/Opera_GX.htm @@ -1,77 +0,0 @@ - - - - - - Opera GX - - - - - - - - - - -

Опции игры Opera GX

-

Параметры игры Opera GX позволяют изменять свойства вашей игры. Здесь представлены следующие разделы:

-

Общий

-

В этом окне отображается статус входа в Opera GX. Вы можете нажать на значок Refresh, чтобы войти в систему, используя учетную запись Opera.

-

Затем у вас есть следующие варианты:

-
    -
  • Выберите игру: В этом списке можно выбрать существующую игру для обновления или загрузить новую игру.
  • -
  • Название игры: Это имя (заголовок) вашей игры на GX.games.
    -
    - ВАЖНО Для того чтобы загрузка на GX.games прошла успешно, важно, чтобы вы использовали только разрешенные символы в имени игры (которое по умолчанию установлено на имя вашего проекта GameMaker, поэтому убедитесь, что вы выбрали правильное имя проекта или изменили имя игры вручную).
    -
    - Если вы загрузите игру с названием, содержащим запрещенные символы, вы получите эту ошибку: Неверные данные. Проверьте вывод
    -
    - Разрешенными символами являются: -
      -
    • a-z, A-Z (с поддержкой локальных схем, таких как å)
    • -
    • 0-9
    • -
    • пробельные символы
    • -
    • : - ! ? . , ' & ( )
    • -
    -
  • -
  • Версия: Это версия игры, которая была загружена последней. Вы можете изменить это поле только до того, как ваша игра будет загружена на GX.games.
  • -
  • Следующая версия: Это номер версии, используемый для следующей загрузки в GX.games. Вы можете изменить его только после того, как ваша игра будет загружена на GX.games. Вам не нужно изменять этот параметр вручную для каждой загрузки, так как GameMaker автоматически увеличит последнюю цифру номера версии за вас.
  • -
  • Зарегистрироваться на GX.games: Нажмите на эту кнопку, чтобы зарегистрировать новую запись на GX.games. Это возможно только в том случае, если для параметра "Выбрать игру" установлено значение "Новая игра".
  • -
  • Выберите группу: Перед загрузкой новой игры вы можете выбрать студию, к которой будет принадлежать игра.
  • -
  • Редактировать игру в Opera: Откройте GX.games DevCloud и перейдите на страницу "Подробности игры". Эта страница доступна только тогда, когда вы вошли в систему и ваша игра загружена.
  • -
  • Внутренний URL Share: Открывает приватную версию вашей игры, только если она была включена на GX.games DevCloud.
  • -
  • Public Share URL: Открывает публичную версию вашей игры, только если она была включена на GX.games DevCloud.
    -
    - Оба этих URL можно открыть для других пользователей, чтобы они могли играть в вашу игру. -
  • -
-

Графика

-

Здесь вы можете изменить следующие детали, связанные с тем, как будет отображаться ваша игра:

-
    -
  • Отображать курсор: Управляет тем, будет ли виден курсор мыши при запуске игры. Полезно для игр, которые не требуют ввода мыши или используют пользовательский спрайт мыши.
  • -
  • Интерполировать цвета между пикселями: Включает линейную интерполяцию, которая, по сути, "сглаживает" пиксели. Для четкой пиксельной графики ее следует выключить, но если у вас есть красивые альфа-смешения и сглаженные края графики, ее лучше оставить включенной. По умолчанию эта функция включена.
  • -
  • Масштабирование: Ваша игра может быть настроена на автоматическое масштабирование рисуемого холста для поддержания соотношения сторон в браузере, или вы можете выбрать полномасштабный режим. При полномасштабном варианте игра не будет отображаться на весь экран в браузере, а будет растягиваться, чтобы нарисованное соответствовало размеру холста, определенному первой комнатой игры. По умолчанию это соотношение сторон сохраняется.
  • -
-

Наконец, есть возможность задать размер страницы текстуры. По умолчанию (и наиболее совместимый) размер - 2048x2048, но вы можете выбрать любой размер от 256x256 до 8192x8192. Также есть кнопка Предварительный просмотр которая сгенерирует страницы текстур для этой платформы и затем откроет окно, чтобы вы могли посмотреть, как они выглядят. Это может быть очень полезно, если вы хотите увидеть, как структурированы текстурные страницы, и предотвратить создание текстурных страниц большего (или меньшего) размера, чем необходимо. Более подробную информацию о текстурных страницах можно найти здесь.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Game_Options/Template_Info.htm b/Manual/contents/Settings/Game_Options/Template_Info.htm index 38fa5faa7..e69de29bb 100644 --- a/Manual/contents/Settings/Game_Options/Template_Info.htm +++ b/Manual/contents/Settings/Game_Options/Template_Info.htm @@ -1,38 +0,0 @@ - - - - - - Информация о шаблоне - - - - - - - - - - -

Информация о шаблоне

-

В этом разделе вы можете задать информацию для вашего проекта, которая будет использоваться при экспорте в шаблон.

-

Здесь вы можете назначить изображение, иконку и описание для проекта шаблона, однако это будет использоваться только при экспорте проекта в качестве шаблона. Это можно сделать, открыв меню "Файл", наведя курсор на "Экспорт проекта" и выбрав "Как шаблон".

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Game_Options/Ubuntu.htm b/Manual/contents/Settings/Game_Options/Ubuntu.htm index c55037f3a..e69de29bb 100644 --- a/Manual/contents/Settings/Game_Options/Ubuntu.htm +++ b/Manual/contents/Settings/Game_Options/Ubuntu.htm @@ -1,67 +0,0 @@ - - - - - - Ubuntu - - - - - - - - - - -

Опции игры в Ubuntu

-

В этом разделе описаны различные доступные вам опции, которые определяют, как будут компилироваться ваши игровые проекты Ubuntu (Linux). Различными разделами являются:

-

-

Общие сведения

-

На этой вкладке вы задаете название вашей игры, которое будет отображаться во время работы, а также можете указать контактный email и описание (краткое и длинное), а также URL для домашней страницы игры или разработчика.

-

Здесь также есть возможность включить Steam в вашей игре. Если вы включите эту опцию, убедитесь, что у вас установлен Steamworks SDK (см. здесь), и что вы добавили идентификатор приложения Steam в Общие параметры игры.

-

Наконец, у вас есть возможность отключить песочницу файловой системы. Отметив эту опцию, вы отключите "песочницу" GameMaker для сохранения и загрузки файлов, что позволит вашим играм получать доступ к файлам из любой точки системы, на которой запущена игра. По умолчанию эта опция не отмечена, так как мы рекомендуем поддерживать песочницу GameMaker для файлов на всех системах, и если она отмечена, некоторые области сохранения/загрузки могут быть недоступны в зависимости от разрешений на уровне ОС. Более подробную информацию о песочнице можно найти на страницах, посвященных файловой системе GameMaker.

-

-

Графика

-

Графические параметры - это параметры, которые вы должны настроить, чтобы определить, как ваша игра будет использовать видеокарту вашей целевой машины Ubuntu. Следующие параметры включены для изменения:

-
    -
  • Start Fullscreen: Если флажок установлен, игра будет запускаться в полноэкранном режиме, в противном случае она будет запускаться в оконном режиме. По умолчанию эта опция выключена.
  • -
  • Разрешить полноэкранное переключение: Если этот параметр установлен, пользователь может переключаться из полноэкранного режима в оконный и обратно, используя стандартные сочетания клавиш Ubuntu OS. По умолчанию эта функция выключена.
  • -
  • Интерполировать цвета между пикселями: Включает линейную интерполяцию, которая, по сути, "сглаживает" пиксели. Для четкой пиксельной графики ее следует выключить, но если вы хотите получить красивые альфа-смешения и сглаженные края графики, ее лучше оставить включенной. По умолчанию она выключена.
  • -
  • Отображать курсор: Когда эта опция включена, в вашей игре будет отображаться курсор ОС по умолчанию. Если эта опция отключена, то при наведении мыши на окно игры курсор не будет виден, если только вы не создали его в рамках проекта игры (по умолчанию он включен).
  • -
  • Использовать синхронизацию для предотвращения разрывов: Включает или выключает v-синхронизацию. Обратите внимание, что если у вас есть игра с комнатной скоростью 120, а у игрока монитор с частотой обновления 60, включение этой опции зафиксирует скорость игры на 60. По умолчанию эта опция выключена.
  • -
  • Разрешить изменение размера окна: Установка этого флажка позволяет пользователю изменять размер игрового окна (опция "Окно без границ" должна быть выключена, чтобы это работало). По умолчанию эта опция выключена.
  • -
  • Масштабирование: Здесь вы можете выбрать сохранение соотношения сторон (таким образом, комната 4:3 будет иметь формат буквы на экране 16:9) или полное масштабирование (растягивание изображения на весь экран).
    -
    - ВНИМАНИЕ! Выключение поверхности приложения отключит все опции масштабирования, установленные в разделе Windows Game Options, пока она не будет снова включена. Дополнительные сведения см. в разделе Поверхность приложения. -
  • -
-

-

Наконец, есть возможность задать размер страницы текстуры. По умолчанию (и наиболее совместимый) размер - 2048x2048, но вы можете выбрать любой размер от 256x256 до 8192x8192. Также есть кнопка Предварительный просмотр которая сгенерирует страницы текстур для этой платформы и затем откроет окно, чтобы вы могли посмотреть, как они выглядят. Это может быть очень полезно, если вы хотите увидеть, как структурированы текстурные страницы, и предотвратить создание текстурных страниц большего (или меньшего) размера, чем необходимо. Более подробную информацию о текстурных страницах можно найти здесь.

-

ПРИМЕЧАНИЕ: Имейте в виду, что чем больше размер страницы текстур, тем менее совместима ваша игра на ПК с более низкими техническими характеристиками.

-

-

-

Изображения

-

Здесь вы можете добавить заставку для вашей игры и установить иконку игры, которая будет использоваться. Иконка должна быть изображением размером 64x64 пикселя в формате .png, а заставка должна быть как минимум такого же размера, как первая комната в вашей игре (или ее порт просмотра), и тоже в формате .png. Заставка будет отображаться во время загрузки игры, и ее можно включить или выключить, отметив опцию Use Splash Screen (по умолчанию она выключена).

-

Стоит отметить, что в GameMaker есть инструмент Project Image Generator, который можно использовать для автоматического создания всех изображений, необходимых для различных целевых платформ, для которых компилируется ваша игра. Если вы используете этот инструмент, вам следует пересмотреть созданные изображения, чтобы убедиться, что они соответствуют вашим требованиям.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Game_Options/Windows.htm b/Manual/contents/Settings/Game_Options/Windows.htm index a4011baef..e69de29bb 100644 --- a/Manual/contents/Settings/Game_Options/Windows.htm +++ b/Manual/contents/Settings/Game_Options/Windows.htm @@ -1,75 +0,0 @@ - - - - - - Windows - - - - - - - - - - -

Параметры игры в Windows

-

В этом разделе описаны различные доступные вам опции, которые определяют, как будут компилироваться ваши игровые проекты Windows. Различными разделами являются:

-

Общие сведения

-

На странице Общие сведения для игр Windows вы должны указать необходимую информацию для того, чтобы Windows отображался, когда ваша игра установлена и запущена. Эта информация находится в разделе " Информация о продукте " и должна быть заполнена полностью.

-

Раздел Options этого окна позволяет вам выбрать, куда будет установлен пакет игры, в папки "%localappdata%" или "%appdata%", а также установить опцию Copy exe в выходную папку. В общем случае эта опция никогда не понадобится, но она предусмотрена для тех пользователей, у которых есть различные DLL, взаимодействующие друг с другом и с вашей игрой, и если она включена, то при тестировании EXE игры будет сохраняться в выходной папке, а не помещаться в папку Temp .

-

Далее вы можете установить параметр Windows Sleep Margin. Эта опция связана с уменьшением заикания при запуске игры на определенных системах. В принципе, если ваша игра работает быстрее, чем ваша комнатная скорость, GameMaker будет "спать" оставшееся время, но этот сон может быть довольно неточным, и в итоге вы можете спать дольше, чем нужно, что приведет к тому, что кадр будет идти дольше, что вызовет заикание. Чтобы обойти эту проблему, мы можем спать меньше времени, а затем зациклиться на оставшемся времени, чтобы сделать его более точным - хотя проблема с зацикливанием заключается в том, что это приводит к увеличению загрузки процессора, что, в свою очередь, может привести к повышению температуры процессора и ускорению работы вентилятора. По умолчанию это значение установлено на 10, и в 99,99% случаев вас это устроит, но для машин с низким уровнем производительности или для машин с большим количеством запущенных фоновых процессов это может быть не идеальным решением (или для очень высоких машин тоже), и может потребоваться значение 1 или 15 или что-то в этом роде. Обратите внимание, что это очень специфическая конфигурация системы, и то, что работает на вашей машине, может не подойти для другого пользователя, поэтому, если вы сомневаетесь, оставьте значение 10.

-

ПРИМЕЧАНИЕ: В дополнение к Sleep Margin, вы можете дополнительно контролировать производительность и энергопотребление на Windows, регулируя разрешение планировщика потоков во время выполнения.

-

Следующая опция - включить Steam для вашей игры. Если вы включите эту опцию, убедитесь, что у вас установлен Steamworks SDK (см. здесь), и что вы добавили Steam App ID в Общие параметры игры. Обратите внимание, что если вы запускаете GameMaker на Windows и с версии Steam на IDE и разрабатываете игры для Steam, то вам также может понадобиться отметить опцию Use alternative launcher for Steam application. Эта опция позволяет запустить вашу игру при тестировании с помощью альтернативной программы запуска, чтобы она не была отмечена на сайте Steam с идентификатором приложения GameMaker вместо идентификатора приложения вашей игры. Вы должны включать эту опцию только при разработке для Steam и если у вас возникли проблемы с запуском игры.

-

Предпоследней опцией является опция Отключить песочницу файловой системы. Отметив эту опцию, вы отключите "песочницу" GameMaker для сохранения и загрузки файлов, что позволит вашим играм получать доступ к файлам из любой точки системы, на которой запущена игра. По умолчанию эта опция не отмечена, так как мы рекомендуем поддерживать песочницу GameMaker для файлов на всех системах, и если она отмечена, некоторые области сохранения/загрузки могут быть недоступны в зависимости от разрешений на уровне ОС. Более подробную информацию о песочнице можно найти на страницах, посвященных файловой системе GameMaker.

-

Наконец, у вас есть возможность заставить GameMaker создавать исполняемый файл x64 для ваших проектов Windows. Если эта опция включена, то при компиляции игры будет создан 64-битный исполняемый файл, и мы настоятельно рекомендуем всем новым проектам использовать эту опцию. В долгосрочной перспективе этот формат станет форматом по умолчанию (и единственным) для исполняемых файлов Windows, поскольку 32-битный бегунок будет постепенно отменяться. Обратите внимание, что при включении этой опции все используемые проектом dll расширения также должны быть 64-битными (см. здесь для получения дополнительной информации).

-

Графика

-

Параметры графики - это параметры, которые необходимо настроить, чтобы определить, как ваша игра будет использовать видеокарту вашего целевого компьютера Windows. Для изменения включены следующие параметры:

-
    -
  • Отображать курсор: Если флажок установлен, то будет отображаться обычный курсор окна, а если флажок снят, то курсор не будет отображаться, если вы не создали его в коде игры. По умолчанию эта опция включена.
  • -
  • Start Fullscreen: Если флажок установлен, игра будет запускаться в полноэкранном режиме, в противном случае она будет запускаться в оконном режиме. По умолчанию эта опция выключена.
  • -
  • Разрешить полноэкранное переключение: Если этот параметр установлен, пользователь может переключаться из полноэкранного режима в оконный и обратно, используя стандартные сочетания клавиш Windows. По умолчанию эта функция выключена.
  • -
  • Интерполировать цвета между пикселями: Включает линейную интерполяцию, которая, по сути, "сглаживает" пиксели. Для четкой пиксельной графики ее следует выключить, но если вы хотите получить красивые альфа-смешения и сглаженные края графики, ее лучше оставить включенной. По умолчанию она включена.
  • -
  • Использовать синхронизацию для предотвращения разрывов: Включает или выключает v-синхронизацию. Обратите внимание, что если у вас есть игра с комнатной скоростью 120, а у игрока монитор с частотой обновления 60, включение этой опции зафиксирует скорость игры на 60. По умолчанию эта опция выключена.
  • -
  • Разрешить изменение размера окна: Установка этого флажка позволяет пользователю изменять размер игрового окна (опция "Окно без границ" должна быть выключена, чтобы это работало). По умолчанию эта опция выключена.
  • -
  • Окно без полей: Если установить этот флажок, игра будет работать в окне без полей, убирая обычные кнопки минимизации, максимизации и закрытия, а также заголовок игры. По умолчанию эта функция выключена.
  • -
  • Масштабирование: Здесь вы можете выбрать сохранение соотношения сторон (таким образом, комната 4:3 будет иметь формат буквы на экране 16:9) или полное масштабирование (растягивание изображения на весь экран).
    -
    - ВНИМАНИЕ! Выключение поверхности приложения отключит все параметры масштабирования, установленные в разделе Windows Game Options, пока она не будет снова включена. Дополнительные сведения см. в разделе Поверхность приложения. -
  • -
-

Наконец, есть возможность задать размер страницы текстуры. По умолчанию (и наиболее совместимый) размер - 2048x2048, но вы можете выбрать любой размер от 256x256 до 8192x8192. Также есть кнопка Предварительный просмотр которая сгенерирует страницы текстур для этой платформы и затем откроет окно, чтобы вы могли посмотреть, как они выглядят. Это может быть очень полезно, если вы хотите увидеть, как структурированы текстурные страницы, и предотвратить создание текстурных страниц большего (или меньшего) размера, чем необходимо. Более подробную информацию о текстурных страницах можно найти здесь.

-

ПРИМЕЧАНИЕ: Имейте в виду, что чем больше размер страницы текстур, тем менее совместима ваша игра на ПК с более низкими техническими характеристиками.

-

Изображения

-

В разделе "Изображения" вы размещаете изображения, которые требуются вашей игре. Для Windows вам необходимо предоставить файл иконок (он должен быть в формате .ico ), а также заставку (она может быть в формате .png, .bmp, .jpg или .gif ). Заставка будет отображаться во время загрузки игры, и ее можно включить или выключить, отметив опцию Use Splash Screen (по умолчанию она выключена).

-

Стоит отметить, что в GameMaker есть инструмент Project Image Generator, который можно использовать для автоматического создания всех изображений, необходимых для различных целевых платформ, для которых компилируется ваша игра. Если вы используете этот инструмент, вам следует пересмотреть созданные изображения, чтобы убедиться, что они соответствуют вашим требованиям.

-

Монтажник

-

Игры для Windows могут быть созданы с помощью инсталлятора , и здесь вы можете определить различные настройки и графику, которые GameMaker будет использовать при его создании. Прежде всего, у нас есть графические опции, которые определяют внешний вид самого инсталлятора:

-
    -
  • Готово: Графика, которая появляется на странице "Готово" программы установки. Должна быть в формате *.bmp и иметь размер 164x314px.
  • -
  • Заголовок: Графика, которая появляется во время работы программы установки. Должна быть в формате *.bmp и иметь размер 150x57px.
  • -
-

Вы также можете указать на конкретный файл лицензионного соглашения (пример поставляется с GameMaker) и файл пользовательского сценария NSI (подробности здесь), если вам это необходимо, или нажать соответствующие кнопки, чтобы вернуться к файлам по умолчанию, поставляемым с GameMaker.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Game_Options/Windows_UWP.htm b/Manual/contents/Settings/Game_Options/Windows_UWP.htm index 76530cd94..e69de29bb 100644 --- a/Manual/contents/Settings/Game_Options/Windows_UWP.htm +++ b/Manual/contents/Settings/Game_Options/Windows_UWP.htm @@ -1,118 +0,0 @@ - - - - - - Windows UWP - - - - - - - - - - -

Параметры игры в Windows UWP

-

В этом разделе описаны различные доступные вам опции, которые определяют, как будут компилироваться ваши игровые проекты UWP (Universal Windows Platform). Различными разделами являются:

-

-

Общий

-

В общем разделе опций UWP можно задать информацию о продукте:

-
    -
  • Отображаемое имя: Указывает дружественное имя приложения, которое будет отображаться пользователям (эта строка может быть локализована).
  • -
  • Имя пакета: Это имя созданного вами пакета, которое должно совпадать с именем, используемым для ключа разработчика, созданного вами для игры (см. раздел "Упаковка" ниже).
  • -
  • Отображаемое имя пакета: Это "короткое имя" пакета, которое в идеале должно совпадать с отображаемым именем.
  • -
  • Отображаемое имя издателя: Это имя вашей компании или человека, которого вы хотите ассоциировать как издателя игр.
  • -
  • Версия: Номер версии вашей игры.
  • -
-

После настройки вы можете выбрать различные ориентации , в которых может быть запущена ваша игра для наилучшего восприятия пользователем. Доступны следующие варианты:

-
    -
  • Ландшафт
  • -
  • Портрет
  • -
  • Перевернутый пейзаж
  • -
  • Перевернутый портрет
  • -
-

По умолчанию все они будут выбраны, и вам следует снять выделение с тех, которые вам не нужны.

-

После установки параметров ориентации вы можете выбрать различные разрешения , которые потребуются вашему UWP-приложению, из следующих вариантов:

-
    -
  • Включить разрешение на доступ в Интернет: Помечает игру как имеющую доступ к Интернету. По умолчанию эта функция выключена.
  • -
  • Включить разрешение микрофона: Помечает, что игра имеет доступ к микрофону устройства. По умолчанию эта функция выключена.
  • -
  • Включить песочницу IAP: Помечает игру как использующую "песочницу" для покупок в приложениях. По умолчанию эта функция выключена.
  • -
-

-

Семейства устройств

-

Здесь вы можете выбрать семейства устройств, на которые будет ориентирован экспорт Windows UWP при создании исполняемого файла. По умолчанию отмечена опция "Поддерживать универсальное семейство устройств", что означает, что приложение будет поддерживать все устройства и семейства. Чтобы ограничить приложение поддержкой только определенных семейств устройств, следует снять флажок "Универсальное" и отметить соответствующие семейства устройств. Также можно поддерживать семейство устройств Universal, но ограничить другие семейства устройств только определенными версиями платформы - в этом случае нужно оставить отмеченным семейство устройств Universal, но также отметить другое семейство устройств, для которого вы хотите поддерживать другую версию платформы, и ввести данные о версии для этого семейства в соответствующие текстовые поля. О том, как работает эта логика, читайте на этой странице и на следующей странице поддержки Microsoft:

- -

В общем случае вы не захотите трогать целевую и минимальную версии платформы и оставите их значения по умолчанию, но если у вас возникли проблемы со сборкой - в частности, если вы не можете установить SDK Windows, установленный по умолчанию, - то вам нужно изменить эти значения на те, которые у вас установлены. Если вы не уверены, какие значения нужно установить, создайте новый UWP-проект в Visual Studio и посмотрите, какие значения он устанавливает.

-

Для получения дополнительной информации о семействах устройств см. следующий документ Microsoft:

- -

-

Графика

-

Параметры графики - это параметры, которые необходимо настроить, чтобы определить, как ваша игра будет использовать видеокарту вашего целевого UWP-устройства. Для изменения включены следующие параметры:

-
    -
  • Интерполировать цвета между пикселями: Включает линейную интерполяцию, которая, по сути, "сглаживает" пиксели. Для четкой пиксельной графики ее следует выключить, но если вы хотите получить красивые альфа-смешения и сглаженные края графики, ее лучше оставить включенной. По умолчанию она выключена.
  • -
  • Отображать курсор: Когда эта опция включена, в вашей игре будет отображаться курсор ОС по умолчанию. Если эта опция отключена, то при наведении мыши на окно игры курсор не будет виден, если только вы не создали его в рамках проекта игры (по умолчанию он включен).
  • -
  • Start Fullscreen: Если флажок установлен, игра будет запускаться в полноэкранном режиме, в противном случае она будет запускаться в оконном режиме. По умолчанию эта опция выключена.
  • -
  • Разрешить полноэкранное переключение: Если этот параметр установлен, пользователь может переключаться из полноэкранного режима в оконный и обратно, используя стандартные сочетания клавиш Ubuntu OS. По умолчанию эта функция выключена.
  • -
  • Масштабирование: Здесь вы можете выбрать сохранение соотношения сторон (таким образом, комната 4:3 будет иметь формат буквы на экране 16:9) или полное масштабирование (растягивание изображения на весь экран).
    -
    - ВНИМАНИЕ! Выключение поверхности приложения отключит все параметры масштабирования, установленные в разделе Windows Game Options, пока она не будет снова включена. Дополнительные сведения см. в разделе Поверхность приложения. -
  • -
-

Наконец, есть возможность задать размер страницы текстуры. По умолчанию (и наиболее совместимый) размер - 2048x2048, но вы можете выбрать любой размер от 256x256 до 8192x8192. Также есть кнопка Предварительный просмотр которая сгенерирует страницы текстур для этой платформы и затем откроет окно, чтобы вы могли посмотреть, как они выглядят. Это может быть очень полезно, если вы хотите увидеть, как структурированы текстурные страницы, и предотвратить создание текстурных страниц большего (или меньшего) размера, чем необходимо. Более подробную информацию о текстурных страницах можно найти здесь.

-

ПРИМЕЧАНИЕ: Имейте в виду, что чем больше размер страницы текстур, тем менее совместима ваша игра на ПК с более низкими техническими характеристиками.

-

-

Изображения

-

В первой части раздела "Изображения" у вас есть возможность установить различные тайлы , которые ваша игра будет использовать на различных устройствах, на которых может работать UWP. Вы можете задать следующие параметры (и все они должны быть файлами формата *.png ):

-
    -
  • Маленькое изображение плитки - это изображение логотипа, которое появляется рядом с названием приложения в строке поиска и других областях пользовательского интерфейса. Его размер должен составлять 44 x 44 пикселя.
  • -
  • Изображение средней плитки должно быть размером 71x71 пиксель.
  • -
  • Следующее изображение плитки - это плитка с логотипом магазина , ее размер должен составлять 50 x 50 пикселей.
  • -
  • Широкоеизображение плитки - это изображение, которое появляется, когда плитка отображается в широком формате, и должно иметь размер 310 x 150 пикселей. Если это изображение не предоставлено, плитка может отображаться только в квадратном формате и не может принимать уведомления, основанные на широких типах шаблонов. Так как пользователь может решить, какой формат использует плитка, рекомендуется включить плитку с широким изображением. Также обратите внимание, что если предоставлено широкое изображение, плитка может изначально отображаться в широком формате.
  • -
  • Большая плитка изображения представляет собой формат большой живой плитки и должна иметь размер 310 x 310 пикселей. Обратите внимание, что это будет использоваться только на настольных ОС.
  • -
-

Следующий раздел предназначен для определения логотипа игры. По сути, это иконка, которую ваша игра будет использовать в экосистеме UWP, и стоит отметить, что эти изображения могут быть прозрачными .png файлами, в этом случае они будут нарисованы поверх цвета фона, указанного в этом разделе. Этот цвет фона также применяется к цвету кнопок в любых диалоговых окнах, принадлежащих приложению, и к странице описания приложения в Магазине на устройствах.

-

После настройки логотипа вы можете установить заставку для игры. Это экран, который будет отображаться при запуске игры, и он не может быть больше 620 x 300 пикселей, как и логотип, это может быть прозрачный файл .png, в этом случае для него будет использоваться выбранный вами цвет фона.

-

Стоит отметить, что в GameMaker есть инструмент Project Image Generator, который можно использовать для автоматического создания всех изображений, необходимых для различных целевых платформ, для которых компилируется ваша игра. Если вы используете этот инструмент, вам следует пересмотреть созданные изображения, чтобы убедиться, что они соответствуют вашим требованиям.

-

-

Упаковка

-

GameMaker предоставляет ключ разработчика по умолчанию для разработки Windows UWP, но рекомендуется сгенерировать свой собственный и указать его здесь. Для этого создайте пустой проект в Visual Studio, затем сохраните в надежном месте копию автоматически сгенерированного файла *.pfx, который будет включен в пустой проект (это и есть ключ разработчика). Затем вы должны связать этот файл *.pfx здесь.

-

После ссылки на файл необходимо нажать на связанную с ним кнопку Install , а затем следовать инструкциям в открывшейся командной строке. Если этого не сделать, то использование кнопок Run/Debug (или нажатие F5) приведет к неудаче, и ваша игра не сможет быть протестирована на платформе UWP (однако, если вы используете Create Executable, процесс установки сертификации будет запущен автоматически, если *.pfx еще не зарегистрирован).

-

ПРИМЕЧАНИЕ: Когда дело дойдет до загрузки вашего приложения в магазин, вам нужно будет получить правильный *.pfx для вашего названия. Это делается через ассоциацию вашего приложения с магазином Windows Store в Visual Studio, что заставляет Visual Studio генерировать новый *.pfx специально для приложения. Стоит также отметить, что вы можете связать любое приложение с магазином Windows Store в разделе Visual Studio, то есть вы можете связать пустой проект с приложением Windows Store и просто скопировать сгенерированный *.pfx в безопасное место, которое затем можно использовать в UWP Game Options. Вы можете найти инструкции о том, как это делается, в базе знаний YoYo Games.

-

В этом разделе также необходимо указать имя издателя, которое было использовано для генерации сертификата подписи. Перед вводом всегда следует указывать "CN=", например: CN=YoYoGames.

-

-

Xbox Live

-

Раздел Xbox Live в опциях UWP-игры - это место, где вы можете активировать свой UWP-проект для использования на консоли Xbox One. Активация проекта для Xbox позволяет выполнять следующие действия при запуске проекта на Xbox One:

-
    -
  • Вход в Xbox Live из приложения
  • -
  • Использовать идентификатор пользователя Xbox Live каким-либо образом в проекте (например, показывать геймерский тег или фотографию геймера)
  • -
-

Однако прежде чем вы сможете выполнить эти действия, вам необходимо убедиться, что вы нажали на флажок Включить Xbox Live, а если вы являетесь участником программы Microsoft Creators Program, вам также следует отметить опцию Creators Program App. Если вы участвуете в программе Creators Program, вам нужно будет добавить идентификатор названия и идентификатор конфигурации службы (более подробную информацию о них можно получить в Microsoft).

-

Обратите внимание, что в настоящее время для тестирования функциональности Xbox Live в вашем проекте необходимо использовать Create Executable, а не Run, так как для вывода UWP Xbox необходимо использовать сертификат подписи Windows Store, который вы предоставите в качестве части информации о пакете (см. выше), а не временный сертификат, поставляемый с GameMaker, который будет использоваться, когда вы нажмете Run.

-

После включения XBox Live вы можете использовать функции XBox Live в своем проекте, но учтите, что для базовых функций вам нужно быть участником программы Creator Program, а для расширенных функций вам понадобится учетная запись ID@XBox.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Game_Options/iOS.htm b/Manual/contents/Settings/Game_Options/iOS.htm index b609610eb..e69de29bb 100644 --- a/Manual/contents/Settings/Game_Options/iOS.htm +++ b/Manual/contents/Settings/Game_Options/iOS.htm @@ -1,84 +0,0 @@ - - - - - - iOS - - - - - - - - - - -

Варианты игр для iOS

-

В этом разделе описаны различные доступные вам опции, которые определяют, как будут компилироваться ваши игровые проекты iOS. Различными разделами являются:

-

-

Общие сведения

-

Первая часть раздела "Общие" включает в себя настройки сборки для вашей игры. Для начала вы устанавливаете ориентации , в которых может быть запущена ваша игра для наилучшего восприятия пользователем. Доступны следующие варианты:

-
    -
  • Портрет
  • -
  • Перевернутый портрет
  • -
  • Ландшафт
  • -
  • Перевернутый ландшафт
  • -
-

Затем вы можете перейти в раздел " Поддержка устройств ", где доступны следующие опции для настройки типа устройства:

-
    -
  • iPhone или iPod Touch: iPhone 6 и выше или устройства iPod Touch
  • -
  • iPad: устройства iPad
  • -
  • Оба: и iPhone/iPod, и iPad
  • -
-

Второе, что нужно сделать, это заполнить информацию о продукте вашей игры, включая ее отображаемое имя, идентификатор пакета и информацию о версии. Обратите внимание, что для корректной работы финальной сборки игры идентификатор пакета должен быть в правильном формате обратного URL, например: com.[Company].[GameName]. Здесь вы также можете указать идентификатор команды, который вы хотите использовать для подписи финального приложения, которое GameMaker создает для вас. Заданный здесь идентификатор будет заменять идентификатор команды, который вы указали в настройках iOS.

-

Далее можно установить или снять флажок Отложить вывод индикатора дома. Если эта опция отмечена, то домашняя панель всегда будет отображаться при низком уровне альфа, и первый свайп пробудит панель, а второй свайп перенесет вас домой. Если опция не отмечена, то бар не будет отображаться в игре, но первый свайп по краю приведет вас домой. По умолчанию опция не отмечена.

-

Наконец, у вас есть возможность сгенерировать Podfile и Podfile.lock. Эти файлы необходимы, если вы добавляете CocoaPods в расширение для iOS с помощью редактора расширений. Эти файлы содержат специальные макросы, необходимые GameMaker для настройки всех перечисленных CocaoPods при создании игры. Нажатие на кнопки создаст файлы с предварительно сгенерированными макросами, а также откроет проводник файлов, если вы захотите отредактировать их вручную. Также есть кнопка, которая приведет вас к следующему руководству:

- -

-

Графика

-

Здесь вы можете изменить следующие детали, связанные с тем, как будет отображаться ваша игра, с помощью следующих опций:

-
    -
  • Интерполировать цвета между пикселями: Включает линейную интерполяцию, которая, по сути, "сглаживает" пиксели. Для четкой пиксельной графики ее следует выключить, но если у вас есть красивые альфа-смешения и графика со сглаженными краями, ее лучше оставить включенной. По умолчанию эта функция выключена.
  • -
  • Половина текстур iPad 1: iPad 1 имеет гораздо меньше текстурной памяти, чем более современные устройства, поэтому вы можете включить эту опцию, чтобы уменьшить размер текстур наполовину, если вы хотите ориентироваться на это устройство или добиться максимальной совместимости.
  • -
  • Масштабирование: Здесь можно выбрать масштабирование холста рисунка с сохранением соотношения сторон экрана устройства - добавление "прокладок" по краям для соответствия экрану - или растягивание холста рисунка в соответствии с экраном устройства.
  • -
-

Наконец, есть возможность задать размер страницы текстуры. По умолчанию (и наиболее совместимый) размер - 2048x2048, но вы можете выбрать любой размер от 256x256 до 8192x8192. Есть также кнопка Preview , которая генерирует страницы текстур для этой платформы и открывает окно, чтобы вы могли увидеть, как они выглядят. Это может быть очень полезно, если вы хотите увидеть, как структурированы текстурные страницы, и предотвратить создание текстурных страниц большего (или меньшего) размера, чем необходимо. Более подробную информацию о текстурных страницах можно найти здесь.

-

ПРИМЕЧАНИЕ: Помните, что чем больше размер страницы текстуры, тем меньше совместимость вашей игры с различными браузерами и устройствами.

-

-

Иконки

-

Этот раздел позволяет добавить различные иконки, необходимые для различных устройств iPhone и iPad и различных разделов iOS App Store. Эти значки должны быть созданы как 24-битные *.png изображения с размером, указанным для каждого из них.

-

Стоит отметить, что в GameMaker есть инструмент Project Image Generator, который можно использовать для автоматического создания всех изображений, необходимых для различных целевых платформ, для которых компилируется ваша игра. Если вы используете этот инструмент, вам следует пересмотреть созданные изображения, чтобы убедиться, что они соответствуют вашим требованиям. Инструмент генерирует как значки, так и изображения (см. раздел ниже).

-

ПРИМЕЧАНИЕ При импорте старого проекта может появиться следующее предупреждение:Это происходит потому, что текущая версия iOS целевой программы изменила формат необходимых значков с момента загрузки проекта. Вам придется заново создать все пиктограммы, поскольку они были заменены на общие пиктограммы GameMaker (для этого можно быстро воспользоваться упомянутым выше инструментом Project Image Generator).

-

-

Изображения

-

В этом разделе вы можете добавить отдельные графические изображения в качестве стартовых экранов (изображение, которое будет отображаться на короткое время во время загрузки вашего приложения) для каждой из ориентаций устройства, а также цвет границы, который будет использоваться в качестве фона для стартовых экранов, не заполняющих весь экран. Эти изображения должны быть созданы как отдельные 24-битные изображения *.png без прозрачности и соответствующего размера. Обратите внимание, что это не считается заставкой, и у Apple есть довольно строгие рекомендации по ее настройке и использованию. Дополнительную информацию см. на странице разработчика " Руководство по человеческому интерфейсу ".

-

Вы также можете задать способ отображения экрана запуска из следующих вариантов:

-
    -
  • Сохранить соотношение сторон: Это позволит сохранить соотношение сторон изображения по сравнению с экраном устройства, добавляя "подложку" по краям, где это необходимо.
  • -
  • Crop To Fit: Это позволит сохранить изображение в соотношении 1:1 с экраном устройства и обрезать (или подрезать) края по мере необходимости.
  • -
  • Растянуть: Это растягивает изображение, чтобы заполнить экран устройства (и может исказить отображаемое изображение).
  • -
-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Game_Options/macOS.htm b/Manual/contents/Settings/Game_Options/macOS.htm index 18f9abed6..e69de29bb 100644 --- a/Manual/contents/Settings/Game_Options/macOS.htm +++ b/Manual/contents/Settings/Game_Options/macOS.htm @@ -1,72 +0,0 @@ - - - - - - macOS - - - - - - - - - -

Параметры игры в macOS

-

В этом разделе описаны различные доступные вам опции, которые определяют, как будут компилироваться ваши игровые проекты macOS. Различными разделами являются:

-

Общие сведения

-

В разделе " Информация о продукте " первым делом заполните отображаемое имя вашей игры, затем введите номер версии, идентификатор приложения, выходной файл приложения и сведения об авторских правах. App Output - это местоположение, в которое попадают установочные файлы вашей игры на вашей машине для разработки Mac. Когда вы создаете свой .app.zip, этот файл может отправиться куда угодно (место, которое вы указываете при диалоге сохранения, не является единственной копией .app.zip), но .pkg и другие файлы остаются в этой папке, позволяя вам тестировать локальные установки через Терминал таким образом, чтобы имитировать покупку в Mac Store и т.д...

-

Здесь вам также нужно указать идентификатор команды, который вы хотите использовать для подписи финального приложения, создаваемого GameMaker. Заданный здесь идентификатор будет заменять идентификатор команды, который вы указали в настройках macOS Preferences. После идентификатора команды у вас также есть возможность указать идентификатор подписи, который требуется Apple для всех приложений, не входящих в магазин приложений (например, игр Steam ).

-

Следующая опция - включение Steam в вашей игре. Если вы включите эту опцию, убедитесь, что у вас установлен Steamworks SDK (см. здесь), и что вы добавили идентификатор приложения Steam в Общие параметры игры.

-

Наконец, у вас есть возможность отключить песочницу файловой системы. Отметив эту опцию, вы отключите "песочницу" GameMaker для сохранения и загрузки файлов, что позволит вашим играм получать доступ к файлам из любой точки системы, на которой запущена игра. По умолчанию эта опция не отмечена, так как мы рекомендуем поддерживать песочницу GameMaker для файлов на всех системах, и если она отмечена, некоторые области сохранения/загрузки могут быть недоступны в зависимости от разрешений на уровне ОС. Более подробную информацию о песочнице можно найти на страницах, посвященных файловой системе GameMaker.

-

Графика

-

Параметры графики - это параметры, которые необходимо настроить, чтобы определить, как ваша игра будет использовать видеокарту вашего целевого компьютера Mac. Для изменения включены следующие параметры:

-
    -
  • Разрешить меню и док в полноэкранном режиме: Если эта опция отмечена, она будет показывать меню ОС и док, если игра находится в полноэкранном режиме. По умолчанию эта опция выключена.
  • -
  • Отображать курсор: При установке флажка будет отображаться обычный курсор macOS, а снятие флажка означает, что курсор не будет отображаться, если вы не создали его в коде игры. По умолчанию эта опция выключена.
  • -
  • Start Fullscreen: Если флажок установлен, игра будет запускаться в полноэкранном режиме, в противном случае она будет запускаться в оконном режиме. По умолчанию эта опция выключена.
  • -
  • Разрешить полноэкранное переключение: Если этот параметр установлен, пользователь может переключаться из полноэкранного режима в оконный и обратно, используя стандартные сочетания клавиш macOS. По умолчанию эта функция выключена.
  • -
  • Интерполировать цвета между пикселями: Включает линейную интерполяцию, которая, по сути, "сглаживает" пиксели. Для четкой пиксельной графики ее следует выключить, но если у вас есть красивые альфа-смешения и сглаженные края графики, ее лучше оставить включенной. По умолчанию эта функция выключена.
  • -
  • Использовать синхронизацию для предотвращения разрывов: Включает или выключает v-синхронизацию. Обратите внимание, что если у вас есть игра с комнатной скоростью 120, а у игрока монитор с частотой обновления 60, включение этой опции зафиксирует скорость игры на 60. По умолчанию эта опция выключена.
  • -
  • Разрешить изменение размера окна: Установка этого флажка позволяет пользователю изменять размер игрового окна (опция "Окно без границ" должна быть выключена, чтобы это работало). По умолчанию эта опция выключена.
  • -
  • Включить Retina: Если отметить этот параметр, то при запуске игры на мониторе с поддержкой сетчатки задний буфер будет иметь более высокое (фактическое) разрешение, а если не отметить этот параметр, то задний буфер будет иметь кажущееся (более низкое) разрешение. Это означает, что начальное окно игры будет установлено в два раза больше по ширине и высоте, чем комната/порт просмотра, на который установлена первая комната. Однако это НЕ изменяет масштаб поверхности приложения, поэтому, если вы хотите, чтобы ваша игра максимально использовала возможности дисплея retina, вам также следует установить размер поверхности приложения равным размеру окна (обратите внимание, что при этом пиксели по ширине и высоте удвоятся, поэтому включайте эту функцию и изменяйте масштаб поверхности приложения только в том случае, если ваша игра выиграет от увеличения разрешения). -
    -
    - По умолчанию эта опция выключена, и ее включение не покажет никакой разницы при запуске или отладке игры с помощью VM, так как в этом случае бегущая строка предварительно построена. Она будет работать только в том случае, если вы собираете исполняемый файл через VM или используете YYC для тестирования или сборки игры, так как в этом случае бегунок будет перестроен с вашими настроенными параметрами игры.
  • -
  • Масштабирование: Здесь вы можете выбрать сохранение соотношения сторон (таким образом, комната 4:3 будет иметь формат буквы на экране 16:9) или полное масштабирование (растягивание изображения на весь экран). -
    -
    - ВНИМАНИЕ! Выключение поверхности приложения отключит все параметры масштабирования, установленные в разделе Windows Game Options, пока она не будет снова включена. Дополнительные сведения см. в разделе Поверхность приложения.
  • -
-

Наконец, есть возможность задать размер страницы текстуры. По умолчанию (и наиболее совместимый) размер - 2048x2048, но вы можете выбрать любой размер от 256x256 до 8192x8192. Также есть кнопка Предварительный просмотр которая сгенерирует страницы текстур для этой платформы и затем откроет окно, чтобы вы могли посмотреть, как они выглядят. Это может быть очень полезно, если вы хотите увидеть, как структурированы текстурные страницы, и предотвратить создание текстурных страниц большего (или меньшего) размера, чем необходимо. Более подробную информацию о текстурных страницах можно найти здесь.

-

ПРИМЕЧАНИЕ: Имейте в виду, что чем больше размер страницы текстур, тем менее совместима ваша игра на ПК с более низкими техническими характеристиками.

-

Изображения

-

Раздел "Изображения" содержит изображения, которые требуются для вашей игры. Для Mac вам необходимо предоставить файл иконки (он должен быть в формате .png и иметь размер 1024x1024px) и заставку (она может быть в формате .png, .bmp, .jpg или .gif ). Заставка будет отображаться во время загрузки игры.

-

Для пакетов DMG вы можете предоставить фоновое изображение установщика, которое будет отображаться в качестве фона программы установки DMG.

-

Стоит отметить, что в GameMaker есть инструмент Project Image Generator, который можно использовать для автоматического создания всех изображений, необходимых для различных целевых платформ, для которых компилируется ваша игра. Если вы используете этот инструмент, вам следует пересмотреть созданные изображения, чтобы убедиться, что они соответствуют вашим требованиям.

-

Упаковка

-

Если вы хотите, чтобы готовая игра была готова для App Store, вам нужно отметить опцию Build for Mac App Store, но имейте в виду, что она будет работать только в том случае, если вы являетесь зарегистрированным разработчиком и имеете необходимые сертификаты. Под этой опцией находятся разрешения приложения, которые вы должны проверять только в том случае, если они верны, так как Apple может отклонить ваше приложение, если они будут отмечены, когда они не нужны, или наоборот. Эти параметры просто разрешают вашей игре использовать функции http_ и url_. Стоит отметить, что если вы хотите поддерживать GamePads в своей игре, то опция создания пакета, готового для App Store, должна быть выключена.

-

Наконец, необходимо выбрать категорию приложения (более подробную информацию см. здесь).

-

Социальная

-

Этот вариант предназначен для использования расширения Apple Sign In Extension на Mac. Вы можете приобрести это расширение в GameMaker Marketplace, а само расширение содержит полную инструкцию по использованию. Если вы не используете это расширение, то вам не следует отмечать эту опцию.

-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/Settings/Game_Options/tvOS.htm b/Manual/contents/Settings/Game_Options/tvOS.htm index ab80f1c2f..e69de29bb 100644 --- a/Manual/contents/Settings/Game_Options/tvOS.htm +++ b/Manual/contents/Settings/Game_Options/tvOS.htm @@ -1,63 +0,0 @@ - - - - - - tvOS - - - - - - - - - - -

Опции игры на tvOS

-

В этом разделе описаны различные доступные вам опции, которые определяют, как будут компилироваться ваши игровые проекты tvOS. Различными разделами являются:

-

-

Общий

-

Здесь вы можете заполнить информацию о продукте вашей игры, включая ее отображаемое имя, идентификатор пакета и информацию о версии . Обратите внимание, что для корректной работы финальной сборки игры идентификатор пакета должен быть в правильном формате обратного URL, например: com.[Company].[GameName]. Вы также можете задать местоположение App Output на компьютере Mac, а также указать идентификатор команды, который вы хотите использовать для подписи финального приложения, которое GameMaker создает для вас. Заданный здесь идентификатор будет заменять идентификатор команды, который вы указали в настройках tvOS.

-

Здесь у вас также есть возможность сгенерировать Podfile и Podfile.lock. Эти файлы необходимы, если вы добавляете CocoaPods в расширение для tvOS с помощью редактора расширений. Эти файлы содержат специальные макросы, необходимые GameMaker для настройки всех перечисленных CocaoPods при сборке вашей игры. Нажатие на кнопки создаст файлы с предварительно сгенерированными макросами, а также откроет проводник файлов, если вы захотите отредактировать их вручную. Также есть кнопка, которая приведет вас к следующему руководству:

- -

-

Графика

-

Здесь вы можете изменить следующие детали, связанные с тем, как будет отображаться ваша игра, с помощью следующих опций:

-
    -
  • Интерполировать цвета между пикселями: Включает линейную интерполяцию, которая, по сути, "сглаживает" пиксели. Для четкой пиксельной графики ее следует выключить, но если у вас есть красивые альфа-смешения и графика со сглаженными краями, ее лучше оставить включенной. По умолчанию эта функция выключена.
  • -
  • Масштабирование: Здесь можно выбрать масштабирование холста рисунка с сохранением соотношения сторон экрана устройства - добавление "прокладок" по краям для соответствия экрану - или растягивание холста рисунка в соответствии с экраном устройства.
  • -
-

Далее есть возможность задать размер страницы текстуры. По умолчанию (и наиболее совместимый) размер - 2048x2048, но вы можете выбрать любой размер от 256x256 до 8192x8192. Есть также кнопка Preview , которая генерирует текстурные страницы для этой платформы и открывает окно, чтобы вы могли посмотреть, как они выглядят. Это может быть очень полезно, если вы хотите увидеть, как структурированы текстурные страницы, и предотвратить создание текстурных страниц большего (или меньшего) размера, чем необходимо. Более подробную информацию о текстурных страницах можно найти здесь.

-

ПРИМЕЧАНИЕ: Помните, что чем больше размер страницы текстуры, тем меньше совместимость вашей игры с различными браузерами и устройствами.

-

Наконец, вы выбираете Отображать курсор или нет. Если флажок установлен, ОС будет отображать курсор при каждом перемещении мыши (в позиции мыши), и курсор будет затухать и исчезать, если мышь не перемещается в течение некоторого времени. Если флажок снят, то курсор не будет отображаться.

-

-

Иконки

-

В этом разделе вы можете добавить различные иконки , необходимые для различных устройств и различных частей App Store. Эти значки должны быть созданы как 24-битные изображения *.png в размере, указанном для каждого из них.

-

Стоит отметить, что в GameMaker есть инструмент Project Image Generator, который можно использовать для автоматического создания всех изображений, необходимых для различных целевых платформ, для которых компилируется ваша игра. Если вы используете этот инструмент, вам следует пересмотреть созданные изображения, чтобы убедиться, что они соответствуют вашим требованиям, особенно для этой платформы, поскольку требуемые значки прямоугольные, а не квадратные. Этот инструмент также генерирует изображения (объяснение ниже), а также иконки.

-

-

Изображения

-

Этот раздел позволяет добавлять отдельные графические изображения в качестве "верхней полки" и заставки для каждого из различных целевых размеров tvOS. Эти изображения должны быть созданы как отдельные 24-битные изображения *.png без прозрачности и правильного размера. Вы также можете установить минимальное время показа заставки в выпадающем меню внизу (от 0 до 10 секунд).

-

Как упоминалось в разделе "Значки", для создания таких изображений можно использовать генератор изображений проекта.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Game_Settings.htm b/Manual/contents/Settings/Game_Settings.htm index d980b9b64..e69de29bb 100644 --- a/Manual/contents/Settings/Game_Settings.htm +++ b/Manual/contents/Settings/Game_Settings.htm @@ -1,46 +0,0 @@ - - - - - - GameMaker Runner Settings - - - - - - - - - - -

GameMaker Runner

-

Следующие разделы связаны с различными окнами и инструментами GameMaker, которые влияют на запуск и производительность вашей игры. В общем, большинство из них вам придется настраивать для каждой игры, но обратите внимание, что некоторые из них являются необязательными (например, Configurations), а доступность других зависит от имеющейся у вас лицензии (например, некоторые опции Game).

- -

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Included_Files.htm b/Manual/contents/Settings/Included_Files.htm index af8dc3d95..e69de29bb 100644 --- a/Manual/contents/Settings/Included_Files.htm +++ b/Manual/contents/Settings/Included_Files.htm @@ -1,62 +0,0 @@ - - - - - - Включенные файлы - - - - - - - - - - -

Включенные файлы

-

GameMaker не ограничивается только активами, которые вы добавляете в Asset Browser, вы также можете добавить файлы в проект как Included Files, чтобы к ним можно было получить доступ во время работы игры. Это просто файлы, которые включены в пакет вашей игры, и вы можете делать с ними все, что пожелаете.

-

Какие файлы вы добавите, зависит от того, что вы хотите сделать, но такие вещи, как файлы по умолчанию *.ini, sprites и фоновые изображения, или электронные таблицы, обычно используются как Включенные файлы.

-

Добавление включенных файлов

-

Самый простой способ добавить включенный файл - перетащить его из проводника/поисковика на страницу IDE. Вам будет предложено подтвердить, следует ли добавить перетащенный файл в список включенных файлов. После нажатия кнопки Да откроется окно Включенные файлы, содержащее только что добавленный файл.

-

-

Окно включенных файлов

-

Откройте меню Extras браузера активов (рис. 1), чтобы вручную открыть окно Included Files (рис. 2):

-
-
Extras Menu Icon -
Рис. 1
-
-
Open The Included Files Editor -
Рис. 2
-
-

-
-

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

-

Нажатие на Open In Explorer/Finder откроет папку datafiles в каталоге вашего проекта, в которой содержатся все включенные файлы. Вы можете добавлять и удалять файлы в этом каталоге по своему усмотрению, а интерфейс в GameMaker будет автоматически обновляться, отражая структуру в папке datafiles.

-

После добавления файлов в редактор вы можете дважды щелкнуть по ним , чтобы открыть свойства файла:

-

В этом окне отображается имя файла, его размер на диске, а также платформы, на которые он должен быть экспортирован при компиляции/тестировании вашей игры. У вас есть кнопки для выбора "Все" или "Нет", или вы можете пройти по списку и отметить/отметить цели, в которые вы хотите экспортировать файл.

-

Более подробную информацию о том, как Включенные файлы хранятся в вашей игре и как к ним осуществляется доступ, смотрите в разделе Файловая система.

-

ВАЖНО При включении звуковых файлов следует убедиться, что файлы не имеют имен, которые конфликтуют с потоковыми звуковыми активами. Например, звуковой актив с именем "main_music" приведет к тому, что включенный файл с именем "main_music.ogg" станет неопределенным при запуске проекта. Это происходит потому, что потоковые файлы также хранятся вне основного пакета проекта, поэтому в таких ситуациях необходимо соблюдать осторожность.

-

Вы также можете включить файлы DLL (на Windows) или DyLib (на macOS) как Included Files и затем создать свои собственные функции для работы с ними, используя external_define(). Затем их можно использовать, вызывая external_call() функция.

-

ПРИМЕЧАНИЕ Использование включенных файлов для создания дополнительной функциональности таким способом несовместимо с системой расширений, так как вы не можете использовать external_*() функции с файлами, добавленными в расширение. Активы расширений уже имеют метод добавления констант и функций.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Texture_Groups.htm b/Manual/contents/Settings/Texture_Groups.htm index fe69704b2..e69de29bb 100644 --- a/Manual/contents/Settings/Texture_Groups.htm +++ b/Manual/contents/Settings/Texture_Groups.htm @@ -1,73 +0,0 @@ - - - - - - Группы текстур - - - - - - - - - - -

Группы текстур

-

Менеджер групп текстур доступен из меню Инструменты на сайте IDE. Здесь можно добавлять, удалять и переименовывать группы текстур.

-

GameMaker позволяет вам назначить каждый из графических активов (sprites, наборы тайлов и шрифты) на различные группы текстур, чтобы попытаться оптимизировать количество смен текстур, которые аппаратное обеспечение выполняет в любой момент времени в вашей игре. Для этого нужно определить необходимые группы текстур в этом окне, а затем перейти к каждому из соответствующих типов активов и выбрать группу, к которой он должен принадлежать, в выпадающем меню.

-

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

-

Также можно добавить активы в группу текстур с помощью меню правой кнопки мыши в браузере активов. Вы можете выбрать один или несколько активов спрайтов/наборов плиток/шрифтов, а затем использовать меню RMB для добавления активов в любую группу, как показано ниже для наборов плиток:

-

Важно понимать, что одна текстурная группа может иметь несколько текстурных страниц, и они не эквивалентны. Если в вашей игре много уникальной графики для каждого уровня, то вы можете определить одну группу текстур для каждого уровня, но для графики может потребоваться две или более текстурных страниц для каждой группы. Это зависит от того, сможет ли выбранный размер текстурной страницы (в параметрах игры для вашей цели) вместить всю графику в текстурную группу.

-

По умолчанию все изображения в вашей игре будут добавлены в группу текстур "Default", которая всегда существует. Однако вы можете нажать кнопку Add New, чтобы создать новую группу текстур, а выбрав название группы, вы можете изменить его на подходящее. Для начала группа покажет "эта группа пуста" для каждого раздела группы (sprites, наборы тайлов и шрифты), поэтому вам нужно пройтись по своим графическим ресурсам и добавить их в группу. Вы можете добавить ресурс с помощью кнопки Добавить ресурс внизу или выбрав группу текстур в редакторе ресурсов для изображения, набора плиток или шрифта. Группы текстур, отличные от группы "По умолчанию", могут быть удалены в любое время, что приведет к перемещению их содержимого в группу "По умолчанию" (обратите внимание, что если вы удалите группу по ошибке, вы можете использовать / + "Z", чтобы отменить действие).

-

После определения групп текстур и назначения им графических активов вы увидите их список в левой части главного окна редактора групп текстур, а щелчок на любом из сайтов sprites в этом списке покажет их в окне предварительного просмотра изображений справа. Это особенно полезно при работе над большими проектами, когда необходимо видеть, какие изображения были назначены той или иной группе. Обратите внимание, что если изображения, назначенные группе, имеют несколько подизображений (т.е. они анимированы), то в окне предварительного просмотра будет показано только первое подизображение. Вы также можете щелкнуть правой кнопкой мыши на ресурсе, чтобы открыть небольшое меню, позволяющее переместить его в другую группу текстур или открыть редактор для этого актива.

-

Стоит отметить, что даже если активы показаны в списке как отдельные, все sprites, наборы тайлов и шрифты будут добавлены на одну страницу текстур (или страницы), а не получат отдельную страницу для каждого типа ресурсов. Единственным исключением из этого правила является случай, когда актив sprite был помечен как "Отдельная страница текстур", в этом случае ему будет предоставлена отдельная страница текстур (подробнее см. раздел "Настройки текстур" в редакторе спрайтов ).

-

Более подробную информацию о текстурных страницах и о том, как они создаются, см. на следующей странице:

- -

-

Групповые настройки

-

Texture Group Editor

-

Настройки группы в редакторе групп текстур используются для определения того, как именно должны быть созданы страницы текстур для данной группы, при этом доступны следующие опции:

-
    -
  • Разрешить масштабирование - снятие флажка заставит GameMaker не масштабировать группу текстур ни при каких обстоятельствах. Это может быть полезно, особенно при работе с универсальными приложениями, так как позволяет поместить определенные ресурсы, например шрифты, в отдельную группу, которая будет использоваться при запуске приложения на определенном устройстве. Например, шрифты могут отлично выглядеть на дисплее retina, но при уменьшении их масштаба для отображения на обычном дисплее они могут выглядеть ужасно, поэтому их можно отнести к специальной группе без масштабирования - если вы разрабатываете приложение для iPhone, вам, возможно, захочется проверить это, так как приложения были отклонены из-за того, что изображения были размыты из-за масштабирования текстур. По умолчанию эта функция включена .
  • -
  • Автоматическое обрезание - Когда вы добавляете изображения в GameMaker, если они имеют какое-либо "пространство" вокруг себя (т.е. 100% прозрачность), оно автоматически обрезается при добавлении на страницу текстуры и отмечается флажком "Автоматическое обрезание". Однако если, например, вы используете изображение в качестве неповторяющейся текстуры для примитивов или чего-то подобного, это означает, что UV-координаты для наложения текстуры будут представлены неправильно. В таких случаях вы можете снять флаг с этой опции, и sprite будет добавлен на страницу текстуры "как есть", сохраняя любые прозрачности, которые он может иметь по краям. По умолчанию эта опция включена .
  • -
  • Генерировать мипмапы - включение этой опции (по умолчанию она выключена) сообщит GameMaker, что исходная страница текстуры должна быть масштабирована и отфильтрована на несколько разрешений в файле текстуры. Обычно эта опция выключена, но если вы используете камеры для приближения или удаления больших участков игровой комнаты или работаете с 3D-игрой, то вы можете включить эту опцию и затем использовать функции Mipmapping Functions для настройки того, как игра будет работать с различными уровнями mipmap. Когда вы установите этот флажок, значение "Размер границы" будет установлено на 8 (если изначально оно было меньше 8). Это связано с тем, что при использовании мипмапов вам нужны большие границы между изображениями на страницах текстур, иначе они начнут сливаться друг с другом на более высоких уровнях мипмапов. Значение по умолчанию 8 позволяет уменьшить изображение примерно до одной восьмой от его исходного размера, прежде чем подизображения начнут сливаться друг с другом, но вы можете изменить это значение на любое необходимое для ваших нужд. Обратите внимание, что если вы используете опцию "Отдельная страница текстур" для sprites, то вам не нужно просматривать каждую текстуру и отмечать ее для генерации мипмапов, вместо этого вы можете перейти в Общие параметры игры и отметить опцию "Генерировать мипмапы для отдельных страниц текстур".
  • -
  • Размер границы - Размер границы изменяет величину перекрытия (или "удвоения пикселей") по краям всех активов на страницах, созданных для группы текстур, чтобы при масштабировании изображений между ними не было видно зазоров (или швов). По умолчанию это значение равно 2 пикселям, но в крайних случаях, когда вы сильно увеличиваете или уменьшаете масштаб изображения, вам может понадобиться увеличить это значение. Обратите внимание, что в редакторе наборов плиток есть опция установки границы вывода для плиток (а также дается объяснение, зачем это нужно), и она отделена от установки границы здесь - в основном, плитки генерируются с границей вывода для каждой плитки на временной текстуре, а затем она добавляется на страницу текстуры с указанной здесь границей по внешнему краю. Также обратите внимание, что включение Mipmaps автоматически установит размер границы по умолчанию для страницы текстуры равным 8, чтобы предотвратить "кровотечение" между текстурами на более высоких уровнях mip, но это можно изменить.
  • -
  • Родительская группа текстур - здесь вы можете выбрать любую из существующих групп в качестве "родительской" для выбранной в данный момент группы. "Дочерние" группы наследуют все изменения, внесенные в родительскую группу текстур, и предназначены в первую очередь для управления ресурсами при работе с кроссплатформенными играми. Текстурная группа с родителем остается самостоятельной текстурной группой и будет генерировать текстурные страницы так же, как и любая другая группа, но назначение им родителя позволяет исключить большие фрагменты для разных платформ. Например, вы можете добавить целую кучу Android игрока sprites в группу "игрок", а Android врага sprites в группу "враг", а затем сделать так, чтобы они обе использовали родительскую группу "android". Если затем исключить родительскую группу "android" из сборки Windows или другой платформы, дочерние группы тоже будут исключены.
  • -
  • Формат группы текстур - Здесь вы можете выбрать формат страницы текстур: BZ2 + QOI, QOI и PNG. Рекомендуется придерживаться варианта по умолчанию, BZ2 + QOI, так как он обеспечивает наилучшее сжатие при сохранении качества.
    -
    - Вы можете выбрать QOI, если опция BZ2 влияет на скорость работы на целевой платформе (например, Android), или PNG, если вы хотите работать с экспортированными PNG вручную или использовать опцию PNGCrush. -
  • -
-

Помимо этих настроек, вы также можете выбрать экспорт (или не экспорт) любой группы текстур на любую платформу, просто установив или сняв соответствующие флажки в разделе " Использовать группу на..." окна. Обратите внимание, что группа текстур <Default> всегда экспортируется на каждую платформу, и вы не можете отметить/отметить ни одну из них (только пользовательские группы текстур позволяют это сделать).

-

Группы текстур также связаны с настройками конфигураций. Это означает, что вы можете определить группы текстур для каждой отдельной конфигурации вашей игры, а затем установить sprite, набор плиток или назначение ресурсов шрифтов для этих различных групп, и они будут "запоминаться" при переходе к другой конфигурации. То же самое произойдет с любыми опциями экспорта, которые вы выбрали в окне Texture Group, так что вы можете установить группы текстур для экспорта на определенные платформы на основе каждой конфигурации.

-

Например, можно создать конфигурацию для iPad и для нее создать текстурные страницы размером 2048x2048px (настройка этого параметра осуществляется через Game Options). Затем вы назначите все графические активы соответствующим группам текстур, а после завершения работы перейдете к другой конфигурации (например, для HTML5) и в окне Texture Group создадите новые группы текстур размером 512x512px, назначив активы этим новым группам. Внизу страницы есть кнопка, позволяющая копировать настройки группы текстур из одной конфигурации в другую.

-

Наконец, группы текстур имеют отношение только к растровым изображениям, а небитовые sprites не будут назначены группам текстур. Некоторые из них уже будут иметь свою собственную уникальную текстурную страницу (скелетная анимация sprites), а другим просто не нужны текстуры, поскольку они состоят из векторов. Для получения дополнительной информации см. следующий раздел:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/Texture_Information/Non-Bitmap_Sprites.htm b/Manual/contents/Settings/Texture_Information/Non-Bitmap_Sprites.htm index 92cfe78c3..e69de29bb 100644 --- a/Manual/contents/Settings/Texture_Information/Non-Bitmap_Sprites.htm +++ b/Manual/contents/Settings/Texture_Information/Non-Bitmap_Sprites.htm @@ -1,67 +0,0 @@ - - - - - - - Небитовые спрайты - - - - - - - - - -

Небитовые спрайты

-

ВGameMaker есть поддержка небитовых изображений sprites в виде векторных файлов SWF или файлов Spine Skeletal Animation. Оба эти формата имеют свои плюсы и минусы, и в двух следующих разделах рассказывается о том, как импортировать их в редактор спрайтов, а также немного информации о том, как они рисуются.

-

Скелетная анимация Sprites (Spine)

-

Сайт sprite, созданный с использованием скелетной анимации, - это файл, в котором создан базовый "скелет" и анимирован с помощью ключевых кадров для перемещения составных частей скелета во времени. Затем на этот скелет накладывается текстура из атласа текстур, и полученная анимация экспортируется в один из многих типов файлов. GameMaker позволяет импортировать этот тип файла sprite, если он был экспортирован как файл формата *.json и имеет корректно связанный файл атласа текстур (*.atlas) и файл изображения (как *.png) в том же каталоге.

-

В настоящее время GameMaker может импортировать векторные изображения только из файлов формата JSON, созданных программой Spine, однако способ их импорта в программу практически идентичен способу добавления обычного растрового изображения. Чтобы добавить скелетную анимацию, нужно создать новый файл sprite, который вызовет стандартный диалог Load Sprite, только здесь нужно убедиться, что вы выбрали *.json из фильтра файлов внизу:

-

Spine UI

-

Нажатие кнопки "Загрузить" добавит скелетную анимацию в Браузер активов как sprite, при этом по мере обработки файла будет отображаться индикатор выполнения. Обратите внимание, что в зависимости от сложности файла это может занять минуту или две. По окончании обработки вы вернетесь в диалог свойств sprite, который теперь будет выглядеть следующим образом:

-

После импорта анимации вы можете задать свойства столкновений, но учтите, что здесь вы ограничены использованием только точных столкновений или столкновений с ограничивающей рамкой, и что данные о столкновениях для скелетной анимации явно берутся из предоставленных данных. GameMaker не генерирует маски столкновений, если данные отсутствуют в импортируемом файле, то есть вы просто не получите работающих столкновений, если маски не установлены правильно в программе, используемой для создания импортируемого изображения.

-

ПРИМЕЧАНИЕ Из-за сложности скелетной анимации, изображение предварительного просмотра, показанное в редакторе sprite, не предназначено для точного представления вашей анимации, а скорее дает вам простое изображение, которое представляет анимацию для визуализации в редакторе помещений.

-

В отличие от растровой sprites, импортированная скелетная анимация sprite не может быть изменена в редакторе никаким образом, но есть ряд функций, доступных внутри GameMaker Language (GML), которые могут быть использованы для изменения скинов, установки свойств и управления другими аспектами анимации. Вы также не можете установить какие-либо параметры текстуры для sprite, так как GameMaker будет использовать поставляемый атлас текстур, созданный программой, которая сгенерировала sprite.

-

Существует ряд моментов, о которых следует знать при импорте скелетной анимации sprites, наиболее важным из которых является то, что некоторые функции рисования sprite и управления sprite не поддерживаются по техническим причинам, особенно те функции рисования, которые рисуют только часть sprite, или "перекашивают" позицию каким-либо образом (см. отдельные draw_sprite_*() функции для получения точной информации о них). Однако основные функции рисования sprite поддерживаются полностью, как и встроенные переменные sprite. Помимо этих функций и переменных, вы также можете задавать и изменять свойства анимации с помощью специальных функций skeleton_*, которые перечислены и объяснены в справочном разделе " Скелетная анимация".

-

Вектор Sprites (SWF)

-

Как правило, все sprites в GameMaker используют растровые изображения, которые, несмотря на гибкость в плане содержания, накладывают ограничения на размер и количество кадров, возможных в sprite, прежде чем использование памяти может стать непомерно большим. Векторный sprites обходит эти ограничения, храня и рисуя свое содержимое по-другому: вместо сетки пикселей, которая может стать блочной или нечеткой при масштабировании, они рисуются в виде треугольников с использованием векторной математики, которые могут быть увеличены (или уменьшены) без потери четкости, как показано на изображении ниже:

-

Чтобы помочь вам представить, как это делается, ниже приведено изображение того же вектора Fireman sprite, только теперь мы видим полигоны, которые используются для создания изображения в GameMaker:

-

Однако в программировании игр ничто не дается даром, и компромисс с векторными sprites заключается в том, что они требуют больше затрат процессора на рисование, чем растровые sprites, и эта разница в скорости увеличивается по мере роста сложности импортируемой анимации. Кроме того, в отличие от растровых sprites, их использование памяти зависит от их визуальной сложности. Несмотря на это, они позволяют добавлять большую анимированную графику таким образом, который был бы невозможен при использовании традиционных растровых изображений sprites.

-

С другой стороны уравнения производительности, поскольку векторный sprites рисует только абсолютно необходимые пиксели (в отличие от растрового sprites, который также "рисует" пустое пространство вокруг изображения), он может быть дешевле с точки зрения GPU. Кроме того, в целом векторные sprites намного меньше своих растровых аналогов - для приведенного выше примера с пожарным размеры различных типов sprite следующие:

-

Bitmap at 70x68 = 4x70x68 bytes x 12 frames = 223k
- Vector = 54k

-

Если вы увеличите разрешение спрайта в четыре раза:

-

Bitmap at 280x272 = 4x280x272 bytes x 12 frames = 3570k
- Vector = 54k

-

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

-

В настоящее время GameMaker имеет ограниченную поддержку векторных sprites. и может импортировать векторные изображения только из файлов формата SWF. Способ их импорта в программу практически идентичен способу добавления обычного растрового изображения. Чтобы добавить векторное изображение sprite, создайте новый файл sprite, который вызовет стандартный диалог Load Sprite, но убедитесь, что вы выбрали *.swf из фильтра файлов внизу.

-

Нажатие кнопки "Загрузить" добавит векторное изображение или анимацию в Браузер активов, при этом по мере обработки файла будет отображаться индикатор выполнения. Обратите внимание, что в зависимости от сложности файла это может занять некоторое время (до минуты для более сложных анимаций). По окончании обработки вы вернетесь к диалогу свойств sprite, который теперь будет выглядеть следующим образом:

-

Редактор sprite практически не изменился, но теперь кнопка Edit Image стала серой и не может быть нажата, поскольку в этом типе sprite нет растровых изображений для редактирования. Во-вторых, все опции текстур тоже стали серыми. SWF sprites основан на математике и, как таковой, обычно не имеет текстур, поэтому ни одна из доступных опций не применима для этого вида sprite.

-

ПРИМЕЧАНИЕ То, как изображение выглядит в выбранном вами редакторе предварительного просмотра, не будет совпадать ни с тем, как оно выглядит в вашей игре, ни с тем, как оно выглядит в окне предварительного просмотра редактора sprite. Векторное изображение будет импортировано в том размере, в котором оно было создано, а это не обязательно тот размер, который отображается в окне предварительного просмотра (браузеры, например, обычно масштабируют изображение для подгонки).

-

Одним из дополнений к редактору Sprite является то, что вы можете установить качество векторного sprite при рисовании с помощью ползунка SWF Precision в верхней части. Это просто уменьшит или увеличит количество треугольников, используемых для генерации sprite - значение около 50% обычно достаточно для большинства игр - однако вам следует поэкспериментировать с этим значением, если вы используете экстремальное масштабирование или испытываете проблемы с производительностью.

-

Существует ряд моментов, о которых следует знать при импорте векторного sprites, наиболее важным из которых является то, что некоторые функции рисования sprite и управления sprite не поддерживаются по техническим причинам, особенно те функции рисования, которые рисуют только часть sprite, или каким-либо образом "перекашивают" положение (см. отдельные функции). draw_sprite_*() функции для получения точной информации о них). Однако основные функции рисования sprite полностью поддерживаются, как и встроенные переменные sprite. Вы также можете установить различные значения сглаживания (AA) для рисуемого SWF sprites с помощью функций draw_enable_swf_aa(), draw_get_swf_aa_level() или draw_set_swf_aa_level().

-

Вы также должны знать следующее:

-
    -
  • При импорте файла *.SWF функция Actionscript не поддерживается, поэтому если ваш SWF полагается на нее для корректной работы, то, скорее всего, он не будет работать правильно. Аналогично, любые встроенные видеоклипы, имеющие свою собственную временную шкалу, будут иметь только первый кадр, показанный на протяжении всей анимации - вся анимация должна быть на основной временной шкале.
  • -
  • Если ваш векторный файл имеет особенно мелкие детали, вы можете иногда обнаружить, что в полученном изображении sprites появляются дыры или странные треугольники. Это происходит потому, что при малых масштабах геометрия может иногда сбиваться вместе, создавая фигуры, которые просто плохо триангулируются. В этом случае у вас есть два варианта - вы можете увеличить масштаб содержимого векторного файла, что даст импортеру больше пространства для игры, или вы можете попытаться уменьшить уровень детализации объекта, который ломается.
  • -
  • GameMaker использует размер сцены SWF в качестве границ результирующего файла sprite. Однако, если на сцене есть что-либо за пределами этих границ, оно все равно будет нарисовано. Это означает, что вы должны либо стараться не размещать ничего за границами сцены, если не хотите, чтобы это было показано, либо использовать слой-маску, чтобы ограничить рисование этой областью.
  • -
  • Размер сцены также влияет на размер генерируемых масок столкновений, поэтому если у вас большой размер сцены и много кадров в анимации, вы можете съесть много памяти. Поэтому используйте точные маски столкновений только в том случае, если это действительно необходимо.
  • -
  • Поскольку SWF-файл создается из нескольких слоев, некоторые из которых могут перекрываться, альфа работает не совсем так, как в растровых картах sprites - перекрывающиеся области будут выглядеть не такими прозрачными, как другие части sprite, поскольку пиксели в них перерисовываются несколько раз.
  • -
  • Поддерживаются растровые заливки, хотя если вы используете плиточные растровые заливки как часть вашего SWF-файла, вам нужно убедиться, что размер растрового изображения равен двум целым, в противном случае оно не будет плиточным. Рендеринг текста также поддерживается, но для того, чтобы он отображался в результирующем файле sprite, необходимо встроить шрифт в SWF-файл. Кроме того, в настоящее время поддерживается только однострочный текст с левым выравниванием.
  • -
-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/Settings/Texture_Information/Texture_Pages.htm b/Manual/contents/Settings/Texture_Information/Texture_Pages.htm index a85eb9e20..e69de29bb 100644 --- a/Manual/contents/Settings/Texture_Information/Texture_Pages.htm +++ b/Manual/contents/Settings/Texture_Information/Texture_Pages.htm @@ -1,68 +0,0 @@ - - - - - - Страницы текстур - - - - - - - - - - -

Текстурные страницы

-

Когда вы создаете игру в GameMaker, вы, несомненно, создаете графику - sprites, наборы тайлов и шрифты - для нее. Эта графика хранится на страницах текстур, которые GameMaker создает для вас из всех - ресурсов изображений, которые содержит ваша игра. Ниже приведен пример готовой страницы текстур:

-

Как вы можете видеть, графика игры скомпонована таким образом, что все они помещаются на странице размера, равного 2, например, 512x512, 1024x512 - и т.д. вплоть до максимального размера страницы 4096x4096 пикселей. Обратите внимание, что максимальный размер страницы текстуры будет зависеть от выбранной платформы экспорта, так как некоторые цели не допускают страниц размером более 2048x2048px, и даже тогда максимально доступный размер - может быть не оптимальным для всех устройств, использующих ОС целевой платформы.

-

Обратите также внимание, что если ваши изображения имеют много пустого пространства (т.е. прозрачных пикселей) вокруг них, то они будут обрезаны по умолчанию, чтобы удалить все эти "невидимые" пиксели и упаковать как можно больше изображений на одну страницу текстуры. Если - это не то, что вы хотите, то вам нужно отключить эту функцию в окне Группы текстур.

-

Важно понимать, как различные доступные настройки текстуры будут влиять на изображение, поэтому давайте рассмотрим раздел редактора спрайтов под названием " Настройки текстуры", показанный ниже:

-

Здесь вы можете определить, как изображение будет храниться на странице текстуры, является ли оно изображением, предназначенным специально для использования в 3D, и должно ли оно храниться отдельно, и какой странице текстуры (если таковая имеется) оно должно быть присвоено, а также несколько других опций (объясняется подробнее на странице Sprite Editor). - храниться отдельно и к какой странице текстуры (если таковая имеется) оно должно быть отнесено, а также несколько других опций (подробно описанных на странице Sprite Editor ). Нас интересуют следующие параметры - первые две: Tile Horizontal и Tile Vertical. Они относятся к тому, как будут созданы края изображения при размещении на странице текстуры.

-

У изображения, которое должно быть облицовано плиткой, края (горизонтальные или вертикальные) будут дополнены краями с противоположной стороны, а если облицовка не выбрана, то sprite будет зажат и пиксели краев будут повторяться (обратите внимание, что наборы плиток также - имеют настройку ширины выходной границы, которая находится в Свойствах набора плиток и делает то же самое, только для каждой плитки в наборе). Следующее изображение иллюстрирует это:

-

Под этими настройками находится параметр Separate Texture Page . Эта опция заставит GameMaker поместить это изображение - на своей собственной уникальной странице текстуры, и с ней не связано никаких опций, поскольку тайлинг или зажим контролируются непосредственно кодом. Чаще всего этот параметр используется для текстурирования 3D-моделей (в этом случае текстура должна быть кратна 2, например: 128x128, - 512x512, 256x1024 и т.д...), но вы можете использовать его, чтобы заставить любое изображение рисоваться на своей собственной уникальной странице.

-

ПРИМЕЧАНИЕ: Будьте осторожны при использовании этой опции, так как вы можете быстро израсходовать всю доступную память текстуры, особенно на мобильных устройствах, если у вас слишком много страниц текстуры.

-

Теперь, когда ваша игра большая, с большим количеством художественных ресурсов, может оказаться, что способ, которым GameMaker автоматически создает эти страницы, не является оптимальным для получения максимальной отдачи от целевого устройства, из-за того, что если комната в вашей игре - требует ресурсов из 4 различных текстурных страниц, устройству придется постоянно менять местами эти страницы в памяти (и из памяти), что может привести к снижению производительности. Для этого у вас есть возможность указать GameMaker, какие изображения должны быть - размещаться на той или иной текстурной странице, назначая их определенным группам текстур. Конечной целью этого является минимизация количества обменов, выполняемых в игре в любой момент времени (страницы текстур можно добавлять из окна Texture Groups ).

-

Следует отметить, что на вкладках отдельных платформ, которые можно найти в Опциях игры, есть кнопка, позволяющая просматривать определенные вами страницы текстур, как они будут созданы для каждой из них. - цели. Это очень удобно, чтобы определить, сколько страниц создается и что на них находится.

-

Если в вашей игре есть текстура, размер которой превышает максимальный размер выбранной страницы текстуры, то она будет уменьшена наполовину (и еще наполовину, если необходимо), пока не поместится на максимальном размере страницы. Она не будет разделена на - разделы на разных страницах текстур. Это означает, что при тестировании игры на Windows, Ubuntu (Linux) или MacOS игра может выглядеть нормально, поскольку вы используете большие страницы текстур, но на iOS (или любой другой цели, для которой требуется меньший размер страницы текстуры) текстура может выглядеть нормально. - для оптимальной производительности) текстуры могут выглядеть размытыми или иметь артефакты. Необходимо убедиться, что все ваши изображения могут поместиться на наименьшем из размеров текстурных страниц, которые будет использовать ваша игра, а если это не так, то вам следует разделить их - на более мелкие изображения и затем соединить их вместе в игре, чтобы создать иллюзию одного большого целостного изображения.

-

ПРИМЕЧАНИЕ: Прежде чем вы начнете разделять графику на различные текстурные страницы, вы должны знать, что это не всегда необходимо и не всегда является наиболее эффективным способом работы. Некоторые игры могут быть больше привязаны к CPU, чем к GPU (см. - раздел " Отладка" для получения дополнительной информации), и такие игры не получат большой выгоды от такой оптимизации, и вам также следует подумать, не лучше ли разместить все изображения на двух - текстурных страницах и обмениваться ими, а не распределять их по нескольким, что приводит к пустой трате памяти.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/Settings/The_Room_Manager.htm b/Manual/contents/Settings/The_Room_Manager.htm index 1add54d7d..e69de29bb 100644 --- a/Manual/contents/Settings/The_Room_Manager.htm +++ b/Manual/contents/Settings/The_Room_Manager.htm @@ -1,83 +0,0 @@ - - - - - Управляющий комнатой - - - - - - - - - - -

Управляющий комнатой

-

При использовании браузера активов вы можете создавать свои комнаты и перемещать их между - различными группами папок, чтобы организовать проект так, как вам удобно. Однако игры в GameMaker обычно имеют комнаты, которые следуют определенному порядку, и, как минимум, должны иметь определенную стартовую комнату (после того как - после начала игры в этой комнате вы можете использовать код или действия, чтобы перейти в любую комнату в игре по вашему желанию), и именно здесь в игру вступает менеджер комнат.

-

Вы можете открыть менеджер комнат, нажав на кнопку "Extras" в верхней части браузера активов и выбрав его из открывшегося меню, или вы можете - просто щелкнуть на значке слева от комнаты в браузере активов:

-

После открытия Менеджер комнат представляет вам две различные вкладки: Порядок комнат и Наследование комнат. - Порядок комнат определяет порядок, в котором комнаты будут доступны, если вы проходите игру буквально, используя функцию room_goto_next() на - в конце каждой комнаты, и самая верхняя комната в списке всегда будет отмечена значком "дома" , который показывает, что эта комната является назначенной - стартовой комнатой для игры. Этот значок также будет отображаться в браузере активов, чтобы вы могли четко видеть, какая это комната, независимо от того, как вы отфильтровали или настроили свои активы.

-

Примечание: Идентификаторы ваших активов комнат не будут располагаться в том же порядке, как определено в этом списке, и поэтому вы не должны напрямую указывать числовое значение для изменения комнаты во время выполнения. Всегда используйте константу room для актива, на который вы хотите сослаться (это просто его имя), или получайте ее через функцию.

-

Вы можете изменить порядок комнат, просто нажав и перетащив комнату, которую вы хотите переместить вверх или вниз по списку, а также вы можете использовать и/или / для выбора нескольких комнат, затем нажмите и перетащите их, чтобы переместить их в целом:

-

Вкладка Наследование комнат предназначена для настройки "дочерних" комнат. Дочерняя комната - это комната, которая была скопирована из - родительской комнаты и настроена на наследование всех ее свойств. Если вы ничего не сделаете с этой комнатой, то она действительно будет копией оригинальной комнаты, но вы можете зайти в редактор комнат и - включить или выключить наследование для определенных вещей, таких как слои или экземпляры, а также добавить новые слои, экземпляры и свойства в комнату.

-

Как и на вкладке Порядок комнат, вы можете щелкнуть и перетащить, чтобы изменить порядок комнат, но обратите внимание, что выбор дочерней комнаты и перемещение ее в другую родительскую комнату приведет к разрыву наследования комнаты с первоначальной родительской комнатой, и вместо этого она унаследует свойства новой комнаты. Также обратите внимание, что вы можете преобразовать - дочернюю комнату в "полноценную" комнату без наследования, перетащив ее в левую часть списка (граница списка станет выделенной), и тогда она просто станет самостоятельной комнатой.

-

Комнаты могут иметь несколько детей, и каждый ребенок может также быть родителем и иметь своих собственных детей, например:

-

Здесь у нас есть родительская комната, "rm_Level_1_Day", у которой есть две дочерние комнаты - "rm_Level_1_Day_AfterBattle" и "rm_Level_1_Night". Мы также назначили еще одну дочернюю комнату для "rm_Level_1_Night" под названием " - rm_Level_1_Night_AfterBattle". Таким образом, вы можете повторно использовать ресурсы и дизайн уровня из одной родительской комнаты, а затем изменить только то, что необходимо, чтобы сделать его немного другим в дочерней комнате или комнатах.

-

ПРИМЕЧАНИЕ: Более подробную информацию о наследовании номеров смотрите здесь.

-

Наконец, менеджер комнат имеет несколько дополнительных инструментов, которые помогут вам ориентироваться и организовывать комнаты. Вверху находится панель поиска, которая позволяет добавить поисковый запрос и быстро перейти к комнатам, в названии которых есть этот запрос. - названия. Комнаты, в названии которых есть поисковый запрос, будут выделены, и вы сможете мгновенно перейти к ним с помощью кнопок вверх/вниз сбоку:

-

В нижней части Менеджера комнат также есть несколько полезных кнопок, которые позволяют перемещать комнаты вверх или вниз по списку порядка комнат:

-

Рядом с этими кнопками есть кнопка Создать группу, с помощью которой можно создать папку группы. - Эти папки можно использовать для лучшей организации комнат в вашей игре (порядок комнат по-прежнему будет соблюдаться), и вы можете щелкнуть и перетащить комнаты в папку, чтобы добавить их. Вы также можете выбрать несколько комнат, щелкнув, удерживая нажатой кнопку и/или / , затем нажмите кнопку Создать группу, и все выбранные комнаты будут добавлены в группу. Обратите внимание, что это изменит порядок комнат в вашей игре, а также обратите внимание, что если вы позже решите удалить папку группы, все комнаты в этой папке также будут удалены (по - по умолчанию GameMaker предупредит вас об этом).

-

Также следует отметить, что вы можете щелкнуть правой кнопкой мыши на любой комнате в Менеджере комнат, чтобы вызвать следующее меню:

-

В этом меню представлены следующие опции:

-
    -
  • Создать дочернюю комнату: Это создаст новую комнату как дочернюю комнату той комнаты, на которой был сделан щелчок, при этом новая комната унаследует свойства родительской комнаты.
  • -
  • Редактировать: Откроется редактор комнаты.
  • -
  • Редактировать теги: Откроется редактор тегов, чтобы вы могли добавить теги в комнату.
  • -
  • Переименовать: Это позволяет переименовать актив комнаты (вы также можете сделать медленный двойной щелчок на комнате, чтобы переименовать ее).
  • -
  • Дублировать: Это дублирует выбранную комнату, помещая новую комнату под выбранной комнатой.
  • -
  • Избранное: Это добавит выбранную комнату в раздел "Избранное" браузера активов.
  • -
  • Удалить: При нажатии на эту кнопку выбранная комната (или комнаты) будет удалена. Если используется для групповой папки, все комнаты в папке будут удалены вместе с папкой. Если используется для родительской комнаты, будет удалена только родительская комната, - а все дочерние комнаты останутся, хотя теперь они будут независимыми и больше не будут дочерними комнатами.
  • -
  • Развернуть детей: Если выбрана групповая папка, этот параметр развернет содержимое папки.
  • -
  • Развернуть все: Этот параметр развернет все группы папок.
  • -
  • Свернуть все: Этот параметр свернет все группы папок.
  • -
  • Упорядочить: Подменю "Упорядочить" можно использовать для перемещения комнат вверх или вниз в менеджере комнат, так же как и кнопки в нижней части окна менеджера.
  • -
  • Открыть в проводнике: Это откроет проводник файлов ОС на активе в игровом проекте.
  • -
  • Цвет актива: Здесь вы можете выбрать цвет для комнаты (или комнат), чтобы помочь идентифицировать их в Менеджере комнат. Обратите внимание, что этот цвет также будет использоваться в браузере активов и отменяет любой цвет, установленный ранее.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Animation_Curve_Properties/Animation_Curve_Library.htm b/Manual/contents/The_Asset_Editors/Animation_Curve_Properties/Animation_Curve_Library.htm index c58faf5a1..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Animation_Curve_Properties/Animation_Curve_Library.htm +++ b/Manual/contents/The_Asset_Editors/Animation_Curve_Properties/Animation_Curve_Library.htm @@ -1,81 +0,0 @@ - - - - - Библиотека анимационных кривых - - - - - - - - - - -

Библиотека анимационных кривых

-

Окно библиотеки кривых анимации позволяет изменить тип кривой для кривой анимации и применить пресет к выбранному каналу. - пресет к выбранному каналу. Его можно открыть, щелкнув левой кнопкой мыши на кнопке в редакторе кривых анимации или на доп. листе секвенции, или щелкнув правой кнопкой мыши в любом месте редактора каналов. - в любом месте редактора каналов.

-

Тип кривой

-
-

Тип кривой управляет тем, как канал течет от точки к точке, и может быть установлен на один из следующих вариантов:

-
    -
  • Линейный: Это создаст линейную прогрессию между точками на канале
  • -
  • Smooth: Используется интерполяция катмул-ром для создания плавной прогрессии между точками на канале.
  • -
  • Безье: Здесь используется математика кривых Безье для создания плавной прогрессии между точками канала, где вы можете контролировать внешний вид кривой, манипулируя "ручками" на точках.
  • -
-

Обратите внимание, что при изменении типа кривой этот тип будет применен ко всем каналам в кривой анимации.

-
-

Предварительные настройки кривых

-
-

Предустановка кривой изменяет форму кривой. Щелчок левой кнопкой мыши на предустановке в меню Предустановки приведет к применению этой предустановки к выбранному каналу. - выбранному каналу, а нажатие на Reset вернет канал к тому состоянию, в котором он был до открытия окна библиотеки анимационных кривых.

-

ПРИМЕЧАНИЕ: Предустановки можно применять только в том случае, если для параметра Тип кривой установлено значение Безье.

-

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

-

Обратите внимание, что канал кривой (или выбор в этом канале) должен иметь наклон, чтобы предустановка имела какой-либо эффект, так как любая применяемая - интерполяция основана на вертикальной разнице между начальной и конечной точками. Плоская кривая не имеет такой разницы между двумя точками, поэтому после применения предустановки к такой кривой вы не увидите никаких результатов.

-

Есть два режима применения, которые вы можете выбрать, и которые влияют на то, как пресет будет применен к вашему каналу (или к вашему выбору в этом канале):

-


-

-
    -
  • Перезаписать: Это значение используется по умолчанию, когда окно открывается через кнопку в редакторе кривых анимации или на доп. листе последовательности. При этом перезаписываются - все точки между начальной и конечной точками вашего канала или выделения.
  • -
  • Между: Это значение используется по умолчанию при открытии окна щелчком правой кнопки мыши в любом месте редактора каналов. Он применяет предустановку между каждой парой выделенных точек, - и добавляет все новые точки, которые необходимы, не удаляя существующие.
  • -
-

На следующем рисунке показана предварительная установка кривой Expo , примененная к каналу с использованием режимов применения Between и Overwrite :

-

-

Как показано на рисунке выше, Between применяет предустановку кривой к каждой паре точек и вставляет все необходимые новые точки. Перезапись удаляет все точки между начальной и конечной точками, а затем - применяет предварительную настройку.

-

Также можно выбрать три режима смягчения , которые определяют, как кривая ускоряется или замедляется. По умолчанию используется режим смягчения Ease Out.

-

-
    -
  • Облегчение: Кривая начинается с более быстрого ускорения, а затем замедляется
  • -
  • Ускорение: Кривая начинается с более медленного ускорения, а затем ускоряется с течением времени
  • -
  • Облегчение входа-выхода: Кривая начинается с более медленного ускорения, со временем ускоряется, а затем замедляется
  • -
-

На следующем рисунке показана предварительная настройка кривой Quart во всех трех режимах смягчения:

-

-
-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Animation_Curves.htm b/Manual/contents/The_Asset_Editors/Animation_Curves.htm index c123ba54d..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Animation_Curves.htm +++ b/Manual/contents/The_Asset_Editors/Animation_Curves.htm @@ -1,97 +0,0 @@ - - - - - Анимационные кривые - - - - - - - - - - -

Редактор анимационных кривых

-

Анимационная кривая - это актив, содержащий одну или несколько кривых, которые представляют, как значение изменяется со временем, и могут использовать линейную интерполяцию, плавную интерполяцию или интерполяцию безье для перехода между различными точками кривой. Значения, задаваемые на вертикальной оси, могут находиться между любыми двумя значениями (по умолчанию от -1 до 1), а длительность по горизонтальной оси всегда нормирована от 0 до 1, что позволяет легко и просто - нацеливать различные временные диапазоны с помощью множителей в коде игры или растягивать их, чтобы подогнать под трек в редакторе последовательностей.

-

Анимационные кривые состоят из "каналов", и каждый канал может иметь свои собственные настройки кривой, что позволяет, например, описать пространственную позицию с помощью двух каналов для расположения x/y или цветовой градиент с помощью 4 каналов для представления цветового формата. - представления цветового формата. Активы анимационных кривых можно использовать при работе с последовательностями, а также получить доступ к ним с помощью кода, что делает их мощным инструментом при создании игр.

-

При первом создании актива кривой анимации открывается окно редактора, в котором представлены следующие разделы:

-

Название кривой

-
-

Здесь вы можете дать вашей анимационной кривой уникальное имя(только буквенно-цифровые символы и символ подчеркивания "_"). Это имя будет использоваться для обращения к кривой и всем ее каналам - при обращении к ней через код или в последовательности.

-

-
-

Библиотека кривых

-
-

Кнопка открывает Библиотека анимационных кривых окно, - которое позволяет изменить тип кривой кривой анимации и применить предустановку к выбранному каналу.

-

Информацию о библиотеке анимационных кривых см. в разделе " Библиотека анимационных кривых ". - о типах кривых и предустановках. Обратите внимание, что при открытии окна через кнопку по умолчанию будет выбран режим применения "Перезапись ".

-
-

Список каналов

-
-

В списке каналов можно добавить и назвать различные каналы, которые будут составлять актив анимационной кривой. По умолчанию, когда вы впервые создаете анимационную кривую, один канал уже добавлен, и вы можете добавить другие каналы, нажав на кнопку - на кнопку слева от названия кривой. Каждый канал должен иметь уникальное имя ( только с использованием буквенно-цифровых символов и символа подчеркивания "_"), - Вы также можете задать цвет для канала, дважды щелкнув на образце цвета слева, что откроет окно выбора цвета и позволит вам выбрать новый цвет. - Чтобы переименовать канал, можно сделать медленный двойной щелчок и переименовать, а также использовать правую кнопку мыши , чтобы открыть меню, в котором можно выбрать переименование, изменение цвета или удаление канала.

-

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

-

Вы можете переключить видимость канала, нажав на значок "глаз" , или удалить канал, нажав на значок "корзина" .

-

-
-

Диапазон каналов

-
-

Кнопка Диапазон канала используется для установки визуального вертикального диапазона для редактора каналов. По умолчанию он установлен от -1 до 1, но при нажатии на эту кнопку откроется следующее окно:

-

Изменение этих значений изменит способ представления данных в разделе "Редактор каналов", позволяя вам - иметь более высокие/низкие значения вдоль кривой канала, чем просто от -1 до 1. Обратите внимание, что это чисто визуальный эффект и не приводит к изменению значений для канала.

-

-
-

Редактор канала

-
-

Редактор каналов показывает визуальное представление различных каналов, используемых в кривой анимации. По умолчанию здесь отображаются все каналы, но редактировать можно только канал, выбранный в данный момент из списка каналов, который будет выделен цветом - в редакторе. Вы можете изменить положение любой из точек вдоль кривой канала, щелкнув на них и перетащив их в редакторе, но обратите внимание, что - первая и последняя точки могут быть изменены только вдоль вертикальной оси, а их горизонтальное значение всегда будет равно 0 и 1 соответственно.

-

Вы можете добавлять точки непосредственно к кривой канала, перемещая мышь близко к основной линии канала и нажимая , когда курсор изменится на инструмент "Добавить точку". - Затем можно редактировать эти точки, нажимая и перетаскивая их или изменяя их значения в расширенных параметрах канала в списке каналов:

-

Вы можете редактировать несколько точек одновременно, нажав кнопку и перетащив мышь в редакторе, чтобы выделить все точки, которые нужно отредактировать, или используя / + для добавления точек в выделение по отдельности. Если отпустить кнопку мыши, а затем снова щелкнуть на любой из точек в выделении - и перетащите мышь, чтобы переместить их все вместе:

-

Вы можете щелкнуть правой кнопкой мыши в любом месте редактора каналов, чтобы открыть окно библиотеки кривых анимации (только если выбран тип кривой Безье). Применение предустановки таким образом повлияет на весь канал. Чтобы изменить только часть канала, можно щелкнуть правой кнопкой мыши на отдельной линии, чтобы применить к ней предустановку, или выбрать несколько линий, щелкнув и перетащив, а затем щелкнуть правой кнопкой мыши на выделении, чтобы применить предустановку к выбранным линиям.

-

Обратите внимание, что при открытии окна библиотеки кривых анимации через редактор каналов по умолчанию будет выбран режим применения "Между ".

-

-
-

Управление масштабированием

-
-

Элементы управления масштабированием позволяют вам расширять или сужать вертикальный масштаб кривых каналов в редакторе каналов. - вертикальный масштаб кривых каналов в редакторе каналов. Вы также можете нажать кнопку "Center Fit" , чтобы вид редактора каналов отрегулировал свой масштаб так. - масштаб, чтобы все точки кривой канала поместились в редакторе по центру вокруг среднего диапазона значений:

-

The Animation Curve Editor

-

-
-

-

Информацию о различных функциях Runtime, которые можно использовать вместе с анимационными кривыми, см. в следующем разделе руководства:

- -

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Code_Snippets.htm b/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Code_Snippets.htm index 65e5fde86..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Code_Snippets.htm +++ b/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Code_Snippets.htm @@ -1,72 +0,0 @@ - - - - - - Сниппеты кода - - - - - - - - - -

Сниппеты кода

-

Очень удобным инструментом, который вы имеете в своем распоряжении при редактировании кода, является использование сниппетов кода. При использовании редактора сценариев вы можете нажать F4, чтобы открыть всплывающее окно фрагментов кода, которое позволяет выбрать один из часто используемых методов кода из списка:

-

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

-

При желании вы можете определить собственные фрагменты кода. Перед этим вам необходимо создать файл с именем "snippets.txt" в одном из следующих каталогов:

-
    -
  • Окна: %ProgramData%\GameMaker\User\
  • -
  • macOS: /Users/Shared/GameMaker/User/
  • -
-

Эта папка не изменяется при любом обновлении GameMaker, поэтому отредактированный вами файл останется нетронутым (но любые правки файла базовых фрагментов в каталоге установки будут отменены).

-

После создания файла в каталоге User вы можете редактировать его с помощью любого текстового редактора, следуя следующим правилам:

-
    -
  • Каждый сниппет должен быть на отдельной строке (не должно быть пустых строк)
  • -
  • Каждый фрагмент должен начинаться с горячей клавиши, за которой следует "-", затем название фрагмента (то, что отображается в меню), за которым следует двоеточие ":", например:
  • -
-

I - Создание экземпляра:

-

После двоеточия вы добавляете фрагмент кода

-

I - Создание экземпляра:instance_create_layer(x, y, |layer|, object);

-

Код, который вы добавляете, также должен соответствовать определенному формату:

-
    -
  • Весь код находится в одной строке
  • -
  • Вы используете знак "$" для новой строки -
      -
    • ПРИМЕЧАНИЕ При создании нескольких новых строк между каждым знаком "$" должен быть пробел. Например, чтобы добавить три новые строки, нужно написать $ $ $.
    • -
    -
  • -
  • Вы помещаете текст, который необходимо выделить, между символами "|". Редактор кода автоматически выделит этот текст для редактирования при добавлении фрагмента.
  • -
-

Смотрите примеры, которые уже есть в базовом файле фрагментов, чтобы увидеть, как все устроено в соответствии с правилами, описанными выше. Вы можете найти базовый файл в каталоге установки GameMaker:

-
    -
  • Windows: GameMaker\TextEditor\snippets.txt
  • -
  • macOS: /Applications/GameMaker.app/Contents/MonoBundle/TextEditor/snippets.txt
  • -
-

Code Snippets Window

-

-

-

- -
© Copyright YoYo Games Ltd. 2026 All Rights Reserved
- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Editing_Code.htm b/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Editing_Code.htm index e0a1988f9..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Editing_Code.htm +++ b/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Editing_Code.htm @@ -1,68 +0,0 @@ - - - - - - Редактирование кода - - - - - - - - - - -

Редактирование кода

-

Когда вы начинаете использовать редактор сценариев, вам нужно просто ввести код, который вы хотите иметь для актива сценария или для события, следуя правильному синтаксису GML. В процессе ввода вам будет помогать окно автозаполнения:

-

Это окно появится во время написания кода (обычно после небольшой паузы, но это можно настроить в настройках) и предложит вам выбор "наиболее подходящих" ответов в алфавитном порядке.

-

При работе с редактором кода вы можете нажать и перетащить мышь, чтобы выделить строку кода, или, удерживая нажатой кнопку , нажать и перетащить мышь, чтобы выделить столбцы кода. Все выделенное таким образом можно копировать, вырезать и вставлять с помощью стандартных сочетаний клавиш / + " C", / + "X" и / + "V".

-

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

-

Комментировать код очень просто: достаточно использовать символ "//" перед любой строкой текста или закомментировать целый абзац, используя символ "/* text here */". Есть даже две комбинации клавиш для комментирования и разкомментирования выделенных строк кода: / + "K" для комментирования и / + + "K" для отмены комментирования. На следующем изображении показан код, написанный с использованием обоих этих методов, а также некоторые комментарии JS Doc (более подробно описано ниже):

-

В сценарии также могут быть добавлены определенные комментарии в стиле JSDoc для определения свойств функций, которые они содержат, чтобы при использовании функций в коде они отображались в автозаполнении вместе с аргументами и другими деталями. Подробнее об этом вы можете узнать в разделе Комментарии сценариев JSDoc.

-

По умолчанию весь написанный код будет иметь значки сворачивания кода рядом с каждым набором подходящих скобок {}. Они имеют вид маленьких значков плюс + или минус -, нажатие на которые "сворачивает" код в соответствующие скобки так, чтобы он занимал меньше места.

-

Вы также можете вручную задать области сворачивания кода, используя специальные теги #region для маркировки участка кода. Это работает следующим образом: вы добавляете тег #region (вместе с любым текстом комментария) в верхнюю часть раздела кода, а затем добавляете соответствующий тег #endregion в нижнюю часть раздела, после чего вы можете "свернуть" код, то есть скрыть его, чтобы сократить количество строк кода, видимых в редакторе в любой момент времени:

-

Фактический код выглядит примерно так:

-

#region This is an example region
-
- width = sprite_get_width(sprite);
- height = sprite_get_height(sprite);
- xoff = sprite_get_xoffset(sprite);
- yoff = sprite_get_yoffset(sprite);
-
- #endregion Further comment here if required -

-

Как вы могли заметить, части текста сценария окрашены. Редактор сценариев "знает" о существующих объектах, встроенных переменных и функциях и т.д... и окрашивает их соответствующим цветом. Цветовое кодирование очень помогает избежать ошибок, так как вы можете сразу увидеть, если вы неправильно написали какое-то имя, или использовали ключевое слово в качестве переменной, или допустили синтаксическую ошибку. Однако если вам не нравится цветовое кодирование, в настройках вы можете включить или выключить его (вы также можете использовать F10, чтобы включить или выключить его в редакторе), а также настроить используемые цвета.

-

Вы также можете щелкнуть правой кнопкой мыши в любом месте редактора, чтобы открыть следующее меню:

-

Помимо обычных функций вырезания, копирования и вставки строк кода, у вас также есть возможность комментировать или не комментировать выделенный текст, добавлять или удалять отступы, а также разделять окно кода на 1, 2 или 3 отдельные панели (обратите внимание, что опции, относящиеся к #regions, будут недоступны, если вы не определили их в редактируемом коде).

-

Последняя опция для разделения на панели разделит фактическое окно на различные части, куда вы можете перетащить сценарий или событие и показать его рядом с другими для сравнения и редактирования.

-

Это исключительно полезно для сравнения двух скриптов или для одновременного просмотра связанных скриптов, не требуя другого окна или постоянного переключения между вкладками.

-

Другие опции в этом меню - переключение точки останова для использования с отладчиком, а также преобразование кода GML в GML Visual или наоборот. Обратите внимание, что при преобразовании кода в GML Visual не создаются отдельные действия для каждой строки кода, а используется одно действие кода для хранения всего, что было ранее в событии или сценарии.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Feather_Data_Types.htm b/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Feather_Data_Types.htm index 5e226c0bf..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Feather_Data_Types.htm +++ b/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Feather_Data_Types.htm @@ -1,272 +0,0 @@ - - - - - - Типы данных пера - - - - - - - - - - -

Типы данных пера

-

Feather использует типы данных для интеллектуальной проверки синтаксиса при написании кода, гарантируя, что вы не используете неправильный тип данных для переменной или параметра функции.

-

Он также позволяет указывать типы данных для параметров и возвращаемых значений собственных функций сценария, используя комментарии JSDoc.

-

Теги @param и @return JSDoc позволяют указать любой из следующих типов:

-

ПРИМЕЧАНИЕ Типы JSDoc не чувствительны к регистру, то есть Id.DsList и id.dslist - это одно и то же.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Базовые типыПримеры спецификаторов*Описание
РеальноН/ДДействительное число
BoolН/ДБулево значение
СтрокаН/ДСтруна
МассивПо умолчанию - Массив
- ...
Массив, может включать спецификаторы
УказательПо умолчанию - Указатель
- ...
Указатель, может включать спецификаторы
ФункцияПо умолчанию - Функция
- ...
Функция, может включать спецификаторы
СтруктураПо умолчанию - Структура
- ...
Структура, может включать спецификаторы
Id.Instance - Идентификатор экземпляра
- .DsList - Идентификатор списка DS
- .DsMap - Идентификатор карты DS
- .DsGrid - Идентификатор DS Grid
- .DsStack - Идентификатор стека DS
- .DsPriority - DS ID приоритета
- .DsQueue - Идентификатор очереди DS
- ...
Идентификатор, требует спецификаторов
Активы.GMAnimCurve - Ассет анимационной кривой
- .GMObject - Ассет объекта
- .GMAudioGroup - Идентификатор аудиогруппы
- .GMFont - Ассет шрифта
- .GMPath - Ассет контура
- .GMScript - Ассет сценария
- .GMShader - Ассет шейдера
- .GMSound - Ассет звука
- .GMTimeline - Ассет временной шкалы
- .GMRoom - Ассет комнаты
- .GMSequence - Ассет последовательности
- .GMSprite - Sprite Asset
- .GMTileSet - Ассет набора плиток
- ...
Актив, требует спецификаторов
Постоянная.Цвет - Цвет
- .Выравнивание - Константа горизонтального выравнивания
- .VAlign - Константа вертикального выравнивания
- .Cursor - Курсор Константа
- .EventType - Тип события Константа
- .EventNumber - Номер события Константа
- .PrimitiveType - Тип примитива Константа
- ...
Константа, требует спецификаторов
ЛюбойН/ДЛюбой тип данных
-

ПРИМЕЧАНИЕ * В колонке " Примеры спецификаторов " перечислены некоторые примеры спецификаторов, но не все. Например, в группах Id, Asset и Constant может быть больше возможных типов, которые здесь не перечислены.

-

Вы можете увидеть тип Any* в IDE при использовании Feather, что указывает на то, что тип идентификатора (который может быть переменной, параметром, возвращаемым значением и т.д.) не может быть определен Feather в данный момент. Когда для этого идентификатора будет добавлено больше кода, он может принять определенный тип.

-

Спецификаторы

-

Спецификатор добавляется после базового типа данных с помощью точки ., чтобы указать точный тип данных в этой группе.

-

Такие типы, как Id.DsList, Asset.GMObject и Constant.Color, используют спецификаторы.

-

Типы коллекций

-

Такие типы, как Array и Id.DsList, которые представляют собой структуры данных, содержащие несколько значений, могут указывать один тип данных для всего своего содержимого.

-

Для этого используются типы коллекций, которые добавляются к типу с помощью угловых скобок <>.

-

Например, массив, содержащий строки, будет Array<String>, а DS List, содержащий массив, содержащий Reals, будет Id.DsList<Array<Real>>.

-

Валидация типа

-

В таблице ниже показано, что произойдет, если вы передадите значение определенного типа (строки) в параметр, требующий тип данных (столбец).

-

Например, указание undefined (первая строка) для параметра, требующего строку (второй столбец), приводит к ошибке.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
НеопределенныйСтрокаРеальноBoolМассивУказательФункцияСтруктура
НеопределенныйAllowedОшибкаОшибкаОшибкаОшибкаОшибкаОшибкаОшибка
СтрокаОшибкаAllowedРазрешеноAllowedОшибкаОшибкаПредупреждениеПредупреждение
РеальноОшибкаПредупреждениеAllowedРазрешеноОшибкаОшибкаОшибкаОшибка
BoolПредупреждениеОшибкаAllowedРазрешеноОшибкаПредупреждениеПредупреждениеПредупреждение
МассивОшибкаОшибкаОшибкаОшибкаAllowedОшибкаОшибкаОшибка
УказательОшибкаОшибкаОшибкаОшибкаОшибкаAllowedОшибкаОшибка
ФункцияОшибкаОшибкаОшибкаОшибкаОшибкаОшибкаAllowedОшибка
СтруктураОшибкаОшибкаОшибкаОшибкаОшибкаОшибкаОшибкаAllowed
-

-

-
-

См. также (placeholder)

-
    -
  1. Список тем
  2. -
-
- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Feather_Features.htm b/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Feather_Features.htm index 244d842cd..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Feather_Features.htm +++ b/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Feather_Features.htm @@ -1,78 +0,0 @@ - - - - - - Особенности пера - - - - - - - - - - -

Особенности пера

-

Feather обеспечивает интеллектуальное завершение кода и улучшенную проверку синтаксиса в ваших сценариях GML Code, а также интеллектуальные опции рефакторинга.

-

На этой странице перечислены возможности, которые Feather предоставляет в редакторе кода GML для скриптов и событий объектов. Эти возможности будут доступны только в том случае, если Feather enabled.

-
-

См. также (placeholder)

-
    -
  1. Список тем
  2. -
-
-

Информация о наведении

-

Наведя курсор на функцию, sprite, цвет или любое другое специальное значение, вы увидите информацию о нем. Некоторые примеры вы можете увидеть ниже.

-
-
При наведении курсора на функцию отображается ее ручное описание и список всех аргументов.
-
-
-
При наведении курсора на sprite отображается его первый кадр и другая информация.
-
-
-
При наведении курсора на цвет отображаются его значения RGB и HSV, а также шестнадцатеричный код CSS.
-
-

Рефакторинг активов

-

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

-

Вы также можете переименовать актив через редактор кода. Установите текстовый курсор на ссылку актива и нажмите CTRL/CMD + SHIFT + R.

-

-

Введите новое имя и нажмите "Применить". Сам актив и все ссылки на него в вашем проекте будут переименованы.

-

Быстрые исправления

-

Когда в коде появляется ошибка или предупреждение, установите текстовый курсор на строку с сообщением и нажмите CTRL/CMD + Q, чтобы вызвать меню Quick Fixes. Также вы можете щелкнуть на значке Feather в водостоке.

-

Это меню показывает быстрое исправление, если это возможно, и позволяет отключить правило для этой строки или изменить его серьезность.

-

-

В примере выше показано быстрое решение, используемое для устранения события, когда цель поверхности не была сброшена после изменения.

-

При создании функции меню Quick Fix позволяет автоматически генерировать комментарии JSDoc для функции.

-

Найти все ссылки

-

Feather позволяет найти все ссылки на переменную во всем проекте.

-

Установите текстовый курсор на переменную и нажмите F3. В верхней части рабочей области появится небольшая строка поиска:

-

-

Перейдите к предыдущей или следующей ссылке, нажав соответствующую стрелку, или закройте ее.

-

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

-

Список всех ссылок

-

Установите текстовый курсор на переменную и нажмите SHIFT + F3. Это откроет окно Результаты поиска и отобразит все ссылки на выбранную переменную в виде списка.

-
-
В этом примере была выбрана переменная surf.
-
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Code_Editor_Properties/JSDoc_Script_Comments.htm b/Manual/contents/The_Asset_Editors/Code_Editor_Properties/JSDoc_Script_Comments.htm index 4e3acab03..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Code_Editor_Properties/JSDoc_Script_Comments.htm +++ b/Manual/contents/The_Asset_Editors/Code_Editor_Properties/JSDoc_Script_Comments.htm @@ -1,160 +0,0 @@ - - - - - - Комментарии к сценариям JSDoc - - - - - - - - - - -

Комментарии к сценариям JSDoc

-

Если вы хотите, чтобы ваши пользовательские функции имели функцию завершения кода и отображали необходимые аргументы определенным образом в редакторе кода, то вам необходимо добавить некоторые комментарии в стиле JSDoc. Эти комментарии используются для того, чтобы указать функции автозаполнения, как функция должна использоваться и заполняться в редакторе сценариев.

-

Формат типичного заголовка функции должен содержать имя функции, описание функции, а затем список различных аргументов (параметров), которые принимает функция, обязательно начиная каждую строку с тройного обратного слэша "///", так как это указывает GameMaker на то, что комментарий следует воспринимать в стиле JSDoc. В качестве альтернативы вы можете обернуть свои JSDoc-комментарии в /**... */, при этом /** должен располагаться на отдельной строке.

-

Самим комментариям необходимо присвоить идентификатор (перед которым ставится "@") и содержание, а доступные идентификаторы приведены ниже:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ИдентификаторСодержаниеСинтаксис
@function / @funcПолное имя функции, включая аргументы@func my_func(args)
@description / @descОбщее описание того, что делает функция@desc <Description goes>
@param / @parameter / @arg / @argumentИнформация об аргументах, с необязательным type@param {type} name <Parameter description>
@return / @returnsТип данных, которые возвращает функция@return {type} <Return description>
Толькоперо
@urlURL for the function, opens when you press F1 on the function name or use the RMB -> Go To Declaration option.@url https://...
@pureПомечает функцию как чистую@pure
@ignoreСкрывает функцию из автозаполнения Feather@ignore
@deprecatedПомечает функцию как устаревшую@deprecated
@context / @selfЗадает контекст для функции, который автозаполнение Feather использует для предоставления контекстной информации. Может быть объектом или конструктором.@self <object>
Legacy Code Editor only
@function / @funcThe full function name including arguments@func my_func(args)
-

Если вы не указали тип для ваших аргументов или возвращаемого значения, и вы используете Feather, он будет предполагать тип данных для них автоматически, основываясь на теле вашей функции.

-

См. информацию о типах данных для @param и @return в разделе Типы данных Feather.

-

Примеры

-

Чтобы получить представление о том, как это будет работать при написании собственных функций, давайте рассмотрим базовый пример:

-

function is_same_object(_id, _obj)
- {
-     if (_id.object_index == _obj)
-     {
-         return true;
-     }
-     else return false;
- }

-

Все, что делает этот сценарий, это проверяет, имеет ли экземпляр тот же object_index, что и данный объект, и вызывается просто как:

-

if is_same_object(id, obj_Player)
- {
-     instance_destroy()
- }

-

Однако, если записать это в редактор кода, вы увидите имена переменных аргументов напрямую (_id и _obj), что в большинстве случаев не очень описательно. Вы можете использовать JSDoc для определения собственных имен и описаний аргументов, а также информации для функции:

-

/// @function                is_same_object(inst_id, object_id)
- /// @description             Check if the given instance belongs to the given object.
- /// @param {Id.Instance}     inst_id    The unique instance ID value of the instance to check.
- /// @param {Asset.GMObject}  object_id  The object index to be checked against.
- /// @return {Bool}
-
- function is_same_object(_inst_id, _object_id)
- {
-     return _inst_id.object_index == _object_id;
- } -

-

Теперь при вызове этой функции в любом месте вашего проекта вы увидите новые имена аргументов, которые были введены в комментарии JSDoc:

-

На изображении выше верхняя часть показывает функцию в автозаполнении, а нижняя - как работает помощник аргумента внизу. Обратите внимание, что как необязательная часть "тип", так и обязательная часть "описание" @param по умолчанию не отображаются в коде IDE, и чтобы увидеть их, необходимо активировать опции в Предпочтениях GML.

-

При использовании Feather вы увидите подробную информацию о функции при наведении на нее курсора мыши:

-

Вы можете заключить имя аргумента в скобки [], чтобы указать, что он является необязательным. Тогда редактор кода будет ожидать любое количество аргументов между минимально необходимым и общим количеством аргументов.

-

Например, см. следующую функцию:

-

/// @function    animate_position(end_x, end_y, start_x, start_y)
- /// @desc        Animates the instance to ending point, from optional starting point
- /// @arg end_x
- /// @arg end_y
- /// @arg [start_x]
- /// @arg [start_y]
-
- function animate_position (x1, y1, x2, y2)
- {
-     // Function code
- } -

-

Аргументы start_x и start_y помечены как необязательные, что означает, что редактор кода теперь будет ожидать от 2 до 4 аргументов, как видно из предупреждающего сообщения:

-

JSDoc Example

-

ПРИМЕЧАНИЕ Вы получите такое же поведение, если будете использовать необязательные аргументы в объявлении функции. Дополнительные сведения см. в разделе Функции сценария.

-

Поскольку скрипты могут содержать несколько функций, вы можете добавить комментарии JSDoc для каждой из них перед ее объявлением:

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Extension_Creation/Android_Extensions.htm b/Manual/contents/The_Asset_Editors/Extension_Creation/Android_Extensions.htm index 59d9c8702..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Extension_Creation/Android_Extensions.htm +++ b/Manual/contents/The_Asset_Editors/Extension_Creation/Android_Extensions.htm @@ -1,120 +0,0 @@ - - - - - - Расширения для Android - - - - - - - - - - -

Расширения для Android

-

Чтобы создать расширение для Android, необходимо сделать это в двух частях. Первая часть заключается в добавлении самого расширения вместе с необходимыми файлами, а вторая - в создании функций и макросов/констант, которые требуются расширению.

-

Функции и константы добавляются с помощью файлов-заместителей , чтобы сгруппировать их вместе, поэтому вы добавляете файл-заместитель, а затем определяете функции и макросы, как описано в предыдущем разделе. Чтобы добавить остальные файлы, необходимо сначала установить флажок Android в разделе Extra Platforms редактора, что откроет свойства расширения Android:

-

Android Editor

-

Здесь вы можете указать следующие данные:

-
    -
  • Имя класса: Ваше расширение может иметь несколько классов, причем каждый класс будет иметь свои собственные функции и константы, поэтому вы должны дать ему имя, отражающее его назначение.
  • -
  • Разрешения Android: Здесь вы можете добавить любые дополнительные разрешения, которые требуются вашему расширению. То, какими будут эти разрешения, полностью зависит от использования расширения, поэтому вам следует ознакомиться с документацией, предоставленной Google для платформы Android, или, если вы используете сторонний SDK, с документацией, которая поставляется вместе с SDK. Чтобы добавить новое разрешение, нужно нажать на кнопку , чтобы добавить временное разрешение, а затем дважды щелкнуть на нем , чтобы изменить его на требуемое. Удалить разрешения можно с помощью кнопки .
  • -
  • Инъекция кода: Здесь вы можете добавить любой код, который будет внедрен (добавлен) в ваше приложение Android, когда ваша игра будет собрана для тестирования или финального релиза. Убедитесь, что вы тщательно проверили эти параметры (и ваши разрешения) перед отправкой игр в магазин, так как неправильные настройки приведут к тому, что ваша игра не будет отправлена. Дополнительную информацию см. в разделе ниже.
  • -
-

Инъекция кода

-

Любой код, введенный в окно "Code Injection", необходимо разделить на отдельные группы XML, как показано на скриншоте выше. Тег XML, который вы используете для группы, будет определять, где код будет внедрен в ваше приложение.

-

Для создания групп инъекций кода можно использовать следующий синтаксис:

-

<YYTagName>
-
- // Code to inject
-
- </YYTagName> -

-

Для платформы Android доступны следующие теги:

-

YYAndroidTopLevelGradle
- YYAndroidTopLevelGradleBuildscript
- YYAndroidTopLevelGradleBuildscriptRepositories
- YYAndroidTopLevelGradleBuildscriptDependencies
- YYAndroidTopLevelGradleAllprojects
- YYAndroidTopLevelGradleAllprojectsRepositories
- YYAndroidTopLevelGradleEnd
-
- YYAndroidGradle
- YYAndroidGradleEnd
- YYAndroidGradleAndroid
- YYAndroidGradleDependencies 
- YYAndroidGradleProperties
- YYAndroidBuildTypesRelease
- YYAndroidManifestAttributes
- YYAndroidManifestApplicationAttributes
- YYAndroidManifestActivityAttributes
- YYAndroidManifestManifestInject
- YYAndroidManifestActivityInject
- YYAndroidManifestApplicationInject
- YYAndroidStringValuesInjection
- YYAndroidLayout
- YYAndroidProguard -

-

Место выполнения, куда внедряется код, зависит от типа тега:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип тегаПуть инъекции
Верхний уровень Gradle{RUNTIME}\android\runner\RootFiles\build.gradle
Уровень модуля Gradle{RUNTIME}\android\runner\ProjectFiles\build.gradle
Манифест Android{RUNTIME}\android\runner\ProjectFiles\src\main\AndroidManifest.xml
Струны{RUNTIME}\android\runner\ProjectFiles\src\main\res\values\strings.xml
Макет{RUNTIME}\android\runner\ProjectFiles\src\main\res\layout\main.xml
ProGuard{RUNTIME}\android\runner\ProjectFiles\proguard-rules.pro
-

ПРИМЕЧАНИЕ Эти пути указаны только для VM; для YYC внедряемый код будет находиться в каталоге {RUNTIME}\yyc\, где пути могут быть эквивалентны или не эквивалентны путям для VM.

-

Исходные файлы

-

После того как вы все правильно настроите, вам нужно будет добавить файлы, необходимые для работы вашего пакета расширения. Для этого вам нужно нажать на кнопки внизу, Add SDK или Add Source, а затем перейти к файлам, которые вы хотите добавить. Добавленные файлы будут сохранены в каталоге AndroidSource вместе с вашим расширением. Вы можете открыть это место в любое время, щелкнув правой кнопкой мыши на расширении и выбрав Open in Explorer.

-

Информацию о создании собственных расширений для Android см. в разделе Примеры исходных текстов.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Extension_Creation/Creating_An_Extension.htm b/Manual/contents/The_Asset_Editors/Extension_Creation/Creating_An_Extension.htm index 35954334d..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Extension_Creation/Creating_An_Extension.htm +++ b/Manual/contents/The_Asset_Editors/Extension_Creation/Creating_An_Extension.htm @@ -1,196 +0,0 @@ - - - - - - Создание расширения - - - - - - - - - - -

Создание расширения

-

Чтобы создать расширение, сначала нужно щелкнуть правой кнопкой мыши в любом месте браузера активов и выбрать Создать -> Расширение. Это откроет свойства расширения для только что созданного актива в рабочей области:

-

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

-

Теперь все готово для добавления необходимых файлов и функций. Здесь же вы можете дать расширению имя (следуя обычному соглашению: только буквы/цифры и никаких специальных символов, кроме знака подчеркивания "_"). При желании вы можете задать номер версии расширения.

-

В разделе "Copies To" вы можете выбрать платформы, на которые будет экспортировано данное расширение. Для простого расширения GML вам не нужно беспокоиться об этом, так как оно будет работать на всех платформах, однако если вы создаете расширение для конкретной платформы (например, для Android), вам нужно убедиться, что оно не экспортируется на несовместимые платформы (например, iOS, консоли и т.д.).

-

Файлы-заполнители

-

Чтобы добавить файл в новое расширение, нужно щелкнуть значок меню и выбрать либо файл-местодержатель ("Add Placeholder"), либо импортировать фактический файл, необходимый для целевой платформы ("Add File"):

-

RMB Icon

-

Общий" файл-заполнитель - это файл, который может быть любого типа, кроме тех, которые требуются для конкретных платформ (например, никаких файлов DLL или SO ), и он не будет использоваться, кроме как в качестве файла "компоновщика" для подключения набора функций или констант с данным расширением (как правило, он предназначен только для использования с расширениями iOS и Android, что объясняется в разделах ниже для этих целей). Вы также можете добавить файлы-заполнители "GML" и "JS" для более специфического использования.

-

Добавление файлов

-

Обычно вам не нужно использовать заполнители, если вы не собираете для iOS и Android, поэтому вы выбираете опцию "Add File", чтобы добавить любой из следующих файлов в зависимости от целевой платформы, для которой они предназначены:

-
    -
  • .gml: Это файл, созданный только с помощью GameMaker Language и совместимый со всеми платформами.
  • -
  • .js: Это формат расширения JavaScript и совместим только с HTML5.
  • -
  • .dll: Это формат расширения динамически подключаемой библиотеки, совместимый только с целями Windows, UWP и Xbox (для каждой цели потребуется свой файл *.dll, совместимый с ее спецификациями).
  • -
  • .dylib: Это эквивалент DLL для Mac и совместим только с Mac target (не iOS).
  • -
  • .so: Это Linux эквивалент DLL и совместим только с целью Ubuntu (Linux).
  • -
  • .prx: Это формат файла для добавления функциональности к цели PlayStation (для каждой цели потребуется свой файл *.prx, совместимый с ее спецификациями).
  • -
-

Вы заметите, что здесь нет типа файла для Android или iOS, потому что их настройка немного отличается. Далее вы найдете объяснения, как их настроить, но сначала давайте рассмотрим создание общего расширения GML для любой из целевых платформ, поскольку процесс для всех них одинаков.

-

Создание расширения GML

-

Для начала необходимо создать файл, который будет использоваться. Для расширения GML это будет текстовый файл (сохраненный с расширением .gml ), который будет иметь следующий формат:

-

#define c_alice_blue
- return make_color_rgb(240,248,255);
-
-
- #define instance_create_colour
- var i = instance_create_layer(argument0, argument1, argument2, argument3);
- with (i)
- {
-     image_blend = argument3;
- }
- return i; -

-

Как видите, мы начинаем каждый раздел с вызова #define, который в приведенном выше примере используется для определения двух функций. Давайте рассмотрим каждую часть определяемой функции:

-
    -
  • Оператор #define используется для определения новой функции с заданным именем;
  • -
  • За этим утверждением следует код функции, который использует переменные argument0, argument1 и т.д. для доступа к аргументам, переданным в функцию при ее вызове;
  • -
  • В конце у нас есть return который используется для возврата данных из расширения обратно в код GML, где была вызвана функция.
  • -
-

Если бы вы писали расширение DLL или JavaScript, то процесс был бы аналогичным, но на языке, соответствующем формату файла расширения.

-

После этого необходимо добавить файл в расширение (с помощью опции "Добавить файл"), что вызовет новое окно в Свойствах расширений для Свойств файла:

-

Extension Properties

-

Здесь вы можете выбрать целевую платформу для расширения (для GML вы можете выбрать их все), а также переименовать файл расширения и задать несколько других деталей, которые мы рассмотрим чуть позже.

-

ПРИМЕЧАНИЕ: Добавление файла в расширение копирует его в каталог проекта, что означает, что любые дальнейшие изменения должны быть внесены в эту копию, чтобы они были видны в игре. Вы можете найти копию, щелкнув правой кнопкой мыши на расширении в браузере активов и выбрав "Открыть в проводнике".

-

Добавление функций

-

Редактор должен автоматически заполниться функциями, включенными в наш файл GML, но если это не так, то вы можете добавить их вручную, нажав на кнопку меню функций и выбрав то, что вам нужно:

-

Estension Options Icon

-

Выбор пункта "Добавить функцию" позволит вам добавить в расширение функцию, которая затем может быть вызвана в GameMaker так же, как и любая из встроенных функций. После добавления функции откроется следующее окно для определения свойств функции (или вы можете дважды щелкнуть на функции, чтобы открыть ее):

-

Add Files To An Extension

-

На рисунке выше мы заполнили редактор функций деталями для функции instance_create_colour(), которую мы определили в нашем файле расширения GML (обратите внимание, что это окно редактора функций предназначено не только для определения функций GML - оно будет одинаковым для всех типов расширений). Давайте рассмотрим каждый параметр, который может быть определен для функции:

-
    -
  • Вы можете видеть, что мы задали функции имя, которое вы будете использовать при вызове функции в вашем проекте; обратите внимание, что это имя не обязательно должно совпадать с именем, используемым в расширении - вы можете назвать ее как угодно, а затем использовать поле External Name для связи с реальным именем, определенным в расширении:
  • -
  • Ниже находится раздел для определения текста справки - текста, который будет отображаться во всплывающем окне завершения кода и вспомогательном тексте в нижней части редактора кода.
  • -
  • Далее вы можете определить тип возврата, который может быть двойным (вещественное число с плавающей точкой ) или строкой; если внешняя функция ничего не возвращает, то это не имеет значения.
  • -
  • Под ним вы определяете аргументы, которые будет принимать функция. Эти аргументы могут быть двойными или строками, и вы можете добавить их, нажав кнопку add , и удалить, нажав кнопку remove .
    -
    - Если ваша функция может принимать переменное количество аргументов (то есть у нее есть необязательные аргументы), вам следует установить флажок "Аргументы переменной длины" внизу. -
  • -
-

ПРИМЕЧАНИЕ: Если функция является частью встроенного расширения для Windows, Mac или Ubuntu (dll, dylib или so соответственно) и имеет более четырех аргументов, все аргументы должны быть одного типа.

-

После этого функция готова к использованию в проекте; теперь она будет отображаться в автозаполнении и будет выделена цветом:

-

Определенные функции можно также установить как начальные (Init Functions ) или конечные (Final Functions), что означает, что они будут вызываться автоматически при начале игры (Init) и при завершении игры (Final).

-

ВАЖНО! Все платформы поддерживают вызов функции Init, но не все платформы будут выполнять вызов функции Final. Это связано с тем, что некоторые платформы просто закрывают приложение, не давая никакого уведомления или времени для вызова этой функции. В основном это касается таких платформ, как iOS, Android, HTML5, PlayStation и Xbox.

-

Макросы

-

Другой вариант - создать макрос. Макрос может быть как постоянным значением, так и коротким фрагментом кода (более подробную информацию о макросах можно найти здесь). Например, мы можем удалить функцию c_alice_blue из нашего ранее определенного расширения GML и сделать ее макросом. Чтобы создать макрос, можно просто нажать на кнопку "Макросы" в Свойствах расширения, в результате чего откроется следующее окно:

-

File Property Window

-

Редактор здесь практически ничего не объясняет: вы указываете имя макроса и его постоянное значение или короткую строку кода. Обратите внимание, что если макрос представляет собой строку кода, она будет оцениваться каждый раз при вызове макроса.

-

Создание опций расширения

-

Нажмите на значок шестеренки рядом с "Параметры расширений", чтобы создать или изменить параметры для ваших расширений:

-

После нажатия кнопки "Да" на запрос подтверждения вы увидите новое окно, в котором можно добавить новые параметры расширения:

-

Каждому параметру расширения можно присвоить имя, значение по умолчанию и тип данных. Имя - это то, что вы будете использовать внутри кода расширения для получения значения опции.

-

Помимо добавления опций с помощью "Add Option", вы можете добавлять разделы с помощью "Add Section". Раздел - это не опция, а только заголовок, отображаемый в главном окне редактора расширений. Используйте эту функцию, если у вас много опций и вы хотите очистить список опций, который видит конечный пользователь.

-

Можно создать следующие типы опций:

-
    -
  • Булево: Создает флажок "истина/ложь".
  • -
  • Число: Это действительное число.
  • -
  • Строка: Это текстовая строка.
  • -
  • FilePath: Это путь к файлу. Он позволяет вам использовать проводник вашей ОС для поиска файла.
  • -
  • FolderPath: Это путь к папке/каталогу. Он позволяет вам использовать проводник вашей ОС для поиска папки.
  • -
  • Список: Это выпадающий список, из которого можно выбрать один элемент из заранее определенного списка элементов.
  • -
-

Вы также можете щелкнуть на значке рядом с опцией, чтобы дать ей дополнительное отображаемое имя и описание (которое появляется в виде всплывающей подсказки при наведении на отображаемое имя).

-

В окне дополнительных возможностей вы также можете выбрать экспорт этой опции в файл options.ini, поставляемый вместе с игрой.

-

Наконец, вы можете скрыть опцию из редактора, сделав ее невидимой для конечного пользователя, использующего расширение.

-

Использование опций расширения

-

Вы можете получить значения опций расширения во время выполнения с помощью функций расширения.

-

Вы также можете получить опции расширения в пакетных файлах / скриптах компилятора, используя имя YYEXTOPT_<ExtensionName>_<OptionName>.

-

Опции расширения будут доступны во время выполнения, только если расширение имеет функции, которые используются во время выполнения. Однако опции всегда будут экспортироваться в INI-файл (если опция включена) и пакетные сценарии независимо от использования расширения.

-

Прокси-файлы

-

При работе с несколькими целевыми платформами стоит отметить, что вы можете создать одно расширение с одним набором функций/макросов, которое будет работать на всех платформах. Это достигается путем добавления только одной из библиотек ссылок в вашу игру в качестве расширения и размещения другой(их) в списке Proxy Files в окне Extension Properties.

-

Например, допустим, у вас есть расширение Windows с расширением dll "Haggis.dll". Вы просто скопируете этот dll как Mac DyLib, назвав его "libHaggis.dylib" и убедившись, что имена внутренних функций совпадают с именами исходного Windows dll. Этот DyLib затем добавляется в файлы прокси и устанавливается на экспорт при запуске игры на Mac, и GameMaker автоматически использует его при вызове функций расширения.

-

Чтобы добавить прокси-файл, достаточно нажать кнопку в окне свойств выбранного файла ресурсов и перейти к расположению файла. После его добавления вам может понадобиться обновить цели расширения, чтобы добавить соответствующий модуль, и при следующем запуске вашей игры он будет включен в качестве прокси для этой платформы. Вы также можете удалить прокси-файлы, нажав на кнопку , которая удалит выбранный прокси-файл.

-

После добавления прокси-файлов они будут скопированы в папку Extensions вашего проекта (вы можете найти их, щелкнув правой кнопкой мыши на расширении и выбрав Open in Explorer), поэтому, если вам нужно их отредактировать, вы должны редактировать скопированные файлы, которые идут в комплекте с игрой, а не исходный файл, который был импортирован, так как GameMaker будет использовать те, которые находятся в проекте для компиляции.

-

Соглашения об именовании

-

Очень важно, чтобы ваши прокси-файлы соответствовали приведенным ниже соглашениям об именовании, поскольку GameMaker будет анализировать эти имена и назначать целевой модуль для файла в соответствии с его расширением и именем, а также автоматически связывать файлы для вас. Если вы не будете следовать этим соглашениям, ваша игра может не работать во время выполнения, поскольку GameMaker не сможет определить, какой файл использовать, и не загрузит его должным образом.

-

Ниже приведены соглашения об именовании для каждой целевой платформы:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПлатформаИмена
Windows 32bit Runtime<Name>.dll, lib<Name>.dll
Windows 64bit Runtime<Name>_x64.dll, lib<Name>_x64.dll
UWP<Name>.dll, <Name>_win8_x86.dll, <Name>_win8_arm.dll, lib<Name>_win8_x86.dll, lib<Name>_win8_arm.dll
Ubuntu (Linux)<Name>.so, lib<Name>.so,
- <Name>_linux.so, lib<Name>_linux.so,
-
- <Name>_arm.so, lib<Name>_arm.so,
- lib<Name>_linux_arm.so,
-
- <Имя>_arm64.so, lib<Имя>_arm64.so, lib<Имя>_linux_arm64.so,
-
- <Имя>_arm64-v8.so,
- lib<Имя>_arm64-v8.so, lib<Имя>_linux_arm64-v8.so,
-
- <Name>_armeabi-v7a.so, lib<Name>_armeabi-v7a.so, lib<Name>_linux_armeabi-v7a.so
macOS<Name>.dylib, lib<Name>.dylib
HTML5, GX.games<Name>.js
PS4<Name>.prx, lib<Name>.prx, <Name>_ps4.prx, lib<Name>_ps4.prx
PS5<Name>.prx, lib<Name>.prx, <Name>_ps5.prx, lib<Name>_ps5.prx
Xbox One<Name>.dll, <Имя>_xboxone.dll
Xbox Series X|S<Name>.dll, <Имя>_xboxseriesxs.dll
-

Используя вышеприведенные соглашения, вы замените часть <Name> на имя базового файла, для которого вы добавляете прокси-файлы.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Extension_Creation/Extended_Examples.htm b/Manual/contents/The_Asset_Editors/Extension_Creation/Extended_Examples.htm index 90b5884e4..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Extension_Creation/Extended_Examples.htm +++ b/Manual/contents/The_Asset_Editors/Extension_Creation/Extended_Examples.htm @@ -1,133 +0,0 @@ - - - - - - Примеры источников - - - - - - - - - - -

Примеры источников

-

Эта страница содержит примеры и информацию об исходном коде расширений для Android и iOS, чтобы помочь вам создать собственные нативные расширения для этих платформ.

-

Android (базовый пример)

-
-

Наш пример расширения для Android будет содержать функции, выполняющие следующие действия:

-
    -
  • Возвращает два числа, сложенные вместе
  • -
  • Возвращает строку, состоящую из входной строки и значения
  • -
  • Возвращает строку, состоящую из двух входных строк
  • -
  • Запуск события Async - Social и заполнение значений в его карте async_load.
  • -
-

Это расширение будет использовать файл .java, содержимое которого приведено ниже (нажмите, чтобы открыть):

-

GenericTest.java

-

Чтобы добавить такой файл в ваше расширение, вам нужно зайти в его свойства Android и сначала ввести имя класса (в данном примере "GenericTest"), затем нажать на "Add Source" и выбрать файл .java. Это добавит выбранный файл в каталог вашего проекта - вы можете щелкнуть правой кнопкой мыши на вашем расширении, выбрать "Открыть в проводнике" и увидеть там исходные файлы.

-

Теперь вы можете добавить новый файл-заполнитель в ваше расширение и создать внутри него функции со следующими свойствами:

-
    -
  • функция / внешнее имя: AddTwoNumbers
    - помощь: AddTwoNumbers(value1, value2)
    - аргументы: double, double
    - тип возврата: double -
  • -
  • функция / внешнее имя: HowManyObjects
    - помощь: HowManyObjects(value1, value2, string)
    - аргументы: double, double, string
    - тип возврата: string -
  • -
  • функция / внешнее имя: BuildAString
    - помощь: BuildAString(string1, string2)
    - аргументы: string, string
    - тип возврата: string -
  • -
  • функция / внешнее имя: ReturnAsync
    - помощь: ReturnAsync(value1, value2)
    - аргументы: double, double
    - тип возврата: double -
  • -
-

Вот пример функции AddTwoNumbers():

-

Теперь вы можете вызывать эти функции из кода вашей игры и использовать их как любую другую встроенную функцию:

-

var result1 = string(AddTwoNumbers(irandom(100), 50));
- var result2 = BuildAString("Hello", "World");
- var result3 = HowManyObjects(irandom(1000), irandom(1000), "Targets");
- ReturnAsync(irandom(1000), irandom(1000));

-

Функция ReturnAsync() вызовет событие Async - Social, поэтому вам нужно будет добавить это событие в ваш объект и прочитать данные из его карты async_load (которая заполняется исходным кодом расширения, приведенным выше).

-

var type = async_load[? "type"];
-
- if (type == "finished")
- {
-     var result4 = "value1: " + string(async_load[? "argument0"]) + ", ";
-     result4 += "value2: " + string(async_load[? "argument1"]);
- } -

-

-
-

iOS (базовый пример)

-
-

Пример, приведенный для iOS, такой же, как и пример Android, приведенный выше; отличаются только исходные файлы, которые мы рассмотрим в этом разделе.

-

Расширения iOS используют файлы .h и .mm, содержимое которых приведено ниже (нажмите, чтобы открыть):

-

GenericTest iOS Исходные файлы

-

Чтобы добавить эти файлы в ваше расширение, сначала нужно зайти в его свойства iOS и ввести имя класса (в данном примере "GenericTest"). Затем вы можете использовать либо опцию "Enter framework path" (если файлы присутствуют на вашей машине macOS, используемой для сборки), либо опцию "Add Source" (если они находятся на вашей машине разработки); независимо от того, какой вариант вы используете, вам нужно будет указать их на каталог, содержащий ваши файлы .h и .mm.

-

Вы можете добавить эти исходные файлы в то же расширение, которое было создано в предыдущем разделе для Android, что означает, что любые функции, уже определенные в этом расширении, теперь будут работать и на iOS (учитывая, что внешние имена всех функций на Android и iOS одинаковы). Если вы создаете новое расширение, вы можете просто создать функции таким же образом, как описано ранее.

-

-
-

Android (обратные вызовы)

-
-

Вы можете использовать следующие функции обратного вызова в своих файлах расширения .java:

-

public void onStart()
public void onRestart()
public void onStop()
public void onDestroy()
public void onPause()
public void onResume()
public void onActivityResult(int requestCode, int resultCode, Intent data)
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults)
public void onNewIntent(android.content.Intent newIntent)
public void onWindowFocusChanged(boolean hasFocus)
public void onConfigurationChanged(Configuration newConfig)

-


-
-

iOS (обратные вызовы)

-
-

Вы можете использовать следующие функции обратного вызова в своих файлах расширения .mm:

-

-(void) Init
- -(void) onLaunch:(NSDictionary*)launchOptions
- -(void) onResume
- -(void) onPause
- -(void) applicationDidEnterBackground:(UIApplication *)application
- -(void) applicationWillEnterForeground:(UIApplication *)application
- -(void) onStop
- -(void) applicationProtectedDataDidBecomeAvailable:(UIApplication *)application
- -(void) applicationProtectedDataWillBecomeUnavailable:(UIApplication *)application
- -(void) applicationDidReceiveMemoryWarning:(UIApplication *)application
- -(void) applicationSignificantTimeChange:(UIApplication *)application
- -(void) application:(UIApplication *)application willEncodeRestorableStateWithCoder:(NSCoder *)coder
- -(void) application:(UIApplication *)application didDecodeRestorableStateWithCoder:(NSCoder *)coder
- -(void) application:(UIApplication *)application didUpdateUserActivity:(NSUserActivity *)userActivity
- -(void) application:(UIApplication *)application didFailToContinueUserActivityWithType:(NSString *)userActivityType error:(NSError *)error
- -(void) application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *replyInfo))reply
- -(void) applicationShouldRequestHealthAuthorization:(UIApplication *)application
- -(void) openURL:(NSURL *)url sourceApplication:(NSString *) sourceApplication annotation:(id)annotation
- -(void) application:(UIApplication *)application userDidAcceptCloudKitShareWithMetadata:(CKShareMetadata *)cloudKitShareMetadata

-

-
-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Extension_Creation/iOS_Extensions.htm b/Manual/contents/The_Asset_Editors/Extension_Creation/iOS_Extensions.htm index c3ccdca0e..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Extension_Creation/iOS_Extensions.htm +++ b/Manual/contents/The_Asset_Editors/Extension_Creation/iOS_Extensions.htm @@ -1,161 +0,0 @@ - - - - - - Расширения для iOS / tvOS - - - - - - - - - - -

Расширения для iOS / tvOS

-

Чтобы создать расширение для iOS или tvOS, необходимо сделать это в двух частях. Первая часть заключается в добавлении самого расширения вместе с необходимыми файлами, а вторая - в создании функций и макросов/констант, которые требуются расширению.

-

Функции и константы добавляются с помощью файлов-заместителей , чтобы сгруппировать их вместе, поэтому вы добавляете файл-заместитель, а затем определяете функции и макросы, как описано в данном разделе. Чтобы добавить остальные файлы, необходимо сначала установить флажок iOS и/или tvOS в разделе " Дополнительные возможности" редактора, чтобы открыть соответствующее окно свойств расширения (на рисунке ниже показано окно свойств iOS, но окно tvOS точно такое же):

-

iOS Editor

-

Здесь вы можете указать следующие данные:

-
    -
  • Флаги компилятора / флаги компоновщика: Некоторые фреймворки и сторонние SDK требуют для работы добавления дополнительных флагов компоновщика и флагов компилятора, которые можно указать здесь (подробности см. в документации, прилагаемой к SDK или фреймворку).
  • -
  • Имя класса: Ваше расширение может иметь несколько классов, причем каждый класс будет иметь свои собственные функции и константы, поэтому вы должны дать ему имя, отражающее его назначение.
  • -
  • App Delegate Class Name: Имя вашего пользовательского класса делегата приложения. Установка этого параметра позволяет расширению переопределять/расширять основные функции приложения. Чтобы использовать эту функцию, вам нужно сделать следующее: -
      -
    1. Убедитесь, что исходные файлы делегата имеют то же имя, что и класс делегата (например, @interface MyCustomAppDelegate должен быть определен в " MyCustomAppDelegate.h").
    2. -
    3. Добавьте переменную окружения ${YYExtAppDelegateIncludes} в верхнюю часть заголовочного файла делегата вашего приложения. Она будет заменена во время компиляции соответствующими включаемыми файлами для родительского класса делегата.
    4. -
    5. Используйте переменную окружения ${YYExtAppDelegateBaseClass} в качестве базового класса для вашего пользовательского делегата приложения. Она будет заменена во время компиляции на правильный базовый класс делегата.
      -
      - Чтобы ваше расширение работало с другими расширениями, использующими пользовательские делегаты приложений, вы должны вызывать любые методы базового класса из переопределенных методов вашего дочернего класса. Перед вызовом метода суперкласса необходимо убедиться, что он реализован в иерархии классов, чтобы избежать ошибок, например: -
    6. -
    -

    - (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    - {
    -     // Check if any superclasses implement this method and call it
    -     if([[self superclass] instancesRespondToSelector:@selector(application:willFinishLaunchingWithOptions:)])
    -       return [super application:application willFinishLaunchingWithOptions:launchOptions];
    -     else
    -         return TRUE;
    - }

    -
  • -
  • Системные фреймворки: Здесь вы можете добавить любые iOS системные фреймворкив ваше расширение. Они добавляются нажатием кнопки , которая добавит фреймворк, который затем можно отредактировать, дважды щелкнув на нем . Вы можете узнать больше о доступных системных фреймворках здесь. Чтобы удалить системный фреймворк, просто выберите его и нажмите кнопку .
    -
    - Вы можете установить флажок для фреймворка, чтобы отметить его как "Weak Reference". Это добавит его в раздел "Build Phases -> Link Binary with Libraries" на сайте Xcode как "Optional" фреймворк, в отличие от "Required" фреймворка (который используется по умолчанию). -
  • -
  • Сторонние фреймворки + комплекты: Этот раздел предназначен для добавления сторонних фреймворков и пакетов SDK. Как и в случае с системными фреймворками, для их добавления нажмите кнопку , а для редактирования дважды щелкните , а выделив их и нажав , удалите их (см. документацию, прилагаемую к выбранному вами SDK, для получения информации о названии фреймворка).
    -
    - Здесь вы можете выбрать: не встраивать фреймворк, встраивать и подписывать его или встраивать его без подписи:
    - Это отражает ту же опцию для фреймворка, добавленного в разделе "Фреймворки, библиотеки и встроенное содержимое" на Xcode. -
  • -
  • Введите путь к фреймворку на Mac: Если вы хотите добавить фреймворк в расширение, файлы которого присутствуют на Mac, используемом для сборки вашего проекта, вы можете ввести путь к этому фреймворку (на машине сборки) в это поле, а затем нажать кнопку , чтобы добавить его.
    -
    - Путь должен указывать на файл .framework, который будет сжат как .zip и помещен в папку iOSSourceFromMac в каталоге расширения; вы можете легко открыть его в любое время, щелкнув правой кнопкой мыши на расширении и выбрав Open in Explorer. -
  • -
  • Добавить источник: Вы можете использовать этот пункт для добавления исходных файлов, необходимых для работы вашего расширения. Добавленные файлы будут храниться в папке iOSSource в каталоге вашего расширения.
  • -
  • Инъекция кода: Здесь вы можете добавить любой код, который будет внедрен (добавлен) в ваше приложение iOS, когда ваша игра будет собрана для тестирования или финального релиза. Убедитесь, что вы тщательно проверили этот параметр (и ваши разрешения) перед отправкой игр в магазин, так как неправильные настройки приведут к тому, что ваша игра не будет отправлена.
  • -
-

Инъекция кода

-

Code Injection можно использовать для расширений iOS/tvOS таким же образом, как описано на странице Android Extensions: см. Code Injection.

-

Следующие теги доступны для платформ iOS и tvOS:

-

YYIosPlist
- YYIosEntitlements
- YYIosCocoaPods
- YYIosCocoaPodsDependencies
- YYIosBuildRules
- YYIosBuildSettingsInjection
- YYIosScriptPhase
- YYIosCFBundleURLSchemesArray
- YYIosLSApplicationQueriesSchemesArray
- YYIosPrivacyManifest
- YYIosLaunchActionCommandLineArguments
- YYIosBridgeHeader
-
- YYTvosPlist
- YYTvosEntitlements
- YYTvosCocoaPods
- YYTvosCocoaPodsDependencies
- YYTvosBuildRules
- YYTvosBuildSettingsInjection
- YYTvosScriptPhase
- YYTvosCFBundleURLSchemesArray
- YYTvosLSApplicationQueriesSchemesArray
- YYTvosPrivacyManifest -

-

Место выполнения, куда внедряется код, зависит от типа тега:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Тип тегаПуть инъекции
Выплаты{RUNTIME}\ios\TemplateProject\${YYXCodeProjName}\
- ${YYXCodeProjName}.entitlements -
info.plist{RUNTIME}\ios\TemplateProject\${YYXCodeProjName}\
- Вспомогательные файлы\${YYXCodeProjName}-Info.plist
infoPlist.strings{RUNTIME}\ios\TemplateProject\${YYXCodeProjName}\
- en.lproj\InfoPlist.strings
project.pbxproj{RUNTIME}\ios\TemplateProject\${YYXCodeProjName}.xcodeproj\
- project.pbxproj
xcscheme{RUNTIME}\ios\TemplateProject\${YYXCodeProjName}.xcodeproj\
- xcshareddata\xcschemes\${YYXCodeProjName}.xcscheme
PrivacyManifest{RUNTIME}\ios\TemplateProject\${YYXCodeProjName}\Supporting Files\PrivacyInfo.xcprivacy
Bridging Header{RUNTIME}\ios\TemplateProject\${YYXCodeProjName}\Supporting Files\Bridging-Header.h
-

ПРИМЕЧАНИЕ Эти пути указаны только для VM. Для YYC инжектированный код будет находиться в каталоге {RUNTIME}\yyc\, где пути могут быть эквивалентны или не эквивалентны путям для VM.

-

Обратите внимание, что для iOS и tvOS существует опция Game Option для добавления файла Podfile.lock в GameMaker, который необходим, если вы добавляете CocoaPods Dependencies в этом разделе.

-

Дополнительная информация

-

Если в ваше расширение были добавлены какие-либо системные или сторонние фреймворки, они теперь будут перечислены в окне свойств расширения , и для каждого из них будет установлен флажок. Если вы отметите флажок, вы включите слабую связь, что будет полезно, если вам понадобится "переопределить" какой-либо символ из включенной библиотеки своим собственным значением, но следует отметить, что это замедлит процесс связывания.

-

Информацию о создании собственных расширений для iOS смотрите в разделе Примеры исходных текстов; а информацию об использовании CocoaPods в расширениях смотрите в следующем руководстве:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Extensions.htm b/Manual/contents/The_Asset_Editors/Extensions.htm index 45087d529..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Extensions.htm +++ b/Manual/contents/The_Asset_Editors/Extensions.htm @@ -1,103 +0,0 @@ - - - - - - Расширения - - - - - - - - - - -

Редактор расширений

-

Пакет расширения можно использовать для добавления ряда дополнительных функций и констант в GameMaker Language (GML) и легкого переноса их между проектами. Функции расширения также могут быть связаны с внешними SDK или исходным кодом, написанным на других языках (например, Java для Android, Objective-C для iOS, и т.д.), которые могут быть использованы для расширения функциональности вашей игры (обычно используются для реализации API сторонних разработчиков, например, для рекламы, покупок внутри приложения и т.д.).

-

Extensions Properties

-

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

-

Пошаговый пример создания расширения см. в разделе: Создание расширения

-

Чтобы отключить расширения в зависимости от целевой платформы, см: Как отключить расширения?

-

Импорт расширений

-

Обычно расширения сторонних производителей поставляются из GameMaker Marketplace, и те, на которые вы подписались, будут перечислены в окне Marketplace Library, откуда их можно установить. Если вы не получили пакет расширения с сайта Marketplace, вы все равно можете добавить его в проект, щелкнув правой кнопкой мыши в любом месте браузера ассетов и выбрав пункт Add Existing, а затем перейдя к местоположению расширения, чтобы выбрать его.

-

ПРИМЕЧАНИЕ Если у вас есть пакет .yymps/.yymp/.gmez, вы можете перетащить его в IDE, чтобы импортировать его, или зайдите в меню "Инструменты" и выберите "Импорт локального пакета".

-

Целевые платформы

-

После добавления расширения в Asset Browser необходимо дать ему имя и номер версии, а также указать, на какие платформы вы хотите его экспортировать. Сняв флажок с выбранных платформ, вы можете указать GameMaker не экспортировать расширение как часть исполняемого файла для этих платформ. Также необходимо убедиться, что свойства расширения соответствуют выбранной целевой платформе (платформам), и выбрать совместимые цели экспорта для файлов расширения, основываясь на следующем:

-
    -
  • Все цели: расширения GML. Это расширения, созданные с использованием GameMaker Language (GML) и совместимые со всеми целевыми платформами. (Обратите внимание, что это единственный тип расширений, который в настоящее время поддерживает цель Opera GX.)
  • -
  • Windows (Standard, UWP, Xbox): Вы можете использовать файлы Windows DLL (Dynamic Link Libraries). Обратите внимание, что если вы отметили опцию "Use x64 Windows Runtime" в опциях игры Windows, то все DLL для проекта должны быть 64-битной совместимости. 32-битные DLL не будут работать с 64-битным исполняемым файлом.
  • -
  • macOS: Цель macOS может использовать стандартные файлы DyLib для расширений.
  • -
  • Ubuntu (Linux): Для цели Ubuntu вам необходимо убедиться, что ваше расширение использует файлы .so.
  • -
  • HTML5: Эти платформы могут использовать расширения JavaScript.
  • -
  • Android: Эта платформа требует, чтобы расширение было написано на Java или Android Framework SDK.
  • -
  • iOS / tvOS: Расширения для этой платформы написаны на Objective C и требуют наличия файла *.mm и *.h, или, если используются какие-либо фреймворки, предварительно скомпилированного нативного файла *.a.
  • -
  • PlayStation: Для PlayStation ваши расширения должны быть файлами PRX, причем для каждой цели требуется свой PRX, чтобы соответствовать спецификациям цели (PS3, PS4 или PS5). Если вы работаете над PSVita, расширение должно быть SUPRX.
  • -
-

ПРИМЕЧАНИЕ Некоторые расширения должны следовать определенным соглашениям об именовании для GameMaker, чтобы правильно определить платформу и архитектуру процессора, для которых они предназначены. Дополнительную информацию см. в разделе Соглашения об именовании.

-

Поскольку расширение может иметь различные связанные файлы, можно создать одно расширение для нескольких платформ, в этом случае необходимо указать все совместимые платформы в главном редакторе расширений (т.е.: установить флажок рядом с ними), а затем в свойствах отдельных файлов для каждой части расширения установить платформу, на которую эти файлы должны быть экспортированы.

-

Чтобы изменить целевую платформу для определенного файла расширения или заполнителя, необходимо сначала открыть свойства расширения (дважды щелкните расширение в браузере активов), а затем, находясь в свойствах расширения, выберите справа файл ресурса, который вы хотите изменить. В открывшемся окне можно выбрать платформы, на которые экспортируется этот конкретный файл:

-

RMB Icon

-

Варианты расширения

-

Используемое вами расширение может иметь опции, которые будут отображаться в нижней части окна редактора расширений:

-

Они будут отличаться в зависимости от расширения, и не все из них могут иметь опции. Информацию о возможностях расширения можно найти в документации к используемому расширению.

-

Чтобы настроить параметры для собственного расширения, см: Создание опций расширения

-

Распаковка при сборке

-

Опцию "Uncompress on build" можно использовать для сжатых архивных файлов, предназначенных для определенной целевой платформы. Если эта опция включена, содержимое архива будет извлечено в каталог Included Files собранного пакета, но только после копирования на целевую платформу.

-

Например, если вы включите эту функцию для файла .zip в вашем расширении, а затем запустите сборку macOS с Windows, то архив .zip будет скопирован как есть с Windows на macOS и затем будет распакован во время компиляции на целевой платформе (которой в данном контексте является macOS).

-

Вызов функций расширения

-

После установки расширения вы можете использовать функции и константы для него так же, как и встроенные функции и константы, используемые в GameMaker Language. Если ваша игра является кроссплатформенной (например, она предназначена для запуска на платформах Windows и Android ), то вам следует использовать константы и функции ОС для проверки текущей платформы перед вызовом функций, специфичных для расширения, чтобы, например, избежать проблем:

-

switch(os_type)
- {
-     case os_android:
-         call_android_extension_function(x, y, z);
-     break;
-
-     case os_windows:
-         call_windows_extension_function(x, y, z);
-     break;
- } -

-

Обратите внимание, что для разных платформ ваши расширения могут использовать общие имена функций, поэтому если у вас есть расширение с разными файлами для (например) всплывающего сообщения на Windows и для Android, оба файла расширения могут использовать одни и те же имена функций, если они оба настроены на экспорт только на соответствующие платформы.

-

Если вы хотите создать свои собственные расширения, то основную необходимую информацию вы найдете на следующих страницах:

- -

-

Официальные расширения сторонних производителей

-

В старых версиях GameMaker было много встроенных функций сторонних разработчиков, но это было неэффективно и трудно поддерживать, так как если какая-то конкретная функциональность изменялась сторонним разработчиком, то приходилось обновлять всю GameMaker IDE и Runtime. Поэтому в текущих версиях было принято использовать пакеты расширений для добавления сторонней поддержки в ваши игры. Это означает, что вы можете добавлять только те дополнительные функции, которые вам необходимы, и даже адаптировать и редактировать их в соответствии с вашими конкретными потребностями.

-

Большинство из этих расширений будут загружены и установлены для вас при выборе определенных опций игры (например, Facebook или Google Mobile Ads), но вы можете найти дополнительную информацию о них в соответствующем разделе для каждой платформы в базе знаний GameMaker:

- -

Сами расширения можно найти на следующей странице Marketplace:

- -

Обратите внимание, что эти расширения поставляются с демо-версией и файлом справки (в формате *.pdf ), в которых объясняется, как их использовать, и поэтому их функции не рассматриваются в данном руководстве.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Fonts.htm b/Manual/contents/The_Asset_Editors/Fonts.htm index ff0fa99c4..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Fonts.htm +++ b/Manual/contents/The_Asset_Editors/Fonts.htm @@ -1,133 +0,0 @@ - - - - - - Шрифты - - - - - - - - - - -

Редактор шрифтов

-

The Font Editor

-

Когда вы хотите нарисовать текст в вашей игре, этот текст рисуется стандартным шрифтом Arial 12 пунктов, но для создания более интересных или уникальных текстов вы, вероятно, захотите использовать другие шрифты. Поэтому, чтобы использовать различные шрифты, имеющиеся у вас на компьютере, необходимо создать актив шрифта в GameMaker. Для этого щелкните правой кнопкой мыши на в браузере активов и выберите "Создать" -> "Шрифт". Для каждого создаваемого актива шрифта вы указываете определенный тип шрифта с вашего компьютера, который затем может быть использован в вашей игре с помощью действия или кода для установки шрифта для рисования.

-

Когда вы впервые создаете ресурс шрифта, открывается окно редактора шрифта со следующими опциями:

-

Подробности

-
-

Здесь вы можете дать своему шрифту уникальное имя (только буквенно-цифровые символы и символ "_" под баром), а также выбрать шрифт для использования. Шрифт должен быть установлен на вашей машине, и из-за лицензионных вопросов GameMaker не - по умолчанию не хранит фактические файлы шрифтов в файле проекта, а выводит шрифт на страницу текстуры в виде серии - растровых глифов. Текстурная страница будет назначена группе текстур, которую вы можете выбрать в опции Group.

-

Если вы хотите распространить файл шрифта (только *.ttf или *.otf ) вместе с проектом при создании актива Marketplace или по любой другой причине, вы можете отметить опцию Copy To Project. Это - откроет проводник файлов, где вы можете выбрать файл шрифта, и он будет добавлен в файлы, поставляемые вместе с проектом.

-

ВАЖНО! Вы должны использовать только те шрифты, которые вы имеете законное разрешение и лицензию на распространение или использование в вашем проекте.

-

-
-

Предустановки

-
-

В этом разделе вы можете задать размер (в пунктах - по умолчанию 12pt) и определить, должен ли шрифт быть нарисован жирным или курсивным, а также применить сглаживание. Окно предварительного просмотра справа - покажет вам текст примерно так, как он будет выглядеть в вашей игре с указанными вами размерами и преобразованиями.

-


-

-
-

Регуляторы диапазона

-
-

При создании ресурса шрифта редко возникает необходимость включать все глифы шрифта. Именно поэтому GameMaker по умолчанию использует только символы с 32 по 127 выбранного шрифта, поскольку это дает нам цифры и - строчные и заглавные буквы, а также некоторые знаки препинания. Однако вы можете изменить используемый диапазон символов, чтобы оптимизировать ваши игры, например: если вам нужны только цифры из определенного шрифта, выберите только цифры. Для этого - сначала нажмите кнопку Удалить , чтобы очистить текущий диапазон (для этого может потребоваться выделить диапазон, щелкнув в окне предварительного просмотра), а затем нажмите кнопку Удалить , чтобы очистить текущий диапазон. - а затем нажмите кнопку Добавить , чтобы добавить новый диапазон. В результате откроется следующее окно с цепочкой:
-

-

В этом окне есть несколько кнопок, которые помогут вам установить стандартный диапазон для вашего шрифта:

-

- Обычный диапазон от 32 до 127
-
- Диапазон ASCII от 0 до 255
-
- Диапазон цифр , который содержит только 10 цифр
-
- Диапазон букв , содержащий только заглавные и строчные буквы.
-

-

Другие диапазоны можно использовать, введя индекс первого и последнего символа диапазона, который вы хотите установить, в поля ввода диапазона символов (если символ не входит в диапазон, он заменяется пробелом). Помимо этих кнопок и полей ввода, - у вас также есть две дополнительные опции, которые особенно полезны:
-

-
    -
  • Из кода: если вы нажмете на эту кнопку и затем нажмете OK, GameMaker автоматически разберет код вашей игры на наличие строк и затем создаст различные диапазоны символов, чтобы охватить весь текст в вашей игре. Обратите внимание, что при этом ищутся - все строки (в пределах "" или '') и поэтому может также включать имена файлов в диапазоны символов.
    -
  • -
  • Из файла: работает аналогично опции "из кода", описанной выше. Если вы нажмете на нее, вам будет предложено указать файл, а затем, когда это будет сделано, вы должны нажать OK. После этого GameMaker разберет - файл и создаст диапазоны символов для содержащегося в нем текста.
  • -
-

Обратите внимание, что вы можете вручную редактировать текстовый диапазон, добавляя или удаляя текстовые глифы непосредственно в окне предварительного просмотра.

-

-
-

Управление текстурами

-
-

Как упоминалось выше (в разделе " Детали шрифта"), по умолчанию все глифы шрифта будут выведены на страницу текстуры как часть группы текстур для преобразования их в графические ресурсы, а когда игра будет скомпилирована, шрифт будет добавлен к временной текстуре для создания единого изображения со всеми необходимыми глифами шрифта, а затем оно будет добавлено в основную группу текстур для экспорта. Кнопки здесь предназначены для настройки процесса создания текстуры шрифта или для регенерации новой текстуры шрифта.

-

Кнопка Options (Параметры ) откроет расширенные параметры текстуры шрифта:

-

Эти параметры могут, иногда радикально, изменить отображение шрифта в игре, и не все шрифты требуют одинаковых настроек. Следующие параметры предназначены для максимальной настройки шрифта:

-
    -
  • Подсказка: Подсказка шрифта (также известная как инструктаж) - это использование математических инструкций для настройки отображения контурного шрифта таким образом, чтобы он соответствовал растрированной сетке. При низких разрешениях экрана подсказка имеет решающее значение для получения четкого, разборчивого текста, и здесь вы можете выбрать один из различных алгоритмов подсказки, чтобы получить наилучший результат. По умолчанию используется "нормальный".
  • -
  • Параметры глифов: Эти опции могут быть использованы для изменения способа загрузки глифов путем включения/выключения различных операций. К ним относятся: -
      -
    1. Отключить подсказки: Это отключит встроенные подсказки и автоинтерфейс.
    2. -
    3. Disable Auto-Hinter: Это отключит автоинтерфейс и вместо него будет использоваться родной инттерфейс шрифта (если он есть). Обратите внимание, что эта опция отменяет опцию "Предпочитать автоинтер".
    4. -
    5. Prefer Auto-Hinter: Эта опция указывает GameMaker на то, что он предпочтет использовать автоинтерфейс, а не встроенные подсказки, которые могут быть у шрифта. Обратите внимание, что эта опция отменяется опциями "Отключить автоинтерьер" и "Отключить подсказки".
    6. -
    7. Искажение: Включение этой опции слегка искажает глифы для улучшения выравнивания сетки. Обратите внимание, что для этого требуется автоинтерфейс и режим подсказки "Нормальный".
    8. -
    9. Без масштаба: Когда эта опция отмечена, глифы будут отображаться в единицах шрифта и игнорировать запрашиваемый размер. Это означает, что подсказка отключена.
    10. -
    - По умолчанию все вышеперечисленные опции отключены. -
  • -
  • Интерпретатор: Здесь вы можете выбрать версию TrueType, которую GameMaker должен использовать для рендеринга шрифтов. По умолчанию это TrueType v40.
  • -
  • Округление: Эта опция предназначена для установки метода округления при преобразовании десятичной дроби с фиксированной точкой в целое число. По умолчанию - "floor".
  • -
  • Применить кернинг: Этот параметр определяет, будут ли данные кернинга из файла шрифта использоваться для его рендеринга в игре. Этот параметр следует отключить, если данные кернинга для исходного шрифта неверны и приводят к некорректному отображению шрифта.
  • -
-

Кнопку Regenerate (Регенерировать ) можно использовать для регенерации текстуры шрифта. Это необходимо, если вы хотите обновить изменения, внесенные в существующий шрифт, или если вы создали новый шрифт и хотите посмотреть, как он выглядит в окне предварительного просмотра. Обратите внимание, что шрифты также можно регенерировать из меню правой кнопки для шрифта (или шрифтов) в браузере активов.

-

Важно отметить, что при первом создании нового шрифта, если вы не регенерируете текстуру в редакторе, то текстура будет создана при первом запуске или тестировании игры, но это единственный раз, когда она будет сгенерирована автоматически. Это означает, что если шрифт имеет сгенерированную текстуру, любые изменения, внесенные в ресурс шрифта, потребуют регенерации шрифта, чтобы изменения были видны в игре, иначе будет использоваться "старая" текстура шрифта.

-

GameMaker отобразит сгенерированную текстуру шрифта в виде файла PNG вместе с остальными файлами проекта, и если вы загрузите проект, а базовый шрифт не будет найден, то игра все равно будет корректно отображать текст, используя сохраненную текстуру. Однако отсутствие шрифта означает, что вы больше не сможете изменить ни одно из его свойств, кроме названия, семейства шрифта и группы текстур (в редакторе групп текстур).

-

-
-

Режим предварительного просмотра

-
-

В этом разделе вы можете выбрать, чтобы в окне предварительного просмотра отображался либо образец текста выбранного шрифта, либо изображение текстуры, созданное для шрифта.

-

-
-

Предварительный просмотр

-
-

На странице - Окно предварительного просмотра - это место, где вы можете увидеть предварительный просмотр шрифта либо в виде образца текста, либо в виде текстуры. Когда - Режим предварительного просмотра установлен на - Sample, вы можете ввести любой текст, который вы хотите протестировать, прямо в окно предварительного просмотра, чтобы увидеть, как он выглядит, в то время как при выборе опции - Game Preview будет показано изображение текстуры, сгенерированное для шрифта. Если изображение отсутствует, то необходимо нажать кнопку - Regenerate , чтобы сгенерировать текстуру. -

-

Обратите внимание, что изображение текстуры может отличаться от образца, так как текстура не будет - не будет регенерироваться, если на это нет явного указания. Это означает, что после первоначальной генерации текстуры шрифта изменения, внесенные в ресурс шрифта, не будут перенесены в игру, пока текстура не будет регенерирована. -

-

-
-

Предварительный просмотр диапазона

-
-

Здесь будут перечислены различные диапазоны символов, которые вы добавили для шрифта. Значения диапазонов показаны слева, а глифы диапазонов, соответствующие этим значениям, - справа.

-
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Image_Editor.htm b/Manual/contents/The_Asset_Editors/Image_Editor.htm index 6323196f9..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Image_Editor.htm +++ b/Manual/contents/The_Asset_Editors/Image_Editor.htm @@ -1,282 +0,0 @@ - - - - - - Редактор изображений - - - - - - - - - - -

Редактор изображений

-

Редактор изображений - это место, где вы можете создавать свои собственные спрайты или редактировать те, которые были импортированы или созданы ранее. Если вы пользовались другими инструментами для работы с изображениями, то все это должно быть вам знакомо, но при использовании редактора изображений GameMaker есть несколько моментов, которые не сразу бросаются в глаза:

-
    -
  • Когда вы создаете несколько кадров, вы можете рисовать на них, пока они анимируются! Так, если вы нажмете кнопку воспроизведения на панели управления кадрами, а затем выберете кисть и начнете рисовать в окне редактора, вы увидите, что кадры будут анимироваться в редакторе, и то, что вы нарисуете, будет добавлено к соответствующему кадру в этот момент. Вы можете экспериментировать с различными частотами кадров, пока не получите то, что вам нравится, но как только вы поймете, как это работает, вы будете создавать динамические sprites и эффекты в мгновение ока.
  • -
  • Вы можете вытащить вкладку редактора изображений из основного окна рабочей области в отдельное окно. Это может быть удобно, например, при использовании нескольких мониторов.
  • -
  • Когда вы используете функции копирования , чтобы, например, скопировать выделение изображения, скопированное выделение добавляется в список кистей. Это означает, что вы можете выделить часть изображения и затем использовать ее в остальных инструментах рисования для рисования линий, многоугольников или просто рисования. Кисть можно масштабировать и смешивать с цветом. Обратите внимание, что функция "Вставить" не предназначена для внутреннего использования в редакторе, поскольку все, что вы копируете, добавляется в список кистей и может быть выбрано для "вставки" таким образом. Вместо этого функция "Вставить" предназначена для того, чтобы просто захватить что-то из внешней программы и вставить это в редактор изображений.
  • -
  • Вы можете иметь несколько слоев для каждого sprite благодаря удобному редактору слоев. Эти слои можно упорядочить и даже поместить в папки, чтобы облегчить создание более сложных изображений.
  • -
  • В редакторе можно быстро переключаться между подизображениями (кадрами) с помощью клавиш "1" и "2" на клавиатуре.
  • -
-

Это лишь некоторые из более продвинутых функций, которые предлагает редактор изображений. Чтобы ознакомиться с полным набором функций, прочитайте приведенные ниже пункты, в которых подробно описаны функции каждой части редактора:

-

Вид рамы

-
-

Эта часть окна показывает кадры в том порядке, в котором они будут анимированы. Вы можете нажать кнопку слева, чтобы добавить дополнительные кадры - или использовать меню изображений - и вы также можете нажать и перетащить любой из кадров, чтобы изменить их положение на временной шкале. В верхней левой части окна просмотра кадров можно включить функцию " Луковая шкурка " , которая означает, что в одном кадре любой анимации sprite вы можете выбрать любой из предыдущих или последующих кадров в качестве полупрозрачного слоя под редактируемым кадром. Замечательно то, что каждый кадр рисуется немного светлее предыдущего, так что вы можете видеть, как анимация продвигается от кадра к кадру, пока рисуется следующий.

-

Включение этой функции отобразит дополнительные элементы управления кадрами, которые можно щелкнуть на и перетащить, чтобы установить количество предыдущих кадров для показа, а также количество последующих кадров.

-

Вы можете задать определенные свойства для луковой шкурки в меню View conext, которое описано далее на этой странице.

-

Под кнопкой Onion Skin находится кнопка Loop Control , с помощью которой можно установить, будет ли sprite зацикливаться (возвращаться к кадру 1 при достижении последнего кадра) или пинг-понг (двигаться назад по кадрам при достижении последнего кадра). Кнопка Play внизу предназначена для запуска/остановки предварительного просмотра анимации.

-

Вы можете щелкнуть на любом кадре, чтобы выбрать его для редактирования, при этом выбранный кадр будет иметь кнопку Delete в верхнем углу, которую можно нажать, чтобы удалить кадр из sprite. Вы также можете щелкнуть / + на нескольких кадрах, чтобы выбрать их вместе, в этом случае нажатие кнопки Delete приведет к удалению всех выбранных кадров. Наконец, для редактирования выбранных кадров можно использовать стандартные сочетания клавиш Вырезать, Копировать и Вставить : / + "X", / + "C", и / + "V".

-

-
-

Информация о раме

-
-

Эта панель содержит информацию о кадрах. Здесь вы можете установить скорость воспроизведения кадров анимации, используя поле ввода слева. Скорость кадров может быть основана либо на "Кадрах в секунду", либо на "Кадрах на игровой кадр". Общее количество доступных кадров отображается справа вместе с текущим выбранным кадром, и вы можете свернуть эту панель (скрыть ее), нажав на значок слева. В настройках редактора изображений можно установить режим "всегда открыто" или "всегда закрыто".

-

Обратите внимание, что значение, используемое здесь для скорости анимации, также задаст способ анимации sprite при использовании в игре, либо как актив sprite на слое, либо как sprite, назначенный экземпляру, хотя вы можете изменить это во время выполнения с помощью соответствующих функций и переменных.

-

-
-

Элементы управления холстом

-
-

Элементы управления холстом касаются различных аспектов отображения основного холста рисования и его содержимого. К ним относятся:

-
    -
  • Toggle Canvas Grid : Это позволяет включить/выключить сетку холста. Это сетка, которую GameMaker рисует поверх основного холста, чтобы разделить его на секции, и по умолчанию она имеет размер 1px. Однако если вы щелкните на значке меню сетки , то откроются опции сетки:
    - Эти опции позволяют установить цвет и альфа-канал сетки, а также значения ячеек сетки по осям X и Y. Здесь также можно включить или отключить привязку сетки (по умолчанию отключена). -
  • -
  • Управление масштабированием холста : Эти кнопки управляют текущим уровнем масштабирования холста. Вы можете увеличивать или уменьшать масштаб, а нажатие на кнопку вернет холст в положение 1:1 с редактируемым изображением. Вы также можете нажать кнопку Window Fit , чтобы весь холст изображения поместился в текущей рабочей области редактора (при этом масштаб будет увеличиваться/уменьшаться по мере необходимости, чтобы он поместился). Обратите внимание, что вы также можете увеличивать и уменьшать масштаб с помощью кнопок / и колеса мыши , а нажатие кнопок / + установит холст комнаты в соотношении 1:1 с изображением.
  • -
  • Разделить холст : При нажатии на эту кнопку холст можно разделить по горизонтали и вертикали, оставив его одним холстом. В режиме просмотра разделенного холста каждый холст будет иметь свой собственный набор элементов управления холстом, так что вы можете, например, увеличить один холст, а другой уменьшить, и вы можете редактировать любой холст с отражением изменений на другом холсте. Чтобы изменить вид холста, нажмите кнопку Split Options и выберите нужный вариант или просто нажимайте кнопку Split Canvas, пока она не переключится на нужный вариант.
  • -
-

-
-

Нарисованный холст

-
-

Это основное окно редактирования изображений. Здесь вы можете применить любой из инструментов справа для рисования на текущем выбранном слое. Вы можете рисовать левой или правой кнопкой мыши (и назначить каждому цвет из палитры цветов) и использовать любую из кистей, заданных в правом верхнем углу редактора. Вы также можете использовать / и колесико мыши для увеличения или уменьшения масштаба, а нажатие / + установит холст в соотношении 1:1 с изображением (или вы можете использовать элементы управления холстом, как описано выше). Обратите внимание, что вы можете перемещаться по холсту с помощью средней кнопки мыши или + .

-

-
-

Значения холста

-
-

Эта маленькая полоска внизу показывает различные значения для положения мыши, а также ширины и высоты инструментов выделения в редакторе.

-

-
-

Кисти

-
-

Здесь вы можете выбрать кисть для рисования. По умолчанию у вас есть выбор квадратных и круглых кистей разного размера, но вы можете легко создать свою собственную кисть, рисуя на слое изображения, а затем выбрав часть, которую вы хотите использовать для новой кисти, и используя / + "C" для ее копирования. Скопированная часть будет добавлена к кистям, и вы сможете рисовать ею, как любой другой кистью, включая использование различных инструментов рисования, например, рисование линии.

-

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

-

ПРИМЕЧАНИЕ: Кисти не сохраняются между сессиями, при закрытии проекта все созданные кисти будут удалены.

-
-

Выбор цвета

-
-

В верхней части этого раздела есть несколько предопределенных цветовых образцов, которые вы можете выбрать, и они могут быть назначены на левую и правую кнопки мыши соответственно, щелкнув по ним любой кнопкой (вы также можете поменять цвета между каждой кнопкой, щелкнув значок стрелки рядом с образцами). Выбранные цвета будут показаны ниже в виде образцов рядом с изображением мыши, и вы можете щелкнуть по ним, чтобы открыть окно Выбор цвета:

-

В этом окне вы можете задать цвет, используя любой из доступных ползунков и гаджетов, или ввести значения непосредственно для значений ARGB или HSV.

-

Если, удерживая клавиши CTRL/CMD, щелкнуть на любом из цветов по умолчанию, откроется инструмент выбора цвета и вы сможете изменить палитру по умолчанию для sprite. Нажав "Ок" в инструменте выбора цвета, вы установите палитру на новый цвет и сохраните ее вместе с редактируемым активом sprite.

-

Эти цветовые палитры можно менять местами и применять к разным sprites с помощью меню Параметры цветовой палитры:

-

The Image Editor

-

В единственной строке цветов под палитрой показана история цветов, причем последний выбранный цвет находится в самом левом углу. Этот раздел не копируется при использовании опций "Импорт цветов" или "Копировать цвета", так как они применяются только к основной палитре, расположенной выше.

-

Таким образом, вы можете создать пользовательскую цветовую палитру на изображении sprite и затем использовать ее для установки палитры для любого другого sprite в Браузере активов, или вы можете открыть изображение sprite и импортировать цветовую палитру из любого другого sprite в Браузере активов. Эта функция палитры sprite более подробно рассматривается в следующем техническом блоге:

- -

-
-

Инструменты

-
-

Ниже мы приводим список инструментов, которые доступны по умолчанию в GameMaker - обратите внимание, что все инструменты можно использовать с помощью левой и правой кнопок мыши, и большинство из них имеют сочетания клавиш, связанные с ними (важные из них перечислены здесь вместе с инструментом, но полный список см. на странице " Сочетания клавиш"). Большинство инструментов также имеют дополнительные опции, которые отображаются в верхней части редактора изображений, как показано ниже:

-

Play Icon

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Add Frame IconКарандашЭто инструмент "Карандаш". Он использует выбранную кисть для рисования выбранным цветом для кнопки мыши, и вы можете установить размер из верхней панели редактора изображений, а также включить/выключить сглаживание (интерполяцию). Обратите внимание, что вы также можете изменить размер и масштаб любой кисти, удерживая нажатыми кнопки + "Z", затем щелкните и перетащите мышь, чтобы изменить пропорции кисти, или выберите одну из предопределенных кистей в правом верхнем углу.
Onion Skin IconЛастикЭто инструмент ластика. Он использует выбранную кисть для стирания области по щелчку любой из кнопок мыши. При выборе этого инструмента на верхней панели редактора появляются дополнительные инструменты, позволяющие масштабировать кисть или включать/выключать сглаживание(линейную интерполяцию).
LMB IconОкраска / заливкаЭто инструмент "Ведро краски" (или "Заливка"). Он заполняет область изображения в соответствии с выбранным значением допуска альфа, которое можно изменить с помощью ползунка, показанного в верхней панели редактора.
Image Editor Onion SkinУдалить цветЭто инструмент удаления цвета. Выбрав его, вы можете щелкнуть или на любом пикселе изображения, и все пиксели того же цвета будут удалены (технически они заменяются черным цветом с альфа-коэффициентом 0). На верхней панели есть ползунок допуска, где можно установить допуск цвета пикселя - чем ниже это значение, тем точнее цвет должен соответствовать цвету, на котором был сделан щелчок, в то время как более высокое значение расширит этот диапазон, включив в него все цвета, похожие на тот, на котором был сделан щелчок. Если вы ранее сделали выделение с помощью любого из инструментов выделения, то эффект будет только при щелчке на пикселях в пределах выделения, и только пиксели в пределах выделения будут удалены.
Loop Control IconЗамена цветаЭто инструмент замены цвета. Выбрав его, вы можете щелкнуть или на любом пикселе изображения, и все пиксели того же цвета будут заменены цветом, присвоенным использованной кнопке мыши. На верхней панели находится ползунок допуска, с помощью которого можно установить допуск цвета пикселя - чем меньше это значение, тем точнее цвет должен соответствовать цвету, на котором был сделан щелчок, в то время как более высокое значение расширяет этот диапазон, включая те цвета, которые похожи на цвет, на котором был сделан щелчок. Если вы предварительно сделали выделение с помощью любого из инструментов выделения, то только щелчок по пикселям в пределах выделения будет иметь эффект, и только пиксели в пределах выделения будут затронуты изменением цвета.
Play IconЛинияЭтот инструмент позволяет провести линию между двумя точками. Щелкните один раз любой из кнопок, чтобы создать первую точку, а затем щелкните еще раз в другом месте, чтобы создать еще одну точку и соединить их. Линия будет нарисована с помощью выбранной кисти для создания контура, при этом вы можете редактировать некоторые свойства кисти с помощью верхней панели редактора (размер, линейная интерполяция и т.д...).
Delete Frame IconПрямоугольникЭтот инструмент рисует либо заполненный, либо очерченный прямоугольник. Если щелкнуть в левой верхней части значка, он будет очерчен, а если щелкнуть в правой нижней части - заполнен. Если вам нужны оба варианта, вы можете выбрать их в верхней панели редактора изображений (или использовать + для выбора одного, а затем другого на значке панели инструментов), а также установить размер и сглаживание используемой кисти. Прямоугольник будет нарисован выбранной кистью. Обратите внимание, что во время рисования вы можете удерживать нажатой кнопку и щелкнуть мышью, чтобы рисовать из центра позиции мыши.
Control IconЭллипсЭтот инструмент рисует либо заполненный, либо очерченный эллипс. Если вы щелкните в левой верхней части значка, он будет очерчен, а если в правой нижней - заполнен. Если вам нужны оба варианта, вы можете выбрать их в верхней панели редактора изображений (или использовать + для выбора одного, а затем другого на значке панели инструментов), а также установить размер и сглаживание используемой кисти. Эллипс будет нарисован с использованием выбранной кисти для создания контура. Обратите внимание, что во время рисования можно удерживать нажатой кнопку и щелкнуть мышью, чтобы рисовать из центра позиции мыши.
CMD IconПолигонЭтот инструмент рисует либо заполненный, либо очерченный многоугольник. Если вы нажмёте на левый верхний угол значка, он будет очерчен, а если нажмёте на правый нижний - заполнен. Если вам нужны оба варианта, вы можете выбрать их в верхней панели редактора изображений (или использовать + для выбора одного, а затем другого на значке панели инструментов), а также установить размер и сглаживание используемой кисти. Щелкните на или , чтобы добавить точки к многоугольнику с помощью выбранной кисти, а когда вы будете довольны результатом, выберите другой инструмент, чтобы зафиксировать изменения и создать изображение. Многоугольник будет нарисован с помощью выбранной кисти. Вы можете в любой момент нажать , чтобы отменить определение полигона.
LMB IconСплайнЭто инструмент "Сплайн". Он использует выбранную кисть для создания сплайна. Щелкните и удерживайте любую кнопку мыши, чтобы задать точку, а затем перетащите мышь, чтобы создать сплайн, отпустите мышь и повторите, чтобы добавить другие точки и кривые. Сплайн будет нарисован выбранной кистью, которую можно редактировать с помощью верхней панели редактора, чтобы задать размер и сглаживание. На верхней панели также есть параметр Итерации , который определяет, насколько гладким будет полученный сплайн (меньшие значения будут более грубыми, большие - более гладкими, а значение по умолчанию равно 10).
Control IconТекст
- Это инструмент ввода текста. Он создает новый текстовый слой, на котором можно напечатать все, что вам нужно. Используемый шрифт, а также форматирование можно задать в верхней панели редактора изображений.
CMD IconГлазная капельницаИнструмент "Пипетка" позволяет выбрать цвет из редактируемого изображения.
Control IconВыбор прямоугольникаС помощью этого инструмента можно создать прямоугольное выделение. Отменить выделение можно в меню Изображение или нажав .
CMD IconВыбор краскиС помощью этого инструмента можно "закрасить" выделенную область, используя любую из кистей, включая пользовательские. Применяются все те же сочетания клавиш, что и для инструмента "Карандаш". Отменить выделение можно из меню Изображение или нажав кнопку
Control IconВолшебная палочкаИнструмент выделения "Волшебная палочка" выделит области одного цвета на основе значения допуска, заданного в верхней панели редактора. Если вы отметите "Только цвет", то альфа-значение не будет учитываться. Отменить выделение можно в меню Изображение или нажав кнопку .
CMD IconПовернутьЭто инструмент поворота. Если у вас есть область, выделенная с помощью одного из инструментов выделения, то нажатие на этот инструмент позволит повернуть выделенную область на произвольную величину от 0° до 360°. Если область изображения не выделена, можно повернуть текущую кисть. Для поворота просто зажмите левую кнопку мыши и потяните влево или вправо или задайте значение непосредственно в верхней панели. Чтобы принять изменения, можно нажать либо , либо выбрать другой инструмент. Обратите внимание, что принятие изменений не изменит исходный материал, а создаст новый ресурс "Кисть" для использования с выбранным изображением или кистью, повернутой на заданную величину. Также обратите внимание, что комбинация клавиш "Z" может быть использована для поворота любого выделения или кисти на 90°, и что эта опция не создает новую кисть, а влияет только на то, как рисуется текущая кисть.
Collapse IconЗеркалоЭто инструмент зеркального отображения. При его выборе текущая кисть будет зеркально отражена вдоль вертикальной оси. Эта опция не создает новую кисть и влияет только на то, как рисуется текущая кисть.
Canvas Grid IconФлипЭто инструмент переворота. При выборе этого инструмента текущая кисть будет зеркально отражена вдоль горизонтальной оси. Эта опция не создает новую кисть и влияет только на то, как рисуется текущая кисть.
Grid Options IconПанЭто инструмент панорамирования. Выбрав его, вы можете щелкнуть и перетащить мышь для панорамирования содержимого слоя в пределах слоя. Обратите внимание, что пиксели, находящиеся за пределами холста, не будут видны, и изображение будет обрезано до размера холста при повторной смене инструмента. Также обратите внимание, что если вы сделали выделение, то будут перемещаться выделенные пиксели, а не содержимое слоя.
-

-
-

Редактор слоев

-
-

В редакторе изображений можно создавать слои для различных частей изображения, и этими слоями можно манипулировать и рисовать на них с помощью различных кистей и инструментов. Чтобы создать новый слой, просто нажмите на значок , а чтобы удалить его - на значок . Слои также можно упорядочить, щелкнув на слое и перетащив его вверх или вниз на нужную позицию, а также упорядочить слои, создавая папки с помощью кнопки и перетаскивая в них слои. Если дважды щелкнуть на слое (или использовать и выбрать Edit Layer Properties), откроется окно Layer Properties:

-

Здесь вы можете дать слою имя, а также установить режим наложения (способ, которым он будет "смешиваться" со слоями под ним), выбрав нормальное, аддитивное, субтрактивное или мультипликативное наложение. Наконец, вы можете установить непрозрачность (прозрачность) слоя с помощью ползунка, но учтите, что она суммируется с фактическим значением альфа отдельных пикселей - например, если у вас есть пиксели с непрозрачностью 50%, а непрозрачность слоя установлена на 50%, конечные пиксели будут нарисованы с непрозрачностью 25%.

-
-

-

Помимо инструментов в самом редакторе изображений, есть также ряд дополнительных инструментов, доступных вам из панели меню в верхней части IDE:

-

Эти меню описаны в следующих разделах:

-

Изображение

-
-

Меню Изображение содержит следующие опции (некоторые из них могут быть доступны или недоступны в зависимости от текущего фокуса редактора):

-
    -
  • Вырезать рамку / выделение - вырезать рамку или выделение из изображения, в зависимости от фокуса редактора. При вырезании выделения оно будет добавлено к кистям.
  • -
  • Копировать рамку / выделение - копирование рамки или выделения из изображения, в зависимости от фокуса редактора. При копировании выделения оно будет добавлено к кистям.
  • -
  • Вставить рамку / выделение - Вставить рамку из буфера обмена или вставить выделение из буфера обмена в изображение, в зависимости от текущего фокуса IDE. При вставке в изображение следует учитывать, что эта опция предназначена только для использования с данными буфера обмена из внешних программ. Когда вы вырезаете или копируете в буфер обмена из изображения в редакторе изображений, это добавляется в кисти в правом верхнем углу редактора, и вам следует выбрать кисть для рисования с помощью вырезанного/скопированного выделения, а не пытаться вставить его в изображение. Также обратите внимание, что в некоторых программах могут возникнуть проблемы с вставкой прозрачности из буфера обмена в редактор изображений GameMaker из-за формата, используемого буфером обмена.
  • -
  • Выбрать все - выбор всего изображения.
  • -
  • Отменить выделение - удаление любого выделения с изображения.
  • -
  • Инвертировать выделение - инвертировать текущее выделение.
  • -
  • Добавить рамку - добавить новую рамку на сайт sprite.
  • -
  • Вставить кадр - вставка нового кадра после текущего кадра.
  • -
  • Удалить выбранные кадры - удалить выбранный кадр из sprite (для выбора нескольких кадров можно использовать / + и/или + ).
  • -
  • Импортировать изображение (изображения) - загрузить с диска изображение, которое будет использоваться в качестве рамки. Обратите внимание, что вы можете загрузить сразу несколько кадров, выбрав несколько отдельных файлов для импорта в окне проводника. После выбора файла или файлов откроется следующее окно Импорт:
    - Здесь вы можете выбрать способ добавления импортированного изображения к текущему sprite, что позволяет изменить размер всего холста, обрезать или наложить его, а также задать положение "якоря" для размещения нового изображения (изображений). -
  • -
  • Преобразовать в кадры - Эта опция преобразует одно изображение в несколько отдельных кадров. Сначала необходимо создать один кадр со всеми частями анимации (или импортировать изображение с одной полосой), как показано ниже:
    - Поскольку это одно изображение, и мы хотим преобразовать его в отдельные кадры, мы можем использовать эту опцию, которая откроет следующее окно:
    - Здесь вы можете установить, как единое изображение должно быть разделено для создания кадров, задав количество кадров, ширину и высоту кадров и любые значения смещения. -
  • -
  • Импорт изображения полосы - Эта опция откроет проводник файлов и предложит вам найти один файл изображения полосы, из которого будут созданы кадры. После выбора изображения откроется окно Импорт полосы, точно такое же, как и для опции Преобразовать в кадры, показанной выше.
  • -
  • Экспорт в PNG - При выборе этой опции sprite будет экспортирован как одно PNG изображение. Если sprite содержит более одного изображения, то будет создана "полоса" sprite со всеми изображениями, одно за другим, а к имени файла сохранения будет автоматически добавлено "_stripX", где "X" - количество экспортируемых кадров. Например, пять кадров sprite будут экспортированы как "sprite_name_strip5.png".
  • -
  • Изменить размер всех кадров - При выборе этой опции откроется следующее окно, в котором вы можете задать способ изменения размера всех кадров анимации, составляющих спрайт:
    - Вы можете выбрать либо масштабирование изображения, либо изменение размера холста. Если вы выбираете масштабирование изображения, то просто выберите новую ширину и/или высоту для каждого кадра, нужно ли масштабировать с использованием того же соотношения сторон, а также в пикселях или процентах. Обратите внимание, что при масштабировании вы можете включить или выключить линейную интерполяцию, если она включена, то пиксели будут размываться или "размазываться" при масштабировании изображения (в общем, для искусства высокого разрешения это нужно включить, а для пиксельного искусства - выключить).
    -
    - Опция изменения размера холста не изменяет пиксели в изображении, а увеличивает или уменьшает размер холста, на котором рисуется изображение. С помощью значков со стрелками вы можете установить, где будет находиться "якорь" для изменения размера, затем задать новый размер (в пикселях или в процентах), а также задать, сохранять ли соотношение сторон исходных кадров. Обратите внимание, что при уменьшении размера кадра по сравнению с исходными изображениями sprite пиксели будут обрезаны. -
  • -
  • Crop All Frames To Selection - эта опция доступна только в том случае, если на основном холсте рисования выделена область изображения. При выборе этой опции редактируемое изображение (и все остальные кадры анимации) будет обрезано по границам выделения.
  • -
  • Auto Trim All Frames - Эта опция позволяет обрезать все нулевые альфа-пиксели по краям sprite. При этом будут учитываться все кадры изображения в пределах sprite, поэтому каждая сторона будет обрезаться до края того кадра, который имеет самый дальний ненулевой альфа-пиксель.
    - -
  • -
  • Reverse Frames - выбор этого параметра просто изменит порядок кадров для sprite.
  • -
  • Зеркало - Эта опция позволяет зеркально отобразить либо текущий кадр, либо все кадры, входящие в состав sprite, вдоль вертикальной оси.
  • -
  • Flip - Эта опция позволяет вам перевернуть либо текущий кадр, либо все кадры, составляющие sprite, вдоль горизонтальной оси.
  • -
  • Повернуть все кадры (по часовой стрелке на 90°) - Эта опция повернет все кадры анимации на 90° по часовой стрелке.
  • -
  • Повернуть все кадры (против часовой стрелки на 90°) - Эта опция повернет все кадры анимации на 90° против часовой стрелки.
  • -
-

-
-

Посмотреть

-
-

Меню Вид содержит следующие опции:

-
    -
  • 1:1 - масштабирование изображения до разрешения 1:1 (т.е. фактического размера) и центрирование его в окне редактирования изображения.
  • -
  • Fit Screen - масштабирование изображения для заполнения окна редактирования изображения.
  • -
  • Показать сетку - переключить пиксельную сетку. Это то же самое, что и кнопка сетки, расположенная в элементах управления холстом (описано далее на этой странице).
  • -
  • Настройки лукового скина - изменение настроек лукового скина. Откроется следующее окно, в котором можно задать рамки, отображаемые кнопкой скина лука, а также непрозрачность и цвет скинированных рамок.
    - -
  • -
-

-
-

Эффекты

-
-

В меню "Эффекты" вы можете добавить свои собственные плагины эффектов, а по умолчанию в нем имеются следующие эффекты:

-
    -
  • Размытие - применение эффекта размытия к изображению. Можно задать интенсивность, а также тип размытия (квадратное или гауссово) и установить, будет ли размытие только по горизонтальной или вертикальной оси или по обеим. Затем можно выбрать применение эффекта только к текущему слою, видимым слоям или ко всем слоям.
    - -
  • -
  • Обесцвечивание - обесцвечивание изображения на определенную величину. Можно выбрать применение только к текущему слою, видимым слоям или ко всем слоям.
    - -
  • -
-
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Notes.htm b/Manual/contents/The_Asset_Editors/Notes.htm index a7ec9b672..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Notes.htm +++ b/Manual/contents/The_Asset_Editors/Notes.htm @@ -1,42 +0,0 @@ - - - - - - Примечания - - - - - - - - - - -

Редактор заметок

-

Редактор заметок откроет окно кода/скрипта, где вы можете хранить заметки и фрагменты кода или любую другую информацию, которую вы считаете уместной для проекта - для проекта. Вы можете создавать несколько заметок и присваивать им имена с помощью меню правой кнопки мыши в браузере активов. - Заметки можно группировать и упорядочивать, как и любые другие активы.

-

Если вы импортировали проект, созданный с помощью предыдущей версии GameMaker, то в этом разделе вы найдете отчет о совместимости, включенный в качестве примечания.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events.htm index ae701afd1..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events.htm @@ -1,172 +0,0 @@ - - - - - Асинхронные события - - - - - - - - - - -

Асинхронные события

-

The Async Event

-

Асинхронное событие - это событие, которое запускается, когда GameMaker получает обратный вызов из какого-либо внешнего источника, который может быть из Интернета или с устройства, на котором запущена ваша игра. По сути, - вы говорите GameMaker сделать что-то - например, загрузить изображение - и он начинает это делать, но продолжает делать все остальное, что ему нужно делать в это время. Затем, когда запрос будет выполнен, обратный вызов будет отправлен в GameMaker - Studio 2 и все асинхронные события, определенные для этого типа обратного вызова, будут запущены.

-

Обратите внимание, что асинхронные события запускаются для всех экземпляров, у которых они есть, так же как и события клавиатуры, поэтому вы можете, например, сделать вызов http_get() в одном экземпляре, а асинхронное событие HTTP в другом для обработки обратного вызова.

-

ПРИМЕЧАНИЕ: Вы должны знать, что из-за защиты от XSS в браузерах, запросы и попытки загрузить ресурсы из других доменов блокируются и могут возвращать пустые результаты при использовании любого из следующих событий.

-

Существуют различные типы событий, связанных с категорией асинхронных событий, и все они описаны в разделах ниже:

-

ПРИМЕЧАНИЕ: Переменная async_load которая упоминается - в следующих разделах действительна только в этих событиях, так как карта DS, на которую она указывает, создается в начале события, затем удаляется в конце, а в остальное время эта переменная сбрасывается в значение -1.

- -

-

Возможно, если вы создаете расширения для различных платформ, вы захотите нацелить одно или несколько этих асинхронных событий на обратные вызовы из ваших функций расширения. Для этого ниже приведена таблица, в которой указаны все внутренние константы имен событий и соответствующие им значения ID. - константы имени события и соответствующее им значение ID. Обратите внимание, что эти константы событий предназначены только для использования в расширениях!

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяЗначение
СОБЫТИЕ_ДРУГОЕ_ВЕБ_ИЗОБРАЖЕНИЕ_ЗАГРУЗКА 60
СОБЫТИЕ_ДРУГОЙ_ВЕБ_ЗВУК_ЗАГРУЗКИ 61
EVENT_OTHER_WEB_ASYNC 62
СОБЫТИЕ_ДРУГОЙ_ДИАЛОГ_ASYNC 63
СОБЫТИЕ_ДРУГОЕ_WEB_IAP 66
СОБЫТИЕ_ДРУГОЕ_ВЕБ_ОБЛАКО 67
СОБЫТИЕ_ДРУГОЕ_ВЕБ_СЕТЕВОЕ 68
СОБЫТИЕ_ДРУГОЕ_ВЕБ_ПАР 69
СОБЫТИЕ_ДРУГОЕ_СОЦИАЛЬНОЕ 70
СОБЫТИЕ_ДРУГОЕ_ТОЛЧОК_УВЕДОМЛЕНИЯ 71
СОБЫТИЕ_ДРУГОЕ_ASYNC_SAVE_LOAD 72
СОБЫТИЕ_ДРУГОЕ_АУДИО_ЗАПИСЬ 73
СОБЫТИЕ_ДРУГОЕ_АУДИО_ВОСПРОИЗВЕДЕНИЕ 74
СОБЫТИЕ_ДРУГОЕ_СИСТЕМНОЕ_СОБЫТИЕ 75
СОБЫТИЕ_ДРУГОЕ_СООБЩЕНИЕ_СОБЫТИЕ 76
-

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Audio_Playback.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Audio_Playback.htm index a13ee717c..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Audio_Playback.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Audio_Playback.htm @@ -1,61 +0,0 @@ - - - - - Воспроизведение аудио - - - - - - - - - - -

Воспроизведение аудио

-

Это событие может быть вызвано только функциями воспроизведения аудиоочереди и возвращает карту DS, хранящуюся в переменной async_load, - содержащую различные пары ключ/значение, относящиеся к аудиоочереди, которая вызвала событие. Событие запускается обратным вызовом, когда вы выбрали аудиоочередь для воспроизведения и - буфер в этой аудиоочереди закончил воспроизведение.

-

В карте DS будут доступны следующие клавиши:

-
    -
  • "queue_id" - индекс очереди, которая закончила воспроизведение, возвращаемый функцией audio_create_play_queue().
  • -
  • "buffer_id" - идентификатор буфера, из которого прекращено воспроизведение.
  • -
  • "queue_shutdown" - устанавливается на 0 при обычном воспроизведении и на 1, когда событие получено, потому что audio_free_play_queue() был - было вызвано. Когда это значение установлено в 1, вы не хотите ставить в очередь дальнейшие данные.
  • -
-

Поскольку аудио очередь может быть создана из нескольких буферов, это событие может быть вызвано несколько раз для одной очереди по мере достижения конца каждой секции буферизованного аудио, отсюда и ключ "buffer_id".

-

ПРИМЕЧАНИЕ: Переменная async_load действительна только в асинхронных событиях, поскольку карта DS, на которую она указывает, создается в начале события, а затем удаляется в конце, при этом данная переменная сбрасывается со значением -1. - Однако все дальнейшие структуры данных, созданные в результате события, должны быть очищены с помощью соответствующих функций.

-

В примере использования, приведенном ниже, мы создадим аудио очередь с 10 буферизованными аудио звуками, добавленными к ней, а затем воспроизведем очередь:

-

audio_queue = audio_create_play_queue(buffer_s16, 11052, audio_mono);
for (var i = 0; i < 10; i++;)
   {
   audio_queue_sound(audio_queue, audio_buffer[i], 0, buffer_get_size(audio_buffer[i]));
   }
audio_play_sound(audio_queue, - 0, true);

-

Теперь каждый шаг игры при обнаружении записи будет вызывать асинхронное событие Audio Recording, в котором вы сможете работать с записанным входом примерно так:

-

var queue = async_load[? "queue_id"];
var num = 0;
if queue = audio_queue
   {
   for (var i = 0; i < 10; i++;)
      {
      if async_load[? "buffer_id"] == audio_buffer[i]
         {
 buffer_seek(audio_buffer[i], - buffer_seek_start, 0);
         num = i;
         }
      }
   if num == 9
      {
      audio_stop_sound(audio_queue);
      audio_free_play_queue(audio_queue);
      }
 } -

-

Здесь мы проверяем ID очереди, и если это та очередь, которая нам нужна, мы проверяем ID буфера, чтобы узнать, какой буфер закончил воспроизведение. Мы также устанавливаем локальную переменную в значение индекса для последующей проверки и возвращаем буфер в начало для этого звука. - звука. Как только наша локальная переменная достигнет значения 9, что указывает на завершение очереди, мы остановим воспроизведение звука и освободим очередь.

-

-
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Audio_Recording.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Audio_Recording.htm index 2c8ee23ac..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Audio_Recording.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Audio_Recording.htm @@ -1,55 +0,0 @@ - - - - - Аудиозапись - - - - - - - - - - -

Аудиозапись

-

Это событие может быть вызвано только функцией audio_start_recording() функция - и вернет DS Map, хранящуюся в переменной async_load, - содержащую различные пары ключ/значение в зависимости от обратного вызова функции, вызвавшей событие.

-

В карте ds_map будут доступны следующие ключи:

-
    -
  • "buffer_id" - идентификатор временного буфера, который можно использовать для получения аудиоданных
  • -
  • "channel_index" - индекс канала записи, возвращенный вызывающей функцией, из которого поступили эти данные
  • -
  • "data_len" - длина полученных данных (в байтах)
  • -
-

ПРИМЕЧАНИЕ: Как упоминалось в начале этой страницы, переменная async_load действительна только в асинхронных событиях, поскольку карта DS, на которую она указывает, создается в начале события, - затем снова удаляется в конце. Однако обратите внимание, что временный буфер, в котором хранится весь звук вместе с картой, также будет удален в конце события, поэтому вам следует скопировать его в пользовательский буфер, если вы хотите сохранить его для дальнейшего использования.

-

В приведенном ниже примере использования мы создадим пользовательский буфер для хранения записанного звука, а также настроим нашу игру на запись с источника входного сигнала 0:

-

channel_index = audio_start_recording(0);
audio_buffer = buffer_create(len, buffer_fast, 1);

-

Теперь каждый шаг игры при обнаружении записи будет вызывать асинхронное событие Audio Recording, в котором вы сможете работать с записанным входом примерно так:

-

var channel = async_load[? "channel_index"];
if channel == channel_index
   {
   len = async_load[? "data_len"];
   buffer_copy(async_load[? "buffer_id"], 0, len, audio_buffer, 0);
   }

-

Здесь мы просто проверяем ключ "channel_index", чтобы убедиться, что он соответствует значению, возвращенному при начале записи, и если это так, то мы копируем содержимое временного буфера, созданного для этого события, в наш пользовательский буфер. После этого вы можете - делать с пользовательским буфером все, что захотите - вы можете воспроизвести его с помощью специальных аудиофункций буфера, вы можете обработать его и отправить по сети, вы можете сохранить его на диск... После того, как у вас есть записанный звук в буфере, вы можете делать практически - что угодно.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Cloud.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Cloud.htm index f40a7828e..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Cloud.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Cloud.htm @@ -1,92 +0,0 @@ - - - - - - Облако - - - - - - - - - - -

Облако

-

Облачное событие - это событие, которое инициируется обратным вызовом одной из cloud_*() функций, - например cloud_synchronise(). Оно фактически генерирует карту DS, которая является эксклюзивной для этого события и хранится в - специальной переменной async_load (примеры кода, объясняющие использование этого события, смотрите в отдельных функциях). - события более подробно). Эта DS-карта имеет следующую структуру:

-
    -
  • "status": Здесь хранится код статуса, где отрицательное значение означает ошибку, описание которой будет содержаться в "errorString". Значение 0 (или положительное значение) означает успех (точные значения см. ниже), а "resultString" будет содержать возвращаемый код. - точные значения), а "resultString" будет содержать возвращаемые данные или сообщение об успехе.
  • -
  • "id": Идентификатор, который был возвращен вызванной функцией. Если вы отправляете серию запросов cloud_, вам нужно знать, на какой из них вы получаете ответ, и поэтому вы будете использовать это значение для сравнения со значением - значение, которое вы сохранили при отправке запроса, чтобы найти нужный запрос.
  • -
  • "description": Описание последнего загруженного файла.
  • -
  • "resultString": Здесь хранится строка, которая является блобом данных, возвращенным из облака.
  • -
  • "errorString": возвращает строку ошибки для любой ошибки.
  • -
-

Точное значение возвращаемой записи карты "статус" объясняется в следующей таблице:

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Статус ЗначениеerrorString / resultStringОписание
-1errorString = "Не вошел в <SERVICE>"You have not successfully logged in to the given Cloud Service
0resultString = восстановленные данныеNew game data downloaded from the cloud (following a cloud_synchronise() call)
1resultString = "AlreadySynchronized"No new data since you last called cloud_synchronise
2resultString = "ConflictDeferral"A conflict was encountered, but the gamer chose to ignore it
3resultString = "GameUploadSuccess"data from cloud_string_save() или cloud_file_save() были успешно загружены в облако.
-nerrorString = Описание ошибкиAny other negative number means a synchronisation failure
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Dialog.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Dialog.htm index 64c9b9e81..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Dialog.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Dialog.htm @@ -1,46 +0,0 @@ - - - - - Диалог - - - - - - - - - - -

Диалог

-

Асинхронное событие Dialog срабатывает только тогда, когда оно получает обратный вызов от одной из - специальных асинхронных диалоговых функций, таких как get_login_async() (пожалуйста - см. эту функцию для расширенного примера кода использования этого события).

-

Эти события - те, которые запрашивают какой-либо тип пользовательского ввода, который может быть именем, регистрационными данными, номером или цветом и т.д.. Поскольку большинству устройств не нравится сидеть в цикле в ожидании ответа, они должны быть асинхронными, и GameMaker будет - продолжать работать в фоновом режиме, пока у этих функций открыт диалог и пока они не получат требуемый пользовательский ввод, который вызовет это событие. Это означает, что если диалог открыт во время выполнения игры, вам следует принять меры, чтобы приостановить игру до тех пор. - пока не будет получен обратный вызов диалога.

-

Снова возвращается карта DS Map с идентификатором, хранящимся в специальной переменной async_load. - Значения, хранящиеся в этой карте, зависят от используемой функции, и для получения более подробной информации следует обратиться к отдельным записям по каждой функции в данном руководстве.

-

ПРИМЕЧАНИЕ Функции асинхронных диалогов предназначены только для отладки и тестированияи не должны использоваться в выпущенных играх. Для этих целей вы должны создать пользовательский интерфейс для получения ввода от игроков, чтобы иметь полный контроль над тем, как выглядят и ведут себя диалоги.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/HTTP.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/HTTP.htm index ce9008743..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/HTTP.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/HTTP.htm @@ -1,54 +0,0 @@ - - - - - - HTTP - - - - - - - - - - -

HTTP

-

Событие HTTP - это событие, которое вызывается обратным вызовом одной из функцийhttp_*() , например http_post_string(). Оно фактически генерирует DS Map, которая является эксклюзивной для этого события и хранится в специальной переменной async_load (пожалуйста, смотрите отдельные функции для примеров кода, которые объясняют использование этого события более подробно). Эта DS-карта имеет следующую общую структуру:

-
    -
  • "id": Идентификатор, который был возвращен командой. Если вы отправляете серию запросов http_, вам нужно знать, на какой из них вы получаете ответ, поэтому вы будете использовать это значение для сравнения со значением, которое вы сохранили при первоначальной отправке запроса, чтобы найти нужный запрос.
  • -
  • "status": Возвращает значение меньше 0 в случае ошибки, 0 в случае успеха и 1, если содержимое загружается.
  • -
  • "result": Полученные данные (только строка), или путь к загруженному файлу, если вы использовали http_get_file(). Вы можете получить этот ключ, только если статус равен 0, но это зависит от платформы.
  • -
  • "url": Полный URL-адрес, который вы запросили.
  • -
  • "http_status": Необработанный код статуса http (если доступен). Возвращается стандартный код статуса для большинства браузеров, например: 304 для "Not Modified" или 204 для "No Content" и т.д..
  • -
-

Выше показано, что вы получите при использовании функции http_post_string() но каждая из функций http_ может возвращать немного другую карту, поэтому, пожалуйста, обратитесь к руководству по каждой функции, чтобы узнать точные данные, которые возвращаются для нее.

-

ПРИМЕЧАНИЕ: Поскольку async_load создает карту DS, эти функции особенно полезны в сочетании с функциями json_encode() и json_decode() функциями.

-

Также могут быть дополнительные данные, предоставляемые этой картой, если вы запросили файлы для загрузки. В этом случае "статус" будет иметь значение 1, а карта DS будет содержать эти дополнительные ключи:

-
    -
  • "contentLength": Это размер файла, который, по словам веб-сервера, вы должны ожидать получить (может быть -1, если сервер не возвращает эти данные).
  • -
  • "sizeDownloaded": Размер данных, которые уже были загружены.
  • -
-

Обратите внимание, что событие не будет запускаться для каждого полученного пакета данных, а будет обновляться в любое время во время загрузки в основном цикле игры. Также обратите внимание, что в настоящее время эта функциональность доступна только для обычных целевых платформ Windows.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/IAP.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/IAP.htm index 8f2966abb..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/IAP.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/IAP.htm @@ -1,43 +0,0 @@ - - - - - - IAP - - - - - - - - - - -

Покупка в приложении

-

Это событие может быть вызвано только различными расширениями In App Purchase (IAP) для различных целевых платформ, доступных на Marketplace. - Это событие всегда генерирует карту DS, которая является эксклюзивной для этого события и хранится в специальной переменной async_load. - Эта карта DS будет иметь различные пары ключ/значение в зависимости от функции расширения, которая ее вызвала, но всегда будет присутствовать ключ "id", который может быть использован для идентификации типа события In App Purchase. - которым оно является. Точную информацию о возможных возвращаемых значениях и функциях, генерирующих это событие, можно найти в отдельных PDF-руководствах, прилагаемых к каждому из расширений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Image_Loaded.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Image_Loaded.htm index ac925fd36..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Image_Loaded.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Image_Loaded.htm @@ -1,52 +0,0 @@ - - - - - Изображение загружено - - - - - - - - - - -

Изображение загружено

-

Это событие срабатывает, когда вы загружаете изображение в GameMaker либо на HTML5, либо через URL. Например, вы хотите загрузить изображение sprite и только после его загрузки изменить текущий sprite для экземпляра на новый. В событии Create (или любом другом событии) вы должны написать что-то вроде этого:

-

var _url = "http://www.angusgames.com/game/background1.png";
spr = sprite_add(_url, 0, false, false, 0, 0);

-

Теперь начнется загрузка изображения на устройство или в браузер, но это не будет блокировать GameMaker, пока он ожидает загрузки файла. Вместо этого GameMaker будет продолжать работать в обычном режиме, пока изображение не будет загружено и обратный вызов не вызовет событие Image Loaded Event, в котором будет создана карта DS Map и сохранена в специальной переменной - async_load. Карта содержит следующую информацию:

-
    -
  • "filename": Полный путь к запрашиваемому файлу.
  • -
  • "id": Идентификатор ресурса, который вы загрузили. Это будет то же самое, что и переменная, которой вы присвоили ресурс.
  • -
  • "status": Возвращает значение меньше 0 в случае ошибки.
  • -
-

Затем в этом событии вы присвоите новое загруженное изображение sprite. Следующий пример кода демонстрирует, как будет использоваться возвращаемая информация:

-

if ds_map_find_value(async_load, "id") == spr
{ -
    if ds_map_find_value(async_load, "status") >= 0
    {
        sprite_index = spr;
    }
} -

-

Приведенный выше код сначала проверит id созданной карты DS, затем проверит status обратного вызова. Если значение больше или равно 0 (сигнализирует об успехе), результат от - обратного вызова будет использован для установки индекса sprite вновь загруженного изображения.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Networking.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Networking.htm index fe9abb511..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Networking.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Networking.htm @@ -1,96 +0,0 @@ - - - - - - Работа в сети - - - - - - - - - - -

Работа в сети

-

Networking Event

-

Событие Networking - это событие, которое будет вызвано любым входящим сетевым трафиком и связано с функциями Network Functions. Это событие генерирует специальную карту DS Map, которая предназначена исключительно для этого события и хранится в специальной переменной async_load. Эта карта DS будет содержать различную информацию в зависимости от типа сетевого события, которое ее породило.

-

Общие сетевые мероприятия

-

Следующие ключи являются общими для всех принимаемых сетевых функций и всегда будут присутствовать в карте async_load:

-
    -
  • "тип": В качестве возвращаемого значения имеет одну из констант, перечисленных в таблице ниже, и обозначает тип сетевого события.
  • -
  • "id": Идентификатор сокета (реальное число, возвращаемое функцией network_create_server или network_create_socket), который принимает событие. В большинстве случаев возвращаемый идентификатор сокета - это идентификатор TCP или UDP сокета, вызвавшего событие, однако если событие вызвано на сервере и является событием данных (см. ниже), то идентификатором сокета является идентификатор клиента, отправившего данные.
  • -
  • "ip": IP-адрес сокета (в виде строки).
  • -
  • "порт": Порт, связанный с IP-адресом (полезно при работе с UDP).
  • -
-

Возможными возвращаемыми значениями для ключа "type" могут быть любые из четырех констант, перечисленных ниже:

- - - - - - - - - - - - - - - - - - - - - - - -
ПостояннаяОписание
network_type_connectСобытие было вызвано подключением.
network_type_disconnectСобытие было спровоцировано отключением.
network_type_dataСобытие было вызвано входящими данными.
network_type_non_blocking_connectСобытие было вызвано соединением, настроенным как неблокирующее (для этого можно использовать функцию network_set_config() для этого, или подключиться с помощью network_connect_async() или network_connect_async_raw()).
-

-

Подключение/отключение

-

Если у вас есть событие типа network_type_connect или network_type_disconnect, карта async_load будет иметь следующий дополнительный ключ:

-
    -
  • "socket": Этот ключ будет содержать идентификатор подключающегося/отключающегося сокета.
  • -
-

Если событие имеет тип network_type_non_blocking_connect, то дополнительно будет присутствовать следующий ключ:

-
    -
  • "succeeded": Этот ключ будет равен 0 или 1, где 0 означает, что соединение прервалось по таймеру, а 1 означает, что соединение удалось и сокет готов к использованию.
  • -
-

Стоит отметить, что событие Networking Event не срабатывает у клиентов при отключении сервера, и ни одно из событий network_type_* не срабатывает у клиентов при отключении сервера, к которому они подключены, даже если соединение основано на TCP.

-

Получение данных

-

При возникновении события типа network_type_data, которое означает, что ваша сеть получила данные, созданная карта будет иметь следующие ключи:

-
    -
  • "буфер": Это уникальный "идентификатор буфера", который генерируется событием. Буфер типа "grow", выровненный по байтам на 1, создается для хранения ID, который должен храниться в переменной и использоваться для всех дальнейших вызовов функций к буферу в этом событии. Как и карта async_load, созданный буфер автоматически удаляется из памяти по завершении этого события. Более подробную информацию о буферах можно найти в разделе Справочник - Буферы.
  • -
  • "size": Это размер (в байтах) буферных данных, которые принимаются.
  • -
  • "message_type": (только для WebSockets) - Это будет network_send_binary, если полученное сообщение было в двоичной форме, или network_send_text, если оно было получено в текстовой форме.
  • -
-

ПРИМЕЧАНИЕ Созданный буфер действителен только в этих событиях и будет автоматически освобожден по окончании события.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Push_Notifications.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Push_Notifications.htm index 3eab09633..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Push_Notifications.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Push_Notifications.htm @@ -1,39 +0,0 @@ - - - - - - Push-уведомления - - - - - - - - - - -

Push-уведомления

-

Событие Push-уведомления запускается обратным вызовом из push-уведомления на ОС устройства, либо из локального источника, либо из удаленного источника. Оно генерирует DS Map, которая является эксклюзивной для этого события и хранится в специальной переменной async_load.

-

Это событие используется исключительно расширениями (например, расширением Firebase Cloud Messaging ), поэтому инструкции по использованию этого события см. в документации к вашему расширению.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Save_Load.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Save_Load.htm index 347fef512..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Save_Load.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Save_Load.htm @@ -1,58 +0,0 @@ - - - - - Сохранить / Загрузить - - - - - - - - - - -

Сохранить / Загрузить

-

Это событие будет вызвано обратным вызовом некоторых функций, связанных с загрузкой - и сохранением буферов в файлы, а также при загрузке или выгрузке аудио из памяти. Само событие будет содержать встроенную async_load DS map, которая будет заполнена ключами, необходимыми для конкретной функции. Они перечислены в разделах ниже.

-

-

Буферы

-

Когда вы используете функции buffer_save_async() или buffer_load_async() - асинхронное событие будет инициировано, когда передача данных будет завершена. Это событие заполнит карту async_load следующими парами ключ/значение

-
    -
  • "id": идентификатор асинхронной функции, возвращаемый используемой функцией.
  • -
  • "status": вернет true, если данные были сохранены/загружены правильно, и false в противном случае.
  • -
-

Это позволяет опросить ход сохранения/загрузки и вывести сообщение или сменить комнату и т.д. по завершении процесса.

-

-

Аудиогруппы

-

При работе с аудиогруппами вы можете загружать и выгружать их из памяти с помощью функций audio_group_load() и - audio_group_unload(). При использовании функции load это событие сработает, когда полный набор аудиофайлов, установленных для группы, будет загружен в память и заполнит карту следующими парами ключей - файлов, установленных для группы, был загружен в память и заполнит карту следующими парами ключ/значение:

-
    -
  • "type": это говорит нам о типе вызываемого события и будет "audiogroup_load" для загрузки аудио.
  • -
  • "group_id": вернет идентификатор аудиогруппы, которая была загружена (как определено в редакторе аудиогрупп).
  • -
-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Social.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Social.htm index 6c0387b41..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Social.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Social.htm @@ -1,71 +0,0 @@ - - - - - - Социальная - - - - - - - - - - -

Социальная

-

Это событие может быть вызвано только обратными вызовамиразличных специфических социальных функций и UWP Xbox Live Functions и вернет DS Map, хранящуюся в переменной async_loadсодержащая различные пары ключ/значение в зависимости от обратного вызова функции, которая вызвала событие.

-

Это событие также может быть вызвано воспроизведением видео.

-

Карта DS будет содержать ряд ключей, наиболее важным из которых является ключ "id". Он возвращает константу, которую затем можно проверить в коде, чтобы определить, какой из множества обратных вызовов получило событие. Разобрав этот ключ и сравнив возвращаемое значение с доступными константами, вы можете продолжить извлечение остальной информации из карты.

-

На страницах функций, посвященных достижениям и таблицам лидеров, в разделе "Справочная информация" подробно описаны функции и обратные вызовы, а также константы, используемые для запуска этого события, но есть также определенные обстоятельства, при которых оно будет запущено без вызова функции из запущенной игры:

-
    -
  • когда ваша игра запускается с панели управления ОС
  • -
  • при выполнении задания
  • -
  • когда другой игрок завершает задание
  • -
  • когда игра запускается с приборной панели ОС путем выбора задачи
  • -
-

Любой из вышеперечисленных обратных вызовов вызовет социальное событие, и будет создана карта async_load со следующей информацией (обратите внимание, что для определения каждой из различных причин вызова события используется разное значение ключа "id", но все остальное содержимое карты одинаково):

-
    -
  • "id" - Значение этого ключа будет зависеть от типа обратного вызова, запускающего событие (в основном используется расширениями).
  • -
  • "playerid" - Идентификатор игрока для вызова.
  • -
  • "issuerid" - Идентификатор лица, выдавшего вызов.
  • -
  • "state" - Состояние вызова, которое будет иметь значение от 0 до 3 (в виде строки) для недействительного, ожидающего, завершенного или отклоненного.
  • -
  • "message" - Текстовое сообщение для вызова.
  • -
  • "issueddate" - Дата выдачи вызова
  • -
  • "completeddate" - Дата завершения вызова.
  • -
  • "type" - Тип брошенного вызова.
  • -
  • "identifier" - Идентифицирующая строка для вызова.
  • -
  • "score" - Счет связан с задачей.
  • -
-

Информацию об этом событии в сочетании с целью UWP и функциями XBox Live можно найти на следующей странице:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Steam.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Steam.htm index 0ceca45c1..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Steam.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/Steam.htm @@ -1,141 +0,0 @@ - - - - - - Пар - - - - - - - - - - -

Пар

-

Это событие может быть вызвано только обратными вызоваминекоторых функций расширения Steam и возвращает DS Map, хранящуюся в переменной async_loadсодержащую различные пары ключ/значение в зависимости от обратного вызова функции, вызвавшей событие. Карта всегда будет содержать ключ "event_type", который затем можно разобрать, чтобы найти тип функции, вызвавшей событие, и изменить необходимый код в соответствии с ним.

-

При вызове любой функции, вызывающей это событие, генерируется уникальное значение идентификатора async, которое следует сохранить в переменной и проверить, поскольку карта async_load всегда будет содержать ключ идентификатора, который затем можно разобрать и убедиться, что вы реагируете на правильное событие. Фактически, карта всегда будет содержать следующие ключи, независимо от функции Steam, используемой для генерации асинхронного ответа:

-
    -
  • "id" - Идентификатор async, возвращенный функцией, которая вызвала событие.
  • -
  • "result" - Результат операции (вещественное значение). Это будет либо константа GML ugc_result_success , либо какое-то другое вещественное число. Вы должны проверить наличие этой константы, чтобы убедиться, что вызов был успешным, и если возвращается другое значение, то что-то сработало неправильно. Остальные возможные возвращаемые значения отображаются как результат значения Steam "EResult", и вы должны увидеть steamclientpublic.h в заголовках SDK для всех возможных значений.
  • -
  • "event_type" - строка, обозначающая тип события (подробности см. ниже).
  • -
-

-

Загрузка данных

-

При использовании функций Steam для загрузки таблицы лидеров (либо steam_upload_score(), либо steam_upload_score_buffer()) возвращаемая карта DS будет содержать следующие пары ключ/значение:

-
    -
  • "event_type" - Этот ключ будет содержать значение "leaderboard_upload".
  • -
  • "post_id" - Этот ключ должен соответствовать значению ID, возвращенному вызывающей функцией загрузки.
  • -
  • "lb_name" - Этот ключ хранит название таблицы лидеров, которая была опубликована в
  • -
  • "success" - Будет 1, если сообщение удалось, 0 - нет.
  • -
  • "updated" - Будет 1, если результат в таблице лидеров был действительно обновлен (т.е. новый результат был лучше) или 0 в противном случае.
  • -
  • "score" - Эта клавиша хранит оценку, которая была опубликована.
  • -
-

Примеры этого можно увидеть на страницах, посвященных функциям загрузки партитуры.

-

-

Загрузка таблиц лидеров

-

При использовании функций Steam для загрузки таблицы лидеров (steam_download_scores(), steam_download_scores_around_user() или steam_download_friends_scores()) возвращаемая карта DS будет содержать следующие пары ключ/значение:

-
    -
  • "event_type" - Этот ключ будет содержать значение "leaderboard_download".
  • -
  • "id" - Этот ключ должен соответствовать значению ID, возвращенному вызывающей функцией загрузки.
  • -
  • "status" - Статус обратного вызова, где -1 означает неудачу или отсутствие результатов, а 0 - успех.
  • -
  • "lb_name" - Этот ключ хранит название таблицы лидеров, которая была опубликована в
  • -
  • "numEntries" - Количество "рядов" данных таблицы лидеров, которые возвращаются.
  • -
  • "entries" - строка объекта JSON, содержащая другую карту DS, которая будет содержать либо ключ "default" (означающий, что в ней нет результатов), либо ключ " entries", значение которого вы можете затем получить. Возвращаемое значение для "entries" будет представлять собой список DS, содержащий все ранги из таблицы лидеров, где каждая запись в списке будет ссылаться на другую карту DS, которая будет содержать ключи "name", "score" и " rank", а также может содержать ключ "data" в зависимости от функции, используемой для загрузки.
  • -
-

Мы покажем пример того, как работает загрузка данных о баллах, запросив первую десятку рейтинга для заданной таблицы лидеров и разобрав ее результаты в асинхронном событии Steam (примеры загрузки см. на страницах соответствующих функций). Для начала нам нужно запросить результаты с помощью следующего кода:

-

score_get = steam_download_scores("Game Scores", 1, 10);

-

Это отправит запрос на сервер Steam для получения очков из таблицы лидеров "Game Scores", сохраняя асинхронный ID запроса в переменной "score_get". Затем этот запрос будет обработан в событии Steam Async Event следующим образом:

-

var async_id = ds_map_find_value(async_load, "id");
-
- if (async_id == score_get)
- {
-     var entries = ds_map_find_value(async_load, "entries");
-     var map = json_decode(entries);
-
-     if (ds_map_exists(map, "default"))
-     {
-         ds_map_destroy(map);
-         exit;
-     }
-     else
-     {
-       ds_map_destroy(map);
-       exit;
-       }
-    else
-       {
-       var list = ds_map_find_value(map, "entries");
-       var len = ds_list_size(list);
-       var entry;
-       for(var i = 0; i < len; i++;)
-          {
-          entry = ds_list_find_value(list, i );
-          steam_name[i] = ds_map_find_value(entry, "name");
-          steam_score[i] = ds_map_find_value(entry, "score");
-    steam_rank[i] = ds_map_find_value(entry, "rank");
-          if (ds_map_exists(entry, "data"))
-             {
-             var data = ds_map_find_value(entry, "data");
-             var buffId = buffer_base64_decode(data);
-           var message = buffer_read(buffId, buffer_string);
-             show_debug_message( " -- attached message: " + string(message));
-             buffer_delete(buffId);
-             }
-          ds_map_destroy(entry);
-        }
-       ds_list_destroy(list)
-       }
-    ds_map_destroy(map)
-    }

-

Здесь мы сначала проверяем ключ "id" специальной карты async_load. Если это значение совпадает со значением исходной функции обратного вызова (хранится в переменной "score_get"), мы продолжаем обработку данных. Первое, что мы делаем, это разбираем карту async_load DS Map для ключа "entries", который будет содержать объект JSON, содержащий данные таблицы лидеров. Этот объект JSON затем декодируется (см. json_decode()) как другую DS Map, и этот новый ID карты сохраняется в переменной "map".

-

Эта карта проверяется на наличие ключа "default", и если он найден, то карта уничтожается и событие завершается. Если ключ "default" не найден, код разбирает карту, чтобы извлечь необходимую информацию о таблице лидеров, сначала извлекая DS List из ключа "entries" DS Map, а затем перебирая все элементы списка, чтобы получить еще одну DS Map с name, score и rank каждого элемента. Эти значения сохраняются в массивах, а затем мы проверяем, есть ли дополнительный ключ "data". Если он есть (т.е. оценка была загружена с дополнительным пакетом данных), то мы также разбираем его и отправляем в консоль компилятора для отладки, после чего уничтожаем буфер и продолжаем уничтожать карту. Обратите внимание, что если включен ключ " data", его необходимо декодировать с помощью функции buffer_base64_decode() прежде чем он будет правильно прочитан.

-

После завершения цикла список записей уничтожается, как и карта, из которой он был взят. Нет необходимости уничтожать карту async_load DS Map, поскольку GameMaker сделает это за вас.

-

-

Загрузка пользовательского контента (UGC)

-

При использовании функций Steam для загрузки пользовательского контента (UGC), некоторые из них будут вызывать это событие. Однако каждая функция будет генерировать карту async_load DS Map с различными парами ключ/значение (хотя они всегда будут содержать общие ключи "id", "result" и "event_type"), поэтому подробности и примеры смотрите на странице, посвященной используемой функции.

-

-

Уникальные события UGC

-

Асинхронное событие Steam также может быть вызвано, когда пользователь подписывается на элемент вне игры - например, он переходит в браузер, подписывается на новый элемент и возвращается в игру. В этих случаях карта async_load будет содержать только следующие данные (и ни одного из значений по умолчанию, перечисленных в верхней части этой страницы):

-
    -
  • "event_type" - Эта клавиша будет удерживать константу ugc_item_installed.
  • -
  • "published_file_id" - идентификатор нового установленного элемента UGC (вы можете использовать функцию steam_ugc_get_item_install_info(), чтобы получить путь к установленному элементу)
  • -
-

Событие Steam Async также может быть инициировано, когда на элемент семинара подписываются - либо из приложения, либо из браузера семинара - и в этих случаях карта async_load будет содержать следующие пары ключ/значение:

-
    -
  • "event_type" - Эта клавиша будет удерживать константу ugc_item_subscribed.
  • -
  • "published_file_id" : Этот ключ содержит ID опубликованного файла нового подписанного элемента.
  • -
-

Событие сработает, если какой-либо элемент будет снят с подписки, при этом карта DS будет содержать следующее:

-
    -
  • "event_type" - Эта клавиша будет удерживать константу ugc_item_unsubscribed.
  • -
  • "published_file_id" : Этот ключ содержит ID опубликованного файла неподписанного элемента.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/System.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/System.htm index 3cb36ad41..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/System.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Async_Events/System.htm @@ -1,97 +0,0 @@ - - - - - - Система - - - - - - - - - - -

Система

-

Это событие может быть вызвано только обратным вызовом от события системного уровня (например, обнаружение геймпада или автоматический вход в XBox Live), и оно вернет DS Map, хранящуюся в переменной async_loadсодержащая различные пары ключ/значение в зависимости от события системного уровня, которое вызвало обратный вызов. Этими событиями являются:

-

-

Игровые планшеты

-

Когда это событие срабатывает при подключении или отключении геймпада, оно возвращает одну из следующих пар ключ/значение в карте async_load:

-
    -
  • "event_type" - тип полученного системного события, которое будет одной из следующих строк: -
      -
    • "gamepad discovered" - происходит, когда система сообщает о подключении нового геймпада
    • -
    • "gamepad lost" - происходит, когда система теряет соединение с геймпадом
    • -
    -
  • -
  • "pad_index" - индекс добавленной или удаленной площадки
  • -
-

Это событие позволяет перенести всю логику проверки геймпада из события Step Event или события Alarm в событие System Event и запускать ее только тогда, когда это действительно необходимо.

-

ВАЖНО! Это событие НЕ будет запущено, если у вас нет хотя бы одной gamepad_* функция или визуальное действие GML в коде вашей игры. Программа запуска инициализирует подсистему геймпада только тогда, когда в проекте используются функции, поэтому если их нет, добавление/удаление геймпада не вызовет системного события.

-

-

Виртуальные клавиатуры

-

Когда это событие срабатывает при открытии или закрытии виртуальной клавиатуры, оно возвращает следующие пары ключ/значение в карте async_load:

-
    -
  • "event_type" - тип полученного системного события, которое будет "virtual keyboard status" для виртуальных клавиатур.
  • -
  • "screen_height" - высота виртуальной клавиатуры (в пикселях). Это значение будет равно 0, если клавиатура невидима.
  • -
  • "keyboard_status" - текущее состояние клавиатуры, возвращается в виде одной из следующих строк: -
      -
    • "скрытие"
    • -
    • "скрытый"
    • -
    • "показывающий"
    • -
    • "видимый"
    • -
    -
  • -
-

Дополнительную информацию о виртуальной клавиатуре см. здесь.

-

-

Xbox Live

-

Асинхронное системное событие может быть вызвано при нацеливании на Xbox One с помощью экспорта UWP и установки опции Enable Xbox Live в опциях UWP Game Options. При запуске проекта GameMaker UWP, в котором включена функция Xbox Live, проект автоматически попытается беззвучно войти в Xbox Live. Результаты этой попытки входа будут возвращены в виде одной из следующих пар ключ/значение в карте async_load:

-
    -
  • "event_type" - тип полученного системного события, которое будет одной из следующих строк:
  • -
  • "user signed in" - тихая регистрация пользователя была успешно завершена
  • -
  • "user sign in failed" - тихая регистрация пользователя не удалась (когда это происходит, вы можете использовать функцию xboxlive_show_account_picker() чтобы заставить пользователя выбрать учетную запись для входа в систему)
  • -
  • "user signed out" - пользователь вышел из системы
  • -
-

Другие функции для Xbox Live также могут вызывать это событие, но различные обратные вызовы для этих функций подробно описаны на страницах соответствующих функций. Более подробную информацию о конкретных функциях, доступных для Xbox Live, можно найти здесь.

-

-

Состояние аудиосистемы

-

Этот тип события специально предназначен для использования при работе с HTML5-целью, поскольку он будет срабатывать каждый раз при изменении состояния контекста Web Audio. Это означает, что если у вас есть, например, зацикленная фоновая музыка, то вы можете приостановить ее или остановить и запустить заново, основываясь на срабатывании этого события. Это можно проверить, найдя следующую пару ключ/значение в карте async_load:

-
    -
  • "event_type" - тип полученного системного события, которое будет строкой "audio_system_status", если аудиосистема инициализировалась или изменился контекст.
  • -
-

Если срабатывает этот тип события, то в карте async_load появляется дополнительный ключ:

-
    -
  • "status" - Статус аудиосистемы, который будет одной из следующих двух строк
  • -
  • "available" - аудиосистема инициализирована и доступна для воспроизведения звуков.
  • -
  • "unavailable" - Аудиосистема не инициализирована, или контекст не запущен в данный момент, и поэтому не может воспроизводить звуки (все функции воспроизведения звука вернут -1)
  • -
-

Более подробную информацию о конкретных функциях, доступных для Audio, можно найти здесь.

-

ПРИМЕЧАНИЕ: Хотя это событие предназначено для использования с целью HTML5, оно будет срабатывать и на всех других платформах, но на всех (кроме HTML5) оно будет срабатывать только один раз при запуске игры, когда аудиодвижок впервые инициализируется.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Draw_Events.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Draw_Events.htm index e51f2e413..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Draw_Events.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Draw_Events.htm @@ -1,126 +0,0 @@ - - - - - События розыгрыша - - - - - - - - - - -

События розыгрыша

-

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

-

Обычное событие Draw подразделяется на три подтипа: Начало рисования, стандартное рисование и - Draw End. В общем, вам понадобится использовать только стандартное событие Draw, и вы должны знать, что у всех экземпляров в комнате это событие будет срабатывать на каждом шаге игры, поэтому это событие будет вызываться всегда, пока - пока у экземпляра флаг видимости установлен в true. Важно понимать, что даже если вы ничего не определили для этого под-события в свойствах объекта (т.е. нет ни кода, ни действий), если объекту назначен sprite, у него все равно будет вызываться событие рисования. - Это происходит потому, что в GameMaker есть два способа рисования объектов в событии Draw:

-
    -
  • рисование по умолчанию, то есть когда вы определяете sprite в свойствах объекта и не помещаете никаких действий или кода в обычное событие Draw, и в этом случае GameMaker нарисует назначенный sprite автоматически. Обратите внимание, что любые преобразования - которые вы выполняете в других событиях, чтобы изменить масштаб изображения, индекс, смешивание и т.д... будут также отражены, пока событие рисования пустое.
  • -
  • пользовательское рисование, когда вы помещаете код или действия в событие рисования. Это говорит GameMaker: " Я хочу управлять тем, что вы рисуете для экземпляров этого объекта", и полностью отменяет стандартное - рисование. Это означает, что, например, вы можете иметь объект с назначенным sprite, затем установить событие draw на draw text, и текст будет нарисован на экране, но sprite не будет нарисован, так как вы не сказали GameMaker нарисовать его вместе с текстом. - рисовать его вместе с текстом.
  • -
-

Остальные события розыгрыша объясняются в разделах, перечисленных ниже:

-

-

Начало рисования и конец рисования

-
-

Помимо основного события Draw, у вас также есть события Draw Begin и Draw End. Они действуют точно так же, как и стандартные события Draw (т.е. они будут рисовать все, что вы поместите в них на каждом шаге игры и для - но они не рисуют ничего "по умолчанию", если они не были явно добавлены к объекту, и всегда выполняются до/после стандартного события Draw. Таким образом, когда игра запущена, у вас всегда будет событие - событие Draw Begin для всех экземпляров, затем событие Draw для всех экземпляров, и, наконец, событие Draw End для всех экземпляров.

-

Таким образом, вы можете рисовать объекты или устанавливать свойства рисования на шаге Draw Begin в одном экземпляре и быть уверенным, что все экземпляры со стандартным событием Draw или Draw End будут использовать эти свойства или рисовать поверх того, что нарисовал первый экземпляр. По сути, - это надежный способ гарантировать, что определенные вещи будут нарисованы в определенное время, подобно тому, как это делают события Begin Step и End Step .

-

Есть несколько моментов, на которые следует обратить внимание при рисовании в GameMaker, будь то sprite, шейдер или 3D-буфер:

-
    -
  • Событие draw - это очень интенсивное событие, поскольку оно занимает больше всего времени и ресурсов... в связи с этим никогда не стоит делать в событии draw что-либо, кроме рисования. Поэтому приберегите свой большой код или сложные действия - для события Step, Alarms или любого другого подходящего события, но оставьте событие draw для рисования, поскольку это то, что оно делает лучше всего.
  • -
  • Если у вашего объекта параметр visible установлен в значение off (чтобы экземпляры объекта не рисовались), то все события рисования пропускаются (за исключением события Resize ). Это означает, что если сделать экземпляр - невидимым, остановит выполнение всего кода, размещенного в любом из этих событий, поэтому не размещайте важный код в событиях рисования, если они не будут видимыми.
  • -
  • То, что вы рисуете, не имеет никакого отношения к выбранному вами механизму столкновений (традиционному или физическому), поскольку это определяется свойствами объекта и sprite (или маской), которую дали объекту.
  • -
-

-
-

Нарисовать графический интерфейс пользователя

-
-

Тип события Draw GUI относится к категории Draw Event и специально разработан для рисования элементов GUI, на которые не влияет масштаб или поворот камеры просмотра. Это означает, что вы - что экземпляр может нарисовать все элементы вашего HUD или пользовательского интерфейса без необходимости основывать позиционирование элементов на положении экземпляра в комнате или положении - текущего вида камеры.

-

При рисовании в этом событии важно понимать, что координаты рисования не меняются даже при активных видах камеры, а (0,0) всегда является верхним левым углом либо поверхности приложения, либо дисплея (см. - примечание в нижней части этого раздела), а ширина и высота по умолчанию составляют 1:1 с поверхностью приложения. Упорядочение глубины сохраняется между экземплярами на разных слоях (поэтому экземпляр на более высоком слое будет рисоваться под - один на более низком слое), а также внутри самих событий, так как событие Draw GUI Begin сначала отрисовывается для всех экземпляров, затем стандартное событие Draw GUI отрисовывается для всех экземпляров поверх него, и, наконец, событие Draw Gui End - срабатывает.

-

Таким образом, вы можете рисовать объекты или устанавливать свойства рисования в Draw GUI Begin в одном экземпляре и быть уверенным, что все экземпляры со стандартным событием Draw GUI или Draw GUI End будут использовать эти свойства или рисовать поверх того, что нарисовал первый экземпляр. По сути, - это надежный способ гарантировать, что определенные вещи будут нарисованы в определенное время, подобно тому, как это делают события Begin Step и End Step.

-

Эти события также можно использовать вместе с обычными событиями Draw (на которые, как и на обычные, влияют положение, масштаб и вращение вида камеры). Если у вас нет события Draw Event, но есть событие Draw GUI Event, то GameMaker все равно - по умолчанию нарисует sprite для данного экземпляра (если он есть), как обычно.

-

Что касается других событий рисования, события Draw GUI всегда будут рисоваться поверх всего, что нарисовано в обычных событиях рисования. Таким образом, если у вас есть экземпляр на нижнем слое с событием Draw GUI, он будет рисоваться поверх экземпляра, который находится на более высоком слое - с обычным событием рисования. Если оба экземпляра имеют событие Draw GUI, то порядок слоев будет соблюден.

-

ПРИМЕЧАНИЕ: Это событие по умолчанию будет рисовать 1:1 с размером поверхности приложения, который обычно является размером комнаты или порта просмотра. Это означает, что если у вас включена коррекция соотношения сторон в опциях игры - графический интерфейс не будет рисоваться поверх черных полос, которые "обрамляют" игру. Это поведение можно отключить с помощью функции display_set_gui_maximise() функция, - и вы также можете зафиксировать событие GUI определенного размера, который затем будет автоматически масштабироваться в соответствии с размерами дисплея или поверхности приложения с помощью функции display_set_gui_size().

-

-
-

До и после жеребьевки

-
-

События Pre Draw и Post Draw относятся к категории Draw Event. Однако, в отличие от других событий Draw, эти события рисуют непосредственно в буфер дисплея, который будет иметь размер - объединенного пространства экрана для всех видовых экранов, видимых в данный момент, или размер окна, если используется только один видовой экран или вообще не используется. Изображение ниже иллюстрирует это:

-

Таким образом, если вы используете события Pre или Post draw, вы рисуете в полноэкранную цель рендеринга (буфер дисплея), которая будет иметь - тот же размер, что и окно, под которое подгоняются все видовые экраны. Если у вас нет активных видовых экранов, то вместо этого устанавливается размер самого окна.

-

Событие Pre Draw запускается перед любым другим событием рисования, и в нем вы можете устанавливать значения, задавать свойства рисования и даже рисовать, не заботясь о видовых экранах или размере слоя GUI (размер слоя GUI может быть таким же, как экранный - буфер, но это может быть и не так, поскольку вы можете установить разрешение GUI в коде).

-

Стоит отметить, что это событие происходит до того, как буфер дисплея будет очищен для обычного рисования, а это значит, что если вы не отключите очистку вида в редакторе комнаты, то ничего из нарисованного в событии Pre Draw не будет видно, так как при - первая отрисовка видового экрана очистит его. Если вы хотите иметь возможность видеть сквозь сами видовые экраны, или вы вообще не используете видовые экраны, то вам также следует установить цвет фона с альфа 0 в параметре Редактор комнат.

-

ПРИМЕЧАНИЕ: Если вы отключите эти опции, вы можете заметить нежелательные артефакты, рисуемые на экране при тестировании игры (например, "следы" от инстансов). Это происходит потому, что вы рисуете прямо поверх предыдущего кадра - буфера дисплея без его очистки. Однако вы можете использовать draw_clear_alpha() чтобы сделать это - самостоятельно.

-

Событие Post Draw запускается после всех стандартных событий рисования, но перед событиями Draw GUI. Как и событие Pre Draw, оно основано на размере буфера дисплея и размещается перед событиями Draw GUI, чтобы вы могли - выполнять эффекты постобработки и другие вещи на весь экран просто и легко, не вмешиваясь в любые элементы HUD/ GUI. - которые могут присутствовать в вашей игре.

-

-
-

Изменение размера окна

-
-

Этот тип события относится к категории событий Draw Event, и хотя на самом деле он ничего не рисует, он реагирует на изменения в буфере дисплея - в частности, он предназначен для реагирования на изменение размера буфера дисплея UWP при - игровое окно "привязывается".

-

На целевой платформе UWP важно уловить изменение размера буфера дисплея в результате "привязки" игрового окна (когда пользователь, например, перетаскивает окно в сторону дисплея). Это событие как раз и - срабатывает при каждом изменении окна, позволяя вам добавлять сюда пользовательский код, который будет изменять размер представления или позиционировать элементы HUD по мере необходимости. Эта функция предоставляется как удобный - чтобы избежать необходимости постоянно проверять код события.

-

ПРИМЕЧАНИЕ: Вы не можете рисовать в этом событии! Оно запускается при изменении размера окна и предназначено только для улавливания этого изменения... любое рисование, которое должно быть выполнено, должно быть выполнено в одном из других событий draw.

-

-
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Event_Order.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Event_Order.htm index 944a6ac38..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Event_Order.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Event_Order.htm @@ -1,67 +0,0 @@ - - - - - Порядок проведения мероприятий - - - - - - - - - - -

Порядок проведения мероприятий

-

Рассматривая события в GameMaker, следует отметить, что точный порядок, в котором ВСЕ события будут происходить на каждом этапе, не может быть четко определен, просто потому, что это зависит от внутренней работы GameMaker, а она может меняться по мере развития программы. Однако есть определенные события, которые всегда будут происходить в одном и том же порядке.

-

Первый набор событий, которые всегда будут происходить одинаково, - это события, происходящие при первом входе в комнату. Различные события будут происходить в следующем порядке:

-
    -
  • Переменные объекта / переменные экземпляра инициализируются (это переменные, которые вы можете определить в IDE редактора объектов или редактора комнат). - Если у вас есть объект с переменными, то они будут созданы до всего остального, а затем все экземпляры, которые имеют переменные, будут определены после, так что вы можете перезаписать переменные объекта переменными конкретного экземпляра в редакторе комнаты. - редактор.
  • -
  • событиеCreate , за которым следует код создания экземпляра каждого экземпляра - таким образом, по мере создания каждого экземпляра будет выполняться сначала событие Create, а затем код создания экземпляра - прежде чем перейти к следующему создаваемому экземпляру.
  • -
  • Событие начала игры - это событие срабатывает один раз в самой первой комнате игры для всех экземпляров, помещенных в комнату из редактора комнат (обратите внимание, что вызов функции game_restart() вызовет это событие снова.
  • -
  • Код создания комнаты - это одноразовый код, написанный в редакторе комнат для первого входа в комнату.
  • -
  • Событие начала комнаты для всех экземпляров - одно из событий категории "другие", которое будет происходить для всех экземпляров, постоянных или иных
  • -
-

Стоит отметить, что вы также можете установить порядок создания конкретных экземпляров в самом редакторе помещений, перемещая их вверх или вниз по списку в окне Instance Layer Properties.

-

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

-
    -
  • Событие начала шага
  • -
  • Событие шага (обратите внимание, что событие шага выполняется непосредственно перед тем, как экземпляры будут помещены в свои новые позиции)
  • -
  • Событие конца шага
  • -
-

Все события для рисования также всегда обрабатываются в следующем порядке (за исключением события Window Resize , которое запускается по-другому):

-
    -
  • Мероприятие перед жеребьевкой
  • -
  • Событие начала рисования
  • -
  • Ничейное событие
  • -
  • Событие окончания рисования
  • -
  • Событие после жеребьевки
  • -
  • Событие начала рисования графического интерфейса
  • -
  • Событие рисования графического интерфейса
  • -
  • Конечное событие Draw GUI
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Gesture_Events.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Gesture_Events.htm index eaa4b0a90..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Gesture_Events.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Gesture_Events.htm @@ -1,540 +0,0 @@ - - - - - - События жестов - - - - - - - - - - -

События, связанные с жестами

-

The Gesture Events

-

События в категории Gesture Event будут запускаться всякий раз, когда GameMaker обнаружит "жест" мыши или событие на сенсорном экране (хотя эти события жестов разработаны специально для мобильного использования, они также могут быть использованы на других объектах для обнаружения мыши, хотя в этом случае они не будут обнаруживать множественные касания). Целью системы жестов является попытка распознавания вводимых данных на более высоком уровне, чем прямые функции считывания мыши\ касаний, и она разработана для упрощения реализации часто используемых вводов на сенсорных устройствах.

-

ПРИМЕЧАНИЕ Эти события не будут срабатывать на платформе HTML5 из-за отсутствия поддержки мультитач с использованием этих событий на этой платформе. Если вы ищете жесты на этой платформе, то вам следует использовать функции устройства.

-

Вы можете выбрать обнаружение жестов экземпляра или глобальных жестов , при этом события жестов экземпляра будут срабатывать только в том случае, если первоначальное касание/щелчок происходит на экземпляре в комнате. Обратите внимание, что для срабатывания этого события у экземпляра должна быть действительная маска столкновения (подробнее см. разделы " Редактор Sprite - Маска столкновения " и " Редактор объектов - Маска столкновения "). Глобальные события, однако, будут вызываться при касании/щелчке в любом месте игровой комнаты и для всех экземпляров, имеющих это событие.

-

Когда жест распознан, он вызовет одно или несколько доступных событий, причем вызванное событие будет зависеть от типа жеста, который был обнаружен. В каждом случае, однако, для вас будет создана карта DS Map, которая будет храниться во встроенной переменной event_data. Доступные ключи будут зависеть от того, каким событием она была создана, и показаны в каждом из подразделов ниже.

-

ПРИМЕЧАНИЕ: Переменная event_data действительна только в этих событиях, поскольку карта DS, на которую она указывает, автоматически создается в начале события, а затем снова уничтожается в конце, при этом в остальное время эта переменная сбрасывается в значение -1.

-

Стоит отметить, что если у вас есть несколько экземпляров под позицией, которой касаются, и все они имеют событие жеста, то сработают все они, а не только "самый верхний" экземпляр. Также обратите внимание, что при использовании нескольких видов камеры и перетаскивании экземпляра возвращаемые значения будут основаны на том виде, в котором вы находились в момент первоначального касания/щелчка - это справедливо для всех последующих событий в этом жесте для данного экземпляра. Поэтому при касании и перетаскивании экземпляра в одном виде, а затем отпускании касания в другом виде, значения будут возвращены относительно исходного вида, в котором жест был впервые обнаружен.

-

-

События, связанные с касанием, перетаскиванием и пролистыванием

-
-

События "Tap", "Drag" и "Flick" основаны на одном прикосновении или щелчке мыши по экрану, а карта event_data DS Map будет содержать следующие клавиши:

-
    -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
КлючОписание
"gesture"
Это идентификационное значение, уникальное для выполняемого жеста. Это позволяет связать вместе различные части жестов, состоящих из нескольких частей (например, начало перетаскивания, перетаскивание и конец перетаскивания).
"touch"
Это индекс касания, который используется для жеста. В общем случае он начинается с 0 и увеличивается для каждого удерживаемого пальца, затем сбрасывается до 0, когда все пальцы убираются, но если пользователь касается экрана в другом месте, то значение будет больше 0. - где-либо еще, когда это событие будет вызвано другим прикосновением, то значение будет больше 0.
"posX"
Это положение X касания в пространстве комнаты.
"posY"
Это положение касания в пространстве Y в помещении.
"rawposX"
Это необработанная позиция X касания в пространстве окна (эквивалентно получению позиции мыши с помощью функции device_mouse_raw_x()).
"rawposY"
Это необработанная позиция по оси Y в пространстве окна (эквивалентно получению позиции мыши с помощью функции device_mouse_raw_y()).
"guiposX"
Это положение касания в пространстве gui X (эквивалентно получению положения мыши с помощью функции device_mouse_x_to_gui()).
"guiposY"
Это положение касания в пространстве gui по оси Y (эквивалентно получению положения мыши с помощью функции device_mouse_y_to_gui()).
"diffX"
Это разница в пространстве X между положением текущего касания и положением последнего касания в этом жесте.
"diffY"
Это разница в пространстве Y между положением текущего касания и положением последнего касания в этом жесте.
"rawdiffX"
Это необработанная разница X между положением текущего касания и положением последнего касания в этом жесте.
"rawdiffY"
Это необработанная разница по Y между положением текущего касания и положением последнего касания в этом жесте.
"guidiffX"
Это разница по оси X в пространстве gui между положением текущего касания и положением последнего касания в этом жесте.
"guidiffY"
Это разница по оси Y в пространстве gui между положением текущего касания и положением последнего касания в этом жесте.
"viewstartposX"
Это начальная позиция комнаты X текущего жеста.
"viewstartposY"
Это начальная позиция комнаты Y текущего жеста.
"rawstartposX"
Это необработанная начальная позиция X текущего жеста.
"rawstartposY"
Это необработанная начальная позиция Y текущего жеста.
"guistartposX"
Это начальная позиция X в gui-space для текущего жеста.
"guistartposY"
Это начальная позиция Y в пространстве gui текущего жеста.
"isflick"
- Доступно только в событии Drag End. Этот параметр устанавливается в 1, если конец перетаскивания определяется как щелчок. Это означает, что вам не нужно отдельное событие Flick, если вы все равно обрабатываете перетаскивание.
-

-

Нажмите

-
-

Событие Tap срабатывает при касании или нажатии на экземпляр или - если это глобальное событие - когда игра регистрирует касание или нажатие в любом месте комнаты. Касание считается быстрым касанием и отпусканием, а если касание длится слишком - то оно будет считаться перетаскиванием (и вызовет события жеста Drag вместо события Tap). Это событие генерирует карту event_data DS, которую можно использовать для получения информации о событии. Например:

-

Создать событие

-

x_goto = x;
y_goto = y;

-

Tap Event

-

x_goto = event_data[? "posX"];
y_goto = event_data[? "posY"];

-

Шаговое мероприятие

-

var _pd = point_distance(x, y, x_goto, y_goto);
move_towards_point(x_goto, y_goto, clamp(_pd, 0, 5);

-

Приведенный выше код обнаружит касание экрана, затем получит позицию касания и переместит экземпляр в эту позицию. Обратите внимание, что если вы хотите иметь большее или меньшее время обнаружения касания, вы можете установить его с помощью функции gesture_drag_time(). - Она задает время между первоначальным обнаружением и переходом касания в перетаскивание, поэтому установите большее значение, чтобы сделать обнаружение касания более долгим, или меньшее значение, чтобы сделать его более коротким (значение в секундах и по умолчанию равно 0,16).

-

-
-

Двойной удар

-
-

Событие Double Tap срабатывает, когда к экземпляру дважды быстро прикасаются или нажимают на него (или - если это глобальное событие - когда игра регистрирует два быстрых прикосновения или нажатия в любом месте комнаты). Двойное касание считается двумя - быстрыми касаниями и отпусканием, но если одно из касаний длится слишком долго, то это будет считаться перетаскиванием (и вызовет события жеста Drag вместо события Double Tap). Это событие генерирует event_data DS - карту, которую можно использовать для получения информации о событии. Например:

-

Создать событие

-

x_goto = x;
y_goto = y;

-

Мероприятие "Двойной удар

-

instance_destroy();

-

Приведенный выше код просто обнаруживает двойное касание и затем уничтожает экземпляр. Обратите внимание, что вы можете установить время между касаниями для запуска двойного касания с помощью функции gesture_double_tap_time() (которая - имеет значение по умолчанию - в секундах - 0,16), а также можно задать расстояние между касаниями с помощью функции gesture_double_tap_distance() (если - второе касание будет обнаружено за пределами этого расстояния, оно будет считаться обычным касанием).

-

-
-

Начало перетаскивания

-
-

Событие Drag Start срабатывает, когда пользователь удерживает прикосновение или щелчок, не отпуская его. Оно сработает один раз, когда пройдет заданное время после первого касания, которое по умолчанию составляет 0,16 секунды (хотя вы можете установить любое другое значение в секундах с помощью функции - любое другое значение в секундах с помощью функции gesture_drag_time()). После срабатывания этого события и до тех пор, пока - пользователь удерживает прикосновение/клик, то событие Перетаскивание будет вызываться каждый шаг, пока прикосновение/клик не будет отпущено. Это событие генерирует карту event_data DS, которую можно затем использовать для получения информации - о событии. Например:

-

Создать событие

-

drag_offsetX = 0;
drag_offsetY = 0;

-

Событие начала перетаскивания

-

drag_offsetX = x - event_data[?"posX"];
drag_offsetY = y - event_data[?"posY"];

-

Приведенный выше код использует событие Drag Start, чтобы получить позицию касания/щелчка и использовать ее для установки значения смещения по осям x и y. Затем это значение можно использовать при перетаскивании экземпляра, чтобы убедиться, что он не "перепрыгнет" в позицию - в котором было обнаружено касание/щелчок (продолжение этого примера см. в событии "Перетаскивание" ниже).

-

-
-

Перетаскивание

-
-

Событие перетаскивания запускается после события Drag Start и срабатывает для каждого шага, когда пользователь удерживает прикосновение/щелчок на экземпляре (или экране, если это глобальное событие) и перемещается больше, чем определенный порог перетаскивания. - По умолчанию это расстояние составляет 0,1 дюйма, но может быть установлено с помощью функции gesture_drag_distance(). Если не происходит - движение или движение меньше определенного порога, событие не будет вызвано. Это событие генерирует карту event_data DS, которую можно использовать для получения информации о событии. Например:

-

Создать событие

-

drag_offsetX = 0;
drag_offsetY = 0;

-

Событие начала перетаскивания

-

drag_offsetX = x - event_data[?"posX"];
drag_offsetY = y - event_data[?"posY"];

-

Событие перетаскивания

-

x = event_data[?"posX"] + drag_offsetX;
y = event_data[?"posY"] + drag_offsetY;

-

Приведенный выше код примера использует переменные смещения, установленные в событии Drag Start, для перемещения экземпляра при срабатывании события перетаскивания.

-

-
-

Конец волочения

-
-

Событие Drag End срабатывает, когда пользователь отпускает прикосновение/щелчок на экземпляре (или экране, если событие глобальное). Это событие генерирует карту event_data DS, которую вы можете использовать для получения информации о событии. - но в этом событии карта будет иметь дополнительный ключ: "isflick". Flick рассчитывается как расстояние в секунду, на которое произошло перетаскивание, и значение для ключа "isflick" - будет истинным, если оно больше определенного значения расстояния в секунду, и ложным в противном случае. Обратите внимание, что по умолчанию это 2 дюйма в секунду, но вы можете установить другое значение с помощью функции gesture_flick_speed(). - Также обратите внимание, что существует специальное событие Flick, которое также будет запущено, если переменная "isflick" будет истинной. Примером использования может быть:

-

Создать событие

-

flickVelX = 0.0;
flickVelY = 0.0;

-

Событие окончания перетаскивания

-

isFlick = event_data[?"isflick"];
if (isFlick)
    {
    flickVelX = event_data[?"diffX"];
    flickVelY = event_data[?"diffY"];
    }
else -
    {
    flickVelX = 0;
    flickVelY = 0;
    } -

-

Шаговое мероприятие

-

x += flickVelX;
y += flickVelY;
flickVelX *= 0.7;
flickVelY *= 0.7;

-

Приведенный выше код просто получает разницу в положении x и y последнего события перетаскивания и текущего события Drag End, и если перемещение было больше порога щелчка, он устанавливает некоторые переменные, которые используются для перемещения экземпляра - в событии шага.

-

-
-

Flick

-
-

Событие Flick срабатывает только в том случае, если прикосновение/клик удерживается, перетаскивается, а затем отпускается, и расстояние между последним положением перетаскивания и положением отпускания превышает 2 дюйма в секунду (это настройка по умолчанию, хотя ее можно изменить с помощью функции - можно изменить с помощью функции gesture_flick_speed()). Это событие создаст карту event_data DS, которую можно использовать для получения информации о событии. Например:

-

Создать событие

-

flickVelX = 0.0;
flickVelY = 0.0;

-

Флик-событие

-

flickVelX = event_data[?"diffX"];
flickVelY = event_data[?"diffY"];

-

Шаговое мероприятие

-

x += flickVelX;
y += flickVelY;
flickVelX *= 0.7;
flickVelY *= 0.7;

-

Приведенный выше код просто получает разницу в положении x и y последнего события перетаскивания и текущего события Flick, и если перемещение было больше порога flick, он устанавливает некоторые переменные, которые используются для перемещения экземпляра в событии шага - событии шага.

-
-

-
-

События

-
-

События "Pinch" основаны на одновременном распознавании двух прикосновений к экрану устройства, когда одно из них (или оба) переместилось более чем на определенное расстояние. Угол перемещения прикосновений вместе с перемещением каждого прикосновения является тем, что - определяют обнаружение события Pinch или Rotate, где (в случае события типа Pinch):

-
    -
  • Если одно из касаний не движется, то другое должно двигаться к нему или от него в пределах порогового угла (который можно задать с помощью функций gesture_pinch_angle_towards() и - - gesture_pinch_angle_away()).
  • -
  • Если оба касания движутся, их скорости должны быть примерно в противоположных направлениях, а также выполняется проверка углового порога, чтобы убедиться, что касания движутся примерно в одном направлении.
  • -
-

При обнаружении двух касаний и движения, соответствующих вышеуказанным критериям, будет инициировано событие Pinch Event, и в каждом из этих событий карта event_data DS Map будет заполнена следующими клавишами:

-
    -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
КлючОписание
"gesture"
Это идентификационное значение, уникальное для выполняемого жеста. Это позволяет связать вместе различные части жестов, состоящих из нескольких частей (например, начало перетаскивания, перетаскивание и конец перетаскивания).
"touch1"
Это индекс первого прикосновения, которое используется как часть жеста щипка. Обычно он равен 0, но если пользователь прикасается к экрану в другом месте, когда это событие вызвано другим прикосновением, то значение будет - больше 0.
"touch2"
Это индекс второго касания, которое используется как часть жеста щипка. Обычно он на 1 больше, чем значение для touch1, но может быть и другим, в зависимости от количества определяемых касаний в других местах.
"posX1"
Это положение X в пространстве комнаты для первого касания.
"posY1"
Это положение по оси Y в пространстве помещения для первого касания.
"rawposX1"
Это необработанная позиция X в пространстве окна при первом касании (эквивалентно получению позиции мыши с помощью функции device_mouse_raw_x()).
"rawposY1"
Это необработанная позиция Y в пространстве окна при первом касании (эквивалентно получению позиции мыши с помощью функции device_mouse_raw_y()).
"guiposX1"
Это позиция X в пространстве gui первого касания (эквивалентно получению позиции мыши с помощью функции device_mouse_x_to_gui()).
"guiposY1"
Это позиция Y в пространстве gui второго касания (эквивалентно получению позиции мыши с помощью функции device_mouse_y_to_gui()).
"posX2"
Это положение X в пространстве комнаты для второго касания.
"posY2"
Это положение по оси Y в пространстве помещения для второго касания.
"rawposX2"
Это необработанная позиция X в пространстве окна для первого касания.
"rawposY2"
Это необработанная позиция Y в пространстве окна для второго касания.
"guiposX2"
Это позиция X gui-space второго касания.
"guiposY2"
Это положение по оси Y в пространстве gui второго касания.
"midpointX"
Положение X средней точки между двумя касаниями в пространстве комнаты.
"midpointY"
Положение Y средней точки между двумя касаниями в пространстве комнаты.
"rawmidpointX"
Это необработанное положение X средней точки в пространстве окна.
"rawmidpointY"
Это необработанное положение Y средней точки в пространстве окна.
"guimidpointX"
Это положение X средней точки в gui-space.
"guimidpointY"
Это положение Y средней точки в пространстве gui.
"relativescale"
Это разница в масштабе по сравнению с последним событием в этом жесте (поэтому для событий Pinch In это значение всегда будет меньше 1.0, а для событий Pinch Out - больше 1.0).
"absolutescale"
Это масштаб по сравнению с тем, где находились пальцы в момент начала жеста (так, если расстояние между пальцами уменьшилось вдвое, то этот показатель будет равен 0,5, а если расстояние удвоилось, то 2,0).
-

-

Запуск

-
-

Событие Pinch Start срабатывает, когда к экземпляру (или экрану, если событие глобальное) прикоснулись два "пальца" (и прикосновение сохраняется), а затем один или оба "пальца" перемещаются. Если прикосновения перемещаются - друг от друга или друг к другу больше, чем минимальное контрольное расстояние (которое по умолчанию равно 0,1 дюйма, но его можно установить с помощью функции gesture_pinch_distance()), - и угол между ними находится в пределах заданного значения (по умолчанию 45°, но может быть установлен с помощью функций gesture_pinch_angle_towards() и - gesture_pinch_angle_away()), то будет инициировано событие Pinch Start. В этом событии можно задать переменные или сохранить дату положения для дальнейшего использования. Например: -

-

Мероприятие по запуску

-

pinching = true;
pinch_x = event_data[? "midpointX"]; pinch_y = event_data[? "midpointY"];

-

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

-

-
-

Ввод / вывод

-
-

События Pinch In и Pinch Out будут срабатывать при каждом шаге, когда расстояние между двумя касаниями, составляющими щипок, изменяется сверх минимального порога (по умолчанию установлено +/- 0,1 дюйма, но вы можете изменить его с помощью функции gesture_pinch_distance). - Если прикосновения не перемещаются, то эти события не срабатывают. Эти события генерируют карту event_data DS, которую можно использовать для получения информации о событии. Например:

-

Глобальное событие вхождения/выхождения пинча

-

var _scale = event_data[? "relativescale"];
var _w = camera_get_view_width(view_camera[0]);
var _h = camera_get_view_height(view_camera[0]);
var _x = camera_get_view_x(view_camera[0]) + (_w / 2);
var _y = camera_get_view_y(view_camera[0]) - + (_h / 2);
-
_w *= _scale;
_h = _w * (room_height / room_width);
_x -= _w / 2;
_y -= _h / 2;
-
camera_set_view_pos(view_camera[0], _x, _y);
camera_set_view_size(view_camera[0], _w, _h); -

-

Приведенный выше код будет масштабировать представление на основе относительного масштаба прикосновений.

-

-
-

Зажимной конец

-
-

Событие Pinch End срабатывает, когда пользователь отпускает одно (или оба) касания устройства. Это событие генерирует карту event_data DS, которую вы можете использовать для получения информации о событии. Для - например:

-

Событие, связанное с защемлением конца

-

var _pinchx = event_data[? "midpointX"];
var _pinchy = event_data[? "midpointY"];
var _w = camera_get_view_width(view_camera[0]);
var _h = camera_get_view_height(view_camera[0]);
var _x = _pinchx - (_w / 2);
var _y = _pinchy - (_h / 2);
-
camera_set_view_pos(view_camera[0], _x, _y); -

-

Приведенный выше код установит позицию просмотра по центру средней точки двух касаний, составляющих пинч, когда касания будут отпущены.

-

-
-

-
-

Поворот событий

-
-

События "Поворот" основаны на одновременном распознавании двух прикосновений к экрану устройства, и если в течение определенного времени между ними произошел последовательный угловой поворот. Угол движения прикосновений наряду с - определяет обнаружение события "Pinch" или "Rotate", где (в случае события типа "Rotate"):

-
    -
  • Два касания должны удерживаться в течение определенного минимального времени (по умолчанию время составляет 0,16 секунды, но его можно изменить с помощью функции gesture_rotate_time()).
  • -
  • В течение этого минимального периода времени они должны вращаться в одном направлении (если направление вращения меняется в течение этого времени, то вращение не начинается).
  • -
  • Величина поворота должна превышать минимальный пороговый угол (который по умолчанию установлен на 5°, но его можно изменить с помощью функции gesture_rotate_angle()).
  • -
-

При обнаружении двух прикосновений и движения, соответствующих вышеуказанным критериям, будет инициировано событие Rotate Event, и в каждом из этих событий карта event_data DS Map будет заполнена следующими клавишами:

-
    -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
КлючОписание
"gesture"
Это идентификационное значение, уникальное для выполняемого жеста. Это позволяет связать вместе различные части жестов, состоящих из нескольких частей (например, начало перетаскивания, перетаскивание и конец перетаскивания).
"touch1"
Это индекс первого прикосновения, которое используется как часть жеста щипка. Обычно он равен 0, но если пользователь прикасается к экрану в другом месте, когда это событие вызвано другим прикосновением, то значение будет - больше 0.
"touch2"
Это индекс второго касания, которое используется как часть жеста щипка. Обычно он на 1 больше, чем значение для touch1, но может быть и другим, в зависимости от количества определяемых касаний в других местах.
"posX1"
Это положение X в пространстве комнаты для первого касания.
"posY1"
Это положение по оси Y в пространстве помещения для первого касания.
"rawposX1"
Это необработанная позиция X в пространстве окна при первом касании (эквивалентно получению позиции мыши с помощью функции device_mouse_raw_x()).
"rawposY1"
Это необработанная позиция Y в пространстве окна при первом касании (эквивалентно получению позиции мыши с помощью функции device_mouse_raw_y()).
"guiposX1"
Это позиция X в пространстве gui первого касания (эквивалентно получению позиции мыши с помощью функции device_mouse_x_to_gui()).
"guiposY1"
Это позиция Y в пространстве gui второго касания (эквивалентно получению позиции мыши с помощью функции device_mouse_y_to_gui()).
"posX2"
Это положение X в пространстве комнаты для второго касания.
"posY2"
Это положение по оси Y в пространстве помещения для второго касания.
"rawposX2"
Это необработанная позиция X в пространстве окна для первого касания.
"rawposY2"
Это необработанная позиция Y в пространстве окна для второго касания.
"guiposX2"
Это позиция X gui-space второго касания.
"guiposY2"
Это позиция Y в пространстве gui для второго касания.
"pivotX"
Положение X точки поворота в пространстве помещения.
"pivotY"
Положение Y точки вращения в пространстве помещения.
"rawpivotX"
Это необработанное положение X в пространстве окна точки поворота.
"rawpivotY"
Это необработанное положение Y точки вращения в пространстве окна.
"guipivotX"
Это положение X точки поворота в пространстве gui.
"guipivotY"
Это положение Y точки поворота в пространстве gui.
"relativeangle"
Это разница в повороте по сравнению с последним событием в этом жесте, измеряется в градусах
"absoluteangle"
Это разница в угле по сравнению с тем, где находились пальцы в момент начала жеста, измеряемая в градусах. Так, например, если с момента начала жеста пальцы повернулись на четверть окружности, то это значение будет равно 90° - или -90°, в зависимости от направления вращения.
-

-

Поворот Начало

-
-

Событие Rotate Start срабатывает, когда к экземпляру (или экрану, если событие глобальное) прикоснулись два "пальца" (и прикосновение сохраняется), а затем один или оба "пальца" поворачиваются от своего начального положения - положения. Вращение касаний должно начаться в течение короткого промежутка времени (по умолчанию 0,16 секунды, но его можно задать с помощью функции gesture_rotate_time()) - и быть больше минимального углового порога (по умолчанию 5°, но его можно изменить с помощью функции gesture_rotate_angle()). - Если эти проверки верны, то будет запущено событие Rotate Start, которое можно использовать для хранения значений или установки переменных для использования с остальными событиями rotate. Например:

-

Создать событие

-

rotating = false;
view_a = camera_get_view_angle(view_camera[0]);

-

Событие начала поворота

-

rotating = true;

-

Приведенный выше код просто устанавливает некоторые переменные для поворота камеры обзора, а затем в событии Rotate Start устанавливает одну из них в true.

-

-
-

Вращающийся

-
-

Событие Rotating будет запускаться каждый раз, когда касания на экране вращаются друг вокруг друга, до тех пор, пока движение превышает минимальный угловой порог (по умолчанию 5°, но его можно изменить с помощью функции gesture_rotate_angle()). - Это событие можно использовать для установки переменных и манипулирования экземплярами, например:

-

Вращающееся событие

-

var _relangle = event_data[?"relativeangle"];
var _a = camera_get_view_angle(view_camera[0]);
_a += _relangle;
camera_set_view_angle(view_camera[0], _a);

-

Приведенный выше код поворачивает вид камеры в зависимости от вращательного движения касаний в событии.

-

-
-

Поворотный конец

-
-

Событие Rotate End сработает, когда одно (или оба) касания, составляющие жест, будут отпущены с экрана устройства. Это событие можно использовать, например, для установки переменных и манипулирования экземплярами:

-

Событие окончания поворота

-

rotating = false;

-

Шаговое мероприятие

-

if !rotating
    {
    var _a = camera_get_view_angle(view_camera[0]);
    var _adif = angle_difference(view_a, _a);
    _a += median(-5, _adif, 5);
    camera_set_view_angle(view_camera[0], _a);
    }

-

Приведенный выше код использует событие Rotate End для определения того, когда пользователь останавливает жест, а затем устанавливает переменную. Эта переменная затем используется в событии step для поворота камеры обзора в исходное положение.

-

-
-

-
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Object_Events.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Object_Events.htm index f5dd6bf4e..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Object_Events.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Object_Events.htm @@ -1,196 +0,0 @@ - - - - - - События объекта - - - - - - - - - -

События объекта

-

Итак, что такое события объекта? По сути, это незаметные моменты в игровом цикле, в которые происходят события, основанные на том, что вы для них запрограммировали. GameMaker работает с циклами этих событий - с момента запуска комнаты до момента ее завершения происходит игровой цикл, в котором на каждом шаге запускается или проверяется серия событий, и вы можете разместить в своих объектах код или GML визуальные действия, которые реагируют на эти события (шаг - это момент игрового времени, регулируемый настройками скорости комнаты, и может также называться кадром).

-

Давайте рассмотрим типичную настройку объекта с событиями и кодом:

-

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

-

Это список всех основных событий и категорий событий, на которые может реагировать объект, и внутри каждой категории есть подсобытия для дальнейшего уточнения поведения. Например, если вы нажмете на категорию событийKey Press , появится дополнительное окно с событиями, позволяющими выбрать, на какую клавишу должен реагировать объект.

-

После того как вы выбрали событие, окно редактора события будет приковано к нему и откроется справа.

-
-

Теперь вы можете редактировать код (или блоки) GML, чтобы придать вашему объекту определенное поведение или реакцию на данное событие.

-

Вы можете нажать правую кнопку мыши на любом событии, которое было добавлено к объекту, чтобы получить следующие опции меню:

-

Этими вариантами являются:

-
    -
  • Добавить событие - добавление нового события из списка событий.
  • -
  • Вырезать / Копировать / Вставить события - Вырезать, скопировать или вставить выбранное событие. Можно также использовать стандартные сочетания клавиш: / + X, / + C, и / + V.
  • -
  • Дублировать событие - дублирование выбранного события. При этом содержимое выбранного события будет продублировано в другом событии, которое вы укажете.
  • -
  • Изменить событие - изменить событие. В этом случае вам будет предложено выбрать другую категорию события, и после выбора содержимое текущего события будет изменено на новое событие (при этом исходное событие будет удалено).
  • -
  • Convert To GML Visual / Code - События объектов будут создаваться методом, выбранным при создании проекта, либо с помощью кода, либо с помощью действий GML Visual. С помощью этой опции вы можете конвертировать из одного в другой, независимо от типа проекта.
  • -
  • Удалить событие - удалить событие (или события).
  • -
-

При удалении событий можно использовать + , чтобы выбрать несколько событий и затем удалить их все вместе. Каждый создаваемый объект имеет свой собственный список событий, которые добавляются в него из редактора объектов. Эти события делятся на две категории:

-
    -
  • те, которые выполняют каждый шаг игры
  • -
  • те, которые "запускаются" игровым событием, например, достижением экземпляром края комнаты или нажатием кнопки клавиатуры или мыши.
  • -
-

Полный список мероприятий приведен ниже:

-

Создать

-
-

Это событие происходит при первом создании экземпляра объекта, и это самое первое, что происходит в экземпляре, помещенном в комнату через редактор комнат при входе в комнату. Это означает, что данное событие является идеальным местом для инициализации переменных, запуска временной шкалы, установки путей и т.д... и всего остального, что обычно нужно сделать только один раз или только при первом создании экземпляра в комнате. Если ваш объект имеет какие-либо переменные объекта или переменные экземпляра, добавленные в редакторе объектов или редакторе комнаты, то эти переменные будут сначала инициализированы, а затем будет запущено событие Create Event.

-

Помните, что вы можете изменить все, что вы установили в событии Create Event из кода создания экземпляра в редакторе комнат, поскольку он запускается непосредственно после события создания экземпляра и может быть использован для создания переменных экземпляра или для переопределения любых переменных, добавленных в качестве переменных объекта или в фактическом событии Create Event.

-
-

-
-

Уничтожить

-
-

Это событие - событие, которое будет выполняться при уничтожении экземпляра. Его часто упускают из виду при добавлении поведения к объектам, но оно может быть очень полезным, например, для создания эффектов взрыва или частиц при убийстве врага, или для повторного рождения нового экземпляра объекта в другой части комнаты, или даже для добавления очков к счету.

-

-
-

Уборка

-
-

Это событие будет вызываться после любого события, которое удаляет экземпляр объекта из комнаты. Таким образом, оно будет вызвано, если:

-
    -
  • экземпляр уничтожается
  • -
  • комната заканчивается
  • -
  • игра заканчивается
  • -
-

Он предназначен для "очистки" любых динамических ресурсов, которые могут быть в вашей игре (например, поверхностей, структур данных и т.д.) или для выполнения любой задачи, которую нужно выполнить один раз , когда экземпляр удаляется из игры любым способом.

-

Обратите внимание, что это событие будет вызвано сразу после события, которое его вызвало, но экземпляр не будет фактически удален из игры до окончания текущего события. Например, если вы вызовете instance_destroy() в событии Step Event, то будет вызвано событие Destroy Event, затем событие Clean Up Event, а затем завершится выполнение остальных событий Step Event. Это означает, что любой ваш код после вызова instance_destroy() все равно будет запущен и станет потенциальной причиной ошибок, если вы очистили структуру данных или другой ресурс, который требуется коду, поэтому при использовании этого события следует соблюдать осторожность.

-

-
-

Сигнализация

-
-

Категория тревог разбита на 12 событий, по одному для каждого из возможных тревог, которые могут быть установлены в экземпляре. Итак, когда вы нажимаете на категорию Добавить сигнал тревоги , перед вами появляется следующее окно:

-

Здесь вы выбираете сигнал тревоги, который хотите создать, и, как только это будет сделано, вы увидите, что он был добавлен в окно событий, что позволяет добавлять к нему код, как обычно. Но что такое сигнал тревоги? Это специальное событие, которое ничего не делает, если только сигнал тревоги не был установлен ранее, и тогда оно будет ждать, пока сигнал не дойдет до 0, прежде чем выполнять действия или код, которые вы в него добавили.

-

Как только сигнал достигнет 0 и выполнит код, он начнет обратный отсчет до -1, где и останется до тех пор, пока не будет установлен снова (то есть вы можете проверить значение сигнала тревоги, чтобы узнать, больше ли оно -1, что покажет вам, запущен он или нет). Так, если вы установите alarm[0] в событии создания объекта на 30, это будет означать, что GameMaker отсчитает 30 игровых шагов, прежде чем запустить действия или код, помещенные в событие alarm[0]. Обратите внимание, что установка сигнала тревоги на 0 не приведет к запуску кода сигнала тревоги, поскольку событие срабатывает, но сигнал тревоги сразу же устанавливается на -1, поэтому код пропускается. Если вам нужно, чтобы сигнал тревоги выполнял следующий шаг, то следует установить значение 1.

-

Это может быть очень полезно, поскольку позволяет приводить вещи в движение в точные моменты, и вы даже можете заставить их повторяться, поскольку ничто не мешает вам установить сигнал тревоги в собственном событии. Представьте, что у вас есть монстр, и вы хотите, чтобы он поворачивался направо каждые три секунды... тогда в событии создания монстра вы установите сигнал тревоги на скорость комнаты * 3 (если скорость комнаты равна 30, то это 30 шагов в секунду, умножьте это на 3 и получите 3 секунды! Таким образом, вы можете создать простые игровые циклы, в которых события происходят только через определенные промежутки времени.

-

Стоит отметить, что сигнал тревоги без каких-либо действий или кода в нем не будет отсчитывать время. Однако даже при наличии только комментария и отсутствии кода или действий сигнал тревоги будет продолжать отсчет времени, и его можно будет установить и проверить, как обычно.

-

-
-

Шаг

-
-

GameMaker делит время на шаги , а скорость комнаты определяет, сколько таких шагов должно быть в секунду (шаг также можно назвать кадром). Один шаг, по сути, является циклом, который постоянно выполняется со всеми событиями, которые проверяются и запускаются по мере необходимости, пока игра работает, поэтому, как вы можете себе представить, событие Step Event - это событие, которое проверяется на каждом шаге игры, пока существует экземпляр.

-

Мероприятие "Шаг" фактически состоит из трех подмероприятий, которые описаны ниже:

-

Для большинства вещей вполне достаточно стандартного события шага, но иногда вы хотите иметь немного больше контроля над тем, какой код выполняется и в какое время, поэтому для этого предусмотрены события шага Begin и End . Все три события проверяются на каждом шаге, но их порядок никогда не изменится, даже если будущие обновления движка GameMaker изменят другие события, что означает, что это единственный надежный способ убедиться, что что-то всегда происходит раньше, чем что-то другое.

-

Для чего может использоваться событие шага? Ну, его можно использовать для действий или кода, который должен выполняться непрерывно. Например, если один объект должен следовать за другим, здесь вы можете адаптировать направление движения к объекту, за которым мы следуем, чтобы он плавно двигался позади. Однако будьте осторожны с этим событием и не помещайте много сложных действий в событие step объектов, особенно если вы планируете иметь много экземпляров объекта в вашей игровой комнате, так как это может замедлить игру. Многие вещи можно поместить в сигналы тревоги или настроить их срабатывание с помощью некоторых из Других событий, вместо того чтобы делать это постоянно.

-

-

-
-

Столкновение

-
-

Очевидно, что при создании игры очень важно знать, когда два (или более) экземпляра объекта столкнулись, и для этого у нас есть событие столкновения. Это событие, которое вы помещаете в объект и затем указываете, какой другой объект вы должны проверить на столкновения.

-

Если у вас не включена физика, эти столкновения будут рассчитываться на основе маски двух объектов (маска определяется в свойствах sprite или может быть назначена независимо в свойствах объекта) и того, перекрываются они или нет. Обратите внимание, что если одному или другому объекту в столкновении не назначена маска (или маска sprite не задана), даже если он что-то рисует, столкновения не будут обнаружены.

-

Если у вас включена физика , то столкновение будет основано на типе формы столкновения(Fixture), которую вы определили для объекта в свойствах физики, как и его реакция на столкновение. Это означает, что вам не потребуется никакого кода для обработки столкновения, но это событие все равно должно содержать хотя бы комментарий , чтобы столкновения были обнаружены.

-

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

-

-

-
-

Клавиатура, Клавиатурная пресса, Отпускание клавиатуры

-
-

Предоставление игроку возможности управлять различными аспектами вашей игры очень важно, и для этого GameMaker предоставляет вам очень полный список событий клавиатуры, которые можно использовать в любой из трех основных категорий клавиатуры. Для категории "Общая клавиатура" они срабатывают непрерывно каждый шаг, пока выбранная клавиша нажата, в то время как события категории "Нажатие и отпускание" срабатывают только один раз, когда клавиша изначально нажата или отпущена.

-

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

-

Когда вы добавляете любое событие клавиатуры к объекту, вам будет представлено меню подсобытий клавиатуры, где вы можете указать клавишу, которая будет проверяться:

-

Большинство из них достаточно очевидны, но давайте вкратце пройдемся по разделам: вверху находятся клавиши со стрелками, за ними следуют наиболее используемые клавиши-модификаторы, затем остальная клавиатура (разделенная на дополнительные подразделы, чтобы вы могли получить точную необходимую клавишу, например или ) и, наконец, два особых подсобытия, No Key и Any Key. Как следует из их названий, это подсобытия, которые проверяют, когда ни одна клавиша не нажата или когда нажата любая клавиша. Обратите внимание, что клавиши цифровой клавиатуры вызывают соответствующие события только в том случае, если включена блокировка цифр .

-

События Press и Release для клавиатуры почти полностью совпадают с обычными событиями клавиатуры, за исключением того, что вместо непрерывного срабатывания они срабатывают только один раз. Когда клавиатура впервые регистрирует, что клавиша была нажата, она генерирует событие Keyboard Pressed (а также обычное событие Keyboard), а в первый раз после этого, когда клавиша больше не определяется как нажатая, она генерирует одно событие Keyboard Release.

-

-

-
-

Мышь

-
-

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

-

События левой , правой и средней кнопок (будь то обычные, нажатые или отпущенные) действуют на маску экземпляра, у которого произошло событие. Это означает, что GameMaker будет проверять положение мыши в комнате при использовании этих кнопок на соответствие маскам столкновений экземпляров, у которых есть событие мыши. Если произойдет "столкновение" с ограничительной рам кой экземпляра, то сработает событие, поэтому убедитесь, что у экземпляра с этими событиями есть sprite с действительной маской столкновения или что у объекта выбрана маска sprite в свойствах объекта. Как следует из их названий, эти события срабатывают либо один раз, когда выбранная кнопка мыши впервые нажата или отпущена, либо непрерывно на каждом шаге, пока кнопка удерживается.

-

События входа и выхода мыши также похожи на события кнопок, поскольку они тоже зависят от маски объекта, но на этот раз они срабатывают, когда мышь впервые "входит" (касается) объекта или когда мышь "выходит" (перестает касаться) объекта. Однако эти события не являются непрерывными, они срабатывают только один раз при каждом входе или выходе мыши из объекта, поэтому они идеально подходят для создания, например, кнопок, которые должны меняться при наведении на них мыши, а затем возвращаться в нормальное состояние при удалении мыши.

-

Наконец, у нас есть еще один раздел событий мыши, который называется " Глобальная мышь". В этом подменю вы найдете выбор событий, которые предназначены для записи событий мыши в экземплярах, даже если мышь не находится над ними или даже рядом с ними. Это события, которые генерируются для всех экземпляров, и если для указанного события определены действия или код, то они будут выполнены, независимо от положения мыши в игровой комнате.

-

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

-

-

-
-

Жесты

-
-

Это событие срабатывает, когда пользователь прикасается к экрану (на мобильных устройствах) или нажимает и перемещает мышь (на всех остальных платформах). Эти события похожи на события мыши, так как у вас есть обычные версии и глобальные версии. Обычные версии этих событий срабатывают только тогда, когда касания происходят на экземпляре, имеющем sprite (или маску), и касания происходят в пределах его ограничительной области. Глобальные версии этих событий будут срабатывать, если пользователь коснется любого места на экране.

-

События, связанные с жестами, обнаруживают следующее:

-
    -
  • касания - когда пользователь нажимает/касается и быстро отпускает кнопку
  • -
  • перетаскивание - когда пользователь касается/нажимает и удерживает его, затем перемещает свой палец/курсор
  • -
  • щелчки - когда пользователь перемещает и отпускает касание/щелчок одним движением
  • -
  • щипки - когда пользователь держит два пальца на экране, а затем сдвигает их вместе/врозь
  • -
  • вращает - когда пользователь держит два пальца на экране, а затем поворачивает их вокруг точки
  • -
-

Различные события всегда содержат карту DS Map под названием "event_data", которая содержит несколько пар ключ/значение с данными о положении и перемещении касания/щелчка. Для получения полной информации обо всех доступных подсобытиях и о том, как они работают, см. следующий раздел:

- -

-

-
-

Другое

-
-

Существует ряд специальных событий для использования при создании игр с помощью GameMaker, которые в основном сгруппированы под событием Other и могут быть выбраны из всплывающего меню подсобытий, которое появляется при выборе этого события. Вот изображение всех этих событий:

-

Более подробную информацию о каждом из событий, перечисленных на изображении выше, можно найти в следующем разделе:

- -

-
-

Нарисовать

-
-

Эта категория событий управляет тем, что вы видите на экране, когда запускаете свою игру, и делится на различные отдельные события:

-

Как вы можете видеть, категория событий рисования имеет несколько различных типов событий. Draw Begin, Draw и Draw End - это "стандартные" события рисования, которые вы, вероятно, будете использовать чаще всего. По умолчанию главное событие Draw всегда вызывается для каждого экземпляра, независимо от того, есть ли у него sprite или нет, хотя если вы пометите экземпляр как невидимый, это событие не будет вызвано (поэтому имейте это в виду, если у вас есть какая-либо игровая логика в событии рисования невидимого объекта, так как она не будет запущена). Главное событие рисования также является местом, где GameMaker по умолчанию рисует экземпляр sprite, когда в событии нет ни кода, ни действий (т.е. вы не добавили его в список событий для объекта). При рисовании по умолчанию используется sprite, связанный с экземпляром, и он будет рисоваться с любыми преобразованиями, установленными в коде или примененными действиями.

-

Стандартные события рисования рисуют до событий Draw GUI и между событиями Pre Draw и Post Draw , что означает, что все, что рисуется в этом событии, рисуется под событием Draw GUI , независимо от слоя (т.е. все, что рисуется в событии Draw GUI, всегда будет рисоваться поверх всего, что рисуется в обычном событии рисования, независимо от порядка слоев).

-

Обратите внимание, что выше приведен просто обзор того, как работают события рисования, но для получения полной информации обо всех доступных под-событиях, пожалуйста, обратитесь к следующему разделу:

- -

-

-

-
-

Асинхронный

-
-

Эта категория событий особенна тем, что содержащиеся в ней события по умолчанию запускаются не GameMaker'ом, а по завершении какого-либо другого действия, например, загрузки файла или ответа от веб-сервера. Категория делится на следующие события:

-

Object Editor Events View

-

Допустим, вы хотите добавить файл изображения в GameMaker. Вы можете записать это в другом событии (возможно, в событии Create) объекта, а затем заставить этот объект нарисовать полосу загрузки в ожидании (например), опрашивая соответствующее асинхронное событие до обратного вызова, который сообщит GameMaker, что файл загружен. Затем вы можете использовать данные, возвращаемые в этом событии, для выполнения других действий, например, смены комнаты или покупки предмета.

-

Обратите внимание, что выше приведен просто обзор того, как работает асинхронное событие, но для получения полной информации обо всех доступных под-событиях, пожалуйста, обратитесь к следующему разделу:

- -

-
-

-

Следует также отметить, что событиям можно присваивать имена или, по крайней мере, давать им короткий описательный текст, который будет отображаться рядом с ними в редакторе событий. Для этого просто добавьте следующее в самую первую строку редактора кода события (при использовании GML Code):

-

/// @description Your text here

-

Таким образом, вы можете иметь что-то подобное, например, в событии Alarm :

-

/// @description This is the AI Fight alarm

-

И теперь в редакторе событий вы увидите следующее:

-

Object Editor Events List

-

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

-

Дополнительную информацию о некоторых из перечисленных событий и общий порядок проведения мероприятий см. в следующих разделах:

- -

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Object_Variables.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Object_Variables.htm index 1da8e8352..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Object_Variables.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Object_Variables.htm @@ -1,77 +0,0 @@ - - - - - Объектные переменные - - - - - - - - - - -

Объектные переменные

-

Когда вы нажмете на кнопку Variables , откроется окно Object Variables , которое вы можете использовать для создания любого количества переменных перед событием Create Event объекта:

-

В этом окне вы можете нажать на кнопку Добавить , чтобы добавить новую переменную в список. Затем вы можете дать имя - переменную, а также задать ее тип и настроить ее свойства:

-

Имя переменной должно начинаться с буквы и может содержать только буквы, цифры и символ подчеркивания '_' с - максимальной длиной 64 символа. Таким образом, допустимыми переменными являются такие, как fish, foo_bar, num1, а недопустимыми - 6fish, - foo bar , или *num. После того, как вы задали имя переменной, необходимо установить ее тип, который может быть любым из следующих: Стоит отметить, что эта функция особенно полезна при работе с родительскими и дочерними экземплярами - поскольку вы можете иметь родительский объект с набором определенных переменных и затем просто изменять их в дочернем объекте (подробнее см. раздел Переменные объекта и дочерние объекты ниже) - и при добавлении экземпляров в редактор помещений (см. раздел Слои > Слой экземпляра), поскольку вы также можете изменять эти переменные для отдельных экземпляров. - которые были помещены в комнату.

-

Ниже перечислены различные типы переменных, которые вы можете создать:

-
    -
  • Вещественное число: Вещественное число - это любое число, которое не является целым числом и может быть положительным или отрицательным. Так, 124.5, 45639.566546456, 0.9, -45.5 и т.д. являются примерами вещественных чисел. Все вещественные числа хранятся как 64-битные значения с плавающей запятой (двойки). Вещественные целочисленные) данные - имеют опцию для установки диапазона значений, доступ к которой можно получить, нажав кнопку Options :Когда вы отметите эту опцию, вы можете ввести начальное и конечное значение, и вместо фиксированного значения, отображаемого для переменной в окне Object Variables, - у вас будет ползунок, который будет привязан к этим значениям:
    -
  • -
  • Целое число: Целое число - это целое число, которое может быть положительным или отрицательным, например, 30004, 19, 0, -300. Обратите внимание, что вы можете - задать диапазон значений для выходного целого числа, как описано выше для вещественных чисел.
  • -
  • Строка: Строка - это все, что заключено в двойные кавычки, например, "fish", "Hello World" или "12345".
  • -
  • Булево: Булево значение - это значение, которое является либо истинным, либо ложным. В окне переменных редактора объектов это значение отображается в виде флажка, который нужно установить в поле true и снять флажок в поле false.
  • -
  • Выражение: Выражение - это математическая фраза, которая может содержать обычные числа, переменные, строки или функции GML, а также один или несколько операторов. Например, sqrt(85 * 6) + 5.5 - это выражение.
  • -
  • Ресурс: Ресурс - это просто любой из ресурсов, которые вы определили в Браузере активов. Выбрав этот тип ресурса, вы можете нажать кнопку Open Asset Explorer , чтобы открыть Asset Explorer и выбрать нужный вам ресурс.
  • -
  • Список: Выбор списочного типа ввода означает, что вы можете создать выбор значений (это могут быть строки, числа, выражения и т.д.), из которых вы можете выбрать одно или несколько для возврата переменной. Чтобы определить элементы, которые - в списке, нужно сначала добавить их в Options (нажмите кнопку ):
    - Вы сможете выбрать элемент в качестве значения по умолчанию для переменной в главном окне из выпадающего меню:
    - Обратите внимание, что если в List Options у вас установлен флажок Multi-select, то переменная станет массивом всех - выбранных вариантов:
    -
  • -
  • Цвет: Тип цвета предназначен для определения значения цвета, которое будет храниться в переменной. Вы можете ввести вещественное число (от 0 до 16777216, альфа-значение 255) или шестнадцатеричное значение (в формате $RRGGBBAA), или вы можете - можно дважды щелкнуть на образце цвета, чтобы открыть Colour Picker и задать цвет там.
  • -
-

-

-

Объектные переменные и дочерние объекты

-

Важной особенностью переменных объекта является то, что они наследуются всеми дочерними объектами, которые у вас есть в браузере активов (см. раздел " Родительские объекты " для получения дополнительной информации), а это значит, что вы можете - вы можете переопределить или изменить все или некоторые из них по своему усмотрению.

-

Когда вы создаете дочерний объект другого ресурса объекта, для которого определены Переменные, они будут отображаться в окне Переменные объекта следующим образом:

-

На верхнем изображении видно, что родительский объект имеет четыре объектные переменные, а на нижнем изображении эти переменные - также показаны, только "серым цветом" и имеют значок Inherited From Parent , указывающий на то, что они были унаследованы. - Эти унаследованные переменные можно редактировать, если нажать кнопку Переопределить переменную , и тогда вы сможете настроить ползунок диапазона - или значения, или выбрать различные элементы из списков и т.д.. Обратите внимание, что при редактировании родительской переменной вы можете изменить только определенное значение, но не имя, а также не можете изменить параметры переменной. Также обратите внимание, что вы можете добавлять новые объектные переменные - в дочерние объекты (на рисунке выше видно, что "Тип символа" является новой объектной переменной только для дочернего объекта).

-

Если вы отредактировали унаследованную переменную объекта, вы можете нажать кнопку Удалить , чтобы удалить редактирование, но не переменную. Переменная будет - по-прежнему будет наследоваться от родителя, но снова будет использовать родительское значение по умолчанию. Если вам нужно полностью удалить переменную, то вы должны сделать это из родительского объекта.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Other_Events.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Other_Events.htm index 7b23c76ac..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Other_Events.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Other_Events.htm @@ -1,153 +0,0 @@ - - - - - - Другие события - - - - - - - - - - -

Другие события

-

The Other Events

-

На этой странице объясняется каждое из различных событий, которые собраны в категории " Другие события" в редакторе объектов:

-

-

Наружная комната

-
-

Это событие срабатывает, когда экземпляр выходит за пределы комнаты, и основано на проверке назначенного sprite (и его свойств) экземпляра, так что даже если вы установили масштаб изображения x или y в значение, отличное от единицы, это событие - сработает только тогда, когда весь sprite окажется за пределами экрана. Если у экземпляра нет sprite, то используется положение экземпляра, и в тот момент, когда его положение по x или y окажется за пределами комнаты, это событие также сработает. Это событие - обычно используется для таких вещей, как пули, где они уничтожаются, как только покидают комнату, чтобы в итоге не получить миллионы пуль, летящих бесконечно и заставляющих игру замедляться. Обратите внимание, что это событие срабатывает только один раз - когда экземпляр покидает комнату.

-

-
-

Граница пересечения

-
-

Это событие срабатывает, когда экземпляр "касается" внутренней границы комнаты, и, как и событие "За пределами комнаты", основано на проверке назначенного sprite экземпляра, поэтому даже если вы установили масштаб изображения x или y в значение - значение, отличное от единицы, это событие все равно будет вызвано в тот момент, когда часть sprite пересечет границу комнаты. Если у экземпляра нет спрайта, то используется позиция экземпляра, и в тот момент, когда его позиция x или y пересекает - границу комнаты, то это также вызовет событие. Это событие можно использовать, например, для того, чтобы приказать экземпляру "отскочить" обратно в комнату, а не выходить наружу.

-

-
-

Просмотры

-
-

Виды камеры обычно задаются в редакторе помещений и используются для отображения только небольшой области большого помещения в любой момент времени. Эта категория событий имеет две отдельные подкатегории(Внешний вид и Пересечение границы), с - восемь различных событий в каждой из них соответствуют восьми доступным портам просмотра. Эти две категории функционируют точно так же, как и соответствующие события комнаты, только в качестве объекта для проверки экземпляр берет границу обзора камеры, а не комнату. - а не комнату.

-

-
-

Начало игры

-
-

Это специальное событие срабатывает только один раз за всю игру и только для тех экземпляров, действия или код которых помещены в событие. Эти экземпляры должны присутствовать в первой комнате игры и быть помещены туда в редакторе комнат, а не созданы динамически с помощью кода. - а не были созданы динамически с помощью кода или действий. Следует отметить, что это событие происходит после события создания всех экземпляров и поэтому может содержать код или действия с переменными, которые были определены ранее в этом событии. - Это событие обычно определяется только в одном объекте "контроллер" и обычно используется для инициализации глобальных переменных, запуска музыки, чтения из файлов и любых других действий, которые обычно выполняются только один раз в начале игры.

-

-
-

Конец игры

-
-

Как и вышеупомянутое событие Game Start, это событие срабатывает только один раз за всю игру, и то непосредственно перед закрытием окна игры. Опять же, чтобы экземпляр с этим событием действительно что-то сделал, он должен находиться в комнате, когда - когда игра закрывается. Обратите внимание, что это событие действительно актуально только для игр на Windows, Ubuntu ( Linux) и macOS, поскольку мобильные устройства могут просто закрыть игру, не давая GameMaker возможности - возможность вызвать это событие. Для браузерных игр, созданных с помощью модуля HTML5, это событие должно сработать, когда вкладка игры или браузер закрыты, но не все браузеры поддерживают эту функцию (Firefox, Chrome и Safari поддерживают на момент написания статьи), поэтому следует быть осторожным при ее использовании. - поэтому при его использовании следует соблюдать осторожность. Обычно вы используете это событие для сохранения данных.

-

-
-

Начало номера

-
-

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

-

-
-

Конец комнаты

-
-

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

-

-
-

Конец анимации

-
-

В GameMaker sprites не является статичной вещью, поскольку он может иметь подкадры и быть анимированным с разной скоростью. Каждый кадр анимации (называемый суб-изображением) имеет свой номер, начиная с 0, который можно проверить в коде или с помощью действий, - Но иногда все, что вам действительно нужно знать, это когда анимация закончилась. Именно тогда и срабатывает это событие - в конце анимации, когда индекс суб-изображения показывает, что достигнут последний кадр. Это событие действительно полезно - для многих вещей, например, для объекта взрыва, где вы можете настроить экземпляр на уничтожение при достижении последнего кадра анимации.

-

-
-

Обновление анимации

-
-

Это событие предназначено только для использования с функциями скелетной анимации. Это специальное событие, которое запускается на каждом шаге в - экземпляре, использующем скелетную анимацию sprite, и предназначено для "перехвата" данных костей после того, как ориентация костей была рассчитана для текущего состояния анимации, но до того, как эти данные будут зафиксированы для использования при рисовании. - Это позволяет вносить изменения в данные о костях с помощью соответствующих функций.

-

-
-

Анимационное мероприятие

-
-

Это событие предназначено только для использования с функциями скелетной анимации. Это событие срабатывает в объекте - которому назначена скелетная анимация sprite, и если объект использует отрисовку по умолчанию для назначенной sprite, или sprite отрисовывается через draw_self(). В настоящее время это событие не срабатывает на скелетную анимацию sprites, нарисованную любым другим способом. - способом. Событие предназначено для сбора и передачи данных, которые были назначены определенным событиям в анимации sprite, как определено в редакторе, используемом для их создания.

-

Когда срабатывает событие анимации, будет создана специальная карта DS Map под названием event_data map (точно так же, как у нас есть карта async_load для асинхронного события). - Эта карта будет содержать все следующие пары ключ/значение, которые вы можете разобрать, чтобы получить информацию о событии:

-
    -
  • "name": название события (как определено в программе анимации)
  • -
  • "track": индекс дорожки, на которой воспроизводится анимация (по умолчанию 0)
  • -
  • "integer": целочисленное значение, связанное с событием (как определено в программе анимации, по умолчанию 0)
  • -
  • "float": плавающее значение, связанное с событием (как определено в программе анимации, по умолчанию 0.0)
  • -
  • "string": строковое значение, связанное с событием (как определено в программе анимации, по умолчанию - пустая строка "")
  • -
-

-

-
-

Путь завершен

-
-

Пути могут быть важной частью создания любой игры, будь то игра типа tower defence, или shoot-em-up, или что-то еще, и часто очень важно, чтобы экземпляр выполнял определенное действие, когда он достигает - конца своего пути. Это событие обнаруживает это и срабатывает, когда это происходит, позволяя вам добавить код или действия, чтобы справиться с обстоятельствами, например, в игре типа tower defence вы можете использовать это событие, чтобы уничтожить экземпляр и удалить очко здоровья с объекта цели. - с объекта-цели.

-

-
-

Пользовательские события

-
-

Это специальные события, которые не вызываются GameMaker автоматически, а должны быть вызваны вами неявно с помощью кода или действий во время работы игры. Всего существует 12 пользовательских событий, они могут содержать код или действия - и могут быть вызваны в любое время в игровом цикле, что делает их очень полезными для создания собственных событий, которые происходят по вашему усмотрению.

-

-
-

Широковещательное сообщение

-
-

Это событие запускается всякий раз, когда sprite или последовательность генерирует строку широковещательного сообщения. Для получения дополнительной информации см. страницу " Широковещательные сообщения".

-

-
-

-

Этот список событий также содержит события отката.

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Parent_Objects.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Parent_Objects.htm index bfe752b93..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Parent_Objects.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Parent_Objects.htm @@ -1,81 +0,0 @@ - - - - - - Родительские объекты - - - - - - - - - - -

Родительские объекты

-

При работе с объектами в GameMaker IDE можно установить иерархию " родитель/ребенок ". Для этого нужно нажать кнопку "Parent" в редакторе объектов, а затем выбрать другой объект из браузера ассетов. - который будет "родителем" редактируемого объекта:

-

Итак, каждый объект в вашем игровом проекте может иметь родительский объект, но что это значит? Когда у объекта есть родительский объект, он может - обмениваться кодом, действиями и событиями с этим родителем. Такой обмен называется "наследованием", а объект, у которого есть родитель, называется "дочерним". Дочерний объект не только может делиться кодом со своим родителем, но вы можете выполнять проверки и запускать код - на родительских объектах, и он будет автоматически включать и дочерние объекты, что экономит много времени и энергии.

-

Если это звучит сложно, то другой способ взглянуть на родительский объект - это способ "сгруппировать" объекты под одним зонтиком, чтобы они имели общие черты, не теряя при этом своей уникальной индивидуальности. Возможно, это все еще не - проясняет ситуацию, поэтому давайте приведем несколько примеров...

-

Допустим, у вас есть объект "игрок" и четыре различных объекта "враг". Теперь вы хотите, чтобы игрок умер, если он коснется любого из этих четырех объектов, и это обычно влечет за собой четыре различных события столкновения с четырьмя различными наборами - действий или кода, по одному для каждого из вражеских объектов. Но если мы создадим родительский объект для всех врагов, то мы сможем создать одно событие столкновения только с родительским объектом, и оно сработает независимо от того, какой из четырех "дочерних" вражеских объектов коснется игрока. - коснется игрока. Удобная штука! В реальном объекте GameMaker вы увидите примерно следующее:

-

Слева у нас есть четыре отдельных события столкновения, а справа - одно событие столкновения, поскольку мы создали - "родительский" объект и назначили ему все вражеские объекты. Обратите внимание, что родительский объект не должен иметь никаких событий или кода в нем...

-

Другим примером родительского поведения может быть игра, в которой вы хотите создать 10 различных по внешнему виду объектов и заставить их всех вести себя одинаково. Для этого вы создадите один родительский объект и в нем все ваши поведенческие действия или код - в нужных событиях, а затем вы создадите десять объектов без действий или кода, но с разными sprites, и назначите им родительский объект. Теперь, когда вы поместите эти экземпляры в комнату, все они будут вести себя одинаково, но выглядеть по-разному, - поскольку они "наследуют" события родительского объекта.

-

Наконец, вы можете использовать воспитание, чтобы "смешивать и сопоставлять" события и поведение. Мы проиллюстрируем это на последнем примере... Допустим, вам нужны два монстра: один двигается вверх и вниз, а другой - влево и вправо. - чтобы они имели одинаковое здоровье, стреляли в игрока и ранили игрока при столкновении с ними. В этом случае вы видите, что почти все события должны иметь одинаковые действия, за исключением одного или двух, которые управляют движением. Итак, опять же, мы можем сделать - один объект родителем другого, но в этом случае мы также определяем определенные события для дочернего объекта. Эти события "переопределяют" родительские события, то есть всякий раз, когда событие для дочернего объекта содержит действия, они выполняются - вместо действий, содержащихся в событии родителя. Если вы также хотите выполнить родительское событие, вы можете вызвать так называемое "унаследованное" событие с помощью функции event_inherited(), - или визуальное действие GML Call Parent Event.

-

Слева вверху находится родительский объект с 5 событиями в нем, а справа вы видите "дочерний" объект. Дочерний объект - также имеет 5 событий, но два из них переопределяют унаследованные от родителя события (события Step и Draw ), а три других выделены серым цветом, так как они являются событиями, унаследованными от родителя. Унаследованные события - также будут иметь значок "переопределение родителя" рядом с ними в редакторе событий:

-

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

-

Здесь вы можете выбрать два варианта Открыть родительское событие, чтобы просмотреть код, или же вы можете выбрать Наследовать событие - событие или переопределить событие. Если вы выберете Наследовать , то редактор кода откроется с функцией event_inherited() уже - (или действием Call Parent Event, если вы используете GML Visual). Любой последующий код, который вы поместите в это событие, теперь будет выполняться так же, как и код родительского объекта. - имеет. Если вы выберете Переопределить событие, то окно кода также откроется, только теперь функция event_inherited() не будет вызываться, поэтому все, что вы добавите сюда, будет выполняться вместо кода - в родительском объекте.

-

ПРИМЕЧАНИЕ: Из редактора кода вы можете быстро перейти к родительскому объекту, нажав правую кнопку мыши и выбрав Go To Object из всплывающего меню, или (если событие было переопределено) вы можете выбрать Open Inherited Event, чтобы перейти непосредственно в редактор кода с кодом родительского события в нем.

-

Когда в коде вы нацеливаетесь на родительский объект, код будет применяться и к "детям" родительского объекта. Это происходит, когда в действии вы указываете, что действие должно быть применено к экземплярам определенного объекта, а в коде это - происходит, когда вы используете with() оператор. Это будет работать и при вызове функций кода, таких как instance_position(), - instance_number(), и т.д., где - если вы предоставите родительский объект - все экземпляры родительского и дочернего экземпляров - будут включены в проверку. И наконец, родительские функции работают, когда вы ссылаетесь на переменные в других объектах, как в приведенном выше примере с монстром, если я установлю скорость врага 1 равной 10, то скорость врага 2 также будет равна десяти, поскольку он является дочерним объектом врага - 1.

-

Обычно считается хорошей практикой в большинстве случаев создавать один базовый родительский объект, чтобы этот базовый объект содержал все поведение по умолчанию, но никогда не использовать его экземпляр в игре. Лучше использовать все дочерние объекты и использовать родительский объект только в ситуациях, подобных тем, что я описал выше. - ситуациях, подобных тем, которые я описал выше, для столкновений, для ссылок на переменные и т.д... Вы также должны понимать, что у родителей тоже могут быть родители! Очевидно, что вы не можете создать цикл "родитель 1 является ребенком родителя 2 является ребенком родителя - 1", но вы можете создать так называемую "иерархию объектов", где "родитель 3 является ребенком родителя 2 является ребенком родителя 1". Это чрезвычайно полезно для структурирования вашей игры, и вам настоятельно рекомендуется - научиться использовать этот механизм.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Object_Properties/Physics_Objects.htm b/Manual/contents/The_Asset_Editors/Object_Properties/Physics_Objects.htm index e5f1a2ffd..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Object_Properties/Physics_Objects.htm +++ b/Manual/contents/The_Asset_Editors/Object_Properties/Physics_Objects.htm @@ -1,126 +0,0 @@ - - - - - Физические объекты - - - - - - - - - - -

Физические объекты

-

Когда вы впервые создаете новый ресурс объекта, есть флажок Uses Physics, который по умолчанию не установлен. Выбор этой опции радикально изменит поведение вашего объекта, когда его экземпляр будет помещен - в комнате, так как при этом включаются физические свойства объекта, а значит, его "традиционные" функции перемещения и столкновений больше не действуют (но только если комната, в которую он помещен, также помечена как физическая. См. - раздел Свойства редактора комнат). Когда вы отметите этот параметр, окно ресурсов объекта откроет новое цепочечное окно для редактора физики:

-

Прежде чем приступить к редактированию значений для физического поведения, сначала следует задать форму столкновения. - При "обычной" системе столкновений ваши столкновения основаны на маске sprite, назначенной объекту, но с включенной физикой это уже не так. Мы должны сами назначить объекту форму столкновения (это правильно называется приспособлением, подробнее см. в разделе " Функции физики" ), которая может быть либо кругом, либо прямоугольником, либо многоугольником. - форма, которую вы сами определяете. При нажатии на кнопку Modify Collision Shape (Изменить форму столкновения ) откроется следующее окно с цепочкой для редактирования формы:

-

Он выглядит аналогично редактору контуров и функционирует точно так же. Однако, в зависимости от - от выбранной маски, он может быть более строгим:

-
    -
  • Если у вас круговая маска, то вы можете потянуть за любую из точек контура, чтобы сделать диаметр круга больше или меньше
  • -
  • Если у вас прямоугольная маска, то вы можете перемещать любой из четырех углов, но соответствующие углы будут автоматически корректировать положение, чтобы всегда сохранять прямоугольник
  • -
  • Если у вас есть пользовательская (многоугольная) маска, она должна иметь минимум 3 и максимум 8 точек и быть выпуклой (см. рисунок ниже).
  • -
-

После того как вы определили форму, необходимо определить основные физические свойства, которыми должен обладать ваш объект. Эти - настраиваются путем изменения следующих параметров:

-

-

Плотность

-
-

Плотность чего-либо определяется как его масса на единицу объема, что в основном означает, сколько массы вместилось в пространство, которое он занимает в мире. Так, воздушный шар имеет низкую плотность, поскольку его масса мала и занимает большое пространство, в то время как - свинцовый брусок будет иметь высокую плотность, поскольку он имеет большую массу, но занимает мало места. В мире 2D-физики GameMaker масса рассчитывается автоматически на основе значений, которые вы вводите для плотности, и площади поверхности формы, которую вы определяете. - формы, которую вы определяете для приспособления. Это напрямую влияет на силу инерции приспособления, а также на то, как оно реагирует на столкновения и силы, поэтому если вы создадите маленькую форму с высокой плотностью, она будет иметь очень большую массу (как брусок из - свинца), но если вы определите большую форму с низкой плотностью, она будет иметь гораздо меньшую массу (как воздушный шар).

-

Обратите внимание, что при установке плотности в 0 будет создано "статическое" приспособление, которое по сути является бесконечно плотным и не будет подвержено влиянию внешних сил или столкновений, за исключением особых случаев, когда экземпляр был создан как кинематический (см. - ниже для более подробной информации).

-

-
-

Реституция

-
-

В физике реституция определяется как "возвращение объекта или системы в исходное состояние после упругой деформации", но так как фикстуры в GameMaker являются действительно жесткими телами и не могут быть деформированы, то реституция - это действительно - способ сказать, насколько "упругим" является крепление. Эта настройка влияет на то, насколько сильно объект "отскакивает" при столкновении с другими объектами, и зависит от других сил, действующих на объект, таких как гравитация и трение.

-

-
-

Группа столкновений

-
-

По умолчанию группа столкновений для всех физических объектов равна 0, и это означает, что они будут взаимодействовать как обычно, что в свою очередь означает, что для их взаимодействия должно произойти событие столкновения (для запуска столкновения достаточно простого комментария), иначе - столкновение не будет зарегистрировано. Однако вы также можете указать, что объект должен принадлежать к определенной, пронумерованной группе столкновений. Назначая объекты в положительную группу столкновений (т.е.: три объекта находятся в группе - " 2"), вы сообщаете GameMaker, что экземпляры этих объектов должны всегда сталкиваться, даже если у них ничего нет в событии столкновения, подчиняясь физическим свойствам, которые вы им назначили, и - комнате, в которой они находятся. И наоборот, если у вас есть объекты с отрицательной группой столкновений (т.е. четыре объекта, которым присвоено значение "-1"), вы сообщаете GameMaker, что эти объекты никогда не должны сталкиваться, и любые события столкновения между ними будут игнорироваться. - между ними будут игнорироваться.

-

ПРИМЕЧАНИЕ: Использование групп столкновений значительно увеличивает объем обработки, требуемый системой физики, поэтому их следует использовать только в случае крайней необходимости и иметь как можно меньше групп.

-

-
-

Линейное демпфирование

-
-

Демпфирование используется для уменьшения скорости экземпляра в физическом мире, когда он перемещается по комнате. В принципе, это похоже на трение о поверхность в "реальном" мире, но в системе физики GameMaker трение на самом деле - применяется только тогда, когда два экземпляра с формами столкновения (приспособлениями) находятся в контакте. Таким образом, линейное демпфирование можно рассматривать как "воздушное трение", которое постепенно замедляет любой движущийся физический объект с течением времени, без необходимости контакта с - другим физическим объектом.

-

-
-

Угловое демпфирование

-
-

Если вспомнить любой вращающийся объект в "реальном мире", если только он не оснащен двигателем или не находится в космосе, его вращение со временем замедляется под воздействием внешних сил (например, механического трения или трения о воздух или воду, окружающие его). - окружающих его). Мы можем использовать опцию углового демпфирования для имитации этого эффекта и уменьшения скорости вращения экземпляров в физическом мире, поскольку без нее любой вращающийся экземпляр продолжал бы вращаться бесконечно.

-

-
-

Трение

-
-

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

-

-
-

-

Наконец, есть три дополнительные опции, которые могут быть отмечены как включенные или выключенные для вашего приспособления: Sensor, Start Awake и Kinematic. Каждый из этих флагов изменит поведение вашего приспособления следующим образом - способами:

-

-

Датчик

-
-

Установив этот флажок, вы даете команду GameMaker "игнорировать" физические свойства объекта, но при этом возвращать событие столкновения с окружающими его объектами. Таким образом, вы можете иметь экземпляр, не имеющий физического присутствия - в комнате, но который может реагировать на столкновение с другим объектом, например, игроком, и делать что-то в свою очередь, например, открывать дверь или вызывать какое-то действие в другом месте комнаты.

-

ПРИМЕЧАНИЕ: Сенсорное приспособление выдает событие столкновения только при первом столкновении, то есть вы не получите поток событий столкновения, когда два тела продолжают накладываться друг на друга (что традиционно должно - происходит). Если они перестанут накладываться друг на друга и наложатся в следующий раз, произойдет еще одно событие столкновения.

-

-
-

Начните бодрствовать

-
-

Этот параметр установлен по умолчанию и представляет собой начальное "состояние" светильника в начале комнаты, в которую он был помещен. Обычно вы хотите, чтобы оно было в бодрствующем состоянии (т.е. участвовало в физическом мире) с самого начала, но иногда это - может привести к определенным нестабильностям и нежелательным эффектам из-за резкого начала физического моделирования. Чтобы избежать этих эффектов, вы можете снять флаг, и экземпляр будет создан со спящим приспособлением, и оно не будет участвовать в - физическом моделировании до тех пор, пока на него ничего не подействует.

-

Обратите внимание, что физические экземпляры будут помечены как "спящие", когда они больше не находятся в движении и не взаимодействуют с другими физическими экземплярами, а "спящий" экземпляр - это просто экземпляр, который в настоящее время не обрабатывается полностью - физического моделирования (что экономит затраты процессора).

-

-
-

Кинематическая

-
-

В игре, основанной на физике, есть определенные случаи, когда вы хотите передвигаться, но не хотите, чтобы на вас действовали такие силы, как гравитация, или силы, возникающие при столкновении с динамическими объектами (вспомните, например, движущиеся платформы в платформенной игре). - например). Для таких объектов простая установка плотности фиксатора на 0 будет означать, что физика будет считать, что объект предназначен для статического движения, и он не будет реагировать ни на что. Однако установка этого флажка - сделает статичный объект кинематическим , и хотя на него по-прежнему не будут влиять столкновения и такие силы, как гравитация, его можно будет перемещать или вращать с помощью соответствующих переменных (см. phy_position_x и - phy_position_y, например).

-

-
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Objects.htm b/Manual/contents/The_Asset_Editors/Objects.htm index bc708b080..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Objects.htm +++ b/Manual/contents/The_Asset_Editors/Objects.htm @@ -1,96 +0,0 @@ - - - - - - Объекты - - - - - - - - - - -

Редактор объектов

-

Объекты - это ресурсы, которые мы используем для управления аспектами игры и для выполнения определенных действий. Чаще всего они связаны с sprite, чтобы вы видели их в игровых комнатах, но иногда они используются в качестве "закулисного" контроллера для выполнения действий, связанных с пользователем, или для синхронизации и т.д.. Им может быть задано поведение, и они могут реагировать на определенные события, а также друг на друга, и большинство вещей, которые вы видите в игре, основаны на объектах и их взаимодействии. Мы говорим "на основе", потому что на самом деле вы не размещаете объекты непосредственно в игровых комнатах, а размещаете экземпляры этих объектов, которые, по сути, являются копиями (или клонами, если хотите) ресурса объекта. Это очень важно помнить, поскольку экземпляры и объекты - это не одно и то же, и каждый из них имеет свой собственный набор функций, которые могут влиять на них.

-

Чтобы пояснить это, представьте себе игру, созданную в GameMaker. Все персонажи, монстры, шары, стены и т.д... - это объекты, которые вы создаете в Asset Browser. Затем вы перетаскиваете объект в комнату в редакторе комнат, чтобы создать экземпляр , скопированный из шаблона базового объекта. Затем экземпляр в комнате можно изменить в самом редакторе или с помощью кода, чтобы изменить его масштаб, цвет или другие детали "базового" объекта. Поэтому, когда мы говорим о том, что что-то влияет на экземпляр или изменяет его, мы имеем в виду, что это влияет на одну конкретную копию объекта в комнате. Только этот единственный экземпляр подвергается воздействию, а все остальные - нет. Но когда мы говорим о влиянии на объект или его изменении, мы имеем в виду, что изменяем объект в браузере активов, и все, что мы делаем с ним, будет отражено во всех экземплярах, созданных с этого момента. Таким образом, объект - это шаблон для экземпляра, а экземпляр - это то, что мы размещаем в комнате, чтобы создать нашу игру.

-

Чтобы создать объект в вашей игре, вы можете щелкнуть правой кнопкой мыши в браузере активов и выбрать опцию Create Object. Откроется окно, изображенное в верхней части этой страницы, со следующими разделами:

-

Подробности

-
-

Здесь вы можете дать своему объекту имя. Это имя не должно содержать пробелов и неразрешенных символов (разрешены только буквенно-цифровые символы и подстрочный символ "_") и должно быть коротким, но запоминающимся, чтобы вы могли легко идентифицировать ресурсы - впоследствии, когда у вас их может быть много. Например, многие люди используют префикс или суффикс для определения различий между ресурсами, например, "obj_Ship" или "Ship_obj".

-

Далее вы можете выбрать sprite для объекта, если вы хотите, чтобы он его имел. Щелкните левой кнопкой мыши на поле sprite, и появится проводник объектов со списком всех доступных sprites из браузера объектов:

-

Затем вы можете выбрать тот, который хотите использовать для объекта. Когда объекту назначен sprite, вы можете нажать кнопку Редактировать спрайт , чтобы изменить свойства спрайта, или - если у вас нет sprite для объекта, но вы хотите его создать - вы можете нажать кнопку Добавить спрайт , чтобы создать новый актив и назначить его. - кнопку Add Sprite , чтобы создать новый актив sprite и назначить его. Вы также можете отредактировать изображение актива sprite, которое было - щелкнув на кнопке Edit Image , чтобы открыть редактор изображений.

-

-
-

Маска столкновения

-
-

Под областью назначения sprite находится кнопка для выбора определенной маски столкновений. По умолчанию объект будет генерировать свойства столкновений на основе назначенного ему sprite, но бывают случаи, когда вы можете захотеть. - столкновения должны быть основаны на другой форме из другого sprite. Например, в игре с видом сверху вниз у главного объекта sprite есть прямоугольная маска столкновений, но для более плавного столкновения лучше использовать круглую маску. В таких случаях - вы можете нажать кнопку Маска столкновений и выбрать другой ресурс sprite, так что теперь экземпляры объекта будут рисовать назначенный sprite, но основывать столкновения на маске sprite. Более подробную информацию о масках столкновений можно найти - масках столкновений на странице, посвященной редактору спрайтов.

-

-
-

Свойства

-
-

Здесь вам предлагаются следующие параметры для вашего объекта:

-
    -
  • Visible: Visible указывает, видны ли экземпляры этого объекта при запуске комнаты. Обычно большинство экземпляров видимы, но иногда полезно иметь невидимые экземпляры - например, их можно использовать в качестве путевых точек для управления движущимся монстром или для отслеживания значений и выполнения определенных действий по времени. Невидимые объекты все равно реагируют на события, и если им назначен sprite или маска, они также будут реагировать на столкновения с другими объектами... их просто не видно, и они не выполняют свое событие рисования. По умолчанию флаг видимости установлен.
  • -
  • Solid: Когда вы отмечаете экземпляр как solid, вы сообщаете GameMaker, что он должен попытаться разрешить любые столкновения до того, как сработает событие Collision Event. Это очень базовая функциональность, и в действительности все, что она делает, это перемещает экземпляр обратно в позицию, в которой он находился за мгновение до обнаружения столкновения, перед выполнением любого кода или GML Visual, который находится в самом событии столкновения, и как таковая имеет ограниченное применение.
  • -
  • Постоянный: Постоянный объект - это объект, который не исчезает при изменении комнаты, а "сохраняется" и переносится в новую комнату. Он исчезнет только тогда, когда вы явно уничтожите его, либо с помощью действия destroy, либо в коде. Это означает, что если вы поместите постоянный объект в одну комнату, он будет доступен во всех последующих комнатах и продолжит выполнять любые действия, назначенные на события в свойствах объекта, за исключением события Create, которое срабатывает только один раз при первоначальном создании, а не при переходе в новую комнату. Это удобно, когда, например, главный герой переходит из комнаты в комнату, и вы хотите сохранить переменные внутри экземпляра неизменными, однако следует очень внимательно следить за правильностью создания и уничтожения постоянных объектов, поскольку в проект легко могут по ошибке закрасться ошибки.
  • -
-

Стойкость и комнатные слои

-
-

Когда вы создаете экземпляр с включенной персистентностью в комнате, ему будет назначен слой или глубина (в зависимости от того, какую функцию вы использовали для создания экземпляра объекта). При смене комнаты, если в следующей комнате нет слоя с тем же именем или глубиной, что и назначенный, то для экземпляра будет создан новый слой, сохраняющийся между комнатами. Если при создании экземпляра вы присвоили слою имя, то новый слой также будет называться так же, как и исходный, а если вы присвоили экземпляру глубину, то новый слой будет называться "_layer_XXX", где "XXX" - шестнадцатеричное значение, используемое для присвоения слою уникального имени. Эти слои будут удалены из комнаты при завершении работы комнаты.
-
- Еще один момент, связанный со слоями и постоянными экземплярами: если при создании экземпляра вы назначили ему слой с именем, а в следующих комнатах есть другой слой с тем же именем, то сохраняемый экземпляр будет назначен слою с тем же именем, независимо от глубины слоя.
-
- Наконец, если сохраняемый экземпляр перемещается в комнату со слоем на той же глубине, на которой он был создан, он не будет назначен этому слою, а вместо него будет создан новый слой на той же глубине (в соответствии с соглашением об именовании, описанным выше). -

-
-

Постоянство и события

-
-

Как уже упоминалось, постоянный объект запускает событие Create только один раз, но в соответствующее время у него также будут срабатывать события Game Start, Game End, Room Start и Room End. Однако если вы перезапустите игру (например, с помощью функции game_restart() ), все постоянные объекты будут удалены и будут существовать только тогда, когда будут созданы игрой.
-
- Также обратите внимание, что если вы деактивируете постоянный объект, он больше не будет переходить из одной комнаты в другую, если не будет повторно активирован до срабатывания события Room End. Повторная активация требует полного шага игры, поэтому использование события Room End для этого не работает, так как не дает игре полного шага для повторной активации объекта, поэтому необходимо помнить об этом при использовании деактивации вместе с постоянными объектами и планировать код соответствующим образом. -

-
-
    -
  • Использует физику: Когда вы устанавливаете флажок Uses Physics, вы сообщаете GameMaker, что этот объект должен быть частью физического мира (как установлено вредакторе комнат ). Отметив этот флажок, вы также откроете следующее окно, в котором можно определить физические свойства всех экземпляров этого объекта. Более подробную информацию об этом можно найти в разделе Физические объекты.
  • -
  • Managed: Должен ли этот объект быть управляемым при использовании Rollback Multiplayer. Состояние управляемого объекта может быть откатано, и на нем могут быть запущены предсказания. См. раздел " Управляемые объекты".
  • -
-
-

-

Последнюю часть редактора объектов занимают различные Опции объектов, каждая из которых рассматривается на отдельной странице, ссылка на которую приведена ниже:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Paths.htm b/Manual/contents/The_Asset_Editors/Paths.htm index 68d571975..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Paths.htm +++ b/Manual/contents/The_Asset_Editors/Paths.htm @@ -1,97 +0,0 @@ - - - - - - Пути - - - - - - - - - - -

Редактор путей

-

В какой-то момент при создании игр вам может понадобиться, чтобы один из экземпляров проходил путь по уровню. Это можно сделать в коде, просто создав массив позиций в комнате и заставив экземпляр перемещаться между ними, но это может быть сложной задачей для настройки и трудно изменить, протестировать и адаптировать для разных экземпляров. По этой причине в GameMaker есть ресурсы путей и специальный редактор путей.

-

Основная идея довольно проста - вы определяете путь, рисуя его в редакторе путей, затем вы можете поместить действие (или код) в событие создания объекта, чтобы указать экземпляру следовать по этому конкретному пути. Вы также можете задать скорость движения по пути и ряд других действий, связанных с положением и ориентацией пути в комнате. При первом создании ресурса пути открывается окно редактора пути со следующими опциями:

-

-

Свойства пути

-
-

Как и всем ресурсам в GameMaker, вам следует дать своему новому пути уникальное имя, поскольку именно оно будет использоваться для его идентификации во всей создаваемой игре. Хорошей системой, которую используют многие, является префикс (или суффикс) ресурса - для удобства распознавания в коде или действиях (например: path_Enemy_1 или PowerUp_path).

-

После присвоения имени пути можно приступить к его определению, размещая точки в главном редакторе справа, при этом каждая точка добавляется в список вместе с ее положением и скоростью. Значение скорости для точек пути определяется в процентах - от скорости, с которой объект движется по пути (по умолчанию 100%). Таким образом, если запустить объект со скоростью 2 (2 пикселя за шаг) вдоль пути, а затем для одной из точек пути установить значение скорости 50%, то объект будет снижать скорость - по мере приближения к этой точке до скорости 1 (50% от скорости пути). В равной степени можно установить скорость 150%, и экземпляр будет ускоряться по мере приближения к этой точке. Таким образом, вы можете создать красивое динамичное движение без какого-либо кода - без какого-либо кода. -

-

Стоит отметить, что вы можете быстро дважды щелкнуть на любой из определенных точек в списке, чтобы переместить редактор в выбранную точку. - или медленно дважды щелкнуть на одном из значений, чтобы отредактировать его вручную (x, y или скорость).

-

Вы также можете указать вид соединения для всего пути и то, должен ли путь быть замкнутым или нет (замкнутый путь соединяет последнюю точку пути с первой). Вид соединения может быть либо прямым, либо гладким , где - прямолинейное соединение просто соединяет точки пути линейно, с изменением угла в каждой точке, в то время как плавное соединение создаст более мягкий путь, который может не проходить прямо через любую из точек, а скорее будет проходить по - приблизительную линию, создавая красивые кривые с помощью плавной интерполяции. Вы также можете указать точность для кривых (по умолчанию 4), которая может быть от 1 до 8, причем 8 - самая - наиболее гладкой. На рисунке ниже показан пример того, как эти параметры влияют на контур:

-

The Path Editor

-
-

Редактирование контура

-
-

Вы можете добавлять точки к пути, щелкая мышью на в любом месте окна редактирования, и все последующие щелчки будут добавлять новые точки. После размещения точки в редакторе ее можно перемещать, щелкнув по ней мышью - щелкнув и перетащив ее, или изменив значения, представленные слева для позиции X и Y и скорости (см. Свойства контура, выше). Вы - можно использовать / и щелкнуть левой кнопкой мыши на нескольких точках, чтобы выделить их вместе, а затем эту группу точек можно перетаскивать и размещать так, как вам нужно. Вы можете нажать , чтобы удалить выделенную точку или точки.

-

В окне редактора есть дополнительное меню, доступное при нажатии правой кнопки мыши , показанное ниже:

-

Каждый из пунктов этого меню работает следующим образом:

-
    -
  • Удалить точки - удаление выбранной точки или точек.
  • -
  • Pan To Path - повернуть вид в редакторе к центру контура.
  • -
  • Reverse - изменить порядок следования точек пути. Это не перемещает их, а скорее изменяет порядок, в котором они будут обрабатываться, так что начало становится концом и наоборот.
  • -
  • Flip - перевернуть контур вдоль горизонтальной оси.
  • -
  • Зеркало - перевернуть контур вдоль вертикальной оси.
  • -
-

-

-
-

Набор инструментов

-
-

Кнопки панели инструментов в верхней части окна редактора позволяют управлять процессом рисования. Вы можете включить или выключить фоновую сетку, а также настроить добавление точек контура с привязкой к этой сетке или без нее:

-

Значения привязки указывают на размер ячеек сетки - и его можно изменить на любое необходимое значение. Остальные инструменты предназначены для увеличения или уменьшения масштаба и панорамирования области редактора, и вы можете нажать кнопку , чтобы восстановить соотношение 1:1 с дисплеем. Обратите внимание, что если вы панорамируете слишком далеко от места, где вы хотите нарисовать контур, вы можете использовать меню правой кнопки мыши, а затем выбрать Pan to Path для прокрутки назад к месту, где вы работали.

-


-
-

Путевые точки

-
-

Пути - это просто набор точек, соединенных линией. В редакторе вы размещаете эти точки с помощью левой кнопки мыши . Вы можете добавлять точки в любом месте редактора помещения, и они будут последовательно добавляться в список точек, образуя контур. Если вы поместите точку рядом с соединительной линией или другим узлом, новая точка будет вставлена в контур, а не добавлена к нему. - (расстояние обнаружения для этого можно задать в настройках). Вы можете нажать / и щелкнуть на уже размещенных точках, чтобы выбрать их, и тогда любые операции, выполняемые с точками контура, например, их перемещение, будут применены ко всем выделенным точкам как группе. - выделенным точкам как группе. Чтобы удалить точку или группу точек, щелкните правой кнопкой мыши и выберите "Удалить - Удалить точку" или нажать клавишу .

-

Обратите внимание, что вы также можете использовать следующие сочетания клавиш для выполнения некоторых дополнительных операций, которые недоступны через меню правой кнопки мыши на выбранной точке (точках) контура:

-
    -
  • T + : Перевести (переместить) точки пути
  • -
  • R + : Поворот точек контура
  • -
  • S + : Масштабирование точек пути
  • -
-


-

-
-

-

-

- - - - - diff --git a/Manual/contents/The_Asset_Editors/Room_Properties/Filters_and_Effects.htm b/Manual/contents/The_Asset_Editors/Room_Properties/Filters_and_Effects.htm index f214d5537..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Room_Properties/Filters_and_Effects.htm +++ b/Manual/contents/The_Asset_Editors/Room_Properties/Filters_and_Effects.htm @@ -1,64 +0,0 @@ - - - - - - Фильтры и эффекты - - - - - - - - - - -

Фильтры и эффекты

-

Слои фильтров/эффектов

-

В редакторе помещений вы можете добавить новый слой фильтра/эффекта, нажав на кнопку , которая добавит новый слой и откроет его свойства ниже:

-

-

Слой Filter/Effect (или FX) используется для применения визуального фильтра или эффекта к некоторым слоям. Вы можете выбрать эффект из раскрывающегося списка "Тип эффекта", который покажет вам его параметры в окне свойств слоя, позволяя вам изменять его внешний вид и поведение.

-

Например, выбрав эффект "Дрожание экрана", вы сможете изменить его величину, скорость дрожания и применить sprite в качестве текстуры шума:

-

При добавлении слоя FX выбранный эффект будет применен ко всем другим слоям, которые находятся ниже слоя FX, как показано на этом рисунке:

-

Это означает, что ко всем "затронутым" слоям будет применен выбранный фильтр (здесь "Desaturate"), поскольку они находятся ниже слоя FX. Любые слои, расположенные выше слоя FX, не будут затронуты. Слой может быть затронут несколькими слоями эффектов, которые находятся над ним в любом месте порядка слоев.

-

Для создания фильтров/эффектов, применяемых только к одному слою, см: Однослойные эффекты.

-

ПРИМЕЧАНИЕ Изменение глубины слоя или экземпляра во время выполнения может изменить то, какие слои FX применяются к нему, либо делая его глубину больше глубины слоя FX (по сути, он проходит под слоем FX и подвергается воздействию), либо делая его глубину меньше глубины слоя FX (он проходит над слоем FX и не подвергается воздействию).

-

Фильтр против эффекта

-

Фильтр использует только шейдеры и может быть предварительно просмотрен в редакторе комнат.

-

Эффект, помимо шейдеров, имеет внутренний код для управления собой. Из-за этого их нельзя просмотреть в редакторе комнат, и они становятся функциональными только во время выполнения (в игре).

-

Например, "Colourise" - это фильтр, а "Windblown Particles" - эффект.

-

Типы эффектов

-

Все фильтры и эффекты в раскрывающемся списке "Тип эффекта" документированы на этой странице: Типы и параметры FX.

-

Однослойный FX

-

Хотя вы можете создать слой FX для применения фильтра к нескольким слоям, вы также можете назначить фильтр только одному конкретному слою, используя Инспектор. Открыв Инспектор и выбрав слой комнаты, вы сможете применить к нему фильтр/эффект, и если этот слой не является FX-слоем (например, Instance Layer, Asset Layer и т.д.), то эффект будет применен только к этому слою, а не к другим слоям, расположенным ниже него.

-

-

Вы также можете нажать на значок , чтобы включить/выключить FX для выбранного слоя.

-

Использование во время выполнения

-

Вы можете добавлять эффекты и управлять ими во время исполнения с помощью функции Filter/Effect GML Functions.

-
-

Для получения дополнительной информации читайте раздел " Функции фильтров и эффектов ".

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Room_Properties/Layer_Properties.htm b/Manual/contents/The_Asset_Editors/Room_Properties/Layer_Properties.htm index 99cd157dc..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Room_Properties/Layer_Properties.htm +++ b/Manual/contents/The_Asset_Editors/Room_Properties/Layer_Properties.htm @@ -1,174 +0,0 @@ - - - - - - Свойства слоя - - - - - - - - - - -

Типы и свойства слоев

-

Все, что попадает в комнату, создаваемую в редакторе комнат, размещается на слое. Слои можно добавлять, удалять и сортировать в редакторе слоев, они бывают разных типов, каждый со своим набором опций и способом работы. Количество слоев каждого типа не ограничено, можно иметь несколько слоев плиток, слоев путей, слоев экземпляров и т.д.. Каждый тип слоя имеет собственное окно свойств, в котором можно задать различные параметры в зависимости от типа слоя. Вы также можете переключать видимость слоя, при этом невидимые слои не обрабатываются во время выполнения (но вы можете сделать их видимыми в любое время, используя соответствующую функцию слоя).

-

На рисунке выше показан редактор слоев, в верхней части которого перечислены текущие слои, а в нижней - различные кнопки для создания слоев. Вы можете переименовать любой слой из этого редактора, сделав медленный двойной щелчок по его названию (обратите внимание, что для названий нельзя использовать ничего, кроме букв, цифр и символа "_"), а также включить или выключить его видимость, нажав на значок глаза . Если комната унаследовала слои от родительской комнаты, вы можете отключить наследование с помощью кнопки внизу, но обратите внимание, что это повлияет на все слои (более подробную информацию о наследовании см. здесь ). Вы также можете использовать или / и щелкнуть левой кнопкой мыши на нескольких слоях, чтобы выбрать их для дублирования или удаления (эти опции также доступны из меню правой кнопки мыши ).

-

Чтобы упорядочить слои и поддерживать их в порядке, можно создавать группы слоев в папке слоев, нажав на значок папки . Вы также можете удалить один или несколько выбранных слоев, нажав кнопку удаления . Все слои имеют значение глубины , которое определяет, на каком месте в порядке отрисовки будет располагаться слой при отображении его содержимого в комнате. Слои отрисовываются от наибольшей глубины к наименьшей, поэтому слой с глубиной -100 будет отрисован поверх слоя с глубиной 200.

-

Существует минимальная и максимальная глубина слоя от -16000 до 16000. Все, что размещено на слое вне этого диапазона, не будет отрисовано, хотя все события будут происходить как обычно для всего, что находится на слое.

-

Если вы щелкните правой кнопкой мыши на любом слое, вы получите меню слоя:

-

Здесь можно открыть окно свойств слоя для выбранного слоя, удалить слой, переименовать слой или добавить подслой. При выборе добавления подслоя новый слой будет создан под ним на вкладке справа. Затем можно выбрать, чтобы подслой унаследовал свои свойства от родительского слоя, а также установить, должен ли он унаследовать видимость от родительского слоя.

-

Обратите внимание, что вы можете перетаскивать слои вверх или вниз в окне, чтобы изменить их порядок, а также выбирать и перемещать несколько слоев, используя либо + для выбора от одного слоя к другому (включая все те, что находятся между ними), либо / + для выбора слоев по одному. Если вы поместите слои поверх папки со слоями, они будут перемещены и установлены как подслои папки, в которую вы их поместили. Вы также можете заблокировать слои, чтобы они не могли быть отредактированы по ошибке, используя кнопку блокировки .

-

В окне редактора, где вы размещаете различные активы на слоях, вы можете удерживать кнопку "P" + щелкнуть в любом месте, чтобы мгновенно выбрать актив и перейти к слою, на котором он был размещен.

-

Ниже представлен обзор каждого из доступных типов слоев, а также редактируемые свойства для этого слоя:

-

Фоны

-
-

Вы можете добавить новый фоновый слой, нажав на кнопку . Это добавит новый слой, а затем откроет окно свойств фона:

-

Room Layers

-

Когда вы создаете новый фоновый слой, по умолчанию для него не устанавливается sprite, поэтому GameMaker заливает слой сплошным цветом (вы можете щелкнуть на поле предварительного просмотра, чтобы открыть окно выбора цвета и изменить используемый цвет). При использовании простого цвета ни одна из других настроек слоя не используется в игре.

-

Если вместо этого вы выберете sprite, то вы можете наложить это изображение по горизонтали или вертикали, выбрать, растягивать ли изображение, чтобы оно заполнило всю комнату, и сместить его по своему усмотрению. Кроме того, если вы хотите, чтобы фон прокручивался в определенном направлении, вы можете задать горизонтальную и/или вертикальную скорость (каждый игровой шаг он будет перемещаться вдоль заданной оси на заданное количество пикселей), а также изменить положение фонового изображения, задав значения смещения по x и y. Вы также можете установить скорость анимации фона, если выбранный вами ресурс sprite имеет несколько подизображений, хотя по умолчанию это значение фиксируется на значении, установленном в редакторе Sprite для используемого изображения. Наконец, можно задать глубину слоя в явном виде, хотя по умолчанию это значение заблокировано, и для его изменения достаточно перетащить и изменить порядок слоев в редакторе слоев.

-

Обратите внимание, что наследование фона можно переключить и из этого окна, нажав на кнопку в самом верху.

-

-
-

Экземпляры

-
-

Вы можете добавить новый слой экземпляра, нажав на кнопку . Это добавит новый слой, а затем откроет окно свойств экземпляра:

-

В этом окне просто отображается список всех экземпляров, которые в данный момент находятся на слое. Вы можете добавить больше экземпляров на слой, открыв Браузер активов и перетащив оттуда объекты в комнату, или же вы можете выбрать экземпляр из Браузера активов, а затем нажать и удерживать для предварительного просмотра ресурса "на месте", а если вы дополнительно нажмете левую кнопку мыши , то сможете добавить экземпляр и даже "закрасить" его в слой комнаты, удерживая кнопку нажатой и перемещая мышь.

-

Список слоев можно упорядочить, щелкнув и перетащив экземпляр в списке на нужную позицию, но стоит отметить, что это исключительно в организационных целях в редакторе помещения, и если вы хотите установить определенный порядок создания, используйте окно Creation Order Window, которое можно открыть из окна свойств помещения или из контекстного меню помещения.

-

Двойной щелчок на любом экземпляре - в самом редакторе комнат или в списке свойств - откроет новое окно, позволяющее изменять аспекты этого единственного уникального экземпляра:

-

По умолчанию экземпляр будет иметь имя типа "inst_38B0BFF", но его можно изменить на любое другое, если в имени используются только буквенно-цифровые символы и нижний символ "_" (без пробелов). Однако стоит отметить, что имя, указанное здесь (независимо от того, задаете ли его вы или IDE по умолчанию), считается константой и поэтому должно быть уникальным для данного экземпляра. Это также означает, что оно может быть использовано в коде игры для идентификации экземпляра, но только если вы находитесь в той же комнате, что и экземпляр.

-

Под именем экземпляра находятся кнопки, позволяющие установить, будет ли этот экземпляр наследоваться от родительской комнаты, изменить объект, экземпляром которого он должен быть, или даже открыть редактор объектов, если вы хотите что-либо изменить в нем. Есть кнопка для проверки и редактирования переменных в окне " Переменные объекта", и вы можете изменить начальные характеристики этого экземпляра, задав цвет для смешивания (по умолчанию белый), или повернуть и перевернуть его. Вы также можете масштабировать объект по одной или обеим осям, задать его положение в комнате, а также скорость изображения и начальный кадр для использования sprite.

-

Наконец, вы можете задать экземпляру код создания, который будет выполняться непосредственно после кода события создания объекта и будет уникальным для данного экземпляра (так что вы можете, например, задать переменную в объекте, которая будет у всех экземпляров, а затем изменить ее в коде создания так, чтобы это значение было уникальным для одного экземпляра). Щелкнув на этом, вы вызовете окно сценария для экземпляра, в котором можно добавить любые функции или изменить любые переменные, и этот код будет запущен непосредственно после создания экземпляра и выполнения события создания экземпляра. Обратите внимание, что наследование кода создания можно включить или выключить независимо от наследования экземпляра.

-

Стоит отметить, что каждый экземпляр на слое автоматически помечается для экспорта при создании игры. Однако, особенно при работе с наследованием, может оказаться, что вы не хотите, чтобы определенные экземпляры были добавлены в комнату в финальной игре (или у вас может быть отладочный экземпляр в каждой комнате, и вы просто хотите исключить его из финальной игры). В этом случае просто снимите флажок "Экспорт" слева от экземпляра в списке, чтобы предотвратить его экспорт в качестве части исполняемого файла. Однако важно отметить, что если у вас есть код, который ссылается на данный экземпляр, то игра не будет работать корректно, поэтому используйте эту функцию с осторожностью.

-

-
-

Плиточные карты

-
-

Вы можете добавить новый слой карты плиток, нажав на кнопку . Это добавит новый слой, а затем откроет окно свойств слоя карты плиток и окно редактирования плиток :

-

В Свойствах слоя карты плиток можно переключить наследование слоя, изменить используемый набор плиток и задать смещение x или y для слоя, если вы хотите, чтобы сетка слоя не выравнивалась точно с позицией (0, 0) комнаты. Вы также можете установить глубину, на которой будет отрисовываться слой (для этого есть своя уникальная кнопка наследования), а также "заблокировать" эту глубину, что предотвратит дальнейшее редактирование после создания слоя.

-

Когда открывается окно свойств слоя, открывается также окно редактирования плитки, в котором отображается используемый набор плиток (если вы по ошибке закроете это окно, его можно снова открыть из меню Room > Tile Editing в верхней части страницы IDE). Вы можете щелкнуть на любой плитке, чтобы выбрать ее в качестве текущей кисти , а затем нарисовать их на слое в редакторе комнаты, щелкнув на холсте комнаты, или, если вы хотите нарисовать несколько плиток вместе, вы можете выбрать их как группу, щелкнув левой кнопкой мыши и перетащив, чтобы выбрать их из набора плиток перед рисованием. Если диапазон плиток, которые вы хотите нарисовать вместе, не находится в блоке, то вы можете удерживать нажатой кнопку / , а затем выбрать отдельные плитки с помощью левой кнопки мыши и создать пользовательскую кисть таким образом (вы также можете удалить плитки из пользовательской кисти с помощью + ). Обратите внимание, что создание пользовательских кистей таким способом является временным и предназначено для разового использования, однако вы можете использовать режим редактирования на вкладке " Кисти" для создания постоянных кистей, которые будут храниться в активе набора плиток:

-

Eye Icon

-

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

-

Окно редактирования плиток также позволяет выбрать кисти, анимированные плитки и автоплитки на вкладке "Библиотеки", о которых рассказывается в разделе " Редактор наборов плиток".

-

В верхней части редактора помещений, когда выбран слой с плиткой, вы увидите набор инструментов, предназначенных именно для плитки:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Shift IconКарандашЭто инструмент "Карандаш". Он использует выбранную плитку для рисования в редакторе помещений с помощью левой кнопки мыши , а стереть можно с помощью правой кнопки мыши . Обратите внимание, что значение индекса плитки отображается внизу в строке состояния комнаты в редакторе комнаты, а если для рисования выбрано несколько плиток (т.е. кисть), то будет показан список всех использованных индексов плиток.
Control IconЛастикС помощью инструмента "Ластик" вы можете использовать левую кнопку мыши , чтобы стереть заданную плитку в редакторе помещений. По сути, все, что это делает, это устанавливает индекс плитки на 0, что является зарезервированной "пустой" плиткой.
CMD IconЗаполнитьИнструмент заливки позволяет заполнить весь слой карты плиток или выбранные плитки текущей кистью. Используемая кисть может быть одной плиткой или составной кистью, состоящей из нескольких плиток, или даже плиткой из библиотеки анимации, а щелчок на слое приведет к заполнению плиток выбранной кистью. Если вы не использовали инструмент выделения, то заливка будет работать на всех последовательных пустых плитках или на всех последовательных плитках с одинаковым индексом. Если в слое есть выделение, то заливка будет ограничена рамками этого выделения.
LMB IconЛинияЕсли выбрать инструмент "Линия", щелкнуть , затем перетащить и отпустить, будет создана линия плиток между местом щелчка и местом отпускания. Если область слоя карты плиток выделена с помощью инструмента выделения, то линия будет добавлена только в границах выделения. Линии можно рисовать с помощью кисти с одной плиткой, составной кисти из разных плиток или анимированной плитки из библиотеки.
RMB IconПрямоугольникЕсли выбрать инструмент "Прямоугольник", щелкнуть , затем перетащить и отпустить, будет создан заполненный прямоугольник плиток с левым верхним углом в месте щелчка и правым нижним углом в месте отпускания. Если область слоя карты плиток выделена с помощью инструмента "Сечение", то прямоугольник будет добавлен только в границах выделения. Прямоугольники можно рисовать с помощью кисти для одной плитки, составной кисти из разных плиток или анимированной плитки из библиотеки.
Folder IconВыборЭто инструмент выделения, с помощью которого можно определить область слоя плитки для работы. Вы можете нажать левую кнопку мыши и затем перетащить мышь для создания прямоугольной области, или вы можете нажать / + для добавления нескольких выделений и + для очистки части выделения. Чтобы очистить все выделение, можно нажать . Если выделена область слоя плитки, остальные инструменты (Карандаш, Перевернуть, Повернуть и т.д.) будут работать только в пределах выделенной области. Обратите внимание, что вы также можете копировать ( / + "C"), вырезать ( / + "X") и вставлять ( / + " V") выбранные плитки в редакторе помещений, что приведет к переключению инструмента на Карандаш и позволит закрасить слой помещения выбранными плитками.
Delete Layer IconAutoTileЩелчок на этом инструменте включает стиль рисования "Автоплитка". Когда этот стиль активен, вы можете выбрать любую плитку из вкладки "Библиотеки автоплитки", а затем нарисовать ее на слое комнаты, и GameMaker автоматически изменит ее в соответствии с окружающими плитками, если вы правильно настроили вкладку "Автоплитка". Обратите внимание, что при выборе плитки из набора плиток, не входящей в библиотеки автоплитки, инструмент рисования будет переключен на стандартный инструмент "Карандаш".
RMB IconНаследованиеС помощью этого инструмента можно включить/выключить наследование для определенных плиток на данном слое. Для этого комната должна быть дочерней, а в свойствах слоя должно быть включено наследование. В таком состоянии редактор помещений по умолчанию окрашивает все наследуемые плитки в красный цвет, а нажатие правой кнопки мыши отключает наследование для этой плитки, а нажатие левой кнопки мыши включает его снова. Таким образом, вы можете повторно использовать элементы из "базовых" комнат, выборочно изменяя только те плитки, которые вам нужны, и наследуя все остальные.
Room Layer MenuФлипНажатие левой кнопкой мыши на инструмент Flip (или сочетание клавиш "X") перевернет плитку, выбранную для рисования, вдоль горизонтальной оси без изменения инструмента рисования (если для рисования выбрана пользовательская кисть, то перевернется вся кисть). Если у вас нет плитки, выбранной для рисования, но есть группа плиток, выбранных на слое, то инструмент "Перевернуть" перевернет выбранные плитки.
Shift IconЗеркалоПри нажатии на инструмент "Зеркало" левой кнопкой мыши (или при использовании сочетания клавиш " Y") плитка, выбранная для рисования, будет зеркально отражена вдоль вертикальной оси, без изменения инструмента рисования (если для рисования выбрана пользовательская кисть, то зеркально отразится вся кисть). Если для рисования не выбрана плитка, но выбрана группа плиток на слое, то инструмент "Зеркало" отразит выбранные плитки.
LMB IconПовернутьЕсли щелкнуть левой кнопкой мыши на инструменте "Поворот" (или использовать сочетание клавиш " Z"), то выбранная для рисования плитка повернется на 90° по часовой стрелке без изменения инструмента рисования (если для рисования выбрана пользовательская кисть, то повернется вся кисть). Если для рисования не выбрана плитка, но на слое выделена группа плиток, то инструмент "Поворот" повернет выбранные плитки.
-

Обратите внимание, что если с помощью инструмента Selection Tool выделить группу плиток на холсте редактора помещений, а затем вырезать или скопировать их, они временно станут текущей кистью для рисования.

-

-
-

Пути

-
-

Вы можете добавить новый слой пути, нажав на кнопку . Это добавит новый слой, а затем откроет окно свойств контура:

-

Здесь вы можете выбрать путь из браузера активов, который будет использоваться для слоя, а затем изменить определенный тип соединения (с использованием плавной интерполяции или прямой), а также то, будет ли он замкнутым или нет, и точность, с которой должен быть создан путь. Обратите внимание, что здесь можно переключить наследование, а также установить для контура определенный цвет (по умолчанию красный), чтобы лучше видеть их в редакторе. Если ресурс контура не определен, можно нажать кнопку Создать , чтобы создать его. Слои контура также имеют значение глубины, связанное с ними (по умолчанию заблокировано), хотя при их использовании в игре ничего не отображается.

-

Стоит отметить, что вы также можете добавлять точки к пути, нажав левую кнопку мыши , а также удалять точки с помощью правой кнопки мыши , или выбрать точку, нажав на нее и перетащив ее вокруг, все в редакторе комнаты, что делает создание и редактирование путей очень простым (хотя вы можете редактировать путь и в редакторе путей, как обычно). Если удерживать нажатыми кнопки / + на разных точках пути, то все они будут выделены, и вы сможете переместить их вместе или удалить из меню (см. ниже).

-

Если вы щелкните правой кнопкой мыши в окне редактора комнаты во время манипуляций с контуром, вы получите следующие опции:

-

Здесь можно изменить направление пути (это не даст видимого эффекта, но изменит порядок подсчета точек пути, так что начальная точка станет конечной и наоборот), а также перевернуть их по горизонтали или вертикали. Из этого меню можно также удалить выбранную точку. Обратите внимание, что вы можете удерживать кнопку "T", " S" или "R", затем щелкнуть и перетащить, чтобы перевести, масштабировать или повернуть весь контур.

-

-
-

Активы

-
-

Вы можете добавить новый слой актива, нажав на кнопку . Это добавит новый слой, а затем откроет окно свойств слоя актива:

-

Слой активов - это просто графический актив (sprite или последовательность), который был помещен в комнату независимо от экземпляров, и вы можете поместить их, либо перетащив их из браузера активов, либо выбрав нужный вам актив в браузере активов и затем используя + , чтобы "нарисовать" его. Sprite Активы похожи на плитки, только они могут быть полностью анимированы - если используемый sprite имеет вложенные изображения, они будут показаны - без ограничений, которые существуют для плиток, т.е. они не привязаны к сетке и анимация может быть любой длины и скорости. Последовательности - это "коллекции" sprites, звуков и экземпляров, которые будут воспроизводиться при входе в комнату.

-

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

-

Как только вы разместите актив в комнате, у вас будет определенный контроль над тем, как он выглядит, путем двойного щелчка на нем, чтобы открыть окно свойств актива:

-

Отсюда вы можете дать активу уникальное имя, установить, должен ли он наследоваться от родительской комнаты, или изменить sprite или последовательность, которую вы хотите, чтобы он отображал. Для секвенций можно задать скорость анимации и начальный кадр головки воспроизведения, а также цвет, который будет сочетаться с ней (по умолчанию белый), и положение в комнате. Вы можете изменять характеристики объектов sprite, задавая цвет, с которым он будет смешиваться (по умолчанию белый), или поворачивать и переворачивать его. Вы также можете масштабировать sprites по одной или обеим осям и задавать их положение в комнате. Если sprite имеет вложенные изображения, можно выбрать скорость анимации, а также установить начальный кадр, который будет показан.

-

Стоит отметить, что каждый актив на слое автоматически помечается для экспорта при создании игры. Однако, особенно при работе с наследованием, может оказаться, что вы не хотите, чтобы конкретный sprites был добавлен в комнату в финальной версии игры. В этом случае просто снимите флажок "Экспортировать" слева от sprite в списке свойств слоя, чтобы предотвратить его экспорт в качестве части исполняемого файла. Однако важно отметить, что если у вас есть код, который ссылается на этот актив, то игра не будет работать корректно, поэтому используйте эту функцию с осторожностью.

-
-

Фильтр/эффект

-
-

Вы можете добавить новый слой фильтра/эффекта, нажав на кнопку . Это добавит новый слой, а затем откроет окно свойств слоя актива:

-

Control Icon

-

Слой фильтра/эффекта (или FX) используется для применения визуального фильтра или эффекта к некоторым слоям. Добавление слоя FX и выбор эффекта из выпадающего меню "Тип эффекта" приведет к применению этого эффекта ко всем слоям, которые находятся ниже выбранного слоя FX, как показано в этом примере:

-

Это означает, что ко всем "затронутым" слоям будет применен выбранный фильтр (здесь "Desaturate"), поскольку они находятся ниже слоя FX. Все слои, расположенные выше слоя FX, останутся незатронутыми.

-

Вы можете создавать однослойные FX с помощью Инспектора.

-

Чтобы узнать больше о слоях фильтра/эффекта, прочитайте статью Фильтр и эффекты.

-

-

-
-

-

Инспектор

-

Вы можете открыть окно Inspector и использовать его для проверки свойств слоя комнаты, что позволяет редактировать его свойства и дополнительно применять к нему фильтр/эффект:

-

CMD Icon

-

Когда вы применяете фильтр/эффект к слою, не являющемуся FX, с помощью инспектора, он всегда будет применяться как "однослойный" эффект, т.е. его эффект будет применяться только к этому конкретному слою, а не к другим слоям, расположенным ниже него.

-

Для получения дополнительной информации читайте статью " Инспектор".

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Room_Properties/Room_Inheritance.htm b/Manual/contents/The_Asset_Editors/Room_Properties/Room_Inheritance.htm index 4d339b9f5..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Room_Properties/Room_Inheritance.htm +++ b/Manual/contents/The_Asset_Editors/Room_Properties/Room_Inheritance.htm @@ -1,45 +0,0 @@ - - - - - - Наследование комнат - - - - - - - - - - -

Наследование комнат

-

Важной особенностью редактора комнат является наследование. Наследование означает, что вы можете создать "родительскую" комнату, а затем из нее создать "дочернюю" комнату, которая унаследует все свойства родительской комнаты. Эта дочерняя комната, по сути, является клоном родительской, и все в ней связано с родительской комнатой. Это означает, что если вы измените вид в родительской комнате, или переместите плитку, или добавите экземпляры, это будет отражено в дочерней комнате. Мало того, в дочерней комнате можно выборочно отключить наследование для определенных слоев, экземпляров, активов и всего остального, что необходимо.

-

В комнате, которая имеет наследуемые свойства, будут подсвечены кнопки наследования - как показано на изображении ниже - и вы сможете использовать их для включения или выключения наследования для данного слоя, ресурса и т.д....

-

Сначала это может быть трудно представить, поэтому давайте рассмотрим пример: допустим, у вас есть комната с городом и замком в центре. Город и замок нарисованы с использованием разных слоев плитки, а также у вас есть инстансы и некоторые пути для NPC, по которым они могут ходить. Вы хотите сделать так, чтобы в игре замок был разрушен, но все остальное в городе выглядело и вело себя одинаково. Вы создадите начальную комнату со всем, как обычно, затем вы создадите дочернюю комнату, которая наследует слои родительской комнаты. В дочерней комнате вы отключите наследование слоя плитки (или даже отдельных плиток) для области замка и переместите/добавьте/удалите плитки, чтобы создать вид разрушенного замка. Когда игрок войдет в эту комнату, все экземпляры из родительской комнаты и все плитки и т.д. останутся точно такими же, за исключением разрушенного замка.

-

ВАЖНО! Если вы отредактируете любое наследуемое свойство, оно автоматически отключит наследование в разделе, к которому оно относится, без необходимости предварительно переключать кнопку "Наследовать".

-

Чтобы создать наследование комнат, достаточно выбрать комнату, из которой вы хотите создать дочернюю, в Браузере активов, а затем щелкнуть правой кнопкой мыши . Откроется меню комнаты, в котором можно выбрать Create Child Room , чтобы создать новую дочернюю комнату. Она будет создана в Браузере активов:

-

Для изменения порядка комнат и/или наследования необходимо использовать Менеджер комнат, который можно открыть с помощью меню в правом верхнем углу Браузера активов. Здесь вы можете перейти на вкладку Наследование , затем нажать и перетащить любую комнату на любую другую комнату, чтобы она стала дочерней по отношению к этой комнате (или перетащить дочернюю комнату с родительской и нарушить наследование).

-

Обратите внимание, что внутри помещения наследование является многоуровневым, и вы можете проверить наследование отдельных элементов, групп элементов на одном уровне, свойств элементов или целых помещений, а также наследование от последовательных помещений (так, помещение C наследуется от помещения B, которое, в свою очередь, наследуется от помещения A). Если вы создадите базовую комнату, в которой нет ничего, кроме настройки вида, например, вы можете создать все последующие комнаты как ее дочерние элементы, и все они унаследуют свойства вида родительской комнаты. Но вы можете пойти дальше и создать еще одну базовую комнату с комнатой "view" в качестве родительской, которая содержит общий экземпляр GUI и контроллеры, необходимые в каждой игровой комнате. Теперь вы можете создавать дочерние комнаты из этой комнаты, и они будут наследовать как контроллеры и GUI от родительской комнаты, так и настройки вида от родителя этой комнаты!

-

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

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Room_Properties/Room_Properties.htm b/Manual/contents/The_Asset_Editors/Room_Properties/Room_Properties.htm index cbd9d6d91..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Room_Properties/Room_Properties.htm +++ b/Manual/contents/The_Asset_Editors/Room_Properties/Room_Properties.htm @@ -1,79 +0,0 @@ - - - - - - Свойства помещения - - - - - - - - - - -

Свойства помещения

-

В разделе "Свойства комнаты" можно установить переключатель наследования для настроек, изменить такие параметры, как постоянство, размер комнаты и управление видовыми экранами.

-

Постоянный

-

Обычно, когда вы выходите из комнаты и возвращаетесь в ту же комнату позже, эта комната возвращается к своим первоначальным настройкам. Обычно это подходит для большинства игр, но это может быть не то, что вам нужно, например, в ролевой игре или любой нелинейной игре, где вы хотите приходить и уходить из одной комнаты в другую, и чтобы они были такими, какими вы их оставили в последний раз. Установив флажок Persistent , вы сделаете именно это. Состояние комнаты будет запомнено, и когда вы вернетесь в нее позже, она будет точно такой же, какой вы ее оставили, только при перезапуске игры она будет возвращена в начальное состояние. Обратите внимание, что здесь есть одно исключение - если вы пометили определенные объекты как постоянные, экземпляры этих объектов не останутся в комнате, а переместятся в следующую комнату.

-

Очистить буфер дисплея

-

После этого у вас есть возможность очистить буфер дисплея. Эта опция, если она отмечена, предварительно заполняет буфер дисплея цветом, прежде чем рисовать что-либо еще для данного кадра. Если вы знаете, что ваши виды будут постоянно занимать весь экран или что у вас будет рисоваться полноэкранный непрозрачный фон, то вы можете снять эту опцию, что сэкономит перерисовку и поможет оптимизировать вашу игру.

-

Однако если у вас есть несколько видов, которые при отображении на экране оставляют открытые пространства, или ваш фон имеет прозрачные части - вы можете проверить это, чтобы все пустые области были заполнены цветом рисования по вашему выбору. В настоящее время этот цвет можно задать только в коде, используя window_set_colour().

-

ПРИМЕЧАНИЕ Если вы используете автоматическую коррекцию соотношения сторон (как установлено в Опциях игры), то этот флажок всегда должен быть установлен, иначе вы можете получить странные эффекты в "буквенном поле", в котором рисуется ваша игра. Если вы не используете эту опцию, вы можете снять флажок и получить небольшой прирост производительности вашей игры (особенно заметный на Android и других мобильных платформах).

-

Ширина, высота и другие параметры

-

Комната должна иметь размер, и он определяется значениями, которые вы вводите для ее ширины и высоты в пикселях.

-

Затем вы можете добавить код создания, если он вам необходим. Код создания добавляется с помощью кнопки внизу (вместе с переключателем наследования, чтобы указать, должна ли комната наследовать код создания или нет), и если вы нажмете на нее, то откроется редактор кода или визуальный редактор. Этот редактор позволяет ввести функции/действия и код, которые будут выполняться в начале комнаты, после события создания всех экземпляров, но до события начала комнаты (более подробную информацию о порядке событий см. здесь). Этот код будет выполняться каждый раз, когда вы входите в комнату, если только комната не помечена как постоянная, в этом случае он будет выполняться только один раз при первом входе в комнату, но не при последующих посещениях комнаты.

-

Порядок создания экземпляра

-

Последняя кнопка в Свойствах комнаты позволяет открыть окно Порядок создания экземпляра:

-

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

-
-

-

-

Камеры и видовые экраны

-

Следующий набор свойств комнаты, которые вы можете определить, - это свойства, относящиеся к камере и видовым экранам комнаты. Виды камеры дают возможность рисовать различные части комнаты в разных местах экрана или рисовать только часть комнаты, чтобы охватить весь экран. Например, в большинстве платформенных игр вид камеры следует за главным героем, так как, если бы на экране был виден весь уровень, персонаж был бы слишком мал для обзора и не было бы сюрпризов для игрока. Вид камеры также может быть использован в многопользовательских или кооперативных играх, поскольку он позволяет создать разделенный экран, когда в одной части экрана вы видите одного игрока, а в другой - другого. Все это можно легко реализовать в GameMaker с помощью видов камеры.

-

В верхней части свойств вида вы можете включить или выключить наследование вида, затем есть поле с надписью Enable Viewports. Это поле должно быть отмечено, прежде чем любой из видов камеры можно будет использовать в вашей игре.

-

ПРИМЕЧАНИЕ Вы можете включить или выключить наследование для трех основных параметров видового экрана, а затем включить или выключить наследование для каждого отдельного вида камеры.

-

Следующий флажок - это флажок Clear Viewport Background, который аналогичен опции Clear Display Buffer, приведенной выше, но специально для видовых экранов. Если флажок включен, он очищает поверхность приложения от цвета окна перед отрисовкой каждого кадра. Это гарантирует, что вы не увидите нежелательную графику через прозрачные области фона, такие как содержимое предыдущих кадров; поэтому важно включить эту опцию (вместе с "Enable Viewports"), если ваш фон содержит прозрачность.

-

Вид камеры определяется двумя различными наборами значений: самим видом камеры и портом на экране, где этот вид должен быть нарисован. Иногда это может вызвать путаницу, поэтому давайте немного поясним это, прежде чем объяснять, как мы определяем каждое из них:

-
    -
  • Камера: Точка в помещении, которая будет использоваться для настройки отображения помещения на экране (это абстрактная точка в редакторе помещения, ее положение устанавливается автоматически на основе настроек вида и порта просмотра).
  • -
  • Вид: То, что видит камера, на основе положения, проекции и вращения камеры.
  • -
  • Порт просмотра: область физического экрана, где будет отображаться вид камеры.
  • -
-

Так, например, это означает, что вы можете иметь вид камеры 640x480 на комнату, а затем установить порт на 320x240, что приведет к отображению изображения на экране в масштабе, соответствующем размеру порта, а также вы можете сделать то же самое и установить вид на меньшее значение, а порт на большее, в результате чего изображение будет масштабироваться в соответствии с размером порта и отображаться на экране больше, чем оно есть. Таким образом, вы можете поддерживать размер экрана (порта), изменяя вид камеры для отображения большей или меньшей части комнаты в той же области экрана.

-

Вид камеры всегда определяется как прямоугольная область в комнате, где вы указываете положение левого верхнего угла, ширину и высоту этой области. Затем вы должны указать, где эта область будет отображаться в окне на экране, определив порт вида, где вы снова указываете положение левого верхнего угла и размер (обратите внимание, что любое значение, отличное от 0,0 для левого верхнего угла, может дать странные результаты). Вы можете иметь более одного порта, и они могут перекрываться, в этом случае они рисуются в указанном порядке один поверх другого.

-

Следует понимать, что общая площадь экрана всегда определяется как прямоугольная область, поэтому ваши порты, даже если они смещены, образуют прямоугольник, а пустые места заполняются цветом окна буфера дисплея. Это означает, что в таких обстоятельствах вы всегда должны устанавливать флажок Clear Display Buffer, иначе вы получите странные артефакты, нарисованные в промежутках между портами. Изображение ниже иллюстрирует это, где видны два смещенных порта просмотра, но они образуют квадратное окно, а "под ними" рисуются линии, ведущие к буферу дисплея:

-

Камеры также имеют опцию " Следование за объектом ". Это нужно для того, чтобы камера "следовала" (т.е. фокусировала взгляд на определенном объекте). Для этого нужно нажать на значке меню и выбрать объект из появившегося списка (если в комнате несколько экземпляров этого объекта, камера будет следить только за одним из них).

-

Нормальным поведением камеры является движение только тогда, когда объект, за которым она следует, приближается к "буферной" зоне, которая образует невидимую границу по краю обзора. Эта зона может быть определена вами с помощью значений Horizontal Border и Vertical Border , поэтому, например, установка этих значений на 64 означает, что вид не начнет двигаться и следовать за персонажем, пока он не достигнет 64 пикселей от края вида.

-

Наконец, вы можете указать горизонтальную и вертикальную скорость , с которой камера перемещается, когда персонаж достиг буферной зоны, и это значение по умолчанию равно -1. Это значение по умолчанию, по сути, является "мгновенным" и означает, что в тот момент, когда объект следования окажется за пределами горизонтальной границы или вертикальной границы буферной зоны, вид перейдет в текущее положение. Это не всегда то, что вам нужно, поэтому вы можете задать скорость вертикальной и горизонтальной прокрутки камеры, установив значения, отличные от -1. Обратите внимание, что при значении 0 вид не будет двигаться вообще, а любое другое положительное значение - это количество пикселей, на которое он будет перемещаться в любом кадре, поэтому при установке горизонтальной скорости в 5 вид будет следовать за объектом со скоростью 5 пикселей в кадре по горизонтали.

-

-

-

Физика помещений

-

Прежде чем вы сможете использовать встроенные функции физики в своих играх, вы должны сообщить GameMaker, что комната является комнатой с физикой. Для этого необходимо отметить опцию Включить физику в верхней части раздела Физика комнаты (вы также можете переключить наследование этого раздела независимо от остальных настроек комнаты). После этого вы можете продолжить настройку свойств мира физики, которые представляют собой некоторые основные свойства, которые должны быть предварительно определены, прежде чем ваша комната позволит экземплярам физики работать как таковым. Для более точного контроля над миром можно использовать код (см. раздел " Функции физики " для получения дополнительной информации).

-

Следующее, что вы должны сделать, это установить гравитацию мира. Сила и направление гравитации рассчитывается как вектор положения x/y, который вы устанавливаете вокруг точки (0, 0). Так, если x равно 0, а y равно 1, то направление гравитации будет направлено вниз с силой 1 метр в секунду (более подробное объяснение см. в разделе " Мир физики").

-

Наконец, вы должны установить соотношение пикселей к метрам, чтобы GameMaker использовал его в качестве базы для всех своих физических расчетов. Это связано с тем, что функции физики работают с реальными измерениями, поэтому мы должны установить это значение, и вы захотите отрегулировать его до тех пор, пока средний размер пикселей используемых вами объектов не станет примерно равен симулируемым физическим объектам соответствующего размера.

-

Следует отметить, что включение физики в комнате означает, что все экземпляры в комнате должны использовать функции и переменные физики для перемещения. В принципе, у вас есть "традиционное" перемещение, где вы можете задать положение X/Y экземпляра или установить его скорость и направление, а есть "физическое" перемещение, которое требует физических сил и импульсов для перемещения. Эти системы взаимно исключают друг друга, и вы не можете перемещать физический экземпляр, используя нефизические функции, и вы не можете перемещать нефизический экземпляр, используя физические функции.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Rooms.htm b/Manual/contents/The_Asset_Editors/Rooms.htm index 342004059..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Rooms.htm +++ b/Manual/contents/The_Asset_Editors/Rooms.htm @@ -1,175 +0,0 @@ - - - - - - Номера - - - - - - - - - - -

Редактор номеров

-

-

Редактор комнат - это место, где вы создаете игровые комнаты. Для каждой игры требуется как минимум одна комната, и в ней вы можете разместить экземпляры, sprites, плитки, дорожки и фоны. Каждый из этих различных активов может быть размещен на своем собственном уникальном слое , который затем можно упорядочить по своему усмотрению в редакторе слоев. Ввиду сложности редактора комнат мы дадим вам краткий обзор наиболее важных функций, а затем вы сможете найти более подробную информацию по ссылкам на разделы, перечисленные ниже.

-

Когда вы создаете ресурс помещения, вы можете щелкнуть правой кнопкой мыши на нем в браузере активов, чтобы открыть контекстное меню, которое позволит вам создать дочерние помещения (более подробную информацию см. на странице " Наследование" ), открыть помещение для редактирования, добавить новую группу ресурсов для лучшей организации помещений, переименовать помещение или удалить его. Обратите внимание, что для изменения порядка комнат и/или наследования необходимо использовать Менеджер комнат, который можно открыть с помощью меню в правом верхнем углу Браузера активов.

-

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

-

Пользовательский интерфейс редактора помещений прост в навигации и разделен на различные дискретные секции. Те части редактора, которые находятся в доке - свойства помещения и редактор слоев, а также различные разделы свойств слоев - могут быть удалены из дока простым перетаскиванием в рабочую область, и они могут быть добавлены обратно в док, перетаскивая их в стороны или в нижнюю часть рабочей области.

-

Ниже приведен краткий обзор каждого из разделов Room Editor:

-

Линейки / направляющие

-
-

Линейки вдоль края холста показывают положение объектов, размещенных в нем, и отмечены от (0, 0), которая является центром холста и началом комнаты. Вы можете нажать и перетащить линейки, чтобы протянуть горизонтальную или вертикальную направляющую в комнату, и эта направляющая может быть использована для точного позиционирования различных используемых активов, так как перемещение актива вблизи одной из них "привяжет" его к направляющей. Во время позиционирования активов в комнате также будут временно отображаться интеллектуальные направляющие, указывающие расстояние между активами, а также расстояние от границы комнаты или центральной точки.

-

Расстояние, на котором активы "привязываются" к направляющим, а также другие свойства можно задать в настройках редактора помещений.

-

-
-

Редактор слоев

-
-

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

-

ВАЖНО! Существует минимальная и максимальная глубина слоя от -16000 до 16000. Все, что размещено на слое вне этого диапазона, не будет нарисовано, хотя все события будут проходить в обычном режиме.

-

Слои создаются путем нажатия соответствующей кнопки для типа слоя, который вы хотите создать:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RMB IconЭкземплярыЭтот слой предназначен для размещения экземпляров, которые будут использоваться в комнате.
Плиточные картыЭтот слой предназначен для размещения плиток из наборов плиток в видекарт плиток.
LMB IconПутиЭтот слой предназначен для отображения и добавления путей в помещении.
Guides and Smart Guides in the Sequences EditorАктивыЭтот слой предназначен для визуальных активов, добавляемых в комнату, таких как спрайты и последовательности.
Instance Layer IconФильтр/эффектЭтот тип слоя определяет фильтр/эффект, который применяется ко всем нижележащим слоям.
Tile map Layer IconСправочная информацияЭтот тип слоя определяет фон, который, по сути, является одноцветным или sprite изображением, которое может быть нанесено на всю комнату.
UIThis creates a global UI layer that is shared among rooms.
-

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

-

Обратите внимание, что в редакторе слоев можно переключить наследование, что повлияет на порядок и видимость слоев. Видимость можно настроить, нажав на значок глаза рядом с каждым из слоев, или вы можете нажать на значок в самом верху, чтобы включить/выключить все слои сразу. У вас также есть возможность "заблокировать" слой (или все слои), чтобы их нельзя было изменить, нажав на значок замка . Обратите внимание, что слои, помеченные как невидимые, не будут отображаться при запуске игры.

-

-
-

Свойства слоя

-
-

Окно свойств слоя помещения будет меняться в зависимости от текущего выбранного слоя в редакторе слоев.

-

В каждом окне будут различные свойства и списки, связанные с выбранным в данный момент типом слоя, и вы сможете редактировать основные детали того, как отображается слой и что на самом деле находится на слое. Более подробную информацию см. здесь.

-

-
-

Свойства помещения

-
-

В этом разделе редактора комнат можно определить все базовые свойства комнаты, например, ее размер, использует ли она физику, какие камеры и видовые экраны ей необходимы. Более подробно этот раздел рассматривается здесь.

-

-
-

Панель инструментов "Слой

-
-

Некоторые типы слоев имеют дополнительные инструменты, добавленные к верхней части IDE в панели инструментов слоя (например, слои-плитки или слои-контуры). Точные инструменты будут меняться в зависимости от типа редактируемого слоя, поэтому они описаны на странице, посвященной каждому слою, здесь.

-

-
-

Набор инструментов для работы с комнатами

-
-

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

-
    -
  • Переключить сетку холста: Этот параметр включает/выключает сетку холста редактора комнат. Это сетка, которую GameMaker рисует поверх основного холста, чтобы разделить его на секции, и по умолчанию она имеет размер 32x32px. Однако если вы нажмете на значок меню сетки , то откроются опции сетки:. Эти опции позволяют установить цвет и альфа-канал сетки, а также значения ячеек сетки по осям X и Y. Также здесь можно включить или выключить привязку сетки (по умолчанию включена). Для переключения видимости сетки и ее привязки можно использовать комбинации клавиш "G" и + "G" соответственно.
  • -
  • Управление масштабированием холста: Эти кнопки управляют текущим уровнем масштабирования холста. Вы можете увеличивать или уменьшать масштаб, а нажатие кнопки приведет к восстановлению масштаба холста 1:1 с редактируемой комнатой. Вы также можете нажать кнопку Window Fit , чтобы весь холст комнаты поместился в текущую рабочую область редактора (при этом масштаб будет увеличиваться/уменьшаться по мере необходимости, чтобы он поместился). Обратите внимание, что вы также можете увеличивать и уменьшать масштаб с помощью кнопок / и колеса мыши , а нажатие кнопок / + приведет к тому, что холст комнаты будет соответствовать настройкам комнаты в соотношении 1:1.
  • -
  • Показать виды: Нажав на эту кнопку, можно включить или выключить прямоугольник вида. При включении вы увидите выделенную область, которая обозначает различные виды, включенные для комнаты.
  • -
  • Воспроизвести анимацию: При добавлении sprites, последовательностей или анимированных плиток вы можете захотеть получить представление о том, как они будут выглядеть в самой комнате без необходимости компиляции всего проекта, поэтому вы можете нажать на эту кнопку, чтобы запустить воспроизведение различных анимаций. Повторное нажатие остановит анимацию.
  • -
  • Canvas Select From Any Layer: По умолчанию, когда вы щелкаете на элементе в холсте комнаты, вы можете выбрать только те активы, которые находятся на редактируемом слое, однако если вы включите эту опцию, вы сможете щелкнуть на любом элементе, и он будет выбран, изменив целевой слой на тот, на котором находится элемент. Для временного включения этой опции можно использовать комбинацию клавиш " P" (удерживайте клавишу "P" для включения и отпустите для выключения). -

    -
  • -
-
-

Полотно для комнаты

-
-

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

-

При создании слоев активов или слоев экземпляров вы можете разместить актив или экземпляр, просто перетащив его из браузера активов, а затем опустив его туда, где вы хотите его расположить. Также можно выбрать актив или экземпляр из браузера активов, затем нажать и удерживать кнопку для предварительного просмотра ресурса "на месте", а если дополнительно нажать левую кнопку мыши , то можно добавить экземпляр и даже "закрасить" его в слой помещения, удерживая кнопку нажатой и перетаскивая мышь. Обратите внимание, что по умолчанию экземпляры и sprites, добавленные в комнату таким образом, будут привязаны к заданным настройкам сетки комнаты, но вы можете удерживать кнопки / , чтобы экземпляр точно следовал за мышью и не привязывался (при отпускании кнопок / привязка будет восстановлена).

-

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

-

Обратите внимание, что вы можете выбрать и переместить или удалить несколько активов из одного слоя, удерживая нажатыми кнопки / + на нужных вам активах. Большинство ресурсов в редакторе помещений позволяют вращать и масштабировать их (по отдельности или в группе), нажав и удерживая кнопку вдоль внешних краев или углов и перетаскивая мышь. Вы также можете дважды щелкнуть на любом отдельном активе (плитке, экземпляре, sprites), чтобы редактор переместился на него и открыл окно свойств выбранного актива.

-

-
-

Строка состояния

-
-

Строка состояния используется для отображения контекстно-зависимой информации. Строка состояния всегда показывает, в каком месте комнаты находится курсор мыши, но она также показывает дополнительную информацию, основанную на редактируемом слое, используемом инструменте и состоянии этого инструмента.

-

-
-

-

Более подробную информацию о некоторых из перечисленных разделов вы можете получить на следующих страницах:

- -

Меню номера

-

Помимо инструментов внутреннего редактора, вы также увидите новое выпадающее меню в верхней части сайта IDE.

-

Эти меню описаны ниже:

-
    -
  • Просмотр слоев: Это позволит снова открыть окно редактора слоев, если вы закрыли его в любое время.
  • -
  • Свойства помещения: Это позволит снова открыть окно "Свойства помещения", если вы закрыли его в любое время.
  • -
  • Свойства слоя: Это позволит снова открыть окно свойств слоя, если вы закрыли его в любое время.
  • -
  • Instance Creation Order: Откроется окно Порядок создания экземпляров (которое также можно открыть с помощью кнопки в окне Свойства помещения ):
    - В этом окне перечислены все экземпляры в комнате в том порядке, в котором они будут созданы (сверху вниз). Если вам нужно, чтобы определенный экземпляр был создан раньше других, вы можете просто щелкнуть и перетащить его в нужное вам положение. -
  • -
  • Сбросить Windows на текущем рабочем столе: Это сбросит расположение окон редактора помещений к значениям по умолчанию для рабочего пространства, на котором в данный момент сфокусирован рабочий стол.
  • -
-

-
    -
  • Редактирование плитки: При работе со слоем плитки эта опция будет выделена в выпадающем меню. Она имеет следующее подменю:
    - При редактировании слоя плитки вы можете выбрать несколько плиток, нажав, удерживая и перетаскивая левую кнопку мыши , или выбрать и сгруппировать отдельные плитки с помощью / + , или удалить отдельные плитки из выделения с помощью + . Из этого меню можно очистить выделение или инвертировать его, а также вырезать, скопировать или вставить выделение в другой слой (или даже в тот же слой, но в другой позиции). Последняя опция вновь откроет пристыкованное окно редактора набора плиток, если вы его закрыли. -
  • -
  • Конвертировать изображение в карту плиток: Опция Convert Image To Tile Map - это мощный инструмент, который можно использовать для импорта одного изображения, а затем извлечь из него используемые плитки и воссоздать их как слой карты плиток в редакторе помещений, создав в процессе необходимый набор плиток и sprite. При выборе этого инструмента вам будет предложено предоставить файл несжатого изображения (PNG, GIF или BMP), который затем будет загружен. После загрузки откроется инструмент Импорт изображения:
    - Здесь вы можете выбрать способ разделения плитки при создании набора плиток, задать ширину и высоту ячеек, а также необходимые смещения по краям. Вы также можете задать приблизительную ширину (в пикселях) для конечного создаваемого sprite. Например, если набор плиток состоит из ячеек 64x64 и вы зададите здесь ширину 200, то конечный sprite, созданный для использования в наборе плиток, будет иметь ширину 192 пикселя (т.е. 3 ячейки). Если оставить значение по умолчанию 0, то GameMaker попытается создать как можно более "квадратный" sprite с примерно одинаковым количеством ячеек по горизонтали и вертикали.
    -
    - После установки способа разделения изображения, щелкнув по образцу рядом с опцией " Удалить цвет ", вы откроете окно выбора цвета и сможете выбрать цвет, который будет удален из конечного изображения sprite. Обычно это фоновый цвет, который необходимо удалить, и установка этого образца на любое значение, отличное от 100% прозрачности (альфа 0), приведет к удалению выбранного цвета при импорте.
    -
    - Наконец, у вас есть возможность дать имя слою sprite, набору плиток и карте плиток, которые будут созданы для вас этим инструментом. При завершении импорта будет создан sprite со всеми изображениями, расположенными в виде сетки, а также набор плиток из этого sprite. В помещении будет создан новый слой карты плиток и воспроизведено изображение с использованием созданного набора плиток. Обратите внимание, что инструмент не дублирует плитки, а распознает, когда ячейка с данными изображения совпадает с другой ячейкой (сюда входят повернутые плитки). Это видно на следующем изображении, где была создана только одна плитка цветка и одна плитка ящика, однако на базовом изображении есть несколько экземпляров обоих, причем некоторые экземпляры повернуты:
    - -
  • -
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Scripts.htm b/Manual/contents/The_Asset_Editors/Scripts.htm index 527b00c78..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Scripts.htm +++ b/Manual/contents/The_Asset_Editors/Scripts.htm @@ -1,137 +0,0 @@ - - - - - - Скрипты - - - - - - - - - - -

Редактор сценариев

-

В этом разделе рассматривается редактор сценариев (также называемый текстовым редактором), в котором вы вводите весь код, необходимый для запуска вашей игры. Этот редактор используется для создания пользовательских скриптовых активов, а также для кодирования событий объектов, для добавления кода создания комнат и для многих других вещей.

-

Этот раздел просто описывает работу редактора сценариев, но не рассказывает о том, как создавать активы сценариев и как использовать GML Code или GML Visual для создания сценариев. Для этого, пожалуйста, обратитесь к следующим разделам:

- -

При создании актива сценария вам может быть предложено выбрать между GML Visual и GML Code. Дополнительную информацию см. в разделе Язык GameMaker.

-

Редактор сценариев - это место, где вы пишете свой код GameMaker Language, который является встроенным языком программирования, используемым в GameMaker (подробнее см. раздел " Язык GameMaker" ). Как только вы освоите GameMaker и захотите использовать его в полной мере, рекомендуется начать изучение этого языка, так как он значительно расширяет ваши возможности при создании игр.

-

Актив сценария можно переименовать, щелкнув правой кнопкой мыши на нем в браузере активов и выбрав команду Rename (Переименовать), но учтите, что имя сценария должно соответствовать правилам сценариев для активов, поэтому оно может быть только буквенно-цифровым, начинаться с буквы, а единственным символом, который оно может содержать, является символ "_" под баром. Редактор сценариев в других местах не может быть переименован и будет иметь имя, специфичное для того, что редактируется, например, событие объекта.

-

Когда вы откроете окно редактора сценариев, оно будет иметь следующие параметры и расположение:

-

Вкладка сценариев / событий

-
-

Редактор сценариев открывается в окне с вкладками в верхней части, что позволяет разместить несколько сценариев или событий в одном окне (хотя это поведение можно изменить в настройках, чтобы для каждого сценария или события открывалось новое окно). Вы можете щелкнуть на вкладке и затем перетащить ее, чтобы изменить порядок вкладок, или - если вы предпочитаете - вы можете вытащить ее из текущего окна и разместить в нем. - можно вытащить вкладку из текущего окна и поместить ее на рабочую область, чтобы создать новое окно для этого сценария (или добавить его в другое окно), а также можно увеличить редактор сценариев до максимума, чтобы создать новую рабочую область. Если вы перетащите вкладку сценария из - IDE, то будет создан новый IDE для размещения этого ресурса сценария, и его можно использовать так же, как и главное окно. -

-

Обратите внимание, что если вы редактируете код из события объекта в редакторе сценариев и вы максимизировали редактор сценариев или разместили его в отдельном окне или рабочей области, то меню редактора , вызываемое правой кнопкой мыши, будет содержать некоторые дополнительные опции:

-

The Script Editor

-
    -
  • Восстановить в рабочее пространство: Это выведет редактор сценариев из максимизированного состояния/рабочего пространства и повторно привяжет его к объекту в рабочем пространстве.
  • -
  • Перейдите к объекту: Это приведет вас к рабочей области, на которой находится объект с кодом, и сфокусирует внимание на объекте.
  • -
  • Добавить /Открыть событие: Это позволяет добавить новое событие к объекту, к которому принадлежит текущий скрипт, и откроет новую вкладку кода в редакторе скриптов для добавленного события. Если выбранное событие уже содержит код, то он будет - будет открыта в новой вкладке.
  • -
-

Информацию об остальных опциях меню правой кнопки мыши см. в разделе " Редактирование" ниже.

-

-
-

Желоб

-
-

Желоб используется для отображения номеров строк вашего кода, а также для передачи некоторых специфических сведений о состоянии кода. Самое главное, если вы допустите опечатку или неправильно построите код, то GameMaker IDE сообщит вам об этом, отметив строку кода красным восклицательным знаком , показывающим синтаксическую ошибку. Затем вы можете навести курсор мыши на этот знак, чтобы получить краткое описание проблемы:

-

Более подробную информацию об ошибках синтаксиса (и общих ошибках при тестировании или компиляции вашего кода) вы можете найти в следующем разделе:

- -

Желоб также пометит любую строку сценария, в которой была добавлена точка останова . Точка останова - это просто место в сценарии, где вы хотите, чтобы отладчик приостановил выполнение вашей - игры, когда оно будет достигнуто. Вы можете переключить точку останова из любой строки любого сценария или события объекта, нажав "f9" или используя меню правой кнопки мыши . Когда вы добавите точку останова, она будет отображаться в желобе следующим образом:

-

Наконец, в водостоке также будут отображаться элементы, помеченные закладками. Чтобы добавить строку кода в закладки, просто удерживайте нажатой кнопку / + + Number (от 0 до 9), и это позволит вам вернуться к этой строке кода из любой точки IDE, просто используя / + Number (от 0 до 9). Чтобы удалить закладку, просто выполните те же действия, что и для ее добавления. - на строке кода снова. Когда закладка добавлена, она будет отображаться следующим образом:

-

RMB Icon

-

-
-

Поиск / Замена

-
-

Работая в редакторе сценариев, вы можете нажать / + "F", чтобы открыть окно поиска, или / + "H", чтобы открыть поиск и замену:

-

Здесь вы можете выполнить локальный поиск по введенному вами ключевому слову, а после ввода поискового термина вы можете использовать - стрелки в правом верхнем углу окна поиска для перехода от одного найденного термина к следующему в сценарии. Вы можете изменить способ выполнения операции поиска, переключая следующие кнопки:

- - - - - - - - - - - -
LMB IconПри выборе этого параметра функция поиска будет выделять только те строки, которые соответствуют всей введенной строке. Например, при выключенном параметре поиск по слову "random" покажет все слова, содержащие эту строку - например, irandom(), - или randomise() - в то время как при включении этой функции будет показана только функция random().
RMB IconКогда эта опция включена, вы говорите GameMaker проверить не только содержимое строки поиска, но и регистр. Например, если у вас есть sprite под названием "spr_Dog" и вы выполняете поиск по запросу - " dog" с выключенным переключателем, то строка sprite будет выделена, однако если переключатель включен , то не будет, поскольку "Dog" больше не считается тем же самым, что и "dog".
-

Если вы открыли окно поиска с помощью / + "F", то функция замены не будет видна, поэтому вам нужно нажать кнопку Заменить , чтобы открыть ее. - ее. После открытия вы можете ввести строку, которая будет использоваться для замены любой заданной строки поиска, используя следующие кнопки для выполнения действия:

- - - - - - - - - - - -
Script Editor RMB Object MenuПри нажатии на эту кнопку следующая поисковая строка, найденная в скрипте, будет заменена на заданную строку замены. Обратите внимание, что "следующий" термин считается следующим после текущей позиции курсора, и вы можете переходить к разным терминам, используя кнопки со стрелками - в правом верхнем углу окна поиска.
RMB IconПри нажатии на эту кнопку все примеры поисковой строки в сценарии будут заменены заданной строкой замены.
-

Обратите внимание, что если вы хотите выполнить глобальный поиск (т.е. поиск во всем проекте, а не в текущем сценарии или событии), то вы можете нажать / + + "F".

-

-

-
-

Главный редактор кода

-
-

Основной редактор кода - это место, где вы будете писать весь свой код для создания актива сценария или заполнения события объекта. Фактическое редактирование кода рассматривается в разделе " Редактирование " далее на этой странице.

-

-
-

Информация

-
-

Информационная строка в нижней части IDE показывает номер текущей строки, на которой вы находитесь, и позицию в строке. Здесь же вы можете увидеть помощника кода, который представляет собой строку текста, показывающую функцию, которую вы редактируете в данный момент, а также - с аргументами, которые она требует. По мере заполнения функции в редакторе аргументы будут подсвечиваться, чтобы показать, какой из них вы сейчас редактируете.

-

Обратите внимание, что любые необязательные аргументы в функциях сценария будут показаны со скобками [] вокруг них. Если вы использовали JSDoc Script Comments в активе сценария, тогда - информация, которую вы предоставили, также будет показана здесь.

-
-

-

Дополнительную информацию об использовании редакторов сценариев и кода вы можете получить на следующих страницах:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Sequence_Properties/Broadcast_Messages.htm b/Manual/contents/The_Asset_Editors/Sequence_Properties/Broadcast_Messages.htm index d5085116e..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Sequence_Properties/Broadcast_Messages.htm +++ b/Manual/contents/The_Asset_Editors/Sequence_Properties/Broadcast_Messages.htm @@ -1,92 +0,0 @@ - - - - - - Широковещательные сообщения - - - - - - - - - - -

Широковещательные сообщения

-

Последовательности и спрайты могут генерировать так называемые широковещательные сообщения в любой точке своей длины. Эти сообщения - простые строки, которые добавляются к определенным кадрам на временной шкале анимации, и когда эта точка временной шкалы будет достигнута, строка будет передана всем экземплярам, которые ее слушают. Любой экземпляр, имеющий событие Broadcast Message Event (находится в категории событий "Other"), получит строку сообщения, когда она будет достигнута на временной шкале, и тогда от вас зависит, какой код будет ее анализировать и реагировать соответствующим образом. Обратите внимание, что последовательности также могут прослушивать широковещательные сообщения, но для этого необходимо сначала настроить метод слушателя с помощью кода (более подробную информацию см. в разделе GML " События и моменты последовательностей ").

-

ПРИМЕЧАНИЕ Установка image_index экземпляра непосредственно на кадр не вызовет никаких широковещательных сообщений, которые могут присутствовать на этом кадре объекта sprite.

-

Чтобы добавить сообщение для трансляции в последовательность или на временную шкалу sprite, достаточно нажать кнопку . Откроется диалог, в котором вы можете добавить сообщение для трансляции:

-

Broadcast Message Button Icon

-

После добавления сообщение будет показано в Dope Sheet (или в покадровом просмотре sprite ). Чтобы отредактировать его, вы должны нажать правую кнопку мыши на иконке сообщения, чтобы открыть список всех сообщений, которые перекрывают кадр (на кадре может быть только одно сообщение, но размещение нескольких сообщений на последовательных кадрах приведет к их визуальному перекрытию, что затруднит выбор нужного, и вы можете иметь сообщение и момент на одном кадре), а затем, выбрав одно из этого списка, открыть диалог сообщения, где вы можете отредактировать его или удалить.

-

При срабатывании события Broadcast Message создается специальная карта DS Map, которая хранится во встроенной переменной event_data. Эта переменная ID является встроенной переменной глобальной области видимости, но будет содержать данные карты DS только в том событии, которое ее вызвало - в данном случае событие Broadcast Message - и будет возвращать -1 во всех остальных случаях. Ключи, которыми будет обладать событие, следующие:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Структура события сообщения
ПеременнаяТипОписание
event_typeСтрокаЭто будет строка "sequence event" для сообщения, отправленного из последовательности, и "sprite event" для сообщения, отправленного из Sprite.
messageСтрокаСодержит строку сообщения, которое было получено.
element_idИдентификатор элемента слояЗдесь содержится идентификатор элемента слоя (последовательности/спрайта/инстанса), который выдал сообщение. Затем вы можете использовать это значение ID, чтобы узнать, какой элемент сгенерировал сообщение, используя функцию layer_get_element_type() и использовать другие соответствующие функции, чтобы нацелиться на него или выполнить действие, например, воспроизвести звук, в зависимости от необходимости.
-

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

-

Ниже приведен краткий пример того, как можно проверить это событие:

-

if event_data[? "event_type"] == "sequence event" // or you can check "sprite event"
- {
-     switch (event_data[? "message"])
-     {
-         case "hit":
-             audio_play_sound(snd_hit, 0, false);
-         break;
-
-         case "destroy":
-             sequence_destroy(event_data[? "element_id"]);
-         break;
-     }
- } -

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Sequence_Properties/Clipping_Masks.htm b/Manual/contents/The_Asset_Editors/Sequence_Properties/Clipping_Masks.htm index a242f8d5c..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Sequence_Properties/Clipping_Masks.htm +++ b/Manual/contents/The_Asset_Editors/Sequence_Properties/Clipping_Masks.htm @@ -1,56 +0,0 @@ - - - - - - Обтравочные маски - - - - - - - - - - -

Обтравочные маски

-

Как упоминалось на странице Панель дорожек, в редакторе дорожек есть действие для создания так называемой группы обтравочной маски . Доступ к нему осуществляется нажатием на кнопку в нижней части панели дорожек:

-

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

-

Идея использования обтравочной маски заключается в том, что вы добавляете объект sprite, а затем маску sprite, и маска sprite "скрывает" - (маскирует) объект. Затем можно использовать анимацию маски sprite, перемещать или масштабировать маску sprite, чтобы изменить видимость объекта (или его частей). Каждая группа (маска и объект) может содержать несколько активов, и каждый из активов может - иметь несколько дорожек параметров.

-

Чтобы добавить объект и маску, просто перетащите sprite, объект или последовательность из браузера активов в папку, в которую вы хотите их добавить:

-

Clip Mask Icon

-

Маска sprite alpha будет использоваться для "скрытия" объекта, находящегося под ней, при этом значение 100% alpha (непрозрачная) будет маскировать полностью, а значение 0% alpha (прозрачная) - показывать. Например, у нас есть вот это sprite для маскирования:

-

Затем мы можем применить это как обтравочную маску к иконкам, чтобы создать эффект "остывания", как показано ниже:

-

В приведенном выше примере "Sprite_2" - это просто статичный актив sprite, который является базовой иконкой, - а затем поверх него мы создали группу обтравочных масок с серой версией sprite, а также маску (на примере sprite, показанном выше). При объединении и воспроизведении последовательности группа обтравочной маски открывает базовый спрайт - под ним, создавая эффект затухания.

-

Обратите внимание, что группы обтравочных масок могут рассматриваться как отдельный элемент в списке дорожек и на допинг-листе, и вы можете добавить дорожки параметров вращения и положения к группе в целом. Можно также применять группы обтравочных масок к групповым папкам активов - или даже к другим группам обтравочных масок, что делает их очень мощным инструментом.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Sequence_Properties/The_Sequence_Canvas.htm b/Manual/contents/The_Asset_Editors/Sequence_Properties/The_Sequence_Canvas.htm index bc2e9004d..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Sequence_Properties/The_Sequence_Canvas.htm +++ b/Manual/contents/The_Asset_Editors/Sequence_Properties/The_Sequence_Canvas.htm @@ -1,89 +0,0 @@ - - - - - - Полотно последовательности - - - - - - - - - - -

Полотно последовательности

-

При создании последовательностей для ваших проектов большая часть работы будет выполняться на холсте редактора последовательностей. Холст - это просто область, которая будет использоваться для размещения элементов последовательности, и он также определяет, что будет показано, когда последовательность будет добавлена в комнату для отображения. Когда вы впервые создаете последовательность, размер холста будет установлен по умолчанию 1366px на 768px, но его можно изменить из панели инструментов , нажав на кнопку рядом с кнопкой Canvas Frame Toggle :

-

Размер холста определяет визуальную область, в пределах которой можно разместить активы, составляющие последовательность, но рамка - это просто руководство по размеру и не влияет на то, как происходит рендеринг, то есть: если вы разместите актив sprite за пределами рамки и добавите последовательность в комнату, актив все равно будет отрисован.

-

Рамка также используется для размещения любых опорных изображений, которые вы хотите использовать для позиционирования объектов в последовательности. Эталонное изображение может быть добавлено из того же меню " Параметры холста ", где задается размер рамки холста, и будет использоваться в качестве фонового изображения для холста последовательности. Это позволяет размещать объекты в соответствии, например, с макетом пользовательского интерфейса от художника проекта:

-

Обратите внимание, что эталонные изображения не сохраняются в проекте и не будут отображаться при добавлении последовательности в комнату.

-

После того как холст настроен нужным образом, можно приступать к добавлению на него активов. Это делается простым перетаскиванием их из браузера активов на холст, что приведет к созданию дорожки активов на панели дорожек:

-

Ниже перечислены активы, которые можно добавить в последовательность:

- -

Для создания текстовой дорожки можно также использовать инструмент Text на панели инструментов. Для получения дополнительной информации читайте раздел " Текст в последовательностях ".

-

Gizmos

-

После добавления необходимых активов их можно поместить в исходные позиции для анимации, а также трансформировать с помощью различных элементов управления трансформацией. Доступ к ним осуществляется двумя различными способами:

-
    -
  • Подведите мышь к краям актива на холсте, нажмите и перетащите (обратите внимание, что курсор будет меняться, чтобы показать различные трансформации, которые будут изменены):
    - -
  • -
  • С помощью гизмо трансформации в начале координат актива, которое можно изменить на панели инструментов холста:
    - -
  • -
-

Клавиши параметров

-

После установки начальных преобразований для актива (если требуется) вы можете использовать холст для добавленияключей параметровк дорожке актива на панели дорожек. Простым примером того, как это работает, может быть базовое преобразование позиции, когда вы помещаете актив в начальную позицию, затем перемещаете головку воспроизведения в Dope Sheet на кадр, который вы хотите, чтобы движение закончилось, а затем снова перемещаете актив:

-

Как видно на изображении выше, новые позиции автоматически записываются на треке, поскольку мы включили опцию "Автоматически записывать изменения" на панели трека. Вы также можете видеть, что пунктирная линия была добавлена к виду холста, чтобы показать перемещение актива во времени. Если автоматическая запись не включена, вы все равно можете добавить точки, перемещая актив, затем установив головку воспроизведения и, наконец, нажав кнопку "Записать новый ключ" .

-

Умные гиды

-

В заключение стоит упомянуть, что холст позволяет использовать и добавлять интеллектуальные направляющие, которые представляют собой ориентиры, добавляемые к холсту, чтобы активы можно было выровнять по ним. По умолчанию на холсте отображаются горизонтальные и вертикальные направляющие вокруг центральной точки, а также прямоугольная направляющая вокруг "края" холста последовательности в зависимости от размера холста. Эти направляющие не будут отображаться в конечной последовательности при добавлении в комнату, а просто помогут вам получить представление о пространстве и расположении предметов. Вы также можете добавить свои собственные направляющие, щелкнув на линейке и перетащив ее на холст:

-

Чтобы удалить направляющую, просто щелкните по ней, а затем снова перетащите ее к линейкам. Если в последовательность добавлены направляющие, то при перемещении актива к направляющей он будет "привязываться" к ней, когда ограничительная рамка или начало координат находятся достаточно близко, а для обозначения расстояний между активами, а также для обозначения активов, находящихся на одной направляющей или в одном положении, будут показаны дополнительные интеллектуальные направляющие (они окрашены в разные цвета):

-

Icon Grid Menu

-

-

-

Меню и навигация RMB

-

Для навигации по холсту можно использовать те же основные элементы управления, что и для обычной рабочей области, т.е.: используйте среднюю кнопку мыши и перетаскивание для панорамирования холста (или альтернативно используйте + ), а также прокрутку по горизонтали с помощью колеса мыши или увеличение или уменьшение масштаба с помощью клавиш / и колеса мыши .

-

Чтобы выбрать актив, просто щелкните на нем левой кнопкой мыши , или вы можете выбрать несколько активов, используя / и для щелчка на каждом активе. Вы также можете выбрать несколько активов, используя , а затем щелкнуть и перетащить. Это создаст "коробку" на холсте, и любой актив, который коснется области коробки, будет выбран.

-

Когда выбран актив или активы, их можно вырезать, копировать и вставлять с помощью комбинаций клавиш / +"X", / + "C" и / + "V".

-

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

-

Нажатие на значок круга изменит виджет управления трансформацией на начало полного ограничивающего поля для всех выбранных активов, в то время как нажатие на значок коробки покажет индивидуальный виджет управления для каждого актива в выборе. Сгруппированные активы можно перемещать, копировать/вставлять и т.д. так же, как и отдельные активы.

-

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

-

У вас также есть ряд дополнительных опций, доступных с помощью правой кнопки мыши , когда вы нажимаете ее на любом активе в последовательности:

-

Здесь доступны следующие варианты:

-
    -
  • Запись: эта опция позволяет записать ключи параметров для актива(ов), а при наведении курсора на нее вы увидите опции для записи масштаба, вращения или положения.
  • -
  • Группа: При выборе этого пункта будет создана новая папка группы на панели дорожек, и выбранный актив(ы) будет перемещен в нее.
  • -
  • Переименовать: Когда вы нажмете на эту кнопку, трек будет выделен на панели треков, а его название станет редактируемым, готовым к изменению.
  • -
  • Найти в листе: Когда вы нажмете эту кнопку, ключ выбранного актива будет выделен в Dope Sheet.
  • -
  • Найти другие: При нажатии на эту кнопку отображается список всех других активов того же типа, из которых можно выбрать один.
  • -
  • Выбрать: При нажатии на эту кнопку отображается список всех активов, которые перекрываются в выбранной позиции, и вы можете выбрать любой из них для редактирования.
  • -
  • Удалить ключ: При выборе этого параметра ключ дорожки актива будет удален из доп-листа в текущей позиции головки воспроизведения. Сама дорожка будет существовать, как и все содержащиеся в ней дорожки параметров, и вы сможете добавить другой актив на дорожку, перетащив его из браузера активов в доп-лист.
  • -
  • Удалить дорожку: Это удалит дорожку актива (и дорожки параметров, если таковые назначены) с панели дорожек, а также все связанные с ней клавиши в Dope Sheet.
  • -
  • Открыть редактор: Это откроет актив для редактирования в редакторе по умолчанию для данного типа актива.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Sequence_Properties/The_Track_Panel.htm b/Manual/contents/The_Asset_Editors/Sequence_Properties/The_Track_Panel.htm index 805c98a4e..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Sequence_Properties/The_Track_Panel.htm +++ b/Manual/contents/The_Asset_Editors/Sequence_Properties/The_Track_Panel.htm @@ -1,221 +0,0 @@ - - - - - - Путевая панель - - - - - - - - - - -

Путевая панель

-

Действия ваших последовательностей определяются активами и параметрами, которые были добавлены на панель дорожек. Добавить дорожку в редактор можно следующим образом:

-
    -
  • перетаскивание актива в последовательность Canvas
  • -
  • перетаскивание актива в саму панель дорожек
  • -
  • нажав кнопку "Добавить актив" в нижней части панели отслеживания.
  • -
-

Последний способ откроет для вас проводник активов, где вы сможете выбрать актив для добавления.

-

Независимо от выбранного метода, для актива будет создана новая дорожка актива. Эта дорожка является основной дорожкой для актива в последовательности, и для нее будет создана соответствующая ключевая дорожка актива в Dope Sheet в позиции головки воспроизведения:

-

Обратите внимание, что цвет ключа актива в Dope Sheet можно установить с панели дорожек, щелкнув по цветной полоске в конце. Откроется окно выбора цвета, где можно выбрать, какой цвет использовать для ключевых дорожек в Dope Sheet.

-

К каждому активу в редакторе дорожек можно добавить набор дорожек параметров. Эти дорожки управляют различными свойствами (параметрами), которые могут быть изменены для дорожки с течением времени. Различные доступные параметры подробно рассматриваются в разделе "Добавление дорожек параметров" далее на этой странице, но чтобы дать вам представление о том, что доступно, вот краткий список:

-
    -
  • Все активы: Положение и вращение.
  • -
  • Звуки: Высота и громкость.
  • -
  • Последовательности: Происхождение и масштабы.
  • -
  • Спрайты и объекты: Происхождение, Масштаб, Индекс изображения, Скорость изображения и Умножение цвета.
  • -
  • Текст: Происхождение, масштаб, умножение цвета, расстояние между символами, размер рамки, расстояние между строками и расстояние между абзацами.
  • -
-

Чтобы добавить дорожку параметров в редакторе, можно включить функцию "Автоматическая запись изменений" на панели дорожек, которая добавит ключи параметров для любых изменений, внесенных в актив на холсте в текущей позиции головки воспроизведения, как показано здесь:

-

В качестве альтернативы можно нажать кнопку "Add Parameter Track" , которая откроет меню, показывающее различные доступные опции:

-

Выбор любой опции из этого меню или запись непосредственно с сайта IDE создаст одну или несколько дорожек параметров под основной дорожкой актива, а также добавит ключ параметра в Dope Sheet, окрашенный в тот же цвет, что и цвет основной дорожки актива:

-

После добавления дорожки параметров к основной дорожке актива, на доп-листе появится цветная полоса, показывающая длину дорожки актива в кадрах, а в местах, где вы хотите изменить параметр, будут добавлены ключи параметров (ключевые кадры). Эти ключи можно увидеть на изображении выше в виде простых "точек" на кадре. Когда дорожка имеет такие ключи параметров, параметр, на который они ссылаются, будет интерполирован (с помощью линейной интерполяции) по умолчанию между каждой из показанных точек. Например, если у вас есть параметр поворота и в кадре 0 он установлен на 90°, то в кадре 30 он будет равен 180°, а в кадре 15 он будет равен 135°. Вы можете увидеть изменение значений с течением времени, выбрав дорожку параметров, а затем "скрестив" головку воспроизведения в доп-листе:

-

The Track Panel

-

Обратите внимание, что для всех дорожек параметров можно отключить линейную интерполяцию по умолчанию между различными клавишами из меню правой кнопки мыши на дорожке параметров, что означает, что переходы между значениями параметров будут происходить мгновенно на данном кадре, а не постепенно с течением времени:

-

Помимо возможности выбора типа перехода для дорожек параметров, меню RMB также предлагает вам следующие опции:

-
    -
  • Вырезать, Копировать и Вставить: Эти опции позволяют вырезать/копировать/вставлять дорожки активов или параметров.
  • -
  • Дублировать дорожку(и): Это создаст дубликат выбранной в данный момент дорожки (дорожек). Если это дорожка актива, она также дублирует дорожки параметров, связанные с ней.
  • -
  • Удалить дорожку (дорожки): Это приведет к удалению выбранной дорожки или дорожек. Если вы удалите дорожку актива, то связанные с ней дорожки параметров также будут удалены, однако вы можете удалить дорожки параметров по отдельности.
  • -
  • Группа: При использовании этой опции на пустом месте панели дорожек создается папка группы, которую можно использовать для более упорядоченного хранения активов. Вы можете добавить актив в группу, просто щелкнув на нем и перетащив его в папку. Если вы уже выбрали трек или треки, то использование этой опции не только создаст групповую папку, но и добавит в нее трек(и).
  • -
  • Переименовать: С помощью этой опции можно переименовать любой трек актива или папку группы.
  • -
-

Важной особенностью дорожек активов и параметров является возможность родительских дорожек и групп. Если вы перетащите дорожку актива на другую дорожку на панели дорожек, первый актив станет дочерним для того актива, на который он был перетащен, который, в свою очередь, станет родительским. Все дорожки параметров, назначенные на дорожку родительского актива, автоматически применяются к дорожкам дочерних активов, поэтому можно иметь несколько sprites (например), использующих для перемещения дорожку актива с одной позицией:То же самое можно сделать и с группами. Вы можете создать папку группы, нажав на кнопку в нижней части панели дорожек, а затем GML Визуальные дорожки активов, которые вы хотите сгруппировать вместе, поместите в папку группы. Эти активы сохранят свои собственные дорожки параметров, но вы можете назначить группе дополнительные дорожки параметров, и все активы в группе будут затронуты этими дорожками параметров, а также их собственными индивидуальными дорожками параметров.

-

При работе с панелью треков можно использовать и обычные сочетания клавиш, то есть: / и левую кнопку мыши для выбора одного или нескольких треков в любом порядке, и левую кнопку мыши для выбора последовательных треков, а также вырезать, копировать и вставлять их с помощью комбинаций клавиш / +"X", / + "C" и / + "V".

-

Это основы работы с редактором дорожек, но ниже мы рассмотрим более подробно, для чего нужен каждый из разделов и как их использовать:

-

-

Ориентация на изменения

-
-

Кнопка изменения ориентации может быть использована для изменения способа отображения различных разделов редактора последовательности. По умолчанию вид Cnavas находится вверху, а редактор дорожек и доп. лист - внизу, но это можно изменить, нажав на кнопку для перебора различных раскладок, или нажав на кнопку Options , чтобы открыть меню и выбрать нужную раскладку. Доступны следующие макеты:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Add Track IconРаздельное окно -

При этой опции редактор последовательностей будет разделен на два отдельных окна, где главное окно IDE будет показывать вид холста на полном рабочем столе, а новое окно будет показывать Dope Sheet и редактор дорожек. При повторном нажатии кнопки макет снова изменится и дополнительное окно будет удалено.

-
Add An Asset To The Track PanelЗащелкивающийся верх -

Этот параметр привязывает редактор дорожек и доп. лист к верхней части сайта IDE.

-
Record Changes IconSnap Right -

Этот параметр привязывает редактор дорожек и доп. лист справа от IDE.

-
Adding A Parameter Key To An Asset In The CanvasЗащелка нижняя -

Эта опция привязывает редактор дорожек и доп. лист к нижней части IDE (это вид по умолчанию).

-
Add Parameter Track ButtonЗащелка левая -

Этот параметр привязывает редактор дорожек и доп. лист слева от IDE.

-
-

Вы также можете в любое время сбросить макет редактора последовательностей, щелкнув опцию Сброс . Это вернет редактор в состояние по умолчанию и вновь откроет все закрытые разделы.

-

-
-

Поиск пути

-
-

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

-

-
-

Отслеживание активов

-
-

Каждый актив, добавляемый в последовательность, получает свою собственную дорожку, и они перечислены здесь. Если для дорожки актива заданы какие-либо параметры, то они также будут показаны под дорожками параметров. Дорожки параметров можно развернуть или свернуть, нажав на значок стрелки слева от названия дорожки, а название дорожки можно изменить, выполнив медленный двойной щелчок на дорожке и присвоив ей нужное название. Обратите внимание, что нет никаких ограничений на имя, которое вы даете, и вы можете использовать пробелы, небуквенно-цифровые символы и начинать их с цифры, если хотите.

-

Различные типы доступных дорожек параметров более подробно описаны в разделе "Добавление дорожек параметров" далее на этой странице.

-

-
-

Ключевые элементы управления

-
-

После добавления дорожки параметров можно добавлять и удалять клавиши параметров к определенным кадрам для установки значения этого параметра. Это можно сделать с помощью кнопки "Клавиша записи" или "Клавиша удаления" (более подробную информацию см. в разделе "Управление клавишами дорожки"), либо с помощью кнопок управления на самом параметре. Чтобы использовать эти элементы управления, необходимо установить головку воспроизведения в Dope Sheet на кадр, который вы хотите отредактировать, а затем нажать на круглый значок "клавиша" слева от дорожки параметра. Если кадру не назначен ключ, круг будет "пустым", и щелчок по нему добавит новый ключ и позволит редактировать значение параметра. Если кадр уже имеет ключ, то круг будет "заполнен", и щелчок по нему приведет к удалению ключа из кадра:

-

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

-

-
-

Значения параметров

-
-

После добавления дорожки параметров вы можете редактировать значения некоторых из них, просто установив головку воспроизведения в Dope Sheet на кадр с ключом, который вы хотите изменить, а затем используйте различные виджеты холста для редактирования положения, вращения, масштаба или происхождения актива. Эти изменения будут отражены в значении ключа для этого кадра. Однако не все параметры можно редактировать таким образом, или это может быть недостаточно точно для ваших нужд, и в этих случаях вы можете редактировать значение параметра напрямую, щелкнув его на дорожке и установив нужное значение для данного типа параметра.

-

Обратите внимание, что некоторые дорожки параметров могут иметь значок "ссылка" рядом с их значениями, что означает, что они могут быть связаны вместе. Это делается щелчком по значку, чтобы включить/выключить связь, и если она включена, редактирование одного значения также установит другое.

-

-
-

События

-
-

Подобно обычным объектам, последовательности могут иметь события, которые могут запускать определенный код, назначенный им. Код назначается в виде скриптовой функции, которая не принимает аргументов и вызывается при наступлении события.

-

События добавляются нажатием кнопки Добавить событие , в результате чего откроется следующее окно:

-

Adding A Parameter Track To An Asset In The Track Panel

-

Здесь перечислены следующие события:

-
    -
  • Create - Это событие происходит при первом создании экземпляра последовательности, и это самое первое, что происходит в последовательности, помещенной в комнату через редактор комнат при входе в комнату.
  • -
  • Уничтожение - Это событие выполняется, когда экземпляр последовательности уничтожается, и будет запущено до события Очистка (см. ниже).
  • -
  • Clean Up - Это событие будет вызываться после любого события, которое удаляет экземпляр последовательности из комнаты. Таким образом, оно будет вызвано, если последовательность будет уничтожена, если комната закончится или если игра закончится, и предназначено для выполнения любой задачи, которую вам нужно выполнить один раз, когда экземпляр последовательности будет удален из игры по любой причине. Если вы уничтожили экземпляр последовательности, используя, например, layer_sequence_destroy(), то это событие будет вызвано после события Destroy (см. выше).
  • -
  • Begin Step / Step / End Step - событие Step Event - это событие, которое проверяется на каждом шаге (кадре) игры, пока существует экземпляр последовательности, и состоит из трех частей: begin, step и end. Для большинства вещей стандартное событие step вполне подходит, но иногда хочется немного больше контроля над тем, какой код выполняется и в какое время, поэтому для этого предусмотрены события Begin и End step, и эти события всегда будут запускаться в одном и том же порядке на каждом шаге (кадре) игры. Важно! Если последовательность поставлена на паузу, то эти события не сработают, а когда игра возобновится, они сработают на следующем кадре после того, как последовательность снова начнет воспроизводиться. Также обратите внимание, что порядок событий не зависит от направления головки воспроизведения, и даже если последовательность воспроизводится в обратном направлении, события все равно будут запускаться как Начало, Шаг и Конец.
  • -
  • Асинхронное событие: Это эквивалент объекта Asynchronous System Event. Важно! Если последовательность приостановлена, то это событие не будет вызвано.
  • -
-

Каждому событию можно назначить одну функцию, которая будет вызываться при срабатывании события. Вы можете назначить функцию с помощью поля ввода, а нажатие на кнопку со стрелкой откроет редактор сценария для редактирования функции. Вы также можете нажать кнопку Create New внизу, чтобы создать новый ресурс сценария с уже определенными и готовыми к заполнению "шаблонными" функциями. Обратите внимание, что вы можете изменить имена функций на любые, какие вам нужны, и не обязательно использовать предопределенные имена, а также удалить все определения функций, которые вам не нужны. Важно отметить, что функции, используемые для событий последовательности, не могут принимать никаких аргументов.

-

Последовательность событий также можно добавлять и редактировать с помощью кода. Более подробную информацию можно найти здесь.

-

-
-

Управление ключевыми кадрами

-
-

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

-
    -
  • - Это кнопка "Разделить выбранные клавиши". Когда вы выбрали одну или несколько клавиш параметров на листе допинга, вы можете нажать эту кнопку, и они будут разделены на две отдельные клавиши в позиции головки воспроизведения временной шкалы:
    - -
  • -
  • - Это кнопка "Удалить выбранные ключи". Когда вы выбрали один или несколько ключей параметров в доп. листе, вы можете нажать эту кнопку, и они будут удалены:
    - -
  • -
  • - Это кнопка "Записать новый ключ". Когда вы выбрали ключ актива в доп. листе и нажали эту кнопку, новые ключи параметров будут добавлены к дорожке актива как дорожки параметров, а ключи параметров будут добавлены как точки на временной шкале доп. листа в позиции playhead:
    - -
  • -
  • - Это кнопка "Автоматически записывать изменения". Когда эта кнопка включена, любые изменения, внесенные в актив на холсте, будут автоматически записываться, а соответствующие дорожки параметров и ключи параметров будут добавлены в позицию головки воспроизведения на доп-листе. Например, если вы переместите головку воспроизведения с кадра 0 на кадр 10, а затем на холсте переместите актив на 100 пикселей вправо, будет добавлена дорожка параметров для позиции, а ключи параметров будут добавлены на кадре 0 (начальная позиция) и на кадре 10 (позиция головки воспроизведения), и когда вы нажмете кнопку "Play" в последовательности, актив переместится на 100 пикселей вправо на десять кадров.
    - -
  • -
-
-

Переключатели видимости/блокировки

-
-

Как дорожки активов, так и дорожки параметров имеют кнопку для переключения видимости дорожки и для блокировки дорожки . Если отключить видимость дорожки, то она не будет отображаться при запуске последовательности в комнате, а также не будет отображаться на холсте последовательности при тестировании, а переключение видимости дорожки актива также переключит видимость дорожек параметров. Блокировка дорожки означает, что эту дорожку больше нельзя будет редактировать никаким образом. Обратите внимание, что невидимые дорожки будут нарисованы на доп-листе блекло, в то время как заблокированные дорожки будут нарисованы с наложением, так что вы сможете сразу увидеть, в каком состоянии находится каждая дорожка:

-

Parameter Tracks In The Track Panel And Dope Sheet

-
-

Цвет дорожки

-
-

Каждой созданной вами дорожке актива будет присвоен случайный цвет на сайте IDE, чтобы ее было легче идентифицировать на Dope Sheet. Этот цвет можно изменить в любое время, просто щелкнув по цветовой полосе дорожки, а затем выбрав нужный цвет в открывшемся окне Colour Picker. Любой цвет, выбранный для дорожки актива, будет автоматически применен ко всем связанным с ней дорожкам параметров, однако при необходимости вы можете изменить цвет каждой дорожки параметров в отдельности. Обратите внимание, что если вы снова измените цвет дорожки актива, это отменит все изменения, сделанные для дорожек параметров.

-

-
-

Добавление дорожек параметров

-
-

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

-
    -
  • Позиция: Этот параметр дорожки может быть добавлен к любому из четырех типов активов последовательности(спрайты, объекты, звуки или последовательности) и используется для установки пространственной позиции в последовательности для актива. Он принимает значения X и Y.
  • -
  • Вращение: Как и параметр положения, параметр вращения доступен для всех активов последовательности и может использоваться для задания вращения в градусах для актива. Следует помнить, что GameMaker рассчитывает вращение против часовой стрелки, начиная с 0° справа, поэтому 90° - это вверх, 180° - влево и 270° - вниз.
  • -
  • Origin: Параметр origin доступен для активов спрайта, объекта и последовательности и может использоваться для установки положения X и Y начала актива. Изменение начала координат влияет на позиционирование, поворот и масштабирование актива.
  • -
  • Масштаб: Параметр scale доступен для активов спрайтов, объектов и последовательностей и используется для установки горизонтального и вертикального масштаба актива. Это влияет на то, как актив будет отображаться на сайте IDE и во время выполнения, и рассчитывается как скалярное значение, где 100% - это размер актива по умолчанию, 50% - половина размера, а 200% - удвоенный размер. Обратите внимание, что у вас есть возможность связать значения горизонтального и вертикального масштаба, нажав кнопку "link" . Это означает, что изменение одного значения автоматически изменит и другое.
  • -
  • Индекс изображения и скорость изображения: Эти параметры доступны только для спрайтов и объектов и могут использоваться для изменения текущего кадра анимации (см. image_index для получения дополнительной информации), а также текущую скорость анимации, которая устанавливается с помощью FPS и работает так же, как и значение, установленное для используемого sprite в редакторе sprite.
  • -
  • Умножение цвета: Этот параметр доступен только для спрайтов и объектов и может быть использован для изменения текущего цвета наложения для рисуемого sprite. Это эквивалентно установке image_blend и любые цвета, установленные здесь, будут "умножены" (т.е. смешаны) с цветом sprite, а значение белый (#ffffffff) означает, что смешивания не должно происходить. Обратите внимание, что при работе с этим типом дорожек вы можете задать цвет вручную, введя шестнадцатеричное значение, или щелкнуть по образцу цвета, чтобы открыть GameMaker Colour Picker. Обратите внимание, что цвета задаются в формате ARGB, поэтому вы можете задать значение альфа-спектра, используя этот тип дорожки параметров (Colour Picker также позволяет задать значение альфа-спектра). Это будет эквивалентно установке параметра image_alpha для спрайта.
  • -
  • Громкость: Параметр громкости применяется только к дорожкам звукового актива и может использоваться для установки усиления звука (фактическое усиление звукового актива не изменяется, так как это, по сути, эмиттер, который используется для дорожки актива в последовательностях). Значение громкости рассчитывается в процентах, где 0% - отсутствие громкости, а 100% - полная громкость.
  • -
  • Pitch: Параметр pitch применяется только к дорожкам звукового актива и может использоваться для установки высоты тона звука (как и в случае с громкостью, фактическое усиление звукового актива не будет изменено, поскольку это, по сути, эмиттер, который используется для дорожки актива в секвенциях). Значение высоты тона рассчитывается в процентах, 100% - это "естественная" высота тона звука, меньше 100% - понижение, больше 100% - повышение.
  • -
  • Falloff: Параметр falloff применяется только к дорожкам звуковых активов и в настоящее время не реализован.
  • -
  • Существуют некоторые дополнительные параметры, доступные только для текстовых дорожек. Информацию о них можно найти в разделе Текст в последовательностях.
  • -
-

-
-

Отслеживание действий

-
-

Кнопки в нижней части редактора треков представляют собой различные действия с треком и могут использоваться для следующих целей:

-
    -
  • - Эта кнопка открывает проводник ассетов, в котором можно выбрать ассет для использования в качестве новой дорожки. После выбора трек актива будет создан, а кадры добавлены в Dope Sheet в текущей позиции головки воспроизведения.
  • -
  • - Если вы выбрали одну или несколько дорожек активов в редакторе дорожек, нажатие этой кнопки приведет к их дублированию (вместе с любыми дорожками параметров, которые они могут содержать).
  • -
  • - Нажав на эту кнопку, вы создадите специальную группу обтравочных масок, в которой можно указать sprites для использования в качестве маски и sprites для маскирования. Дополнительную информацию см. здесь.
  • -
  • - Нажав на эту кнопку, вы добавите в редактор треков новую папку группы, которую можно использовать для лучшей организации треков. Вы можете добавить дорожку в группу, перетащив ее в папку группы, и удалить ее, перетащив из папки. Обратите внимание, что любому активу, добавленному в папку группы, автоматически присваивается цвет папки, хотя при необходимости вы можете изменить цвет дорожки для отдельных дорожек, чтобы он был другим.
  • -
  • - Как и следовало ожидать, нажатие на эту кнопку приведет к удалению выбранной дорожки (дорожек). Если это дорожка актива, то все содержащиеся в ней дорожки параметров также будут удалены, хотя вы можете использовать эту функцию для выбранных дорожек параметров, чтобы удалить их самостоятельно, не удаляя дорожки актива, с которыми они связаны. Если вы используете эту функцию для пустой групповой папки, то папка будет удалена, однако если в ней есть какие-либо дорожки, вам будет показано предупреждение, так как при удалении папки будут удалены и все дорожки, находящиеся в ней.
  • -
-

-
-

-

Еще две страницы с информацией, касающейся дорожек и параметров, также представляют интерес. Первая посвящена использованию активов Animation Curve для создания дорожек параметров, а вторая описывает создание обтравочных масок:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Sequence_Properties/Using_Animation_Curves.htm b/Manual/contents/The_Asset_Editors/Sequence_Properties/Using_Animation_Curves.htm index 6537ef025..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Sequence_Properties/Using_Animation_Curves.htm +++ b/Manual/contents/The_Asset_Editors/Sequence_Properties/Using_Animation_Curves.htm @@ -1,153 +0,0 @@ - - - - - - Использование анимационных кривых - - - - - - - - - - -

Использование анимационных кривых

-

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

-
    -
  • Встроенные кривые: Это кривые, которые встроены в последовательность и уникальны для дорожки параметров, на которой они используются.
  • -
  • Общие кривые: Это кривые, которые создаются независимо от последовательности с помощью редактора кривых анимации.
  • -
-

Мы начнем с объяснения того, как использовать актив анимационной кривой, что является простым случаем создания новой кривой, настройки каналов в редакторе анимационных кривых, а затем перетаскивания актива кривой в dope sheet для применения его к параметру - трек:

-


- Add Animation Curve Asset To The Dope Sheet

-

Вы также можете использовать правую кнопку мыши меню Назначить общую кривую (импорт) , чтобы добавить актив кривой анимации - к выбранной дорожке параметров. При этом откроется Asset Explorer, где вы можете выбрать нужную кривую из представленных вам:

-

Важно отметить, что актив кривой анимации должен иметь правильное количество каналов для дорожки, к которой он применяется, так как каждый - для каждого типа дорожки параметров требуется разное количество каналов в кривой анимации. Любые кривые анимации, не имеющие достаточного количества каналов, будут отображаться в браузере активов с индикатором .

-

Ниже приведен список различных дорожек параметров и каналов, которые они требуют в каждом активе кривой (каналы должны быть добавлены в порядке, указанном для каждого типа параметров):

-
    -
  • Положение: 2 канала, X и Y.
  • -
  • Вращение: 1 канал.
  • -
  • Умножение цвета: 4 канала, Альфа, Красный, Зеленый и Синий, диапазон должен быть от 0 до 255.
  • -
  • Индекс изображения: 1 канал.
  • -
  • Скорость изображения: 1 канал.
  • -
  • Происхождение: 2 канала, X и Y.
  • -
  • Масштаб: 2 канала, масштаб X и масштаб Y. Обратите внимание, что значение - это множитель, поэтому базовое значение равно 1 (без масштаба), больше единицы сделает изображение больше, а меньше единицы - меньше. Отрицательные значения будут переворачивать или - зеркально отразить изображение, а также применить масштаб.
  • -
  • Pitch: 1 канал, который должен быть минимум 0, где 1 - это высота звука по умолчанию.
  • -
  • Громкость: 1 канал, который должен быть минимум 0 и максимум 1.
  • -
-

Если вы импортируете кривую анимации, в которой недостаточно каналов для дорожки параметров, вам будет предложено выбрать, следует ли добавить недостающие каналы в кривую анимации:

-

RMB Icon

-

Общие кривые также могут стать недействительными, если удалить все необходимые каналы во внешнем редакторе анимационных кривых. В этом случае общая кривая будет отображаться как недействительная в доп. листе, и вы можете нажать на "Добавить канал(ы)", чтобы создать все недостающие каналы, которые сделают кривую снова действительной. - недостающие каналы, которые снова сделают кривую действительной:

-

-

По умолчанию кривая анимации будет применяться по всей длине ключа актива, к которому она прикреплена, однако, как и в случае с ключевыми кадрами, вы можете щелкнуть на кривой и перетащить ее, чтобы изменить ее положение на временной шкале, а также удерживать нажатой клавишу и перетаскивать, чтобы изменить размер длины кривой. - (это также относится к встроенным кривым):

-

Другой способ добавить кривую параметров на дорожку - встроить ее. Это можно сделать, нажав правую кнопку мыши - на дорожке параметров и выбрав "Convert to Curve", либо нажав на кнопку Toggle Curve Mode , которая покажет дорожку в виде анимационной кривой в полной области доп. листа, после чего можно нажать кнопку Convert To Curve:

-

После преобразования дорожки ключевых кадров параметров в кривую ее можно редактировать в dope sheet, точно так же, как это делается в dope sheet. - Это включает добавление или удаление точек, изменение их положения, изменение типа кривой (линейная, гладкая или безье), применение пресетов, переименование каналов и цветов, связанных с ними. - связанные с ними.

-

ВАЖНО: Таким же образом можно редактировать активы кривой анимации, которые были применены к дорожкам параметров, однако все внесенные изменения будут применены ко всем дорожкам, использующим кривую анимации, поскольку вы редактируете актив кривой, а не отдельную копию. - актив кривой, а не ее отдельную копию. Чтобы отредактировать актив кривой анимации, примененный к дорожке, только на этой дорожке, необходимо сначала воспользоваться меню правой кнопки мыши на дорожке параметров и выбрать Embed Curve. Это приведет к дублированию актива кривой анимации и внедрению его в дорожку параметра в качестве независимой кривой только для этой дорожки. И наоборот, можно преобразовать встроенную кривую анимации - в актив Animation Curve с помощью правой кнопки мыши с помощью опции меню Export To Shared Curve. В результате встроенная кривая будет преобразована - кривую в новый актив, который затем можно редактировать как обычно, а также при необходимости применять к другим дорожкам параметров.

-

-

На изображении выше показано, как выглядит встроенный редактор кривых анимации, и он очень похож на редактор кривых анимации. Раскройте каждый раздел ниже для получения дополнительной информации о различных разделах.

-

-

Название кривой

-
-

Это будет имя внешнего актива анимационной кривой или имя дорожки параметров для встроенной кривой.

-

-
-

Библиотека кривых

-
-

Кнопка открывает Библиотека анимационных кривых окно, - которое позволяет изменить тип кривой для встроенной или общей кривой, а также применить предустановку к выбранному каналу.

-

Информацию о типах кривых и предустановках см. в разделе " Библиотека анимационных кривых ". - информацию о типах кривых и предустановках. Обратите внимание, что при открытии окна через кнопку по умолчанию будет выбран режим применения "Перезапись ".

-

    -
-
-

Список каналов

-
-

В списке каналов можно редактировать различные каналы, составляющие кривую параметров. Каждый канал должен иметь уникальное имя ( только с использованием буквенно-цифровых символов и символа подчеркивания "_"), - Кроме того, вы можете задать цвет канала, дважды щелкнув на цветовом образце слева, что откроет окно выбора цвета и позволит вам выбрать новый цвет. - Чтобы переименовать канал, можно сделать медленный двойной щелчок и переименовать, а также использовать правую кнопку мыши , чтобы открыть меню, в котором можно выбрать переименование, изменение цвета или копирование канала. Каналы можно развернуть, нажав на стрелку рядом с названием, чтобы показать каждую из точек на кривой канала, и эти точки можно редактировать вручную, нажав на кнопку - текущее значение и ввести новое значение. Вы также можете переключить видимость канала в допинг-листе, нажав на значок "глаз" .

-

-
-

Контроль конверсии

-
-

Здесь ключевые кадры могут быть преобразованы в кривые параметров (как описано далее на этой странице), но есть также кнопка для преобразования кривых параметров в ключевые кадры. Однако следует помнить, что при этом есть несколько оговорок. Ключевые кадры - не могут быть "между" кадрами, поэтому некоторые значения кривой придется округлить до ближайшего кадра, что, в свою очередь, изменит поведение дорожки параметров. Кроме того, если кривая параметра использует интерполяцию катмул-ром или безье, она будет потеряна и - интерполяция между ключевыми кадрами будет установлена на линейную интерполяцию.

-

-
-

Меню кривых

-
-

Это меню содержит опции, доступные в других местах редактора, но все они собраны в одном месте. К ним относятся:

-
    -
  • Установить диапазон: Установите вертикальный диапазон кривой параметра (см. раздел " Диапазон канала", ниже).
  • -
  • Преобразовать в кривую: Преобразование выбранной дорожки параметров с помощью ключевых кадров в кривую параметров.
  • -
  • Embed Curve: Встраивает в дорожку общий актив кривой, используемый дорожкой параметров.
  • -
  • Назначенная общая кривая (импорт): Назначение актива Animation Curve для использования в качестве общей кривой для дорожки параметров.
  • -
  • Преобразовать в клавиши: Преобразование выбранной дорожки параметров с помощью кривых параметров в ключевые кадры.
  • -
  • Экспорт в общую кривую: Преобразование встроенной кривой в общий актив кривой.
  • -
-

-
-

Диапазон каналов

-
-

Кнопка Диапазон канала используется для установки визуального вертикального диапазона для редактора каналов. По умолчанию он установлен от -1 до 1, но при нажатии на эту кнопку откроется следующее окно:

-

-

Изменение этих значений изменит способ представления данных в разделе Channel Editor, позволяя вам иметь более высокие/низкие значения вдоль кривой канала, чем просто от -1 до 1. Обратите внимание, что это чисто визуальный эффект и не зажимает значения для - канала.

-

-
-

Редактор канала

-
-

Редактор каналов показывает визуальное представление различных каналов, используемых в кривой параметров. По умолчанию здесь отображаются все каналы, но редактировать можно только канал, выбранный в данный момент из списка каналов, который будет выделен цветом - в редакторе. Вы можете изменить положение любой из точек вдоль кривой канала, щелкнув на них и перетащив их в редакторе, но обратите внимание, что - первая и последняя точки могут быть изменены только вдоль вертикальной оси, а их горизонтальное значение всегда будет равно 0 и 1 соответственно.

-
-

Вы можете добавлять точки непосредственно к кривой канала, перемещая мышь близко к основной линии канала и нажимая , когда курсор изменится на инструмент "Добавить точку". - Затем можно редактировать эти точки, нажимая и перетаскивая их или изменяя их значения в расширенных параметрах канала в списке каналов:

-

-
-

Вы можете редактировать несколько точек одновременно, нажав кнопку и перетащив ее в редакторе, чтобы выделить все точки, которые нужно отредактировать, или используя / + для добавления точек в выделение по отдельности. Если отпустить кнопку мыши, а затем снова нажать на любую из точек в выделении и перетащить, то все они будут перемещены вместе:

-

Вы можете щелкнуть правой кнопкой мыши в любом месте редактора каналов, чтобы открыть окно библиотеки кривых анимации (только если выбран тип кривой Безье). Применение предустановки таким образом повлияет на весь канал. Чтобы изменить только часть канала, можно щелкнуть правой кнопкой мыши на отдельной линии, чтобы применить к ней предустановку, или выбрать несколько линий, щелкнув и перетащив, а затем щелкнуть правой кнопкой мыши на выделении, чтобы применить предустановку к выбранным линиям.

-

Обратите внимание, что при открытии окна библиотеки кривых анимации через редактор каналов по умолчанию будет выбран режим применения "Между ".

-
-

-

После завершения редактирования кривых параметров вы можете вернуться к обычному виду допинг-листа различных дорожек, нажав на кнопку Toggle Curve Mode .

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Sequence_Properties/Using_The_Dope_Sheet.htm b/Manual/contents/The_Asset_Editors/Sequence_Properties/Using_The_Dope_Sheet.htm index a8181a68a..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Sequence_Properties/Using_The_Dope_Sheet.htm +++ b/Manual/contents/The_Asset_Editors/Sequence_Properties/Using_The_Dope_Sheet.htm @@ -1,126 +0,0 @@ - - - - - - Использование "Листа допинга - - - - - - - - - - -

Использование "Листа допинга

-

The Dope Sheet - это место, где данные различных треков, добавленных в последовательность, отображаются во времени, давая вам не только обзор каждого трека, но и возможность редактировать их положение, а также тайминги для изменения параметров и т.д..

-

Когда вы добавляете новый актив в последовательность, на панели дорожек создается дорожка актива, а ключ актива добавляется в доп-лист в текущей позиции головки воспроизведения. Этот ключ будет отражать длительность воспроизведения актива в кадрах:

-

Затем можно отредактировать сам ключ актива, подведя мышь к началу или концу кадра ключа и, когда курсор изменится, щелкнув и перетащив его. Это приведет к перемещению либо начала, либо конца ключа, в зависимости от того, что вы выбрали, но оба варианта повлияют на длину ключа. Обратите внимание, что вы также можете изменить положение ключа актива, просто щелкнув в любом месте на нем и перетащив влево или вправо:

-

Кроме ключей активов, на доп. листе также отображаются ключи параметров. Ключи параметров - это первоначально "точки" во времени, в которых вы сигнализируете об изменении свойства актива, с которым они связаны, и последовательность будет использовать значение для этой точки для изменения актива. Как это будет сделано, зависит от того, установили ли вы для ключей линейную интерполяцию или нет на панели дорожек. Ключи параметров, как и ключи дорожек, можно перемещать, щелкнув и перетащив их по временной шкале в новое положение, а также расширить ключ более чем на один кадр, используя клавишу одновременно с перетаскиванием (курсор изменится, чтобы показать это). Это означает, что вы можете удерживать значения ключей во времени, прежде чем продолжить интерполяцию до следующего ключа:

-

При работе с доп-листом можно использовать и обычные сочетания клавиш, т.е.: / и левую кнопку мыши для выбора одного или нескольких треков в любом порядке, и левую кнопку мыши для выбора последовательных треков, а также вырезать, копировать и вставлять их с помощью комбинаций клавиш / +"X", / + "C" и / + "V".

-

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

-

Это основы использования допинг-листа, но ниже мы немного подробнее расскажем о том, для чего нужен каждый из различных разделов и как их использовать:

-

-

Начало региона / Конец региона

-
-

Эти маркеры являются начальной и конечной точками области клипа. Их можно использовать для установки определенного участка последовательности, который будет показан в комнате при запуске игры, а также в качестве точек цикла при предварительном просмотре последовательности - в редакторе. Эти точки не могут быть больше или меньше общей длины последовательности, установленной в параметрах управления последовательностями редактора последовательностей. Чтобы изменить положение маркера области клипа, просто щелкните и перетащите его на нужный кадр.

-

-
-

Управление масштабированием

-
-

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

-

The Dope Sheet Editor

-

Обратите также внимание, что вы можете увеличить или уменьшить масштаб допинг-листа с помощью клавиш / и колесика мыши .

-


-
-

Отслеживание активов

-
-

Дорожки активов представлены на доп-листе в виде "ключей", которые представляют собой цветные полоски, отражающие положение актива и продолжительность его активности в последовательности. Как упоминалось выше, их можно перемещать, удлинять и укорачивать по мере необходимости. Обратите внимание, что ключ дорожки актива, который по длительности больше самого актива - например, звук может длиться 5 кадров, а вы растягиваете его ключ до 15 кадров - будет повторяться в течение всего времени действия ключа. Дорожки и ключи активов можно копировать и вставлять с помощью стандартных сочетаний клавиш или изменять с помощью меню , вызываемого правой кнопкой мыши (см. далее на этой странице).

-

Если вы удалите ключ дорожки актива, это не приведет к удалению самой дорожки, не удалит добавленные параметры дорожки, а просто удалит ключ актива из допинг-листа. Если для этого трека больше нет ключей, их можно добавить, перетащив актив из браузера активов в dope sheet, и он будет добавлен в качестве нового ключа, но обратите внимание, что нельзя добавить актив, отличный от исходного актива (т.е. если вы удалите ключ для sprite, вы не сможете добавить звуковой актив в эту позицию ключа).

-

Обратите внимание, что для любых объектных дорожек в последовательности их экземпляры будут созданы, как только элемент последовательности будет создан в комнате, независимо от того, где начинаются их ключи активов на дорожке. Контроллер последовательности просто переключает видимость экземпляра, чтобы скрыть и показать его в зависимости от положения и длительности ключа актива дорожки, и не создает и не уничтожает его многократно. В результате экземпляры будут запускать свои события Create, когда создается элемент последовательности, а не когда начинаются их ключи актива.

-

-
-

Дорожки параметров

-
-

Дорожки параметров представлены на листе допинга в виде цветных полос под дорожкой основного актива, к которой они относятся. Сами цветные полосы не могут быть отредактированы и являются чисто визуальным представлением дорожки, к которой применяются ключи параметров. - Отдельные точки на дорожке параметров редактируются (см. раздел " Клавиши параметров" ниже).

-

-
-

Игровая головка

-
-

Головка воспроизведения - это положение во времени, в котором в данный момент происходит предварительный просмотр временной шкалы. Эта позиция используется при сбросе активов в полотно последовательности для установки позиции, в которую они были добавлены, а также для других целей, таких как добавление параметров или разделение клавиш. - а также для ряда других вещей, таких как добавление параметров или разделение клавиш. Когда вы нажимаете кнопку "play" на холсте редактора последовательности, головка воспроизведения перемещается по последовательности, и вы также можете щелкнуть на ней и перетащить ее для перемещения к определенному кадру в последовательности или для "прокрутки" нескольких кадров и быстрого предварительного просмотра без воспроизведения всей последовательности. - предварительного просмотра без воспроизведения всей последовательности.

-


-
-

Клавиши параметров

-
-

Ключи параметров - это "точки", отображаемые на дорожке параметров там, где произошло изменение этого параметра. Эти точки можно перемещать по мере необходимости и расширять, чтобы они длились более одного кадра (как объясняется далее на этой странице), и - их значение можно изменить либо на панели треков, либо путем изменения актива на холсте (если это параметр масштаба, положения или вращения). Обратите внимание, что все параметры трека - будут также отражены в виде точки на ключевой дорожке актива , к которой принадлежит параметр, но эти точки нельзя редактировать, они используются в качестве информационной помощи, когда вы сворачиваете различные дорожки параметров на панели дорожек.

-


-
-

Кривые параметров

-
-

Dope sheet также позволяет использоватькривые пареметрии вместо ключевых кадров в дорожках параметров для изменения значений параметров. Эти кривые могут быть либо встроены в актив последовательности, - или могут быть внешними активами анимационных кривых, которые применяются к дорожке параметров. Дополнительные сведения см. в разделе Использование анимационных кривых для получения дополнительной информации.

-

-
-

-

-

Меню юаней

-

Нажатие правой кнопки мыши в допинг-листе на дорожке актива вызовет следующие опции меню (обратите внимание, что некоторые опции могут быть не видны в зависимости от того, имеет ли часть дорожки, на которую нажимают, ключ или нет):

-

Add An Asset To The Dope Sheet

-
    -
  • Клавиши"Вырезать", " Копировать" и "Вставить": Эти опции позволяют вырезать/копировать/вставлять актив. Обратите внимание, что любые клавиши, вставленные в допинг-лист с помощью этих опций, будут вставлены в позицию головки воспроизведения.
  • -
  • Добавить ключ на место: Это добавит новый ключ актива на дорожку актива в позицию кадра, ближайшую к месту щелчка мыши, а не в позицию головки воспроизведения.
  • -
  • Разделить ключ на месте: При использовании этого параметра клавиша актива под мышью будет разделена на две клавиши, причем разделение будет создано в ближайшем кадре к месту щелчка мыши, а не в позиции головки воспроизведения.
  • -
  • Вставить клавишу(ы) на место: При использовании этой опции скопированная или вырезанная клавиша(ы) будет вставлена в позицию кадра, ближайшую к месту нажатия правой кнопки мыши, а не в позицию головки воспроизведения.
  • -
  • Удалить клавишу(ы): При выборе этого пункта будет удалена текущая выбранная клавиша или клавиши.
  • -
  • Копировать в начало: Эта опция копирует выбранную клавишу(ы) в самое начало последовательности(не в начало области клипа).
  • -
  • Копировать в конец: Эта опция скопирует выбранный ключ(и) в самый конец последовательности(не в конец области клипа).
  • -
  • Растянуть ключ актива: При выборе этого параметра выбранный ключ актива будет растянут до конца последовательности (не до конца области клипа) или растянут до начала другого ключа актива на той же дорожке.
  • -
  • Удалить ключ актива: При использовании этой функции выбранный ключ актива будет удален, и вы сможете добавить новый актив на дорожку, перетащив его из браузера активов на дорожку доп-листа, которая была удалена. В результате будет создан новый ключ актива, который можно редактировать, сохраняя при этом все дорожки параметров, связанные с активом.
  • -
-

Нажатие правой кнопки мыши в доп. листе на дорожке параметров вызовет следующие опции меню (обратите внимание, что некоторые опции могут быть не видны в зависимости от того, имеет ли часть дорожки, на которой щелкнули, ключевой кадр или нет, и использует ли дорожка ключевые кадры или кривые параметров):

-

LMB Icon

-
    -
  • Вырезать, копировать и вставить клавишу(ы): Эти опции позволяют вырезать/копировать/вставлять клавиши параметров. Обратите внимание, что любые ключи, вставленные в допинг-лист с помощью этих опций, будут вставлены в позицию головки воспроизведения.
  • -
  • Добавить ключ на место: Это добавит новый ключ параметра на дорожку параметров в позицию кадра, ближайшую к месту щелчка мыши, а не в позицию головки воспроизведения.
  • -
  • Split Key In Place: При использовании этого параметра клавиша параметра под мышью будет разделена на два ключевых кадра, причем разделение будет создано на ближайшем кадре к месту щелчка мыши, а не в позиции головки воспроизведения.
  • -
  • Вставить ключевой(ые) кадр(ы) на место: При использовании этой опции скопированный или вырезанный ключевой кадр(ы) будет вставлен в позицию, где была нажата правая кнопка мыши, а не в позицию головки воспроизведения.
  • -
  • Удалить клавишу(ы): При выборе этого параметра будет удален текущий выбранный ключевой кадр или ключевые кадры.
  • -
  • Преобразовать во встроенную кривую анимации: Эта опция преобразует все ключевые кадры для выбранной дорожки (дорожек) параметров во встроенную кривую анимации (дополнительную информацию см. в разделе " Использование кривых анимации" ). В качестве альтернативы, при использовании кривой параметров, которая использует актив кривой анимации, этот параметр скопирует актив кривой в дорожку как встроенную кривую параметров.
  • -
  • Установить на внешнюю кривую анимации: Эта опция позволяет назначить актив Animation Curve дорожке параметров (дополнительную информацию см. в разделе " Использование кривых анимации ").
  • -
  • Преобразовать в клавиши: С помощью этой опции можно преобразовать кривую анимации в отдельные ключевые кадры. Обратите внимание, что если кривая использовала интерполяцию катмул-ром, она будет потеряна, и ключевые кадры будут использовать линейную интерполяцию между точками кривой, а также обратите внимание, что ключи, сгенерированные из кривой анимации, должны попадать в кадр. Это означает, что любая кривая с точками, находящимися между кадрами, при преобразовании в ключи будет помещена на ближайшее целочисленное значение кадра, что потенциально может изменить поведение кривой.
  • -
  • Экспорт встроенной кривой анимации: Эта опция позволяет взять встроенную кривую анимации и преобразовать ее в актив Animation Curve, который будет показан в браузере активов и может быть использован в других местах.
  • -
  • Открыть редактор: Это откроет редактор кривых на доп. листе для редактирования встроенных или внешних анимационных кривых, которые были применены к дорожке параметров. Это то же самое, что и использование кнопки Toggle Curve Mode на доп. листе.
  • -
  • Копировать в начало: Этот параметр копирует выбранный ключевой кадр(ы) в самое начало последовательности(не в начало области клипа).
  • -
  • Копировать в конец: Этот параметр копирует выбранный ключевой кадр(ы) в самый конец последовательности(не в конец области клипа).
  • -
  • Растянуть параметр Ключ: При выборе этого параметра выбранный ключ параметра будет растянут до конца последовательности (не до конца области клипа) или до следующего ключевого кадра на дорожке. Растянутый ключ параметра означает, что он будет сохранять свое значение в течение стольких кадров, на которые он растянут. При использовании на кривой параметра кривая будет растянута до конца последовательности или до встречи с другой кривой на дорожке.
  • -
  • Удалить ключевой кадр параметра: При использовании этого параметра выбранные ключевые кадры параметров будут удалены.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Sequences.htm b/Manual/contents/The_Asset_Editors/Sequences.htm index f5c198bfa..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Sequences.htm +++ b/Manual/contents/The_Asset_Editors/Sequences.htm @@ -1,263 +0,0 @@ - - - - - - Последовательности - - - - - - - - - - -

Редактор последовательностей

-

The Sequence Editor

-

Последовательность - это, по сути, набор активов, которые выполняют динамическую анимацию во времени. Они могут содержать sprites, экземпляры, звуки и другие объекты, и каждый из них может быть настроен на движение, изменение цвета или начало/остановку анимации во времени в самой последовательности. Добавляемые активы назначаются на определенные дорожки в последовательности, к которым могут быть применены различные атрибуты, называемые ключевыми кадрами, которые могут быть статичными или изменяться во времени. Все редактирование последовательности происходит в редакторе последователь ности, который состоит из трех областей:

-
    -
  • Холст - где вы размещаете активы, составляющие последовательность
  • -
  • Панель дорожек - здесь вы добавляете/удаляете дорожки активов и дорожки параметров в последовательность.
  • -
  • Dope Sheet - где вы добавляете/удаляете/редактируете ключевые кадры треков и управляете их поведением во времени.
  • -
-

Обратите внимание, что вы можете располагать последовательности внутри последовательностей для создания сложных анимаций и эффектов, а также получать доступ к последовательностям и изменять их с помощью кода, чтобы предоставить вам как можно больше контроля над тем, как они будут отображаться и использоваться в вашей игре. Более подробную информацию о кодовом аспекте последовательностей можно найти в разделе " Функции последовательностей".

-

Прежде чем продолжить объяснение деталей редактора, мы уделим немного времени объяснению того, как создается последовательность, а также некоторых ключевых слов, которые используются в описаниях, чтобы вы имели более глубокое понимание того, как работает редактор последовательностей. Общий процесс создания последовательности выглядит следующим образом:

-
    -
  • Сначала вы создадите последовательность в браузере активов, в результате чего откроется редактор последовательностей.
  • -
  • Затем вы перетащите актив (sprite, объект, звук или последовательность) на холст редактора.
  • -
  • Это создаст дорожку актива на панели дорожек и добавит ключ актива в Dope Sheet. Дорожка актива - это просто название дорожки, содержащей актив, а ключ актива - это полоса, которая рисуется для обозначения количества кадров, на которых актив будет анимирован в последовательности.
  • -
  • На этом этапе обычно требуется расположить актив на холсте в исходном положении для начала последовательности и добавить любые начальные преобразования, такие как масштабирование или вращение.
  • -
  • Когда вы будете довольны начальными настройками, вы захотите записать ключи параметров (или ключевые кадры) - это просто название, данное значениям масштаба, поворота и положения, которые имеет конкретный ключ актива в любой точке временной шкалы dope sheet.
  • -
  • Затем вы измените положение головки воспроизведения (текущая позиция воспроизведения на временной шкале dope sheet), а затем переместите или измените преобразования актива и запишите еще один ключ параметра.
  • -
  • Все ключи параметров хранятся в дополнительных дорожках параметров, которые являются подмножеством дорожек под основной дорожкой актива на панели дорожек, и вы можете редактировать данные ключей параметров для каждого параметра в редакторе дорожек.
  • -
  • Теперь вы повторяете вышеописанный процесс в течение всей последовательности, перемещая, вращая и масштабируя актив по мере необходимости, а затем добавляя другие активы по мере необходимости.
  • -
-

Ниже представлен обзор каждой из функций редактора последовательностей, а в нижней части этой страницы находятся ссылки на страницы, где более подробно описаны три основные функции, упомянутые выше:

-

-

Линейки / направляющие

-
-

Линейки вдоль края холста показывают положение объектов, размещенных на нем, и отмечены от (0, 0), которая является центром холста и началом последовательности по умолчанию. Вы можете нажать и перетащить линейки, чтобы вытянуть - горизонтальную или вертикальную направляющую в последовательность, и эта направляющая может быть использована для точного позиционирования различных используемых активов, так как перемещение актива вблизи одной из них "привяжет" его к направляющей. Во время позиционирования - активов в последовательности, умные направляющие также будут временно отображаться, указывая расстояние между активами, а также расстояние от границы последовательности или центральной точки.

-

Обратите внимание, что граница последовательности и маркерные линии центральной точки последовательности также считаются - направляющими и ведут себя так же, как направляющие, добавленные с помощью линеек, за исключением того, что их нельзя редактировать.

-

Расстояние, на котором активы "привязываются" к направляющим, а также другие свойства можно задать в настройках последовательностей.

-

-
-

Вид на холст

-
-

Вид холста - это место предварительного просмотра холста последовательности, где вы можете редактировать и позиционировать различные активы, составляющие вашу последовательность. Вы можете добавить актив в последовательность, просто перетащив его из браузера активов и затем опустив его на холст, при этом будет создана новая дорожка на панели дорожек, а также добавлен ключ актива для актива в текущей позиции головки воспроизведения временной шкалы. Следующие активы могут быть перенесены на холст таким образом:

- -

Для создания текстовой дорожки можно также использовать инструмент Text на панели инструментов. Для получения дополнительной информации читайте раздел " Текст в последовательностях ".

-

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

-

ПРИМЕЧАНИЕ Звуковые активы, добавленные в последовательность, по сути являются звукоизлучателями , которые воспроизводят только данный звуковой актив.

-

Для перемещения по холсту можно использовать те же основные элементы управления, что и для общих рабочих пространств, то есть: используйте среднюю кнопку мыши и перетащите ее для панорамирования холста (или альтернативно используйте комбинацию + ), а также прокрутите горизонтально с помощью колеса мыши или увеличьте или уменьшите масштаб с помощью клавиш / и колеса мыши . Вы также можете вырезать, копировать и вставлять объекты, используя комбинации клавиш / + "X", / + "C" и / + "V".

-

-
-

Управление ключевыми кадрами

-
-

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

-
    -
  • - Это кнопка "Разделить выбранные ключи". Когда вы выбрали одну или несколько клавиш параметров на доп. листе, вы можете нажать эту кнопку, и они будут - будут разделены на две отдельные клавиши в позиции головки воспроизведения временной шкалы (обратите внимание, что сначала клавиши должны быть растянуты, чтобы занять несколько кадров):
    - -
  • -
  • - Это кнопка "Удалить выбранные ключи". Когда вы выбрали один или несколько ключей параметров в доп. листе, вы можете нажать эту кнопку, и они будут - будут удалены:
    - -
  • -
  • - Это кнопка "Записать новый ключ". Когда вы выбрали ключ актива в доп. листе и нажали эту кнопку, новые ключи параметров будут добавлены к треку актива как дорожки параметров, а ключи параметров будут добавлены как точки на временной шкале доп. листа. - трек как дорожки параметров, а ключи параметров будут добавлены как точки на временной шкале dope sheet в позиции playhead:
    - -
  • -
  • - Это кнопка "Автоматически записывать изменения". Если эта кнопка включена, любые изменения, внесенные в актив в пределах холста, будут автоматически записаны и - соответствующие дорожки параметров и ключи параметров будут добавлены в позиции головки воспроизведения на доп. листе. Например, если переместить головку воспроизведения с кадра 0 на кадр 10, а затем на холсте переместить актив на 100 пикселей вправо, дорожка параметров - будет добавлена для позиции, а ключи параметров будут добавлены в кадре 0 (начальная позиция) и в кадре 10 (позиция головки воспроизведения), и когда вы нажмете кнопку "Play" в последовательности, актив переместится на 100px вправо в течение десяти кадров.
    - -
  • -
-
-

Последовательность событий

-
-

Подобно обычным объектам, последовательности могут иметь события, которые могут запускать определенный код, назначенный им. Код назначается в виде скриптовой функции, которая не принимает никаких - аргументов и будет вызвана при наступлении события.

-

События добавляются нажатием кнопки Добавить событие , в результате чего откроется следующее окно:

-

Guides and Smart Guides in the Sequences Editor

-

Здесь перечислены следующие события:

-
    -
  • Create - Это событие происходит при первом создании экземпляра последовательности, и это самое первое, что происходит в последовательности, помещенной в комнату через редактор комнат при входе в комнату.
  • -
  • Destroy - Это событие выполняется, когда экземпляр последовательности уничтожается, и запускается перед событием Clean Up (см. ниже).
  • -
  • Clean Up - Это событие будет вызываться после любого события, которое удаляет экземпляр последовательности из комнаты. Таким образом, оно будет вызвано, если последовательность будет уничтожена, если комната закончится, или если игра закончится, и предназначено для выполнения - любую задачу, которую вам нужно выполнить один раз, когда экземпляр последовательности удаляется из игры по любой причине. Если вы уничтожили экземпляр последовательности, используя, например, layer_sequence_destroy(), то это событие будет вызвано после события Destroy - (см. выше).
  • -
  • Begin Step / Step / End Step - Событие Step Event - это событие, которое проверяется на каждом шаге (кадре) игры, пока существует экземпляр последовательности, и состоит из трех частей: begin, step и - конец. Для большинства вещей стандартное событие шага вполне подходит, но иногда вам нужно немного больше контроля над тем, какой код выполняется и в какое время, поэтому для этого предусмотрены события шага Begin и End, и эти события всегда будут - срабатывать в одном и том же порядке на каждом шаге (кадре) игры. Важно! Если последовательность поставлена на паузу, то эти события не сработают, а когда игра возобновится, они сработают на следующем кадре после того, как последовательность снова начнет воспроизводиться. - Также обратите внимание, что порядок событий не зависит от направления головки воспроизведения, и даже если последовательность воспроизводится в обратном направлении, события все равно будут запускаться как Начало, Шаг и Конец.
  • -
  • Асинхронное событие: Это эквивалент объекта Asynchronous System Event. Важно! Если последовательность приостановлена, то это событие не будет вызвано.
  • -
-

Каждому событию можно назначить одну функцию, которая будет вызываться при срабатывании события. Вы можете назначить функцию, используя поле ввода для события, а нажатие кнопки со стрелкой откроет редактор сценария для редактирования функции. - Вы также можете нажать кнопку Create New внизу, чтобы создать новый ресурс сценария с уже определенными и готовыми к заполнению "шаблонными" функциями. Обратите внимание, что вы можете изменить имена функций на любые, какие вам нужны, и необязательно - использовать предопределенные имена, и вы также можете удалить все определения функций, которые вам не нужны. Важно отметить, что функции, используемые для событий последовательности, не могут принимать никаких аргументов.

-

Последовательность событий также можно добавлять и редактировать с помощью кода. Более подробную информацию можно найти здесь.

-

-
-

Панель для отслеживания

-
-

Панель дорожек - это место, где каждый актив в вашей последовательности перечислен как дорожка, причем каждая дорожка имеет поддорожки для любых параметров, которые изменяются для актива. Вы можете нажать и перетащить любую дорожку актива, чтобы изменить ее положение над или под другими дорожками (любые назначенные дорожки параметров будут перемещаться вместе с ней), а также вы можете использовать / + для выбора нескольких дорожек.

-

Вы можете создать дорожку, перетащив актив из браузера активов (либо sprite, либо объект, либо звук, либо последовательность) на холст последовательности, или вы можете нажать на иконку внизу, чтобы добавить новую дорожку и выбрать актив для использования в открывшемся окне Asset Explorer. Новая дорожка будет создана, а актив добавлен в текущую позицию головки воспроизведения на временной шкале dope sheet:

-

Редактор дорожек имеет множество других возможностей, которые подробно рассматриваются на следующей странице:

- -

-
-

Набор инструментов для работы с холстом

-
-

Панель инструментов редактора последовательностей содержит различные опции визуализации и настройки для редактируемой последовательности.

-

-
    -
  • Добавить текстовую дорожку : Это позволяет добавить текстовую дорожку в холст последовательности. После выбора этой опции вы можете щелкнуть (и, по желанию, перетащить) в любом месте холста, чтобы создать новую текстовую дорожку.
    -
    - Для получения подробной информации о текстовых дорожках читайте Текст в последовательностях. -
  • -
  • Toggle Canvas Grid : Это позволяет включить/выключить сетку холста редактора последовательностей. Это сетка, которую GameMaker рисует на холсте предварительного просмотра, чтобы разделить его на секции, и по умолчанию она имеет размер 32x32px. Если вы щелкните на значке меню сетки , вы увидите опции сетки:
    - Эти опции позволяют установить цвет и альфа-канал сетки, а также значения ячеек сетки по осям X и Y. Здесь также можно включить или отключить привязку сетки (по умолчанию отключена). Для переключения видимости сетки и ее привязки можно использовать комбинации клавиш "G" и + "G" соответственно. -
  • -
  • Управление масштабом холста : Эти кнопки управляют текущим уровнем масштабирования холста. Вы можете увеличивать или уменьшать масштаб, а нажатие на кнопку вернет холст в положение 1:1 с редактируемой последовательностью. Вы также можете нажать кнопку Window Fit , чтобы весь холст последовательности поместился в текущее рабочее пространство редактора (при этом масштаб будет увеличиваться/уменьшаться по мере необходимости, чтобы он поместился). Обратите внимание, что вы также можете увеличивать и уменьшать масштаб с помощью кнопок / и колеса мыши , а нажатие / + установит холст в соотношении 1:1 с дисплеем.
  • -
  • Toggle Gizmos : Нажав на эту кнопку, можно включить или выключить различные штуковины, видимые на холсте. При включении вы увидите все гизмо, связанные с различными активами и самим холстом, а при выключении они не будут отображаться, давая более четкое представление о том, как выглядит последовательность. Обратите внимание, что эта функция включена по умолчанию, и есть меню, доступное через кнопку опций , где вы можете отфильтровать то, что видно, без необходимости отключать все различные виджеты вместе. Полный список этих опций фильтрации и объяснение того, что они делают, можно найти здесь.
  • -
  • Переключить режим гизмо трансформации : Каждый актив, добавленный в последовательность, имеет гизмо трансформации в начале координат:
    - Этот гизмо может управлять масштабированием или поворотом актива, а также контролировать его положение и положение начала актива, однако одновременно он показывает только одну из этих опций. Нажав на эту кнопку, вы сможете переключаться между различными типами виджетов, или вы можете нажать на меню опций , чтобы напрямую выбрать тип управляющего действия, которое вы хотите, чтобы выполнял гизмо трансформации. -
  • -
  • Toggle Canvas Frame : Эта кнопка используется для включения или выключения рамки холста (по умолчанию она включена). Рамка холста - это просто направляющая, которая используется для определения места размещения элементов в последовательности холста, и любые элементы за пределами рамки не будут отображаться. Эта кнопка также имеет следующее меню опций :
    - Здесь вы можете установить переключатель рамки холста, а также размер холста. У вас также есть возможность установить опорное изображение- это изображение, которое вы выбираете с вашего компьютера (оно не импортируется в проект), чтобы использовать его в качестве фоновой ссылки для последовательности. Это изображение видно только в редакторе последовательностей и не будет отображаться при использовании последовательности в проекте. При добавлении опорного изображения можно также установить непрозрачность, с которой оно будет нарисовано, и сместить его положение в рамке холста. -
  • -
-

-
-

Инструменты последовательности

-
-

На этой панели расположены различные элементы управления воспроизведением последовательности:

-

MMB Icon

-
    -
  • Скорость воспроизведения: это скорость воспроизведения последовательности в кадрах (шагах) в секунду.
  • -
  • Положение головки воспроизведения: это текущее положение головки воспроизведения, которое может быть показано во времени (ч:м:с) или кадрах (f).
  • -
  • Опции отображения времени: здесь вы можете установить, как отображать время последовательности - в часах, минутах и секундах (h:m:s) или в кадрах (f).
  • -
  • Широковещательное сообщение: Нажав на эту кнопку, вы можете добавить широковещательное сообщение в текущую позицию головки воспроизведения (более подробно об этом рассказано здесь).
  • -
  • Добавить момент: Нажатие на эту кнопку позволяет добавить момент последовательности в текущую позицию головки воспроизведения (более подробно об этом рассказано ниже).
  • -
  • Открыть редактор кривых: Эта кнопка переключает выбранную дорожку между видом кривой и видом ключевого кадра. Эта опция действительно применима только к дорожкам параметров, и когда она включена - у вас появятся дополнительные возможности в зависимости от того, использует ли дорожка параметров ключевые кадры или анимационную кривую. Для получения дополнительной информации см. раздел " Использование кривых анимации".
  • -
  • Управление воспроизведением: с помощью этих кнопок можно запускать и останавливать предварительный просмотр последовательности, а также перемещать головку воспроизведения к началу или концу. Также есть кнопка для установки того, должна ли последовательность зацикливаться или нет, и должна ли последовательность - должна ли последовательность "пинг-понг" или повторяться при зацикливании. Обратите внимание, что эти настройки повлияют на воспроизведение последовательности при компиляции и запуске проекта.
  • -
  • Длина последовательности: здесь отображается общая возможная длина последовательности в кадрах (f) или во времени (м:ч:с). Обратите внимание, что последовательность может не достигать этой длины, если вы установили меньший размер области клипа.
  • -
-

Как упоминалось выше, вы можете добавить моменты в последовательность. Момент последовательности - это позиция на временной шкале, где последовательность может вызвать функцию. Это скриптовая функция, которая - не должна иметь параметров, и когда момент (кадр) на временной шкале будет достигнут, эта функция будет вызвана. Чтобы задать момент, достаточно переместить головку воспроизведения в нужную позицию, а затем нажать кнопку Добавить момент, и в открывшемся - открывшемся диалоговом окне вы задаете имя вызываемой функции.

-

При добавлении функции момента можно нажать кнопку , чтобы перейти к сценарию с указанной функцией, или кнопку , чтобы создать новый ресурс сценария с пустой функцией. - готовой к редактированию. Вы также можете удалить moment и содержащийся в нем вызов функции, нажав кнопку .

-

Моменты последовательности также можно добавлять и редактировать с помощью кода. Более подробную информацию можно найти здесь.

-
    -
-

-
-

Допэмиссия

-
-

В Dope Sheet отображаются всеключи активов и параметры для каждого трека - показаны. Вы можете щелкнуть и перетащить ключи влево или вправо, чтобы расположить их на временной шкале, а также щелкнуть на правом краю ключа актива, чтобы изменить его длину. Обратите внимание, что для sprites и объектов, если установить длину больше, чем длится анимация, это приведет к тому, что анимация - зацикливаться на дополнительных кадрах. На листе dope также есть элементы управления для установки начала и конца области клипа для последовательности, и вы можете щелкнуть в любом месте, чтобы установить головку воспроизведения в эту позицию. Для получения дополнительной информации об использовании dope sheet см. следующую страницу:

- -

-
-

Ориентация на изменения

-
-

Кнопка изменения ориентации может быть использована для изменения способа отображения последовательностей в редакторе последовательности. - Editor отображает различные разделы. По умолчанию вид Cnavas находится вверху, а редактор дорожек и доп. лист - внизу, но это можно изменить, нажав на кнопку для переключения между различными макетами, или нажав на кнопку - Опции , чтобы открыть меню и выбрать нужный макет. - нужный. Доступны следующие макеты:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Space IconРаздельное окно -

При этой опции редактор последовательностей будет разделен на два отдельных окна, где главное окно IDE будет показывать вид холста на полном рабочем столе, а новое окно будет показывать Dope Sheet и редактор дорожек. Повторное нажатие кнопки - снова изменит расположение и уберет дополнительное окно.

-
LMB IconЗащелкивающийся верх -

Этот параметр привязывает редактор дорожек и доп. лист к верхней части сайта IDE.

-
MMB IconSnap Right -

Этот параметр привязывает редактор дорожек и доп. лист справа от IDE.

-
Control IconЗащелка нижняя -

Эта опция привязывает редактор дорожек и доп. лист к нижней части IDE (это вид по умолчанию).

-
CMD IconЗащелка левая -

Этот параметр привязывает редактор дорожек и доп. лист слева от IDE.

-
-

Вы также можете в любой момент сбросить настройки редактора последовательностей, нажав на опцию Сброс . Это вернет редактор в состояние по умолчанию и вновь откроет все закрытые разделы.

-
-

-

Ввиду изначальной сложности редактора последовательностей, мы дали лишь краткий обзор доступных здесь функций, но у нас есть дополнительные страницы, перечисленные ниже, которые более подробно описывают его возможности и то, как их можно использовать:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Shaders.htm b/Manual/contents/The_Asset_Editors/Shaders.htm index 4693c011e..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Shaders.htm +++ b/Manual/contents/The_Asset_Editors/Shaders.htm @@ -1,103 +0,0 @@ - - - - - - Шейдеры - - - - - - - - - - -

Редактор шейдеров

-

Шейдеры - это очень мощный инструмент, который можно использовать для манипулирования графикой, выводимой на экран вашей игрой, позволяя создавать невероятно быстрые эффекты, которые могут варьироваться от, например, добавления тонкого цветового оттенка на сайте sprite до эффектов искажения всего экрана. Но что такое шейдер?

-

Шейдер - это программа, состоящая из двух частей, которая выполняется непосредственно на самой видеокарте, что делает ее очень быстрой, поскольку всю работу выполняет GPU, и освобождает циклы CPU для кода вашей игры. Полный шейдер состоит из программы вершинного шейдера и программы фрагментного шейдера (также известного как пиксельный шейдер). Обе эти маленькие программы работают вместе, чтобы манипулировать тем, что графическая карта отображает на экране. Это позволяет в реальном времени управлять положением, цветом и альфа-значениями, которые отображаются в буфере дисплея.

-

Вершинный шейдер

-
-

Вершинный шейдер - это программируемый шейдерный этап в конвейере рендеринга, который обрабатывает отдельные вершины (точки треугольников, используемых для рендеринга любого изображения). При рендеринге геометрии - например, sprite или поверхности - GameMaker создает поток вершин, называемый буфером вершин (Vertex Buffer). - - GameMaker создает поток вершин - называемый буфером вершин - который определяет геометрию этих треугольников. Например, геометрия sprite состоит из двух треугольников (обычно называемых полигонами), которые отображаются вместе, образуя "квадрат". - вместе, чтобы сформировать "квадрат". Этот поток вершин из буфера вершин подается на вход вершинного шейдера, который может обрабатывать данные вершин программируемым образом. Выходной сигнал шейдера вершин используется графическим процессором для сборки треугольников, - которые затем правильно обрезаются и обрезаются для порта обзора и камеры обзора, а затем отправляются в блок растеризации GPU, который генерирует новый выходной поток, состоящий из того, что называется фрагментами. Это крошечные структуры данных - структуры данных, каждая из которых относится к одному пикселю, появляющемуся на экране.

-
-

Фрагментный шейдер

-
-

Фрагментный шейдер - это программируемый шейдерный этап конвейера рендеринга, который работает с "фрагментами" - интерполированными пикселями, используемыми для текстурирования любого данного полигона - и отвечает за вывод окончательного цвета пикселя каждого - пикселей каждого треугольника. В основном это работает следующим образом: шейдер фрагментов получает на вход все фрагменты (отдельные пиксели треугольника), которые были переданы по конвейеру вершинным шейдером. Затем он может - обрабатывать эти фрагменты, чтобы изменить цвет и альфа-коэффициент конечного пикселя, который будет выведен на экран.

-
-

-

Полный обзор того, как на самом деле работают шейдеры и какое место они занимают в графическом конвейере, выходит за рамки данной статьи, но вы можете найти краткое руководство здесь:

- -

-

Языковая поддержка

-

GameMaker поддерживает следующие языки шейдеров:

- - - - - - - - - - - - - - - - - - - - - - - -
Язык шейдеровЦелевая платформа
GLSL ES 1.0Все целевые платформы
GLSLMac и Ubuntu (Linux)
HLSL 11Windows, UWP, Xbox One и Series S/X
PSSLPlayStation 4 и 5
-

При написании шейдеров GLSL ES рекомендуется как можно точнее следовать официальной спецификации языка, чтобы избежать ошибок, поскольку некоторые целевые платформы могут быть строже других (например, целевые платформы HTML5 и Opera GX, которые могут быть более строгими, чем другие платформы, такие как Windows, macOS и т.д., когда речь идет о языковых ограничениях).

-

-

Создание шейдера

-

Чтобы создать шейдерный ресурс, просто щелкните правой кнопкой мыши в браузере ассетов и выберите Create -> Shader. После создания базового шейдера вы можете использовать меню правой кнопки мыши на новом ресурсе, чтобы выбрать тип шейдера, прежде чем продолжить редактирование кода:

-

Сам редактор кода при создании нового шейдера разделяется на две "программы" - Vertex и Fragment, каждая из которых доступна на вкладках в верхней части редактора. Обе программы создаются сразу, потому что вы не можете создать шейдер без обеих частей. Даже если вы хотите использовать только фрагментный шейдер, вам придется сначала создать проходной вершинный шейдер, поэтому по умолчанию любой новый создаваемый шейдер будет содержать уже закодированный вершинный и фрагментный проходной шейдер (на снимке вверху страницы видно, что мы использовали панель редактора кода, чтобы показать эти две программы бок о бок... полезно при работе над обеими шейдерными программами вместе).

-

Стоит отметить, что вы можете использовать шейдеры GLSL ES на всех целевых платформах, но чтобы они работали на целевой платформе HTML5 , вы должны включить WebGL в опциях игры HTML5, иначе они не будут работать.

-

Более подробную информацию о функциях шейдеров и их использовании в GameMaker можно найти на следующих страницах:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Sounds.htm b/Manual/contents/The_Asset_Editors/Sounds.htm index 207978e6e..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Sounds.htm +++ b/Manual/contents/The_Asset_Editors/Sounds.htm @@ -1,95 +0,0 @@ - - - - - - Звуки - - - - - - - - - - -

Звуковой редактор

-

Редактор звуков - это место, где вы можете загрузить звуки в новый аудиоресурс, а также задать их свойства. Чтобы загрузить звук, нажмите кнопку Загрузить звук справа от его названия. Появится диалог выбора файла, в котором вы можете выбрать звуковой файл. Это может быть либо файл WAV, либо файл MP3 , либо файл OGG. Как правило, файлы формата *.wav используются для коротких звуковых эффектов, поскольку, несмотря на то, что они имеют больший размер, они воспроизводятся мгновенно, так как не требуют декодирования. Файлы формата *.mp3 или *.ogg следует использовать для фоновой музыки или для звуковых эффектов, которые длиннее или больше по размеру. Эти файлы намного меньше, чем волновой файл, но имеют небольшую нагрузку на процессор, так как перед воспроизведением их необходимо декодировать.

-

После загрузки файла вы можете просмотреть звук с помощью кнопки воспроизведения, которая непрерывно зацикливает его. Это очень удобно, так как позволяет изменять громкость с помощью ползунка в нижней части окна и слышать, какой эффект это произведет на звук. Есть также кнопка остановки, так что вы можете остановить предварительный просмотр в любое время.

-

СОВЕТ С помощью инспектора можно просмотреть форму волны для выбранного звука.

-

Окно звука также имеет другие опции, которые описаны ниже:

-

Имя и файл

-
-

Здесь вы можете нажать кнопку " Открыть", чтобы открыть проводник файлов и выбрать аудиофайл для загрузки. Вы также можете задать имя нового ресурса в поле "Имя" слева. Имена могут быть только буквенно-цифровыми и могут использовать только символ - под символом "_", и они не могут начинаться с цифры.

-

-
-

Громкость и воспроизведение

-
-

Здесь вы можете установить громкость воспроизведения для данного звука. Это значение - просто значение по умолчанию, где если ползунок находится посередине - например, - то громкость для этого звука при использовании в игре будет 0,5. Однако это значение будет отменено - любым изменением усиления с помощью аудиофункций в вашем проекте.

-

Помимо регуляторов громкости у вас также есть регуляторы воспроизведения, где вы можете предварительно просмотреть звук, установить его на цикл или перемотку. Вы также можете нажать на значок , чтобы открыть звук в микшере.

-
-

Конвертация OGG

-
-

Эта опция доступна только для звуков в формате OGG и позволяет выбрать один из этих двух вариантов:

-

При использовании опции "Автоматически" звуковой файл OGG не будет конвертироваться компилятором активов и будет скопирован в исполняемый файл игры как есть. Это может вызвать проблемы, если атрибуты исходного файла и звукового актива не совпадают, например, исходный звуковой файл является монофоническим (имеет только один канал), а в атрибутах актива указано, что он имеет два канала.

-

Опция "Required" может быть использована, чтобы избежать подобных проблем и гарантировать, что исходный звуковой файл всегда будет преобразован компилятором активов в новый файл OGG с использованием атрибутов, указанных в редакторе звука.

-
-

Атрибуты

-
-

В этом разделе задаются атрибуты звука. Это атрибуты, которые будут установлены при экспорте игры и повлияют на то, как звук будет воспроизводиться во время выполнения. Для звуковых эффектов (форматWAV ) вы захотите, чтобы они были несжатыми , чтобы они воспроизводились быстро и не требовали декодирования. Обратите внимание, что использование этой опции преобразует звук в формат WAV во время компиляции (однако если атрибуты, установленные в редакторе звука, совпадают с атрибутами исходного файла WAV, то он будет просто скопирован). Для файлов OGG и MP3 обычно используется один из трех других вариантов.

-

Сжатый звук заставит все ваши звуковые файлы (независимо от того, являются ли они WAV или MP3) быть сжатыми до файлов формата Ogg Vorbis OGG для всех платформ (однако, если исходный звук уже имеет формат OGG, он будет просто скопирован без повторного сжатия, если опция Преобразование установлена на Автоматическое). Такие звуки занимают меньше места на диске, но имеют небольшую нагрузку на процессор из-за необходимости распаковки и загрузки в память перед воспроизведением, поэтому следует иметь это в виду, если вы хотите использовать сжатие в игре с интенсивным процессором.

-

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

-

Если вы выбрали сжатый звук, вы также можете выбрать потоковую передачу звука с диска. Потоковый звук - это звук без сжатия, воспроизводимый в реальном времени, который передается с диска, а не загружается в память. Потоковое воспроизведение идеально подходит для музыки, так как уменьшает единовременные затраты на распаковку всего файла, что может вызвать паузу в игре, но не рекомендуется для простых звуковых эффектов, где нагрузка на процессор гораздо меньше. Если вы выберете потоковое аудио, вы не сможете назначить звук аудиогруппе, и эта опция будет отключена, поскольку потоковые звуки не упаковываются так же, как другие звуки, и вы имеете полный контроль над тем, когда они загружаются, воспроизводятся и выгружаются с помощью кода.

-

Важно отметить, что при использовании платформы HTML5 потоковое аудио не будет воспроизводиться, если запрос на воспроизведение не исходит непосредственно от взаимодействия с пользователем (например, событие касания и т.д.). Однако, поскольку GameMaker ставит события нажатия в очередь и обрабатывает их только на следующем кадре, невозможно воспроизвести потоковое аудио без блокировки браузером. Чтобы обойти эту проблему, при запуске любой игры на HTML5 все потоковое аудио будет рассматриваться в движке как непотоковое, за исключением того, что потоковое аудио не будет предварительно загружено.

-

Это означает, что если ваша игра запущена в браузере, и, например, у вас есть 10 музыкальных треков, которые все установлены как потоковые файлы mp3 , все 10 будут инициализированы как непотоковое аудио, но они не будут декодированы непосредственно перед загрузкой игры, в отличие от обычного потокового аудио, которое будет предварительно загружено/декодировано непосредственно во время фазы экрана загрузки.

-

Хотя это позволяет обойти проблему и избежать значительного увеличения времени начальной загрузки, это означает, что может возникнуть ситуация, когда игра загрузилась, но некоторые потоковые звуки все еще загружаются или декодируются. Чтобы решить эту проблему, вы можете использовать функцию GML. audio_sound_is_playable() которая проверяет, может ли данный звук быть воспроизведен. На HTML5 эта функция вернет false , если звук еще не полностью загружен или декодирован, и true , если он загружен и может быть воспроизведен (на всех других платформах она всегда будет возвращать true).

-

-
-

Варианты целей

-
-

На панели "Параметры цели" вы устанавливаете коэффициенты преобразования для вашей игры. Эти настройки влияют на то, как звук будет экспортирован для целевой платформы. GameMaker будет автоматически конвертировать ваши звуковые файлы для вас - вы просто контролируете конечное качество этих звуков при конвертации. Как правило, настройки по умолчанию: качество 16 бит (или битовая глубина), частота дискретизации 44100 кГц и битрейт 128 кбит/с - вполне адекватны, но может оказаться, что вы хотите, чтобы звуковые эффекты (например) имели более низкое качество, а музыка - более высокое, и в этом случае эти настройки можно изменить.

-

Вы также можете выбрать, какое преобразование должно быть: моно, стерео или 3D. Если вы планируете использовать функции аудиоэмиттера для создания трехмерных звуковых эффектов, то вам следует выбрать моно или 3D, а не стерео, иначе ваши звуки в игре могут выходить не из тех динамиков, на которые вы рассчитывали. Обратите внимание, что нет никакой разницы между "3D" и "моно" - "3D" - это просто ярлык IDE, используемый для того, чтобы помочь новичкам в аудио не выбирать стерео, когда они хотят получить позиционный звук. Если вы решите использовать 3D-выход, он будет экспортирован как монофонический звук.

-

ПРИМЕЧАНИЕ Чем выше качество звука, тем больше размер файла, и это следует учитывать при выборе битрейта и частоты дискретизации.

-
-

Аудиогруппа

-
-

Вы можете назначить аудиофайл определенной аудиогруппе. Они создаются в окне Аудиогруппы и используются для группировки аудиоактивов вместе для более удобного управления памятью и громкостью. - управления. -

-

После назначения аудиофайла группе вы можете использовать специальные функции аудиогруппы для их изменения и lo загрузки/выгрузки из памяти. Дополнительную информацию см. в справочном разделе " Функции аудио ". - дополнительную информацию.

-

Если вы выбрали потоковое аудио, то эта опция будет отключена, поскольку потоковые звуки не упакованы так же, как другие звуки, и не загружаются в память, а передаются непосредственно с носителя. - носителя. -

-

Обратите внимание, что в то время как остальные свойства аудио зависят от конфигурации, настройки группы аудио не зависят, и звук будет принадлежать к одной и той же группе во всех конфигурациях, которые вы используете.

-

-
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Sprite_Properties/Nine_Slices.htm b/Manual/contents/The_Asset_Editors/Sprite_Properties/Nine_Slices.htm index f82fe4061..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Sprite_Properties/Nine_Slices.htm +++ b/Manual/contents/The_Asset_Editors/Sprite_Properties/Nine_Slices.htm @@ -1,51 +0,0 @@ - - - - - - Девять ломтиков - - - - - - - - - - -

Девять ломтиков

-

Девятикратная нарезка (также известная как 9-кратная нарезка) - это техника, используемая для масштабирования прямоугольных изображений с целью сохранения деталей, благодаря чему они сохраняют свою первоначальную форму после масштабирования.

-

Это достигается путем разделения изображения на девять отдельных частей или "кусочков". Угловые фрагменты перемещаются во время масштабирования и рисуются в том же масштабе, затем краевые и центральные фрагменты растягиваются или повторяются (в зависимости от настроек), чтобы заполнить пространство.

-

Четыре направляющие размещаются на sprite для разделения изображения на девять фрагментов. На следующем рисунке показано, как направляющие остаются на месте после масштабирования sprite с помощью Nine Slice:

-

Режим плитки среза определяет, как этот срез будет отображаться при масштабировании sprite. Его можно установить только для краевых и центральных срезов (угловые срезы не масштабируются).

-

Следующий пример демонстрирует каждый режим плитки при применении к центральному срезу:Если для sprite включена функция Nine Slicing, она будет использоваться для изменения размера sprite везде, где он появляется, и будет работать в любых существующих местах, где использовался sprite, без необходимости внесения каких-либо других изменений.

-

ПРИМЕЧАНИЕ: Девятикратная нарезка не будет работать с функциями, которые рисуют только часть sprite или искажают ее, например, draw_sprite_part() или draw_sprite_pos().

-

В сочетании с последовательностями эта функция может использоваться для построения пользовательских интерфейсов, а также, например, для создания прямоугольных стен в игровом уровне. Память текстур также можно экономить с помощью Девять нарезок, так как меньшее изображение может быть использовано для покрытия большей области на экране.

-

Девятикратное нарезание может быть включено на Sprites в IDE. Для получения дополнительной информации см. раздел Редактор Sprite .

-

Информацию о функциях Runtime, доступных для Nine Slicing, см. на следующей странице:

- -

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Sprites.htm b/Manual/contents/The_Asset_Editors/Sprites.htm index c88a16afd..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Sprites.htm +++ b/Manual/contents/The_Asset_Editors/Sprites.htm @@ -1,245 +0,0 @@ - - - - - - Спрайты - - - - - - - - - - -

Редактор Sprite

-

Редактор спрайтов - это место, где задаются общие свойства создаваемых спрайтов. Вы можете открыть это окно, создав новый sprite (щелкните правой кнопкой мыши в Asset Browser и выберите "Create Sprite"), дважды щелкнув на существующем sprite или щелкнув правой кнопкой мыши на существующем sprite и выбрав "Properties".

-

Редактор Sprite состоит из следующих частей:

-

-

Имя спрайта

-
-

Здесь вы можете дать имя sprite. Имя sprite будет использоваться в вашем игровом проекте для идентификации sprite как ресурса и может быть только буквенно-цифровым и использовать только символ "_". Хотя вы можете использовать цифры в - sprites имя, оно не может начинаться с цифры, так как это сделает его недопустимым именем ресурса при использовании GML или GML Visual.

-

-
-

Свойства изображения

-
-

В этом разделе вы можете задать размер изображения, нажав кнопку Sprite Size . При этом откроется следующее окно:

-

Здесь вы можете увидеть предварительный просмотр sprite до и после применения выбранных преобразований, а раздел ниже служит - для установки новых свойств sprite и разделен на две части:

-
    -
  • Масштабировать изображение: С помощью этой опции можно изменить размер холста sprite, и все изображения, содержащиеся на sprite, будут растянуты и масштабированы в соответствии с новым размером. Вы можете выбрать масштабирование с сохранением соотношения сторон базового изображения, - а также выбрать масштаб в пикселях или в процентах. В зависимости от типа изображения, с которым вы работаете, вы также можете включить или не включить линейную интерполяцию (в целом, линейная интерполяция "сглаживает" пиксели по - и поэтому для пиксельного искусства ее лучше не включать).
  • -
  • Изменить размер холста: Эта опция изменит размер холста рисунка до нового размера без масштабирования содержимого. Вы можете установить "опорную" точку для изменения размера с помощью стрелок направления, а затем задать значение размера. Существует опция - сохранить соотношение сторон при изменении размера холста, а в нижней части можно выбрать значение размера в пикселях или в процентах.
  • -
-

Когда вы будете довольны новым размером, нажмите кнопку Применить , чтобы применить изменения и закрыть окно Свойства изменения размера. Обратите внимание, что при применении изменения масштаба или размера к объекту sprite можно выбрать, чтобы изменения применялись и к началу координат. - sprite , установив флажок Применить к началу рядом с кнопкой Применить . Если флажок установлен - если начало координат не является одним из параметров по умолчанию и не заблокировано в sprite - то его положение будет масштабировано, чтобы - sprite Если флажок не установлен, масштабирование не будет применяться к началу координат. Если начало координат не является пользовательским значением или заблокировано, то оно будет выделено серым цветом и недоступно. Вы можете установить этот параметр для всех sprites в меню - Sprite Editor Preferences. -

-
ПРИМЕЧАНИЕ Эта опция доступна только для растровых изображений sprites и будет выделена серым цветом для SWF или скелетной анимации sprites.
-

В этом разделе вы также можете открыть редактор изображений, чтобы нарисовать свой sprite, или нажать на кнопку "Импорт", чтобы импортировать ранее созданный sprite. Sprites можно импортировать из большинства распространенных - растровых форматов ( PNG, JPG, GIF, и т.д...), но GameMaker также поддерживает векторные sprites (SWF) и скелетную анимацию sprites ( - Spine). Более подробную информацию об этих форматах можно найти в разделе " Небитовые спрайты". Обратите внимание, что при импорте растровых изображений sprites вы можете выбрать - несколько файлов изображений в проводнике файлов, и каждый из них будет добавлен в один и тот же sprite в виде отдельных подизображений (кадров). -

-

-
-

Настройки текстуры

-
-

Этот раздел окна свойств sprite посвящен тому, как GameMaker сохраняет изображения, составляющие ваш sprite, настраницах текстурдля использования на - устройствах и браузерах. Для настольных платформ это может быть не слишком важно, но когда вы начинаете разрабатывать для мобильных или веб-платформ, правильное управление активами изображений (текстурами) становится очень важным, поскольку плохо управляемые текстуры могут оказать пагубное влияние на вашу игру, вызывая проблемы с производительностью. - влияние на вашу игру, вызывая проблемы с производительностью.

-

Флажки Tile Horizontally и Tile Vertically по умолчанию обычно не установлены, так как в большинстве случаев вы не хотите устанавливать плитку sprites. Однако при определенных обстоятельствах вы можете захотеть, чтобы они были черепичными, что означает, что - следует отметить эти опции, особенно если вы собираетесь масштабировать вид или комнату, поскольку масштабирование может внести артефакты в графику игры, если страница текстур сгенерирована неправильно.

-

Если ваш sprite будет использоваться в качестве текстурной карты в 3D-игре, то вам следует установить флажок Отдельная страница текстур, и sprite получит отдельную страницу текстур (обратите внимание, что каждое подизображение также получит свою собственную страницу текстур. - страницу, так что если ваш sprite имеет 10 изображений, то будет создано 10 текстурных страниц). Это увеличит потребность вашей игры в текстурной памяти, поэтому при использовании этой опции следует быть очень осторожным. Также обратите внимание, что в общем случае, если ваш sprite использует эту опцию - для 3D, то текстуры должны быть кратны 2 (т.е. 128x128, 256x256, 512x512 и т.д...).

-

Следующей опцией является включение функции Pre-Multiplied Alpha для изображений sprite. Если эта опция включена, то альфа всех суб-изображений sprite будет предварительно умножена. Обычно это необходимо только при рисовании sprites на поверхностях или для некоторых специфических - специальных эффектов. При обычном использовании sprite вы не увидите заметной разницы между обычным sprite и предварительно умноженным.

-

У нас также есть опция фильтрации краев. Эта опция предназначена для тех случаев, когда в игре включена линейная интерполяция, и вы видите "ореолы" - цвета вокруг вашего sprites. Это вызвано аппаратной интерполяцией из нескольких исходных текселейна странице текстуры одновременно, и может быть особенно - очевидным при увеличении разрешения игр. Включение этого параметра приведет к тому, что краевые пиксели приобретут цвет ближайшего пикселя с полной альфой sprite и таким образом интерполированные пиксели будут смешиваться без ореолов, которые присутствовали ранее.

-

Наконец, вы можете выбрать группу текстур, к которой будет принадлежать ресурс sprite. По сути, группа текстур (ранее определенная в Менеджере групп текстур) - это то, что вы - можно настроить так, чтобы все ресурсы изображений, которые вам нужны для определенных комнат или уровней вашей игры, хранились вместе. Так, например, вы можете разместить все изображения первого уровня в одной группе текстур, все изображения второго уровня - в другой и т.д. ... и - GameMaker попытается разместить все эти сгруппированные ресурсы на одной текстурной странице, чтобы уменьшить переключение текстурных страниц во время работы вашей игры на выбранной целевой платформе.

-
ПРИМЕЧАНИЕ: Это не всегда необходимо, и прирост производительности от этого метода будет зависеть от того, является ли целевое устройство привязанным к CPU или GPU.
-

Подробнее о текстурных страницах можно узнать здесь.

-

Группы текстур относятся только к растровым изображениям, а небитовые sprites не будут назначены группам текстур, и некоторые из описанных выше опций будут недоступны - для них. Некоторые небитовые изображения sprites уже имеют свою собственную уникальную страницу текстур (скелетная анимация sprites), а другие просто не требуют текстур, поскольку состоят из векторов (SWF sprites). Для получения дополнительной информации см. следующий раздел:

- -

-
-

Маска столкновения

-
-

Все sprites имеют маску столкновений, которая соответствует области sprite, которая будет использоваться для обнаружения столкновений, когда sprite назначается экземпляру. Сначала можно задать режим для маски столкновений, который - может быть одним из следующих:

-
    -
  • Автоматически: GameMaker будет рассчитывать маску столкновений автоматически на основе альфа-значений sprite (это будет зависеть от настройки Tolerance, о которой будет сказано ниже).
  • -
  • Полное изображение: Маска будет рассчитана таким образом, чтобы ее границы совпадали с левой, правой, верхней и нижней границами sprite.
  • -
  • Вручную: Выбор этого параметра означает, что вы хотите установить границы маски столкновений, используя входные значения для левого, правого, верхнего и нижнего уровней.
  • -
-

Помимо режима маски столкновений, существуют также различные типы масок столкновений, которые вы можете выбрать из выпадающего меню:

-
    -
  • Прямоугольник: Простая прямоугольная маска столкновений. Это самое быстрое решение при использовании в вашем проекте.
  • -
  • Вращающийся прямоугольник: Это простая прямоугольная маска столкновений, которая будет вращаться вместе со значением image_angle экземпляра с назначенным sprite. Это медленнее, чем обычная прямоугольная маска столкновений, но быстрее, чем точная маска столкновений. - маска столкновений, но быстрее, чем точная маска столкновений.
  • -
  • Эллипс: Создает эллиптическую маску столкновений. Она разрешается медленнее, чем прямоугольная маска.
  • -
  • Алмаз: Создает "алмазную" маску столкновений. Она медленнее разрешается и генерирует больше нагрузок на процессор, чем прямоугольная и эллиптическая маски.
  • -
  • Точная: Создает точную маску столкновений на основе контура sprite. Если sprite имеет несколько подизображений, то это будет композиция краев всех подизображений, расположенных друг над другом. - Обратите внимание, что точная маска будет обрезана до ограничительной рамки, если для параметра Режим установлено значение Вручную и вы измените значения по умолчанию. Это очень медленно и приводит к большим затратам процессора.
  • -
  • Точная (на кадр): Создает точную маску столкновений на основе каждого кадра (т.е. маска будет изменяться в соответствии с контуром каждого отдельного кадра). Обратите внимание, что точная маска будет обрезана до ограничительной рамки, если для параметра Режим установлено значение Вручную и вы измените значения по умолчанию. Это, безусловно, самый медленный тип маски столкновений, и его следует избегать, за исключением очень, очень специфических и редких случаев. - случаев. -
  • -
-

На следующем изображении показаны различные варианты масок:

-

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

-

The Sprite Editor

-

Под настройкой маски столкновений находится ползунок alpha tolerance , который указывает допуск для создания маски относительно прозрачности пикселей sprites - при большем допуске пиксели, которые частично прозрачны, остаются вне маски, а при меньшем допуске маска будет учитывать эти пиксели. - остаются вне маски, в то время как при меньшем допуске маска будет учитывать эти пиксели. Это влияет как на ограничивающую рамку (если не установлено значение "вручную"), так и на маску для точной проверки столкновений.

-

Наконец, вы можете установить границы ограничительной рамки для маски. Граничная область - это название прямоугольной области, в которую помещается маска sprite. Для маски используются только пиксели, находящиеся внутри этой граничной области, и они будут участвовать в - По умолчанию она вычисляется автоматически с учетом альфа-допуска. Если отмечено значение "точно (на кадр)", то для каждого суб-изображения этот параметр также будет отдельным. При самостоятельной настройке вы можете - ввести значения в поля слева, справа, сверху и снизу, или щелкните в окне предварительного просмотра sprite и перетащите, чтобы "нарисовать" его поверх изображения. - sprite Обратите внимание, что при "рисовании" ограничительной рамки маска автоматически генерируется, чтобы вписаться в конечные значения, и ограничительная рамка может "зажать" маску.

-

Стоит отметить, что если вы перейдете в окно предварительного просмотра, вы можете настроить маску столкновений с помощью "ручек", расположенных в каждом углу. Нажав и перетащив их, вы настроите маску столкновений так же, как если бы вы вводили значения для ограничивающей рамки - рамки.

-

-
-

Девять ломтиков

-
-

Девятикратная нарезка (также известная как 9-нарезка) - это техника, используемая для масштабирования прямоугольных изображений с целью сохранения деталей, благодаря чему они сохраняют свою первоначальную форму после масштабирования. Дополнительную информацию см. на странице " Девятикратная нарезка ".

-

Раздел Nine Slice редактора Sprite Editor позволяет включить Nine Slicing на сайте sprite, а также просмотреть его в действии в окне Nine Slice Preview справа.

-

Окно предварительного просмотра Nine Slice позволяет изменить размер изображения и показывает, как будет выглядеть конечное изображение после его масштабирования с помощью техники Nine Slice. Этот предварительный просмотр sprite можно также поворачивать.

-

Раздел " Девять ломтиков " имеет следующие опции:

-
    -
  • Активировать девятикратную нарезку: Этот параметр определяет, будет ли использоваться масштабирование Nine Slice при масштабировании sprite. Если опция включена, масштабирование Nine Slice будет использоваться для sprite (и любых экземпляров объектов, использующих этот sprite), размещенных в последовательности или слое комнаты, и масштабированных sprites, нарисованных с помощью draw_sprite_ext() и других подобных функций.
    -
    - ПРИМЕЧАНИЕ: Девятикратная нарезка не будет работать с функциями, которые рисуют только часть sprite или искажают ее, например, draw_sprite_part() или draw_sprite_pos(). -
  • -
  • Направляющие: В этом разделе отображается смещение каждой направляющей относительно своей оси, и его можно использовать для изменения этого смещения. Эти направляющие также можно перемещать внутри окна предварительного просмотра спрайта, просто перетаскивая их мышью.
    -
    - ПРИМЕЧАНИЕЛюбые направляющие на одной оси не могут пересекаться друг с другом, и перетаскивание одной на другую приведет к тому, что вторая направляющая будет сдвинута.
    -
    -
    - Смещение каждой направляющей относительно соответствующего края. Например, левая направляющая смещена относительно левого края, правая - относительно правого, и так далее.
    -
    - Цвет и альфа каждой направляющей можно изменить, нажав на цветную кнопку рядом с позицией направляющей.
    - -
  • -
  • Выделение: Этот параметр влияет на то, как выбранный срез отображается в окне предварительного просмотра Sprite. "Инвертированный" выделяет sprite с наложением, кроме выбранного среза, а "Наложение" выделяет только выбранный срез с наложением.
    -
    - Цвет и альфа наложения можно изменить, нажав на цветную кнопку рядом с выпадающим меню. -
  • -
  • Выбранный ломтик: Этот параметр можно использовать для выбора фрагмента, выбирая один из крайних фрагментов (левый, верхний, правый, нижний) и центральный. Ломтик также можно выбрать, щелкнув по нему левой кнопкой мыши в окне предварительного просмотра спрайта, а повторный щелчок снимет выделение.
  • -
  • Режим плитки: Этот параметр используется вместе с параметром Выбранный фрагмент для управления отображением фрагмента при масштабировании sprite. К каждому срезу можно применить один из следующих режимов черепицы:
    - -
      -
    • Растянуть: Ломтик будет растянут, чтобы заполнить промежуток между его соединенными углами.
    • -
    • Повторить: срез будет повторен или выложен плиткой для сохранения деталей.
    • -
    • Зеркало: Ломтик будет повторен зеркально.
    • -
    • Пустой повтор: срез появится только один раз, после него останется пустая область.
    • -
    • Скрыть: Ломтик не будет отображаться вообще.
    • -
    -
  • -
-
-

Широковещательные сообщения

-
-

Эта кнопка добавит широковещательное сообщение на временную шкалу sprite, открывая диалог, в котором можно добавить сообщение для трансляции. Сообщение будет добавлено везде, где головка воспроизведения находится в представлении кадра, и состоит из простой строки, которая может быть подхвачена в событии широковещательного сообщения, когда оно срабатывает, и затем обработана.

-

После добавления сообщение будет показано в окне просмотра кадров, и вы можете щелкнуть на нем правой кнопкой мыши , чтобы открыть меню, в котором можно удалить сообщение или отредактировать его. Дополнительную информацию о широковещательных сообщениях см. здесь.

-

-
-

Скорость кадров

-
-

В этом разделе вы можете установить скорость воспроизведения кадров анимации из поля ввода слева. Скорость воспроизведения кадров может быть основана либо на "Кадрах в секунду", либо на "Кадрах на игровой кадр", - где значение 30 "Кадров в секунду" будет показывать 30 кадров анимации за одну секунду, а значение 30 "Кадров на игровой кадр" будет пытаться показать все 30 кадров за один игровой шаг, поэтому значения "Кадров на игровой кадр" - обычно устанавливаются равными 1 или ниже (например: при скорости 0,5 кадров на игровой кадр новый кадр будет показываться каждые два игровых шага).

-

Важно отметить, что настройки скорости кадров влияют не только на воспроизведение анимации в окне предварительного просмотра, но и на то, как sprite будет анимирован в ваших играх. Установленная здесь скорость покажет - sprite предварительный просмотр, как он будет работать в игре с множителем скорости изображения 1, но это можно установить в коде, используя image_speed переменная - Это означает, что sprite может работать быстрее или медленнее в зависимости от того, что запрограммировано. Так, например, если вы установите sprite на использование 10 "кадров в секунду", а затем установите image_speed на 0.5, игра будет рисовать спрайт - с половинной скоростью - 5 кадров в секунду. И наоборот, если мы установим image_speed для того же sprite равным 2, то в игре анимация будет рисоваться в два раза быстрее - 20 кадров в секунду. Обратите внимание, что скорость кадров также может быть установлена - в редакторе изображений.

-

-
-

Происхождение спрайта

-
-

Верхняя панель редактора sprite содержит свойства начала спрайта. Это точка на sprite, которая соответствует его положению в комнате, т.е. когда вы создаете экземпляр в определенной позиции x/y, начало координат - sprite помещается туда.

-

По умолчанию началом координат является левый верхний угол sprite, но часто удобнее использовать середину в центре, или вы можете захотеть использовать какую-то другую позицию (например, для персонажа платформенной игры вам может понадобиться центр внизу), - поэтому вы можете щелкнуть на выпадающем меню origin и выбрать одно из значений по умолчанию. Вы также можете задать начало координат вручную, щелкнув на изображении предварительного просмотра sprite, что приведет к перемещению крестика маркера начала координат в точку, на которой вы щелкнули, или введя различные значения x и y в соответствующие поля. Обратите внимание, что вы можете установить начало координат даже за пределами области sprite, используя отрицательные числа (для "влево" и "вверх"). - или положительных чисел, превышающих ширину и высоту sprite (для правой и нижней частей), что может быть очень полезно при работе с объектами, которые необходимо рисовать составными sprites.

-

-
-

Управление масштабированием

-
-

В правом верхнем углу окна предварительного просмотра находятся кнопки управления масштабированием. Эти кнопки управляют текущим уровнем масштабирования предварительного просмотра sprite. Вы можете увеличивать или уменьшать масштаб, а нажатие кнопки вернет предварительный просмотр в режим 1:1 с редактируемым объектом sprite. Вы также можете нажать кнопку Window Fit для того, чтобы весь sprite просмотр поместился в пределах - в текущем окне редактора (при этом масштаб будет увеличиваться/уменьшаться по мере необходимости). Обратите внимание, что вы можете увеличивать и уменьшать масштаб с помощью кнопок / и колесика мыши , а нажатие / + установит предварительный просмотр - 1:1 с реальным размером sprite.

-

-
-

Предварительный просмотр

-
-

Окно предварительного просмотра sprite показывает sprite так, как он будет выглядеть в игре, его можно увеличить или уменьшить с помощью колесика мыши , а также пролистать по экрану с помощью средней кнопки мыши и перетаскивания. - средней кнопки мыши и перетаскивания, или же использовать комбинацию + и перетаскивания. Вы можете использовать элементы управления рамкой (описанные ниже), чтобы изменить способ отображения изображения предварительного просмотра.

-

В этом окне также отображается "крест", который отмечает начало координат sprite (подробнее см. раздел Sprite Origin выше), а также может отображаться маска столкновения, если этот параметр редактируется (см. - раздел "Маска столкновения" выше).

-

-
-

Элементы управления воспроизведением

-
-

Элементы управления воспроизведением предназначены для воспроизведения в окне предварительного просмотра анимации кадров, при этом кнопка воспроизведения запускает/останавливает - анимации, а кнопка Loop используется для установки того, зацикливается ли sprite (возвращается к кадру 1 при достижении последнего кадра) или пинг-понг (возвращается назад по кадрам при достижении последнего кадра).

-

Обратите внимание, что опция loop/ping-pong не влияет на то, как sprite отображается в игре, поэтому установка этих опций в sprite не изменит способ отображения при компиляции и запуске игры. Это также справедливо для точек цикла - которые можно задать в режиме просмотра кадров (подробнее см. ниже) - они видны только в редакторе sprite и предназначены для тестирования анимации, но не влияют на то, как анимация sprite отображается в игре. - в ваших играх.

-

Дополнительной частью элементов управления кадрами является отображение и ввод текущего кадра чуть дальше слева. В этом поле отображается общее количество кадров анимации sprite, а также текущий кадр. Вы можете изменить - текущий кадр в любое время, щелкнув на поле ввода и введя номер кадра, который вы хотите просмотреть.

-
ВАЖНО! Кадры показаны пронумерованными от 1 до maxframe number, однако в коде вашей игры кадры будут пронумерованы от 0 до maxframe number - 1.
-
-

Рамки

-
-

Эта часть редактора sprite показывает каждый из различных кадров , составляющих один sprite набор, на временной шкале последовательности. Вы можете щелкнуть на любом кадре и перетащить его влево или вправо, чтобы изменить порядок их анимирования, а также дважды щелкнуть на любом кадре, чтобы запустить редактор изображений и отредактировать их. - редактор изображений и отредактировать их. Вы можете вырезать, копировать и вставлять кадры с помощью стандартных сочетаний клавиш или с помощью опций меню правой кнопки мыши . Вы также можете выбрать несколько кадров для работы с ними с помощью клавиш / + .

-

Меню правой кнопки мыши имеет следующие опции:

-

RMB Icon

-
    -
  • Добавить кадр - добавление нового кадра к анимации в конце.
  • -
  • Вставить кадр - вставка нового кадра в анимацию после текущего выбранного кадра.
  • -
  • Вырезать / Копировать / Вставить - Вырезание, копирование и вставка одного или нескольких кадров.
  • -
  • Удалить выделенные кадры - удаление текущего выбранного кадра или кадров.
  • -
-

Помимо приведенного выше варианта растягивания рамки, вы также можете расположить мышь на краю рамки, а затем, когда курсор изменится на двойную стрелку, просто щелкните и перетащите, чтобы изменить размер рамки, что займет больше времени:

-

Растянутому кадру потребуется больше времени для отображения, как если бы вы дублировали один и тот же кадр несколько раз.

-

Наконец, вы также можете увеличить масштаб временной шкалы кадра с помощью "ручек" по обе стороны от вида кадра, как показано на рисунке ниже:

-

LMB Icon

-
-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/The_Asset_Editors.htm b/Manual/contents/The_Asset_Editors/The_Asset_Editors.htm index c2c16cd5d..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/The_Asset_Editors.htm +++ b/Manual/contents/The_Asset_Editors/The_Asset_Editors.htm @@ -1,102 +0,0 @@ - - - - - - Редакторы активов - - - - - - - - - - -

Редакторы активов

-

ВGameMaker есть несколько различных редакторов, которые вы можете использовать для добавления, удаления и редактирования различных активов, необходимых вашей игре. В процессе разработки вам придется использовать некоторые или даже все эти редакторы, и запомнить, что каждый из них делает, иногда бывает непросто. Чтобы помочь, вы можете найти каждый из различных редакторов в списке ниже, а нажатие на любой из них приведет вас на страницу, где подробно объясняется, что это такое и как его использовать.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Анимационные кривые
Расширения
Шрифты
Примечания
Объекты
Пути
Номера
Скрипты
Последовательности
Шейдеры
Звуки
Спрайты
Наборы плиток
Временные рамки
Изображения
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Tile_Set_Editors/Animated_Tiles.htm b/Manual/contents/The_Asset_Editors/Tile_Set_Editors/Animated_Tiles.htm index 4366c7d8c..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Tile_Set_Editors/Animated_Tiles.htm +++ b/Manual/contents/The_Asset_Editors/Tile_Set_Editors/Animated_Tiles.htm @@ -1,58 +0,0 @@ - - - - - - Анимированные плитки - - - - - - - - - - -

Анимированные плитки

-

Плитки обычно считаются статичными ячейками в игровой комнате, однако в GameMaker их можно анимировать, как и sprite. Почему бы просто не использовать sprites, спросите вы? Ну, sprites имеет определенные накладные расходы на обработку из-за того. - поскольку они связаны с ограничивающей рамкой и способом их рендеринга, но плитки имеют гораздо меньшие затраты на обработку и поэтому быстрее рендерятся. Однако за это приходится платить, так как при использовании анимации с набором плиток вы ограничены в возможности - созданием анимации, длина которой должна быть равна степени двойки - т.е. 2, 4, 8, 16 и т.д. кадров - и они должны быть созданы внутри сетки плиток, и все они должны анимироваться с одинаковой скоростью (на основе каждого набора плиток). Однако, даже - даже с этими ограничениями, анимированные плитки - это мощная функция, которую можно использовать для придания жизни и цвета статичным окружениям и фонам.

-

Чтобы создать анимацию плиток, сначала нужно создать набор плиток, в котором все необходимые плитки находятся в одном изображении sprite (но не в виде кадров sprite, а в виде одного большого кадра sprite со всеми анимационными изображениями внутри него), а затем в редакторе набора плиток нажать на кнопку Tile Animation, чтобы открыть редактор анимации:

-

Приведенный выше пример изображения представляет собой единое изображение со всеми кадрами анимации, но следует отметить, что изображение может - содержать и другие неанимационные плитки, поскольку вы можете использовать один массивный набор плиток, а затем "выбрать" из него те части, на основе которых вы хотите создать анимацию. Например, у вас может быть большой набор плиток ландшафта с деревьями, - земля и вода, а внутри этого набора плиток есть несколько плиток, которые нужно анимировать, чтобы сделать рябь на воде.

-

Чтобы создать анимацию плитки, сначала нужно добавить анимацию в библиотеку анимации, нажав на кнопку Добавить анимацию , что позволит - добавит пустую полосу анимации в библиотеку и попросит вас выбрать количество кадров, которые будут использоваться:

-

Затем вам будет представлен вид каждого пустого кадра анимации, причем начальный кадр будет выделен для вас:

-

Если вы вернетесь к изображению набора плиток в левой части редактора, вы можете нажать на любой плитке, чтобы добавить ее в анимацию, и кадр перейдет к следующему. Щелчок на последующих плитках заполнит анимацию. - анимацию, которую вы можете просмотреть, нажав на кнопку "play" рядом с кадрами:

-

После этого ваша анимация станет частью библиотеки анимации, и когда вы войдете в редактор комнат, вы сможете выбрать ее и разместить в комнате. Обратите внимание, что если вы выберите любую плитку из анимации для размещения в комнате, эта плитка будет анимироваться, начиная с выбранной плитки и далее, поэтому вы можете "рассинхронизировать" анимацию, разместив отдельные кадры в комнате. - кадры в комнате, и все они будут анимированы. Единственная оговорка - скорость анимации всегда будет одинаковой, поскольку она определяется для всего набора плиток, а не для отдельных анимаций в библиотеке.

-

Следует отметить несколько моментов, касающихся плиток, которые используются в анимации:

-
    -
  • Если у плитки задана собственная анимация (то есть существует анимация, в которой она установлена как первая плитка), то она будет использовать эту анимацию.
  • -
  • Если плитка не имеет собственной анимации, но используется только в одной другой анимации, то будет использоваться эта анимация, начиная с первой позиции, в которой плитка присутствует в анимации.
  • -
  • Если плитка не имеет собственной анимации и используется в нескольких других анимациях, то она не будет анимироваться вообще. Вам нужно будет явно указать анимацию с этой плиткой в качестве первой.
  • -
-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Tile_Set_Editors/Auto_Tiles.htm b/Manual/contents/The_Asset_Editors/Tile_Set_Editors/Auto_Tiles.htm index 9e7d10aa8..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Tile_Set_Editors/Auto_Tiles.htm +++ b/Manual/contents/The_Asset_Editors/Tile_Set_Editors/Auto_Tiles.htm @@ -1,60 +0,0 @@ - - - - - - Автоплитка - - - - - - - - - - -

Автоплитка

-

Функция Auto Tile - это невероятно мощный инструмент, который можно использовать для упрощения построения уровней, будь то проект с видом сверху вниз или сбоку. По сути, вы создаете библиотеку автоплиток, а затем всякий раз, когда - вы укладываете плитку из этой библиотеки, она "соединяется" с плитками, расположенными вокруг нее, создавая бесшовную стену или платформу.

-

Однако прежде чем начать использовать функцию автоплитки, очень важно правильно настроить набор плиток sprite и выбрать подходящий тип автоплитки. Вам доступны следующие типы автоплиток: 47 плиток или - 16 плиток , причем (в общем случае) 16 плиток используются для ландшафтов или пейзажей сверху вниз (так как они дают более красивые переходы), а 47 - для платформеров/видов сбоку или сверху вниз, где стены требуют многократного соединения, но это - ни в коем случае не является жестким и быстрым правилом и зависит от того, как вы хотите, чтобы выглядел ваш конечный проект.

-

На рисунке ниже показан типичный набор из 47 и 16 плиток для автоукладки:

-

Теперь, просто глядя на изображения, нельзя сказать, как они будут сочетаться друг с другом, поэтому мы откроем редактор Autotile Editor из редактора набора плиток и добавим их. Редактор автоплитки выглядит следующим образом:

-

Обратите внимание, что используемый набор плиток sprite содержит ВСЕ плитки, которые нам нужны, а также может содержать другие плитки, так как вы можете выбирать и выбирать - какие из них должны быть в автоплитке. Теперь вы можете нажать на кнопку 47 плиток в области Шаблоны, чтобы создать новую запись в библиотеке 47 плиток, и это вызовет - появится шаблон, который можно использовать для выбора нужных плиток:

-

В шаблоне светло-серая область представляет собой внешний край используемой плитки, а более темная серая - область "заливки". - Чтобы добавить плитку в шаблон, просто нажмите на первую доступную ячейку шаблона, а затем выберите плитку для добавления слева:

-

Если вы допустили ошибку, просто выберите автоплитку, которую вы хотите удалить, и выберите "пустую" плитку из - набора плиток. После того, как вы добавили все плитки, вы можете сверить их с шаблоном, нажав на кнопку "Показать шаблон" в верхней части экрана. - Это приведет к переключению наложения шаблона на конечную автоплитку, как показано на рисунке ниже:

-

Если вы хотите сделать автоплитку из 16 плиток, процедура точно такая же, как описано выше, только вместо шаблона из 47 плиток вы используете шаблон из 16 плиток. - 47-ми плиточного шаблона вы используете 16-ти плиточный шаблон:

-

Теперь в нашей библиотеке автоплиток есть несколько автоплиток, взятых из набора плиток. Их можно использовать в редакторе помещений, просто создав слой карты плитки - слой карты, а затем выбрать одну из автоплиток из библиотеки (которая автоматически выберет кисть автоплитки в верхней части редактора помещений) и нарисовать в помещении. Теперь плитки будут "автоматически" соединяться друг с другом, создавая - правильно упорядоченные карты плиток.

-

Обратите внимание, что поведение автоплитки по краям комнаты будет зависеть от кнопки Open Or Closed Edges . По умолчанию, когда автоплитка размещается вдоль края комнаты, она будет выбирать плитку так, как если бы внешняя сторона комнаты была пустой (т.е: - она даст комнате "край"). Однако если вы нажмете эту кнопку, автоплитка будет укладывать плитку так, как если бы область снаружи была заполнена плитками, и таким образом выберет плитки, которые смешиваются и не имеют "края".

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Tile_Set_Editors/Brush_Builder.htm b/Manual/contents/The_Asset_Editors/Tile_Set_Editors/Brush_Builder.htm index 8b4b45f35..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Tile_Set_Editors/Brush_Builder.htm +++ b/Manual/contents/The_Asset_Editors/Tile_Set_Editors/Brush_Builder.htm @@ -1,110 +0,0 @@ - - - - - Строитель кистей - - - - - - - - - - -

Конструктор кистей для набора плиток

-

По умолчанию, когда вы "рисуете" плитки на слое карты плитки в редакторе помещений, вы выбираете одну плитку и рисуете ею. Однако наборы плиток почти всегда состоят из секций. - которые сочетаются друг с другом различными способами, образуя целые области или элементы. Например, в наборе плиток для RPG могут быть плитки ландшафта, которые можно соединять для создания более крупных или более мелких объектов - например, деревьев и зданий - в зависимости от количества используемых плиток. - используемых плиток. Размещение нескольких таких элементов на слое комнаты потребовало бы многократного возвращения назад и вперед для смены плитки, что не лучшим образом сказывается на рабочем процессе. Чтобы решить эту проблему, GameMaker позволяет вам создавать кисти плиток в - редакторе Tile Set, доступном при нажатии на кнопку Brush Builder:

-

В конструкторе кистей слева находится исходный набор плиток, а справа - чистый "холст". Теперь вы можете выбрать - любую плитку слева и нарисовать ее справа, чтобы создать пользовательские "кисти", которые затем можно использовать в редакторе комнат. Обратите внимание, что вы можете нажать и удерживать левую кнопку мыши , а затем перетащить ее на набор плиток, чтобы выбрать несколько плиток для рисования на холсте кисти. Вы также можете удерживать нажатой кнопку / + , чтобы добавить определенные отдельные плитки или удерживать кнопку + , чтобы удалить определенные плитки.

-

На следующем изображении показаны ранее упомянутые особенности ландшафта в качестве примера трех пользовательских кистей, созданных из одного набора плиток:

-

Справа вы можете увидеть три функции, которые мы сделали (выделены оранжевой рамкой - на изображении). Обратите внимание, что мы оставили промежуток в одну плитку между каждой особенностью - это потому, что любая соприкасающаяся группа плиток будет рассматриваться как одна кисть в редакторе помещений, поэтому мы оставляем промежуток в одну плитку, чтобы показать, что каждый набор - это отдельная кисть, которую мы хотим создать. - кисть, которую мы хотим создать. Во время создания кистей вы рисуете левой кнопкой мыши и удаляете правой кнопкой мыши . Вы также можете масштабировать лист плитки или холст кисти с помощью / и колесика мыши , когда мышь наведена на одно из окон. - над одним из окон, или панорамировать, используя + или - средней кнопки мыши и перетаскивания. Обратите внимание, что вы также можете использовать инструменты масштабирования на панели инструментов в окнах редактора для изменения - уровни масштабирования любого окна, а также переключать видимость и цвет сетки.

-

В правом верхнем углу вы можете увидеть выбранный инструмент, а также установить размер кисти, которой вы хотите рисовать. По умолчанию размер равен 1, что соответствует одной плитке, но если вы установите большее значение, то сможете рисовать (и стирать) с помощью - кистью большего размера, состоящей из нескольких выбранных плиток, как показано на рисунке ниже:

-

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

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LMB IconКарандашЭто инструмент "Карандаш". Он использует выбранную плитку для рисования в окне "Кисти" с помощью левой кнопки мыши , а стереть можно с помощью правой кнопки мыши .
BrushesЛастикС помощью инструмента "Ластик" вы можете использовать левую кнопку мыши , чтобы стереть заданную плитку в окне "Кисти". По сути, все, что это делает, это устанавливает индекс плитки на 0, что является - зарезервированная "пустая" плитка.
LMB IconВыборЭто инструмент выделения, с помощью которого можно определить область окна "Кисти" для работы. Вы можете нажать левую кнопку мыши и затем перетащить мышь. - для создания прямоугольной области, или вы можете нажать / + для добавления нескольких выделений и + для очистки части выделения. Чтобы очистить все выделение, можно нажать . Если в окне Кисти выделена область, остальные инструменты (Карандаш, Флип, Поворот и т.д...) будут работать только в пределах выделенной области. Обратите внимание, что вы также можете выбрать плитку в окне, затем скопировать ( / + "C"), вырезать ( / + "X") и вставить. - ( / + " - V"), что приведет к переключению инструмента на Карандаш и позволит вам "рисовать" ими.
Control IconAutoTileЩелчок на этом инструменте включает стиль рисования " Автоплитка ". Когда этот стиль активен, вы можете выбрать любую плитку из вкладки Библиотеки автоплитки, а затем нарисовать ее в окне Кисти, и GameMaker автоматически изменит ее в соответствии с окружающими плитками. - в соответствии с окружающими плитками, при условии, что вы правильно настроили вкладку Автоплитка. Обратите внимание, что при выборе плитки из набора плиток, не входящей в библиотеки автоплитки, инструмент рисования будет переустановлен на стандартный инструмент "Карандаш". - Карандаш.
CMD IconФлипНажатие левой кнопкой мыши на инструмент Flip (или использование сочетания клавиш "X") перевернет плитку или плитки, выбранные в данный момент. - выбранную для рисования вдоль горизонтальной оси, без изменения инструмента рисования (если для рисования выбрана пользовательская кисть, то перевернется вся кисть). Если у вас нет плитки, выбранной для рисования, но есть группа плиток, выбранных - в окне кисти, то инструмент переворота перевернет выбранные плитки.
LMB IconЗеркалоПри нажатии на инструмент "Зеркало" левой кнопкой мыши (или при использовании комбинации клавиш " Y") плитка(и), выбранная(ые) в данный момент, будет(ут) зеркально отражаться - выбранную для рисования вдоль вертикальной оси, без изменения инструмента рисования (если для рисования выбрана пользовательская кисть, то зеркально отразится вся кисть). Если у вас нет плитки, выбранной для рисования, но есть группа плиток, выбранных - в окне кисти, то инструмент "Зеркало" отразит выбранные плитки.
Alt IconПовернутьПри нажатии левой кнопкой мыши на инструмент "Поворот" (или при использовании комбинации клавиш " Z") плитка(и), выбранная(ые) в данный момент, будет(ут) повернута(ы) на 90 - на 90° по часовой стрелке, не меняя инструмента рисования (если для рисования выбрана пользовательская кисть, повернется вся кисть). Если для рисования не выбрана ни одна плитка, но выбрана группа плиток в окне - кисти, то инструмент "Поворот" повернет выбранные плитки.
-

Ниже инструментов находятся два различных раздела для выбора любой автоплитка или анимированных плиток, которые были созданы с использованием текущего изображения набора плиток. - Один sprite, используемый для набора плиток, может содержать много, много изображений в виде отдельных ячеек, и их можно объединить в редакторе анимации или автоплитки для создания пользовательских кистей, которые будут отображаться в этих разделах и могут быть использованы вместе с - обычными статичными плитками для создания кистей (обратите внимание, что анимированная плитка будет анимироваться независимо от того, выбрана ли она из библиотеки или из базового набора плиток).

-

После того как вы настроите все необходимые кисти, вы можете использовать их для рисования плитки на любом слое карты плитки в редакторе помещений.

-

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Tile_Sets.htm b/Manual/contents/The_Asset_Editors/Tile_Sets.htm index 7823d3f4b..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Tile_Sets.htm +++ b/Manual/contents/The_Asset_Editors/Tile_Sets.htm @@ -1,95 +0,0 @@ - - - - - - Наборы плиток - - - - - - - - - - -

Редактор наборов плиток

-

Набор тайлов - это графический ресурс для рисования уровней и других статических компонентов вашей игры. Набор плиток состоит из одного изображения, которое затем разбивается на различные "ячейки" (плитки), и каждая плитка может быть помещена в редактор комнат для создания полного изображения. Ниже показаны два примера sprites, которые можно использовать как наборы плиток:

-

Tile Set Editor

-

Изображения предоставлены Lost Garden

-

Это наиболее распространенные способы создания наборов плиток - либо все они слиплись вместе, либо их разделяют небольшие промежутки, и GameMaker может работать с обоими типами. По сути, все наборы плиток должны состоять из изображений, которые вписываются в четко определенную сетку, причем каждая ячейка сетки должна быть абсолютно одинакового размера (обратите внимание, что хотя все изображения, показанные выше, состоят из квадратных плиток, набор плиток может быть составлен и из прямоугольных плиток).

-

При создании наборов плиток следует помнить, что левая верхняя ячейка сетки всегда должна быть пустой, поскольку именно эту плитку GameMaker будет использовать для "пустых" плиток в комнате и для стирания существующих плиток (и даже если в этой части изображения есть пиксели, они будут проигнорированы).

-

Когда вы впервые создаете ресурс набора плиток, открывается окно редактора набора плиток со следующими параметрами:

-

-

Имя

-
-

Здесь вы можете дать имя своему набору плиток. Имена могут быть только буквенно-цифровыми и могут использовать только символ "_", а также не могут начинаться с цифры.

-

-
-

Спрайт

-
-

Здесь вы можете выбрать актив спрайта, из которого будет создан набор плиток. Нажав на главную кнопку, вы откроете Asset Explorer, где можно выбрать sprite, который вы хотите использовать для набора плиток:

-

Вы также можете нажать на кнопку New Sprite для создания нового актива sprite (что откроет редактор спрайтов для нового актива в рабочей области для редактирования), или вы можете редактировать текущий выбранный sprite с помощью кнопки Edit Sprite , или даже выбрать редактирование самого изображения sprite в редакторе изображений, нажав на кнопку .

-

По умолчанию при открытии набора плиток также отображается окно Свойства набора плиток (см. ниже), но если вы его закроете, то можете нажать кнопку здесь, чтобы открыть его снова.

-

-
-

Свойства

-
-

В окне " Свойства набора плиток " можно задать базовый размер плитки (по умолчанию 16px квадрат), величину смещения и разделение между плитками (последние два параметра предназначены для использования с sprites, как показано в примере на этой странице, где есть промежутки между отдельными частями плиток). Вы также можете установить значения Output Border для изображения набора плиток, которые контролируют, как изображение будет сохранено на диске, и добавить дополнительные пиксели вокруг каждой плитки по мере необходимости.

-

В связи с тем, как происходит отображение плиток, их необходимо предварительно подготовить, обведя каждую из них рамкой, чтобы "размазать" края. На изображении ниже показано, как плитки обычно отображаются графическими драйверами устройств, а красная линия вокруг плитки показывает, куда отображаются координаты U,V (буквы "U" и "V" используются для описания 2D текстурной сетки, поскольку "X", "Y" и "Z" уже используются для описания пространственных координат помещения и объекта):

-

Как вы можете видеть, он выбирает центр текселя для отображения непосредственно при рисовании изображения в комнате. Теперь при масштабе 1:1 все это хорошо, но что произойдет, когда мы уменьшим масштаб этой плитки? Проблема с уменьшением масштаба заключается в том, что когда вы уменьшаете изображение, UVs также уменьшаются и пытаются вписаться в более сжатое пространство, но это, очевидно, не может произойти, поэтому графический драйвер выбирает, какие тексели рисовать, основываясь на доступных центрах пикселей.

-

Итак, если мы "просто" перемещаемся в новый пиксель экрана, то, поскольку графические драйверы используют центр пикселя, чтобы решить, чем рисовать, он выберет тексель вокруг плитки, а не тексель на самой плитке.

-

Tile Set Example

-

Выше показана плитка, отрисованная в масштабе 6 экранных пикселей, и это показывает, что когда вы немного перекрываете следующий экранный пиксель, графический драйвер должен сделать выбор: либо отбросить этот тексель, либо попытаться заполнить его тем, что он считает правильным текселем. Скажем так, в этом случае он решает нарисовать перекрывающийся тексель в пикселе экрана, и, поскольку он теперь явно за пределами нашей плитки, он получает этот пиксель либо из следующей плитки, либо из маленьких кусочков пространства, которые вы предоставили вокруг плитки, что означает, что при уменьшении размера плитки вы получите щели между плитками, "глюки" в том, как они рисуются, и именно здесь возникает много путаницы... Каждый графический драйвер и устройство делает это по-своему, что означает, что результаты могут быть непредсказуемыми и выглядеть ужасно... но если вы будете осторожны и спланируете все заранее, вы сможете обойти это.

-

В высококлассных играх, если вы рисуете из одной текстуры (не на странице текстур или атласе текстур), у вас есть возможность использовать режим текстурирования под названием clamp , который повторяет последний ряд текстур бесконечно вдаль, позволяя вам масштабировать без проблем, поскольку он заставляет аппаратное обеспечение получить последний ряд пикселей, несмотря ни на что. Вот что делают для вас настройки Output Border :

-

Выше показана "фиксированная" плитка sprite, и вы можете видеть, что теперь она имеет повторяющуюся секцию вокруг каждой плитки, что означает, что при превышении аппаратного обеспечения всегда будет выбираться последний тексель из плитки, а не один из пробелов или следующая за ним плитка. Поэтому при создании набора плиток имейте в виду, что если вы собираетесь увеличивать или уменьшать масштаб игрового представления или рендерить плитки в масштабе, вам может понадобиться большее значение ширины или высоты Output Border, чем значение по умолчанию 2.

-

Затем вы можете выбрать группу текстур, к которой вы хотите отнести ресурс тайлсета. По сути, группа текстур (предварительно определенная в менеджере групп текстур) - это то, что вы можете настроить таким образом, чтобы все изображения, необходимые для определенных комнат или уровней вашей игры, хранились вместе. Так, например, вы можете поместить все изображения первого уровня в одну группу текстур, все изображения второго уровня - в другую и т.д... и GameMaker попытается поместить все эти сгруппированные активы на одну и ту же страницу текстур, чтобы уменьшить переключение страниц текстур во время работы вашей игры на выбранной целевой платформе.

-
ПРИМЕЧАНИЕ: Это не всегда необходимо, и прирост производительности от этого метода будет зависеть от того, является ли целевое устройство привязанным к CPU или GPU.
-

Последняя опция в свойствах набора плиток - Disable Source Sprite Export. Эта опция установлена по умолчанию, и ее действие заключается в том, что флаги исходного актива sprite будут опущены при создании страницы текстур для вашего проекта. Это работает при условии, что sprite, используемый в качестве набора плиток, не будет использоваться ни для чего другого, и поэтому его нужно экспортировать только один раз. Однако если вы используете базовый ресурс sprite для чего-либо еще, кроме плитки, то снимите этот флажок, чтобы базовый sprite и набор плиток были добавлены в текстурную страницу при компиляции.

-

-
-

Редакция

-
-

Каждая из кнопок в разделе " Редакторы" открывает отдельный редактор для конкретной функциональности набора плиток. Вы можете создавать кисти для набора плиток на основе нескольких плиток, анимированные плитки, используя различные плитки в качестве отдельных кадров, а также создавать автоматические плитки, которые будут "соединяться" вместе на основе плиток, которые их окружают. Каждый из этих редакторов подробно описан в разделах, ссылки на которые приведены в конце этой страницы.

-

-
-

Панель инструментов предварительного просмотра

-
-

Это инструменты, которые вы можете использовать для предварительного просмотра sprite, выбранного для набора плиток. Эти кнопки управляют текущим уровнем масштабирования предварительного просмотра, с их помощью можно увеличивать или уменьшать масштаб, а нажатие кнопки вернет предварительный просмотр в режим 1:1 с редактируемым набором плиток sprite. Вы также можете нажать кнопку Window Fit , чтобы весь набор плиток поместился в текущее окно предварительного просмотра (при этом масштаб будет увеличиваться/уменьшаться по мере необходимости, чтобы он поместился). Обратите внимание, что вы также можете увеличивать и уменьшать масштаб с помощью кнопок / и колеса мыши , а нажатие / + установит холст в соотношении 1:1 с набором плиток sprite.

-

Еще одной особенностью является то, что вы можете включить или выключить вид сетки, нажав кнопку , а также установить цвет для используемой сетки (нажав кнопку ). Когда сетка активна, она будет показывать цветной контур для каждой плитки в сетке, соблюдая настройки разделения и т.д..

-

-
-

Предварительный просмотр

-
-

Этот раздел представляет собой окно предварительного просмотра набора плиток. Для перемещения по окну предварительного просмотра можно использовать те же основные элементы управления, что и для общих рабочих пространств, то есть: используйте среднюю кнопку мыши и перетащите ее для панорамирования окна предварительного просмотра (или альтернативно используйте комбинацию + ), а также прокрутку по горизонтали с помощью колеса мыши или увеличение или уменьшение масштаба с помощью клавиш / и колеса мыши . Вы также можете использовать различные кнопки на панели инструментов предварительного просмотра для изменения масштаба и включения/выключения наложения ячеек сетки.

-
-

-

Как упоминалось выше в разделе " Редакторы", существуют дополнительные инструменты для редактирования наборов плиток и создания специальных кистей (комбинаций плиток, которые можно нарисовать в комнате), анимированных плиток и автоматических плиток (это специальные плитки, которые автоматически соединяются при размещении в комнате). Каждый из этих редакторов подробно описан на следующих страницах:

- -

-

-

- - - - - \ No newline at end of file diff --git a/Manual/contents/The_Asset_Editors/Timelines.htm b/Manual/contents/The_Asset_Editors/Timelines.htm index 87cfa6577..e69de29bb 100644 --- a/Manual/contents/The_Asset_Editors/Timelines.htm +++ b/Manual/contents/The_Asset_Editors/Timelines.htm @@ -1,78 +0,0 @@ - - - - - - Временные рамки - - - - - - - - - -

Редактор временной шкалы

-

В большинстве игр вы хотите, чтобы определенные вещи происходили в определенные моменты времени. Вы можете попытаться добиться этого с помощью событий тревоги, но когда все становится слишком сложным, это уже не сработает, тем более что вы ограничены только двенадцатью сигналами тревоги. Вот почему у нас есть актив временной шкалы . На временной линии вы указываете, какие действия должны происходить в определенные моменты игрового времени, и для этого вы можете использовать все действия, которые также доступны для объекта в различных событиях или коде. Создав временную линию, вы можете назначить ее объекту, и тогда экземпляр этого объекта будет выполнять действия в указанные моменты времени при размещении или создании в комнате.

-

Например, предположим, вы хотите сделать охранника, и этот охранник должен двигаться 20 временных шагов влево, затем 10 вверх, затем 20 вправо, затем 10 вниз и, наконец, остановиться. Для достижения этой цели вы можете создать временную шкалу, в которой вы начнете с установки движения влево. Затем вы создадите момент 20 (момент - это просто другой способ сказать "шаг игры" или "кадр игры") и зададите движение вверх, затем в момент 30 - движение вправо, в момент 50 - движение вниз и, наконец, в момент 60 вы остановите движение. Как только это будет сделано, вы можете назначить эту временную шкалу объекту охранника, и экземпляр охранника будет делать именно то, что вы запланировали, когда он будет помещен в комнату. Вы даже можете установить сигнал тревоги на временной линии, чтобы он повторялся через определенный промежуток времени, и таким образом ваш охранник сможет патрулировать территорию. Вы также можете использовать линию времени для более глобального управления игрой, например, создав невидимый объект контроллера, затем линию времени, которая в определенные моменты создает врагов, а затем назначает ее объекту контроллера и помещает его экземпляр в комнату. Это простой способ получить таймерные порождения врагов в игре про космический шутер или что-то подобное.

-

При добавлении нового момента вам может быть предложено выбрать между GML Visual и GML Code. Дополнительную информацию см. в разделе Язык GameMaker.

-

Чтобы создать временную линию, щелкните правой кнопкой мыши в браузере активов и выберите "Создать временную линию". Откроется окно, изображенное в верхней части этой страницы, со следующими разделами:

-

-

Имя

-
-

Здесь вы присваиваете ресурсу временной шкалы имя. Оно должно содержать только буквенно-цифровые символы или символ "_" под чертой и не может начинаться с цифры, так как оно будет использоваться для ссылок на вашу временную шкалу в коде. Это имя также будет уникальным идентификатором временной шкалы, который можно использовать в действиях GML Visual или функциях кода для идентификации временной шкалы.

-

-
-

-
-

Момент

-
-

Здесь можно задать значение момента . Значение момента рассчитывается как количество шагов игры после начала временной шкалы. Таким образом, если у вас есть временная шкала с моментами в позициях 0 и 60, то момент 0 сработает при запуске временной шкалы, а момент 60 произойдет через 60 шагов. Если скорость комнаты тоже установлена на 60, то момент 60 произойдет через секунду после начала временной шкалы. Вы можете сделать двойной щелчок на значении момента или использовать меню правой кнопки и выбрать " изменить" (см. раздел о меню кнопок ниже), чтобы изменить его. Чтобы добавить новый момент, просто нажмите кнопку Добавить в нижней части редактора. При добавлении новых моментов откроется редактор кода (или редактор действий), где вы можете добавить функции или GML Visual, которые вы хотите вызвать в этом моменте.

-

-
-

-
-

Имя момента

-
-

Чтобы помочь вам понять, что делает ваша временная шкала, разрешается давать моментам имя для их идентификации. Это просто строка, которая не будет использоваться в коде игры или где-либо еще, так как она предназначена исключительно для организации и понимания того, что делает ваша временная шкала. Чтобы добавить название/описание к моменту, вам нужно использовать формат /// @description в первой строке блока кода, например: -
-

-

/// @description Hello World

-

Это будет выглядеть следующим образом:

-

The Timeline Editor

-
-

-

Редактор временной шкалы позволяет с помощью + выбрать все моменты между первым щелчком и вторым щелчком , или вы можете использовать / + для щелчка на отдельных моментах, чтобы выбрать их независимо. Моменты временной шкалы можно редактировать с помощью меню правой кнопки мыши на одном из выбранных элементов:

-

RMB Icon

-
    -
  • Добавить: Эта опция позволяет добавить новый момент в шкалу времени. Он будет добавлен непосредственно после последнего момента, так что если последний момент в вашей временной шкале равен 120, то следующий, который вы добавите, будет 121. Вы можете изменить положение момента, дважды щелкнув на значении момента в редакторе или щелкнув правой кнопкой мыши и выбрав "Изменить".
  • -
  • Редактировать: Открывает текущий момент временной шкалы для редактирования.
  • -
  • Изменить момент: Изменение значения для выбранного момента временной шкалы. Это то же самое, что и медленный двойной щелчок на значении временной шкалы в окне редактора.
  • -
  • Изменить описание: Изменение описательного названия для выбранного момента временной шкалы. Это то же самое, что и медленный двойной щелчок на описании временной шкалы в окне редактора.
  • -
  • Дублировать: Это дублирует все выбранные моменты временной шкалы и добавляет их последовательно в конец текущей временной шкалы.
  • -
  • Объединить: При выборе двух или более моментов на временной шкале можно выбрать их объединение. В результате будет создан один момент временной шкалы в позиции первого выбранного момента с одновременным выполнением всех кодов и действий.
  • -
  • Удалить: Это позволит удалить выбранный момент (или моменты) с временной шкалы.
  • -
  • Вырезать / Копировать / Вставить: Эти опции позволяют вырезать, скопировать или вставить один или несколько моментов временной шкалы. Здесь также можно использовать стандартные сочетания клавиш: / + "X", / + "C", и / + "V".
  • -
  • Выбрать все: С помощью этого параметра можно выбрать все моменты на временной шкале. Выбранные моменты можно удалить, объединить, продублировать, вырезать или скопировать.
  • -
  • Конвертировать в GML Visual / Code: Моменты временной шкалы будут созданы с использованием метода, выбранного при создании проекта, либо с использованием кода, либо с использованием действий GML Visual. С помощью этой опции вы можете конвертировать из одного в другой, независимо от типа проекта.
  • -
-

-

-

- - - \ No newline at end of file diff --git a/Manual/contents/assets/masterpages/Manual_Action_Page.htt b/Manual/contents/assets/masterpages/Manual_Action_Page.htt index b3d4bbd5c..e69de29bb 100644 --- a/Manual/contents/assets/masterpages/Manual_Action_Page.htt +++ b/Manual/contents/assets/masterpages/Manual_Action_Page.htt @@ -1,59 +0,0 @@ - - - - - - - Manual_Action_Page - - - - - - - - - - -
-
-
-

Assign Variable Icon Action Name

-

Description

-

 

-

Action Syntax:

-

Assign Variable Action

-

Arguments:

- - - - - - - - - - - -
ArgumentDescription
  
-

 

-

Example:

-

Assign Variable ExampleThe above actions 

-

 

-

 

- -
- - - - \ No newline at end of file diff --git a/Manual/contents/assets/masterpages/Manual_Keyword_Page.htt b/Manual/contents/assets/masterpages/Manual_Keyword_Page.htt index 7de6fc840..e69de29bb 100644 --- a/Manual/contents/assets/masterpages/Manual_Keyword_Page.htt +++ b/Manual/contents/assets/masterpages/Manual_Keyword_Page.htt @@ -1,72 +0,0 @@ - - - - - - - Manual Keyword Page - - - - - - - - - - -
-
-
-

keyword_name

-

Keyword Description Goes Here.

-

Additional Information Goes Here.

-

 

-

Syntax:

-

keyword_name(arguments);

- - - - - - - - - - - - - - - - - - -
ArgumentTypeDescription
argument_name<Type_ Variable>Argument Description Goes Here
-

 

-

Returns:

-

<Type_ Variable> (Optional explanation)

-

 

-

Example:

-

code_example () {
-     
- }

-

Explain The Code Example Here

-

 

-

 

- -
- - - - \ No newline at end of file diff --git a/Manual/contents/assets/masterpages/Manual_Page.htt b/Manual/contents/assets/masterpages/Manual_Page.htt index a7f0a86c7..e69de29bb 100644 --- a/Manual/contents/assets/masterpages/Manual_Page.htt +++ b/Manual/contents/assets/masterpages/Manual_Page.htt @@ -1,39 +0,0 @@ - - - - - - - Manual Page - - - - - - - - - -
-
-
-

Page Heading

-

 

-

 

-

 

- -
- - - - \ No newline at end of file