add tower

This commit is contained in:
l0k1 2017-03-24 01:51:45 -07:00
parent cb5631049c
commit d3cc6d7335
13 changed files with 1465 additions and 0 deletions

View File

@ -0,0 +1,330 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2015 onox
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<PropertyList>
<name>control-panel</name>
<layout>vbox</layout>
<width>250</width>
<resizable>false</resizable>
<group>
<layout>hbox</layout>
<empty><stretch>true</stretch></empty>
<text>
<label>Control Panel</label>
</text>
<empty><stretch>true</stretch></empty>
<button>
<legend/>
<keynum>27</keynum>
<pref-width>16</pref-width>
<pref-height>16</pref-height>
<border>2</border>
<binding>
<command>dialog-close</command>
</binding>
</button>
</group>
<hrule/>
<group>
<layout>vbox</layout>
<padding>6</padding>
<text>
<label>Elevators</label>
</text>
<group>
<layout>table</layout>
<!-- 3rd -->
<text>
<row>0</row>
<col>1</col>
<label>3rd</label>
</text>
<!-- 3rd -->
<button>
<row>1</row>
<col>1</col>
<visible>
<property>/carrier/elevators/elevator[2]/at-flight-deck</property>
</visible>
<legend>FLIGHT DECK</legend>
<pref-width>100</pref-width>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>property-toggle</command>
<property>/carrier/elevators/elevator[2]/at-flight-deck</property>
</binding>
</button>
<button>
<row>1</row>
<col>1</col>
<visible>
<not>
<property>/carrier/elevators/elevator[2]/at-flight-deck</property>
</not>
</visible>
<legend>HANGAR DECK</legend>
<pref-width>100</pref-width>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>property-toggle</command>
<property>/carrier/elevators/elevator[2]/at-flight-deck</property>
</binding>
</button>
<!-- 2nd -->
<text>
<row>2</row>
<col>1</col>
<label>2nd</label>
</text>
<!-- 2nd -->
<button>
<row>3</row>
<col>1</col>
<visible>
<property>/carrier/elevators/elevator[1]/at-flight-deck</property>
</visible>
<legend>FLIGHT DECK</legend>
<pref-width>100</pref-width>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>property-toggle</command>
<property>/carrier/elevators/elevator[1]/at-flight-deck</property>
</binding>
</button>
<button>
<row>3</row>
<col>1</col>
<visible>
<not>
<property>/carrier/elevators/elevator[1]/at-flight-deck</property>
</not>
</visible>
<legend>HANGAR DECK</legend>
<pref-width>100</pref-width>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>property-toggle</command>
<property>/carrier/elevators/elevator[1]/at-flight-deck</property>
</binding>
</button>
<!-- 4th -->
<text>
<row>4</row>
<col>0</col>
<label>4th</label>
</text>
<!-- 1st -->
<text>
<row>4</row>
<col>1</col>
<label>1st</label>
</text>
<!-- 4th -->
<button>
<row>5</row>
<col>0</col>
<visible>
<property>/carrier/elevators/elevator[3]/at-flight-deck</property>
</visible>
<legend>FLIGHT DECK</legend>
<pref-width>100</pref-width>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>property-toggle</command>
<property>/carrier/elevators/elevator[3]/at-flight-deck</property>
</binding>
</button>
<button>
<row>5</row>
<col>0</col>
<visible>
<not>
<property>/carrier/elevators/elevator[3]/at-flight-deck</property>
</not>
</visible>
<legend>HANGAR DECK</legend>
<pref-width>100</pref-width>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>property-toggle</command>
<property>/carrier/elevators/elevator[3]/at-flight-deck</property>
</binding>
</button>
<!-- 1st -->
<button>
<row>5</row>
<col>1</col>
<visible>
<property>/carrier/elevators/elevator[0]/at-flight-deck</property>
</visible>
<legend>FLIGHT DECK</legend>
<pref-width>100</pref-width>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>property-toggle</command>
<property>/carrier/elevators/elevator[0]/at-flight-deck</property>
</binding>
</button>
<button>
<row>5</row>
<col>1</col>
<visible>
<not>
<property>/carrier/elevators/elevator[0]/at-flight-deck</property>
</not>
</visible>
<legend>HANGAR DECK</legend>
<pref-width>100</pref-width>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>property-toggle</command>
<property>/carrier/elevators/elevator[0]/at-flight-deck</property>
</binding>
</button>
</group>
</group>
<hrule/>
<group>
<layout>vbox</layout>
<padding>6</padding>
<text>
<label>Flight Deck</label>
</text>
<group>
<layout>vbox</layout>
<checkbox>
<halign>left</halign>
<label>Runway lighting</label>
<property>/controls/lighting/deck-lights</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>property-toggle</command>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Antennas</label>
<property>/carrier/antennas/enabled</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>property-toggle</command>
</binding>
</checkbox>
</group>
</group>
<hrule/>
<group>
<layout>vbox</layout>
<padding>6</padding>
<text>
<label>Debug</label>
</text>
<group>
<layout>vbox</layout>
<checkbox>
<halign>left</halign>
<label>Enable ship movememnt</label>
<property>/carrier/fdm/settings/movement</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>property-toggle</command>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Show Phalanx aim points</label>
<property>/carrier/phalanx/settings/show-debug-aim</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>property-toggle</command>
</binding>
</checkbox>
</group>
</group>
<hrule/>
<group>
<layout>hbox</layout>
<default-padding>6</default-padding>
<empty><stretch>true</stretch></empty>
<button>
<legend>Close</legend>
<default>true</default>
<binding>
<command>dialog-close</command>
</binding>
</button>
</group>
</PropertyList>

