Модификация игры - стреляющий танк

Давно хотел сделать чтобы танк в этой игре стрелял.

И вот наконец разогнал лень и сделал.

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

Сектор обстрела от 12 до 60м 20 градусов.

 

Основной код в файле system_events.py

Код в def on_finally_initialized():

     # Create active land region from exit regions
        _,y1,x1,_ = system.get_region('REGION_EXIT_WEST')
        x2,_,_,y2 = system.get_region('REGION_EXIT_OST')
        system.add_region('REGION_LAND',x1,y1,x2,y2)

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

 

Код в def on_region_click( regionname, x, y ):

     if regionname == "REGION_LAND" and system.get_selected_pcs() == [] and system.camera_in_follow_mode():
                _x=x/2
                _y=y/2
                for v in system.get_vehicles():
                        if not objects.is_destroyed(v) and objects.get_attribute(v, "typeid") == "SET_WHEELTANK" and vehicle.get_char_from_seat(v, 0) in system.get_pcs():
                                dist = objects.get_distance_to_position(v, _x, _y)
                                if dist < 80 and dist > 12 and abs(abs(objects.get_direction(v)+180)-objects.get_direction_to_position(v,_x,_y)) < 10:
                                        objects.set_attribute(v,"ammo","SET_AMMOPACK_M79_M203")
                                        radius=amount_of_piercing=value_structure=value_organic=0.0
                                        # TODO: Reduse ammo in inventory
                                        if objects.has_attribute(v, "ammo"):
                                                system.start_effect_object(v, "Dummy_muzzleflash", global_defines.fx_explosion)
                                                sounds.play_3d_sound_object("shot_m_79", v, None, None)
                                                system.start_effect(_x,_y,0.2,_x,_y,0.6,global_defines.fx_explosion_big)
                                                sounds.play_3d_sound("c4_small_explo", _x, _y, 0.2)
                                                ammo = objects.get_attribute(v, "ammo")
                                                if objects.has_attribute(ammo, "schaden_organisch_max") and objects.has_attribute(ammo, "schaden_organisch_min"):
                                                        value_organic = random.randint(objects.get_attribute(ammo, "schaden_organisch_min"), objects.get_attribute(ammo, "schaden_organisch_max"))
                                                if objects.has_attribute(ammo, "schaden_struktur_max") and objects.has_attribute(ammo, "schaden_struktur_min"):
                                                        value_structure = random.randint(objects.get_attribute(ammo, "schaden_struktur_min"), objects.get_attribute(ammo, "schaden_struktur_max"))
                                                if objects.has_attribute(ammo, "durchschlag"):
                                                        amount_of_piercing = objects.get_attribute(ammo, "durchschlag")
                                                if objects.has_attribute(ammo, "wirkungsbereich"):
                                                        radius = objects.get_attribute(ammo, "wirkungsbereich")
                                                system.hit_objects_in_ambit( vehicle.get_char_from_seat(v, 0), _x, _y, 0.5, radius, amount_of_piercing, 0, value_structure, value_organic )
                                                print "Tank Fire on (%.3f, %.3f )"%( _x, _y )
                                else:
                                        system.add_text("Цель вне сектора обстрела.")

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

 

И конечно не забываем заменить весь блок import на вот это(не помню что добавлял)

import global_defines
from global_defines import Lambda
from global_defines import data
import character
import vehicle
import globaltext
import system
import music
import sounds
import random
import math
import string
import comments
import timerepr
import object_events
import random
import objects
import zone_ambients
import spawnanimals
import helpfile

 

 

NeiroN 28.08.2017 | Комментарии (17)













Разработка Sergey A.Zhukov 2007-2012