- 212
- 196
Эпиграф:
Писать на стареньком языке - честь.
А на новеньких и imgui есть.
Пишем на старом языке,
Поддерживаем алгоритмичность ума.
Писать на стареньком языке - честь.
А на новеньких и imgui есть.
Пишем на старом языке,
Поддерживаем алгоритмичность ума.
Привет создал я значит игрушку, которая может бегать и убивать ненужных угандёнков.
Код хорошо закомментировал, поэтому проблем с чтением быть не должно.
На все интересующие вопросы отвечу. Пишите свои пожелания для совершенствования проекта, ну или сами дорабатывайте его и скидывайте сюда свои наработки.
Знаю, что этот скрипт не будет культовым и он не совсем нужен для сампа. Но мерзкий уkр может его залить на ПС, поэтому я запрещаю размещение моего сурса на сторонних форумах.
Активация:
/ggame.u
/ggame.uset
Писал под:
CLEO 4.3
SAMPFUNCS 5.3.3
Тригерид:
Под LUA не переписывать.
			
				CLEO:
			
		
		
		{$CLEO}
0000: NOP
repeat
wait 100
until samp.Available()
/*
1@ - X координата поля.
2@ - Y координата поля.
11@ - X координата actor.
12@ - Y координата actor.
С самого начала основного цикла (47-131) я отключаю игровую клавиатуру и включаю курсор.
(47-52) (128-131) хуйня для включения курсора.
(58-85) управление actor, попутно сравнивая его координаты с допустимыми координатами. Ограничено полем.
(87-107) если нажата ЛКМ.
(97-106) если ты попал в полигон 30x20 на врага.
Далее идёт появление врага, которого нужно убить красной линией.
9@ - X координата врага.
10@ - Y координата врага.
(109-125) появление ебучего врага.
*/
0AF0: 1@ = get_int_from_ini_file "cleo\GGameUganda\config.ini" section "POSICION" key "Xpos" // Загрузка из ini-файла X координаты стандартного поля, в котором будет бегать actor
0AF0: 2@ = get_int_from_ini_file "cleo\GGameUganda\config.ini" section "POSICION" key "Ypos" // Загрузка из ini-файла Y координаты стандартного поля, в котором будет бегать actor
0B71: render 3@ = load_texture_from_file "cleo\GGameUganda\actor.png" // Загрузка actor(Угандёног)
    0085: 11@ = 1@ // (int) Последующие 3 строки размещают actor на поле
    0085: 12@ = 2@ // (int)
    12@ += 375