39
tower/Dialogs/menu.xml Normal file
View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2015 onox
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<PropertyList>
<default>
<menu n="10">
<label>CVN-70</label>
<enabled type="bool">true</enabled>
<item>
<label>Control Panel</label>
<binding>
<command>dialog-show</command>
<dialog-name>control-panel</dialog-name>
</binding>
</item>
</menu>
</default>
</PropertyList>

BIN
tower/Models/smoke.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

84
tower/Models/smoke.xml Normal file
View File

@ -0,0 +1,84 @@
<PropertyList>
<particlesystem>
<name>smoke</name>
<texture>smoke.png</texture>
<condition>
<equals>
<property>sim/multiplay/generic/int[0]</property>
<value>1</value>
</equals>
</condition>
<emissive>false</emissive>
<lighting>false</lighting>
<align>billboard</align> <!-- billboard / fixed -->
<attach>world</attach> <!-- world / local-->
<placer>
<type>point</type>
</placer>
<shooter>
<theta-min-deg>20</theta-min-deg>
<theta-max-deg>35</theta-max-deg>
<phi-min-deg>-15</phi-min-deg>
<phi-max-deg> 15</phi-max-deg>
<speed-mps>
<value>0</value>
<spread>0</spread>
</speed-mps>
<rotation-speed>
<x-min-deg-sec>0</x-min-deg-sec>
<y-min-deg-sec>0</y-min-deg-sec>
<z-min-deg-sec>-180</z-min-deg-sec>
<x-max-deg-sec>0</x-max-deg-sec>
<y-max-deg-sec>0</y-max-deg-sec>
<z-max-deg-sec>180</z-max-deg-sec>
</rotation-speed>
</shooter>
<counter>
<particles-per-sec>
<value>1</value>
<spread>20</spread>
</particles-per-sec>
</counter>
<particle>
<start>
<color>
<red><value>0.0</value></red>
<green><value>0.0</value></green>
<blue><value>0.0</value></blue>
<alpha><value>1</value></alpha>
</color>
<size>
<value>20.0</value>
</size>
</start>
<end>
<color>
<red><value>0.0</value></red>
<green><value>0.0</value></green>
<blue><value>0.0</value></blue>
<alpha><value>0.0</value></alpha>
</color>
<size>
<value>60.0</value>
</size>
</end>
<life-sec>
<value>60</value>
</life-sec>
<mass-kg>0.0075</mass-kg>
<radius-m>0.40</radius-m>
</particle>
<program>
<fluid>air</fluid>
<gravity>true</gravity>
<wind>true</wind>
</program>
</particlesystem>
</PropertyList>

