- 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()
Возможно, что тут не будет ответов и я останусь дэбилом, а может быть и нет)
Вложения
Последнее редактирование: