You are not logged in.
Pages: 1
Для любителей экстремальной езды, высокого пилотажа или любого другого способа передвижений.
[center]Версия 2[/center]
Новый режим камеры позади транспорта. Хорош для быстрой езды на авто, заметно облегчает трюки на авиатранспорте, но вот с мотоциклом... Короче решать вам.
Камера автоматически подстраивается под размеры машины, будь то "Гольф" или автобус. Тем не менее, можно подогнать её под себя, настройка не займёт больше трёх секунд. Работает обзор назад/влево/вправо (со стрельбой из ПП).
Если после включения камеры выйти из машины и залезть в другую, заново включать мод не придётся; а если вы сели в машину той же модели, то сохранятся и настройки калибровки
Управление:
Вкл/выкл - C+N
Приблизить/отдалить - Num +/Num -
Поднять/опустить камеру - Num 9/Num 3
Поворот камеры вверх/вниз - Num *+Num 9/Num 3
Сброс калибровки - Num 5
Свободный обзор/drive-by-стрельба - G/ПКМ
Advarsel! Мод использует глобальные cleo-переменные с 0 по 5. Убедитесь, что другие моды их не используют. Если да - изменить номера соответствующих переменных.
Изменения во второй версии:
- при повороте камера движется по окружности вокруг машины, а не сдвигается вбок
- исправлены резкие скачки, камера работает гораздо плавнее
- добавлена регулировка угла наклона
- переписана формула расчёта позиции камеры
- повышена скорость реагирования на нажатия
Используется два потока, коды ниже.
// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007 {$VERSION 3.1.0027} {$CLEO .cs} //-------------MAIN--------------- thread "CARCAM" //var 0 = 19@ - кастомная камера (0 - откл, 1 - откл) //var 1 = 15@ - игрок смотрит влево/вправо/назад/осматривается //var 2 = 4@ - смещение по Y //var 3 = 5@ - вращение по Y //var 4 = 6@ - смещение по Z //var 5 = 13@ - точка направления по Z 4@ = -5.7 5@ = 7.0 15@ = 0 19@ = 0 6@ = 1.3 7@ = 0.0 11@ = 70.0 12@ = -1 0AB3: var 0 = 0 0AB3: var 1 = 0 :CARCAM_7 wait 0 if Player.Defined($PLAYER_CHAR) jf @CARCAM_7 if and 09E7: player $PLAYER_CHAR not_frozen Actor.Driving($PLAYER_ACTOR) jf @CARCAM_7 if 19@ == 1 then jump @CARCAM_9 end if and 0AB0: key_pressed 67 0AB0: key_pressed 78 jf @CARCAM_7 :CARCAM_9 wait 125 03C0: 0@ = actor $PLAYER_ACTOR car 0407: store_coords_to 1@ 2@ 3@ from_car 0@ with_offset 0.0 3.0 0.0 0441: 28@ = car 0@ model if 803B: not 28@ == 12@ then 07E4: get_model 28@ dimensions_cornerA_to 22@ 23@ 24@ dimensions_cornerB_to 25@ 26@ 27@ if 0820: model 28@ heli then 4@ = 0.0 else if 081F: model 28@ plane then 0087: 4@ = 22@ 4@ *= 0.2 else 0087: 4@ = 22@ 4@ *= 1.7 end end 0087: 29@ = 23@ 29@ *= 1.5 005B: 4@ += 29@ 0087: 29@ = 27@ 29@ *= 1.8 0063: 4@ -= 29@ 4@ *= 0.88 if 4@ > -4.5 then 4@ = -4.5 end if and 881F: not model 28@ plane 8820: not model 28@ heli then 0087: 6@ = 27@ 6@ *= 1.2 0087: 29@ = 26@ 29@ *= 0.2 005B: 6@ += 29@ else 0087: 6@ = 27@ 6@ *= 0.25 0087: 29@ = 23@ 29@ *= -0.25 005B: 6@ += 29@ end 0087: 13@ = 6@ end 0085: 12@ = 28@ :CARCAM_14 19@ = 1 03C0: 0@ = actor $PLAYER_ACTOR car if and Actor.InCar($PLAYER_ACTOR, 0@) Player.Defined($PLAYER_CHAR) jf @CARCAM_42 if 0500: player $PLAYER_CHAR skin == "EMPTY" on_bodypart 1 then 0AB3: var 0 = 0 jump @CARCAM_7 end 0407: store_coords_to 1@ 2@ 3@ from_car 0@ with_offset 0.0 3.0 0.0 0087: 11@ = 10@ 0AB3: var 0 = 1 0AB3: var 2 = 4@ 0AB3: var 3 = 5@ 0AB3: var 4 = 6@ 0AB3: var 5 = 13@ :CARCAM_25 //Нажатие C+N, отсутствие машины или лишение управления 03C0: 0@ = actor $PLAYER_ACTOR car if 09E7: player $PLAYER_CHAR not_frozen then 33@ = 0 end if and not Car.Wrecked(0@) 33@ <= 100 jf @CARCAM_42 if or 8AB0: not key_pressed 67 8AB0: not key_pressed 78 jf @CARCAM_40 :CARCAM_29 //Нажатие - wait 0 if 0AB0: key_pressed 109 jf @CARCAM_34 if 15@ == 0 then 4@ -= 0.1 else 4@ += 0.1 end jump @CARCAM_14 :CARCAM_34 //Нажатие + wait 0 if 0AB0: key_pressed 107 jf @CARCAM_35 if 15@ == 0 then 4@ += 0.1 else 4@ -= 0.1 end jump @CARCAM_14 :CARCAM_35 //Нажатие 5 if 0AB0: key_pressed 101 jf @CARCAM_36 0441: 28@ = car 0@ model 07E4: get_model 28@ dimensions_cornerA_to 22@ 23@ 24@ dimensions_cornerB_to 25@ 26@ 27@ if 0820: model 28@ heli then 4@ = 0.0 else if 081F: model 28@ plane then 0087: 4@ = 22@ 4@ *= 0.2 else 0087: 4@ = 22@ 4@ *= 1.7 end end 0087: 29@ = 23@ 29@ *= 1.5 005B: 4@ += 29@ 0087: 29@ = 27@ 29@ *= 1.8 0063: 4@ -= 29@ 4@ *= 0.88 if 4@ > -4.5 then 4@ = -4.5 end if and 881F: not model 28@ plane 8820: not model 28@ heli then 0087: 6@ = 27@ 6@ *= 1.2 0087: 29@ = 26@ 29@ *= 0.2 005B: 6@ += 29@ else 0087: 6@ = 27@ 6@ *= 0.25 0087: 29@ = 23@ 29@ *= -0.25 005B: 6@ += 29@ end 0087: 13@ = 6@ jump @CARCAM_14 :CARCAM_36 //Нажатие заднего вида if and 00E1: player 0 pressed_key 5 00E1: player 0 pressed_key 7 15@ == 0 jf @CARCAM_37 if and 4@ < 0.0 5@ > 0.0 then 4@ *= -1.0 5@ *= -1.0 15@ = 1 0AB3: var 1 = 0 end :CARCAM_37 //Отжатие заднего вида if and 80E1: not player 0 pressed_key 5 80E1: not player 0 pressed_key 7 jf @CARCAM_38 if 15@ == 1 then 4@ *= -1.0 5@ *= -1.0 15@ = 0 jump @CARCAM_14 else 0AB3: var 1 = 0 end :CARCAM_38 //Нажатие на "посмотреть влево/вправо" wait 0 if or 00E1: player 0 pressed_key 5 00E1: player 0 pressed_key 7 jf @CARCAM_POINTCHANGE if or 80E1: not player 0 pressed_key 5 80E1: not player 0 pressed_key 7 jf @CARCAM_POINTCHANGE if and not Actor.DrivingPlane($PLAYER_ACTOR) 84A9: not actor $PLAYER_ACTOR driving_heli jf @CARCAM_POINTCHANGE 0AB3: var 1 = 1 Camera.Restore_WithJumpCut jump @CARCAM_36 :CARCAM_POINTCHANGE //Нажатие на "посмотреть вверх/вниз" if and 0AB0: key_pressed 105 0AB0: key_pressed 106 then 13@ += 0.1 end if and 0AB0: key_pressed 99 0AB0: key_pressed 106 then 13@ -= 0.1 end :CARCAM_39 //Нажатие на свободный обзор if or 0AB0: key_pressed 71 0AB0: key_pressed 2 jf @CARCAM_61 Camera.Restore_WithJumpCut 0AB3: var 1 = 1 gosub @CARCAM_54 jump @CARCAM_14 :CARCAM_40 //Выход по C+N 19@ = 0 0AB3: var 0 = 0 Camera.Restore_WithJumpCut wait 200 jump @CARCAM_7 :CARCAM_42 //Выход по отсутствию машины 0AB3: var 0 = 0 19@ = 1 Camera.Restore_WithJumpCut wait 200 jump @CARCAM_7 0AB3: var 1 = 0 jump @CARCAM_14 :CARCAM_54 //Отключение свободного обзора wait 0 if and 8AB0: not key_pressed 71 8AB0: not key_pressed 2 jf @CARCAM_54 0AB3: var 1 = 0 return :CARCAM_61 //Нажатие 9 if and 0AB0: key_pressed 105 8AB0: not key_pressed 106 jf @CARCAM_64 6@ += 0.1 13@ += 0.1 jump @CARCAM_14 :CARCAM_64 //Нажатие 3 if and 0AB0: key_pressed 99 8AB0: not key_pressed 106 jf @CARCAM_14 6@ -= 0.1 13@ -= 0.1 jump @CARCAM_14
// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007 {$VERSION 3.1.0027} {$CLEO .cs} //-------------MAIN--------------- thread "CARCAM_SET" //var 0 = 19@ - кастомная камера (0 - откл, 1 - откл) //var 1 = 15@ - игрок смотрит влево/вправо/назад/осматривается //var 2 = 4@ - смещение по Y //var 3 = 5@ - вращение по Y //var 4 = 6@ - смещение по Z //var 5 = 13@ - точка направления на Z const Z_Mult = 9.0 X_Mult = 18.5 Dif_Limit = 1.33 Dif_LimitMin = -1.33 Dif_LimitX = 2.5 Dif_LimitMinX = -2.5 Dif_LimitZoom = 1.0 Dif_LimitZoomMin = -1.0 end 11@ = 70.0 16@ = 0.0 17@ = 0.0 18@ = 0.0 :CARCAM_SET_2 wait 0 if Player.Defined($PLAYER_CHAR) jf @CARCAM_SET_2 0AB4: 19@ = var 0 if and 19@ == 1 Actor.Driving($PLAYER_ACTOR) jf @CARCAM_SET_2 03C0: 0@ = actor $PLAYER_ACTOR car if not 0@ == -1 jf @CARCAM_SET_2 if Actor.InCar($PLAYER_ACTOR, 0@) jf @CARCAM_SET_2 Model.Load(#WHEEL_OR1) while not Model.Available(#WHEEL_OR1) wait 0 end 0407: store_coords_to 1@ 2@ 3@ from_car 0@ with_offset 0.0 3.0 0.0 21@ = Object.Create(#WHEEL_OR1, 1@, 2@, 3@) 0750: set_object 21@ visibility 0 0681: attach_object 21@ to_car 0@ with_offset 0.0 0.0 0.0 rotation 0.0 0.0 0.0 05A6: get_object 21@ rotation_velocity_about_an_axis_X 1@ axis_Y 2@ axis_Z 3@ through_center_of_body :CARCAM_SET_9 wait 0 0AB4: 19@ = var 0 0AB4: 15@ = var 1 if 15@ == 0 then if and 19@ == 1 Player.Defined($PLAYER_CHAR) Actor.Driving($PLAYER_ACTOR) 8500: not player $PLAYER_CHAR skin == "EMPTY" on_bodypart 1 jf @CARCAM_SET_13 03C0: 0@ = actor $PLAYER_ACTOR car 9@ = 1.0 0087: 16@ = 1@ 0087: 17@ = 3@ 05A6: get_object 21@ rotation_velocity_about_an_axis_X 1@ axis_Y 2@ axis_Z 3@ through_center_of_body 0AB4: 4@ = var 2 0AB4: 5@ = var 3 0AB4: 6@ = var 4 0AB4: 13@ = var 5 0087: 7@ = 4@ 1@ *= X_Mult //X angle 0087: 20@ = 16@ 0063: 20@ -= 1@ if 20@ >= Dif_LimitX then 16@ -= Dif_LimitX 0087: 1@ = 16@ end 0087: 20@ = 16@ 0063: 20@ -= 1@ if Dif_LimitMinX >= 20@ then 16@ -= Dif_LimitMinX 0087: 1@ = 16@ end 3@ *= Z_Mult //Z angle 0087: 20@ = 17@ 0063: 20@ -= 3@ if 20@ >= Dif_Limit then 17@ -= Dif_Limit 0087: 3@ = 17@ end 0087: 20@ = 17@ 0063: 20@ -= 3@ if Dif_LimitMin >= 20@ then 17@ -= Dif_LimitMin 0087: 3@ = 17@ end 02F7: 8@ = cosine 3@ // (float) 006B: 4@ *= 8@ 02F6: 8@ = sine 3@ // (float) 006B: 7@ *= 8@ 02F6: 8@ = sine 1@ 8@ += 1.0 0087: 9@ = 6@ 006B: 9@ *= 8@ 02E3: 10@ = car 0@ speed 10@ *= 4.0 10@ -= 100.0 if 10@ < 0.0 then 10@ = 0.0 else if 10@ > 120.0 then 10@ = 120.0 end end 10@ /= 5.0 10@ += 70.0 0087: 20@ = 11@ 0063: 20@ -= 10@ if 20@ >= Dif_LimitZoom then 0087: 20@ = 11@ 20@ -= Dif_LimitZoom 0087: 10@ = 20@ end 0087: 20@ = 11@ 0063: 20@ -= 10@ if 20@ <= Dif_LimitZoomMin then 0087: 20@ = 11@ 20@ -= Dif_LimitZoomMin 0087: 10@ = 20@ end 0679: put_camera_on_vehicle 0@ offset 7@ 4@ 9@ rotation 0.0 0.0 13@ 0.0 2 0922: set_camera_zoom_in_factor 11@ out_factor 10@ timelimit 100 mode 1 0087: 11@ = 10@ end jump @CARCAM_SET_9 :CARCAM_SET_13 wait 0 Object.Destroy(21@) Model.Destroy(#WHEEL_OR1) 0AB3: var 0 = 0 jump @CARCAM_SET_2
Кому интересно, "дубовый вариант":
// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007 {$VERSION 3.1.0027} {$CLEO .cs} //-------------MAIN--------------- thread "CARCAM" 4@ = -5.7 5@ = 7.0 15@ = 0 19@ = 0 6@ = 1.3 7@ = 0.0 11@ = 70.0 12@ = -1 Model.Load(#WHEEL_OR1) 038B: load_requested_models :CARCAM_7 wait 0 if Player.Defined($PLAYER_CHAR) jf @CARCAM_7 if Actor.Driving($PLAYER_ACTOR) jf @CARCAM_7 if and 19@ == 1 Model.Available(#WHEEL_OR1) then wait 125 jump @CARCAM_9 end if and 0AB0: key_pressed 67 0AB0: key_pressed 78 jf @CARCAM_7 if Model.Available(#WHEEL_OR1) jf @CARCAM_7 wait 125 :CARCAM_9 wait 0 if not Model.Available(#WHEEL_OR1) then Model.Load(#WHEEL_OR1) while not Model.Available(#WHEEL_OR1) wait 0 end end 03C0: 0@ = actor $PLAYER_ACTOR car 0407: store_coords_to 1@ 2@ 3@ from_car 0@ with_offset 0.0 3.0 0.0 0441: 28@ = car 0@ model if or 19@ == 0 803B: not 28@ == 12@ then 07E4: get_model 28@ dimensions_cornerA_to 22@ 23@ 24@ dimensions_cornerB_to 25@ 26@ 27@ 0087: 4@ = 23@ 0087: 29@ = 4@ 4@ *= 2.0 0087: 6@ = 27@ 6@ *= 1.67 0087: 30@ = 29@ 30@ *= 0.05 29@ *= 0.2 005B: 4@ += 29@ 005B: 6@ += 30@ if 4@ > -4.5 then 4@ = -4.5 end if 6@ < 1.5 then 6@ = 1.5 end end 0085: 12@ = 28@ 20@ = Actor.Angle($PLAYER_ACTOR) 21@ = Object.Create(#WHEEL_OR1, 1@, 2@, 3@) 0750: set_object 21@ visibility 0 0681: attach_object 21@ to_car 0@ with_offset 0.0 0.0 4.0 rotation 0.0 0.0 0.0 :CARCAM_14 wait 0 19@ = 1 03C0: 0@ = actor $PLAYER_ACTOR car if Actor.InCar($PLAYER_ACTOR, 0@) jf @CARCAM_42 if 0500: player $PLAYER_CHAR skin == "EMPTY" on_bodypart 1 then 19@ = 0 jump @CARCAM_7 end 0407: store_coords_to 1@ 2@ 3@ from_car 0@ with_offset 0.0 3.0 0.0 02E3: 10@ = car 0@ speed 10@ -= 15.0 if 10@ > 0.0 then if 10@ > 25.0 then 10@ = 25.0 end 10@ /= 1.5 else 10@ = 0.0 end 10@ += 70.0 //0922: set_camera_zoom_in_factor 11@ out_factor 10@ timelimit 333 mode 1 //0460: set_camera_transverse_delay 20@ time 60 0087: 11@ = 10@ 0679: put_camera_on_vehicle 0@ offset {7@} 0.0 4@ 6@ rotation {8@} 0.0 5@ 1.0 0.0 2 :CARCAM_25 wait 0 03C0: 0@ = actor $PLAYER_ACTOR car if Actor.InCar($PLAYER_ACTOR, 0@) jf @CARCAM_42 if or 8AB0: not key_pressed 67 8AB0: not key_pressed 78 jf @CARCAM_40 :CARCAM_29 wait 0 if 0AB0: key_pressed 109 jf @CARCAM_34 if 15@ == 0 then 4@ -= 0.1 else 4@ += 0.1 end jump @CARCAM_14 :CARCAM_34 wait 0 if 0AB0: key_pressed 107 jf @CARCAM_35 if 15@ == 0 then 4@ += 0.1 else 4@ -= 0.1 end jump @CARCAM_14 :CARCAM_35 wait 0 if 0AB0: key_pressed 101 jf @CARCAM_36 0441: 28@ = car 0@ model 07E4: get_model 28@ dimensions_cornerA_to 22@ 23@ 24@ dimensions_cornerB_to 25@ 26@ 27@ 0087: 4@ = 23@ 0087: 29@ = 4@ 4@ *= 2.0 0087: 6@ = 27@ 6@ *= 1.67 0087: 30@ = 29@ 30@ *= 0.05 29@ *= 0.2 005B: 4@ += 29@ 005B: 6@ += 30@ if 4@ > -4.5 then 4@ = -4.5 end if 6@ < 1.5 then 6@ = 1.5 end jump @CARCAM_14 :CARCAM_36 wait 0 if and 00E1: player 0 pressed_key 5 00E1: player 0 pressed_key 7 15@ == 0 jf @CARCAM_37 if and 4@ < 0.0 5@ > 0.0 then 4@ *= -1.0 5@ *= -1.0 15@ = 1 end :CARCAM_37 wait 0 if and 80E1: not player 0 pressed_key 5 80E1: not player 0 pressed_key 7 15@ == 1 jf @CARCAM_38 4@ *= -1.0 5@ *= -1.0 15@ = 0 jump @CARCAM_14 :CARCAM_38 wait 0 if or 00E1: player 0 pressed_key 5 00E1: player 0 pressed_key 7 jf @CARCAM_39 if or 80E1: not player 0 pressed_key 5 80E1: not player 0 pressed_key 7 jf @CARCAM_39 if and not Actor.DrivingPlane($PLAYER_ACTOR) 84A9: not actor $PLAYER_ACTOR driving_heli jf @CARCAM_39 Camera.Restore_WithJumpCut jump @CARCAM_48 :CARCAM_39 wait 0 if or 0AB0: key_pressed 71 0AB0: key_pressed 2 jf @CARCAM_61 Camera.Restore_WithJumpCut gosub @CARCAM_54 jump @CARCAM_14 :CARCAM_40 wait 0 19@ = 0 Camera.Restore_WithJumpCut Object.Destroy(21@) wait 200 jump @CARCAM_7 :CARCAM_42 wait 0 Camera.Restore_WithJumpCut Object.Destroy(21@) wait 200 jump @CARCAM_7 :CARCAM_48 wait 0 if and 80E1: not player 0 pressed_key 5 80E1: not player 0 pressed_key 7 jf @CARCAM_51 jump @CARCAM_14 :CARCAM_51 wait 0 if and 00E1: player 0 pressed_key 5 00E1: player 0 pressed_key 7 jf @CARCAM_37 jump @CARCAM_36 :CARCAM_54 wait 0 if and 8AB0: not key_pressed 71 8AB0: not key_pressed 2 jf @CARCAM_54 return :CARCAM_61 wait 0 if 0AB0: key_pressed 105 jf @CARCAM_64 6@ += 0.2 jump @CARCAM_14 :CARCAM_64 wait 0 if 0AB0: key_pressed 99 jf @CARCAM_69 6@ -= 0.2 jump @CARCAM_14 :CARCAM_69 wait 0 05A6: get_object 21@ rotation_velocity_about_an_axis_X 1@ axis_Y 2@ axis_Z 3@ through_center_of_body 0087: 8@ = 3@ 3@ *= -1.0 0087: 7@ = 3@ jump @CARCAM_14
Last edited by BullDogHEMI427 (27-12-2011 11:21)
Also known as HemiG
It's cool to Hate. It's cool to be a bloody guitarist.
Offline
судя по описанию записывающий в переменные края машины (по коллизии, всмысле).
07E4: get_model 1@ dimensions_cornerA_to 2@ 3@ 4@ dimensions_cornerB_to 5@ 6@ 7@
Записывает габаритные размеры модели (не обязательно транспорт) в переменные. 2@, 3@, 4@ - левый задний нижний угол модели; 5@, 6@, 7@ - правый передний верхний угол.
Last edited by Den_spb (01-09-2010 19:18)
Offline
Спасибо. То-то я его не мог найти ни на car, ни на vehicle=).
После пар сделаю автокалибровку по размеру машины.
Обновил первый пост. Ещё раз прошу помощи с тем, как заставить камеру плавно менять оффсет относительно машины.
Also known as HemiG
It's cool to Hate. It's cool to be a bloody guitarist.
Offline
Отличный скрипт, с "дубовой" камерой вполне можно ездить. Только на моем широкоформатном мониторе по-умолчанию она слишком близко и не видна нижняя часть машины.
Если проблемы будут решены, то получим новую, приятную для игры камеру .
По-моему, легче найти параметры камеры в коде игры, уменьшить инерцию и увеличить скорость камеры.
Offline
После стольких месяцев забития на моддинг меня втянуло обратно
Решение с плавностью нашёл - разбил код на два потока, первый - включает камеру, считывает нажатия и т.п., после чего через глобальные клео-переменные передаёт их во второй, который просчитывает доп. смещения и ставит камеру. Сейчас довожу до ума их работу, не сегодня - завтра выложу код.
Also known as HemiG
It's cool to Hate. It's cool to be a bloody guitarist.
Offline
А не мог бы файл прикрепить , у меня инет только на теле , не переписывать же мне все по одному символу
Offline
А не мог бы файл прикрепить , у меня инет только на теле , не переписывать же мне все по одному символу
Всё доставим
Also known as HemiG
It's cool to Hate. It's cool to be a bloody guitarist.
Offline
Решение с плавностью нашёл - разбил код на два потока, первый - включает камеру, считывает нажатия и т.п., после чего через глобальные клео-переменные передаёт их во второй, который просчитывает доп. смещения и ставит камеру. Сейчас довожу до ума их работу, не сегодня - завтра выложу код.
Лучше конечно, один поток, чем два. А чтобы не было проблем с быстродействием, необходимо снизить число wait-ов к минимуму (желательно до 1). После каждой метки wait-ы ставить не надо - они необходимы только в циклах.
Offline
Лучше конечно, один поток, чем два. Необходимо снизить число wait-ов к минимуму (желательно до 1). После каждой метки wait-ы ставить не надо
Спасибо, потом может верну в один поток.
Обновил первый пост. Плавности камере не хватает, задний вид срабатывает с задержкой, но и так хорошо. Позже могу добавить ещё разных функций.
Also known as HemiG
It's cool to Hate. It's cool to be a bloody guitarist.
Offline
Извиняюсь за даблпост, между постами прошло восемь месяцев
-----
Повыбрасывал вэйты откуда можно, добвил пару фич - всё в первом посте.
Also known as HemiG
It's cool to Hate. It's cool to be a bloody guitarist.
Offline
Pages: 1