0B34: samp register_client_command "ggame.u" to_label @cmd // Загрузка команды
0B34: samp register_client_command "ggame.uset" to_label @cmd1 // Загрузка команды
while true // Осовной цикл, в котором происходит весь секс
wait 0
    IF 31@ == 1 // Сама игра
    THEN 0B8D: samp set_cursor_mode 2
        REPEAT
        WAIT 0
            IF 0B8C:    samp is_cursor_active
            THEN
            0B5E: get_cursor_pos 21@ 22@ // Получение координат курсора для рендеринга line
            0B69: render draw_box_pos 1@ 2@ size 600 400 color 0x898787FF // Рендеринг поля
            0B73: render draw_texture 3@ pos 11@ 12@ size 30 20 rotation 0.0 color -1 // Рендер моего actor
            0085: 5@ = 1@ // (int)
            5@ += 570
                if and
                001D:   11@ > 1@  // (int)
                0AB0:   key_pressed 65
                then
                11@ -= 4
                end
                if and
                801D:   11@ > 5@  // (int)
                0AB0:   key_pressed 68
                then
                11@ += 4
                end
                if and
                801D:   2@ > 12@  // (int)
                0AB0:   key_pressed 87
                then
                12@ -= 4
                end
            
                0085: 7@ = 2@ // (int)
                7@ += 375
            
                if and
                001D:   7@ > 12@
                0AB0:   key_pressed 83
                then
                12@ += 4
                end        
                
                if 0AB0:   key_pressed 1
                then
                11@ += 15
                12@ += 10
                0B68: render draw_line_point1 11@ 12@ point2 21@ 22@ width 1 color 0xFFFF0000 // рисуется красная линия. Подобие выстрела.
                11@ -= 15
                12@ -= 10
                0085: 15@ = 9@
                0085: 16@ = 10@
                15@ += 30
                16@ += 20
                    if and
                    001D:   21@ > 9@  // (int)
                    001D:   22@ > 10@  // (int)
                    801D:   21@ > 15@  // (int)
                    801D:   22@ > 16@  // (int)
                    then
                    0ACD: show_text_highpriority "~n~~n~~r~Ubil" time 100
                    8@ = 81 // Искуственное появление нового врага после убийства старого
                    end
                end
        
                if 0019:   8@ > 80
                then
                0AC9: free_allocated_memory 19@
                0AC9: free_allocated_memory 20@
                0AC9: free_allocated_memory 9@
                0AC9: free_allocated_memory 10@
                0AC9: free_allocated_memory 8@
                0209: 19@ = random_int_in_ranges 10 550 // Чтобы он появлялся рандомно
                0209: 20@ = random_int_in_ranges 10 360 // Чтобы он появлялся рандомно
                0085: 9@ = 1@
                0085: 10@ = 2@
                005A: 9@ += 19@  // (int)
                005A: 10@ += 20@  // (int)
                8@ = 0
                end
            8@ += 1
            0B73: render draw_texture 3@ pos 9@ 10@ size 30 20 rotation 0.0 color -1 // рендеринг врага
        
        
            ELSE 0B8D: samp set_cursor_mode 2
            END
        UNTIL 31@ == 0
    END
 
 
   IF 30@ == 1 // настройки
    THEN 0B8D: samp set_cursor_mode 2
        REPEAT
        WAIT 0
            IF 0B8C:    samp is_cursor_active
            THEN
            0B5E: get_cursor_pos 1@ 2@
            0B69: render draw_box_pos 1@ 2@ size 600 400 color 0xFFFFFFFF
                if 0AB0:   key_pressed 1
                then
                0AF8: samp add_message_to_chat "[ GGame ]: Вы установили новые настройки.{3399FF} X -{ff33ff} %d{3399FF}. Y -{ff33ff} %d{3399FF}." color 0x0066CC 1@ 2@
                0B8D: samp set_cursor_mode 0
                30@ = 0
                break
                end
            ELSE 0B8D: samp set_cursor_mode 2
            END
        UNTIL 30@ == 0
    0B8D: samp set_cursor_mode 3
    31@ = 1
    // cleo\GGameUganda
    0AF1: write_int 1@ to_ini_file "cleo\GGameUganda\config.ini" section "POSICION" key "Xpos"
    0AF1: write_int 2@ to_ini_file "cleo\GGameUganda\config.ini" section "POSICION" key "Ypos"
    0085: 11@ = 1@ // (int)
    0085: 12@ = 2@ // (int)
    12@ += 375
    END    
 
 
 
 
end
:cmd // Активация для самой игры
0B12: 31@ = 31@ XOR 1
30@ = 0 // Выключение настроек
if 31@ == 1
then
0ACD: show_text_highpriority "~g~GGame is ~r~ON~n~~w~Author:~p~ ~>~RB_PRO~<~" time 3000
0B8D: samp set_cursor_mode 2
else
0ACD: show_text_highpriority "~g~GGame is ~r~OFF~n~~w~Author:~p~ ~>~RB_PRO~<~" time 3000
0B8D: samp set_cursor_mode 4 // Тут нужно дорабоать, чтобы курсор выключался, мышка включалась, как и клавиатура
end
samp.CmdRet()
:cmd1 // Активация для настроек
0B12: 30@ = 30@ XOR 1
31@ = 0 // Выключение игры
if 30@ == 1
then
0ACD: show_text_highpriority "~g~GGame. Setting position is ~r~ON~n~~w~Author:~p~ ~>~RB_PRO~<~" time 3000
else
0ACD: show_text_highpriority "~g~GGame. Setting position is ~r~OFF~n~~w~Author:~p~ ~>~RB_PRO~<~" time 3000
end
samp.CmdRet()Возможно, что тут не будет ответов и я останусь дэбилом, а может быть и нет)
Вложения
			
				Последнее редактирование: 
				
		
	
										
										
											
	
										
									
								 
				
		 
 
		 
 
		 
 
		
 
 
		 
 
		
 
 
		