17
tower/Models/tower.xml Normal file
View File

@ -0,0 +1,17 @@
<?xml version="1.0"?>
<PropertyList>
<path>towerSnowy1.ac</path>
<model>
<path>Aircraft/tower/Models/smoke.xml</path>
<offsets>
<x-m>1.2</x-m>
<y-m>0.00</y-m>
<z-m>-0.68</z-m>
<pitch-deg>0</pitch-deg>
</offsets>
</model>
</PropertyList>

563
tower/Models/towerSnowy1.ac Normal file
View File

@ -0,0 +1,563 @@
AC3Db
MATERIAL "Color_M07" rgb 0.227 0.227 0.227 amb 1.000 1.000 1.000 emis 0.000 0.000 0.000 spec 0.500 0.500 0.500 shi 12 trans 0.000
MATERIAL "Color_M03" rgb 0.667 0.667 0.667 amb 1.000 1.000 1.000 emis 0.000 0.000 0.000 spec 0.500 0.500 0.500 shi 12 trans 0.000
MATERIAL "Translucent_Glass_Blue" rgb 0.392 0.584 0.929 amb 1.000 1.000 1.000 emis 0.000 0.000 0.000 spec 0.500 0.500 0.500 shi 12 trans 0.502
OBJECT world
name "Blender_exporter_v2.17__towerSnowy1.ac"
kids 5
OBJECT poly
name "door"
data 4
ID11
crease 40.0
numvert 4
2 2 0
1 0 0
2 0 0
1 2 0
numsurf 2
SURF 0X10
mat 0
refs 3
0 0 0
1 0 0
2 0 0
SURF 0X10
mat 0
refs 3
1 0 0
0 0 0
3 0 0
kids 0
OBJECT poly
name "floor"
data 4
ID33
crease 40.0
numvert 32
3.75 13 -7.25
4 12 -3
3.75 13 -2.75
4 12 -7
4 12 -7
3.75 13 -7.25
4 12 -3
3.75 13 -2.75
8.25 13 -2.75
4 12 -3
8 12 -3
3.75 13 -2.75
3.75 13 -2.75
8.25 13 -2.75
4 12 -3
8 12 -3
3.75 13 -7.25
8 12 -7
4 12 -7
8.25 13 -7.25
8.25 13 -7.25
3.75 13 -7.25
8 12 -7
4 12 -7
8 12 -3
8.25 13 -7.25
8.25 13 -2.75
8 12 -7
8 12 -7
8 12 -3
8.25 13 -7.25
8.25 13 -2.75
numsurf 16
SURF 0X10
mat 1
refs 3
0 0 0
1 0 0
2 0 0
SURF 0X10
mat 1
refs 3
1 0 0
0 0 0
3 0 0
SURF 0X10
mat 1
refs 3
4 0 0
5 0 0
6 0 0
SURF 0X10
mat 1
refs 3
7 0 0
6 0 0
5 0 0
SURF 0X10
mat 1
refs 3
8 0 0
9 0 0
10 0 0
SURF 0X10
mat 1
refs 3
9 0 0
8 0 0
11 0 0
SURF 0X10
mat 1
refs 3
12 0 0
13 0 0
14 0 0
SURF 0X10
mat 1
refs 3
15 0 0
14 0 0
13 0 0
SURF 0X10
mat 1
refs 3
16 0 0
17 0 0
18 0 0
SURF 0X10
mat 1
refs 3
17 0 0
16 0 0
19 0 0
SURF 0X10
mat 1
refs 3
20 0 0
21 0 0
22 0 0
SURF 0X10
mat 1
refs 3
23 0 0
22 0 0
21 0 0
SURF 0X10
mat 1
refs 3
24 0 0
25 0 0
26 0 0
SURF 0X10
mat 1
refs 3
25 0 0
24 0 0
27 0 0
SURF 0X10
mat 1
refs 3
28 0 0
29 0 0
30 0 0
SURF 0X10
mat 1
refs 3
31 0 0
30 0 0
29 0 0
kids 0
OBJECT poly
name "glass"
data 4
ID19
crease 40.0
numvert 32
3 16 -8
8.25 13 -7.25
3.75 13 -7.25
9 16 -8
9 16 -8
3 16 -8
8.25 13 -7.25
3.75 13 -7.25
8.25 13 -2.75
9 16 -8
9 16 -2
8.25 13 -7.25
8.25 13 -7.25
8.25 13 -2.75
9 16 -8
9 16 -2
3 16 -8
3.75 13 -2.75
3 16 -2
3.75 13 -7.25
3.75 13 -7.25
3 16 -8
3.75 13 -2.75
3 16 -2
9 16 -2
3.75 13 -2.75
8.25 13 -2.75
3 16 -2
3 16 -2
9 16 -2
3.75 13 -2.75
8.25 13 -2.75
numsurf 16
SURF 0X10
mat 2
refs 3
0 0 0
1 0 0
2 0 0
SURF 0X10
mat 2
refs 3
1 0 0
0 0 0
3 0 0
SURF 0X10
mat 2
refs 3
4 0 0
5 0 0
6 0 0
SURF 0X10
mat 2
refs 3
7 0 0
6 0 0
5 0 0
SURF 0X10
mat 2
refs 3
8 0 0
9 0 0
10 0 0
SURF 0X10
mat 2
refs 3
9 0 0
8 0 0
11 0 0
SURF 0X10
mat 2
refs 3
12 0 0
13 0 0
14 0 0
SURF 0X10
mat 2
refs 3
15 0 0
14 0 0
13 0 0
SURF 0X10
mat 2
refs 3
16 0 0
17 0 0
18 0 0
SURF 0X10
mat 2
refs 3
17 0 0
16 0 0
19 0 0
SURF 0X10
mat 2
refs 3
20 0 0
21 0 0
22 0 0
SURF 0X10
mat 2
refs 3
23 0 0
22 0 0
21 0 0
SURF 0X10
mat 2
refs 3
24 0 0
25 0 0
26 0 0
SURF 0X10
mat 2
refs 3
25 0 0
24 0 0
27 0 0
SURF 0X10
mat 2
refs 3
28 0 0
29 0 0
30 0 0
SURF 0X10
mat 2
refs 3
31 0 0
30 0 0
29 0 0
kids 0
OBJECT poly
name "roof"
data 4
ID27
crease 40.0
numvert 4
9 16 -2
3 16 -8
3 16 -2
9 16 -8
numsurf 2
SURF 0X10
mat 1
refs 3
0 0 0
1 0 0
2 0 0
SURF 0X10
mat 1
refs 3
1 0 0
0 0 0
3 0 0
kids 0
OBJECT poly
name "structure"
data 3
ID3
crease 40.0
numvert 48
8 0 -7
0 0 0
0 0 -7
1 0 0
2 0 0
8 0 0
8 3 0
2 0 0
8 0 0
2 2 0
1 2 0
0 0 0
1 0 0
0 3 0
0 3 -7
0 0 0
0 3 0
0 0 -7
0 3 -7
8 0 -7
0 0 -7
4 3 -7
8 12 -7
4 12 -7
8 0 -7
8 3 0
8 0 0
8 3 -3
8 12 -3
8 12 -7
0 3 0
4 3 -3
0 3 -7
8 3 0
8 3 -3
4 3 -7
4 12 -7
4 3 -3
4 12 -3
4 3 -7
8 12 -3
4 12 -7
4 12 -3
8 12 -7
8 12 -3
4 3 -3
8 3 -3
4 12 -3
numsurf 30
SURF 0X10
mat 1
refs 3
0 0 0
1 0 0
2 0 0
SURF 0X10
mat 1
refs 3
1 0 0
0 0 0
3 0 0
SURF 0X10
mat 1
refs 3
3 0 0
0 0 0
4 0 0
SURF 0X10
mat 1
refs 3
4 0 0
0 0 0
5 0 0
SURF 0X10
mat 1
refs 3
6 0 0
7 0 0
8 0 0
SURF 0X10
mat 1
refs 3
7 0 0
6 0 0
9 0 0
SURF 0X10
mat 1
refs 3
9 0 0
6 0 0
10 0 0
SURF 0X10
mat 1
refs 3
10 0 0
11 0 0
12 0 0
SURF 0X10
mat 1
refs 3
11 0 0
10 0 0
13 0 0
SURF 0X10
mat 1
refs 3
13 0 0
10 0 0
6 0 0
SURF 0X10
mat 1
refs 3
14 0 0
15 0 0
16 0 0
SURF 0X10
mat 1
refs 3
15 0 0
14 0 0
17 0 0
SURF 0X10
mat 1
refs 3
18 0 0
19 0 0
20 0 0
SURF 0X10
mat 1
refs 3
19 0 0
18 0 0
21 0 0
SURF 0X10
mat 1
refs 3
19 0 0
21 0 0
22 0 0
SURF 0X10
mat 1
refs 3
22 0 0
21 0 0
23 0 0
SURF 0X10
mat 1
refs 3
24 0 0
25 0 0
26 0 0
SURF 0X10
mat 1
refs 3
25 0 0
24 0 0
27 0 0
SURF 0X10
mat 1
refs 3
27 0 0
24 0 0
28 0 0
SURF 0X10
mat 1
refs 3
28 0 0
24 0 0
29 0 0
SURF 0X10
mat 1
refs 3
30 0 0
31 0 0
32 0 0
SURF 0X10
mat 1
refs 3
31 0 0
30 0 0
33 0 0
SURF 0X10
mat 1
refs 3
31 0 0
33 0 0
34 0 0
SURF 0X10
mat 1
refs 3
35 0 0
32 0 0
31 0 0
SURF 0X10
mat 1
refs 3
36 0 0
37 0 0
38 0 0
SURF 0X10
mat 1
refs 3
37 0 0
36 0 0
39 0 0
SURF 0X10
mat 1
refs 3
40 0 0
41 0 0
42 0 0
SURF 0X10
mat 1
refs 3
41 0 0
40 0 0
43 0 0
SURF 0X10
mat 1
refs 3
44 0 0
45 0 0
46 0 0
SURF 0X10
mat 1
refs 3
45 0 0
44 0 0
47 0 0
kids 0

126
tower/Nasal/damage.nas Normal file
View File

@ -0,0 +1,126 @@
var clamp = func(v, min, max) { v < min ? min : v > max ? max : v }
var TRUE = 1;
var FALSE = 0;
#
# Install: Include this code into an aircraft to make it damagable. (remember to add it to the -set file)
#
# Author: Nikolai V. Chr. (with some improvement by Onox and Pinto)
#
#
var cannon_types = {
" M70 rocket hit": 0.25, #135mm
" M55 cannon shell hit": 0.10, # 30mm
" KCA cannon shell hit": 0.10, # 30mm
" Gun Splash On ": 0.10, # 30mm
" M61A1 shell hit": 0.05, # 20mm
" GAU-8/A hit": 0.10, # 30mm
" BK27 cannon hit": 0.07, # 27mm
" GSh-30 hit": 0.10, # 30mm
" 7.62 hit": 0.30, #UH-1
" 50 BMG hit": 0.20, #p-47
};
var players = {
"pinto": 1,
"OPFOR77": 2,
"Leto": 1,
"swamp": 2,
};
var incoming_listener = func {
var history = getprop("/sim/multiplay/chat-history");
var hist_vector = split("\n", history);
if (size(hist_vector) > 0) {
var last = hist_vector[size(hist_vector)-1];
var last_vector = split(":", last);
var author = last_vector[0];
var callsign = getprop("sim/multiplay/callsign");
if (size(last_vector) > 1 and author != callsign) {
# not myself
#print("not me");
if (1==1) { # mirage: getprop("/controls/armament/mp-messaging")
# latest version of failure manager and taking damage enabled
#print("damage enabled");
var last1 = split(" ", last_vector[1]);
if (cannon_types[last_vector[1]] != nil) {
# cannon hitting someone
print("cannon");
if (size(last_vector) > 2 and last_vector[2] == " "~callsign) {
print("cannon hit us");
process_hit(author);
}
}
}
}
}
}
var last_update_time = "/aa_tower/last-update-time";
var owning_team = "/aa_tower/owning_team";
var score_team_1 = "/aa_tower/score-team-1";
var score_team_2 = "/aa_tower/score-team-2";
setprop(last_update_time, -1);
setprop(owning_team, 0);
setprop(score_team_1, 0);
setprop(score_team_2, 0);
var process_hit = func (perp) {
print("processing hit by: " ~ perp);
if ( players[perp] != nil ) {
if ( players[perp] != getprop(owning_team) ) {
setprop(last_update_time,systime());
setprop(owning_team, players[perp]);
setprop("/aa_tower/score-team-" ~ players[perp], getprop("/aa_tower/score-team-" ~ players[perp]) + 1);
setprop("/sim/multiplay/chat","Ownership transferred to team: " ~ players[perp]);
write_xml();
}
}
}
var update = func () {
var o_t = getprop(owning_team);
if(o_t > 0) {
if(systime() > getprop(last_update_time) + 300) {
print("Adding point to team: " ~ o_t);
setprop("/sim/multiplay/chat","Adding point to team: " ~ o_t);
setprop("/aa_tower/score-team-" ~ o_t, getprop("/aa_tower/score-team-" ~ o_t) + 1);
setprop(last_update_time, systime());
write_xml();
}
}
settimer(func(){update();},10);
}
update();
var twr_base = "/aa_tower/";
var filename_base = getprop("/sim/fg-home") ~ "/Export/tower-";
var write_xml = func() {
io.write_properties( path: filename_base ~ rand() ~ ".xml", prop: twr_base );
}
var callsign_struct = {};
var getCallsign = func (callsign) {
var node = callsign_struct[callsign];
return node;
}
var processCallsigns = func () {
callsign_struct = {};
var players = props.globals.getNode("ai/models").getChildren();
foreach (var player; players) {
if(player.getChild("valid") != nil and player.getChild("valid").getValue() == TRUE and player.getChild("callsign") != nil and player.getChild("callsign").getValue() != "" and player.getChild("callsign").getValue() != nil) {
var callsign = player.getChild("callsign").getValue();
callsign_struct[callsign] = player;
}
}
settimer(processCallsigns, 1.5);
}
processCallsigns();
setlistener("/sim/multiplay/chat-history", incoming_listener, 0, 0);

44
tower/Nasal/fdm.nas Normal file
View File

@ -0,0 +1,44 @@
# Copyright (C) 2015 onox
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#io.include("Aircraft/ExpansionPack/Nasal/init.nas");
#with("updateloop");
# Number of iterations per second
var frequency = 60.0;
# Change in heading per second at full rudder deflection
var heading_ps = 0.5;
time_last = 0;
sim_speed = 1;
setprop("/carrier/pitch-deg",0);
setprop("/carrier/pitch-offset",0);
setprop("/carrier/roll-deg",0);
setprop("/carrier/roll-offset",0);
setprop("/carrier/sunk",0);
var PositionUpdater = func () {
# does a building need an FDM?
# nawwwwwww
settimer( PositionUpdater, 1/frequency );
};
PositionUpdater();

22
tower/Sounds/sound.xml Normal file
View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2015 onox
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<PropertyList>
</PropertyList>

46
tower/Systems/fbw.xml Normal file
View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2015 onox
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<PropertyList>
<filter>
<name>FBW Throttle</name>
<type>gain</type>
<gain>80.0</gain>
<input>
<property>/controls/engines/engine[0]/throttle</property>
</input>
<output>
<property>/carrier/fbw/target/groundspeed-kt</property>
</output>
</filter>
<filter>
<name>FBW Rudder</name>
<type>gain</type>
<gain>8.0</gain>
<input>
<property>/controls/flight/rudder</property>
</input>
<output>
<property>/surface-positions/rudder-pos-norm</property>
</output>
</filter>
</PropertyList>

69
tower/Systems/fdm.xml Normal file
View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2015 onox
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<PropertyList>
<!-- Simulate the groundspeed -->
<filter>
<name>FDM Groundspeed</name>
<type>noise-spike</type>
<input>
<property>/carrier/fbw/target/groundspeed-kt</property>
</input>
<output>
<property>/velocities/groundspeed-kt</property>
</output>
<!-- Reaching maximum speed takes 20 minutes -->
<max-rate-of-change>7</max-rate-of-change>
</filter>
<!-- Flags use true-heading-deg because only that property is available
in multiplayer.
-->
<filter>
<name>FDM True Heading For Flags</name>
<type>gain</type>
<input>
<property>/orientation/heading-deg</property>
</input>
<output>
<property>/orientation/true-heading-deg</property>
</output>
</filter>
<!-- ================================================================== -->
<!-- Roll -->
<!-- ================================================================== -->
<!--
<filter>
<name>FDM Rudder</name>
<type>noise-spike</type>
<input>
<property>/controls/flight/rudder</property>
</input>
<output>
<property>/surface-positions/rudder-pos-norm</property>
</output>
<max-rate-of-change>5</max-rate-of-change>
</filter>-->
</PropertyList>

BIN
tower/splash1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 823 KiB

125
tower/tower-set.xml Normal file
View File

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2015 onox
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<PropertyList>
<environment>
<in-to-wind type="bool">false</in-to-wind>
</environment>
<carrier>
<fdm>
<settings>
<!-- The maximum bank angle during full rudder deflection -->
<bank-limit type="double">15.0</bank-limit>
<!-- Frequency and overshoot of the oscillator used to
simulate heeling (roll).
-->
<heel-frequency type="double">0.5</heel-frequency>
<heel-overshoot type="double">4.0</heel-overshoot>
<!-- Frequency and overshoot of the oscillator used to
simulate trimming (pitch).
-->
<trim-frequency type="double">0.32</trim-frequency>
<trim-overshoot type="double">0.45</trim-overshoot>
<!-- The speed of the waves plus speed of the ship in knots
which generates the maximum overshoot of the trim
oscillation.
-->
<max-trim-oscillation-wave-kt type="double">30.0</max-trim-oscillation-wave-kt>
<!-- The speed of the waves in knots which generates the
maximum overshoot of the heel oscillation.
-->
<max-heel-oscillation-wave-kt type="double">20.0</max-heel-oscillation-wave-kt>
<movement type="bool">true</movement>
</settings>
</fdm>
</carrier>
<sim>
<author>pinto</author>
<description>tower</description>
<status>alpha</status>
<aircraft-version>0.1</aircraft-version>
<flight-model>null</flight-model>
<aero>KPN-D</aero>
<aircraft-operator>KPN</aircraft-operator>
<model>
<path>Aircraft/tower/Models/tower.xml</path>
<!-- Uncloak weather balloons visiting Earth -->
<always-show-in-MP type="bool">true</always-show-in-MP>
</model>
<sound>
<path>Sounds/sound.xml</path>
</sound>
<presets>
<onground>true</onground>
</presets>
<startup>
<splash-texture>Aircraft/tower/splash1.png</splash-texture>
</startup>
<current-view>
<deck-park type="bool">true</deck-park>
<z-offset-dec-step type="double">0.0</z-offset-dec-step>
<z-offset-inc-step type="double">0.0</z-offset-inc-step>
<can-change-z-offset type="bool">false</can-change-z-offset>
<z-offset-min-m type="float">100.0</z-offset-min-m>
<z-offset-max-m type="float">2000.0</z-offset-max-m>
</current-view>
<systems>
<autopilot>
<path>Systems/fbw.xml</path>
</autopilot>
<autopilot>
<path>Systems/fdm.xml</path>
</autopilot>
</systems>
<multiplay>
<generic>
<int n="0" type="int">0</int>
</generic>
</multiplay>
</sim>
<nasal>
<carrier>
<file>Aircraft/tower/Nasal/fdm.nas</file>
</carrier>
<damage>
<file>Aircraft/tower/Nasal/damage.nas</file>
</damage>
</nasal>
</PropertyList>