New upstream release 1.0.1.
Matthijs Kooijman
14 years ago
0 | /* $Id: regression.nut 19300 2010-03-02 00:38:01Z rubidium $ */ | |
0 | /* $Id: regression.nut 19653 2010-04-17 12:00:59Z rubidium $ */ | |
1 | 1 | |
2 | 2 | class Regression extends AIController { |
3 | 3 | function Start(); |
191 | 191 | print(" RandRange(2): " + AIBase.RandRange(2)); |
192 | 192 | print(" RandRange(2): " + AIBase.RandRange(2)); |
193 | 193 | print(" RandRange(2): " + AIBase.RandRange(2)); |
194 | print(" RandRange(9): " + AIBase.RandRange(9)); | |
195 | print(" RandRange(9): " + AIBase.RandRange(9)); | |
196 | print(" RandRange(9): " + AIBase.RandRange(9)); | |
194 | print(" RandRange(1000000): " + AIBase.RandRange(1000000)); // 32 bit tests | |
195 | print(" RandRange(1000000): " + AIBase.RandRange(1000000)); | |
196 | print(" RandRange(1000000): " + AIBase.RandRange(1000000)); | |
197 | 197 | print(" Chance(1, 2): " + AIBase.Chance(1, 2)); |
198 | 198 | print(" Chance(1, 2): " + AIBase.Chance(1, 2)); |
199 | 199 | print(" Chance(1, 2): " + AIBase.Chance(1, 2)); |
1026 | 1026 | for (local i = list.Begin(); list.HasNext(); i = list.Next()) { |
1027 | 1027 | print(" RailType: " + i); |
1028 | 1028 | print(" IsRailTypeAvailable(): " + AIRail.IsRailTypeAvailable(i)); |
1029 | print(" GetMaxSpeed(): " + AIRail.GetMaxSpeed(i)); | |
1029 | 1030 | } |
1030 | 1031 | } |
1031 | 1032 |
95 | 95 | RandRange(1): 0 |
96 | 96 | RandRange(2): 0 |
97 | 97 | RandRange(2): 0 |
98 | RandRange(2): 1 | |
99 | RandRange(9): 6 | |
100 | RandRange(9): 7 | |
101 | RandRange(9): 4 | |
98 | RandRange(2): 0 | |
99 | RandRange(1000000): 987346 | |
100 | RandRange(1000000): 781750 | |
101 | RandRange(1000000): 191841 | |
102 | 102 | Chance(1, 2): true |
103 | 103 | Chance(1, 2): false |
104 | 104 | Chance(1, 2): false |
7207 | 7207 | ListDump: |
7208 | 7208 | RailType: 0 |
7209 | 7209 | IsRailTypeAvailable(): true |
7210 | GetMaxSpeed(): 0 | |
7210 | 7211 | |
7211 | 7212 | --Road-- |
7212 | 7213 | Road |
0 | 1.0.1 (2010-05-01) | |
1 | ------------------------------------------------------------------------ | |
2 | - Fix: Crash when using restart via rcon (r19722) | |
3 | - Fix: Leaking a file descriptor [CVE-2010-0406] [FS#3785] (r19695) | |
4 | - Fix: Crash when the music/graphics metadata files were unreadable [FS#3774] (r19674) | |
5 | ||
6 | ||
7 | 1.0.1-RC2 (2010-04-22) | |
8 | ------------------------------------------------------------------------ | |
9 | - Fix: Desync when joining the game because of using the wrong variable (r19687) | |
10 | - Fix: Truncated archives were not detected when using zlib 1.2.3. This also fixes zlib 1.2.4 compatibility, zlib 1.2.5 is bugfree (r19686) | |
11 | - Fix: Towns with 3x3 and 2x2 road layouts could not expand (r19683) | |
12 | - Fix: When joining a MP game all clients with company ID > 0 would be shown as if they were a spectator [FS#3775] (r19680) | |
13 | - Fix: Client status was shown incorrect in the console (r19678) | |
14 | ||
15 | ||
16 | 1.0.1-RC1 (2010-04-17) | |
17 | ------------------------------------------------------------------------ | |
18 | - Feature: [NewGRF] Support for extended text code 0x9A 11, print qword (r19570) | |
19 | - Feature: Give more detailed error message when trying to build a too long bridge (r19561) | |
20 | - Feature: Add rail speed limit to land area information window (r19556, r19434) | |
21 | - Add: [NoAI] AIRail::GetMaxSpeed(RailType) to get the speed limit of railtypes (r19591) | |
22 | - Change: Sync Debian packaging updates from Debian, but keep building a single package (r19572) | |
23 | - Fix: Crash of a dedicated server if the null blitter is overridden and (after a while) there is no company 0 on new year anymore [FS#3749] (r19664) | |
24 | - Fix: In rare cases, update of signals could be missed (r19663) | |
25 | - Fix: Various improvements of command handling, missing error messages, improper validation causing crashes [CVE-2010-0402] [FS#3748] (r19658, r19657, r19656, r19655, r19654, r19637, r19633, r19621, r19616, r19605, r19604) | |
26 | - Fix: Industry generation failed for large maps and lots of industry types (r19652, r19643) | |
27 | - Fix: When a company is sold, move connected clients to spectators [FS#3745] (r19651) | |
28 | - Fix: A client would not be properly moved when moved while joining, e.g. when entering a company's password. This caused the client to be in the wrong company (according to the rest of the clients) and the client being kicked on the first command [FS#3760] (r19648) | |
29 | - Fix: Trains loaded above the original IDs did not have a default railtypelabel assigned to them, causing them to be unavailable. Could cause desyncs if the multiplayer game was not started from a savegame [FS#3768] (r19647) | |
30 | - Fix: Do not allow building cacti outside of the desert or rain forest trees outside of the rain forest area. This to prevent people from thinking planting rain forest trees makes the rain forest bigger and thus adds more place to build a lumber mill [FS#3728] (r19644, r19635, r19634) | |
31 | - Fix: Desync when taking over companies (r19636) | |
32 | - Fix: Chat message caused glitch when rejoining a network game [FS#3757] (r19629) | |
33 | - Fix: Desync when a command is received and in the queue while a client starts joining, i.e. save the game state. This can happen in two ways: with frame_freq > 1 a command received in a previous frame might not be executed yet or when a command is received in the same frame as the join but before the savegame is made. In both cases the joining client would not get all commands to get in-sync with the server (and the other clients) (r19620) | |
34 | - Fix: Company related graphs were not updated correctly after changing the company colour [FS#3763] (r19615) | |
35 | - Fix: Possible invalid read when server moves client to spectators before he finishes joining [FS#3755] (r19613) | |
36 | - Fix: Crash when opening a savegame with a waypoint from around 0.4.0 [FS#3756] (r19612) | |
37 | - Fix: Improve joining behaviour; kicking clients when entering passwords that was just cleared, 'connection lost' for people failing the password, access restriction circumvention [CVE-2010-0401] [FS#3754] (r19610, r19609, r19608, r19607, r19606) | |
38 | - Fix: Desync debugging; false positives in the cache validity checks and saving/loading the command stream (r19619, r19617, r19602, r19601, r19600, r19596, r19593, r19592, r19589, r19587, r19586) | |
39 | - Fix: Presence of online content was not properly updated after download due to duplicate slashes in the path (r19600) | |
40 | - Fix: [NewGRF] Setting industry prop 0x24 to 0 caused empty station names (r19590) | |
41 | - Fix: Crash when pressing 'h' (non-stop) in the order window of a ship or aircraft [FS#3744] (r19584) | |
42 | - Fix: Graphs were not properly updated when going toggling keys (i.e. companies) (r19574) | |
43 | - Fix: The timetable button was not automatically raised [FS#3739] (r19571) | |
44 | - Fix: [NewGRF] Possible buffer underflow in NewGRF string code (r19569) | |
45 | - Fix: [NewGRF] Do not return a random colour for unowned industries in var 45; TTDPatch does not seem to set the colour data in that case either and it could lead to desyncs (r19566) | |
46 | - Fix: Window::OnResize() was not always called while resizing a window causing incorrect windows [FS#3730] (r19563, r19558) | |
47 | - Fix: Bridge build error message should not show the same message twice (r19560, r19559) | |
48 | - Fix: [NewGRF] During NewGRF loading, store rail type labels in temporary data and process after loading has finished. This avoids deactivated rail vehicles being reactivated if the climate property is set after the rail type property (r19557, r19502) | |
49 | - Fix: Improperly scaled cargo payment graph when having lots of cargo (r19550, 19543) | |
50 | - Fix: [NewGRF] Properties set before property 08 (house, industry, industry tiles) should be ignored, not trigger the NewGRF to be disabled [FS#3725] (r19547) | |
51 | - Fix: Sorting industries by production was broken for NewGRF industries (r19538) | |
52 | - Fix: Vehicle details window did not resize correctly after refitting a road vehicle to a longer variant [FS#3720] (r19533) | |
53 | - Fix: Prevent drawing industries disabled at the smallmap as land tiles when they are built on water (r19523) | |
54 | - Fix: Tunnels, bridges and roadstops are build with only one roadtype (r19506) | |
55 | - Fix: Remove same_industry_close setting did not do what it said and caused NewGRF trouble (r19499) | |
56 | - Fix: Keep number padding intact when cloning vehicle names [FS#3710] (r19498) | |
57 | - Fix: [NewGRF] Bytes and words get sign-extended for temporary/persistent storage (r19497) | |
58 | - Fix: Stop reducing the size of the vehicle list after selecting a vehicle with a long description (r19480) | |
59 | - Fix: Implement custom sound effect for helicopter take-off [FS#3668] (r19364) | |
60 | - Update: Plural type of Slovak (r19452) | |
61 | ||
62 | ||
0 | 63 | 1.0.0 (2010-04-01) |
1 | 64 | ------------------------------------------------------------------------ |
2 | 65 | - Fix: Network clients would crash while connecting to a server with AIs (r19526) |
0 | # $Id: config.lib 19530 2010-03-31 22:12:30Z rubidium $ | |
0 | # $Id: config.lib 19742 2010-04-30 21:24:33Z rubidium $ | |
1 | 1 | |
2 | 2 | # This file is part of OpenTTD. |
3 | 3 | # OpenTTD 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, version 2. |
10 | 10 | } |
11 | 11 | |
12 | 12 | set_default() { |
13 | released_version="1.0.0" | |
13 | released_version="1.0.1" | |
14 | 14 | |
15 | 15 | ignore_extra_parameters="0" |
16 | 16 | # We set all kinds of defaults for params. Later on the user can override |
3153 | 3153 | echo " --with-midi=midi define which midi-player to use" |
3154 | 3154 | echo " --with-midi-arg=arg define which args to use for the" |
3155 | 3155 | echo " midi-player" |
3156 | echo " --with-libtimidity enables libtimidity support" | |
3156 | 3157 | echo " --with-allegrol[=allegro-config]" |
3157 | 3158 | echo " enables Allegro video driver support" |
3158 | 3159 | echo " --with-cocoa enables COCOA video driver (OSX ONLY)" |
0 | 0 | OpenTTD's known bugs |
1 | Last updated: 2010-04-01 | |
2 | Release version: 1.0.0 | |
1 | Last updated: 2010-05-01 | |
2 | Release version: 1.0.1 | |
3 | 3 | ------------------------------------------------------------------------ |
4 | 4 | |
5 | 5 | |
33 | 33 | If the bugs are closed but still listed here it means that the bug is fixed |
34 | 34 | and that the nightlies and next major release will not have that bug. |
35 | 35 | |
36 | - 3725 [NewGRF] Incorrect handling of some house action0s | |
37 | - 3720 When refitting to a vehicle with more trailers, the details view is not made bigger | |
38 | 36 | - 3714 Some corrupted savegames can cause crashes |
39 | 37 | - 3695 Behaviour inconsistency building railway/road down towards water |
40 | 38 | - 3651 [OSX] Crash when selecting full screen |
0 | openttd (1.0.0~rc3-2) unstable; urgency=low | |
1 | ||
2 | The openttd package has been moved from contrib into main. Since the | |
3 | OpenGFX free graphics set has been packaged for Debian, one can now run | |
4 | OpenTTD without needing any of the resources from the original game | |
5 | (though the original resources are still supported). | |
6 | ||
7 | -- Matthijs Kooijman <matthijs@stdin.nl> Thu, 18 Mar 2010 13:09:35 +0100 | |
8 | ||
9 | openttd (0.7.0-1) unstable; urgency=low | |
10 | ||
11 | Handling of AI players has changed in 0.7.0. This package no longer | |
12 | contains any AI players, so playing against the computer is not possible | |
13 | out of the box any longer. However, you can easily download AI players | |
14 | through the new "Content Downloading Service", after which playing with | |
15 | computer players is possible. | |
16 | ||
17 | Loading old savegames with computer players is supported (AI players will | |
18 | be converted according to the current AI settings), but at this moment | |
19 | there are no AIs that completely handle any existing infrastructure built | |
20 | by the old AI, so starting a new game might be more fun (especially since | |
21 | most of the new AIs are a lot less erratic). | |
22 | ||
23 | -- Matthijs Kooijman <matthijs@stdin.nl> Mon, 13 Apr 2009 15:11:20 +0200 | |
24 |
1 | 1 | ------------------ |
2 | 2 | |
3 | 3 | To properly play this game, you need a base graphics and sound set. |
4 | Currently, the graphics files from the original Transport Tycoon Deluxe | |
5 | game (Windows and DOS versions) are supported, as well as the free | |
6 | graphics replacement set "OpenGFX". | |
4 | Currently, the graphics, sound and music files from the original | |
5 | Transport Tycoon Deluxe game (Windows and DOS versions) are supported, | |
6 | as well as the free graphics replacement set "OpenGFX", sound | |
7 | replacement set "OpenSFX" (which is in non-free due to a restrictive | |
8 | license) and the free music replacement set "OpenMSX". | |
7 | 9 | |
8 | See readme.txt, section 4.1 for instructions on how to install these | |
9 | files. | |
10 | Normally, installing the openttd package should automatically install | |
11 | openttd-opengfx as well, allowing OpenTTD to run out of the box. If you | |
12 | want sound, you'll have to enable non-free sources and install the | |
13 | openttd-opensfx package manually (or install the original Transport | |
14 | Tyccon Deluxe sound files). | |
10 | 15 | |
11 | -Music | |
12 | For in game music (optional), you should copy all files in the gm/ | |
13 | subdir of your ttd installation to /usr/share/games/openttd/gm. You | |
14 | should also install timidity and a soundfont (freepats is packaged in | |
15 | Debian and works out of the box). | |
16 | The easiest way to install the OpenMSX music files is to use the in-game | |
17 | content download system, which should offer the latest version of the | |
18 | music files. | |
16 | 19 | |
17 | Don't forget to use -m extmidi if you want music, and if you have | |
18 | problems, remember that not all audio devices support multiple | |
19 | audiostreams (music and sound), so you might have to use alsa | |
20 | software mixing or pulseaudio. | |
20 | To find out how to install the original Transport Tycoon Deluxe graphics | |
21 | sound files and music files, see readme.txt, section 4.1. | |
22 | ||
23 | -Playing Music | |
24 | In addition to installing a music set (see above), you'll also need | |
25 | to install the timidity midi player, available in the timidity | |
26 | package. | |
27 | ||
28 | Remember that not all audio devices support multiple audiostreams | |
29 | (music and sound), so you might have to use alsa software mixing or | |
30 | pulseaudio. | |
21 | 31 | |
22 | 32 | -Scenarios |
23 | 33 | There are no scenarios included in this release. Scenarios can be |
24 | downloaded using openttd's content service, which is available from | |
25 | openttd's main menu. If you have obtained a scenario through other | |
34 | downloaded using OpenTTD's content service, which is available from | |
35 | OpenTTD's main menu. If you have obtained a scenario through other | |
26 | 36 | means, you can place it either in your ~/.openttd/scenario directory |
27 | 37 | or in the system-wide /usr/share/games/openttd/scenario directory. |
28 | 38 |
0 | openttd (1.0.0) unstable; urgency=low | |
1 | ||
2 | * New upstream release. | |
3 | ||
4 | -- Matthijs Kooijman <matthijs@stdin.nl> Thu, 01 Apr 2010 00:01:02 +0200 | |
5 | ||
6 | openttd (1.0.0~RC3) unstable; urgency=low | |
7 | ||
8 | * New upstream release. | |
9 | ||
10 | -- Matthijs Kooijman <matthijs@stdin.nl> Thu, 18 Mar 2010 00:01:02 +0100 | |
11 | ||
12 | openttd (1.0.0~RC2) unstable; urgency=low | |
13 | ||
14 | * New upstream release. | |
15 | ||
16 | -- Matthijs Kooijman <matthijs@stdin.nl> Thu, 04 Mar 2010 00:01:02 +0100 | |
17 | ||
18 | openttd (1.0.0~RC1) unstable; urgency=low | |
19 | ||
20 | * New upstream release. | |
21 | ||
22 | -- Matthijs Kooijman <matthijs@stdin.nl> Thu, 18 Feb 2010 00:01:02 +0100 | |
23 | ||
24 | openttd (1.0.0~beta4) unstable; urgency=low | |
25 | ||
26 | * New upstream release. | |
27 | ||
28 | -- Matthijs Kooijman <matthijs@stdin.nl> Thu, 04 Feb 2010 18:36:02 +0100 | |
29 | ||
30 | openttd (1.0.0~beta3) unstable; urgency=low | |
31 | ||
32 | * New upstream release. | |
33 | ||
34 | -- Matthijs Kooijman <matthijs@stdin.nl> Thu, 21 Jan 2010 00:01:02 +0100 | |
35 | ||
36 | openttd (1.0.0~beta2) unstable; urgency=low | |
37 | ||
38 | * New upstream release. | |
39 | ||
40 | -- Matthijs Kooijman <matthijs@stdin.nl> Tue, 05 Jan 2010 21:36:51 +0100 | |
41 | ||
42 | openttd (1.0.0~beta1) unstable; urgency=low | |
43 | ||
44 | * New upstream release. | |
45 | ||
46 | -- Matthijs Kooijman <matthijs@stdin.nl> Thu, 24 Dec 2009 01:01:01 +0100 | |
47 | ||
48 | openttd (0.7.5) unstable; urgency=low | |
49 | ||
50 | * New upstream release. | |
51 | ||
52 | -- Matthijs Kooijman <matthijs@stdin.nl> Wed, 23 Dec 2009 20:52:34 +0100 | |
53 | ||
54 | openttd (0.7.5~RC1) unstable; urgency=low | |
55 | ||
56 | * New upstream release. | |
57 | ||
58 | -- Matthijs Kooijman <matthijs@stdin.nl> Mon, 14 Dec 2009 19:28:37 +0100 | |
59 | ||
60 | openttd (0.7.4) unstable; urgency=low | |
61 | ||
62 | * New upstream release. | |
63 | ||
64 | -- Matthijs Kooijman <matthijs@stdin.nl> Tue, 01 Dec 2009 01:23:45 +0100 | |
65 | ||
66 | openttd (0.7.4~RC1) unstable; urgency=low | |
67 | ||
68 | * New upstream release. | |
69 | ||
70 | -- Matthijs Kooijman <matthijs@stdin.nl> Sun, 15 Nov 2009 16:30:07 +0100 | |
71 | ||
72 | openttd (0.7.3) unstable; urgency=low | |
73 | ||
74 | * New upstream release. | |
75 | ||
76 | -- Matthijs Kooijman <matthijs@stdin.nl> Thu, 01 Oct 2009 12:35:47 +0200 | |
77 | ||
78 | openttd (0.7.3~RC2) unstable; urgency=low | |
79 | ||
80 | * New upstream release. | |
81 | ||
82 | -- Matthijs Kooijman <matthijs@stdin.nl> Thu, 24 Sep 2009 21:30:43 +0200 | |
83 | ||
84 | openttd (0.7.3~RC1) unstable; urgency=low | |
85 | ||
86 | * New upstream release. | |
87 | ||
88 | -- Matthijs Kooijman <matthijs@stdin.nl> Sun, 13 Sep 2009 10:25:56 +0200 | |
89 | ||
90 | openttd (0.7.2) unstable; urgency=low | |
91 | ||
92 | * New upstream release. | |
93 | ||
94 | -- Matthijs Kooijman <matthijs@stdin.nl> Sat, 01 Aug 2009 00:19:43 +0200 | |
95 | ||
96 | openttd (0.7.2~RC2) unstable; urgency=low | |
97 | ||
98 | * New upstream release. | |
99 | ||
100 | -- Matthijs Kooijman <matthijs@stdin.nl> Tue, 21 Jul 2009 20:25:56 +0200 | |
101 | ||
102 | openttd (0.7.2~RC1) unstable; urgency=low | |
103 | ||
104 | * New upstream release. | |
105 | ||
106 | -- Matthijs Kooijman <matthijs@stdin.nl> Wed, 15 Jul 2009 22:25:56 +0200 | |
107 | ||
108 | openttd (0.7.1) unstable; urgency=low | |
109 | ||
110 | * New upstream release. | |
111 | ||
112 | -- Matthijs Kooijman <matthijs@stdin.nl> Tue, 09 Jun 2009 01:34:56 +0200 | |
113 | ||
114 | openttd (0.7.1~RC3) unstable; urgency=low | |
115 | ||
116 | * New upstream release. | |
117 | ||
118 | -- Matthijs Kooijman <matthijs@stdin.nl> Wed, 03 Jun 2009 15:34:56 +0200 | |
119 | ||
120 | openttd (0.7.1~RC2) unstable; urgency=low | |
121 | ||
122 | * New upstream release. | |
123 | ||
124 | -- Matthijs Kooijman <matthijs@stdin.nl> Thu, 21 Mar 2009 14:34:56 +0200 | |
125 | ||
126 | openttd (0.7.1~RC1) unstable; urgency=low | |
127 | ||
128 | * New upstream release. | |
129 | ||
130 | -- Matthijs Kooijman <matthijs@stdin.nl> Mon, 11 Mar 2009 17:34:56 +0200 | |
131 | ||
132 | openttd (0.7.0) unstable; urgency=low | |
133 | ||
134 | * New upstream release. | |
135 | ||
136 | -- Matthijs Kooijman <matthijs@stdin.nl> Wed, 01 Apr 2009 13:37:42 +0000 | |
137 | ||
138 | openttd (0.7.0~RC2) unstable; urgency=low | |
139 | ||
140 | * New upstream release. | |
141 | ||
142 | -- Matthijs Kooijman <matthijs@stdin.nl> Mon, 23 Mar 2009 00:42:00 +0200 | |
143 | ||
144 | openttd (0.7.0~RC1) unstable; urgency=low | |
145 | ||
146 | * New upstream release. | |
147 | ||
148 | -- Matthijs Kooijman <matthijs@stdin.nl> Mon, 16 Mar 2009 00:07:00 +0200 | |
149 | ||
150 | openttd (0.7.0~beta2) unstable; urgency=low | |
151 | ||
152 | * New upstream release. | |
153 | ||
154 | -- Matthijs Kooijman <matthijs@stdin.nl> Tue, 10 Mar 2009 00:33:05 +0100 | |
155 | ||
156 | openttd (0.7.0~beta1) unstable; urgency=low | |
157 | ||
158 | * New upstream release. | |
159 | ||
160 | -- Matthijs Kooijman <matthijs@stdin.nl> Mon, 16 Feb 2009 23:07:05 +0100 | |
0 | openttd (1.0.1-0) unstable; urgency=low | |
1 | ||
2 | * New upstream release 1.0.1 | |
3 | ||
4 | -- Matthijs Kooijman <matthijs@stdin.nl> Sat, 01 May 2010 00:00:00 +0200 | |
5 | ||
6 | openttd (1.0.1~rc2-0) unstable; urgency=low | |
7 | ||
8 | * New upstream release 1.0.1-RC2 | |
9 | ||
10 | -- Matthijs Kooijman <matthijs@stdin.nl> Wed, 21 Apr 2010 21:36:21 +0200 | |
11 | ||
12 | openttd (1.0.1~rc1-0) unstable; urgency=low | |
13 | ||
14 | * New upstream release 1.0.1-RC1 | |
15 | ||
16 | -- Matthijs Kooijman <matthijs@stdin.nl> Sat, 17 Apr 2010 23:36:21 +0000 | |
17 | ||
18 | openttd (1.0.0-1) unstable; urgency=low | |
19 | ||
20 | * [30a2162] New upstream release 1.0.0. (Closes: #570104) | |
21 | * [102698a] Make openttd-wrapper work with older mktemp versions. | |
22 | ||
23 | -- Matthijs Kooijman <matthijs@stdin.nl> Fri, 02 Apr 2010 23:36:21 +0200 | |
24 | ||
25 | openttd (1.0.0~rc3-2) unstable; urgency=low | |
26 | ||
27 | * [279c5ef] Recommend openttd-opengfx and suggest openttd-opensfx. | |
28 | * [9330ad7] Update README.Debian concerning music files. | |
29 | * [07bde24] Move openttd from contrib to main. (Closes: #560810) | |
30 | ||
31 | -- Matthijs Kooijman <matthijs@stdin.nl> Thu, 18 Mar 2010 13:16:32 +0100 | |
32 | ||
33 | openttd (1.0.0~rc3-1) unstable; urgency=low | |
34 | ||
35 | * [412d153] New upstream release 1.0.0~rc3. | |
36 | ||
37 | -- Matthijs Kooijman <matthijs@stdin.nl> Thu, 18 Mar 2010 10:09:33 +0100 | |
38 | ||
39 | openttd (1.0.0~rc2-1) unstable; urgency=low | |
40 | ||
41 | * [9c99af4] New upstream release 1.0.0~rc2. | |
42 | ||
43 | -- Matthijs Kooijman <matthijs@stdin.nl> Thu, 04 Mar 2010 12:22:28 +0100 | |
44 | ||
45 | openttd (1.0.0~rc1-1) unstable; urgency=low | |
46 | ||
47 | * [fe4eb51] New upstream release 1.0.0~rc1. | |
48 | * [6aa2be0] Note that the embedded md5 implementation has a different | |
49 | license. | |
50 | * [39eb336] Remove lintian override for empty gm directory. | |
51 | ||
52 | -- Matthijs Kooijman <matthijs@stdin.nl> Fri, 19 Feb 2010 13:00:53 +0100 | |
53 | ||
54 | openttd (1.0.0~beta4-1) unstable; urgency=low | |
55 | ||
56 | * [6718224] New upstream release 1.0.0~beta4. | |
57 | * [7b0fa8d] Remove some more docs that we don't want in the package. | |
58 | * [bb9d744] Use liblzo2 instead of an embedded minilzo version. | |
59 | * [949c06b] Explicitly disable iconv support. | |
60 | ||
61 | -- Matthijs Kooijman <matthijs@stdin.nl> Fri, 19 Feb 2010 12:59:27 +0100 | |
62 | ||
63 | openttd (0.7.5-4) unstable; urgency=low | |
64 | ||
65 | * [174d0b1] Don't use deprecated < in Replaces. | |
66 | ||
67 | -- Matthijs Kooijman <matthijs@stdin.nl> Mon, 15 Feb 2010 00:35:33 +0100 | |
68 | ||
69 | openttd (0.7.5-3) unstable; urgency=low | |
70 | ||
71 | * [d12fc5a] Make openttd-data replace openttd (< 0.7.5-2). | |
72 | (Closes: #569679) | |
73 | ||
74 | -- Matthijs Kooijman <matthijs@stdin.nl> Sun, 14 Feb 2010 16:56:31 +0100 | |
75 | ||
76 | openttd (0.7.5-2) unstable; urgency=low | |
77 | ||
78 | [ Matthijs Kooijman ] | |
79 | * [fbab21d] Switch to source format 3.0 (quilt). | |
80 | * [85c0c7d] No longer check for (and complain about missing) datafiles | |
81 | on installation and upgrades. (Closes: #524651, 562574) | |
82 | * [827eb61] Split the architecture independent data into openttd-data. | |
83 | (Closes: #492462) | |
84 | * [6fbd9c7] Update README.Debian. | |
85 | * [76a5148] Support cross compilation. (Closes: #550951) | |
86 | * [2005bf8] Simplify the rules file, make debhelper do more stuff. | |
87 | * [fc0500e] Remove some configure arguments. | |
88 | * [8ca38bb] Explicitly enable or disable all of the dependencies. | |
89 | * [e38fb3e] Let the upstream Makefile install documentation. | |
90 | * [5954fcf] Update the watch file to the new upstream url scheme. | |
91 | * [7249594] Fix typo in copyright file. | |
92 | * [660fb61] Bump the Standards-Version to 3.8.4, with no changes | |
93 | required. | |
94 | * [f94ab89] Move the packaging git repository to git.debian.org. | |
95 | ||
96 | -- Jordi Mallach <jordi@debian.org> Tue, 09 Feb 2010 21:40:24 +0100 | |
97 | ||
98 | openttd (0.7.5-1) unstable; urgency=high | |
99 | ||
100 | * [cdcb73a] Imported Upstream version 0.7.5. This release fixes | |
101 | CVE-2009-4007. | |
102 | ||
103 | -- Matthijs Kooijman <matthijs@stdin.nl> Thu, 24 Dec 2009 00:55:45 +0100 | |
104 | ||
105 | openttd (0.7.4-1) unstable; urgency=low | |
106 | ||
107 | * [a2c297b0] Imported Upstream version 0.7.4 | |
108 | * [0232a645] Make Debian-specific patches executable. | |
109 | * [76be04b] Switch the Debian packaging to git. | |
110 | ||
111 | -- Matthijs Kooijman <matthijs@stdin.nl> Tue, 15 Dec 2009 22:11:52 +0100 | |
112 | ||
113 | openttd (0.7.3-1) unstable; urgency=low | |
114 | ||
115 | [ Matthijs Kooijman ] | |
116 | * New upstream release | |
117 | * Use printf instead of echo -en in openttd-wrapper to make it POSIX | |
118 | compatible (Closes: #547758). | |
119 | * Remove three patches that are now included in upstream. | |
120 | ||
121 | -- Matthijs Kooijman <matthijs@stdin.nl> Thu, 01 Oct 2009 22:52:59 +0200 | |
122 | ||
123 | openttd (0.7.2-1) unstable; urgency=low | |
124 | ||
125 | [ Matthijs Kooijman ] | |
126 | * New upstream release | |
127 | * Bump Standards-Version to 3.8.3, with no changes required. | |
128 | * Clean up the rules file a bit and add some lintian overrides. | |
129 | * Explain why openttd is in contrib (Closes: #539381). | |
130 | * Add the DM-Upload-Allowed control field. | |
131 | * Re-add dpatch infrastructure. | |
132 | * Fix the copyright file, since upstream only allows GPLv2, not later | |
133 | versions. | |
134 | * Add a section to the copyright file on the different license used by the | |
135 | "Squirrel" programming language, which is shipped with OpenTTD since | |
136 | 0.7.0. | |
137 | * Backport upstream r17226, which removes the deprecated Encoding entry from | |
138 | the .desktop file. | |
139 | * Add a wrapper script for openttd, which captures any stderr output and | |
140 | displays it when openttd returns an error code (Closes: #533557). | |
141 | * Recommend x11-utils, since we use xmessage for displaying errors. Don't | |
142 | depend on it, since openttd will still run fine without it, you just won't | |
143 | see any errors. | |
144 | * Backport upstream r17227 and r17229, which prevents terminal escape codes | |
145 | from ending up in the captured error output. | |
146 | * Backport upstream r17240, which improves stderr output when files are | |
147 | missing or corrupt. | |
148 | ||
149 | -- Jordi Mallach <jordi@debian.org> Fri, 21 Aug 2009 15:27:26 +0200 | |
150 | ||
151 | openttd (0.7.1-1) unstable; urgency=low | |
152 | ||
153 | [ Matthijs Kooijman ] | |
154 | * New upstream release. | |
155 | * Link against libicu to enable right-to-left language support. | |
156 | ||
157 | -- Jordi Mallach <jordi@debian.org> Tue, 09 Jun 2009 21:46:28 +0200 | |
158 | ||
159 | openttd (0.7.0-1) unstable; urgency=low | |
160 | ||
161 | [ Matthijs Kooijman ] | |
162 | * New upstream release. | |
163 | * Remove Debian specific desktop file, upstream provides one now. | |
164 | * Add debian/watch file. | |
165 | ||
166 | [ Jordi Mallach ] | |
167 | * Bump Standards-Version to 3.8.1, with no changes required. | |
168 | * Move to debhelper compat 7. Bump Build-Depends accordingly. | |
169 | * Use dh_prep. | |
170 | * Add "set -e" to config script. | |
171 | * Remove a few extra doc files that get installed by upstream Makefile. | |
172 | * Add more complete copyright information. | |
173 | ||
174 | -- Jordi Mallach <jordi@debian.org> Wed, 15 Apr 2009 18:22:10 +0200 | |
161 | 175 | |
162 | 176 | openttd (0.6.3-1) unstable; urgency=low |
163 | 177 | |
166 | 180 | |
167 | 181 | [ Jordi Mallach ] |
168 | 182 | * Add Spanish Debconf template translation, after fixing its corrupted |
169 | encoding. | |
183 | encoding (thanks, Germana Oliveira, closes: #499214). | |
170 | 184 | |
171 | 185 | -- Jordi Mallach <jordi@debian.org> Thu, 02 Oct 2008 16:59:03 +0200 |
172 | 186 |
0 | 0 | Source: openttd |
1 | Section: contrib/games | |
1 | Section: games | |
2 | 2 | Priority: optional |
3 | 3 | Maintainer: Matthijs Kooijman <matthijs@stdin.nl> |
4 | 4 | Uploaders: Jordi Mallach <jordi@debian.org> |
5 | Build-Depends: debhelper (>= 7.0.50), libsdl-dev, zlib1g-dev, libpng-dev, libfreetype6-dev, libfontconfig-dev, liblzo2-dev, libicu-dev | |
5 | DM-Upload-Allowed: yes | |
6 | Build-Depends: debhelper (>= 7.0.50), libsdl-dev, zlib1g-dev, libpng-dev, libfreetype6-dev, libfontconfig-dev, libicu-dev, liblzo2-dev | |
6 | 7 | Standards-Version: 3.8.4 |
7 | 8 | Vcs-Browser: http://git.debian.org/?p=collab-maint/openttd.git |
8 | 9 | Vcs-Git: git://git.debian.org/collab-maint/openttd.git |
11 | 12 | Package: openttd |
12 | 13 | Architecture: any |
13 | 14 | Depends: ${shlibs:Depends}, ${misc:Depends} |
15 | Recommends: openttd-opengfx, x11-utils | |
14 | 16 | Replaces: openttd-data |
15 | 17 | Conflicts: openttd-data |
16 | Suggests: timidity, freepats | |
18 | Suggests: openttd-opensfx, timidity, freepats | |
17 | 19 | Description: reimplementation of Transport Tycoon Deluxe with enhancements |
18 | 20 | OpenTTD is a reimplementation of the Microprose game "Transport |
19 | Tycoon Deluxe" with lots of new features and enhancements. The data | |
20 | files of the original Transport Tycoon Deluxe for Windows are | |
21 | mandatory to play the game. They must be manually copied to the game | |
22 | data directory (see README.Debian for details). | |
21 | Tycoon Deluxe" with lots of new features and enhancements. | |
22 | . | |
23 | OpenTTD is playable with the free graphics files from the openttd-opengfx | |
24 | package and optional sound files from the openttd-opensfx package (which is in | |
25 | non-free). Alternatively, OpenTTD can use the graphics files from the original | |
26 | Transport Tycoon Deluxe game (See README.Debian on how to set this up). |
0 | 0 | This package was debianized by Matthijs Kooijman <matthijs@stdin.nl> |
1 | 1 | on Wed, 15 Sep 2004 00:24:01 +0200. |
2 | ||
3 | This package is not part of the main Debian GNU/Linux distribution, but | |
4 | uploaded to the contrib section. This is because the openttd program is | |
5 | non-functional by itself, it needs (non-free) graphical and sound | |
6 | resources from the Transport Tycoon Deluxe game to work. | |
7 | 2 | |
8 | 3 | Upstream author: Ludvig Strigeus (ludde) and many others. |
9 | 4 | Upstream homepage: http://www.openttd.org |
58 | 53 | |
59 | 54 | 3. This notice may not be removed or |
60 | 55 | altered from any source distribution. |
56 | ||
57 | This package contains an implementation of the md5 hash algorithm, which | |
58 | is shipped under the following license: | |
59 | ||
60 | Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved. | |
61 | ||
62 | This software is provided 'as-is', without any express or implied | |
63 | warranty. In no event will the authors be held liable for any damages | |
64 | arising from the use of this software. | |
65 | ||
66 | Permission is granted to anyone to use this software for any purpose, | |
67 | including commercial applications, and to alter it and redistribute it | |
68 | freely, subject to the following restrictions: | |
69 | ||
70 | 1. The origin of this software must not be misrepresented; you must not | |
71 | claim that you wrote the original software. If you use this software | |
72 | in a product, an acknowledgment in the product documentation would be | |
73 | appreciated but is not required. | |
74 | 2. Altered source versions must be plainly marked as such, and must not be | |
75 | misrepresented as being the original software. | |
76 | 3. This notice may not be removed or altered from any source distribution. |
0 | [DEFAULT] | |
1 | # Use pristine-tar | |
2 | pristine-tar = True | |
3 | ||
4 | [git-dch] | |
5 | # We use metaheaders in commit messages. | |
6 | meta = True | |
7 | # Put git commit ids in the debian changelog. | |
8 | id-length = 7 | |
9 | ||
10 | [git-import-orig] | |
11 | # Use a custom commit message for upstream imports. | |
12 | import-msg = New upstream release %(version)s. |
1 | 1 | # This is a wrapper script that checks openttd's exit status and |
2 | 2 | # displays its stderr output |
3 | 3 | |
4 | # Get a file to capture stderr to | |
5 | TMPFILE=`mktemp --tmpdir openttd.errout.XXXXXXXXX` | |
4 | # Get a file to capture stderr to. Use the deprecated -t option, so this | |
5 | # works on the old mktemp from the mktemp package (which has been | |
6 | # replaced by the version from the coreutils package). | |
7 | TMPFILE=`mktemp -t openttd.errout.XXXXXXXXX` | |
6 | 8 | |
7 | 9 | if [ ! -w "$TMPFILE" ]; then |
8 | 10 | xmessage "Could not create temporary file for error messages. Not starting OpenTTD." |
0 | From: Matthijs Kooijman <matthijs@stdin.nl> | |
1 | Subject: Use a wrapper script for running openttd | |
2 | ||
3 | The wrapper script captures stderr from openttd and displays this in | |
4 | case of an error. This patch makes the the .desktop file call the | |
5 | wrapper instead of the openttd binary directly. | |
6 | ||
7 | Index: media/openttd.desktop.in | |
8 | =================================================================== | |
9 | --- a/media/openttd.desktop.in (revision 17228) | |
10 | +++ b/media/openttd.desktop.in (working copy) | |
11 | @@ -6,6 +6,6 @@ | |
12 | Name=!!MENU_NAME!! | |
13 | Comment=A clone of Transport Tycoon Deluxe | |
14 | Icon=openttd | |
15 | -Exec=!!TTD!! | |
16 | +Exec=/usr/share/games/openttd/openttd-wrapper | |
17 | Terminal=false | |
18 | Categories=!!MENU_GROUP!! |
0 | run-openttd-wrapper.patch |
16 | 16 | # to be explicit about the dependencies, in case we're not running in a |
17 | 17 | # clean build root. |
18 | 18 | override_dh_auto_configure: |
19 | ./configure $(CROSS) --prefix-dir=/usr --install-dir=debian/openttd --without-allegro --with-zlib --with-lzo2 --with-sdl --with-png --with-freetype --with-fontconfig --with-icu | |
19 | ./configure $(CROSS) --prefix-dir=/usr --install-dir=debian/openttd --without-allegro --with-zlib --with-sdl --with-png --with-freetype --with-fontconfig --with-icu --with-liblzo2 --without-iconv | |
20 | 20 | |
21 | 21 | # Do some extra installation |
22 | 22 | override_dh_auto_install: |
0 | 3.0 (quilt) |
0 | version=3 | |
1 | ||
2 | options=downloadurlmangle=s/(.*)\/index.html$/\1\/openttd-\1-source.tar.gz/ \ | |
3 | http://master.binaries.openttd.org/releases/ \ | |
4 | (\d+(?:\.\d+)*)/index.html |
0 | 0 | @echo off |
1 | 1 | |
2 | set OPENTTD_VERSION=1.0.0 | |
2 | set OPENTTD_VERSION=1.0.1 | |
3 | 3 | set OPENSFX_VERSION=0.8.0 |
4 | 4 | set NOSOUND_VERSION=0.8.0 |
5 | 5 | set OPENGFX_VERSION=0.7.0 |
0 | 0 | # Version numbers to update |
1 | 1 | !define APPV_MAJOR 1 |
2 | 2 | !define APPV_MINOR 0 |
3 | !define APPV_MAINT 0 | |
4 | !define APPV_BUILD 7 | |
3 | !define APPV_MAINT 1 | |
4 | !define APPV_BUILD 2 | |
5 | 5 | !define APPV_EXTRA "" |
6 | 6 | |
7 | 7 | !define APPNAME "OpenTTD" ; Define application name |
0 | 0 | Option Explicit |
1 | 1 | |
2 | ' $Id: determineversion.vbs 19530 2010-03-31 22:12:30Z rubidium $ | |
2 | ' $Id: determineversion.vbs 19742 2010-04-30 21:24:33Z rubidium $ | |
3 | 3 | ' |
4 | 4 | ' This file is part of OpenTTD. |
5 | 5 | ' OpenTTD 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, version 2. |
38 | 38 | modified = Mid(version, InStrRev(version, Chr(9)) + 1) |
39 | 39 | version = Mid(version, 1, InStr(version, Chr(9)) - 1) |
40 | 40 | Else |
41 | version = "1.0.0" | |
41 | version = "1.0.1" | |
42 | 42 | revision = 0 |
43 | 43 | modified = 1 |
44 | 44 | End If |
0 | 0 | OpenTTD README |
1 | Last updated: 2010-04-01 | |
2 | Release version: 1.0.0 | |
1 | Last updated: 2010-05-01 | |
2 | Release version: 1.0.1 | |
3 | 3 | ------------------------------------------------------------------------ |
4 | 4 | |
5 | 5 |
0 | /* $Id: ai_changelog.hpp 19014 2010-02-04 23:18:19Z yexo $ */ | |
0 | /* $Id: ai_changelog.hpp 19623 2010-04-13 21:32:29Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
13 | 13 | * functions may still be available if you return an older API version |
14 | 14 | * in GetAPIVersion() in info.nut. |
15 | 15 | * |
16 | * \b 1.0.1 | |
17 | * | |
18 | * API additions: | |
19 | * \li AIRail::GetMaxSpeed | |
20 | * | |
16 | 21 | * \b 1.0.0 |
17 | * | |
18 | * 1.0.0 is not yet released. The following changes are not set in stone yet. | |
19 | 22 | * |
20 | 23 | * API additions: |
21 | 24 | * \li AIBaseStation |
0 | /* $Id: ai_rail.cpp 18987 2010-02-02 22:27:03Z terkhen $ */ | |
0 | /* $Id: ai_rail.cpp 19623 2010-04-13 21:32:29Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
468 | 468 | default: return -1; |
469 | 469 | } |
470 | 470 | } |
471 | ||
472 | /* static */ int32 AIRail::GetMaxSpeed(RailType railtype) | |
473 | { | |
474 | if (!AIRail::IsRailTypeAvailable(railtype)) return -1; | |
475 | ||
476 | return ::GetRailTypeInfo((::RailType)railtype)->max_speed; | |
477 | } |
0 | /* $Id: ai_rail.hpp 18987 2010-02-02 22:27:03Z terkhen $ */ | |
0 | /* $Id: ai_rail.hpp 19623 2010-04-13 21:32:29Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
439 | 439 | * @return The baseprice of building the given object. |
440 | 440 | */ |
441 | 441 | static Money GetBuildCost(RailType railtype, BuildType build_type); |
442 | ||
443 | /** | |
444 | * Get the maximum speed of trains running on this railtype. | |
445 | * @param railtype The railtype to get the maximum speed of. | |
446 | * @pre IsRailTypeAvailable(railtype) | |
447 | * @return The maximum speed trains can run on this railtype | |
448 | * or 0 if there is no limit. | |
449 | * @note The speed is in OpenTTD's internal speed unit. | |
450 | * This is mph / 1.6, which is roughly km/h. | |
451 | * To get km/h multiply this number by 1.00584. | |
452 | */ | |
453 | static int32 GetMaxSpeed(RailType railtype); | |
442 | 454 | }; |
443 | 455 | |
444 | 456 | #endif /* AI_RAIL_HPP */ |
0 | /* $Id: ai_rail.hpp.sq 18955 2010-01-29 23:56:42Z yexo $ */ | |
0 | /* $Id: ai_rail.hpp.sq 19623 2010-04-13 21:32:29Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
105 | 105 | SQAIRail.DefSQStaticMethod(engine, &AIRail::BuildSignal, "BuildSignal", 4, ".iii"); |
106 | 106 | SQAIRail.DefSQStaticMethod(engine, &AIRail::RemoveSignal, "RemoveSignal", 3, ".ii"); |
107 | 107 | SQAIRail.DefSQStaticMethod(engine, &AIRail::GetBuildCost, "GetBuildCost", 3, ".ii"); |
108 | SQAIRail.DefSQStaticMethod(engine, &AIRail::GetMaxSpeed, "GetMaxSpeed", 2, ".i"); | |
108 | 109 | |
109 | 110 | SQAIRail.PostRegister(engine); |
110 | 111 | } |
0 | /* $Id: ai_tile.cpp 19019 2010-02-05 17:05:58Z smatz $ */ | |
0 | /* $Id: ai_tile.cpp 19646 2010-04-16 22:02:33Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
247 | 247 | { |
248 | 248 | EnforcePrecondition(false, ::IsValidTile(tile)); |
249 | 249 | |
250 | return AIObject::DoCommand(tile, UINT_MAX, tile, CMD_PLANT_TREE); | |
250 | return AIObject::DoCommand(tile, TREE_INVALID, tile, CMD_PLANT_TREE); | |
251 | 251 | } |
252 | 252 | |
253 | 253 | /* static */ bool AITile::PlantTreeRectangle(TileIndex tile, uint width, uint height) |
257 | 257 | EnforcePrecondition(false, height >= 1 && height <= 20); |
258 | 258 | TileIndex end_tile = tile + ::TileDiffXY(width - 1, height - 1); |
259 | 259 | |
260 | return AIObject::DoCommand(tile, UINT_MAX, end_tile, CMD_PLANT_TREE); | |
260 | return AIObject::DoCommand(tile, TREE_INVALID, end_tile, CMD_PLANT_TREE); | |
261 | 261 | } |
262 | 262 | |
263 | 263 | /* static */ bool AITile::IsWithinTownInfluence(TileIndex tile, TownID town_id) |
0 | /* $Id: ai_tunnel.cpp 17693 2009-10-04 17:16:41Z rubidium $ */ | |
0 | /* $Id: ai_tunnel.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
76 | 76 | |
77 | 77 | uint type = 0; |
78 | 78 | if (vehicle_type == AIVehicle::VT_ROAD) { |
79 | type |= (TRANSPORT_ROAD << 9); | |
79 | type |= (TRANSPORT_ROAD << 8); | |
80 | 80 | type |= ::RoadTypeToRoadTypes((::RoadType)AIObject::GetRoadType()); |
81 | 81 | } else { |
82 | type |= (TRANSPORT_RAIL << 9); | |
82 | type |= (TRANSPORT_RAIL << 8); | |
83 | 83 | type |= AIRail::GetCurrentRailType(); |
84 | 84 | } |
85 | 85 |
0 | /* $Id: aircraft_cmd.cpp 19132 2010-02-14 16:31:35Z alberth $ */ | |
0 | /* $Id: aircraft_cmd.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
236 | 236 | */ |
237 | 237 | CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
238 | 238 | { |
239 | if (!IsEngineBuildable(p1, VEH_AIRCRAFT, _current_company)) return_cmd_error(STR_ERROR_AIRCRAFT_NOT_AVAILABLE); | |
240 | ||
241 | const Engine *e = Engine::Get(p1); | |
239 | EngineID eid = GB(p1, 0, 16); | |
240 | if (!IsEngineBuildable(eid, VEH_AIRCRAFT, _current_company)) return_cmd_error(STR_ERROR_AIRCRAFT_NOT_AVAILABLE); | |
241 | ||
242 | const Engine *e = Engine::Get(eid); | |
242 | 243 | const AircraftVehicleInfo *avi = &e->u.air; |
243 | 244 | CommandCost value(EXPENSES_NEW_VEHICLES, e->GetCost()); |
244 | 245 | |
251 | 252 | if (!IsHangarTile(tile) || !IsTileOwner(tile, _current_company)) return CMD_ERROR; |
252 | 253 | |
253 | 254 | /* Prevent building aircraft types at places which can't handle them */ |
254 | if (!CanVehicleUseStation(p1, Station::GetByTile(tile))) return CMD_ERROR; | |
255 | if (!CanVehicleUseStation(eid, Station::GetByTile(tile))) return CMD_ERROR; | |
255 | 256 | |
256 | 257 | /* We will need to allocate 2 or 3 vehicle structs, depending on type */ |
257 | 258 | if (!Vehicle::CanAllocateItem(avi->subtype & AIR_CTOL ? 2 : 3)) { |
298 | 299 | |
299 | 300 | v->max_speed = avi->max_speed; |
300 | 301 | v->acceleration = avi->acceleration; |
301 | v->engine_type = p1; | |
302 | u->engine_type = p1; | |
302 | v->engine_type = eid; | |
303 | u->engine_type = eid; | |
303 | 304 | |
304 | 305 | v->subtype = (avi->subtype & AIR_CTOL ? AIR_AIRCRAFT : AIR_HELICOPTER); |
305 | 306 | v->UpdateDeltaXY(INVALID_DIR); |
361 | 362 | /* Aircraft with 3 vehicles (chopper)? */ |
362 | 363 | if (v->subtype == AIR_HELICOPTER) { |
363 | 364 | Aircraft *w = new Aircraft(); |
364 | w->engine_type = p1; | |
365 | w->engine_type = eid; | |
365 | 366 | w->direction = DIR_N; |
366 | 367 | w->owner = _current_company; |
367 | 368 | w->x_pos = v->x_pos; |
386 | 387 | if (IsLocalCompany()) |
387 | 388 | InvalidateAutoreplaceWindow(v->engine_type, v->group_id); // updates the replace Aircraft window |
388 | 389 | |
389 | Company::Get(_current_company)->num_engines[p1]++; | |
390 | Company::Get(_current_company)->num_engines[eid]++; | |
390 | 391 | } |
391 | 392 | |
392 | 393 | return value; |
875 | 876 | /* Make sure the rotors don't rotate too fast */ |
876 | 877 | if (u->cur_speed > 32) { |
877 | 878 | v->cur_speed = 0; |
878 | if (--u->cur_speed == 32) SndPlayVehicleFx(SND_18_HELICOPTER, v); | |
879 | if (--u->cur_speed == 32) { | |
880 | if (!PlayVehicleSound(v, VSE_START)) { | |
881 | SndPlayVehicleFx(SND_18_HELICOPTER, v); | |
882 | } | |
883 | } | |
879 | 884 | } else { |
880 | 885 | u->cur_speed = 32; |
881 | 886 | count = UpdateAircraftSpeed(v); |
0 | /* $Id: base_media_base.h 19278 2010-02-27 16:41:10Z rubidium $ */ | |
0 | /* $Id: base_media_base.h 19741 2010-04-30 21:01:21Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
107 | 107 | * Read the set information from a loaded ini. |
108 | 108 | * @param ini the ini to read from |
109 | 109 | * @param path the path to this ini file (for filenames) |
110 | * @param full_filename the full filename of the loaded file (for error reporting purposes) | |
110 | 111 | * @param allow_empty_filename empty filenames are valid |
111 | 112 | * @return true if loading was successful. |
112 | 113 | */ |
113 | bool FillSetDetails(IniFile *ini, const char *path, bool allow_empty_filename = true); | |
114 | bool FillSetDetails(IniFile *ini, const char *path, const char *full_filename, bool allow_empty_filename = true); | |
114 | 115 | |
115 | 116 | /** |
116 | 117 | * Get the description for the given ISO code. |
237 | 238 | struct GraphicsSet : BaseSet<GraphicsSet, MAX_GFT, DATA_DIR> { |
238 | 239 | PaletteType palette; ///< Palette of this graphics set |
239 | 240 | |
240 | bool FillSetDetails(struct IniFile *ini, const char *path); | |
241 | bool FillSetDetails(struct IniFile *ini, const char *path, const char *full_filename); | |
241 | 242 | }; |
242 | 243 | |
243 | 244 | /** All data/functions related with replacing the base graphics. */ |
275 | 276 | byte track_nr[NUM_SONGS_AVAILABLE]; |
276 | 277 | byte num_available; |
277 | 278 | |
278 | bool FillSetDetails(struct IniFile *ini, const char *path); | |
279 | bool FillSetDetails(struct IniFile *ini, const char *path, const char *full_filename); | |
279 | 280 | }; |
280 | 281 | |
281 | 282 | /** All data/functions related with replacing the base music */ |
0 | /* $Id: base_media_func.h 19223 2010-02-23 23:26:37Z rubidium $ */ | |
0 | /* $Id: base_media_func.h 19741 2010-04-30 21:01:21Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
24 | 24 | #define fetch_metadata(name) \ |
25 | 25 | item = metadata->GetItem(name, false); \ |
26 | 26 | if (item == NULL || StrEmpty(item->value)) { \ |
27 | DEBUG(grf, 0, "Base " SET_TYPE "set detail loading: %s field missing", name); \ | |
27 | DEBUG(grf, 0, "Base " SET_TYPE "set detail loading: %s field missing.", name); \ | |
28 | DEBUG(grf, 0, " Is %s readable for the user running OpenTTD?", full_filename); \ | |
28 | 29 | return false; \ |
29 | 30 | } |
30 | 31 | |
31 | 32 | template <class T, size_t Tnum_files, Subdirectory Tsubdir> |
32 | bool BaseSet<T, Tnum_files, Tsubdir>::FillSetDetails(IniFile *ini, const char *path, bool allow_empty_filename) | |
33 | bool BaseSet<T, Tnum_files, Tsubdir>::FillSetDetails(IniFile *ini, const char *path, const char *full_filename, bool allow_empty_filename) | |
33 | 34 | { |
34 | 35 | memset(this, 0, sizeof(*this)); |
35 | 36 | |
69 | 70 | /* Find the filename first. */ |
70 | 71 | item = files->GetItem(BaseSet<T, Tnum_files, Tsubdir>::file_names[i], false); |
71 | 72 | if (item == NULL || (item->value == NULL && !allow_empty_filename)) { |
72 | DEBUG(grf, 0, "No " SET_TYPE " file for: %s", BaseSet<T, Tnum_files, Tsubdir>::file_names[i]); | |
73 | DEBUG(grf, 0, "No " SET_TYPE " file for: %s (in %s)", BaseSet<T, Tnum_files, Tsubdir>::file_names[i], full_filename); | |
73 | 74 | return false; |
74 | 75 | } |
75 | 76 | |
87 | 88 | /* Then find the MD5 checksum */ |
88 | 89 | item = md5s->GetItem(filename, false); |
89 | 90 | if (item == NULL) { |
90 | DEBUG(grf, 0, "No MD5 checksum specified for: %s", filename); | |
91 | DEBUG(grf, 0, "No MD5 checksum specified for: %s (in %s)", filename, full_filename); | |
91 | 92 | return false; |
92 | 93 | } |
93 | 94 | char *c = item->value; |
100 | 101 | } else if ('A' <= *c && *c <= 'F') { |
101 | 102 | j = *c - 'A' + 10; |
102 | 103 | } else { |
103 | DEBUG(grf, 0, "Malformed MD5 checksum specified for: %s", filename); | |
104 | DEBUG(grf, 0, "Malformed MD5 checksum specified for: %s (in %s)", filename, full_filename); | |
104 | 105 | return false; |
105 | 106 | } |
106 | 107 | if (i % 2 == 0) { |
154 | 155 | *path = '\0'; |
155 | 156 | } |
156 | 157 | |
157 | if (set->FillSetDetails(ini, path)) { | |
158 | if (set->FillSetDetails(ini, path, filename)) { | |
158 | 159 | Tbase_set *duplicate = NULL; |
159 | 160 | for (Tbase_set *c = BaseMedia<Tbase_set>::available_sets; c != NULL; c = c->next) { |
160 | 161 | if (strcmp(c->name, set->name) == 0 || c->shortname == set->shortname) { |
0 | /* $Id: bridge.h 18872 2010-01-21 01:38:13Z rubidium $ */ | |
0 | /* $Id: bridge.h 19567 2010-04-05 21:34:47Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
66 | 66 | |
67 | 67 | void DrawBridgeMiddle(const TileInfo *ti); |
68 | 68 | |
69 | bool CheckBridge_Stuff(BridgeType bridge_type, uint bridge_len, DoCommandFlag flags = DC_NONE); | |
69 | CommandCost CheckBridgeAvailability(BridgeType bridge_type, uint bridge_len, DoCommandFlag flags = DC_NONE); | |
70 | 70 | int CalcBridgeLenCostFactor(int x); |
71 | 71 | |
72 | 72 | void ResetBridges(); |
0 | /* $Id: bridge_gui.cpp 19087 2010-02-10 20:20:18Z rubidium $ */ | |
0 | /* $Id: bridge_gui.cpp 19567 2010-04-05 21:34:47Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
374 | 374 | case TRANSPORT_RAIL: last_bridge_type = _last_railbridge_type; break; |
375 | 375 | default: break; // water ways and air routes don't have bridge types |
376 | 376 | } |
377 | if (_ctrl_pressed && CheckBridge_Stuff(last_bridge_type, bridge_len)) { | |
377 | if (_ctrl_pressed && CheckBridgeAvailability(last_bridge_type, bridge_len).Succeeded()) { | |
378 | 378 | DoCommandP(end, start, type | last_bridge_type, CMD_BUILD_BRIDGE | CMD_MSG(STR_ERROR_CAN_T_BUILD_BRIDGE_HERE), CcBuildBridge); |
379 | 379 | return; |
380 | 380 | } |
395 | 395 | |
396 | 396 | /* loop for all bridgetypes */ |
397 | 397 | for (BridgeType brd_type = 0; brd_type != MAX_BRIDGES; brd_type++) { |
398 | if (CheckBridge_Stuff(brd_type, bridge_len)) { | |
398 | if (CheckBridgeAvailability(brd_type, bridge_len).Succeeded()) { | |
399 | 399 | /* bridge is accepted, add to list */ |
400 | 400 | BuildBridgeData *item = bl->Append(); |
401 | 401 | item->index = brd_type; |
0 | /* $Id: build_vehicle_gui.cpp 19087 2010-02-10 20:20:18Z rubidium $ */ | |
0 | /* $Id: build_vehicle_gui.cpp 19551 2010-04-03 19:48:01Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
1121 | 1121 | } |
1122 | 1122 | } |
1123 | 1123 | if (needed_height != this->details_height) { // Details window are not high enough, enlarge them. |
1124 | int resize = needed_height - this->details_height; | |
1124 | 1125 | this->details_height = needed_height; |
1125 | this->ReInit(); | |
1126 | this->ReInit(0, resize); | |
1126 | 1127 | return; |
1127 | 1128 | } |
1128 | 1129 | } |
0 | /* $Id: cmd_helper.h 17248 2009-08-21 20:21:05Z rubidium $ */ | |
0 | /* $Id: cmd_helper.h 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
11 | 11 | #ifndef CMD_HELPER_H |
12 | 12 | #define CMD_HELPER_H |
13 | 13 | |
14 | #include "direction_type.h" | |
15 | #include "road_type.h" | |
14 | #include "core/enum_type.hpp" | |
16 | 15 | |
17 | ||
18 | template<uint N> static inline void ExtractValid(); | |
19 | template<> inline void ExtractValid<1>() {} | |
20 | ||
21 | ||
22 | template<typename T> struct ExtractBits; | |
23 | template<> struct ExtractBits<Axis> { static const uint Count = 1; }; | |
24 | template<> struct ExtractBits<DiagDirection> { static const uint Count = 2; }; | |
25 | template<> struct ExtractBits<RoadBits> { static const uint Count = 4; }; | |
26 | ||
27 | ||
28 | template<typename T, uint N, typename U> static inline T Extract(U v) | |
16 | template<typename T, uint S, uint N, typename U> static inline T Extract(U v) | |
29 | 17 | { |
30 | 18 | /* Check if there are enough bits in v */ |
31 | ExtractValid<N + ExtractBits<T>::Count <= sizeof(U) * 8>(); | |
32 | return (T)GB(v, N, ExtractBits<T>::Count); | |
19 | assert_tcompile(N == EnumPropsT<T>::num_bits); | |
20 | assert_tcompile(S + N <= sizeof(U) * 8); | |
21 | assert_tcompile(EnumPropsT<T>::end <= (1 << N)); | |
22 | U masked = GB(v, S, N); | |
23 | return IsInsideMM(masked, EnumPropsT<T>::begin, EnumPropsT<T>::end) ? (T)masked : EnumPropsT<T>::invalid; | |
33 | 24 | } |
34 | 25 | |
35 | 26 | #endif |
0 | /* $Id: command.cpp 19130 2010-02-14 15:44:21Z alberth $ */ | |
0 | /* $Id: command.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
187 | 187 | CommandProc CmdAutofillTimetable; |
188 | 188 | CommandProc CmdSetTimetableStart; |
189 | 189 | |
190 | #define DEF_CMD(proc, flags) {proc, #proc, flags} | |
191 | ||
190 | 192 | /** |
191 | 193 | * The master command table |
192 | 194 | * |
195 | 197 | * as the value from the CMD_* enums. |
196 | 198 | */ |
197 | 199 | static const Command _command_proc_table[] = { |
198 | {CmdBuildRailroadTrack, CMD_NO_WATER | CMD_AUTO}, // CMD_BUILD_RAILROAD_TRACK | |
199 | {CmdRemoveRailroadTrack, CMD_AUTO}, // CMD_REMOVE_RAILROAD_TRACK | |
200 | {CmdBuildSingleRail, CMD_NO_WATER | CMD_AUTO}, // CMD_BUILD_SINGLE_RAIL | |
201 | {CmdRemoveSingleRail, CMD_AUTO}, // CMD_REMOVE_SINGLE_RAIL | |
202 | {CmdLandscapeClear, 0}, // CMD_LANDSCAPE_CLEAR | |
203 | {CmdBuildBridge, CMD_AUTO}, // CMD_BUILD_BRIDGE | |
204 | {CmdBuildRailStation, CMD_NO_WATER | CMD_AUTO}, // CMD_BUILD_RAIL_STATION | |
205 | {CmdBuildTrainDepot, CMD_NO_WATER | CMD_AUTO}, // CMD_BUILD_TRAIN_DEPOT | |
206 | {CmdBuildSingleSignal, CMD_AUTO}, // CMD_BUILD_SIGNALS | |
207 | {CmdRemoveSingleSignal, CMD_AUTO}, // CMD_REMOVE_SIGNALS | |
208 | {CmdTerraformLand, CMD_ALL_TILES | CMD_AUTO}, // CMD_TERRAFORM_LAND | |
209 | {CmdPurchaseLandArea, CMD_NO_WATER | CMD_AUTO}, // CMD_PURCHASE_LAND_AREA | |
210 | {CmdSellLandArea, 0}, // CMD_SELL_LAND_AREA | |
211 | {CmdBuildTunnel, CMD_AUTO}, // CMD_BUILD_TUNNEL | |
212 | {CmdRemoveFromRailStation, 0}, // CMD_REMOVE_FROM_RAIL_STATION | |
213 | {CmdConvertRail, 0}, // CMD_CONVERT_RAILD | |
214 | {CmdBuildRailWaypoint, 0}, // CMD_BUILD_RAIL_WAYPOINT | |
215 | {CmdRenameWaypoint, 0}, // CMD_RENAME_WAYPOINT | |
216 | {CmdRemoveFromRailWaypoint, 0}, // CMD_REMOVE_FROM_RAIL_WAYPOINT | |
217 | ||
218 | {CmdBuildRoadStop, CMD_NO_WATER | CMD_AUTO}, // CMD_BUILD_ROAD_STOP | |
219 | {CmdRemoveRoadStop, 0}, // CMD_REMOVE_ROAD_STOP | |
220 | {CmdBuildLongRoad, CMD_NO_WATER | CMD_AUTO}, // CMD_BUILD_LONG_ROAD | |
221 | {CmdRemoveLongRoad, CMD_NO_TEST | CMD_AUTO}, // CMD_REMOVE_LONG_ROAD; towns may disallow removing road bits (as they are connected) in test, but in exec they're removed and thus removing is allowed. | |
222 | {CmdBuildRoad, CMD_NO_WATER | CMD_AUTO}, // CMD_BUILD_ROAD | |
223 | {CmdBuildRoadDepot, CMD_NO_WATER | CMD_AUTO}, // CMD_BUILD_ROAD_DEPOT | |
224 | ||
225 | {CmdBuildAirport, CMD_NO_WATER | CMD_AUTO}, // CMD_BUILD_AIRPORT | |
226 | {CmdBuildDock, CMD_AUTO}, // CMD_BUILD_DOCK | |
227 | {CmdBuildShipDepot, CMD_AUTO}, // CMD_BUILD_SHIP_DEPOT | |
228 | {CmdBuildBuoy, CMD_AUTO}, // CMD_BUILD_BUOY | |
229 | {CmdPlantTree, CMD_AUTO}, // CMD_PLANT_TREE | |
230 | {CmdBuildRailVehicle, 0}, // CMD_BUILD_RAIL_VEHICLE | |
231 | {CmdMoveRailVehicle, 0}, // CMD_MOVE_RAIL_VEHICLE | |
232 | ||
233 | {CmdSellRailWagon, 0}, // CMD_SELL_RAIL_WAGON | |
234 | {CmdSendTrainToDepot, 0}, // CMD_SEND_TRAIN_TO_DEPOT | |
235 | {CmdForceTrainProceed, 0}, // CMD_FORCE_TRAIN_PROCEED | |
236 | {CmdReverseTrainDirection, 0}, // CMD_REVERSE_TRAIN_DIRECTION | |
237 | ||
238 | {CmdModifyOrder, 0}, // CMD_MODIFY_ORDER | |
239 | {CmdSkipToOrder, 0}, // CMD_SKIP_TO_ORDER | |
240 | {CmdDeleteOrder, 0}, // CMD_DELETE_ORDER | |
241 | {CmdInsertOrder, 0}, // CMD_INSERT_ORDER | |
242 | ||
243 | {CmdChangeServiceInt, 0}, // CMD_CHANGE_SERVICE_INT | |
244 | ||
245 | {CmdBuildIndustry, 0}, // CMD_BUILD_INDUSTRY | |
246 | {CmdBuildCompanyHQ, CMD_NO_WATER | CMD_AUTO}, // CMD_BUILD_COMPANY_HQ | |
247 | {CmdSetCompanyManagerFace, 0}, // CMD_SET_COMPANY_MANAGER_FACE | |
248 | {CmdSetCompanyColour, 0}, // CMD_SET_COMPANY_COLOUR | |
249 | ||
250 | {CmdIncreaseLoan, 0}, // CMD_INCREASE_LOAN | |
251 | {CmdDecreaseLoan, 0}, // CMD_DECREASE_LOAN | |
252 | ||
253 | {CmdWantEnginePreview, 0}, // CMD_WANT_ENGINE_PREVIEW | |
254 | ||
255 | {CmdRenameVehicle, 0}, // CMD_RENAME_VEHICLE | |
256 | {CmdRenameEngine, 0}, // CMD_RENAME_ENGINE | |
257 | ||
258 | {CmdRenameCompany, 0}, // CMD_RENAME_COMPANY | |
259 | {CmdRenamePresident, 0}, // CMD_RENAME_PRESIDENT | |
260 | ||
261 | {CmdRenameStation, 0}, // CMD_RENAME_STATION | |
262 | ||
263 | {CmdSellAircraft, 0}, // CMD_SELL_AIRCRAFT | |
264 | ||
265 | {CmdBuildAircraft, 0}, // CMD_BUILD_AIRCRAFT | |
266 | {CmdSendAircraftToHangar, 0}, // CMD_SEND_AIRCRAFT_TO_HANGAR | |
267 | {CmdRefitAircraft, 0}, // CMD_REFIT_AIRCRAFT | |
268 | ||
269 | {CmdPlaceSign, 0}, // CMD_PLACE_SIGN | |
270 | {CmdRenameSign, 0}, // CMD_RENAME_SIGN | |
271 | ||
272 | {CmdBuildRoadVeh, 0}, // CMD_BUILD_ROAD_VEH | |
273 | {CmdSellRoadVeh, 0}, // CMD_SELL_ROAD_VEH | |
274 | {CmdSendRoadVehToDepot, 0}, // CMD_SEND_ROADVEH_TO_DEPOT | |
275 | {CmdTurnRoadVeh, 0}, // CMD_TURN_ROADVEH | |
276 | {CmdRefitRoadVeh, 0}, // CMD_REFIT_ROAD_VEH | |
277 | ||
278 | {CmdPause, CMD_SERVER}, // CMD_PAUSE | |
279 | ||
280 | {CmdBuyShareInCompany, 0}, // CMD_BUY_SHARE_IN_COMPANY | |
281 | {CmdSellShareInCompany, 0}, // CMD_SELL_SHARE_IN_COMPANY | |
282 | {CmdBuyCompany, 0}, // CMD_BUY_COMANY | |
283 | ||
284 | {CmdFoundTown, CMD_NO_TEST}, // CMD_FOUND_TOWN; founding random town can fail only in exec run | |
285 | {CmdRenameTown, CMD_SERVER}, // CMD_RENAME_TOWN | |
286 | {CmdDoTownAction, 0}, // CMD_DO_TOWN_ACTION | |
287 | ||
288 | {CmdSellShip, 0}, // CMD_SELL_SHIP | |
289 | {CmdBuildShip, 0}, // CMD_BUILD_SHIP | |
290 | {CmdSendShipToDepot, 0}, // CMD_SEND_SHIP_TO_DEPOT | |
291 | {CmdRefitShip, 0}, // CMD_REFIT_SHIP | |
292 | ||
293 | {CmdOrderRefit, 0}, // CMD_ORDER_REFIT | |
294 | {CmdCloneOrder, 0}, // CMD_CLONE_ORDER | |
295 | ||
296 | {CmdClearArea, CMD_NO_TEST}, // CMD_CLEAR_AREA; destroying multi-tile houses makes town rating differ between test and execution | |
297 | ||
298 | {CmdMoneyCheat, CMD_OFFLINE}, // CMD_MONEY_CHEAT | |
299 | {CmdBuildCanal, CMD_AUTO}, // CMD_BUILD_CANAL | |
300 | {CmdCompanyCtrl, CMD_SPECTATOR}, // CMD_COMPANY_CTRL | |
301 | ||
302 | {CmdLevelLand, CMD_ALL_TILES | CMD_NO_TEST | CMD_AUTO}, // CMD_LEVEL_LAND; test run might clear tiles multiple times, in execution that only happens once | |
303 | ||
304 | {CmdRefitRailVehicle, 0}, // CMD_REFIT_RAIL_VEHICLE | |
305 | {CmdRestoreOrderIndex, 0}, // CMD_RESTORE_ORDER_INDEX | |
306 | {CmdBuildLock, CMD_AUTO}, // CMD_BUILD_LOCK | |
307 | ||
308 | {CmdBuildSignalTrack, CMD_AUTO}, // CMD_BUILD_SIGNAL_TRACK | |
309 | {CmdRemoveSignalTrack, CMD_AUTO}, // CMD_REMOVE_SIGNAL_TRACK | |
310 | ||
311 | {CmdGiveMoney, 0}, // CMD_GIVE_MONEY | |
312 | {CmdChangeSetting, CMD_SERVER}, // CMD_CHANGE_SETTING | |
313 | {CmdChangeCompanySetting, 0}, // CMD_CHANGE_COMPANY_SETTING | |
314 | {CmdSetAutoReplace, 0}, // CMD_SET_AUTOREPLACE | |
315 | {CmdCloneVehicle, CMD_NO_TEST}, // CMD_CLONE_VEHICLE; NewGRF callbacks influence building and refitting making it impossible to correctly estimate the cost | |
316 | {CmdStartStopVehicle, 0}, // CMD_START_STOP_VEHICLE | |
317 | {CmdMassStartStopVehicle, 0}, // CMD_MASS_START_STOP | |
318 | {CmdAutoreplaceVehicle, 0}, // CMD_AUTOREPLACE_VEHICLE | |
319 | {CmdDepotSellAllVehicles, 0}, // CMD_DEPOT_SELL_ALL_VEHICLES | |
320 | {CmdDepotMassAutoReplace, 0}, // CMD_DEPOT_MASS_AUTOREPLACE | |
321 | {CmdCreateGroup, 0}, // CMD_CREATE_GROUP | |
322 | {CmdDeleteGroup, 0}, // CMD_DELETE_GROUP | |
323 | {CmdRenameGroup, 0}, // CMD_RENAME_GROUP | |
324 | {CmdAddVehicleGroup, 0}, // CMD_ADD_VEHICLE_GROUP | |
325 | {CmdAddSharedVehicleGroup, 0}, // CMD_ADD_SHARE_VEHICLE_GROUP | |
326 | {CmdRemoveAllVehiclesGroup, 0}, // CMD_REMOVE_ALL_VEHICLES_GROUP | |
327 | {CmdSetGroupReplaceProtection, 0}, // CMD_SET_GROUP_REPLACE_PROTECTION | |
328 | {CmdMoveOrder, 0}, // CMD_MOVE_ORDER | |
329 | {CmdChangeTimetable, 0}, // CMD_CHANGE_TIMETABLE | |
330 | {CmdSetVehicleOnTime, 0}, // CMD_SET_VEHICLE_ON_TIME | |
331 | {CmdAutofillTimetable, 0}, // CMD_AUTOFILL_TIMETABLE | |
332 | {CmdSetTimetableStart, 0}, // CMD_SET_TIMETABLE_START | |
200 | DEF_CMD(CmdBuildRailroadTrack, CMD_NO_WATER | CMD_AUTO), // CMD_BUILD_RAILROAD_TRACK | |
201 | DEF_CMD(CmdRemoveRailroadTrack, CMD_AUTO), // CMD_REMOVE_RAILROAD_TRACK | |
202 | DEF_CMD(CmdBuildSingleRail, CMD_NO_WATER | CMD_AUTO), // CMD_BUILD_SINGLE_RAIL | |
203 | DEF_CMD(CmdRemoveSingleRail, CMD_AUTO), // CMD_REMOVE_SINGLE_RAIL | |
204 | DEF_CMD(CmdLandscapeClear, 0), // CMD_LANDSCAPE_CLEAR | |
205 | DEF_CMD(CmdBuildBridge, CMD_AUTO), // CMD_BUILD_BRIDGE | |
206 | DEF_CMD(CmdBuildRailStation, CMD_NO_WATER | CMD_AUTO), // CMD_BUILD_RAIL_STATION | |
207 | DEF_CMD(CmdBuildTrainDepot, CMD_NO_WATER | CMD_AUTO), // CMD_BUILD_TRAIN_DEPOT | |
208 | DEF_CMD(CmdBuildSingleSignal, CMD_AUTO), // CMD_BUILD_SIGNALS | |
209 | DEF_CMD(CmdRemoveSingleSignal, CMD_AUTO), // CMD_REMOVE_SIGNALS | |
210 | DEF_CMD(CmdTerraformLand, CMD_ALL_TILES | CMD_AUTO), // CMD_TERRAFORM_LAND | |
211 | DEF_CMD(CmdPurchaseLandArea, CMD_NO_WATER | CMD_AUTO), // CMD_PURCHASE_LAND_AREA | |
212 | DEF_CMD(CmdSellLandArea, 0), // CMD_SELL_LAND_AREA | |
213 | DEF_CMD(CmdBuildTunnel, CMD_AUTO), // CMD_BUILD_TUNNEL | |
214 | DEF_CMD(CmdRemoveFromRailStation, 0), // CMD_REMOVE_FROM_RAIL_STATION | |
215 | DEF_CMD(CmdConvertRail, 0), // CMD_CONVERT_RAILD | |
216 | DEF_CMD(CmdBuildRailWaypoint, 0), // CMD_BUILD_RAIL_WAYPOINT | |
217 | DEF_CMD(CmdRenameWaypoint, 0), // CMD_RENAME_WAYPOINT | |
218 | DEF_CMD(CmdRemoveFromRailWaypoint, 0), // CMD_REMOVE_FROM_RAIL_WAYPOINT | |
219 | ||
220 | DEF_CMD(CmdBuildRoadStop, CMD_NO_WATER | CMD_AUTO), // CMD_BUILD_ROAD_STOP | |
221 | DEF_CMD(CmdRemoveRoadStop, 0), // CMD_REMOVE_ROAD_STOP | |
222 | DEF_CMD(CmdBuildLongRoad, CMD_NO_WATER | CMD_AUTO), // CMD_BUILD_LONG_ROAD | |
223 | DEF_CMD(CmdRemoveLongRoad, CMD_NO_TEST | CMD_AUTO), // CMD_REMOVE_LONG_ROAD; towns may disallow removing road bits (as they are connected) in test, but in exec they're removed and thus removing is allowed. | |
224 | DEF_CMD(CmdBuildRoad, CMD_NO_WATER | CMD_AUTO), // CMD_BUILD_ROAD | |
225 | DEF_CMD(CmdBuildRoadDepot, CMD_NO_WATER | CMD_AUTO), // CMD_BUILD_ROAD_DEPOT | |
226 | ||
227 | DEF_CMD(CmdBuildAirport, CMD_NO_WATER | CMD_AUTO), // CMD_BUILD_AIRPORT | |
228 | DEF_CMD(CmdBuildDock, CMD_AUTO), // CMD_BUILD_DOCK | |
229 | DEF_CMD(CmdBuildShipDepot, CMD_AUTO), // CMD_BUILD_SHIP_DEPOT | |
230 | DEF_CMD(CmdBuildBuoy, CMD_AUTO), // CMD_BUILD_BUOY | |
231 | DEF_CMD(CmdPlantTree, CMD_AUTO), // CMD_PLANT_TREE | |
232 | DEF_CMD(CmdBuildRailVehicle, 0), // CMD_BUILD_RAIL_VEHICLE | |
233 | DEF_CMD(CmdMoveRailVehicle, 0), // CMD_MOVE_RAIL_VEHICLE | |
234 | ||
235 | DEF_CMD(CmdSellRailWagon, 0), // CMD_SELL_RAIL_WAGON | |
236 | DEF_CMD(CmdSendTrainToDepot, 0), // CMD_SEND_TRAIN_TO_DEPOT | |
237 | DEF_CMD(CmdForceTrainProceed, 0), // CMD_FORCE_TRAIN_PROCEED | |
238 | DEF_CMD(CmdReverseTrainDirection, 0), // CMD_REVERSE_TRAIN_DIRECTION | |
239 | ||
240 | DEF_CMD(CmdModifyOrder, 0), // CMD_MODIFY_ORDER | |
241 | DEF_CMD(CmdSkipToOrder, 0), // CMD_SKIP_TO_ORDER | |
242 | DEF_CMD(CmdDeleteOrder, 0), // CMD_DELETE_ORDER | |
243 | DEF_CMD(CmdInsertOrder, 0), // CMD_INSERT_ORDER | |
244 | ||
245 | DEF_CMD(CmdChangeServiceInt, 0), // CMD_CHANGE_SERVICE_INT | |
246 | ||
247 | DEF_CMD(CmdBuildIndustry, 0), // CMD_BUILD_INDUSTRY | |
248 | DEF_CMD(CmdBuildCompanyHQ, CMD_NO_WATER | CMD_AUTO), // CMD_BUILD_COMPANY_HQ | |
249 | DEF_CMD(CmdSetCompanyManagerFace, 0), // CMD_SET_COMPANY_MANAGER_FACE | |
250 | DEF_CMD(CmdSetCompanyColour, 0), // CMD_SET_COMPANY_COLOUR | |
251 | ||
252 | DEF_CMD(CmdIncreaseLoan, 0), // CMD_INCREASE_LOAN | |
253 | DEF_CMD(CmdDecreaseLoan, 0), // CMD_DECREASE_LOAN | |
254 | ||
255 | DEF_CMD(CmdWantEnginePreview, 0), // CMD_WANT_ENGINE_PREVIEW | |
256 | ||
257 | DEF_CMD(CmdRenameVehicle, 0), // CMD_RENAME_VEHICLE | |
258 | DEF_CMD(CmdRenameEngine, 0), // CMD_RENAME_ENGINE | |
259 | ||
260 | DEF_CMD(CmdRenameCompany, 0), // CMD_RENAME_COMPANY | |
261 | DEF_CMD(CmdRenamePresident, 0), // CMD_RENAME_PRESIDENT | |
262 | ||
263 | DEF_CMD(CmdRenameStation, 0), // CMD_RENAME_STATION | |
264 | ||
265 | DEF_CMD(CmdSellAircraft, 0), // CMD_SELL_AIRCRAFT | |
266 | ||
267 | DEF_CMD(CmdBuildAircraft, 0), // CMD_BUILD_AIRCRAFT | |
268 | DEF_CMD(CmdSendAircraftToHangar, 0), // CMD_SEND_AIRCRAFT_TO_HANGAR | |
269 | DEF_CMD(CmdRefitAircraft, 0), // CMD_REFIT_AIRCRAFT | |
270 | ||
271 | DEF_CMD(CmdPlaceSign, 0), // CMD_PLACE_SIGN | |
272 | DEF_CMD(CmdRenameSign, 0), // CMD_RENAME_SIGN | |
273 | ||
274 | DEF_CMD(CmdBuildRoadVeh, 0), // CMD_BUILD_ROAD_VEH | |
275 | DEF_CMD(CmdSellRoadVeh, 0), // CMD_SELL_ROAD_VEH | |
276 | DEF_CMD(CmdSendRoadVehToDepot, 0), // CMD_SEND_ROADVEH_TO_DEPOT | |
277 | DEF_CMD(CmdTurnRoadVeh, 0), // CMD_TURN_ROADVEH | |
278 | DEF_CMD(CmdRefitRoadVeh, 0), // CMD_REFIT_ROAD_VEH | |
279 | ||
280 | DEF_CMD(CmdPause, CMD_SERVER), // CMD_PAUSE | |
281 | ||
282 | DEF_CMD(CmdBuyShareInCompany, 0), // CMD_BUY_SHARE_IN_COMPANY | |
283 | DEF_CMD(CmdSellShareInCompany, 0), // CMD_SELL_SHARE_IN_COMPANY | |
284 | DEF_CMD(CmdBuyCompany, 0), // CMD_BUY_COMANY | |
285 | ||
286 | DEF_CMD(CmdFoundTown, CMD_NO_TEST), // CMD_FOUND_TOWN; founding random town can fail only in exec run | |
287 | DEF_CMD(CmdRenameTown, CMD_SERVER), // CMD_RENAME_TOWN | |
288 | DEF_CMD(CmdDoTownAction, 0), // CMD_DO_TOWN_ACTION | |
289 | ||
290 | DEF_CMD(CmdSellShip, 0), // CMD_SELL_SHIP | |
291 | DEF_CMD(CmdBuildShip, 0), // CMD_BUILD_SHIP | |
292 | DEF_CMD(CmdSendShipToDepot, 0), // CMD_SEND_SHIP_TO_DEPOT | |
293 | DEF_CMD(CmdRefitShip, 0), // CMD_REFIT_SHIP | |
294 | ||
295 | DEF_CMD(CmdOrderRefit, 0), // CMD_ORDER_REFIT | |
296 | DEF_CMD(CmdCloneOrder, 0), // CMD_CLONE_ORDER | |
297 | ||
298 | DEF_CMD(CmdClearArea, CMD_NO_TEST), // CMD_CLEAR_AREA; destroying multi-tile houses makes town rating differ between test and execution | |
299 | ||
300 | DEF_CMD(CmdMoneyCheat, CMD_OFFLINE), // CMD_MONEY_CHEAT | |
301 | DEF_CMD(CmdBuildCanal, CMD_AUTO), // CMD_BUILD_CANAL | |
302 | DEF_CMD(CmdCompanyCtrl, CMD_SPECTATOR), // CMD_COMPANY_CTRL | |
303 | ||
304 | DEF_CMD(CmdLevelLand, CMD_ALL_TILES | CMD_NO_TEST | CMD_AUTO), // CMD_LEVEL_LAND; test run might clear tiles multiple times, in execution that only happens once | |
305 | ||
306 | DEF_CMD(CmdRefitRailVehicle, 0), // CMD_REFIT_RAIL_VEHICLE | |
307 | DEF_CMD(CmdRestoreOrderIndex, 0), // CMD_RESTORE_ORDER_INDEX | |
308 | DEF_CMD(CmdBuildLock, CMD_AUTO), // CMD_BUILD_LOCK | |
309 | ||
310 | DEF_CMD(CmdBuildSignalTrack, CMD_AUTO), // CMD_BUILD_SIGNAL_TRACK | |
311 | DEF_CMD(CmdRemoveSignalTrack, CMD_AUTO), // CMD_REMOVE_SIGNAL_TRACK | |
312 | ||
313 | DEF_CMD(CmdGiveMoney, 0), // CMD_GIVE_MONEY | |
314 | DEF_CMD(CmdChangeSetting, CMD_SERVER), // CMD_CHANGE_SETTING | |
315 | DEF_CMD(CmdChangeCompanySetting, 0), // CMD_CHANGE_COMPANY_SETTING | |
316 | DEF_CMD(CmdSetAutoReplace, 0), // CMD_SET_AUTOREPLACE | |
317 | DEF_CMD(CmdCloneVehicle, CMD_NO_TEST), // CMD_CLONE_VEHICLE; NewGRF callbacks influence building and refitting making it impossible to correctly estimate the cost | |
318 | DEF_CMD(CmdStartStopVehicle, 0), // CMD_START_STOP_VEHICLE | |
319 | DEF_CMD(CmdMassStartStopVehicle, 0), // CMD_MASS_START_STOP | |
320 | DEF_CMD(CmdAutoreplaceVehicle, 0), // CMD_AUTOREPLACE_VEHICLE | |
321 | DEF_CMD(CmdDepotSellAllVehicles, 0), // CMD_DEPOT_SELL_ALL_VEHICLES | |
322 | DEF_CMD(CmdDepotMassAutoReplace, 0), // CMD_DEPOT_MASS_AUTOREPLACE | |
323 | DEF_CMD(CmdCreateGroup, 0), // CMD_CREATE_GROUP | |
324 | DEF_CMD(CmdDeleteGroup, 0), // CMD_DELETE_GROUP | |
325 | DEF_CMD(CmdRenameGroup, 0), // CMD_RENAME_GROUP | |
326 | DEF_CMD(CmdAddVehicleGroup, 0), // CMD_ADD_VEHICLE_GROUP | |
327 | DEF_CMD(CmdAddSharedVehicleGroup, 0), // CMD_ADD_SHARE_VEHICLE_GROUP | |
328 | DEF_CMD(CmdRemoveAllVehiclesGroup, 0), // CMD_REMOVE_ALL_VEHICLES_GROUP | |
329 | DEF_CMD(CmdSetGroupReplaceProtection, 0), // CMD_SET_GROUP_REPLACE_PROTECTION | |
330 | DEF_CMD(CmdMoveOrder, 0), // CMD_MOVE_ORDER | |
331 | DEF_CMD(CmdChangeTimetable, 0), // CMD_CHANGE_TIMETABLE | |
332 | DEF_CMD(CmdSetVehicleOnTime, 0), // CMD_SET_VEHICLE_ON_TIME | |
333 | DEF_CMD(CmdAutofillTimetable, 0), // CMD_AUTOFILL_TIMETABLE | |
334 | DEF_CMD(CmdSetTimetableStart, 0), // CMD_SET_TIMETABLE_START | |
333 | 335 | }; |
334 | 336 | |
335 | 337 | /*! |
359 | 361 | assert(IsValidCommand(cmd)); |
360 | 362 | |
361 | 363 | return _command_proc_table[cmd & CMD_ID_MASK].flags; |
364 | } | |
365 | ||
366 | /*! | |
367 | * This function mask the parameter with CMD_ID_MASK and returns | |
368 | * the name which belongs to the given command. | |
369 | * | |
370 | * @param cmd The integer value of the command | |
371 | * @return The name for this command | |
372 | */ | |
373 | const char *GetCommandName(uint32 cmd) | |
374 | { | |
375 | assert(IsValidCommand(cmd)); | |
376 | ||
377 | return _command_proc_table[cmd & CMD_ID_MASK].name; | |
362 | 378 | } |
363 | 379 | |
364 | 380 | static int _docommand_recursive = 0; |
639 | 655 | return_dcpi(CommandCost(), false); |
640 | 656 | } |
641 | 657 | #endif /* ENABLE_NETWORK */ |
642 | DEBUG(desync, 1, "cmd: %08x; %08x; %1x; %06x; %08x; %08x; %04x; %s\n", _date, _date_fract, (int)_current_company, tile, p1, p2, cmd & ~CMD_NETWORK_COMMAND, text); | |
658 | DEBUG(desync, 1, "cmd: %08x; %02x; %02x; %06x; %08x; %08x; %08x; \"%s\" (%s)", _date, _date_fract, (int)_current_company, tile, p1, p2, cmd & ~CMD_NETWORK_COMMAND, text, GetCommandName(cmd)); | |
643 | 659 | |
644 | 660 | /* Actually try and execute the command. If no cost-type is given |
645 | 661 | * use the construction one */ |
661 | 677 | /* If we're needing more money and we haven't done |
662 | 678 | * anything yet, ask for the money! */ |
663 | 679 | if (_additional_cash_required != 0 && res2.GetCost() == 0) { |
680 | /* It could happen we removed rail, thus gained money, and deleted something else. | |
681 | * So make sure the signal buffer is empty even in this case */ | |
682 | UpdateSignalsInBuffer(); | |
664 | 683 | SetDParam(0, _additional_cash_required); |
665 | 684 | return_dcpi(CommandCost(STR_ERROR_NOT_ENOUGH_CASH_REQUIRES_CURRENCY), false); |
666 | 685 | } |
0 | /* $Id: command_func.h 18866 2010-01-18 22:57:21Z rubidium $ */ | |
0 | /* $Id: command_func.h 19603 2010-04-11 10:57:21Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
67 | 67 | */ |
68 | 68 | byte GetCommandFlags(uint32 cmd); |
69 | 69 | /** |
70 | * Returns the name of a given command. | |
71 | */ | |
72 | const char *GetCommandName(uint32 cmd); | |
73 | /** | |
70 | 74 | * Returns the current money available which can be used for a command. |
71 | 75 | */ |
72 | 76 | Money GetAvailableMoneyForCommand(); |
0 | /* $Id: command_type.h 19130 2010-02-14 15:44:21Z alberth $ */ | |
0 | /* $Id: command_type.h 19603 2010-04-11 10:57:21Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
381 | 381 | * the #CMD_AUTO, #CMD_OFFLINE and #CMD_SERVER values. |
382 | 382 | */ |
383 | 383 | struct Command { |
384 | CommandProc *proc; | |
385 | byte flags; | |
384 | CommandProc *proc; ///< The procedure to actually executing | |
385 | const char *name; ///< A human readable name for the procedure | |
386 | byte flags; ///< The (command) flags to that apply to this command | |
386 | 387 | }; |
387 | 388 | |
388 | 389 | /** |
0 | /* $Id: company_cmd.cpp 19376 2010-03-08 22:19:39Z rubidium $ */ | |
0 | /* $Id: company_cmd.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
14 | 14 | #include "company_gui.h" |
15 | 15 | #include "town.h" |
16 | 16 | #include "news_func.h" |
17 | #include "cmd_helper.h" | |
17 | 18 | #include "command_func.h" |
18 | 19 | #include "network/network.h" |
19 | 20 | #include "network/network_func.h" |
590 | 591 | |
591 | 592 | SetBit(c->bankrupt_asked, best->index); |
592 | 593 | |
593 | if (IsInteractiveCompany(best->index)) { | |
594 | c->bankrupt_timeout = TAKE_OVER_TIMEOUT; | |
595 | ShowBuyCompanyDialog(c->index); | |
596 | return; | |
597 | } | |
598 | ||
594 | c->bankrupt_timeout = TAKE_OVER_TIMEOUT; | |
599 | 595 | if (best->is_ai) { |
600 | 596 | AI::NewEvent(best->index, new AIEventCompanyAskMerger(c->index, ClampToI32(c->bankrupt_value))); |
597 | } else if (IsInteractiveCompany(best->index)) { | |
598 | ShowBuyCompanyDialog(c->index); | |
601 | 599 | } |
602 | 600 | } |
603 | 601 | |
896 | 894 | */ |
897 | 895 | CommandCost CmdSetCompanyColour(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
898 | 896 | { |
899 | if (p2 >= 16) return CMD_ERROR; // max 16 colours | |
900 | ||
901 | Colours colour = (Colours)p2; | |
902 | ||
903 | LiveryScheme scheme = (LiveryScheme)GB(p1, 0, 8); | |
897 | Colours colour = Extract<Colours, 0, 4>(p2); | |
898 | LiveryScheme scheme = Extract<LiveryScheme, 0, 8>(p1); | |
904 | 899 | byte state = GB(p1, 8, 2); |
905 | 900 | |
906 | if (scheme >= LS_END || state >= 3) return CMD_ERROR; | |
901 | if (scheme >= LS_END || state >= 3 || colour == INVALID_COLOUR) return CMD_ERROR; | |
907 | 902 | |
908 | 903 | Company *c = Company::Get(_current_company); |
909 | 904 | |
964 | 959 | ResetVehicleColourMap(); |
965 | 960 | MarkWholeScreenDirty(); |
966 | 961 | |
962 | /* All graph related to companies use the company colour. */ | |
963 | InvalidateWindowData(WC_INCOME_GRAPH, 0); | |
964 | InvalidateWindowData(WC_OPERATING_PROFIT, 0); | |
965 | InvalidateWindowData(WC_DELIVERED_CARGO, 0); | |
966 | InvalidateWindowData(WC_PERFORMANCE_HISTORY, 0); | |
967 | InvalidateWindowData(WC_COMPANY_VALUE, 0); | |
968 | ||
967 | 969 | /* Company colour data is indirectly cached. */ |
968 | 970 | Vehicle *v; |
969 | 971 | FOR_ALL_VEHICLES(v) { |
0 | /* $Id: console_cmds.cpp 19376 2010-03-08 22:19:39Z rubidium $ */ | |
0 | /* $Id: console_cmds.cpp 19741 2010-04-30 21:01:21Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
988 | 988 | /* Don't copy the _newgame pointers to the real pointers, so call SwitchToMode directly */ |
989 | 989 | _settings_game.game_creation.map_x = MapLogX(); |
990 | 990 | _settings_game.game_creation.map_y = FindFirstBit(MapSizeY()); |
991 | SwitchToMode(SM_RESTARTGAME); | |
991 | _switch_mode = SM_RESTARTGAME; | |
992 | 992 | return true; |
993 | 993 | } |
994 | 994 |
0 | /* $Id: enum_type.hpp 17248 2009-08-21 20:21:05Z rubidium $ */ | |
0 | /* $Id: enum_type.hpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
57 | 57 | * @param Tbegin first valid value from the contiguous range (i.e. TRACK_BEGIN) |
58 | 58 | * @param Tend one past the last valid value from the contiguous range (i.e. TRACK_END) |
59 | 59 | * @param Tinvalid value used as invalid value marker (i.e. INVALID_TRACK) |
60 | * @param Tnum_bits Number of bits for storing the enum in command parameters | |
60 | 61 | */ |
61 | template <typename Tenum_t, typename Tstorage_t, Tenum_t Tbegin, Tenum_t Tend, Tenum_t Tinvalid> | |
62 | template <typename Tenum_t, typename Tstorage_t, Tenum_t Tbegin, Tenum_t Tend, Tenum_t Tinvalid, uint Tnum_bits = 8 * sizeof(Tstorage_t)> | |
62 | 63 | struct MakeEnumPropsT { |
63 | 64 | typedef Tenum_t type; ///< enum type (i.e. Trackdir) |
64 | 65 | typedef Tstorage_t storage; ///< storage type (i.e. byte) |
65 | 66 | static const Tenum_t begin = Tbegin; ///< lowest valid value (i.e. TRACKDIR_BEGIN) |
66 | 67 | static const Tenum_t end = Tend; ///< one after the last valid value (i.e. TRACKDIR_END) |
67 | 68 | static const Tenum_t invalid = Tinvalid; ///< what value is used as invalid value (i.e. INVALID_TRACKDIR) |
69 | static const uint num_bits = Tnum_bits; ///< Number of bits for storing the enum in command parameters | |
68 | 70 | }; |
69 | 71 | |
70 | 72 |
0 | /* $Id: random_func.cpp 19125 2010-02-13 20:13:34Z frosch $ */ | |
0 | /* $Id: random_func.cpp 19653 2010-04-17 12:00:59Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
23 | 23 | return this->state[1] = ROR(s, 3) - 1; |
24 | 24 | } |
25 | 25 | |
26 | uint32 Randomizer::Next(uint16 max) | |
26 | uint32 Randomizer::Next(uint32 max) | |
27 | 27 | { |
28 | return GB(this->Next(), 0, 16) * max >> 16; | |
28 | return ((uint64)this->Next() * (uint64)max) >> 32; | |
29 | 29 | } |
30 | 30 | |
31 | 31 | void Randomizer::SetSeed(uint32 seed) |
54 | 54 | return _random.Next(); |
55 | 55 | } |
56 | 56 | |
57 | uint DoRandomRange(uint max, int line, const char *file) | |
57 | uint32 DoRandomRange(uint32 max, int line, const char *file) | |
58 | 58 | { |
59 | return GB(DoRandom(line, file), 0, 16) * max >> 16; | |
59 | return ((uint64)DoRandom(line, file) * (uint64)max) >> 32; | |
60 | 60 | } |
61 | 61 | #endif /* RANDOM_DEBUG */ |
0 | /* $Id: random_func.hpp 19133 2010-02-14 16:52:15Z rubidium $ */ | |
0 | /* $Id: random_func.hpp 19653 2010-04-17 12:00:59Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
47 | 47 | * @param max the maximum value of the returned random number |
48 | 48 | * @return the random number |
49 | 49 | */ |
50 | uint32 Next(uint16 max); | |
50 | uint32 Next(uint32 max); | |
51 | 51 | |
52 | 52 | /** |
53 | 53 | * (Re)set the state of the random number generator. |
91 | 91 | #endif |
92 | 92 | uint32 DoRandom(int line, const char *file); |
93 | 93 | #define RandomRange(max) DoRandomRange(max, __LINE__, __FILE__) |
94 | uint DoRandomRange(uint max, int line, const char *file); | |
94 | uint32 DoRandomRange(uint32 max, int line, const char *file); | |
95 | 95 | #else |
96 | 96 | static FORCEINLINE uint32 Random() |
97 | 97 | { |
98 | 98 | return _random.Next(); |
99 | 99 | } |
100 | 100 | |
101 | static FORCEINLINE uint32 RandomRange(uint16 max) | |
101 | static FORCEINLINE uint32 RandomRange(uint32 max) | |
102 | 102 | { |
103 | 103 | return _random.Next(max); |
104 | 104 | } |
109 | 109 | return _interactive_random.Next(); |
110 | 110 | } |
111 | 111 | |
112 | static FORCEINLINE uint32 InteractiveRandomRange(uint16 max) | |
112 | static FORCEINLINE uint32 InteractiveRandomRange(uint32 max) | |
113 | 113 | { |
114 | 114 | return _interactive_random.Next(max); |
115 | 115 | } |
0 | /* $Id: date.cpp 18433 2009-12-08 19:59:21Z frosch $ */ | |
0 | /* $Id: date.cpp 19603 2010-04-11 10:57:21Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
217 | 217 | */ |
218 | 218 | static void OnNewMonth() |
219 | 219 | { |
220 | if (_debug_desync_level > 2) { | |
221 | char name[MAX_PATH]; | |
222 | snprintf(name, lengthof(name), "dmp_cmds_%08x_%08x.sav", _settings_game.game_creation.generation_seed, _date); | |
223 | SaveOrLoad(name, SL_SAVE, AUTOSAVE_DIR); | |
224 | } | |
225 | ||
226 | 220 | if (_settings_client.gui.autosave != 0 && (_cur_month % _autosave_months[_settings_client.gui.autosave]) == 0) { |
227 | 221 | _do_autosave = true; |
228 | 222 | RedrawAutosave(); |
0 | /* $Id: debug.cpp 19080 2010-02-10 16:12:54Z smatz $ */ | |
0 | /* $Id: debug.cpp 19603 2010-04-11 10:57:21Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
92 | 92 | static FILE *f = FioFOpenFile("commands-out.log", "wb", AUTOSAVE_DIR); |
93 | 93 | if (f == NULL) return; |
94 | 94 | |
95 | fprintf(f, "%s%s", GetLogPrefix(), buf); | |
95 | fprintf(f, "%s%s\n", GetLogPrefix(), buf); | |
96 | 96 | fflush(f); |
97 | 97 | } |
98 | 98 | } |
0 | /* $Id: direction_type.h 17248 2009-08-21 20:21:05Z rubidium $ */ | |
0 | /* $Id: direction_type.h 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
40 | 40 | DECLARE_POSTFIX_INCREMENT(Direction); |
41 | 41 | |
42 | 42 | /** Define basic enum properties */ |
43 | template <> struct EnumPropsT<Direction> : MakeEnumPropsT<Direction, byte, DIR_BEGIN, DIR_END, INVALID_DIR> {}; | |
43 | template <> struct EnumPropsT<Direction> : MakeEnumPropsT<Direction, byte, DIR_BEGIN, DIR_END, INVALID_DIR, 3> {}; | |
44 | 44 | typedef TinyEnumT<Direction> DirectionByte; // typedefing-enumification of Direction |
45 | 45 | |
46 | 46 | |
90 | 90 | DECLARE_POSTFIX_INCREMENT(DiagDirection); |
91 | 91 | |
92 | 92 | /** Define basic enum properties */ |
93 | template <> struct EnumPropsT<DiagDirection> : MakeEnumPropsT<DiagDirection, byte, DIAGDIR_BEGIN, DIAGDIR_END, INVALID_DIAGDIR> {}; | |
93 | template <> struct EnumPropsT<DiagDirection> : MakeEnumPropsT<DiagDirection, byte, DIAGDIR_BEGIN, DIAGDIR_END, INVALID_DIAGDIR, 2> {}; | |
94 | 94 | typedef TinyEnumT<DiagDirection> DiagDirectionByte; // typedefing-enumification of DiagDirection |
95 | 95 | |
96 | 96 | |
129 | 129 | AXIS_END, ///< Used for iterations |
130 | 130 | INVALID_AXIS = 0xFF, ///< Flag for an invalid Axis |
131 | 131 | }; |
132 | template <> struct EnumPropsT<Axis> : MakeEnumPropsT<Axis, byte, AXIS_X, AXIS_END, INVALID_AXIS, 1> {}; | |
132 | 133 | |
133 | 134 | #endif /* DIRECTION_TYPE_H */ |
0 | /* $Id: economy.cpp 19278 2010-02-27 16:41:10Z rubidium $ */ | |
0 | /* $Id: economy.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
296 | 296 | /* use INVALID_OWNER as new_owner to delete the company. */ |
297 | 297 | void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner) |
298 | 298 | { |
299 | #ifdef ENABLE_NETWORK | |
300 | /* In all cases, make spectators of clients connected to that company */ | |
301 | if (_networking) NetworkClientsToSpectators(old_owner); | |
302 | #endif /* ENABLE_NETWORK */ | |
303 | ||
299 | 304 | Town *t; |
300 | 305 | CompanyID old = _current_company; |
301 | 306 | |
468 | 473 | _current_company = old; |
469 | 474 | |
470 | 475 | MarkWholeScreenDirty(); |
471 | } | |
472 | ||
473 | static void ChangeNetworkOwner(Owner current_owner, Owner new_owner) | |
474 | { | |
475 | #ifdef ENABLE_NETWORK | |
476 | if (!_networking) return; | |
477 | ||
478 | if (current_owner == _local_company) { | |
479 | SetLocalCompany(new_owner); | |
480 | } | |
481 | ||
482 | if (!_network_server) return; | |
483 | ||
484 | NetworkServerChangeOwner(current_owner, new_owner); | |
485 | #endif /* ENABLE_NETWORK */ | |
486 | 476 | } |
487 | 477 | |
488 | 478 | static void CompanyCheckBankrupt(Company *c) |
546 | 536 | SetDParamStr(2, cni->company_name); |
547 | 537 | AddCompanyNewsItem(STR_MESSAGE_NEWS_FORMAT, NS_COMPANY_BANKRUPT, cni); |
548 | 538 | |
549 | /* Remove the company */ | |
550 | ChangeNetworkOwner(c->index, COMPANY_SPECTATOR); | |
551 | 539 | ChangeOwnershipOfCompanyItems(c->index, INVALID_OWNER); |
552 | 540 | |
553 | 541 | if (c->is_ai) AI::Stop(c->index); |
1458 | 1446 | AddCompanyNewsItem(STR_MESSAGE_NEWS_FORMAT, NS_COMPANY_MERGER, cni); |
1459 | 1447 | AI::BroadcastNewEvent(new AIEventCompanyMerger(ci, _current_company)); |
1460 | 1448 | |
1461 | /* original code does this a little bit differently */ | |
1462 | ChangeNetworkOwner(ci, _current_company); | |
1463 | 1449 | ChangeOwnershipOfCompanyItems(ci, _current_company); |
1464 | 1450 | |
1465 | 1451 | if (c->bankrupt_value == 0) { |
1501 | 1487 | CommandCost CmdBuyShareInCompany(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
1502 | 1488 | { |
1503 | 1489 | CommandCost cost(EXPENSES_OTHER); |
1504 | ||
1505 | Company *c = Company::GetIfValid(p1); | |
1490 | CompanyID target_company = (CompanyID)p1; | |
1491 | Company *c = Company::GetIfValid(target_company); | |
1506 | 1492 | |
1507 | 1493 | /* Check if buying shares is allowed (protection against modified clients) |
1508 | 1494 | * Cannot buy own shares */ |
1509 | if (c == NULL || !_settings_game.economy.allow_shares || _current_company == (CompanyID)p1) return CMD_ERROR; | |
1495 | if (c == NULL || !_settings_game.economy.allow_shares || _current_company == target_company) return CMD_ERROR; | |
1510 | 1496 | |
1511 | 1497 | /* Protect new companies from hostile takeovers */ |
1512 | 1498 | if (_cur_year - c->inaugurated_year < 6) return_cmd_error(STR_ERROR_PROTECTED); |
1532 | 1518 | break; |
1533 | 1519 | } |
1534 | 1520 | } |
1535 | SetWindowDirty(WC_COMPANY, p1); | |
1521 | SetWindowDirty(WC_COMPANY, target_company); | |
1536 | 1522 | } |
1537 | 1523 | return cost; |
1538 | 1524 | } |
1547 | 1533 | */ |
1548 | 1534 | CommandCost CmdSellShareInCompany(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
1549 | 1535 | { |
1550 | Company *c = Company::GetIfValid(p1); | |
1536 | CompanyID target_company = (CompanyID)p1; | |
1537 | Company *c = Company::GetIfValid(target_company); | |
1551 | 1538 | |
1552 | 1539 | /* Check if selling shares is allowed (protection against modified clients) |
1553 | 1540 | * Cannot sell own shares */ |
1554 | if (c == NULL || !_settings_game.economy.allow_shares || _current_company == (CompanyID)p1) return CMD_ERROR; | |
1541 | if (c == NULL || !_settings_game.economy.allow_shares || _current_company == target_company) return CMD_ERROR; | |
1555 | 1542 | |
1556 | 1543 | /* Those lines are here for network-protection (clients can be slow) */ |
1557 | 1544 | if (GetAmountOwnedBy(c, _current_company) == 0) return CommandCost(); |
1564 | 1551 | OwnerByte *b = c->share_owners; |
1565 | 1552 | while (*b != _current_company) b++; // share owners is guaranteed to contain company |
1566 | 1553 | *b = COMPANY_SPECTATOR; |
1567 | SetWindowDirty(WC_COMPANY, p1); | |
1554 | SetWindowDirty(WC_COMPANY, target_company); | |
1568 | 1555 | } |
1569 | 1556 | return CommandCost(EXPENSES_OTHER, cost); |
1570 | 1557 | } |
1582 | 1569 | */ |
1583 | 1570 | CommandCost CmdBuyCompany(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
1584 | 1571 | { |
1585 | Company *c = Company::GetIfValid(p1); | |
1572 | CompanyID target_company = (CompanyID)p1; | |
1573 | Company *c = Company::GetIfValid(target_company); | |
1586 | 1574 | if (c == NULL) return CMD_ERROR; |
1587 | 1575 | |
1588 | 1576 | /* Disable takeovers when not asked */ |
1592 | 1580 | if (!_networking && _local_company == c->index) return CMD_ERROR; |
1593 | 1581 | |
1594 | 1582 | /* Do not allow companies to take over themselves */ |
1595 | if ((CompanyID)p1 == _current_company) return CMD_ERROR; | |
1583 | if (target_company == _current_company) return CMD_ERROR; | |
1596 | 1584 | |
1597 | 1585 | /* Get the cost here as the company is deleted in DoAcquireCompany. */ |
1598 | 1586 | CommandCost cost(EXPENSES_OTHER, c->bankrupt_value); |
0 | /* $Id: genworld.cpp 18861 2010-01-18 14:58:32Z smatz $ */ | |
0 | /* $Id: genworld.cpp 19603 2010-04-11 10:57:21Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
175 | 175 | ShowNewGRFError(); |
176 | 176 | |
177 | 177 | if (_network_dedicated) DEBUG(net, 0, "Map generated, starting game"); |
178 | DEBUG(desync, 1, "new_map: %i\n", _settings_game.game_creation.generation_seed); | |
178 | DEBUG(desync, 1, "new_map: %08x", _settings_game.game_creation.generation_seed); | |
179 | 179 | |
180 | 180 | if (_settings_client.gui.pause_on_newgame && _game_mode == GM_NORMAL) DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE); |
181 | 181 | if (_debug_desync_level > 0) { |
0 | /* $Id: gfx_type.h 18872 2010-01-21 01:38:13Z rubidium $ */ | |
0 | /* $Id: gfx_type.h 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
195 | 195 | COLOUR_END, |
196 | 196 | INVALID_COLOUR = 0xFF, |
197 | 197 | }; |
198 | template <> struct EnumPropsT<Colours> : MakeEnumPropsT<Colours, byte, COLOUR_DARK_BLUE, COLOUR_END, INVALID_COLOUR, 4> {}; | |
198 | 199 | |
199 | 200 | /** Colour of the strings, see _string_colourmap in table/palettes.h or docs/ottd-colourtext-palette.png */ |
200 | 201 | enum TextColour { |
0 | /* $Id: gfxinit.cpp 19223 2010-02-23 23:26:37Z rubidium $ */ | |
0 | /* $Id: gfxinit.cpp 19741 2010-04-30 21:01:21Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
202 | 202 | GfxInitPalettes(); |
203 | 203 | } |
204 | 204 | |
205 | bool GraphicsSet::FillSetDetails(IniFile *ini, const char *path) | |
206 | { | |
207 | bool ret = this->BaseSet<GraphicsSet, MAX_GFT, DATA_DIR>::FillSetDetails(ini, path, false); | |
205 | bool GraphicsSet::FillSetDetails(IniFile *ini, const char *path, const char *full_filename) | |
206 | { | |
207 | bool ret = this->BaseSet<GraphicsSet, MAX_GFT, DATA_DIR>::FillSetDetails(ini, path, full_filename, false); | |
208 | 208 | if (ret) { |
209 | 209 | IniGroup *metadata = ini->GetGroup("metadata"); |
210 | 210 | IniItem *item; |
212 | 212 | fetch_metadata("palette"); |
213 | 213 | this->palette = (*item->value == 'D' || *item->value == 'd') ? PAL_DOS : PAL_WINDOWS; |
214 | 214 | } |
215 | return true; | |
215 | return ret; | |
216 | 216 | } |
217 | 217 | |
218 | 218 |
0 | /* $Id: graph_gui.cpp 19090 2010-02-10 21:06:05Z rubidium $ */ | |
0 | /* $Id: graph_gui.cpp 19623 2010-04-13 21:32:29Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
87 | 87 | ToggleBit(_legend_excluded_companies, widget - GLW_FIRST_COMPANY); |
88 | 88 | this->ToggleWidgetLoweredState(widget); |
89 | 89 | this->SetDirty(); |
90 | SetWindowDirty(WC_INCOME_GRAPH, 0); | |
91 | SetWindowDirty(WC_OPERATING_PROFIT, 0); | |
92 | SetWindowDirty(WC_DELIVERED_CARGO, 0); | |
93 | SetWindowDirty(WC_PERFORMANCE_HISTORY, 0); | |
94 | SetWindowDirty(WC_COMPANY_VALUE, 0); | |
90 | InvalidateWindowData(WC_INCOME_GRAPH, 0); | |
91 | InvalidateWindowData(WC_OPERATING_PROFIT, 0); | |
92 | InvalidateWindowData(WC_DELIVERED_CARGO, 0); | |
93 | InvalidateWindowData(WC_PERFORMANCE_HISTORY, 0); | |
94 | InvalidateWindowData(WC_COMPANY_VALUE, 0); | |
95 | 95 | } |
96 | 96 | |
97 | 97 | virtual void OnInvalidateData(int data) |
198 | 198 | byte colours[GRAPH_MAX_DATASETS]; |
199 | 199 | OverflowSafeInt64 cost[GRAPH_MAX_DATASETS][GRAPH_NUM_MONTHS]; ///< Stored costs for the last #GRAPH_NUM_MONTHS months |
200 | 200 | |
201 | int64 GetHighestValue(int initial_highest_value) const | |
202 | { | |
203 | OverflowSafeInt64 highest_value = initial_highest_value; | |
201 | /** | |
202 | * Get the highest value of the graph's data. Excluded data is ignored to allow showing smaller values in | |
203 | * better detail when disabling higher ones. | |
204 | * @return Highest value of the graph (ignoring disabled data). | |
205 | */ | |
206 | int64 GetHighestValue() const | |
207 | { | |
208 | OverflowSafeInt64 highest_value = 0; | |
204 | 209 | |
205 | 210 | for (int i = 0; i < this->num_dataset; i++) { |
206 | if (!HasBit(this->excluded_data, i)) { | |
207 | for (int j = 0; j < this->num_on_x_axis; j++) { | |
208 | OverflowSafeInt64 datapoint = this->cost[i][j]; | |
209 | ||
210 | if (datapoint != INVALID_DATAPOINT) { | |
211 | /* For now, if the graph has negative values the scaling is | |
212 | * symmetrical about the x axis, so take the absolute value | |
213 | * of each data point. */ | |
214 | highest_value = max(highest_value, abs(datapoint)); | |
215 | } | |
211 | if (HasBit(this->excluded_data, i)) continue; | |
212 | for (int j = 0; j < this->num_on_x_axis; j++) { | |
213 | OverflowSafeInt64 datapoint = this->cost[i][j]; | |
214 | ||
215 | if (datapoint != INVALID_DATAPOINT) { | |
216 | /* For now, if the graph has negative values the scaling is | |
217 | * symmetrical about the x axis, so take the absolute value | |
218 | * of each data point. */ | |
219 | highest_value = max(highest_value, abs(datapoint)); | |
216 | 220 | } |
217 | 221 | } |
218 | 222 | } |
219 | 223 | |
224 | /* Prevent showing the highest value too close to the graph upper limit. */ | |
225 | highest_value = (11 * highest_value) / 10; | |
226 | /* Avoid using zero as the highest value. */ | |
227 | if (highest_value == 0) highest_value = GRAPH_NUM_LINES_Y - 1; | |
220 | 228 | /* Round up highest_value so that it will divide cleanly into the number of |
221 | 229 | * axis labels used. */ |
222 | 230 | int round_val = highest_value % (GRAPH_NUM_LINES_Y - 1); |
273 | 281 | r.left += 9; |
274 | 282 | r.right -= 5; |
275 | 283 | |
276 | /* Start of with a highest_value of twice the height of the graph in pixels. | |
277 | * It's a bit arbitrary, but it makes the cargo payment graph look a little | |
278 | * nicer, and prevents division by zero when calculating where the datapoint | |
279 | * should be drawn. */ | |
280 | highest_value = r.bottom - r.top + 1; | |
281 | if (!this->has_negative_values) highest_value *= 2; | |
282 | highest_value = GetHighestValue(highest_value); | |
284 | highest_value = GetHighestValue(); | |
283 | 285 | |
284 | 286 | /* Get width for Y labels */ |
285 | 287 | int label_width = GetYLabelWidth(highest_value); |
523 | 525 | this->UpdateStatistics(false); |
524 | 526 | } |
525 | 527 | |
528 | virtual void OnInvalidateData(int data) | |
529 | { | |
530 | this->UpdateStatistics(true); | |
531 | } | |
532 | ||
526 | 533 | /** |
527 | 534 | * Update the statistics. |
528 | 535 | * @param initialize Initialize the data structure. |
893 | 900 | virtual void OnTick() |
894 | 901 | { |
895 | 902 | /* Override default OnTick */ |
903 | } | |
904 | ||
905 | virtual void OnInvalidateData(int data) | |
906 | { | |
907 | this->OnHundredthTick(); | |
896 | 908 | } |
897 | 909 | |
898 | 910 | virtual void OnHundredthTick() |
0 | /* $Id: group_cmd.cpp 18494 2009-12-13 22:17:12Z rubidium $ */ | |
0 | /* $Id: group_cmd.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
9 | 9 | /** @file group_cmd.cpp Handling of the engine groups */ |
10 | 10 | |
11 | 11 | #include "stdafx.h" |
12 | #include "cmd_helper.h" | |
12 | 13 | #include "command_func.h" |
13 | 14 | #include "group.h" |
14 | 15 | #include "train.h" |
81 | 82 | */ |
82 | 83 | CommandCost CmdCreateGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
83 | 84 | { |
84 | VehicleType vt = (VehicleType)p1; | |
85 | VehicleType vt = Extract<VehicleType, 0, 3>(p1); | |
85 | 86 | if (!IsCompanyBuildableVehicleType(vt)) return CMD_ERROR; |
86 | 87 | |
87 | 88 | if (!Group::CanAllocateItem()) return CMD_ERROR; |
257 | 258 | */ |
258 | 259 | CommandCost CmdAddSharedVehicleGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
259 | 260 | { |
260 | VehicleType type = (VehicleType)p2; | |
261 | if (!Group::IsValidID(p1) || !IsCompanyBuildableVehicleType(type)) return CMD_ERROR; | |
261 | VehicleType type = Extract<VehicleType, 0, 3>(p2); | |
262 | GroupID id_g = p1; | |
263 | if (!Group::IsValidID(id_g) || !IsCompanyBuildableVehicleType(type)) return CMD_ERROR; | |
262 | 264 | |
263 | 265 | if (flags & DC_EXEC) { |
264 | 266 | Vehicle *v; |
265 | VehicleType type = (VehicleType)p2; | |
266 | GroupID id_g = p1; | |
267 | 267 | |
268 | 268 | /* Find the first front engine which belong to the group id_g |
269 | 269 | * then add all shared vehicles of this front engine to the group id_g */ |
297 | 297 | */ |
298 | 298 | CommandCost CmdRemoveAllVehiclesGroup(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
299 | 299 | { |
300 | Group *g = Group::GetIfValid(p1); | |
301 | VehicleType type = (VehicleType)p2; | |
300 | GroupID old_g = p1; | |
301 | Group *g = Group::GetIfValid(old_g); | |
302 | VehicleType type = Extract<VehicleType, 0, 3>(p2); | |
302 | 303 | |
303 | 304 | if (g == NULL || g->owner != _current_company || !IsCompanyBuildableVehicleType(type)) return CMD_ERROR; |
304 | 305 | |
305 | 306 | if (flags & DC_EXEC) { |
306 | GroupID old_g = p1; | |
307 | 307 | Vehicle *v; |
308 | 308 | |
309 | 309 | /* Find each Vehicle that belongs to the group old_g and add it to the default group */ |
0 | /* $Id: industry.h 19062 2010-02-08 21:19:41Z terkhen $ */ | |
0 | /* $Id: industry.h 19551 2010-04-03 19:48:01Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
25 | 25 | * Defines the internal data of a functionnal industry |
26 | 26 | */ |
27 | 27 | struct Industry : IndustryPool::PoolItem<&_industry_pool> { |
28 | typedef PersistentStorageArray<uint32, 16> PersistentStorage; | |
28 | typedef PersistentStorageArray<int32, 16> PersistentStorage; | |
29 | 29 | |
30 | 30 | TileArea location; ///< Location of the industry |
31 | 31 | const Town *town; ///< Nearest town |
0 | /* $Id: industry_cmd.cpp 19446 2010-03-17 22:21:03Z rubidium $ */ | |
0 | /* $Id: industry_cmd.cpp 19653 2010-04-17 12:00:59Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
1511 | 1511 | } |
1512 | 1512 | |
1513 | 1513 | |
1514 | static bool CheckIfFarEnoughFromIndustry(TileIndex tile, int type) | |
1514 | static bool CheckIfFarEnoughFromConflictingIndustry(TileIndex tile, int type) | |
1515 | 1515 | { |
1516 | 1516 | const IndustrySpec *indspec = GetIndustrySpec(type); |
1517 | 1517 | const Industry *i; |
1518 | ||
1519 | if (_settings_game.economy.same_industry_close && indspec->IsRawIndustry()) | |
1520 | /* Allow primary industries to be placed close to any other industry */ | |
1521 | return true; | |
1522 | ||
1523 | 1518 | FOR_ALL_INDUSTRIES(i) { |
1524 | 1519 | /* Within 14 tiles from another industry is considered close */ |
1525 | 1520 | bool in_low_distance = DistanceMax(tile, i->location.tile) <= 14; |
1526 | ||
1527 | /* check if an industry that accepts the same goods is nearby */ | |
1528 | if (in_low_distance && | |
1529 | !indspec->IsRawIndustry() && // not a primary industry? | |
1530 | indspec->accepts_cargo[0] == i->accepts_cargo[0] && ( | |
1531 | /* at least one of those options must be true */ | |
1532 | _game_mode != GM_EDITOR || // editor must not be stopped | |
1533 | !_settings_game.economy.same_industry_close || | |
1534 | !_settings_game.economy.multiple_industry_per_town)) { | |
1535 | _error_message = STR_ERROR_INDUSTRY_TOO_CLOSE; | |
1536 | return false; | |
1537 | } | |
1538 | 1521 | |
1539 | 1522 | /* check if there are any conflicting industry types around */ |
1540 | 1523 | if ((i->type == indspec->conflicting[0] || |
1704 | 1687 | } |
1705 | 1688 | |
1706 | 1689 | if (!custom_shape_check && _settings_game.game_creation.land_generator == LG_TERRAGENESIS && _generating_world && !_ignore_restrictions && !CheckIfCanLevelIndustryPlatform(tile, DC_NO_WATER, it, type)) return NULL; |
1707 | if (!CheckIfFarEnoughFromIndustry(tile, type)) return NULL; | |
1690 | if (!CheckIfFarEnoughFromConflictingIndustry(tile, type)) return NULL; | |
1708 | 1691 | |
1709 | 1692 | const Town *t = FindTownForIndustry(tile, type); |
1710 | 1693 | if (t == NULL) return NULL; |
0 | /* $Id: industry_gui.cpp 19222 2010-02-23 23:18:41Z rubidium $ */ | |
0 | /* $Id: industry_gui.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
954 | 954 | /** Sort industries by production and name */ |
955 | 955 | static int CDECL IndustryProductionSorter(const Industry * const *a, const Industry * const *b) |
956 | 956 | { |
957 | int r = 0; | |
958 | ||
959 | if ((*a)->produced_cargo[0] == CT_INVALID) { | |
960 | if ((*b)->produced_cargo[0] != CT_INVALID) return -1; | |
961 | } else { | |
962 | if ((*b)->produced_cargo[0] == CT_INVALID) return 1; | |
963 | ||
964 | r = ((*a)->last_month_production[0] + (*a)->last_month_production[1]) - | |
965 | ((*b)->last_month_production[0] + (*b)->last_month_production[1]); | |
966 | } | |
967 | ||
968 | return (r == 0) ? IndustryNameSorter(a, b) : r; | |
957 | uint prod_a = 0, prod_b = 0; | |
958 | for (uint i = 0; i < lengthof((*a)->produced_cargo); i++) { | |
959 | if ((*a)->produced_cargo[i] != CT_INVALID) prod_a += (*a)->last_month_production[i]; | |
960 | if ((*b)->produced_cargo[i] != CT_INVALID) prod_b += (*b)->last_month_production[i]; | |
961 | } | |
962 | int r = prod_a - prod_b; | |
963 | ||
964 | return (r == 0) ? IndustryTypeSorter(a, b) : r; | |
969 | 965 | } |
970 | 966 | |
971 | 967 | /** Sort industries by transported cargo and name */ |
0 | /* $Id: landscape.cpp 18866 2010-01-18 22:57:21Z rubidium $ */ | |
0 | /* $Id: landscape.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
603 | 603 | |
604 | 604 | /** Clear a big piece of landscape |
605 | 605 | * @param tile end tile of area dragging |
606 | * @param flags of operation to conduct | |
606 | 607 | * @param p1 start tile of area dragging |
607 | * @param flags of operation to conduct | |
608 | 608 | * @param p2 unused |
609 | 609 | * @param text unused |
610 | 610 | * @return the cost of this operation or an error |
10 | 10 | ##gender male |
11 | 11 | |
12 | 12 | |
13 | # $Id: afrikaans.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
13 | # $Id: afrikaans.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
14 | 14 | |
15 | 15 | # This file is part of OpenTTD. |
16 | 16 | # OpenTTD 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, version 2. |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :as ander nywerhede |
1099 | 1099 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :vooruitsigting |
1100 | 1100 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Laat meer as een soortgelyke nywerhede per dorp toe: {ORANGE}{STRING} |
1101 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Nywerhede van die selfde tipe kan naby aan mekaar gebou word: {ORANGE}{STRING} | |
1102 | 1101 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Toon altyd lang datum in die standbaan: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Toon seine op die bestuur kant: {ORANGE}{STRING} |
1104 | 1103 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Toon finansies venster op die einde van die jaar: {ORANGE}{STRING} |
2124 | 2123 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NuweGRF: {LTBLUE}{STRING} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Vrag aangeneem: {LTBLUE} |
2126 | 2125 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2126 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Spoorlyn spoed limiet: {LTBLUE}{VELOCITY} | |
2127 | 2127 | |
2128 | 2128 | # Description of land area of different tiles |
2129 | 2129 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rotse |
4109 | 4109 | STR_LORRY :{BLACK}{LORRY} |
4110 | 4110 | STR_PLANE :{BLACK}{PLANE} |
4111 | 4111 | STR_SHIP :{BLACK}{SHIP} |
4112 | ||
4113 | STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) |
9 | 9 | ##grflangid 0x14 |
10 | 10 | |
11 | 11 | |
12 | # $Id: arabic_egypt.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
12 | # $Id: arabic_egypt.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
1097 | 1097 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :ككل المصانع الأخرى |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :تنقيب |
1099 | 1099 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}السماح بوجود اكثر من مصنع من نفس النوع في المدينة الواحدة: {ORANGE}{STRING} |
1100 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}من الممكن بناء مصانع من نفس النوع بجوار بعض: {ORANGE}{STRING} | |
1101 | 1100 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}استخدام التاريخ الطويل في لوحة العرض دائما: {ORANGE}{STRING} |
1102 | 1101 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}اظهار الاشارات على جهة السائق: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}أعرض نافذة المالية في آخر السنه: {ORANGE}{STRING} |
2123 | 2122 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2124 | 2123 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}الشحنة المقبولة: {LTBLUE} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA} /8 {STRING}) |
2125 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}حدود سرعة سكة الحديد: {LTBLUE}{VELOCITY} | |
2126 | 2126 | |
2127 | 2127 | # Description of land area of different tiles |
2128 | 2128 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :صخور |
4108 | 4108 | STR_LORRY :{BLACK}{LORRY} |
4109 | 4109 | STR_PLANE :{BLACK}{PLANE} |
4110 | 4110 | STR_SHIP :{BLACK}{SHIP} |
4111 | ||
4112 | STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) |
10 | 10 | ##gender m f |
11 | 11 | |
12 | 12 | |
13 | # $Id: brazilian_portuguese.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
13 | # $Id: brazilian_portuguese.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
14 | 14 | |
15 | 15 | # This file is part of OpenTTD. |
16 | 16 | # OpenTTD 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, version 2. |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :como as outras indústrias |
1099 | 1099 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :em prospecção |
1100 | 1100 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Permitir várias indústrias semelhantes por cidade: {ORANGE}{STRING} |
1101 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Indústrias do mesmo tipo podem ser construídas próximas: {ORANGE}{STRING} | |
1102 | 1101 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Sempre exibir a data completa na barra de estado: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Exibir sinais no lado da circulação: {ORANGE}{STRING} |
1104 | 1103 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Exibir janela das finanças no fim do ano: {ORANGE}{STRING} |
2124 | 2123 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carga aceita: {LTBLUE} |
2126 | 2125 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2126 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Velocidade limite do trilho: {LTBLUE}{VELOCITY} | |
2127 | 2127 | |
2128 | 2128 | # Description of land area of different tiles |
2129 | 2129 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rochas |
3518 | 3518 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Ponte é muito baixa para o terreno |
3519 | 3519 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Inicio e fim devem estar alinhados |
3520 | 3520 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... os extremos da ponte devem estar sobre a terra |
3521 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... ponte muito longa | |
3521 | 3522 | |
3522 | 3523 | # Tunnel related errors |
3523 | 3524 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Impossível construir túnel aqui... |
4109 | 4110 | STR_LORRY :{BLACK}{LORRY} |
4110 | 4111 | STR_PLANE :{BLACK}{PLANE} |
4111 | 4112 | STR_SHIP :{BLACK}{SHIP} |
4113 | ||
4114 | STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) |
11 | 11 | ##case m f n p |
12 | 12 | |
13 | 13 | |
14 | # $Id: bulgarian.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
14 | # $Id: bulgarian.txt 19555 2010-04-03 20:19:26Z rubidium $ | |
15 | 15 | |
16 | 16 | # This file is part of OpenTTD. |
17 | 17 | # OpenTTD 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, version 2. |
1099 | 1099 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :като други промишлености |
1100 | 1100 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :предстоящ |
1101 | 1101 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Няколко еднакви индустрии на град: {ORANGE}{STRING} |
1102 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Индустрии от еднакъв тип могат да бъдат строени близо една до друга: {ORANGE}{STRING} | |
1103 | 1102 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Дълга дата в лента за състоянието: {ORANGE}{STRING.f} |
1104 | 1103 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Семафорите от страната на пътното движение: {ORANGE}{STRING.n} |
1105 | 1104 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Финансов отчет в края на годината: {ORANGE}{STRING.m} |
10 | 10 | ##gender Masculin Femenin |
11 | 11 | |
12 | 12 | |
13 | # $Id: catalan.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
13 | # $Id: catalan.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
14 | 14 | |
15 | 15 | # This file is part of OpenTTD. |
16 | 16 | # OpenTTD 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, version 2. |
604 | 604 | STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Selecciona el programa 'Ezy Street style music' |
605 | 605 | STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Selecciona el programa 'Opcional 1' (definit per l'usuari) |
606 | 606 | STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selecciona el programa 'Opcional 2' (definit per l'usuari) |
607 | STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Control de programa aleatori actiu/inactiu | |
607 | STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Commuta el programa aleatori actiu/inactiu | |
608 | 608 | STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Mostra la finestra de selecció de pistes de música |
609 | 609 | |
610 | 610 | STR_ERROR_NO_SONGS :{WHITE}S'ha seleccionat un conjunt de músiques sense cançons. No es reproduiran cançons |
691 | 691 | STR_SMALLMAP_CENTER :{BLACK}Centra el mapa petit a la posició actual |
692 | 692 | STR_SMALLMAP_INDUSTRY :{TINYFONT}{STRING} ({NUM}) |
693 | 693 | STR_SMALLMAP_TOWN :{TINYFONT}{WHITE}{TOWN} |
694 | STR_SMALLMAP_DISABLE_ALL :{BLACK}Desactiva tots | |
695 | STR_SMALLMAP_ENABLE_ALL :{BLACK}Activa tots | |
694 | STR_SMALLMAP_DISABLE_ALL :{BLACK}Desactiva-ho tot | |
695 | STR_SMALLMAP_ENABLE_ALL :{BLACK}Activa-ho tot | |
696 | 696 | STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Mostra alçada |
697 | 697 | STR_SMALLMAP_TOOLTIP_DISABLE_ALL :{BLACK}No mostris les indústries al mapa |
698 | 698 | STR_SMALLMAP_TOOLTIP_ENABLE_ALL :{BLACK}Mostra totes les indústries al mapa |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :com les altres indústries |
1099 | 1099 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospeccionant |
1100 | 1100 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Permet vàries indústries similars a cada població: {ORANGE}{STRING} |
1101 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Permet construir indústries del mateix tipus unes aprop de les altres: {ORANGE}{STRING} | |
1102 | 1101 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Mostra sempre la data llarga a la barra d'estat: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Mostra senyals en el sentit de la marxa: {ORANGE}{STRING} |
1104 | 1103 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Mostra la finestra de balanç al finalitzar cada any: {ORANGE}{STRING} |
1937 | 1936 | STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Incrementa la densitat de senyals en arrossegar |
1938 | 1937 | |
1939 | 1938 | # Bridge selection window |
1940 | STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Selecciona pont per la via | |
1941 | STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Selecciona un Pont per Carretera | |
1939 | STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Selecciona pont de tren | |
1940 | STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Selecciona un Pont de carretera | |
1942 | 1941 | STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Selecció de pont - clica sobre el pont triat per construir-lo |
1943 | 1942 | STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY} |
1944 | 1943 | STR_BRIDGE_NAME_SUSPENSION_STEEL :Suspensió, Acer |
2124 | 2123 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Càrrega acceptada: {LTBLUE} |
2126 | 2125 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2126 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Límit de velocitat de la via: {LTBLUE}{VELOCITY} | |
2127 | 2127 | |
2128 | 2128 | # Description of land area of different tiles |
2129 | 2129 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Roques |
3518 | 3518 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}El pont és massa baix pel terreny |
3519 | 3519 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Inici i final han d'estar en línia recta |
3520 | 3520 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... els extrems del pont han d'estar tots dos a terra |
3521 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... el pont és massa llarg | |
3521 | 3522 | |
3522 | 3523 | # Tunnel related errors |
3523 | 3524 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Aquí no es pot construir el túnel... |
11 | 11 | ##case nom gen dat aku vok lok ins |
12 | 12 | |
13 | 13 | |
14 | # $Id: croatian.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
14 | # $Id: croatian.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
15 | 15 | |
16 | 16 | # This file is part of OpenTTD. |
17 | 17 | # OpenTTD 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, version 2. |
1193 | 1193 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :kao i druge industrije |
1194 | 1194 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prosperirajuća |
1195 | 1195 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Dopusti više sličnih industrija po gradu: {ORANGE}{STRING} |
1196 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Industrije iste vrste mogu biti izgrađene u blizini jedna druge: {ORANGE}{STRING} | |
1197 | 1196 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Uvijek pokaži dugi datum u statusnoj traci: {ORANGE}{STRING} |
1198 | 1197 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Pokaži signale na vozačkoj strani: {ORANGE}{STRING} |
1199 | 1198 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Pokaži financijski prozor na kraju godine: {ORANGE}{STRING} |
2219 | 2218 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2220 | 2219 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Prihvaćeni teret: {LTBLUE} |
2221 | 2220 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2221 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Najveća brzina željeznice: {LTBLUE}{VELOCITY} | |
2222 | 2222 | |
2223 | 2223 | # Description of land area of different tiles |
2224 | 2224 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Stijenje |
3613 | 3613 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most je prenizak za teren |
3614 | 3614 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Početak i kraj moraju biti u ravnini |
3615 | 3615 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... oba kraja mosta moraju biti na zemlji |
3616 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... predugačak most | |
3616 | 3617 | |
3617 | 3618 | # Tunnel related errors |
3618 | 3619 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Ovdje nije moguće izgraditi tunel... |
11 | 11 | ##case nom gen dat acc voc loc ins big small |
12 | 12 | |
13 | 13 | |
14 | # $Id: czech.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
14 | # $Id: czech.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
15 | 15 | |
16 | 16 | # This file is part of OpenTTD. |
17 | 17 | # OpenTTD 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, version 2. |
1165 | 1165 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :jako u ostatniho průmyslu |
1166 | 1166 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :průzkum |
1167 | 1167 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Povolit více stejného průmyslu kolem jednoho města: {ORANGE}{STRING} |
1168 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Průmysl stejného druhu může být budován poblíž sebe: {ORANGE}{STRING} | |
1169 | 1168 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Ukazovat dlouhé datum ve stavové liště: {ORANGE}{STRING} |
1170 | 1169 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Ukazovat semafory na straně, kde jezdí silniční vozidla: {ORANGE}{STRING} |
1171 | 1170 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Ukazovat finanční okno na konci každého roku: {ORANGE}{STRING} |
2191 | 2190 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2192 | 2191 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Přijímané zboží: {LTBLUE} |
2193 | 2192 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2193 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rychlostní omezení tratě: {LTBLUE}{VELOCITY} | |
2194 | 2194 | |
2195 | 2195 | # Description of land area of different tiles |
2196 | 2196 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kamení |
2976 | 2976 | STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Ukázat detaily lodi |
2977 | 2977 | STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Ukázat detaily letadla |
2978 | 2978 | |
2979 | STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Současná činnost vlaku - vlak se zastaví nebo rozjede, když sem klikneš | |
2980 | STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Současná činnost silničního vozidla - klikni sem pro zastavení/rozjetí vozidla. Ctrl+kliknutí pro zobrazení cíle | |
2981 | STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Činnost lodi - na rozjetí nebo zastavení lodi klepni sem | |
2979 | STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Současná činnost vlaku - když sem klikneš, vlak se zastaví nebo rozjede. Když ještě podržíš Ctrl, pohled se posune na cílovou stanici. | |
2980 | STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Současná činnost vozidla - klikni sem pro zastavení/rozjetí. | |
2981 | STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Současná činnost plavidla - pro zastavení či rozjetí, klikni sem | |
2982 | 2982 | STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Činnost letadla - stiskni pro rozjetí/zastavení letadla |
2983 | 2983 | |
2984 | 2984 | # Messages in the start stop button in the vehicle view |
3381 | 3381 | STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Tak velká zmena velikosti zdrojové mapy není doporučena. Pokračovat s generováním? |
3382 | 3382 | |
3383 | 3383 | # Soundset messages |
3384 | STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Byl nalezen pouze nouzový zvukový soubor. Pokud chcete zvuky, nainstalujte prosim zvukové soubory skrze systém stahování obsahu | |
3384 | 3385 | |
3385 | 3386 | # Screenshot related messages |
3386 | 3387 | STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Screenshot úspěšně uložen jako '{STRING}' |
3590 | 3591 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most je pro terén moc nízký |
3591 | 3592 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Začátek a konec musí být ve stejné výšce |
3592 | 3593 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... oba konce mostu musí být na zemi |
3594 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... most je příliš dlouhý | |
3593 | 3595 | |
3594 | 3596 | # Tunnel related errors |
3595 | 3597 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Zde nelze postavit tunel... |
4182 | 4184 | STR_PLANE :{BLACK}{PLANE} |
4183 | 4185 | STR_SHIP :{BLACK}{SHIP} |
4184 | 4186 | |
4187 | STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) |
9 | 9 | ##grflangid 0x2d |
10 | 10 | |
11 | 11 | |
12 | # $Id: danish.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
12 | # $Id: danish.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
1097 | 1097 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :som andre industrier |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :efterforskning |
1099 | 1099 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Tillad flere af samme slags industri per by: {ORANGE}{STRING} |
1100 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Tillad flere af samme type industri tæt på hinanden: {ORANGE}{STRING} | |
1101 | 1100 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Vis altid lang dato i statusbaren: {ORANGE}{STRING} |
1102 | 1101 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Vis signaler i kørselssiden: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Vis finansvinduet i slutningen af året: {ORANGE}{STRING} |
2123 | 2122 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2124 | 2123 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Accepteret last: {LTBLUE} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2125 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Togspors hastighedsgrænse: {LTBLUE}{VELOCITY} | |
2126 | 2126 | |
2127 | 2127 | # Description of land area of different tiles |
2128 | 2128 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Klipper |
3517 | 3517 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Broen er for lav til terrænet |
3518 | 3518 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Start- og slutposition skal være på linje |
3519 | 3519 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... begge ender af en bro skal være på land |
3520 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... broen er for lang | |
3520 | 3521 | |
3521 | 3522 | # Tunnel related errors |
3522 | 3523 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Kan ikke bygge en tunnel her... |
4108 | 4109 | STR_LORRY :{BLACK}{LORRY} |
4109 | 4110 | STR_PLANE :{BLACK}{PLANE} |
4110 | 4111 | STR_SHIP :{BLACK}{SHIP} |
4112 | ||
4113 | STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) |
9 | 9 | ##grflangid 0x1f |
10 | 10 | |
11 | 11 | |
12 | # $Id: dutch.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
12 | # $Id: dutch.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
1097 | 1097 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :zoals andere industrieën |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :proberen |
1099 | 1099 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Meerdere vergelijkbare industrieën per stad toestaan: {ORANGE}{STRING} |
1100 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Industrieën van hetzelfde type dicht bij elkaar toestaan: {ORANGE}{STRING} | |
1101 | 1100 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Altijd lange datum in statusbalk weergeven: {ORANGE}{STRING} |
1102 | 1101 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Seinen aan rijzijde plaatsen: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Financieel overzicht aan het eind van het jaar weergeven: {ORANGE}{STRING} |
1750 | 1749 | STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :protocolfout |
1751 | 1750 | STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :Ongelijke NewGRF-instelling |
1752 | 1751 | STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :niet toegestaan |
1753 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :raar pakket ontvangen | |
1752 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :ongeldig of onverwacht pakket ontvangen | |
1754 | 1753 | STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :foute revisie |
1755 | 1754 | STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :naam al in gebruik |
1756 | 1755 | STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :fout spelwachtwoord |
1768 | 1767 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spel nog steeds gepauzeerd ({STRING}, {STRING}) |
1769 | 1768 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spel nog steeds gepauzeerd ({STRING}, {STRING}, {STRING}) |
1770 | 1769 | STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spel vervolgd ({STRING}) |
1771 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :niet genoeg spelers | |
1770 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :aantal spelers | |
1772 | 1771 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :spelers maken verbinding |
1773 | 1772 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :handmatig |
1774 | 1773 | ############ End of leave-in-this-order |
2123 | 2122 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2124 | 2123 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Geaccepteerde vracht: {LTBLUE} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2125 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Spoor snelheidslimiet: {LTBLUE}{VELOCITY} | |
2126 | 2126 | |
2127 | 2127 | # Description of land area of different tiles |
2128 | 2128 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rotsen |
3517 | 3517 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Brug is te laag voor dit terrein |
3518 | 3518 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Begin en einde moeten op een lijn staan |
3519 | 3519 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... uiteinden van brug moeten beiden op land zijn |
3520 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... brug te lang | |
3520 | 3521 | |
3521 | 3522 | # Tunnel related errors |
3522 | 3523 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Kan hier geen tunnel bouwen... |
9 | 9 | ##grflangid 0x01 |
10 | 10 | |
11 | 11 | |
12 | # $Id: english.txt 19439 2010-03-16 20:54:26Z rubidium $ | |
12 | # $Id: english.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
1097 | 1097 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :as other industries |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospecting |
1099 | 1099 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Allow multiple similar industries per town: {ORANGE}{STRING1} |
1100 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Industries of the same type can be built close to each other: {ORANGE}{STRING1} | |
1101 | 1100 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Always show long date in the status bar: {ORANGE}{STRING1} |
1102 | 1101 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Show signals on the drive side: {ORANGE}{STRING1} |
1103 | 1102 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Show finances window at the end of the year: {ORANGE}{STRING1} |
1750 | 1749 | STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :protocol error |
1751 | 1750 | STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF mismatch |
1752 | 1751 | STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :not authorized |
1753 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :received strange packet | |
1752 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :received invalid or unexpected packet | |
1754 | 1753 | STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :wrong revision |
1755 | 1754 | STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :name already in use |
1756 | 1755 | STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :wrong password |
1768 | 1767 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Game still paused ({STRING}, {STRING}) |
1769 | 1768 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Game still paused ({STRING}, {STRING}, {STRING}) |
1770 | 1769 | STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Game unpaused ({STRING}) |
1771 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :not enough players | |
1770 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :number of players | |
1772 | 1771 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :connecting clients |
1773 | 1772 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manual |
1774 | 1773 | ############ End of leave-in-this-order |
2123 | 2122 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{RAW_STRING} |
2124 | 2123 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Cargo accepted: {LTBLUE} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2125 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rail speed limit: {LTBLUE}{VELOCITY} | |
2126 | 2126 | |
2127 | 2127 | # Description of land area of different tiles |
2128 | 2128 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rocks |
3507 | 3507 | |
3508 | 3508 | # Tree related errors |
3509 | 3509 | STR_ERROR_TREE_ALREADY_HERE :{WHITE}... tree already here |
3510 | STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... wrong terrain for tree type | |
3510 | 3511 | STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Can't plant tree here... |
3511 | 3512 | |
3512 | 3513 | # Bridge related errors |
3517 | 3518 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Bridge is too low for the terrain |
3518 | 3519 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Start and end must be in line |
3519 | 3520 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... ends of bridge must both be on land |
3521 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... bridge too long | |
3520 | 3522 | |
3521 | 3523 | # Tunnel related errors |
3522 | 3524 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Can't build tunnel here... |
9 | 9 | ##grflangid 0x00 |
10 | 10 | |
11 | 11 | |
12 | # $Id: english_US.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
12 | # $Id: english_US.txt 19555 2010-04-03 20:19:26Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
1097 | 1097 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :as other industries |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospecting |
1099 | 1099 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Allow multiple similar industries per town: {ORANGE}{STRING} |
1100 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Industries of the same type can be built close to each other: {ORANGE}{STRING} | |
1101 | 1100 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Always show long date in the status bar: {ORANGE}{STRING} |
1102 | 1101 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Show signals on the drive side: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Show finances window at the end of the year: {ORANGE}{STRING} |
10 | 10 | ##case n |
11 | 11 | |
12 | 12 | |
13 | # $Id: esperanto.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
13 | # $Id: esperanto.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
14 | 14 | |
15 | 15 | # This file is part of OpenTTD. |
16 | 16 | # OpenTTD 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, version 2. |
894 | 894 | STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Elektu stilon de urbonomoj |
895 | 895 | |
896 | 896 | ############ start of townname region |
897 | STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Angle (Origine) | |
897 | STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Angle (Originale) | |
898 | 898 | STR_GAME_OPTIONS_TOWN_NAME_FRENCH :France |
899 | 899 | STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Germane |
900 | 900 | STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Angle (Aldone) |
1077 | 1077 | STR_CONFIG_SETTING_EXTRADYNAMITE :{LTBLUE}Permesu forigon de pli da urbaj stratoj, pontoj ktp: {ORANGE}{STRING} |
1078 | 1078 | STR_CONFIG_SETTING_MAMMOTHTRAINS :{LTBLUE}Permesu konstrui tre longajn trajnojn: {ORANGE}{STRING} |
1079 | 1079 | STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :{LTBLUE}Modelo de trajnakcelado: {ORANGE}{STRING} |
1080 | STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_ORIGINAL :Originala | |
1081 | STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_REALISTIC :Realisma | |
1080 | STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_ORIGINAL :Originale | |
1081 | STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_REALISTIC :Realisme | |
1082 | 1082 | STR_CONFIG_SETTING_FORBID_90_DEG :{LTBLUE}Trajnoj kaj ŝipoj ne ort-turniĝu: {ORANGE}{STRING} {LTBLUE} (bezonas NPF) |
1083 | 1083 | STR_CONFIG_SETTING_JOINSTATIONS :{LTBLUE}Ligu stacidomojn konstruatajn unu apud la alia: {ORANGE}{STRING} |
1084 | 1084 | STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :{LTBLUE}Permesu ligi staciojn ne rekte najbarajn: {ORANGE}{STRING} |
1093 | 1093 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :kiel aliaj industrioj |
1094 | 1094 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospektori |
1095 | 1095 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Permesu pliajn similajn industriojn en la sama urbo: {ORANGE}{STRING} |
1096 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Samtipaj industrioj povas esti konstruataj proksime unu de la alia: {ORANGE}{STRING} | |
1097 | 1096 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Ĉiam montru longan daton en la statbreto: {ORANGE}{STRING} |
1098 | 1097 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Montru signalojn veturflanke: {ORANGE}{STRING} |
1099 | 1098 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Montru financan fenestron fine de la jaro: {ORANGE}{STRING} |
1136 | 1135 | STR_CONFIG_SETTING_POPULATION_IN_LABEL :{LTBLUE}Montru enloĝantaron en urbnomindikilo: {ORANGE}{STRING} |
1137 | 1136 | |
1138 | 1137 | STR_CONFIG_SETTING_LAND_GENERATOR :{LTBLUE}Landgenerilo: {ORANGE}{STRING} |
1139 | STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Origina | |
1138 | STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Originale | |
1140 | 1139 | STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis |
1141 | 1140 | STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :{LTBLUE}Maksimuma distanco de rando por Oleproduktejoj {ORANGE}{STRING} |
1142 | 1141 | STR_CONFIG_SETTING_SNOWLINE_HEIGHT :{LTBLUE}Neĝregiona alto: {ORANGE}{STRING} |
1147 | 1146 | STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Malregule |
1148 | 1147 | STR_CONFIG_SETTING_TREE_PLACER :{LTBLUE}Arbometa algoritmo: {ORANGE}{STRING} |
1149 | 1148 | STR_CONFIG_SETTING_TREE_PLACER_NONE :Neniu |
1150 | STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Origina | |
1149 | STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Originale | |
1151 | 1150 | STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Plibonigita |
1152 | 1151 | STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :{LTBLUE}Altecmapa turniĝo: {ORANGE}{STRING} |
1153 | 1152 | STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Maldekstrume |
1254 | 1253 | STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :ĉiom |
1255 | 1254 | |
1256 | 1255 | STR_CONFIG_SETTING_TOWN_LAYOUT :{LTBLUE}Strataranĝo por novaj urboj: {ORANGE}{STRING} |
1257 | STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :defaŭlte | |
1256 | STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :originale | |
1258 | 1257 | STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :pli bonaj stratoj |
1259 | 1258 | STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :kvadrataro de 2x2 |
1260 | 1259 | STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :kvadrataro de 3x3 |
1263 | 1262 | STR_CONFIG_SETTING_NOISE_LEVEL :{LTBLUE}Permesu urbe kontrolatan laŭtecon por flughavenoj: {ORANGE}{STRING} |
1264 | 1263 | STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :prohibita |
1265 | 1264 | STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :permesita |
1265 | STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :permesite, propra urbomapo | |
1266 | 1266 | |
1267 | 1267 | STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :nur en pluvarbaroj |
1268 | 1268 | STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :ĉie |
1306 | 1306 | |
1307 | 1307 | STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :{LTBLUE}Padtrovilo por trajnoj: {ORANGE}{STRING} |
1308 | 1308 | STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_NPF :NPF |
1309 | STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Rekomendita) | |
1309 | STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Rekomendite) | |
1310 | 1310 | STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :{LTBLUE}Padtrovilo por stratveturiloj: {ORANGE}{STRING} |
1311 | 1311 | STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_NPF :NPF |
1312 | 1312 | STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_YAPF :YAPF {BLUE}(Rekomendita) |
1313 | 1313 | STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :{LTBLUE}Padtrovilo por ŝipoj: {ORANGE}{STRING} |
1314 | STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_OPF :Originala {BLUE}(Rekomendita) | |
1314 | STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_OPF :Originale {BLUE}(Rekomendite) | |
1315 | 1315 | STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_NPF :NPF |
1316 | STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(malrekomenda) | |
1316 | STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Nerekomendite) | |
1317 | 1317 | |
1318 | 1318 | STR_CONFIG_SETTING_MAP_X :{LTBLUE}X-grandeco de la mapo: {ORANGE}{STRING} |
1319 | 1319 | STR_CONFIG_SETTING_MAP_Y :{LTBLUE}Y-grandeco de la mapo: {ORANGE}{STRING} |
2054 | 2054 | |
2055 | 2055 | STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Urba strataranĝo: |
2056 | 2056 | STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Selektu strataranĝon uzendan por ĉi tiu urbo |
2057 | STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Originalo | |
2057 | STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Originale | |
2058 | 2058 | STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Pli bonaj stratoj |
2059 | 2059 | STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 krado |
2060 | 2060 | STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3 krado |
2089 | 2089 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2090 | 2090 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Ŝarĝo akceptata: {LTBLUE} |
2091 | 2091 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2092 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rela rapideclimo: {LTBLUE}{VELOCITY} | |
2092 | 2093 | |
2093 | 2094 | # Description of land area of different tiles |
2094 | 2095 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rokoj |
2242 | 2243 | STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Grandeco: |
2243 | 2244 | STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} * {NUM} |
2244 | 2245 | |
2246 | STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Enigu hazardan semon | |
2245 | 2247 | STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Ŝanĝu altecon de la neĝlinio |
2246 | 2248 | STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Ŝanĝu komencjaron |
2247 | 2249 | |
4029 | 4031 | STR_LORRY :{BLACK}{LORRY} |
4030 | 4032 | STR_PLANE :{BLACK}{PLANE} |
4031 | 4033 | STR_SHIP :{BLACK}{SHIP} |
4034 | ||
4035 | STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) |
10 | 10 | ##case g in sü |
11 | 11 | |
12 | 12 | |
13 | # $Id: estonian.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
13 | # $Id: estonian.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
14 | 14 | |
15 | 15 | # This file is part of OpenTTD. |
16 | 16 | # OpenTTD 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, version 2. |
1140 | 1140 | STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_ORIGINAL :Algupärane |
1141 | 1141 | STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_REALISTIC :Realistlik |
1142 | 1142 | STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :{LTBLUE}Järsakute kalde suurus rongide jaoks {ORANGE}{STRING}% |
1143 | STR_CONFIG_SETTING_FORBID_90_DEG :{LTBLUE}Rongidel ja laevadel keelatakse 90 kraadised pöörded: {ORANGE}{STRING} {LTBLUE} (vajab NPF) | |
1143 | STR_CONFIG_SETTING_FORBID_90_DEG :{LTBLUE}Rongidel ja laevadel keelatakse 90 kraadised pöörded: {ORANGE}{STRING} {LTBLUE} (ei tööta OPF-ga) | |
1144 | 1144 | STR_CONFIG_SETTING_JOINSTATIONS :{LTBLUE}Kõrvuti ehitatud jaamade ühendamine: {ORANGE}{STRING} |
1145 | 1145 | STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :{LTBLUE}Mitte kõrvuti asetsevate jaamade liitmine: {ORANGE}{STRING} |
1146 | 1146 | STR_CONFIG_SETTING_IMPROVEDLOAD :{LTBLUE}Täiustatud laadimisalgoritm: {ORANGE}{STRING} |
1154 | 1154 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :nagu muud tööstused |
1155 | 1155 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :eeluuringutega |
1156 | 1156 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Samalaadsed tööstused ühes linnas: {ORANGE}{STRING} |
1157 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Samalaadsed tööstused lähestiku: {ORANGE}{STRING} | |
1158 | 1157 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Täispikk kuupäev olekuribal: {ORANGE}{STRING} |
1159 | 1158 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Signaalide paigutamine sõidusuunda: {ORANGE}{STRING} |
1160 | 1159 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Aastalõpu rahavoogude aruanne: {ORANGE}{STRING} |
1405 | 1404 | STR_INTRO_AI_SETTINGS :{BLACK}Tehismõistuse seaded |
1406 | 1405 | STR_INTRO_QUIT :{BLACK}Välju |
1407 | 1406 | |
1408 | STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Alusta uut mängu | |
1407 | STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Alusta uut mängu. Ctrl+Klikk jätab kaardi seadistamise vahele | |
1409 | 1408 | STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Laadi salvestatud mäng |
1410 | 1409 | STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Alusta uut mängu kasutades kõrguskaarti maastikuna |
1411 | 1410 | STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Alusta omatehtud stsenaariumit kasutades uut mängu |
1591 | 1590 | STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Keel: {WHITE}{STRING} |
1592 | 1591 | STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Maastik: {WHITE}{STRING} |
1593 | 1592 | STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Kaardi suurus: {WHITE}{COMMA}x{COMMA} |
1594 | STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Osa serveris: {WHITE}{STRING} | |
1593 | STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Serveri versioon: {WHITE}{STRING} | |
1595 | 1594 | STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Serveri aadress: {WHITE}{STRING} |
1596 | 1595 | STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}Aeg alguses: {WHITE}{DATE_SHORT} |
1597 | 1596 | STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}Aeg hetkel: {WHITE}{DATE_SHORT} |
1737 | 1736 | # Network company list added strings |
1738 | 1737 | STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Klientide nimekiri |
1739 | 1738 | STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Jälgi |
1740 | STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Uus Ettevõte | |
1739 | STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}Uus ettevõte | |
1741 | 1740 | |
1742 | 1741 | # Network client list |
1743 | 1742 | STR_NETWORK_CLIENTLIST_KICK :Viska välja |
1937 | 1936 | STR_RAIL_TOOLBAR_MONORAIL_CONSTRUCTION_CAPTION :{WHITE}Monorelsi ehitamine |
1938 | 1937 | STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :{WHITE}Magnethõljuktee ehitamine |
1939 | 1938 | |
1940 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Ehita rööbasteed | |
1939 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Ehita raudteed. Ctrl vahetab ehitamise eemaldamise vastu | |
1941 | 1940 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Rööbaste ehitamine kasutades "lohistamist" |
1942 | 1941 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Ehita rongidepoo (rongide ehitamiseks ja hoolduseks) |
1943 | 1942 | STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Muuda rööpad meldepunktiks |
2180 | 2179 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2181 | 2180 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Vastuvõetavad veosed: {LTBLUE} |
2182 | 2181 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2182 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Raudtee kiirusepiirang: {LTBLUE}{VELOCITY} | |
2183 | 2183 | |
2184 | 2184 | # Description of land area of different tiles |
2185 | 2185 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kaljud |
3361 | 3361 | STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... ei suutnud muuta pildi tüüpi. |
3362 | 3362 | |
3363 | 3363 | STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Skaala hoiatus |
3364 | STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Kaardi suuruse muutmine pole soovitatav. Jätka? | |
3364 | STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Kaardi suuruse liigne muutmine pole soovitatav. Jätka? | |
3365 | 3365 | |
3366 | 3366 | # Soundset messages |
3367 | 3367 | STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Mäng ei leidnud helisid. Helid saad paigaldada Internetisisu laadimise aknast. |
3574 | 3574 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Sild on maastiku suhtes liiga madal |
3575 | 3575 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Algus ja lõpp peavad samal joonel olema |
3576 | 3576 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... mõlemad sillaotsad peavad olema maal |
3577 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}.. sild on liiga pik | |
3577 | 3578 | |
3578 | 3579 | # Tunnel related errors |
3579 | 3580 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Siia ei saa tunnelit ehitada... |
4165 | 4166 | STR_LORRY :{BLACK}{LORRY} |
4166 | 4167 | STR_PLANE :{BLACK}{PLANE} |
4167 | 4168 | STR_SHIP :{BLACK}{SHIP} |
4169 | ||
4170 | STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) |
9 | 9 | ##grflangid 0x35 |
10 | 10 | |
11 | 11 | |
12 | # $Id: finnish.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
12 | # $Id: finnish.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
1097 | 1097 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :kuten muut tehtaat |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :koekaivaus |
1099 | 1099 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Kaupungissa voi olla useita samanlaisia teollisuustyyppejä: {ORANGE}{STRING} |
1100 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Samantyyppistä teollisuutta voidaan rakentaa lähekkäin: {ORANGE}{STRING} | |
1101 | 1100 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Näytä aina koko päiväys tilapalkissa: {ORANGE}{STRING} |
1102 | 1101 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Näytä opastimet ajokaistalla: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Näytä rahoitusikkuna vuoden lopussa: {ORANGE}{STRING} |
1750 | 1749 | STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :protokollavirhe |
1751 | 1750 | STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF-virhe |
1752 | 1751 | STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :ei valtuutettu |
1753 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :vastaanotettiin omituinen paketti | |
1752 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :vastaanotettiin viallinen tai odottamaton paketti | |
1754 | 1753 | STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :väärä revisio |
1755 | 1754 | STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nimi on jo käytössä |
1756 | 1755 | STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :väärä salasana |
1768 | 1767 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Peli yhä pysäytetty ({STRING}, {STRING}) |
1769 | 1768 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Peli yhä pysäytetty ({STRING}, {STRING}, {STRING}) |
1770 | 1769 | STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Peliä jatketaan ({STRING}) |
1771 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :ei tarpeeksi pelaajia | |
1770 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :pelaajien määrä | |
1772 | 1771 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :yhdistäviä pelaajia |
1773 | 1772 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuaalinen |
1774 | 1773 | ############ End of leave-in-this-order |
2123 | 2122 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2124 | 2123 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Vastaanottaa rahtia: {LTBLUE} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2125 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Raiteiden nopeusrajoitus: {LTBLUE}{VELOCITY} | |
2126 | 2126 | |
2127 | 2127 | # Description of land area of different tiles |
2128 | 2128 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kalliota |
3507 | 3507 | |
3508 | 3508 | # Tree related errors |
3509 | 3509 | STR_ERROR_TREE_ALREADY_HERE :{WHITE}... tässä on jo puu. |
3510 | STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... väärä maasto puulle | |
3510 | 3511 | STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Puuta ei voi istuttaa. |
3511 | 3512 | |
3512 | 3513 | # Bridge related errors |
3517 | 3518 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Silta on liian matalalla maastoa varten |
3518 | 3519 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Alku- ja päätepisteen pitää olla linjassa. |
3519 | 3520 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... sillan molempien päiden pitää sijaita maalla. |
3521 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... silta liian pitkä | |
3520 | 3522 | |
3521 | 3523 | # Tunnel related errors |
3522 | 3524 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Tunnelia ei voi rakentaa... |
10 | 10 | ##gender m m2 f |
11 | 11 | |
12 | 12 | |
13 | # $Id: french.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
13 | # $Id: french.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
14 | 14 | |
15 | 15 | # This file is part of OpenTTD. |
16 | 16 | # OpenTTD 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, version 2. |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :comme les autres industries |
1099 | 1099 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospection |
1100 | 1100 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Permettre plusieurs industries similaires par ville{NBSP}: {ORANGE}{STRING} |
1101 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Permettre plusieurs industries similaires à proximité{NBSP}: {ORANGE}{STRING} | |
1102 | 1101 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Afficher la date complète dans la barre d'état{NBSP}: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Signaux ferroviaires du côté du sens de conduite{NBSP}: {ORANGE}{STRING} |
1104 | 1103 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Afficher le bilan de finances en fin d'année{NBSP}: {ORANGE}{STRING} |
1751 | 1750 | STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :erreur de protocole |
1752 | 1751 | STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF requis |
1753 | 1752 | STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :non autorisé |
1754 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :paquet étrange reçu | |
1753 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :paquet invalide ou inattendu reçu | |
1755 | 1754 | STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :révision incorrecte |
1756 | 1755 | STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nom déjà utilisé |
1757 | 1756 | STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :mot de passe de partie incorrect |
1769 | 1768 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Partie toujours suspendue ({STRING}, {STRING}) |
1770 | 1769 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Partie toujours suspendue ({STRING}, {STRING}, {STRING}) |
1771 | 1770 | STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Partie reprise ({STRING}) |
1772 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :pas assez de joueurs | |
1771 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :nombre de joueurs | |
1773 | 1772 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :connexion de clients |
1774 | 1773 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuel |
1775 | 1774 | ############ End of leave-in-this-order |
2124 | 2123 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF{NBSP}: {LTBLUE}{STRING} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Cargaison acceptée{NBSP}: {LTBLUE} |
2126 | 2125 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2126 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Vitesse limite de la voie{NBSP}: {LTBLUE}{VELOCITY} | |
2127 | 2127 | |
2128 | 2128 | # Description of land area of different tiles |
2129 | 2129 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Roches |
3508 | 3508 | |
3509 | 3509 | # Tree related errors |
3510 | 3510 | STR_ERROR_TREE_ALREADY_HERE :{WHITE}... il y a déjà des arbres |
3511 | STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... mauvais terrain pour ce type d'arbre | |
3511 | 3512 | STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Plantation impossible... |
3512 | 3513 | |
3513 | 3514 | # Bridge related errors |
3518 | 3519 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Le pont est trop bas pour le terrain |
3519 | 3520 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Le début et la fin doivent être alignés |
3520 | 3521 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... les deux extrémités du pont doivent être sur la terre ferme |
3522 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... pont trop long | |
3521 | 3523 | |
3522 | 3524 | # Tunnel related errors |
3523 | 3525 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Impossible de construire un tunnel ici... |
10 | 10 | ##gender m f n |
11 | 11 | |
12 | 12 | |
13 | # $Id: galician.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
13 | # $Id: galician.txt 19555 2010-04-03 20:19:26Z rubidium $ | |
14 | 14 | |
15 | 15 | # This file is part of OpenTTD. |
16 | 16 | # OpenTTD 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, version 2. |
1081 | 1081 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :coma outras industrias |
1082 | 1082 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospección |
1083 | 1083 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Permitir múltiples industrias similares en cada cidade: {ORANGE}{STRING} |
1084 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Permiti-la construción de industrias iguais cercanas: {ORANGE}{STRING} | |
1085 | 1084 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Mostrar sempre a data longa na barra de estado: {ORANGE}{STRING} |
1086 | 1085 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Mostrar sinais no lado de conducción: {ORANGE}{STRING} |
1087 | 1086 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Mostra-la fiestra de finanzas ó final do ano: {ORANGE}{STRING} |
10 | 10 | ##gender m w n p |
11 | 11 | |
12 | 12 | |
13 | # $Id: german.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
13 | # $Id: german.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
14 | 14 | |
15 | 15 | # This file is part of OpenTTD. |
16 | 16 | # OpenTTD 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, version 2. |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Wie andere Industrien |
1099 | 1099 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Durch Prospektion |
1100 | 1100 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Mehrere gleichartige Industrien pro Stadt erlauben: {ORANGE}{STRING} |
1101 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Gleiche Industrien können nahe beieinander gebaut werden: {ORANGE}{STRING} | |
1102 | 1101 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Lange Datumsanzeige in der Statusleiste (links unten): {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Signale auf der Seite der Straßenverkehrsrichtung anzeigen: {ORANGE}{STRING} |
1104 | 1103 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Zeige Firmenfinanzen am Ende des Jahres: {ORANGE}{STRING} |
1751 | 1750 | STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :Protokollfehler |
1752 | 1751 | STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF-Versionen stimmen nicht überein |
1753 | 1752 | STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :nicht autorisiert |
1754 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :Unerwartetes Datenpaket empfangen | |
1753 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :Ungültiges oder unerwartetes Datenpaket empfangen | |
1755 | 1754 | STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :Falsche Version |
1756 | 1755 | STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :Name wird bereits verwendet |
1757 | 1756 | STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :Falsches Spielpasswort |
1769 | 1768 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spiel weiterhin angehalten ({STRING}, {STRING}) |
1770 | 1769 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spiel weiterhin angehalten ({STRING}, {STRING}, {STRING}) |
1771 | 1770 | STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spiel fortgesetzt ({STRING}) |
1772 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :nicht genug Spieler | |
1771 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :Spieleranzahl | |
1773 | 1772 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :Teilnehmer meldet sich an |
1774 | 1773 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuell |
1775 | 1774 | ############ End of leave-in-this-order |
2124 | 2123 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Akzeptierte Fracht: {LTBLUE} |
2126 | 2125 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2126 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Geschwindigkeitsbegrenzung auf Gleisen: {LTBLUE}{VELOCITY} | |
2127 | 2127 | |
2128 | 2128 | # Description of land area of different tiles |
2129 | 2129 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Felsen |
2903 | 2903 | STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Zeige Einzelheiten des Schiffes |
2904 | 2904 | STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Zeige Einzelheiten des Flugzeuges |
2905 | 2905 | |
2906 | STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Laufende Zugbewegung - Klicke hier, um den Zug anzuhalten / zu starten | |
2907 | STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Laufende Fahrzeugbewegung - Klick zum Anhalten bzw. Losschicken | |
2908 | STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Laufende Schiffsbewegung - Klicke hier, um das Schiff anzuhalten / zu starten | |
2909 | STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Laufende Flugzeugbewegung - Klick zum Anhalten bzw. losschicken | |
2906 | STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Laufende Zugbewegung - Klicke hier, um den Zug anzuhalten / zu starten. Strg + Klick scrollt zum Bestimmungsort | |
2907 | STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Laufende Fahrzeugbewegung - Klick zum Anhalten bzw. Losschicken. Strg + Klick scrollt zum Bestimmungsort | |
2908 | STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Laufende Schiffsbewegung - Klicke hier, um das Schiff anzuhalten / zu starten. Strg + Klick scrollt zum Bestimmungsort | |
2909 | STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Laufende Flugzeugbewegung - Klick zum Anhalten bzw. losschicken. Strg + Klick scrollt zum Bestimmungsort | |
2910 | 2910 | |
2911 | 2911 | # Messages in the start stop button in the vehicle view |
2912 | 2912 | STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Laden / Entladen |
3518 | 3518 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Die Brücke ist zu niedrig für diese Umgebung |
3519 | 3519 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Anfang und Ende müssen auf einer Linie liegen |
3520 | 3520 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... Brücke muss an beiden Seiten auf Land enden |
3521 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... Brücke zu lang | |
3521 | 3522 | |
3522 | 3523 | # Tunnel related errors |
3523 | 3524 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Tunnel kann hier nicht gebaut werden... |
11 | 11 | ##case subs date geniki |
12 | 12 | |
13 | 13 | |
14 | # $Id: greek.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
14 | # $Id: greek.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
15 | 15 | |
16 | 16 | # This file is part of OpenTTD. |
17 | 17 | # OpenTTD 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, version 2. |
1192 | 1192 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :όπως σε άλλες βιομηχανίες |
1193 | 1193 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :επικείμενη |
1194 | 1194 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Επιτρέπονται πολλαπλές όμοιες βιομηχανίες ανα πόλη: {ORANGE}{STRING} |
1195 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Βιομηχανίες ίδου τύπου μπορούν να χτιστούν κοντά η μία στην άλλη: {ORANGE}{STRING} | |
1196 | 1195 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Εμφάνιση ολόκληρης ημερομηνίας στη γραμμή κατάστασης: {ORANGE}{STRING} |
1197 | 1196 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Εμφάνιση σήμανσης στην πλευρά οδήγησης: {ORANGE}{STRING} |
1198 | 1197 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Εμφάνιση παράθυρου οικονομικών στο τέλος του έτους: {ORANGE}{STRING} |
1726 | 1725 | ############ End of leave-in-this-order |
1727 | 1726 | |
1728 | 1727 | # Network game lobby |
1729 | STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Αίθουσας παιχνιδιού για πολλούς παίκτες | |
1728 | STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Αίθουσα παιχνιδιού για πολλούς παίκτες | |
1730 | 1729 | |
1731 | 1730 | STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Προετοιμασία για συμμετοχή: {ORANGE}{STRING} |
1732 | 1731 | STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}Λίστα όλων των εταιριών αυτή τη στιγμή στο παιχνίδι. Μπορείτε είτε να συμμετάσχετε σε μία ή να δημιουργήσετε μια νέα αν υπάρχει κενή θέση |
1873 | 1872 | STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} συμμετέχει στην εταιρία #{2:NUM} |
1874 | 1873 | STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} συμμετέχει στους θεατές |
1875 | 1874 | STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ξεκίνησε μια νεα εταιρία (#{2:NUM}) |
1876 | STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} αποχώρηση από το παιχνίδι ({2:STRING}) | |
1875 | STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} αποχώρησε από το παιχνίδι ({2:STRING}) | |
1877 | 1876 | STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} άλλαξε το όνομα του/της σε {STRING} |
1878 | 1877 | STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} έδωσε στην εταιρία σας {2:CURRENCY} |
1879 | 1878 | STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Δώσατε {1:STRING} {2:CURRENCY} |
2218 | 2217 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2219 | 2218 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Αποδεκτό Εμπόρευμα: {LTBLUE} |
2220 | 2219 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2220 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}'Οριο ταχυτητας: {LTBLUE}{VELOCITY} | |
2221 | 2221 | |
2222 | 2222 | # Description of land area of different tiles |
2223 | 2223 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Πέτρες |
3608 | 3608 | |
3609 | 3609 | # Tree related errors |
3610 | 3610 | STR_ERROR_TREE_ALREADY_HERE :{WHITE}... υπάρχει ήδη δέντρο εδώ |
3611 | STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... λάθος έδαφος για αυτό το τύπο δέντρου | |
3611 | 3612 | STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Δεν γίνεται να φυτευθεί δέντρο εδώ... |
3612 | 3613 | |
3613 | 3614 | # Bridge related errors |
3618 | 3619 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Η γέφυρα είναι πολύ χαμηλή για το έδαφος |
3619 | 3620 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Η αρχή και το τέλος πρέπει να είναι σε ευθεία |
3620 | 3621 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... και τα δύο άκρα της γέφυρας πρέπει να είναι σε έδαφος |
3622 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... γέφυρα πολλή μεγάλη | |
3621 | 3623 | |
3622 | 3624 | # Tunnel related errors |
3623 | 3625 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Δεν μπορεί να χτιστεί τούνελ εδώ... |
4214 | 4216 | STR_PLANE :{BLACK}{PLANE} |
4215 | 4217 | STR_SHIP :{BLACK}{SHIP} |
4216 | 4218 | |
4219 | STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) |
11 | 11 | ##case singular plural gen |
12 | 12 | |
13 | 13 | |
14 | # $Id: hebrew.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
14 | # $Id: hebrew.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
15 | 15 | |
16 | 16 | # This file is part of OpenTTD. |
17 | 17 | # OpenTTD 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, version 2. |
1111 | 1111 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :כמו שאר התעשיות |
1112 | 1112 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :חיפוש אחר התעשיות |
1113 | 1113 | STR_CONFIG_SETTING_MULTIPINDTOWN :{ORANGE}{STRING}{LTBLUE} :אפשר יצירת מספר תעשיות זהות בשטחה של עיר אחת |
1114 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}:תעשיות מאותו הסוג יכולים להבנות אחד ליד השני {ORANGE}{STRING} | |
1115 | 1114 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}תמיד תראה תאריך מלא בסגל הסטטוס: {ORANGE}{STRING} |
1116 | 1115 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}הראה רמזורים בצד הנהיגה: {ORANGE}{STRING} |
1117 | 1116 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}הראה את חלון מערך הכספים בכל סוף שנה : {ORANGE}{STRING} |
2137 | 2136 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}{LTBLUE}{STRING}: שדרוג גראפי |
2138 | 2137 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK} :מקבל {LTBLUE} |
2139 | 2138 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({1:STRING} {0:COMMA}/8 ) |
2139 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}מגבלת מהירות על המסילה: {LTBLUE}{VELOCITY} | |
2140 | 2140 | |
2141 | 2141 | # Description of land area of different tiles |
2142 | 2142 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :סלעים |
3531 | 3531 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}גשר נמוך מידי עבור השטח |
3532 | 3532 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}התחלה וסיום חייבים להיות באותו הקו |
3533 | 3533 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... קצות הגשר צריכים להיות על קרקע |
3534 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... גשר ארוך מידי | |
3534 | 3535 | |
3535 | 3536 | # Tunnel related errors |
3536 | 3537 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}לא ניתן להקים מנהרה כאן... |
4124 | 4125 | STR_LORRY :{BLACK}{LORRY} |
4125 | 4126 | STR_PLANE :{BLACK}{PLANE} |
4126 | 4127 | STR_SHIP :{BLACK}{SHIP} |
4128 | ||
4129 | STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) |
10 | 10 | ##case t ba |
11 | 11 | |
12 | 12 | |
13 | # $Id: hungarian.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
13 | # $Id: hungarian.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
14 | 14 | |
15 | 15 | # This file is part of OpenTTD. |
16 | 16 | # OpenTTD 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, version 2. |
1161 | 1161 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :mint általában |
1162 | 1162 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :kutatás támogatása |
1163 | 1163 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Több ugyanolyan gazdasági épület településenként: {ORANGE}{STRING} |
1164 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Több ugyanolyan gazdasági épület építhető közel egymáshoz: {ORANGE}{STRING} | |
1165 | 1164 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Mindig teljes dátum a képernyőn: {ORANGE}{STRING} |
1166 | 1165 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Jelzők a menetirány szerinti oldalon legyenek: {ORANGE}{STRING} |
1167 | 1166 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Pénzügyi összesítés minden év végén: {ORANGE}{STRING} |
2187 | 2186 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2188 | 2187 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Elfogad: {LTBLUE} |
2189 | 2188 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2189 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Vasúti pályasebesség: {LTBLUE}{VELOCITY} | |
2190 | 2190 | |
2191 | 2191 | # Description of land area of different tiles |
2192 | 2192 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kövek |
10 | 10 | ##gender karlkyn kvenkyn hvorugkyn |
11 | 11 | |
12 | 12 | |
13 | # $Id: icelandic.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
13 | # $Id: icelandic.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
14 | 14 | |
15 | 15 | # This file is part of OpenTTD. |
16 | 16 | # OpenTTD 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, version 2. |
1086 | 1086 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :eins og annarra iðnaða |
1087 | 1087 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :með jarðefnisleit |
1088 | 1088 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Leyfa marga svipaða iðnaði í sama bæ: {ORANGE}{STRING} |
1089 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Má byggja iðnaði af sömu gerð nálægt hvor öðrum: {ORANGE}{STRING} | |
1090 | 1089 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Sýna alltaf fulla dagsetningu á upplýsingaslá: {ORANGE}{STRING} |
1091 | 1090 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Sýna umferðarljós akstursmegin: {ORANGE}{STRING} |
1092 | 1091 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Sýna fjármálaglugga í lok árs: {ORANGE}{STRING} |
2072 | 2071 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2073 | 2072 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Tekið á móti: {LTBLUE} |
2074 | 2073 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2074 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Hámarkshraði járnbrautar: {LTBLUE}{VELOCITY} | |
2075 | 2075 | |
2076 | 2076 | # Description of land area of different tiles |
2077 | 2077 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Klettar |
9 | 9 | ##grflangid 0x5a |
10 | 10 | |
11 | 11 | |
12 | # $Id: indonesian.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
12 | # $Id: indonesian.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
1097 | 1097 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :seperti industri lainnya |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :lebih prospektif |
1099 | 1099 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Ijinkan lebih dari satu industri sejenis dalam satu kota: {ORANGE}{STRING} |
1100 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Industri dengan tipe sama dapat dibangun saling berdekatan: {ORANGE}{STRING} | |
1101 | 1100 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Selalu tampilkan tgl lengkap pada status bar: {ORANGE}{STRING} |
1102 | 1101 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Tampilkan sinyal pada lajur kendara: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Tampilkan laporan keuangan pada akhir tahun: {ORANGE}{STRING} |
2123 | 2122 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2124 | 2123 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Muatan diterima: {LTBLUE} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2125 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Batasan kecepatan rel: {LTBLUE}{VELOCITY} | |
2126 | 2126 | |
2127 | 2127 | # Description of land area of different tiles |
2128 | 2128 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Bebatuan |
3517 | 3517 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Jembatan lebih rendah dari daratan |
3518 | 3518 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Awal dan akhir harus segaris |
3519 | 3519 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... kedua ujung jembatan harus berada di daratan |
3520 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... jembatan terlalu panjang | |
3520 | 3521 | |
3521 | 3522 | # Tunnel related errors |
3522 | 3523 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Tidak dapat membangun terowongan disini... |
4108 | 4109 | STR_LORRY :{BLACK}{LORRY} |
4109 | 4110 | STR_PLANE :{BLACK}{PLANE} |
4110 | 4111 | STR_SHIP :{BLACK}{SHIP} |
4112 | ||
4113 | STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) |
11 | 11 | ##case ms mp fs fp |
12 | 12 | |
13 | 13 | |
14 | # $Id: italian.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
14 | # $Id: italian.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
15 | 15 | |
16 | 16 | # This file is part of OpenTTD. |
17 | 17 | # OpenTTD 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, version 2. |
1099 | 1099 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Come le altre industrie |
1100 | 1100 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Previa prospezione |
1101 | 1101 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Consenti più industrie dello stesso tipo nella stessa città: {ORANGE}{STRING} |
1102 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Consenti la costruzione di industrie uguali anche molto vicine: {ORANGE}{STRING} | |
1103 | 1102 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Mostra sempre la data lunga nella barra di stato: {ORANGE}{STRING} |
1104 | 1103 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Mostra i segnali sul lato di guida: {ORANGE}{STRING} |
1105 | 1104 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Mostra la finestra delle finanze alla fine dell'anno: {ORANGE}{STRING} |
1752 | 1751 | STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :errore di protocollo |
1753 | 1752 | STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :file NewGRF non corrispondenti |
1754 | 1753 | STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :non autorizzato |
1755 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :ricevuto un pacchetto inatteso | |
1754 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :ricevuto un pacchetto non validto o inatteso | |
1756 | 1755 | STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :revisione differente |
1757 | 1756 | STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nome già in uso |
1758 | 1757 | STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :password errata |
1770 | 1769 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Partita ancora in pausa ({STRING}, {STRING}) |
1771 | 1770 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Partita ancora in pausa ({STRING}, {STRING}, {STRING}) |
1772 | 1771 | STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Partita ripresa ({STRING}) |
1773 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :giocatori insufficienti | |
1772 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :numero di giocatori | |
1774 | 1773 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :connessione client in corso |
1775 | 1774 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuale |
1776 | 1775 | ############ End of leave-in-this-order |
2125 | 2124 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2126 | 2125 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Merce accettata: {LTBLUE} |
2127 | 2126 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2127 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Limite di velocità rotaie: {LTBLUE}{VELOCITY} | |
2128 | 2128 | |
2129 | 2129 | # Description of land area of different tiles |
2130 | 2130 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rocce |
3519 | 3519 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Il ponte è troppo basso per il terreno |
3520 | 3520 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Inizio e fine devono essere allineati |
3521 | 3521 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... gli estremi del ponte devono trovarsi entrambi sul terreno |
3522 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... ponte troppo lungo | |
3522 | 3523 | |
3523 | 3524 | # Tunnel related errors |
3524 | 3525 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Impossibile costruire il tunnel qui... |
9 | 9 | ##grflangid 0x39 |
10 | 10 | |
11 | 11 | |
12 | # $Id: japanese.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
12 | # $Id: japanese.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
1097 | 1097 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :他の産業と同様 |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :探鉱 |
1099 | 1099 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}町内に重複している産業の建設を許容:{ORANGE}{STRING} |
1100 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}同類の産業を近くに建設することを許容:{ORANGE}{STRING} | |
1101 | 1100 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}常に状況バーに長型日付を表示:{ORANGE}{STRING} |
1102 | 1101 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}信号を運転側に表示:{ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}年末に財政ウインドウを表示:{ORANGE}{STRING} |
1158 | 1157 | STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :時計回り |
1159 | 1158 | STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :{LTBLUE}平地シナリオの高さ:{ORANGE}{STRING} |
1160 | 1159 | STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :{LTBLUE}マップの端のタイルの地形変更を有効にする: {ORANGE}{STRING} |
1160 | STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}北端の1箇所以上のタイルが空白ではありません。 | |
1161 | STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}マップ端の1箇所以上のタイルが水域ではありません | |
1161 | 1162 | |
1162 | 1163 | STR_CONFIG_SETTING_STATION_SPREAD :{LTBLUE}駅の幅の上限:{ORANGE}{STRING} {RED}注意:高い数はパフォーマンスに悪影響を与えます |
1163 | 1164 | STR_CONFIG_SETTING_SERVICEATHELIPAD :{LTBLUE}ヘリコプターを自動的ヘリパッドで修理:{ORANGE}{STRING} |
1211 | 1212 | STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :最も使われている鉄道種類 |
1212 | 1213 | STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :{LTBLUE}予約済みの線路を表示: {ORANGE}{STRING} |
1213 | 1214 | STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :{LTBLUE}ビルドのツールバーは使用後に表示したままにする:{ORANGE}{STRING} |
1215 | STR_CONFIG_SETTING_EXPENSES_LAYOUT :{LTBLUE}財政ウィンドウ内でグループ分けされた費用表示をする: {ORANGE}{STRING} | |
1214 | 1216 | |
1215 | 1217 | STR_CONFIG_SETTING_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}適当な車両がまだ購入不可能であっても、基礎の建設を許容:{ORANGE}{STRING} |
1216 | 1218 | STR_CONFIG_SETTING_MAX_TRAINS :{LTBLUE}一人のプレヤーの列車数上限:{ORANGE}{STRING} |
1242 | 1244 | STR_CONFIG_SETTING_STARTING_YEAR :{LTBLUE}開始年:{ORANGE}{STRING} |
1243 | 1245 | STR_CONFIG_SETTING_SMOOTH_ECONOMY :{LTBLUE}スムーズな経済を使用:{ORANGE}{STRING} |
1244 | 1246 | STR_CONFIG_SETTING_ALLOW_SHARES :{LTBLUE}他社所有株式の購入を許容する:{ORANGE}{STRING} |
1247 | STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :{LTBLUE}フィーダーシステムの末端で支払われる収益比率: {ORANGE}{STRING}% | |
1245 | 1248 | STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :{LTBLUE}ドラッグで自動建設する信号設備間隔: {ORANGE}{STRING} タイル |
1246 | 1249 | STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}次の年まで腕木式信号を建設:{ORANGE}{STRING} |
1247 | 1250 | STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :{LTBLUE}信号のGUIを使用: {ORANGE}{STRING} |
1261 | 1264 | STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :格子状(3x3) |
1262 | 1265 | STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :ランダム |
1263 | 1266 | STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :{LTBLUE}町は道路建設を許容: {ORANGE}{STRING} |
1267 | STR_CONFIG_SETTING_NOISE_LEVEL :{LTBLUE}空港建設に対する街の騒音レベル規制を許可する: {ORANGE}{STRING} | |
1268 | STR_CONFIG_SETTING_TOWN_FOUNDING :{LTBLUE}インゲームで街の新設に出資: {ORANGE}{STRING} | |
1264 | 1269 | STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :不可能 |
1265 | 1270 | STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :可能 |
1266 | 1271 | STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :可能、町を設定もできます |
1267 | 1272 | |
1273 | STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :{LTBLUE}インゲームでの植樹: {ORANGE}{STRING} | |
1268 | 1274 | STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NONE :なし {RED}(製剤所は使えなくなります) |
1269 | 1275 | STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_RAINFOREST :雨林の中だけ |
1270 | 1276 | STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_ALL :各地 |
1275 | 1281 | STR_CONFIG_SETTING_TOOLBAR_POS_RIGHT :右 |
1276 | 1282 | STR_CONFIG_SETTING_SNAP_RADIUS :{LTBLUE}ウィンドウスナップ範囲:{ORANGE}{STRING} px |
1277 | 1283 | STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :{LTBLUE}ウィンドウスナップ範囲:{ORANGE}切 |
1284 | STR_CONFIG_SETTING_SOFT_LIMIT :{LTBLUE}ウィンドウ数のソフトウェア制限 (non-sticky): {ORANGE}{STRING} | |
1285 | STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :{LTBLUE}ウィンドウ数のソフトウェア制限 (non-sticky): {ORANGE}無効 | |
1278 | 1286 | STR_CONFIG_SETTING_TOWN_GROWTH :{LTBLUE}市町村の展開:{ORANGE}{STRING} |
1279 | 1287 | STR_CONFIG_SETTING_TOWN_GROWTH_NONE :なし |
1280 | 1288 | STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :遅い |
1328 | 1336 | STR_INTRO_PLAY_SCENARIO :{BLACK}シナリオをプレイ |
1329 | 1337 | STR_INTRO_PLAY_HEIGHTMAP :{BLACK}ハイトマップをプレイ |
1330 | 1338 | STR_INTRO_SCENARIO_EDITOR :{BLACK}シナリオエディタ |
1331 | STR_INTRO_MULTIPLAYER :{BLACK}多人数プレイ | |
1339 | STR_INTRO_MULTIPLAYER :{BLACK}マルチプレイヤーゲーム | |
1332 | 1340 | |
1333 | 1341 | STR_INTRO_GAME_OPTIONS :{BLACK}ゲームの基本設定 |
1334 | 1342 | STR_INTRO_DIFFICULTY :{BLACK} 難易度 ({STRING}) |
1354 | 1362 | STR_INTRO_TOOLTIP_DIFFICULTY_OPTIONS :{BLACK}難易度の設定を表示します |
1355 | 1363 | STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}パッチ・拡張設定を表示 |
1356 | 1364 | STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF の設定を表示 |
1365 | STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}コンテンツの新規追加または更新のチェックとダウンロード | |
1357 | 1366 | STR_INTRO_TOOLTIP_AI_SETTINGS :{BLACK}AI の設定を表示します |
1358 | 1367 | STR_INTRO_TOOLTIP_QUIT :{BLACK}OpenTTD を終了します |
1359 | 1368 | |
1451 | 1460 | STR_FACE_SIMPLE_TOOLTIP :{BLACK}顔を簡単に選択します。 |
1452 | 1461 | STR_FACE_LOAD :{BLACK}開く |
1453 | 1462 | STR_FACE_LOAD_TOOLTIP :{BLACK}お好みの顔を開きます。 |
1454 | STR_FACE_LOAD_DONE :{WHITE}お好みの顔は OpenTTD の設定ファイルから読み込みました。 | |
1455 | STR_FACE_FACECODE :{BLACK}プレヤーの顔番号 | |
1463 | STR_FACE_LOAD_DONE :{WHITE}お好みの顔を OpenTTD の設定ファイルから読み込みました。 | |
1464 | STR_FACE_FACECODE :{BLACK}プレーヤーの顔番号 | |
1456 | 1465 | STR_FACE_FACECODE_TOOLTIP :{BLACK}プレヤーの顔番号を表示/変更 |
1457 | 1466 | STR_FACE_FACECODE_CAPTION :{WHITE}プレヤーの顔番号を表示/変更 |
1458 | 1467 | STR_FACE_FACECODE_SET :{WHITE}新しい顔番号が設定されました。 |
1673 | 1682 | |
1674 | 1683 | # Network client list |
1675 | 1684 | STR_NETWORK_CLIENTLIST_KICK :蹴る |
1685 | STR_NETWORK_CLIENTLIST_BAN :BAN | |
1676 | 1686 | STR_NETWORK_CLIENTLIST_GIVE_MONEY :送金 |
1677 | 1687 | STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :全員へ発言 |
1678 | 1688 | STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :チームへ発言 |
1701 | 1711 | # Network chat |
1702 | 1712 | STR_NETWORK_CHAT_SEND :{BLACK}送信 |
1703 | 1713 | STR_NETWORK_CHAT_COMPANY_CAPTION :『チーム』: |
1714 | STR_NETWORK_CHAT_CLIENT_CAPTION :[プライベート] {STRING}: | |
1704 | 1715 | STR_NETWORK_CHAT_ALL_CAPTION :『全員』: |
1705 | 1716 | |
1706 | 1717 | STR_NETWORK_CHAT_COMPANY :『チーム』{STRING}:{WHITE}{STRING} |
1748 | 1759 | ############ End of leave-in-this-order |
1749 | 1760 | |
1750 | 1761 | # Network related errors |
1762 | STR_NETWORK_SERVER_MESSAGE :*** {1:STRING} | |
1751 | 1763 | ############ Leave those lines in this order!! |
1752 | 1764 | STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :ゲームはポーズされました。 ({STRING}) |
1753 | 1765 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :ゲームはまだポーズされています。 ({STRING}) |
1760 | 1772 | ############ End of leave-in-this-order |
1761 | 1773 | STR_NETWORK_MESSAGE_CLIENT_LEAVING :退出 |
1762 | 1774 | STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} は参加してきました |
1775 | STR_NETWORK_MESSAGE_CLIENT_JOINED_ID :*** {STRING} がゲームに参加しました (クライアント #{2:NUM}) | |
1763 | 1776 | STR_NETWORK_MESSAGE_CLIENT_COMPANY_JOIN :*** {STRING} が 会社 #{2:NUM} の経営に参加しました。 |
1764 | 1777 | STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} が傍観者として参加しました。 |
1765 | 1778 | STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} が新会社 (#{2:NUM}) を設立しました。 |
1768 | 1781 | STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} は {2:CURRENCY} を送金してくれました |
1769 | 1782 | STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** {1:STRING} に {2:CURRENCY} を送金しました |
1770 | 1783 | STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}サーバがセッションを終了しました |
1771 | STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}サーバが再起道中...{}しばらくお待ちください... | |
1784 | STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}このサーバは再起動中です...{}しばらくお待ちください... | |
1772 | 1785 | |
1773 | 1786 | # Content downloading window |
1774 | 1787 | STR_CONTENT_TITLE :{WHITE}ダウンロード中 |
1790 | 1803 | STR_CONTENT_DETAIL_TITLE :{SILVER}項目の情報 |
1791 | 1804 | STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}これはダウンロードをするために選択しませんでした |
1792 | 1805 | STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}これをダウンロードをするために選択しました |
1806 | STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}依存性によりダウンロードを選択されます | |
1793 | 1807 | STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}これはもうダウンロードされました |
1794 | 1808 | STR_CONTENT_DETAIL_NAME :{SILVER}項目名:{WHITE}{STRING} |
1795 | 1809 | STR_CONTENT_DETAIL_VERSION :{SILVER}バージョン:{WHITE}{STRING} |
2103 | 2117 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:{LTBLUE}{STRING} |
2104 | 2118 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}受入れる貨物:{LTBLUE} |
2105 | 2119 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2120 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}線路の制限速度: {LTBLUE}{VELOCITY} | |
2106 | 2121 | |
2107 | 2122 | # Description of land area of different tiles |
2108 | 2123 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :岩石 |
2337 | 2352 | STR_NEWGRF_ERROR_MSG_WARNING :{RED}警告:{SILVER}{STRING} |
2338 | 2353 | STR_NEWGRF_ERROR_MSG_ERROR :{RED}エラー:{SILVER}{STRING} |
2339 | 2354 | STR_NEWGRF_ERROR_MSG_FATAL :{RED}エラー:{SILVER}{STRING} |
2355 | STR_NEWGRF_ERROR_FATAL_POPUP :{WHITE}致命的な NewGRF エラーが発生しました: {}{STRING} | |
2340 | 2356 | STR_NEWGRF_ERROR_VERSION_NUMBER :{1:STRING}はOpenTTDのTTDPatchバージョンに対応していません。 |
2341 | 2357 | STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{1:STRING}はTTDの{STRING}バージョンのみに対応しています。 |
2342 | 2358 | STR_NEWGRF_ERROR_UNSET_SWITCH :{1:STRING}を使用時に、{STRING}を入にしなければなりません |
2351 | 2367 | STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :不明な Action 0 プロパティ。 |
2352 | 2368 | STR_NEWGRF_ERROR_INVALID_ID :無効な ID が含む |
2353 | 2369 | STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} は壊れたスプライトを含みます。壊れたスプライトは赤疑問符として表示されます。 |
2354 | STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :複数の Action 8 の項目が含む | |
2370 | STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :複数の Action 8 の項目を含んでいます。 | |
2371 | STR_NEWGRF_ERROR_READ_BOUNDS :擬似スプライト読込:既に終端に達しました | |
2355 | 2372 | |
2356 | 2373 | # NewGRF related 'general' warnings |
2357 | 2374 | STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}注意! |
2358 | STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}実行中のゲームに変更を適用して、クラッシュのリスクがあります。{}続けてもよろしいですか? | |
2375 | STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}実行中のゲームに変更を適用すると、クラッシュのリスクがあります。{}続けてもよろしいですか? | |
2359 | 2376 | |
2360 | 2377 | STR_NEWGRF_DUPLICATE_GRFID :{WHITE}ファイルが追加できません:重複のGRF ID |
2361 | 2378 | STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}一致しているファイルが見つかりません(代替 GRF を使用中) |
2369 | 2386 | STR_NEWGRF_BROKEN :{WHITE}NewGRF '{0:STRING}' のビヘービアは desync もしくはクラッシュを行わせる可能性があります! |
2370 | 2387 | STR_BROKEN_VEHICLE_LENGTH :{WHITE}「{1:COMPANY}」が所有している「{0:VEHICLE}」という電車は無効な長さがあります。使用している NewGRF が原因であるかもしれません。desync もしくはクラッシュが行う可能性があります! |
2371 | 2388 | |
2389 | STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' は生産コールバック内で無限ループを起こしました. | |
2372 | 2390 | |
2373 | 2391 | # Sign list window |
2374 | 2392 | STR_SIGN_LIST_CAPTION :{WHITE}標示のリスト - {COMMA}つの標示 |
2544 | 2562 | STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({1:COMPANY}が{0:COMMA}%株式保有) |
2545 | 2563 | |
2546 | 2564 | STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}本部ビルを建設 |
2565 | STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}本社を建てます | |
2547 | 2566 | STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}本部ビルを見る |
2567 | STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}本社を見ます | |
2548 | 2568 | STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}本部ビルを移動 |
2549 | 2569 | STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}会社の本部ビルを移動します(価格:会社の価値の1%) |
2550 | 2570 | |
2796 | 2816 | STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :磁気浮上式鉄道車両 |
2797 | 2817 | |
2798 | 2818 | STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}価格:{CURRENCY} 重量:{WEIGHT_S}{}最大速度:{VELOCITY} 出力:{POWER}{}運転費:一年間{CURRENCY}{}容量:{CARGO} |
2819 | STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}価格: {CURRENCY} 重量: {WEIGHT_S}{}速度: {VELOCITY} 出力: {POWER} 最大牽引力: {6:FORCE}{}運転費用: {4:CURRENCY}/年{}容量: {5:CARGO} | |
2799 | 2820 | STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_CAPACITY_RUNCOST :{BLACK}値段:{CURRENCY} 最高速度:{VELOCITY}{}収容能力:{CARGO}、{CARGO}{}維持費:一年間{CURRENCY} |
2800 | 2821 | STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAPACITY_RUNCOST :{BLACK}値段:{CURRENCY} 最高速度:{VELOCITY}{}収容能力:{CARGO}{}維持費:一年間{CURRENCY} |
2801 | 2822 | |
3023 | 3044 | STR_ORDER_TOGGLE_UNLOAD :{BLACK}全て降ろす |
3024 | 3045 | STR_ORDER_DROP_UNLOAD_IF_ACCEPTED :受入有なら降ろす |
3025 | 3046 | STR_ORDER_DROP_UNLOAD :全て降ろす |
3047 | STR_ORDER_DROP_TRANSFER :転送 | |
3026 | 3048 | STR_ORDER_DROP_NO_UNLOADING :降ろさない |
3027 | 3049 | STR_ORDER_TOOLTIP_UNLOAD :{BLACK}選択した指令の降ろす方法を変更します |
3028 | 3050 | |
3098 | 3120 | STR_ORDER_UNLOAD_FULL_LOAD :(降ろして全積載まで待つ) |
3099 | 3121 | STR_ORDER_UNLOAD_FULL_LOAD_ANY :(降ろしていずれか一種のを全積載) |
3100 | 3122 | STR_ORDER_UNLOAD_NO_LOAD :(降ろして空荷のまま出発) |
3101 | STR_ORDER_NO_UNLOAD :(積み荷を降ろせずに貨物を積む) | |
3102 | STR_ORDER_NO_UNLOAD_FULL_LOAD :(積み荷を降ろせずに満載する) | |
3103 | STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(積み荷を降ろせずにいかに満載する) | |
3123 | STR_ORDER_NO_UNLOAD :(積み荷を降ろさずに貨物を積む) | |
3124 | STR_ORDER_NO_UNLOAD_FULL_LOAD :(積み荷を降ろさずに満載するまで待つ) | |
3125 | STR_ORDER_NO_UNLOAD_FULL_LOAD_ANY :(積み荷を降ろさずにいずれかを満載するまで待つ) | |
3104 | 3126 | |
3105 | 3127 | |
3106 | 3128 | STR_ORDER_CONDITIONAL_UNCONDITIONAL :指令{COMMA}に飛ぶ |
3160 | 3182 | STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}AI を停止して、スクリプトを読み込んで、AI を再起動します。 |
3161 | 3183 | |
3162 | 3184 | STR_ERROR_NO_AI :{WHITE}この OpenTTD は AI のサポートが入っていません... |
3163 | STR_ERROR_NO_AI_SUB :{WHITE}... 使用可能のAIがありません! | |
3164 | ||
3165 | STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}実行中の AI の一つは予期せずに終了しました。AI の作者に AI デバッグのウインドウのスクリーンショットが含む電子メールをご送信ください。 | |
3185 | STR_ERROR_NO_AI_SUB :{WHITE}... 使用可能なAIがありません! | |
3186 | ||
3187 | STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}実行中の AI の一つが予期せずに終了しました。AI の作者に AI デバッグのウインドウのスクリーンショットが含む電子メールをご送信ください。 | |
3166 | 3188 | STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI デバッグウインドウはサーバのみで使用することができます。 |
3167 | 3189 | |
3168 | 3190 | # AI configuration window |
3169 | 3191 | STR_AI_CONFIG_CAPTION :{WHITE}AI の設定 |
3170 | STR_AI_CONFIG_LIST_TOOLTIP :{BLACK}次のゲームにすべての使用する AI を表示します。 | |
3171 | STR_AI_CONFIG_HUMAN_PLAYER :人間のプレヤー | |
3192 | STR_AI_CONFIG_LIST_TOOLTIP :{BLACK}次のゲームに使用するすべての AI を表示します。 | |
3193 | STR_AI_CONFIG_HUMAN_PLAYER :人間のプレーヤー | |
3172 | 3194 | STR_AI_CONFIG_RANDOM_AI :ランダムな AI |
3173 | 3195 | |
3174 | 3196 | STR_AI_CONFIG_MOVE_UP :{BLACK}上にします |
3233 | 3255 | STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}このゲームは路面電車に対応していないバージョンで保存されましたので、すべての路面電車が削除されました。 |
3234 | 3256 | |
3235 | 3257 | # Map generation messages |
3258 | STR_ERROR_COULD_NOT_CREATE_TOWN :{WHITE}マップ生成中止...{}... 適合する街の配置がありません | |
3236 | 3259 | STR_ERROR_NO_TOWN_IN_SCENARIO :{WHITE}... このシナリオに市町村がありません |
3237 | 3260 | |
3238 | 3261 | STR_ERROR_PNGMAP :{WHITE}PNG ファイルから地形が読み込めません... |
4040 | 4063 | STR_LORRY :{BLACK}{LORRY} |
4041 | 4064 | STR_PLANE :{BLACK}{PLANE} |
4042 | 4065 | STR_SHIP :{BLACK}{SHIP} |
4066 |
10 | 10 | ##gender m f |
11 | 11 | |
12 | 12 | |
13 | # $Id: korean.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
13 | # $Id: korean.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
14 | 14 | |
15 | 15 | # This file is part of OpenTTD. |
16 | 16 | # OpenTTD 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, version 2. |
539 | 539 | STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :{G=f}노선 관리자 |
540 | 540 | STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :{G=f}이사 |
541 | 541 | STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :{G=m}이사장 |
542 | STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :{G=m}의장 | |
542 | STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :{G=m}회장 | |
543 | 543 | STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :{G=m}회장 |
544 | 544 | STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :{G=m}타이쿤! |
545 | 545 | |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :건설 가능 (위치 선택 가능, 7배 비용) |
1099 | 1099 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :건설 가능 (무작위 위치) |
1100 | 1100 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}한 도시에 비슷한 산업시설을 여러 개 건설할 수 있게 허용 : {ORANGE}{STRING} |
1101 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}같은 종류의 산업 시설을 가깝게 지을 수 있게 허용 : {ORANGE}{STRING} | |
1102 | 1101 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}날짜를 일(日)단위까지 상세하게 표시 : {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}신호기를 차량 통행 방향에 설치 : {ORANGE}{STRING} |
1104 | 1103 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}연말에 재정 창을 띄움 : {ORANGE}{STRING} |
2124 | 2123 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}화물 인수: {LTBLUE} |
2126 | 2125 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2126 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}철도 속도 제한: {LTBLUE}{VELOCITY} | |
2127 | 2127 | |
2128 | 2128 | # Description of land area of different tiles |
2129 | 2129 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :암석 |
3518 | 3518 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}그 지형은 다리를 건설하기에 너무 낮습니다 |
3519 | 3519 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}시작과 끝은 한 줄 위에 있어야 합니다 |
3520 | 3520 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... 다리의 양 끝은 모두 땅이어야합니다. |
3521 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... 다리가 너무 깁니다! | |
3521 | 3522 | |
3522 | 3523 | # Tunnel related errors |
3523 | 3524 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}여기에 터널을 지을 수 없습니다... |
11 | 11 | ##case kas |
12 | 12 | |
13 | 13 | |
14 | # $Id: latvian.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
14 | # $Id: latvian.txt 19555 2010-04-03 20:19:26Z rubidium $ | |
15 | 15 | |
16 | 16 | # This file is part of OpenTTD. |
17 | 17 | # OpenTTD 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, version 2. |
1074 | 1074 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :kā citas industrijas |
1075 | 1075 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :ienesīga |
1076 | 1076 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Atļaut vairākas līdzīgas rūpnīcas vienā pilsētā : {ORANGE}{STRING} |
1077 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Viena veida rūpnīcas var būvēt tuvu vienu otrai: {ORANGE}{STRING} | |
1078 | 1077 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Vienmēr rādīt garu datumu statusa joslā: {ORANGE}{STRING} |
1079 | 1078 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Rādīt signālus braukšanas pusē: {ORANGE}{STRING} |
1080 | 1079 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Gada beigās rādīt finanšu pārskatu: {ORANGE}{STRING} |
11 | 11 | ##case kas ko kam ka kuo kur kreip |
12 | 12 | |
13 | 13 | |
14 | # $Id: lithuanian.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
14 | # $Id: lithuanian.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
15 | 15 | |
16 | 16 | # This file is part of OpenTTD. |
17 | 17 | # OpenTTD 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, version 2. |
24 | 24 | STR_EMPTY : |
25 | 25 | STR_UNDEFINED :(neapibrėžta eilutė) |
26 | 26 | STR_JUST_NOTHING :Nieko |
27 | STR_JUST_NOTHING.kas :Niekas | |
27 | 28 | STR_JUST_NOTHING.ko :Nieko |
29 | STR_JUST_NOTHING.kam :Niekui | |
28 | 30 | STR_JUST_NOTHING.ka :Nieką |
31 | STR_JUST_NOTHING.kuo :Nieku | |
32 | STR_JUST_NOTHING.kur :Niekur | |
29 | 33 | |
30 | 34 | # Cargo related strings |
31 | 35 | # Plural cargo name |
32 | 36 | STR_CARGO_PLURAL_NOTHING : |
33 | 37 | STR_CARGO_PLURAL_PASSENGERS :Keleiviai |
38 | STR_CARGO_PLURAL_PASSENGERS.kas :Keleiviai | |
34 | 39 | STR_CARGO_PLURAL_PASSENGERS.ko :Keleivių |
40 | STR_CARGO_PLURAL_PASSENGERS.kam :Keleiviams | |
35 | 41 | STR_CARGO_PLURAL_PASSENGERS.ka :Keleivius |
42 | STR_CARGO_PLURAL_PASSENGERS.kuo :Keleiviais | |
36 | 43 | STR_CARGO_PLURAL_COAL :Anglis |
37 | 44 | STR_CARGO_PLURAL_COAL.kas :Anglis |
38 | 45 | STR_CARGO_PLURAL_COAL.ko :Anglies |
1165 | 1172 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :kaip kitos gamyklos |
1166 | 1173 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :vaizdavimas |
1167 | 1174 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Leisti kelias panašias pramonės įmones viename mieste: {ORANGE}{STRING} |
1168 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Leisti statyti to paties tipo fabrikus arti vienas kito: {ORANGE}{STRING} | |
1169 | 1175 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Rodyti pilną datą būsenos eilutėje: {ORANGE}{STRING} |
1170 | 1176 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Šviesoforus rodyti vairuotojo pusėje: {ORANGE}{STRING} |
1171 | 1177 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Rodyti finansinę ataskaitą metų pabaigoje: {ORANGE}{STRING} |
2191 | 2197 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2192 | 2198 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Krovinys priimtas: {LTBLUE} |
2193 | 2199 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2200 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Geležinkelių greičio limitas: {LTBLUE}{VELOCITY} | |
2194 | 2201 | |
2195 | 2202 | # Description of land area of different tiles |
2196 | 2203 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Akmenys |
2409 | 2416 | |
2410 | 2417 | STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Informacijos nėra |
2411 | 2418 | STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Atitinkamas failas nerastas |
2412 | STR_NEWGRF_SETTINGS_DISABLED :{RED}Uždrausta | |
2419 | STR_NEWGRF_SETTINGS_DISABLED :{RED}Išjungta | |
2413 | 2420 | |
2414 | 2421 | STR_NEWGRF_SETTINGS_PARAMETER_QUERY :{BLACK}Įveskite Papild. grafikos parametrus |
2415 | 2422 | |
2890 | 2897 | STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Mes ką tik sukūrėme naują {STRING.ka}! Ar norėtumėt vienerius metus išskirtinėmis teisėmis bandyti šią transporto priemonęm, kol dar nepradėta jos serijinė gamyba? |
2891 | 2898 | STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :lokomotyvas |
2892 | 2899 | STR_ENGINE_PREVIEW_ROAD_VEHICLE :automobilis |
2900 | STR_ENGINE_PREVIEW_ROAD_VEHICLE.kas :automobilis | |
2901 | STR_ENGINE_PREVIEW_ROAD_VEHICLE.ka :automobilį | |
2893 | 2902 | STR_ENGINE_PREVIEW_AIRCRAFT :lėktuvas |
2894 | 2903 | STR_ENGINE_PREVIEW_SHIP :laivas |
2895 | 2904 | STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :vienbegis lokomotyvas |
2904 | 2913 | STR_REPLACE_VEHICLES_WHITE :{WHITE}Keisti tr. priemones {STRING} |
2905 | 2914 | STR_REPLACE_VEHICLE_TRAIN :Traukinys |
2906 | 2915 | STR_REPLACE_VEHICLE_ROAD_VEHICLE :Automobilis |
2916 | STR_REPLACE_VEHICLE_ROAD_VEHICLE.kas :automobilis | |
2917 | STR_REPLACE_VEHICLE_ROAD_VEHICLE.ka :Automobilį | |
2907 | 2918 | STR_REPLACE_VEHICLE_SHIP :Laivas |
2908 | 2919 | STR_REPLACE_VEHICLE_AIRCRAFT :Lėktuvas |
2909 | 2920 | |
3195 | 3206 | |
3196 | 3207 | STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} |
3197 | 3208 | |
3198 | STR_ORDER_FULL_LOAD :(Pilanai pasikrauti) | |
3209 | STR_ORDER_FULL_LOAD :(Pilnai pasikrauti) | |
3199 | 3210 | STR_ORDER_FULL_LOAD_ANY :(Pilnai pasikrauti, bet kurio krovinio) |
3200 | 3211 | STR_ORDER_NO_LOAD :(Nepakrauti) |
3201 | 3212 | STR_ORDER_UNLOAD :(Iškrauti ir pasiimti krovinį) |
3585 | 3596 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Tiltas per žemas reljefui |
3586 | 3597 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Pradžia ir pabaiga turi būti vienoje linijoje |
3587 | 3598 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... abu tilto galai turi būti ant žemės |
3599 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... tiltas per ilgas | |
3588 | 3600 | |
3589 | 3601 | # Tunnel related errors |
3590 | 3602 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Negalima čia statyti tunelio... |
9 | 9 | ##grflangid 0x23 |
10 | 10 | |
11 | 11 | |
12 | # $Id: luxembourgish.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
12 | # $Id: luxembourgish.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
1097 | 1097 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :wei aaner Industrien |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Erkundung |
1099 | 1099 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Erlaabt méi der selwecht Industrien pro Stad: {ORANGE}{STRING} |
1100 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Industrien vum gläichen Typ kënnen méi no beieneen gebaut ginn: {ORANGE}{STRING} | |
1101 | 1100 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Emmer den laangen Datum an der Statusbar uweisen: {ORANGE}{STRING} |
1102 | 1101 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Weis d'Signaler op der Fuerersäit: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Weis d'Finanzen um Ënn vum Joër: {ORANGE}{STRING} |
1483 | 1482 | STR_FACE_EYEBROWS :Aaenbraaen: |
1484 | 1483 | STR_FACE_EYEBROWS_TOOLTIP :{BLACK}Aaenbraaen Ouerréng |
1485 | 1484 | STR_FACE_EYECOLOUR :Aaenfaarw: |
1486 | STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Aaenfaarw Ouerréng | |
1485 | STR_FACE_EYECOLOUR_TOOLTIP :{BLACK}Aanfaarw änneren | |
1487 | 1486 | STR_FACE_GLASSES :Brëll: |
1488 | 1487 | STR_FACE_GLASSES_TOOLTIP :{BLACK}Brëll anschalten |
1489 | 1488 | STR_FACE_GLASSES_TOOLTIP_2 :{BLACK}Brëll änneren |
1532 | 1531 | STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}SPILL INFO |
1533 | 1532 | STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}Spiller: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} |
1534 | 1533 | STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Sprooch: {WHITE}{STRING} |
1535 | STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Umgebung: {WHITE}{STRING} | |
1534 | STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Landschaft: {WHITE}{STRING} | |
1536 | 1535 | STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Kaartegréisst: {WHITE}{COMMA}x{COMMA} |
1537 | 1536 | STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Serverversioun: {WHITE}{STRING} |
1538 | 1537 | STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Serveradress: {WHITE}{STRING} |
1750 | 1749 | STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :Protokollfehler |
1751 | 1750 | STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF ënnerscheedlech |
1752 | 1751 | STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :net authoriséiert |
1753 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :komëschen Pak erhaalen | |
1752 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :invaliden oder onerwaarte Packet kritt | |
1754 | 1753 | STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :Falsch Versioun |
1755 | 1754 | STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :Numm gët schon benotzt |
1756 | 1755 | STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :falscht Passwuert |
1768 | 1767 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spill nach ëmmer pauséiert ({STRING}, {STRING}) |
1769 | 1768 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spill nach ëmmer pauséiert ({STRING}, {STRING}, {STRING}) |
1770 | 1769 | STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spill geet weider ({STRING}) |
1771 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :net genuch Spiller | |
1770 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :Unzuel Spiller | |
1772 | 1771 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :Klienten verbannen |
1773 | 1772 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuell |
1774 | 1773 | ############ End of leave-in-this-order |
1808 | 1807 | STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Dës Ofhängegkeet gouf ausgewielt fir den download |
1809 | 1808 | STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Du hues des schon |
1810 | 1809 | STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Dësen Inhalt ass net bekannt an kann net an OpenTTD downgeload gin |
1811 | STR_CONTENT_DETAIL_UPDATE :{SILVER}Dëst ass en Austosch fir eng existent {STRING} | |
1810 | STR_CONTENT_DETAIL_UPDATE :{SILVER}Dëst ass en Austausch fir eng existent {STRING} | |
1812 | 1811 | STR_CONTENT_DETAIL_NAME :{SILVER}Numm: {WHITE}{STRING} |
1813 | 1812 | STR_CONTENT_DETAIL_VERSION :{SILVER}Versioun: {WHITE}{STRING} |
1814 | 1813 | STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Beschreiwung: {WHITE}{STRING} |
2026 | 2025 | |
2027 | 2026 | STR_STATION_BUILD_AIRPORT_SMALL_AIRPORTS :{BLACK}Kleng Fluchhäfen |
2028 | 2027 | STR_STATION_BUILD_AIRPORT_LARGE_AIRPORTS :{BLACK}Grouss Fluchhäfen |
2029 | STR_STATION_BUILD_AIRPORT_HUB_AIRPORTS :{BLACK} Fluchhafen Verdeeler | |
2028 | STR_STATION_BUILD_AIRPORT_HUB_AIRPORTS :{BLACK}Fluchhafen Verdeeler | |
2030 | 2029 | STR_STATION_BUILD_AIRPORT_HELIPORTS :{BLACK}Helicopter Fluchhafen |
2031 | 2030 | |
2032 | 2031 | STR_STATION_BUILD_NOISE :{BLACK}Kaméidi: {GOLD}{COMMA} |
2123 | 2122 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2124 | 2123 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Akzeptéiert Luedung: {LTBLUE} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2125 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Schinnen Geschw.-Limit: {LTBLUE}{VELOCITY} | |
2126 | 2126 | |
2127 | 2127 | # Description of land area of different tiles |
2128 | 2128 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Fielsen |
2533 | 2533 | STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Ausgaben/Ankommen |
2534 | 2534 | STR_FINANCES_YEAR :{WHITE}{NUM} |
2535 | 2535 | STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Konstruktioun |
2536 | STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nei Gefieher | |
2536 | STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nei Gefierer | |
2537 | 2537 | STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Zuch Betriebskäschten |
2538 | 2538 | STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Stroossengefierer Betriebskäschten |
2539 | 2539 | STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Fliger Betriebskäschten |
2540 | 2540 | STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Schëff Betriebskäschten |
2541 | STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Besëtzt Ennerhalt | |
2541 | STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Besëtz Ennerhalt | |
2542 | 2542 | STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Zuch Ankommen |
2543 | 2543 | STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Stroossengefierer Ankommen |
2544 | 2544 | STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Fliger Ankommen |
2902 | 2902 | STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Weist Schëffdetailer |
2903 | 2903 | STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Weist d'Fligerdetailer |
2904 | 2904 | |
2905 | STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Momentan Aktioun - klickt hei fir den Zuch ze stopen/starten | |
2906 | STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Momentan Aktioun - klickt hei fir d'Gefiert ze stoppen/starten | |
2907 | STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Momentan Aktioun - Klickt hei fir d'Schëff ze stoppen/starten | |
2908 | STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Momentan Aktioun - Klickt hei fir den Fliger ze stoppen/starten | |
2905 | STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Momentan Aktioun - klickt hei fir den Zuch ze stopen/starten. Ctrl+Klick fir op Destinatioun ze scrollen | |
2906 | STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Momentan Aktioun - klickt hei fir d'Gefiert ze stoppen/starten. Ctrl+Klick fir op Destinatioun ze scrollen | |
2907 | STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Momentan Aktioun - Klickt hei fir d'Schëff ze stoppen/starten. Ctrl+Klick fir op Destinatioun ze scrollen | |
2908 | STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Momentan Aktioun - Klickt hei fir den Fliger ze stoppen/starten. Ctrl+Klick fir op Destinatioun ze scrollen | |
2909 | 2909 | |
2910 | 2910 | # Messages in the start stop button in the vehicle view |
2911 | 2911 | STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Lueden / Entlueden |
3517 | 3517 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Bréckass ze déif fir dësen Terrain |
3518 | 3518 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Start an Enn mussen op enger Linn sinn |
3519 | 3519 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... dei zwee Enner vun der Bréck mussen um Land sinn |
3520 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... Bréck ze laang | |
3520 | 3521 | |
3521 | 3522 | # Tunnel related errors |
3522 | 3523 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Kann den Tunnel hei net bauen... |
4108 | 4109 | STR_LORRY :{BLACK}{LORRY} |
4109 | 4110 | STR_PLANE :{BLACK}{PLANE} |
4110 | 4111 | STR_SHIP :{BLACK}{SHIP} |
4112 | ||
4113 | STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) |
9 | 9 | ##grflangid 0x3c |
10 | 10 | |
11 | 11 | |
12 | # $Id: malay.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
12 | # $Id: malay.txt 19555 2010-04-03 20:19:26Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
1097 | 1097 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :seperti industri lain |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :sedang prospek |
1099 | 1099 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Benarkan pelbagai industri sejenis di setiap bandar: {ORANGE}{STRING} |
1100 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Industri sejenis boleh dibina berhampiran satu sama lain: {ORANGE}{STRING} | |
1101 | 1100 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Sentiasa paparkan tarikh panjang di status bar: {ORANGE}{STRING} |
1102 | 1101 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Paparkan isyarat di sebelah pemandu: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Paparkan tetingkap kewangan setiap penghujung tahun: {ORANGE}{STRING} |
9 | 9 | ##grflangid 0x2f |
10 | 10 | |
11 | 11 | |
12 | # $Id: norwegian_bokmal.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
12 | # $Id: norwegian_bokmal.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
1097 | 1097 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :som andre næringer |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospekterer |
1099 | 1099 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Tillat flere like industrier i samme by: {ORANGE}{STRING} |
1100 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Industrier av samme type kan bygges nær hverandre: {ORANGE}{STRING} | |
1101 | 1100 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Vis alltid lang dato på statuslinjen: {ORANGE}{STRING} |
1102 | 1101 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Vis signaler på kjøresiden: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Vis regnskap ved nyttår: {ORANGE}{STRING} |
2123 | 2122 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2124 | 2123 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Godtatte varer: {LTBLUE} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2125 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Fartsgrense for jernbanespor: {LTBLUE}{VELOCITY} | |
2126 | 2126 | |
2127 | 2127 | # Description of land area of different tiles |
2128 | 2128 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Steiner |
3517 | 3517 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Broen er for lav for terrenget |
3518 | 3518 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Start og slutt må være på linje |
3519 | 3519 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... broens ender må være på land |
3520 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... broen er for lang | |
3520 | 3521 | |
3521 | 3522 | # Tunnel related errors |
3522 | 3523 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Kan ikke bygge tunnel her... |
4108 | 4109 | STR_LORRY :{BLACK}{LORRY} |
4109 | 4110 | STR_PLANE :{BLACK}{PLANE} |
4110 | 4111 | STR_SHIP :{BLACK}{SHIP} |
4112 | ||
4113 | STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) |
10 | 10 | ##gender masculine feminine neuter |
11 | 11 | |
12 | 12 | |
13 | # $Id: norwegian_nynorsk.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
13 | # $Id: norwegian_nynorsk.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
14 | 14 | |
15 | 15 | # This file is part of OpenTTD. |
16 | 16 | # OpenTTD 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, version 2. |
514 | 514 | |
515 | 515 | STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Graf over overskot |
516 | 516 | STR_GRAPH_INCOME_CAPTION :{WHITE}Graf over inntekter |
517 | STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Antal leverte varer | |
517 | STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Leverte einingar | |
518 | 518 | STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Prestasjonsvurdering av firma (maks. poeng=1000) |
519 | 519 | STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Firmaverdi |
520 | 520 | |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :som andre industriar |
1099 | 1099 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospekterar |
1100 | 1100 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Tillet fleire like industriar i samme by: {ORANGE}{STRING} |
1101 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Industriar av same type kan byggjast nær einannan: {ORANGE}{STRING} | |
1102 | 1101 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Syne alltid lang dato på statuslinja: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Syne signal i køyreretninga: {ORANGE}{STRING} |
1104 | 1103 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Syne rekneskap ved nyttår: {ORANGE}{STRING} |
2124 | 2123 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Godtekne varer: {LTBLUE} |
2126 | 2125 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2126 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Fartsgrense for jernbanespor: {LTBLUE}{VELOCITY} | |
2127 | 2127 | |
2128 | 2128 | # Description of land area of different tiles |
2129 | 2129 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Steinar |
3518 | 3518 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Brua er for låg for terrenget |
3519 | 3519 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Start og slutt må vere på linje |
3520 | 3520 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... endane på brua må vere på land |
3521 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... brua er for lang | |
3521 | 3522 | |
3522 | 3523 | # Tunnel related errors |
3523 | 3524 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Kan ikkje byggje tunnel her... |
4109 | 4110 | STR_LORRY :{BLACK}{LORRY} |
4110 | 4111 | STR_PLANE :{BLACK}{PLANE} |
4111 | 4112 | STR_SHIP :{BLACK}{SHIP} |
4113 | ||
4114 | STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) |
11 | 11 | ##case d c b n m w |
12 | 12 | |
13 | 13 | |
14 | # $Id: polish.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
14 | # $Id: polish.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
15 | 15 | |
16 | 16 | # This file is part of OpenTTD. |
17 | 17 | # OpenTTD 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, version 2. |
1477 | 1477 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :jak inne przedsiębiorstwa |
1478 | 1478 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :przez poszukiwanie |
1479 | 1479 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Pozwól na wiele podobnych przedsiębiorstw w mieście: {ORANGE}{STRING} |
1480 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Przedsiębiorstwa jednego typu mogą być budowane obok siebie: {ORANGE}{STRING} | |
1481 | 1480 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Zawsze pokazuj datę w długim formacie w pasku statusu: {ORANGE}{STRING} |
1482 | 1481 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Pokazuj sygnały po stronie jazdy: {ORANGE}{STRING} |
1483 | 1482 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Pokazuj okno finansów na koniec roku: {ORANGE}{STRING} |
2503 | 2502 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2504 | 2503 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Akceptowany ładunek: {LTBLUE} |
2505 | 2504 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2505 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Limit prędkości torowiska {LTBLUE}{VELOCITY} | |
2506 | 2506 | |
2507 | 2507 | # Description of land area of different tiles |
2508 | 2508 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Skały |
3901 | 3901 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most jest za nisko dla tego terenu |
3902 | 3902 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Początek i koniec muszą być w jednej linii |
3903 | 3903 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... końce mostu muszą znajdować się na lądzie |
3904 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... za długi most | |
3904 | 3905 | |
3905 | 3906 | # Tunnel related errors |
3906 | 3907 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Nie można tutaj wybudować tunelu... |
9 | 9 | ##grflangid 0x36 |
10 | 10 | |
11 | 11 | |
12 | # $Id: portuguese.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
12 | # $Id: portuguese.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
770 | 770 | |
771 | 771 | STR_NEWS_NEW_TOWN :{BLACK}{BIGFONT}{STRING} subsidiou a construção da nova cidade de {TOWN}! |
772 | 772 | |
773 | STR_NEWS_INDUSTRY_CONSTRUCTION :{BIGFONT}{BLACK}Nova {STRING} em construção em {TOWN}! | |
774 | STR_NEWS_INDUSTRY_PLANTED :{BIGFONT}{BLACK}Nova {STRING} está a ser plantada em {TOWN}! | |
773 | STR_NEWS_INDUSTRY_CONSTRUCTION :{BIGFONT}{BLACK}{STRING} em construção em {TOWN}! | |
774 | STR_NEWS_INDUSTRY_PLANTED :{BIGFONT}{BLACK}{STRING} está a ser plantada em {TOWN}! | |
775 | 775 | |
776 | 776 | STR_NEWS_INDUSTRY_CLOSURE_GENERAL :{BIGFONT}{BLACK}{STRING} anuncia fecho iminente! |
777 | 777 | STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS :{BIGFONT}{BLACK}Problemas no abastecimento levam {STRING} a anunciar fecho iminente! |
1097 | 1097 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :como as outras indústrias |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospecção |
1099 | 1099 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Permitir várias indústrias semelhantes por cidade: {ORANGE}{STRING} |
1100 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Indústrias do mesmo tipo podem ser construídas perto: {ORANGE}{STRING} | |
1101 | 1100 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Mostrar sempre a data completa na barra de estado: {ORANGE}{STRING} |
1102 | 1101 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Mostrar sinais no lado da circulação: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Mostrar janela das finanças no fim do ano: {ORANGE}{STRING} |
1248 | 1247 | STR_CONFIG_SETTING_ALLOW_SHARES :{LTBLUE}Permite comprar acções de outras empresas: {ORANGE}{STRING} |
1249 | 1248 | STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :{LTBLUE}Percentagem do lucro total a pagar em transferências: {ORANGE}{STRING}% |
1250 | 1249 | STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :{LTBLUE}Ao arrastar colocar sinais a cada: {ORANGE}{STRING} quadrado(s) |
1251 | STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Construir automaticamente semáforos antes de: {ORANGE}{STRING} | |
1250 | STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Usar automaticamente sinais clássicos antes de: {ORANGE}{STRING} | |
1252 | 1251 | STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :{LTBLUE}Activar ferramenta de sinais: {ORANGE}{STRING} |
1253 | 1252 | STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :{LTBLUE}Tipo de farol padrão para construir: {ORANGE}{STRING} |
1254 | 1253 | STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Faróis de obstrução |
1750 | 1749 | STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :erro de protocolo |
1751 | 1750 | STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF incompatível |
1752 | 1751 | STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :não autorizado |
1753 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :recebido um pacote estranho | |
1752 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :foi recebido um pacote inesperado ou inválido | |
1754 | 1753 | STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :revisão incorrecta |
1755 | 1754 | STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nome já está a ser utilizado |
1756 | 1755 | STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :palavra-chave incorrecta |
1768 | 1767 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Jogo ainda em pausa ({STRING}, {STRING}) |
1769 | 1768 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Jogo ainda em pausa ({STRING}, {STRING}, {STRING}) |
1770 | 1769 | STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Jogo a Correr ({STRING}) |
1771 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :jogadores insuficientes | |
1770 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :número de jogadores | |
1772 | 1771 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :a ligar clientes |
1773 | 1772 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manual |
1774 | 1773 | ############ End of leave-in-this-order |
1885 | 1884 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Construir depósito ferroviário (para compra e manutenção de comboios) |
1886 | 1885 | STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Converter linha em ponto de passagem. Ctrl permite juntar pontos de passagem |
1887 | 1886 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Construir estação ferroviária. Ctrl permite juntar estações |
1888 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construir sinais ferroviários. Ctrl alterna entre semáforos/sinais luminosos{}Arrastar constrói sinais numa linha de caminho-de-ferro. Ctrl constrói sinais até a próxima junção{}Ctrl+Clique alterna abrir a janela de selecção de sinais | |
1887 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Construir sinais ferroviários. Ctrl alterna entre s. clássicos/luminosos{}Arrastar constrói sinais numa linha de caminho-de-ferro. Ctrl constrói sinais até a próxima junção{}Ctrl+Clique alterna abrir a janela de selecção de sinais | |
1889 | 1888 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Construir ponte ferroviária |
1890 | 1889 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Construir túnel ferroviário |
1891 | 1890 | STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Alternar entre construir/remover linha férrea, sinais, pontos de passagem e estações. Fixar o Ctrl também remove a linha férrea de pontos de passagem e estações |
1918 | 1917 | |
1919 | 1918 | # Signal window |
1920 | 1919 | STR_BUILD_SIGNAL_CAPTION :{WHITE}Selecção de Sinal |
1921 | STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Sinal Normal (semáforo){}Este é o tipo mais básico de sinal, que só permite um comboio dentro da mesma linha ferroviária ao mesmo tempo. | |
1922 | STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (semáforo){}Verde enquanto existir um ou mais sinais de saída verdes no seguimento da linha. De outro modo ficará vermelho. | |
1923 | STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Sinal de Saída (semáforo){}Funciona da mesma forma que o sinal normal mas é necessário para conseguir a cor correcta nos pré-sinais de entrada e combinado. | |
1924 | STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Sinal Combinado (semáforo){}O sinal combinado funciona como um sinal de entrada e de saída. Este permite construir grandes "árvores" de pré-sinais. | |
1925 | STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Sinal (semáforo){}Os sinais permitem que vários comboios utilizem a mesma linha desde que consigam chegar aos seus destinos em segurança. | |
1926 | STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Sinais de sentido único (semáforo){}Os sinais permitem que vários comboios utilizem a mesma linha desde que consigam chegar aos seus destinos em segurança. Os comboios apenas podem passar no sentido dos semáforos. | |
1920 | STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Sinal Normal (clássico){}Este é o tipo mais básico de sinal, que só permite um comboio dentro da mesma linha ferroviária ao mesmo tempo. | |
1921 | STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (clássico){}Verde enquanto existir um ou mais sinais de saída verdes no seguimento da linha. De outro modo ficará vermelho. | |
1922 | STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Sinal de Saída (clássico){}Funciona da mesma forma que o sinal normal mas é necessário para conseguir a cor correcta nos pré-sinais de entrada e combinado. | |
1923 | STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Sinal Combinado (clássico){}O sinal combinado funciona como um sinal de entrada e de saída. Este permite construir grandes "árvores" de pré-sinais. | |
1924 | STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Sinal para encaminhar (clássico){}Os sinais permitem que vários comboios utilizem a mesma linha desde que consigam chegar aos seus destinos em segurança. | |
1925 | STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Sinal para encaminhar de sentido único (clássico){}Os sinais permitem que vários comboios utilizem a mesma linha desde que consigam chegar aos seus destinos em segurança. Os comboios não podem passar no sentido oposto dos sinais. | |
1927 | 1926 | STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Sinal Normal(eléctrico){}Este é o tipo mais básico de sinal, que só permite um comboio dentro da mesma linha ferroviária ao mesmo tempo. |
1928 | 1927 | STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Sinal de Entrada (eléctrico){}Verde enquanto existir um ou mais sinais de saída verdes no seguimento da linha. De outro modo ficará vermelho. |
1929 | 1928 | STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Sinal de Saída (eléctrico){}Funciona da mesma forma que o sinal normal mas é necessário para conseguir a cor correcta nos pré-sinais de entrada e combinado. |
1930 | 1929 | STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Sinal Combinado (eléctrico){}O sinal combinado funciona como um sinal de entrada e de saída. Este permite construir grandes "árvores" de pré-sinais. |
1931 | STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Sinal (eléctrico){}Os sinais permitem que vários comboios entrem na mesma linha ao mesmo tempo, desde que consigam chegar ao seu destino em segurança. | |
1932 | STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Um sinal de sentido único (eléctrico){}Um sinal de trajecto permite que mais de um comboio passe ao mesmo tempo um sinal se, o comboio conseguir reservar um caminho para onde posteriormente possa parar sem prejudicar o seguinte. Sinais de um único sentido não podem ser passados no sentido contrário. | |
1930 | STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Sinal para encaminhar (eléctrico){}Os sinais permitem que vários comboios entrem na mesma linha ao mesmo tempo, desde que consigam chegar ao seu destino em segurança. | |
1931 | STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Sinal para encaminhar de sentido único (eléctrico){}Um sinal de trajecto permite que mais de um comboio passe ao mesmo tempo um sinal se, o comboio conseguir reservar um caminho para onde posteriormente possa parar sem prejudicar o seguinte. Sinais de um único sentido não podem ser passados no sentido contrário. | |
1933 | 1932 | STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Converter Sinal{}Quando seleccionado, ao fazer clique num sinal existente este será convertido no tipo e variante de sinal seleccionado, Ctrl+clique irá comutar a variante existente. |
1934 | 1933 | STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Densidade de sinais |
1935 | 1934 | STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Diminuir densidade de sinais |
2123 | 2122 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2124 | 2123 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carga aceite: {LTBLUE} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2125 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Limite de velocidade da linha: {LTBLUE}{VELOCITY} | |
2126 | 2126 | |
2127 | 2127 | # Description of land area of different tiles |
2128 | 2128 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rochas |
3507 | 3507 | |
3508 | 3508 | # Tree related errors |
3509 | 3509 | STR_ERROR_TREE_ALREADY_HERE :{WHITE}... árvore já plantada aqui |
3510 | STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... terreno não indicado para este tipo de árvore | |
3510 | 3511 | STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Impossível plantar árvore aqui... |
3511 | 3512 | |
3512 | 3513 | # Bridge related errors |
3517 | 3518 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Ponte muito baixa para o terreno |
3518 | 3519 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Início e fim devem estar alinhados |
3519 | 3520 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... ambos os extremos da ponte devem estar em terra |
3521 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... ponte demasiado longa | |
3520 | 3522 | |
3521 | 3523 | # Tunnel related errors |
3522 | 3524 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Não é possível construir túnel aqui... |
9 | 9 | ##grflangid 0x28 |
10 | 10 | |
11 | 11 | |
12 | # $Id: romanian.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
12 | # $Id: romanian.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
1097 | 1097 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :ca alte industrii |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :de prospecţie |
1099 | 1099 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Permite mai multe industrii similare în acelaşi oras: {ORANGE}{STRING} |
1100 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Industrii identice pot fi construite în apropiere una de cealaltă: {ORANGE}{STRING} | |
1101 | 1100 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Afişează întotdeauna data în format lung în bara de stare: {ORANGE}{STRING} |
1102 | 1101 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Afişează semafoarele pe partea de circulaţie: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Afişează finanţele la sfârşitul fiecărui an: {ORANGE}{STRING} |
2123 | 2122 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NouGRF: {LTBLUE}{STRING} |
2124 | 2123 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Încărcături acceptate: {LTBLUE} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2125 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Limită viteză pe calea ferată: {LTBLUE}{VELOCITY} | |
2126 | 2126 | |
2127 | 2127 | # Description of land area of different tiles |
2128 | 2128 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Stânci |
3517 | 3517 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Podul este prea jos pentru terenul corespunzator |
3518 | 3518 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Cele două capete trebuie să se situeze în linie |
3519 | 3519 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... ambele capete ale podului trebuie să se situeze pe uscat |
3520 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... podul este prea lung | |
3520 | 3521 | |
3521 | 3522 | # Tunnel related errors |
3522 | 3523 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Nu se poate construi tunel aici... |
4108 | 4109 | STR_LORRY :{BLACK}{LORRY} |
4109 | 4110 | STR_PLANE :{BLACK}{PLANE} |
4110 | 4111 | STR_SHIP :{BLACK}{SHIP} |
4112 | ||
4113 | STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) |
11 | 11 | ##case m f n p nom gen dat acc abl pre |
12 | 12 | |
13 | 13 | |
14 | # $Id: russian.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
14 | # $Id: russian.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
15 | 15 | |
16 | 16 | # This file is part of OpenTTD. |
17 | 17 | # OpenTTD 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, version 2. |
1251 | 1251 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :как и остальные |
1252 | 1252 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :геологоразведка |
1253 | 1253 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Разрешить несколько предприятий одного типа на город: {ORANGE}{STRING} |
1254 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Одинаковые предприятия могут быть рядом друг с другом: {ORANGE}{STRING} | |
1255 | 1254 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Всегда полная дата в панели состояния: {ORANGE}{STRING} |
1256 | 1255 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Показывать светофоры на стороне движения: {ORANGE}{STRING} |
1257 | 1256 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Показывать финансовую статистику каждый год: {ORANGE}{STRING} |
1904 | 1903 | STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :ошибка протокола |
1905 | 1904 | STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :Несоответствие NewGRF |
1906 | 1905 | STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :не авторизован |
1907 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :получен странный пакет | |
1906 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :получен неверно сформированный пакет | |
1908 | 1907 | STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :версии не совпадают |
1909 | 1908 | STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :это имя уже используется |
1910 | 1909 | STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :неверный пароль |
1922 | 1921 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Игра всё ещё остановлена ({STRING}, {STRING}) |
1923 | 1922 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Игра всё ещё остановлена ({STRING}, {STRING}, {STRING}) |
1924 | 1923 | STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Игра продолжена ({STRING}) |
1925 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :недостаточно игроков | |
1924 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :количество игроков | |
1926 | 1925 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :подключение клиентов |
1927 | 1926 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :вручную |
1928 | 1927 | ############ End of leave-in-this-order |
1976 | 1975 | STR_CONTENT_NO_ZLIB_SUB :{WHITE}... загрузка контента невозможна! |
1977 | 1976 | |
1978 | 1977 | # Order of these is important! |
1979 | STR_CONTENT_TYPE_BASE_GRAPHICS :{G=f}Базовая графика | |
1978 | STR_CONTENT_TYPE_BASE_GRAPHICS :{G=m}Базовая графика | |
1980 | 1979 | STR_CONTENT_TYPE_BASE_GRAPHICS.gen :{G=m}набора базовой графики |
1981 | 1980 | STR_CONTENT_TYPE_BASE_GRAPHICS.acc :{G=m}набор базовой графики |
1982 | 1981 | STR_CONTENT_TYPE_NEWGRF :{G=m}NewGRF |
2293 | 2292 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2294 | 2293 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Принимает: {LTBLUE} |
2295 | 2294 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2295 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Макс. скорость ж/д: {LTBLUE}{VELOCITY} | |
2296 | 2296 | |
2297 | 2297 | # Description of land area of different tiles |
2298 | 2298 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Скалы |
3687 | 3687 | |
3688 | 3688 | # Tree related errors |
3689 | 3689 | STR_ERROR_TREE_ALREADY_HERE :{WHITE}... уже есть дерево |
3690 | STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... эти деревья здесь не растут | |
3690 | 3691 | STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Невозможно высадить деревья... |
3691 | 3692 | |
3692 | 3693 | # Bridge related errors |
3697 | 3698 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Слишком низкий мост |
3698 | 3699 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Начало и конец должны быть на одной линии |
3699 | 3700 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... оба конца моста должны опираться на землю |
3701 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... мост слишком длинный | |
3700 | 3702 | |
3701 | 3703 | # Tunnel related errors |
3702 | 3704 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Здесь невозможно построить туннель... |
11 | 11 | ##case nom big gen dat aku vok lok ins |
12 | 12 | |
13 | 13 | |
14 | # $Id: serbian.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
14 | # $Id: serbian.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
15 | 15 | |
16 | 16 | # This file is part of OpenTTD. |
17 | 17 | # OpenTTD 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, version 2. |
1292 | 1292 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :uobičajan |
1293 | 1293 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :istraživački |
1294 | 1294 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Dozvoljeno više industrija iste vrste na teritoriji jednog naselja: {ORANGE}{STRING} |
1295 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Dozvoljena gradnja industrije iste vrste u blizini jeda drugoj: {ORANGE}{STRING} | |
1296 | 1295 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Uvek prikazan pun datum na statusnoj liniji: {ORANGE}{STRING} |
1297 | 1296 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Prikazivanje semafora na strani smera voženje: {ORANGE}{STRING} |
1298 | 1297 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Prikazivanje finansijskog stanja na kraju godine: {ORANGE}{STRING} |
2318 | 2317 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2319 | 2318 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Tovar prihvaćen: {LTBLUE} |
2320 | 2319 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2320 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Najveća brzina na pruzi: {LTBLUE}{VELOCITY} | |
2321 | 2321 | |
2322 | 2322 | # Description of land area of different tiles |
2323 | 2323 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Stene |
3014 | 3014 | |
3015 | 3015 | # Engine preview window |
3016 | 3016 | STR_ENGINE_PREVIEW_CAPTION :{WHITE}Poruka od proizvođača vozila |
3017 | STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Upravo smo završili projektovanje novog vozila {STRING} - da li ste zainteresovani za jednogodišnja eksluzivna prava upotrebe ovog vozila, kako bi smo proverili radne osobine pre puštanja u masovnu proizvodnju? | |
3017 | STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Upravo smo završili projektovanje novog {STRING.gen} - da li ste zainteresovani za jednogodišnja eksluzivna prava upotrebe ovog vozila, kako bi smo proverili radne osobine pre puštanja u masovnu proizvodnju? | |
3018 | 3018 | STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :železničko vučno vozilo |
3019 | 3019 | STR_ENGINE_PREVIEW_ROAD_VEHICLE :drumsko vozilo |
3020 | 3020 | STR_ENGINE_PREVIEW_AIRCRAFT :letilica |
3722 | 3722 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most je nizak u odnosu na teren |
3723 | 3723 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Početak i kraj moraju biti u istoj liniji |
3724 | 3724 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... oba kraja mosta moraju biti na čvrstom tlu |
3725 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... most je previše dugačak | |
3725 | 3726 | |
3726 | 3727 | # Tunnel related errors |
3727 | 3728 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Nije moguće ovde izgraditi tunel... |
9 | 9 | ##grflangid 0x56 |
10 | 10 | |
11 | 11 | |
12 | # $Id: simplified_chinese.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
12 | # $Id: simplified_chinese.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
563 | 563 | STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}上一年盈利的车船总数;包括火车、汽车、船只和飞机 |
564 | 564 | STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}最近仍然使用的车站组件数量。车站的每个组件(火车站、公交站、机场)即使是连接成为一个车站,也会被独立计数。 |
565 | 565 | STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}单一运输工具最低年利润(只计算使用两年以上的车辆、船只和飞机) |
566 | STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}在过去 12 个月中{}利润最少的月份的现金收入 | |
567 | STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}在过去 12 个月中{}利润最多的月份的现金收入 | |
566 | STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}在过去 12 个季度中{}利润最少的季度的现金收入 | |
567 | STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}在过去 12 个季度中{}利润最多的季度的现金收入 | |
568 | 568 | STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}在过去 4 个季度中运输的货物总数 |
569 | 569 | STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}在上一个季度中运输的货物种类数 |
570 | 570 | STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}银行中存款的数量 |
687 | 687 | STR_SMALLMAP_LEGENDA_SNOW :{TINYFONT}{BLACK}雪地 |
688 | 688 | |
689 | 689 | STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}切换是否显示城镇名称 |
690 | STR_SMALLMAP_CENTER :{BLACK}把地图显示的中心点对准屏幕中心位置 | |
690 | STR_SMALLMAP_CENTER :{BLACK}把当前位置在地图中心点显示 | |
691 | 691 | STR_SMALLMAP_INDUSTRY :{TINYFONT}{STRING} ({NUM}) |
692 | 692 | STR_SMALLMAP_TOWN :{TINYFONT}{WHITE}{TOWN} |
693 | 693 | STR_SMALLMAP_DISABLE_ALL :{BLACK}全部禁用 |
1094 | 1094 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :同其他工业 |
1095 | 1095 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :探矿式 |
1096 | 1096 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}允许在一个城镇中建设多个同类工业设施:{ORANGE}{STRING} |
1097 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}工业设施可以相邻:{ORANGE}{STRING} | |
1098 | 1097 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}永远在状态栏中显示长日期:{ORANGE}{STRING} |
1099 | 1098 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}在列车前进的方向显示信号灯:{ORANGE}{STRING} |
1100 | 1099 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}在年终显示财务报表:{ORANGE}{STRING} |
1459 | 1458 | STR_FACE_FACECODE_ERR :{WHITE}编号必须在 0 ~ 4,294,967,295 范围内! |
1460 | 1459 | STR_FACE_SAVE :{BLACK}储存头像 |
1461 | 1460 | STR_FACE_SAVE_TOOLTIP :{BLACK}储存喜好的头像 |
1462 | STR_FACE_SAVE_DONE :{WHITE}该头像已被储存至 OpenTTD 配置文件中 | |
1461 | STR_FACE_SAVE_DONE :{WHITE}该头像将作为你的喜好储存至 OpenTTD 配置文件中 | |
1463 | 1462 | STR_FACE_EUROPEAN :{BLACK}欧洲人 |
1464 | 1463 | STR_FACE_SELECT_EUROPEAN :{BLACK}使用欧洲人面孔 |
1465 | 1464 | STR_FACE_AFRICAN :{BLACK}非洲人 |
1797 | 1796 | STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}此依存组件已被选择下载。 |
1798 | 1797 | STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}您已经下载过该扩展包 |
1799 | 1798 | STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}该扩展包无法识别,OpenTTD无法下载该扩展包 |
1800 | STR_CONTENT_DETAIL_UPDATE :{SILVER}该扩展包将会影响到当前使用的 {STRING} | |
1799 | STR_CONTENT_DETAIL_UPDATE :{SILVER}该扩展包将会替换到当前使用的 {STRING} | |
1801 | 1800 | STR_CONTENT_DETAIL_NAME :{SILVER}名称: {WHITE}{STRING} |
1802 | 1801 | STR_CONTENT_DETAIL_VERSION :{SILVER}版本: {WHITE}{STRING} |
1803 | 1802 | STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}描述: {WHITE}{STRING} |
1910 | 1909 | STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}标准信号(悬臂){}信号灯是多列车铁路系统的必备设施 |
1911 | 1910 | STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}入口信号(悬臂){}在下一轨道区间上{}当至少有一个出口信号是绿色时{}此信号亮绿灯 否则亮红灯 |
1912 | 1911 | STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}出口信号(悬臂){}运作等同与普通信号{}但是对于触发入口及复合信号灯{}来说是必要的 |
1913 | STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}复合信号(悬臂){}复合信号灯可完全担当{}入口信号灯和出口信号灯的功能{}并可建立大的树状信号灯系统 | |
1912 | STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}复合信号(悬臂){}复合信号灯可完全担当{}入口信号灯和出口信号灯的功能{}并可建立树状预警信号灯系统 | |
1914 | 1913 | STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}双向高级信号(悬臂){}高级信号允许列车在一个信号区间内{}预留一条到安全停止位的路径{}因此高级信号可以允许一列以上列车{}同时进入和通过一个信号区间 |
1915 | 1914 | STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}单向高级信号(悬臂){}高级信号允许列车在一个信号区间内{}预留一条到安全停止位的路径{}因此高级信号可以允许一列以上列车{}同时进入和通过一个信号区间 |
1916 | 1915 | STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}标准信号(电子){}信号灯是多列车铁路系统的必备设施 |
1917 | 1916 | STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}入口信号(电子){}在下一轨道区间上{}当至少有一个出口信号是绿色时{}此信号亮绿灯 否则亮红灯 |
1918 | 1917 | STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}出口信号(电子){}运作等同与普通信号{}但是对于触发入口及复合信号灯{}来说是必要的 |
1919 | STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}复合信号(电子){}复合信号灯可完全担当{}入口信号灯和出口信号灯的功能{}并可建立大的树状信号灯系统 | |
1918 | STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}复合信号(电子){}复合信号灯可完全担当{}入口信号灯和出口信号灯的功能{}并可建立树状预警信号灯系统 | |
1920 | 1919 | STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}双向高级信号(电子){}高级信号允许列车在一个信号区间内{}预留一条到安全停止位的路径{}因此高级信号可以允许一列以上列车{}同时进入和通过一个信号区间 |
1921 | 1920 | STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}单向高级信号(电子){}高级信号允许列车在一个信号区间内{}预留一条到安全停止位的路径{}因此高级信号可以允许一列以上列车{}同时进入和通过一个信号区间 |
1922 | 1921 | STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}信号灯转换工具{}当此按钮按下时再选择信号灯种类{}就可以转换信号灯为选择的种类{}CTRL+点击{}可以把现有信号灯在电子和旗帜间转换 |
1927 | 1926 | # Bridge selection window |
1928 | 1927 | STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}选择铁路桥 |
1929 | 1928 | STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}选择公路桥梁 |
1930 | STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}选择桥梁 - 点击喜欢的桥梁即可建设 | |
1929 | STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}选择桥梁 - 点击选择喜欢的桥梁进行建设 | |
1931 | 1930 | STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY} |
1932 | 1931 | STR_BRIDGE_NAME_SUSPENSION_STEEL :钢制悬索 |
1933 | 1932 | STR_BRIDGE_NAME_GIRDER_STEEL :钢制桁桥 |
2054 | 2053 | # Town generation window (SE) |
2055 | 2054 | STR_FOUND_TOWN_CAPTION :{WHITE}生成城镇 |
2056 | 2055 | STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}新建城镇 |
2057 | STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}在指定位置设置一个新的城镇 | |
2056 | STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}在指定位置建设新的城镇 | |
2058 | 2057 | STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}随机城镇 |
2059 | 2058 | STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}随机新增一个城镇 |
2060 | 2059 | STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}大量随机城镇 |
2102 | 2101 | STR_LAND_AREA_INFORMATION_OWNER :{BLACK}产权所属:{LTBLUE}{STRING} |
2103 | 2102 | STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}道路所属:{LTBLUE}{STRING} |
2104 | 2103 | STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}有轨电车道路所属:{LTBLUE}{STRING} |
2105 | STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}铁路所属:{LTBLUE}{STRING} | |
2104 | STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}铁路归属:{LTBLUE}{STRING} | |
2106 | 2105 | STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}地方政府:{LTBLUE}{STRING} |
2107 | 2106 | STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :没有 |
2108 | 2107 | STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}坐标: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING}) |
2523 | 2522 | STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}建设费用 |
2524 | 2523 | STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}购置交通工具 |
2525 | 2524 | STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}铁路运行费用 |
2526 | STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}公路运行费用 | |
2525 | STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}汽车运行费用 | |
2527 | 2526 | STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}航空运行费用 |
2528 | 2527 | STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}船舶运行费用 |
2529 | 2528 | STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}固定资产维护 |
2890 | 2889 | STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}显示船只的详情 |
2891 | 2890 | STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}显示飞机的详情 |
2892 | 2891 | |
2893 | STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}当前列车状态{}点击可以 启动/停止 列车 | |
2894 | STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}当前车辆的状态{}单击这里可以 停止/启动 车辆 | |
2895 | STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}船只当前的状态{}点击可以 启动/停止 船只 | |
2896 | STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}飞机当前的状态{}点击可以 启动/停止 已降落的飞机 | |
2892 | STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}当前列车状态{}点击可以 启动/停止 列车。Ctrl+点击切换至目的地。 | |
2893 | STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}当前车辆的任务{}单击这里可以 停止/启动 车辆。Ctrl+点击切换至目的地。 | |
2894 | STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}当前船只的任务{}点击可以 启动/停止 船只。Ctrl+点击切换至目的地。 | |
2895 | STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}飞机当前的状态{}点击可以 停止/启动 飞机。 Ctrl+点击 切换至目的地 | |
2897 | 2896 | |
2898 | 2897 | # Messages in the start stop button in the vehicle view |
2899 | 2898 | STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}装载/卸货 |
4088 | 4087 | STR_LORRY :{BLACK}{LORRY} |
4089 | 4088 | STR_PLANE :{BLACK}{PLANE} |
4090 | 4089 | STR_SHIP :{BLACK}{SHIP} |
4090 |
0 | 0 | ##name Slovak |
1 | 1 | ##ownname Slovensky |
2 | 2 | ##isocode sk_SK |
3 | ##plural 6 | |
3 | ##plural 10 | |
4 | 4 | ##textdir ltr |
5 | 5 | ##digitsep . |
6 | 6 | ##digitsepcur . |
11 | 11 | ##case g |
12 | 12 | |
13 | 13 | |
14 | # $Id: slovak.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
14 | # $Id: slovak.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
15 | 15 | |
16 | 16 | # This file is part of OpenTTD. |
17 | 17 | # OpenTTD 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, version 2. |
697 | 697 | STR_HIGHSCORE_PERFORMANCE_TITLE_TYCOON_OF_THE_CENTURY :Tycoon |
698 | 698 | STR_HIGHSCORE_NAME :{BIGFONT}{PRESIDENTNAME}, {COMPANY} |
699 | 699 | STR_HIGHSCORE_STATS :{BIGFONT}'{STRING}' ({COMMA}) |
700 | STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIGFONT}{BLACK}{COMPANY} ziskal oznacenie '{STRING}' ! | |
701 | STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIGFONT}{WHITE}{PRESIDENTNAME} z {COMPANY} ziskal oznacenie '{STRING}' ! | |
700 | STR_HIGHSCORE_COMPANY_ACHIEVES_STATUS :{BIGFONT}{BLACK}{COMPANY} získal označenie '{STRING}'! | |
701 | STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIGFONT}{WHITE}{PRESIDENTNAME} z {COMPANY} získal označenie '{STRING}'! | |
702 | 702 | |
703 | 703 | # Smallmap window |
704 | 704 | STR_SMALLMAP_CAPTION :{WHITE}Mapa - {STRING} |
757 | 757 | STR_SMALLMAP_CENTER :{BLACK}Vycentrovať malú mapu na aktuálnu pozíciu |
758 | 758 | STR_SMALLMAP_INDUSTRY :{TINYFONT}{STRING} ({NUM}) |
759 | 759 | STR_SMALLMAP_TOWN :{TINYFONT}{WHITE}{TOWN} |
760 | STR_SMALLMAP_DISABLE_ALL :{BLACK}Zakazat vsetky | |
760 | STR_SMALLMAP_DISABLE_ALL :{BLACK}zakázať všetky | |
761 | 761 | STR_SMALLMAP_ENABLE_ALL :{BLACK}Povolit vsetky |
762 | 762 | STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Ukázať výšku |
763 | 763 | STR_SMALLMAP_TOOLTIP_DISABLE_ALL :{BLACK}Nezobraziť žiadny priemysel na mape |
902 | 902 | # Extra view window |
903 | 903 | STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Pohlad {COMMA} |
904 | 904 | STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Pohlad podla mapy |
905 | STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Nastavit pohlad podla hlavneho pohladu | |
905 | STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Nastaviť pohľad podľa hlavného pohľadu | |
906 | 906 | STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Mapa podla pohladu |
907 | STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Nastavit hlavny pohlad na mapu podla tohto pohladu | |
907 | STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Nastaviť hlavný pohľad na mapu podľa tohto pohľadu | |
908 | 908 | |
909 | 909 | # Game options window |
910 | 910 | STR_GAME_OPTIONS_CAPTION :{WHITE}Nastavenia hry |
1139 | 1139 | |
1140 | 1140 | STR_CONFIG_SETTING_OFF :nie |
1141 | 1141 | STR_CONFIG_SETTING_ON :áno |
1142 | STR_CONFIG_SETTING_DISABLED :zakazane | |
1142 | STR_CONFIG_SETTING_DISABLED :zakázané | |
1143 | 1143 | STR_CONFIG_SETTING_VEHICLESPEED :{LTBLUE}Zobraziť rýchlosť vozidla v stavovej lište: {ORANGE}{STRING} |
1144 | 1144 | STR_CONFIG_SETTING_BUILDONSLOPES :{LTBLUE}Umožniť výstavbu na svahoch a na pobreží: {ORANGE}{STRING} |
1145 | 1145 | STR_CONFIG_SETTING_AUTOSLOPE :{LTBLUE}Povoliť úpravy terénu pod budovami, koľajami, a pod.: {ORANGE}{STRING} |
1148 | 1148 | STR_CONFIG_SETTING_MAMMOTHTRAINS :{LTBLUE}Umožniť stavbu dlhých vlakov: {ORANGE}{STRING} |
1149 | 1149 | STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :{LTBLUE}Model akcelerácie vlaku: {ORANGE}{STRING} |
1150 | 1150 | STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_ORIGINAL :Originál |
1151 | STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_REALISTIC :Realistický | |
1151 | STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_REALISTIC :realistický | |
1152 | 1152 | STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :{LTBLUE}Strmosť svahu pre vlaky {ORANGE}{STRING}% |
1153 | STR_CONFIG_SETTING_FORBID_90_DEG :{LTBLUE}Zakázať vlakom a lodiam otáčanie o 90 stupňov: {ORANGE}{STRING} {LTBLUE} (vyžaduje NPF) | |
1153 | STR_CONFIG_SETTING_FORBID_90_DEG :{LTBLUE}Zakázať vlakom a lodiam otáčanie o 90°: {ORANGE}{STRING} {LTBLUE} (vyžaduje NPF) | |
1154 | 1154 | STR_CONFIG_SETTING_JOINSTATIONS :{LTBLUE}Umoznit spajanie stanic: {ORANGE}{STRING} |
1155 | 1155 | STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :{LTBLUE}Povoliť spájať stanice nepriamo hraničiace: {ORANGE}{STRING} |
1156 | 1156 | STR_CONFIG_SETTING_IMPROVEDLOAD :{LTBLUE}Použiť vylepšený algoritmus nakladania: {ORANGE}{STRING} |
1157 | 1157 | STR_CONFIG_SETTING_GRADUAL_LOADING :{LTBLUE}Postupné nakladanie vozidiel: {ORANGE}{STRING} |
1158 | 1158 | STR_CONFIG_SETTING_INFLATION :{LTBLUE}Inflácia: {ORANGE}{STRING} |
1159 | STR_CONFIG_SETTING_SELECTGOODS :{LTBLUE}Vykladat náklad len v stanici kde je dopyt: {ORANGE}{STRING} | |
1159 | STR_CONFIG_SETTING_SELECTGOODS :{LTBLUE}Vykladať náklad len v stanici kde je dopyt: {ORANGE}{STRING} | |
1160 | 1160 | STR_CONFIG_SETTING_LONGBRIDGES :{LTBLUE}Umožniť stavbu dlhých mostov: {ORANGE}{STRING} |
1161 | 1161 | STR_CONFIG_SETTING_GOTODEPOT :{LTBLUE}Umožnit zaradenie depa do zoznamu príkazov: {ORANGE}{STRING} |
1162 | 1162 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :{LTBLUE}Spôsob výstavby priemyslu produkujúceho suroviny: {ORANGE}{STRING} |
1164 | 1164 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :normálny |
1165 | 1165 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :vyhladávací |
1166 | 1166 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Umožniť viac priemyslu rovnakého typu pri jednom meste: {ORANGE}{STRING} |
1167 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Rovnaky priemysel moze byt stavany blizko seba: {ORANGE}{STRING} | |
1168 | 1167 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Vždy zobraziť dlhý formát dátumu v stavovej lište: {ORANGE}{STRING} |
1169 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Zobrazovať železničné signály na rovnakej strane ako jazdia vozidlá: {ORANGE}{STRING} | |
1168 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Zobraziť železničné signály na tej strane, ako jazdia vozidlá: {ORANGE}{STRING} | |
1170 | 1169 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Zobraziť rozpočet na konci roku: {ORANGE}{STRING} |
1171 | 1170 | STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :{LTBLUE}Nové príkazy sú štandardne 'non-stop': {ORANGE}{STRING} |
1172 | STR_CONFIG_SETTING_STOP_LOCATION :{LTBLUE}Nové príkazy vlaku na zastavenie štandardne v {ORANGE}{STRING}{LTBLUE} stanici | |
1173 | STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :blízky cieľ | |
1174 | STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :stred | |
1175 | STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :ďaleký cieľ | |
1176 | STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :{LTBLUE}Radenie cestných vozidiel (podla množstva nákladu): {ORANGE}{STRING} | |
1177 | STR_CONFIG_SETTING_AUTOSCROLL :{LTBLUE}Posúvať pohľad ked je kurzor myši na okraji okna: {ORANGE}{STRING} | |
1171 | STR_CONFIG_SETTING_STOP_LOCATION :{LTBLUE}Vlaky zastavujú štandardne {ORANGE}{STRING}{LTBLUE} stanice. | |
1172 | STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :na začiatku | |
1173 | STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :v strede | |
1174 | STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :na konci | |
1175 | STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :{LTBLUE}Zaradenie cestných vozidiel (podľa množstva nákladu): {ORANGE}{STRING} | |
1176 | STR_CONFIG_SETTING_AUTOSCROLL :{LTBLUE}Posúvať pohľad, keď je kurzor myši na okraji okna: {ORANGE}{STRING} | |
1178 | 1177 | STR_CONFIG_SETTING_BRIBE :{LTBLUE}Umožniť podplácanie miestnej správy: {ORANGE}{STRING} |
1179 | 1178 | STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :{LTBLUE}Povoliť zakúpenie exkluzívnych dopravných práv: {ORANGE}{STRING} |
1180 | STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :{LTBLUE}Umožnit posielanie penazí ostatným spolocnostiam: {ORANGE}{STRING} | |
1179 | STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :{LTBLUE}Umožniť posielanie peňazí ostatným spoločnostiam: {ORANGE}{STRING} | |
1181 | 1180 | STR_CONFIG_SETTING_NONUNIFORM_STATIONS :{LTBLUE}Roznorode stanice: {ORANGE}{STRING} |
1182 | 1181 | STR_CONFIG_SETTING_FREIGHT_TRAINS :{LTBLUE}Váhový násobok pre nákladné vlaky: {ORANGE}{STRING} |
1183 | 1182 | STR_CONFIG_SETTING_PLANE_SPEED :{LTBLUE}Faktor rýchlosti lietadiel: {ORANGE}1 / {STRING} |
1187 | 1186 | STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :normálny |
1188 | 1187 | STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :{LTBLUE}Povoliť prejazdné zastávky na mestských cestách: {ORANGE}{STRING} |
1189 | 1188 | STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :{LTBLUE}Povoliť prechádzanie cez stop značky na cestách vlastnené konkurenciou: {ORANGE}{STRING} |
1190 | STR_CONFIG_SETTING_ADJACENT_STATIONS :{LTBLUE}Povolit stavbu oddelených staníc: {ORANGE}{STRING} | |
1189 | STR_CONFIG_SETTING_ADJACENT_STATIONS :{LTBLUE}Povoliť stavbu oddelených staníc: {ORANGE}{STRING} | |
1191 | 1190 | STR_CONFIG_SETTING_DYNAMIC_ENGINES :{LTBLUE}Povoliť viaceré NewGRF sety s rušňami: {ORANGE}{STRING} |
1192 | 1191 | STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Zmena tohto nastavenia nie je možná, pokiaľ sa tu nachádzajú vozidlá. |
1193 | 1192 | |
1194 | 1193 | STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :{LTBLUE}Letiská nikdy neexiprujú: {ORANGE}{STRING} |
1195 | 1194 | |
1196 | STR_CONFIG_SETTING_WARN_LOST_TRAIN :{LTBLUE}Upozornit ak vlak nedokáže nájst cestu: {ORANGE}{STRING} | |
1195 | STR_CONFIG_SETTING_WARN_LOST_TRAIN :{LTBLUE}Upozorniť, ak vlak nedokáže nájsť cestu: {ORANGE}{STRING} | |
1197 | 1196 | STR_CONFIG_SETTING_ORDER_REVIEW :{LTBLUE}Obnovenie prikazov vozidla: {ORANGE}{STRING} |
1198 | 1197 | STR_CONFIG_SETTING_ORDER_REVIEW_OFF :nie |
1199 | 1198 | STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :ano, okrem zastavenych vozidiel |
1201 | 1200 | STR_CONFIG_SETTING_WARN_INCOME_LESS :{LTBLUE}Varovať, ak je vozidlo stratové: {ORANGE}{STRING} |
1202 | 1201 | STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :{LTBLUE}Nikdy neprestat s vyrobou starych vozidiel: {ORANGE}{STRING} |
1203 | 1202 | STR_CONFIG_SETTING_AUTORENEW_VEHICLE :{LTBLUE}Automatická obnova dopravných prostriedkov, keď sú staré: {ORANGE}{STRING} |
1204 | STR_CONFIG_SETTING_AUTORENEW_MONTHS :{LTBLUE}Obnoviť vozidlo {ORANGE}{STRING}{LTBLUE} mesiacov pred/po dosiahnutí max. veku | |
1205 | STR_CONFIG_SETTING_AUTORENEW_MONEY :{LTBLUE}Min. mnozstvo penazi pre aut. obnovovanie vozidiel: {ORANGE}{STRING} | |
1206 | STR_CONFIG_SETTING_ERRMSG_DURATION :{LTBLUE}Dlžka zobrazenia chybovej správy: {ORANGE}{STRING} | |
1203 | STR_CONFIG_SETTING_AUTORENEW_MONTHS :{LTBLUE}Obnoviť vozidlo {ORANGE}{STRING}{LTBLUE} mesiac{P "" e ov} pred/po dosiahnutí max. veku. | |
1204 | STR_CONFIG_SETTING_AUTORENEW_MONEY :{LTBLUE}Potrebné financie pre automatickú obnovu vozidiel: {ORANGE}{STRING} | |
1205 | STR_CONFIG_SETTING_ERRMSG_DURATION :{LTBLUE}Dĺžka zobrazenia chybovej správy: {ORANGE}{STRING} | |
1207 | 1206 | STR_CONFIG_SETTING_POPULATION_IN_LABEL :{LTBLUE}Zobraziť počet obyvateľov mesta v jeho názve: {ORANGE}{STRING} |
1208 | 1207 | |
1209 | 1208 | STR_CONFIG_SETTING_LAND_GENERATOR :{LTBLUE}Generátor uzemia: {ORANGE}{STRING} |
1229 | 1228 | STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Jedna alebo viacero kociek na jedom z okrajov nie je voda |
1230 | 1229 | |
1231 | 1230 | STR_CONFIG_SETTING_STATION_SPREAD :{LTBLUE}Max. rozsah stanice: {ORANGE}{STRING} {RED}Pozor: Vysoke hodnoty spomaluju hru |
1232 | STR_CONFIG_SETTING_SERVICEATHELIPAD :{LTBLUE}Automatické opravy vrtulníkov v heliporte: {ORANGE}{STRING} | |
1233 | STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Otvárat panel úprav terénu s panelmi výstavby: {ORANGE}{STRING} | |
1231 | STR_CONFIG_SETTING_SERVICEATHELIPAD :{LTBLUE}Automatické opravy vrtuľníkov v heliporte: {ORANGE}{STRING} | |
1232 | STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Otvárať panel úprav terénu s panelmi výstavby: {ORANGE}{STRING} | |
1234 | 1233 | STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :{LTBLUE}Farba krajiny použitá na malej mape: {ORANGE}{STRING} |
1235 | 1234 | STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Zelená |
1236 | 1235 | STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Tmavozelená |
1237 | 1236 | STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fialová |
1238 | STR_CONFIG_SETTING_REVERSE_SCROLLING :{LTBLUE}Pri posúvaní pohladu myšou posúvat mapu opacným smerom: {ORANGE}{STRING} | |
1239 | STR_CONFIG_SETTING_SMOOTH_SCROLLING :{LTBLUE}Plynulé posúvanie pohladu: {ORANGE}{STRING} | |
1237 | STR_CONFIG_SETTING_REVERSE_SCROLLING :{LTBLUE}Posúvať mapu opačným smerom: {ORANGE}{STRING} | |
1238 | STR_CONFIG_SETTING_SMOOTH_SCROLLING :{LTBLUE}Plynulé posúvanie pohľadu: {ORANGE}{STRING} | |
1240 | 1239 | STR_CONFIG_SETTING_MEASURE_TOOLTIP :{LTBLUE}Zobraziť údaje o rozmeroch pri výstavbe: {ORANGE}{STRING} |
1241 | 1240 | STR_CONFIG_SETTING_LIVERIES :{LTBLUE}Zobraziť farebné schémy spoločnosti: {ORANGE}{STRING} |
1242 | 1241 | STR_CONFIG_SETTING_LIVERIES_NONE :žiadne |
1243 | STR_CONFIG_SETTING_LIVERIES_OWN :vlastná spolocnost | |
1244 | STR_CONFIG_SETTING_LIVERIES_ALL :všetky spolocnosti | |
1245 | STR_CONFIG_SETTING_PREFER_TEAMCHAT :{LTBLUE}Preferovaný teamový chat: {ORANGE}{STRING} | |
1246 | STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :{LTBLUE}Funkcia scrolovacieho kolieska: {ORANGE}{STRING} | |
1242 | STR_CONFIG_SETTING_LIVERIES_OWN :vlastná spoločnosť | |
1243 | STR_CONFIG_SETTING_LIVERIES_ALL :všetky spoločnosti | |
1244 | STR_CONFIG_SETTING_PREFER_TEAMCHAT :{LTBLUE}Preferovať tímový chat s klávesou <ENTER>: {ORANGE}{STRING} | |
1245 | STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :{LTBLUE}Funkcia rolovacieho kolieska myši: {ORANGE}{STRING} | |
1247 | 1246 | STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :zvacšit mapu |
1248 | STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :posúvat pohlad | |
1247 | STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Posúvať pohľad | |
1249 | 1248 | STR_CONFIG_SETTING_SCROLLWHEEL_OFF :vypnuté |
1250 | STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Rychlost posúvania pohladu: {ORANGE}{STRING} | |
1249 | STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Rýchlosť posúvania pohľadu: {ORANGE}{STRING} | |
1251 | 1250 | |
1252 | 1251 | STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :{LTBLUE}Funkcia pravého tlacidla myši: {ORANGE}{STRING} |
1253 | 1252 | STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Príkaz - klik |
1254 | 1253 | STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control - klik |
1255 | 1254 | STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Ziadna |
1256 | 1255 | |
1257 | STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :{LTBLUE}Skrolovať ľavým tlačidlom: {ORANGE}{STRING} | |
1256 | STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :{LTBLUE}Posúvať pohľad ľavým tlačidlom myši: {ORANGE}{STRING} | |
1258 | 1257 | |
1259 | 1258 | STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :{LTBLUE}Použiť {ORANGE}{STRING}{LTBLUE} formát dátumu v názve uloženej hry. |
1260 | 1259 | STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :dlhý (31st Dec 2008) |
1264 | 1263 | STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :{LTBLUE}Automatická pauza pri štarte novej hry: {ORANGE}{STRING} |
1265 | 1264 | STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :{LTBLUE}Použit vylepšený zoznam vozidiel: {ORANGE}{STRING} |
1266 | 1265 | STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_OFF :Vypnutý |
1267 | STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_OWN :Vlastná spolocnost | |
1268 | STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_ALL :Všetky spolocnosti | |
1266 | STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_OWN :vlastná spoločnosť | |
1267 | STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_ALL :všetky spoločnosti | |
1269 | 1268 | STR_CONFIG_SETTING_LOADING_INDICATORS :{LTBLUE}Zobraziť ukazovatele nakladania/vykladania: {ORANGE}{STRING} |
1270 | 1269 | STR_CONFIG_SETTING_LOADING_INDICATORS_OFF :vypnuté |
1271 | STR_CONFIG_SETTING_LOADING_INDICATORS_OWN :vlastná spolocnost | |
1272 | STR_CONFIG_SETTING_LOADING_INDICATORS_ALL :všetky spolocnosti | |
1270 | STR_CONFIG_SETTING_LOADING_INDICATORS_OWN :vlastná spoločnosť | |
1271 | STR_CONFIG_SETTING_LOADING_INDICATORS_ALL :všetky spoločnosti | |
1273 | 1272 | STR_CONFIG_SETTING_TIMETABLE_ALLOW :{LTBLUE}Používat cestovné poriadky pre vozidlá: {ORANGE}{STRING} |
1274 | 1273 | STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :{LTBLUE}Zobraziť cestovné poriadky v tikoch namiesto dní: {ORANGE}{STRING} |
1275 | 1274 | STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :{LTBLUE}Zobraziť príchody a odchody v cestovných poriadkoch: {ORANGE}{STRING} |
1283 | 1282 | STR_CONFIG_SETTING_EXPENSES_LAYOUT :{LTBLUE}Zoskupiť výdavky v okne financií spoločnosti: {ORANGE}{STRING} |
1284 | 1283 | |
1285 | 1284 | STR_CONFIG_SETTING_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}Zobraziť nástroje výstavby ak nie sú dostupné vhodné vozidlá: {ORANGE}{STRING} |
1286 | STR_CONFIG_SETTING_MAX_TRAINS :{LTBLUE}Maximalny pocet vlakov hraca: {ORANGE}{STRING} | |
1285 | STR_CONFIG_SETTING_MAX_TRAINS :{LTBLUE}Maximálny počet vlakov hráča: {ORANGE}{STRING} | |
1287 | 1286 | STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :{LTBLUE}Maximalny pocet automobilov hraca: {ORANGE}{STRING} |
1288 | 1287 | STR_CONFIG_SETTING_MAX_AIRCRAFT :{LTBLUE}Maximálny pocet lietadiel hráca: {ORANGE}{STRING} |
1289 | STR_CONFIG_SETTING_MAX_SHIPS :{LTBLUE}Maximalny pocet lodi hraca: {ORANGE}{STRING} | |
1290 | ||
1291 | STR_CONFIG_SETTING_AI_BUILDS_TRAINS :{LTBLUE}Zakazat vlaky pre pocitac: {ORANGE}{STRING} | |
1292 | STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :{LTBLUE}Zakazat automobily pre pocitac: {ORANGE}{STRING} | |
1293 | STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :{LTBLUE}Zakazat lietadla pre pocitac: {ORANGE}{STRING} | |
1294 | STR_CONFIG_SETTING_AI_BUILDS_SHIPS :{LTBLUE}Zakazat lode pre pocitac: {ORANGE}{STRING} | |
1288 | STR_CONFIG_SETTING_MAX_SHIPS :{LTBLUE}Maximálny počet lodí hráča: {ORANGE}{STRING} | |
1289 | ||
1290 | STR_CONFIG_SETTING_AI_BUILDS_TRAINS :{LTBLUE}Zakázať vlaky pre počítač: {ORANGE}{STRING} | |
1291 | STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :{LTBLUE}Zakázať automobily pre počítač: {ORANGE}{STRING} | |
1292 | STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :{LTBLUE}Zakázať lietadlá pre počítač: {ORANGE}{STRING} | |
1293 | STR_CONFIG_SETTING_AI_BUILDS_SHIPS :{LTBLUE}Zakázať lode pre počítač: {ORANGE}{STRING} | |
1295 | 1294 | |
1296 | 1295 | STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :{LTBLUE}Povoliť AI v hre viacerých hráčov (experimentálne): {ORANGE}{STRING} |
1297 | 1296 | STR_CONFIG_SETTING_AI_MAX_OPCODES :{LTBLUE}#opcodes pred AI sú suspendované: {ORANGE}{STRING} |
1307 | 1306 | STR_CONFIG_SETTING_SERVINT_SHIPS_DISABLED :{LTBLUE}Implicitný servisný interval pre lode: {ORANGE}vypnutý |
1308 | 1307 | STR_CONFIG_SETTING_NOSERVICE :{LTBLUE}Vypnúť servisy, ak sú vypnuté poruchy: {ORANGE}{STRING} |
1309 | 1308 | STR_CONFIG_SETTING_WAGONSPEEDLIMITS :{LTBLUE}Obmedzenie rýchlosti pre vagóny: {ORANGE}{STRING} |
1310 | STR_CONFIG_SETTING_DISABLE_ELRAILS :{LTBLUE}Zakázat elektrifikovanú železnicu: {ORANGE}{STRING} | |
1309 | STR_CONFIG_SETTING_DISABLE_ELRAILS :{LTBLUE}Zakázať elektrifikovanú železnicu: {ORANGE}{STRING} | |
1311 | 1310 | |
1312 | 1311 | STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :{LTBLUE}Zobraziť správy farebne od roku: {ORANGE}{STRING} |
1313 | 1312 | STR_CONFIG_SETTING_STARTING_YEAR :{LTBLUE}Začiatok hry v roku: {ORANGE}{STRING} |
1314 | 1313 | STR_CONFIG_SETTING_SMOOTH_ECONOMY :{LTBLUE}Povoliť zmeny ekonomiky (viac menších zmien): {ORANGE}{STRING} |
1315 | 1314 | STR_CONFIG_SETTING_ALLOW_SHARES :{LTBLUE}Povoliť kupovanie podielov v ostatných spoločnostiach: {ORANGE}{STRING} |
1316 | 1315 | STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :{LTBLUE}Percento z časti zisku na zaplatenie v dopravnom systéme: {ORANGE}{STRING}% |
1317 | STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :{LTBLUE}Pri stavbe tahaním umiestnit signály na každé: {ORANGE}{STRING}. pole | |
1318 | STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Automaticky stavat semafóry namiesto signálov pred rokom: {ORANGE}{STRING} | |
1316 | STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :{LTBLUE}Pri stavbe ťahaním umiestniť signály na každé: {ORANGE}{STRING}. pole | |
1317 | STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Automaticky stavať semafóry namiesto signálov pred rokom: {ORANGE}{STRING} | |
1319 | 1318 | STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :{LTBLUE}Zapnúť grafické rozhranie stavby signálov: {ORANGE}{STRING} |
1320 | 1319 | STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :{LTBLUE}Štandardne budovaný typ signálov: {ORANGE}{STRING} |
1321 | 1320 | STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Blokové signály |
1322 | 1321 | STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :Obojsmerné signály |
1323 | 1322 | STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :Jednosmerné signály |
1324 | STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :{LTBLUE}Cyklovať typom signálov: {ORANGE}{STRING} | |
1325 | STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :Iba blokovacie signály | |
1326 | STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :Iba obojsmerné signály | |
1327 | STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Všetky | |
1323 | STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :{LTBLUE}Prepínanie medzi typmi signálov: {ORANGE}{STRING} | |
1324 | STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :len blokové | |
1325 | STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :len obojsmerné | |
1326 | STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :všetky | |
1328 | 1327 | |
1329 | 1328 | STR_CONFIG_SETTING_TOWN_LAYOUT :{LTBLUE}Návrh ciest pre nové mestá: {ORANGE}{STRING} |
1330 | 1329 | STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :štandardná |
1348 | 1347 | STR_CONFIG_SETTING_TOOLBAR_POS_LEFT :vlavo |
1349 | 1348 | STR_CONFIG_SETTING_TOOLBAR_POS_CENTER :v strede |
1350 | 1349 | STR_CONFIG_SETTING_TOOLBAR_POS_RIGHT :vpravo |
1351 | STR_CONFIG_SETTING_SNAP_RADIUS :{LTBLUE}Vzdialenosť pre prichytenie okna: {ORANGE}{STRING} bodov | |
1350 | STR_CONFIG_SETTING_SNAP_RADIUS :{LTBLUE}Vzdialenosť pre prichytenie okna: {ORANGE}{STRING} bod{P "" y ov} | |
1352 | 1351 | STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :{LTBLUE}Vzdialenosť pre prichytenie okna: {ORANGE}vypnuté |
1353 | STR_CONFIG_SETTING_SOFT_LIMIT :{LTBLUE}Jemný limit okna (nie dôležité): {ORANGE}{STRING} | |
1354 | STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :{LTBLUE}Jemný limit okna (nie dôležité): {ORANGE}nepovolený | |
1352 | STR_CONFIG_SETTING_SOFT_LIMIT :{LTBLUE}Jemný limit okna (nie je dôležitý): {ORANGE}{STRING} | |
1353 | STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :{LTBLUE}Jemný limit okna (nie je dôležitý): {ORANGE}vypnutý | |
1355 | 1354 | STR_CONFIG_SETTING_TOWN_GROWTH :{LTBLUE}Rozvoj miest: {ORANGE}{STRING} |
1356 | 1355 | STR_CONFIG_SETTING_TOWN_GROWTH_NONE :žiadny |
1357 | 1356 | STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :pomalý |
1631 | 1630 | STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Nazov hry: |
1632 | 1631 | STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Nazov hry, ktory uvidia ostatni v zozname sietovych hier |
1633 | 1632 | STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Nastavit heslo |
1634 | STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Ochran hru heslom, ak nechcec aby sa pripajali ostatni ludia | |
1633 | STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Zabezpeč hru heslom, ak nechceš povoliť verejný prístup | |
1635 | 1634 | STR_NETWORK_START_SERVER_SELECT_MAP :{BLACK}Vyber mapu: |
1636 | 1635 | STR_NETWORK_START_SERVER_SELECT_MAP_TOOLTIP :{BLACK}Ktoru mapu chces hrat? |
1637 | 1636 | STR_NETWORK_START_SERVER_SERVER_RANDOM_GAME :Vygenerovať náhodnú novú hru |
1753 | 1752 | STR_NETWORK_CLIENTLIST_KICK :Vyhodit |
1754 | 1753 | STR_NETWORK_CLIENTLIST_BAN :Ban |
1755 | 1754 | STR_NETWORK_CLIENTLIST_GIVE_MONEY :Previest peniaze |
1756 | STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Napisat vsetkym | |
1757 | STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Napisat spolocnosti | |
1755 | STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL :Napísať správu všetkým | |
1756 | STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY :Napísať spoločnosti správu | |
1758 | 1757 | STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT :Privatna sprava |
1759 | 1758 | |
1760 | 1759 | STR_NETWORK_SERVER :Server |
1774 | 1773 | STR_COMPANY_VIEW_JOIN :{BLACK}Pridať sa |
1775 | 1774 | STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Pridať sa a hrať za túto spoločnosť |
1776 | 1775 | STR_COMPANY_VIEW_PASSWORD :{BLACK}Heslo |
1777 | STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Heslo-ochrana vasej spolocnosti proti neautorizovanemu pripojeniu hracov | |
1776 | STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Ochráň svoju spoločnosť heslom, aby sa nepripájali neautorizovaný hráči. | |
1778 | 1777 | STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Nastavte heslo spolocnosti |
1779 | 1778 | |
1780 | 1779 | # Network chat |
1951 | 1950 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Automaticka stavba zeleznicnych kolaji |
1952 | 1951 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Postavit zeleznicne depo (pre vyrobu a opravu vlakov) |
1953 | 1952 | STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Konvertovat zeleznicu na smerove body |
1954 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Postavit zeleznicnu stanicu | |
1953 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Postaviť železničnú stanicu | |
1955 | 1954 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Postavit zeleznicne semafory |
1956 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Postavit zeleznicny most | |
1955 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Postaviť železničný most | |
1957 | 1956 | STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Postavit zeleznicny tunel |
1958 | 1957 | STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Prepnut stavbu/odstranenie zeleznicnych kolaji a semaforov |
1959 | 1958 | STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Konvertovat/vylepsit typ zeleznice |
1998 | 1997 | STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Obojstranné signály (electric){}Obojstranné signály umožnujú vstúpiť viacerým vlakom na trať súčasne, iba ak vlak dokáže zastaviť pred brzdiacim bodom. Obojstranné signály umožňujú vlakom prechádzať trať z oboch strán. |
1999 | 1998 | STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Jednosmerné signály (electric){}Jednosmerné signály umožnujú vstúpiť viacerým vlakom na trať súčasne, iba ak vlak dokáže zastaviť pred brzdiacim bodom. Jednosmerné signály umožňujú vlakom prechádzať trať iba z jednej strany. |
2000 | 1999 | STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Konverzia signálu{}Pri vybraní, kliknutie na existujúci signál ho zmení na vybraný typ a variant, CTRL+klik prepne existujúci variant. |
2001 | STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Hustota signálov pri stavbe tahaním | |
2000 | STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Hustota signálov pri stavbe ťahaním | |
2002 | 2001 | STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Znižit hustotu signálov |
2003 | 2002 | STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Zvýšit hustotu signálov |
2004 | 2003 | |
2005 | 2004 | # Bridge selection window |
2006 | STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Vyber zeleznicny most | |
2005 | STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Vyber železničný most | |
2007 | 2006 | STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Vyber cestny most |
2008 | 2007 | STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Výber mostu - pre postavanie zvoľ typ mostu |
2009 | 2008 | STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY} |
2026 | 2025 | STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Stavať časti električkovej trate použitím automatického módu. Ctrl prepína stavanie/odstránenie električkovej trate |
2027 | 2026 | STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Postaviť depo pre cestné vozidlá (na výrobu a opravy vozidiel) |
2028 | 2027 | STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Postaviť električkové depo |
2029 | STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Postavit autobusovu zastavku | |
2028 | STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Postaviť autobusovú zastávku | |
2030 | 2029 | STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Postavit osobnú elektrickovú stanicu |
2031 | 2030 | STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Postavit vykladku |
2032 | 2031 | STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Postavit nákladnú elektrickovú stanicu |
2190 | 2189 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2191 | 2190 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Prijíma náklad: {LTBLUE} |
2192 | 2191 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2192 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rýchlostný limit koľají: {LTBLUE}{VELOCITY} | |
2193 | 2193 | |
2194 | 2194 | # Description of land area of different tiles |
2195 | 2195 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Skaly |
2477 | 2477 | STR_TOWN_DIRECTORY_CAPTION :{WHITE}Mesta |
2478 | 2478 | STR_TOWN_DIRECTORY_NONE :{ORANGE}- Nič - |
2479 | 2479 | STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) |
2480 | STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Názvy miest - kliknite na názov pre pohlad mesto | |
2480 | STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Názvy miest - kliknite na názov pre pohľad na mesto. Ctrl+klik otvorí nové okno s pohľadom na mesto | |
2481 | 2481 | STR_TOWN_POPULATION :{BLACK}Svetova populacia: {COMMA} |
2482 | 2482 | |
2483 | 2483 | # Town view window |
2644 | 2644 | STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Pozriet sidlo |
2645 | 2645 | STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Pozrieť sídlo firmy |
2646 | 2646 | STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Premiestnit sidlo |
2647 | STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Sidlo spolocnosti je mozne premiestnit za 1% hodnoty spolocnosti | |
2647 | STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Sídlo spoločnosti je možné premiestniť za 1% hodnoty spoločnosti | |
2648 | 2648 | |
2649 | 2649 | STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nová tvár |
2650 | 2650 | STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Vybrat novu tvar prezidenta |
2701 | 2701 | STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA} Lietad{P lo la iel} |
2702 | 2702 | |
2703 | 2703 | STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}Vlaky - kliknut na vlak pre informacie |
2704 | STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Automobily - kliknut pre detaily | |
2704 | STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Automobily - kliknúť pre detaily | |
2705 | 2705 | STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}Lode - kliknut pre informacie |
2706 | 2706 | STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Lietadlo - kliknut pre informacie |
2707 | 2707 | |
2863 | 2863 | STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Vytvori kopiu lietadla. Klikni na toto tlacidlo a potom na lietadlo v hangari alebo mimo neho. Stlacenim Control budu prikazy zdielane |
2864 | 2864 | |
2865 | 2865 | STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na pozíciu depa. Ctrl+klik otvorí nové okno s pohľadom na depo |
2866 | STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centrovat pohlad na poziciu garaze | |
2866 | STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centrovať pohľad na pozíciu garáže | |
2867 | 2867 | STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na lodenicu. Ctrl+klik otvorí nové okno s pohľadom na lodenicu |
2868 | 2868 | STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Vycentrovať pohľad na hangár. Ctrl+klik otvorí nové okno s pohľadom na hangár |
2869 | 2869 | |
3371 | 3371 | STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... nie je mozne zkonvertovat format obrazku. |
3372 | 3372 | |
3373 | 3373 | STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Upozornenie na stupnicu |
3374 | STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Prilis velka zmena velkosti zdrojovej mapy sa neodporuca. Pokracovat s generovanim? | |
3374 | STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Príliš veľká zmena veľkosti zdrojovej mapy sa neodporúča. Pokračovať s generovaním? | |
3375 | 3375 | |
3376 | 3376 | # Soundset messages |
3377 | 3377 | STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Bola nájdená len núdzová sada zvukov. Pre plnú podporu zvukových efektov je potrebné nainštalovať zvukovú sadu cez online obsah. |
3584 | 3584 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most je príliš nízky pre tento terén |
3585 | 3585 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Začiatok a koniec musí byť v rovine |
3586 | 3586 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... konce mostu musia byť na pevnine |
3587 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... most je príliš dlhý | |
3587 | 3588 | |
3588 | 3589 | # Tunnel related errors |
3589 | 3590 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Tu sa nedá postaviť tunel... |
10 | 10 | ##case r d t |
11 | 11 | |
12 | 12 | |
13 | # $Id: slovenian.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
13 | # $Id: slovenian.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
14 | 14 | |
15 | 15 | # This file is part of OpenTTD. |
16 | 16 | # OpenTTD 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, version 2. |
1139 | 1139 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :kot ostale industrije |
1140 | 1140 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :obetaven |
1141 | 1141 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Dovoli več enakih industrij na mesto: {ORANGE}{STRING} |
1142 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Industrije enakega tipa lahko stojijo skupaj: {ORANGE}{STRING} | |
1143 | 1142 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Vedno prikaži dolg datum v vrstici stanja: {ORANGE}{STRING} |
1144 | 1143 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Prikaz signalov na vozni smeri: {ORANGE}{STRING} |
1145 | 1144 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Prikaz okna financ na koncu leta: {ORANGE}{STRING} |
1792 | 1791 | STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :napaka protokola |
1793 | 1792 | STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF neskladje |
1794 | 1793 | STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :nepooblaščen |
1795 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :sprejet je bil čuden paket | |
1794 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :sprejet je bil neveljaven oz. nepričakovan paket | |
1796 | 1795 | STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :napačna različica |
1797 | 1796 | STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :ime je že v uporabi |
1798 | 1797 | STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :napačno geslo |
1810 | 1809 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Igra je še vedno prekinjena ({STRING}, {STRING}) |
1811 | 1810 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Igra je še vedno prekinjena ({STRING}, {STRING}, {STRING}) |
1812 | 1811 | STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Igra ponovno teče ({STRING}) |
1813 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :ni dovolj igralcev | |
1812 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :število igralcev | |
1814 | 1813 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :povezujem goste |
1815 | 1814 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :ročno |
1816 | 1815 | ############ End of leave-in-this-order |
2165 | 2164 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2166 | 2165 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Sprejet tovor: {LTBLUE} |
2167 | 2166 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2167 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Omejitev hitrosti vlakov: {LTBLUE}{VELOCITY} | |
2168 | 2168 | |
2169 | 2169 | # Description of land area of different tiles |
2170 | 2170 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kamenje |
3549 | 3549 | |
3550 | 3550 | # Tree related errors |
3551 | 3551 | STR_ERROR_TREE_ALREADY_HERE :{WHITE}... drevo je že posajeno |
3552 | STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... napačen teren za to vrsto drevesa | |
3552 | 3553 | STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Tukaj ne moreš posaditi drevesa... |
3553 | 3554 | |
3554 | 3555 | # Bridge related errors |
3559 | 3560 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Most je prenizek za teren |
3560 | 3561 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Začetek in konec morata biti na isti višini |
3561 | 3562 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... oba priključka mostu morata biti na kopnem |
3563 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... predolg most | |
3562 | 3564 | |
3563 | 3565 | # Tunnel related errors |
3564 | 3566 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Tukaj ni mogoče zgraditi predora... |
10 | 10 | ##gender masculino femenino |
11 | 11 | |
12 | 12 | |
13 | # $Id: spanish.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
13 | # $Id: spanish.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
14 | 14 | |
15 | 15 | # This file is part of OpenTTD. |
16 | 16 | # OpenTTD 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, version 2. |
145 | 145 | STR_ABBREV_MAIZE :{TINYFONT}MZ |
146 | 146 | STR_ABBREV_FRUIT :{TINYFONT}FT |
147 | 147 | STR_ABBREV_DIAMONDS :{TINYFONT}DM |
148 | STR_ABBREV_FOOD :{TINYFONT}CM | |
148 | STR_ABBREV_FOOD :{TINYFONT}AL | |
149 | 149 | STR_ABBREV_PAPER :{TINYFONT}PP |
150 | 150 | STR_ABBREV_GOLD :{TINYFONT}OR |
151 | 151 | STR_ABBREV_WATER :{TINYFONT}AG |
276 | 276 | STR_SORT_BY_LIFE_TIME :Tiempo de vida remanente |
277 | 277 | STR_SORT_BY_TIMETABLE_DELAY :Retraso en horarios |
278 | 278 | STR_SORT_BY_FACILITY :Tipo de estación |
279 | STR_SORT_BY_WAITING :Esperando valor de la carga | |
279 | STR_SORT_BY_WAITING :Carga en espera | |
280 | 280 | STR_SORT_BY_RATING_MAX :Clasificación de carga más alta |
281 | 281 | STR_SORT_BY_RATING_MIN :Clasificación de carga más baja |
282 | STR_SORT_BY_ENGINE_ID :ID Locomotora (ordenación clásica) | |
282 | STR_SORT_BY_ENGINE_ID :ID Motor (ordenación clásica) | |
283 | 283 | STR_SORT_BY_COST :Coste |
284 | 284 | STR_SORT_BY_POWER :Potencia |
285 | 285 | STR_SORT_BY_INTRO_DATE :Fecha Introducción |
521 | 521 | STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Tasas de pago por carga |
522 | 522 | STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINYFONT}{BLACK}Días en tránsito |
523 | 523 | STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINYFONT}{BLACK}Pago por entregar 10 unidades (o 1,000 litros) de mercancía a una distancia de 20 cuadros |
524 | STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Intercambiar gráfico para tipo de carga | |
524 | STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Mostrar / ocultar gráfico de este tipo de carga | |
525 | 525 | STR_GRAPH_CARGO_PAYMENT_CARGO :{TINYFONT}{BLACK}{STRING} |
526 | 526 | |
527 | 527 | STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Mostrar detalles de rendimiento |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :como las otras industrias |
1099 | 1099 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :prospección |
1100 | 1100 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Construcción de más de una industria similar por pueblo: {ORANGE}{STRING} |
1101 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Industrias mismo tipo pueden construirse unas junto a otras: {ORANGE}{STRING} | |
1102 | 1101 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Mostrar siempre fecha larga en la barra de estado: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Mostrar señales en el lado de conducción: {ORANGE}{STRING} |
1104 | 1103 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Mostrar ventana de finanzas al final del año: {ORANGE}{STRING} |
1751 | 1750 | STR_NETWORK_ERROR_CLIENT_PROTOCOL_ERROR :error de protocolo |
1752 | 1751 | STR_NETWORK_ERROR_CLIENT_NEWGRF_MISMATCH :NewGRF erróneo |
1753 | 1752 | STR_NETWORK_ERROR_CLIENT_NOT_AUTHORIZED :no autorizado |
1754 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :recibido paquete extraño | |
1753 | STR_NETWORK_ERROR_CLIENT_NOT_EXPECTED :recibido paquete inválido o inesperado | |
1755 | 1754 | STR_NETWORK_ERROR_CLIENT_WRONG_REVISION :versión incorrecta |
1756 | 1755 | STR_NETWORK_ERROR_CLIENT_NAME_IN_USE :nombre en uso |
1757 | 1756 | STR_NETWORK_ERROR_CLIENT_WRONG_PASSWORD :contraseña incorrecta |
1769 | 1768 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Juego todavía pausado ({STRING}, {STRING}) |
1770 | 1769 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Juego todavía pausado ({STRING}, {STRING}, {STRING}) |
1771 | 1770 | STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Juego reanudado ({STRING}) |
1772 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :no hay suficientes jugadores | |
1771 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :numero de jugadores | |
1773 | 1772 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :clientes conectándose |
1774 | 1773 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manual |
1775 | 1774 | ############ End of leave-in-this-order |
2124 | 2123 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carga aceptada: {LTBLUE} |
2126 | 2125 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2126 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Límite de velocidad del raíl: {LTBLUE}{VELOCITY} | |
2127 | 2127 | |
2128 | 2128 | # Description of land area of different tiles |
2129 | 2129 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Rocas |
3518 | 3518 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}El puente es demasiado bajo para el terreno |
3519 | 3519 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Comienzo y final deben estar en línea |
3520 | 3520 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... los dos extremos de un puente han de estar sobre tierra |
3521 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... puente demasiado largo | |
3521 | 3522 | |
3522 | 3523 | # Tunnel related errors |
3523 | 3524 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}No se puede construir túnel aquí... |
4109 | 4110 | STR_LORRY :{BLACK}{LORRY} |
4110 | 4111 | STR_PLANE :{BLACK}{PLANE} |
4111 | 4112 | STR_SHIP :{BLACK}{SHIP} |
4113 | ||
4114 | STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) |
9 | 9 | ##grflangid 0x2e |
10 | 10 | |
11 | 11 | |
12 | # $Id: swedish.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
12 | # $Id: swedish.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
435 | 435 | STR_ABOUT_MENU_LAND_BLOCK_INFO :Information om mark |
436 | 436 | STR_ABOUT_MENU_SEPARATOR : |
437 | 437 | STR_ABOUT_MENU_TOGGLE_CONSOLE :Visa/dölj konsolen |
438 | STR_ABOUT_MENU_AI_DEBUG :AI-debug | |
438 | STR_ABOUT_MENU_AI_DEBUG :AI-felsökning | |
439 | 439 | STR_ABOUT_MENU_SCREENSHOT :Skärmdump (Ctrl-S) |
440 | 440 | STR_ABOUT_MENU_GIANT_SCREENSHOT :Gigantisk skärmdump (Ctrl-G) |
441 | 441 | STR_ABOUT_MENU_ABOUT_OPENTTD :Om 'OpenTTD' |
1097 | 1097 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Som andra industrier |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospekterande |
1099 | 1099 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Tillåt flera industrier av samma typ per stad: {ORANGE}{STRING} |
1100 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Industrier av samma typ kan byggas nära varandra: {ORANGE}{STRING} | |
1101 | 1100 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Visa alltid långt datum i statusfältet: {ORANGE}{STRING} |
1102 | 1101 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Visa signaler på körsidan: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Visa finansfönstret vid slutet av året: {ORANGE}{STRING} |
2123 | 2122 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2124 | 2123 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Accepterat gods: {LTBLUE} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2125 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Hastighetsgräns för järnvägsspår: {LTBLUE}{VELOCITY} | |
2126 | 2126 | |
2127 | 2127 | # Description of land area of different tiles |
2128 | 2128 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Stenar |
2248 | 2248 | STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Snölinjens höjd: |
2249 | 2249 | STR_MAPGEN_SNOW_LINE_UP :{BLACK}Höj snölinjens höjd ett upp |
2250 | 2250 | STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Sänk snölinjens höjd ett ner |
2251 | STR_MAPGEN_RANDOM_SEED :{BLACK}Slump-nummer: | |
2251 | STR_MAPGEN_RANDOM_SEED :{BLACK}Slumpnummer: | |
2252 | 2252 | STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klicka för att mata in ett slump-nummer |
2253 | 2253 | STR_MAPGEN_RANDOM :{BLACK}Slumpa |
2254 | STR_MAPGEN_RANDOM_HELP :{BLACK}Ändra slump-nummer som används för terräng-generering | |
2254 | STR_MAPGEN_RANDOM_HELP :{BLACK}Ändra slumpnummer som används för terräng-generering | |
2255 | 2255 | STR_MAPGEN_LAND_GENERATOR :{BLACK}Landgenerator: |
2256 | 2256 | STR_MAPGEN_TREE_PLACER :{BLACK}Trädalgoritm: |
2257 | 2257 | STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrängtyp: |
2733 | 2733 | STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Byt namn på |
2734 | 2734 | |
2735 | 2735 | STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Byt namn på tågvagn |
2736 | STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Byt namn på vägfordon typ | |
2736 | STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}Byt namn på vägfordonstyp | |
2737 | 2737 | STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}Byt namn på skeppstyp |
2738 | 2738 | STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Byt namn på flygplanstyp |
2739 | 2739 | |
2740 | 2740 | STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Byt namn på tågets fordonstyp |
2741 | STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Byt namn på vägfordon typ | |
2741 | STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Byt namn på vägfordonstyp | |
2742 | 2742 | STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Byt namn på skeppstyp |
2743 | 2743 | STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Byt namn på flygplanstyp |
2744 | 2744 | |
3517 | 3517 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Bro är för låg för terrängen |
3518 | 3518 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Start- och slutpunkt måste ligga i linje |
3519 | 3519 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... brons båda ändar måste vara på land |
3520 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... för lång bro | |
3520 | 3521 | |
3521 | 3522 | # Tunnel related errors |
3522 | 3523 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Kan inte bygga tunnel här... |
4108 | 4109 | STR_LORRY :{BLACK}{LORRY} |
4109 | 4110 | STR_PLANE :{BLACK}{PLANE} |
4110 | 4111 | STR_SHIP :{BLACK}{SHIP} |
4112 | ||
4113 | STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) |
9 | 9 | ##grflangid 0x0c |
10 | 10 | |
11 | 11 | |
12 | # $Id: traditional_chinese.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
12 | # $Id: traditional_chinese.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
382 | 382 | STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :運載報表 |
383 | 383 | STR_GRAPH_MENU_PERFORMANCE_HISTORY_GRAPH :業績歷史圖表 |
384 | 384 | STR_GRAPH_MENU_COMPANY_VALUE_GRAPH :公司市值圖表 |
385 | STR_GRAPH_MENU_CARGO_PAYMENT_RATES :公定運費表 | |
385 | STR_GRAPH_MENU_CARGO_PAYMENT_RATES :貨物運費表 | |
386 | 386 | ############ range ends here |
387 | 387 | |
388 | 388 | ############ range for company league menu starts |
517 | 517 | STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}公司效率指標 (最高 1000) |
518 | 518 | STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}公司價值 |
519 | 519 | |
520 | STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}貨物運價 | |
520 | STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}貨物運費表 | |
521 | 521 | STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINYFONT}{BLACK}運輸日數 |
522 | 522 | STR_GRAPH_CARGO_PAYMENT_RATES_TITLE :{TINYFONT}{BLACK}將 10 單位 (或 10,000 升) 貨物運送 20 格的費用 |
523 | 523 | STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}切換貨物圖示開關 |
1097 | 1097 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :與其他工業相同 |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :需探勘 |
1099 | 1099 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}每個市鎮可擁有多個同類工業:{ORANGE}{STRING} |
1100 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}同類工業興建距離不受限制:{ORANGE}{STRING} | |
1101 | 1100 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}永遠於狀態列顯示長日期格式:{ORANGE}{STRING} |
1102 | 1101 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}於駕駛側顯示號誌:{ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}於年末顯示財政視窗:{ORANGE}{STRING} |
1124 | 1123 | STR_CONFIG_SETTING_DYNAMIC_ENGINES :{LTBLUE}允許載入多個 NewGRF 車輛組:{ORANGE}{STRING} |
1125 | 1124 | STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}當此項目為交通工具時不能變更此設定。 |
1126 | 1125 | |
1127 | STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :{LTBLUE}機場永不過期: {ORANGE}{STRING} | |
1126 | STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :{LTBLUE}機場永不過期:{ORANGE}{STRING} | |
1128 | 1127 | |
1129 | 1128 | STR_CONFIG_SETTING_WARN_LOST_TRAIN :{LTBLUE}列車迷路時警告:{ORANGE}{STRING} |
1130 | 1129 | STR_CONFIG_SETTING_ORDER_REVIEW :{LTBLUE}檢查交通工具指令:{ORANGE}{STRING} |
1229 | 1228 | STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :{LTBLUE}多人遊戲中允許電腦 AI 加入:{ORANGE}{STRING} |
1230 | 1229 | STR_CONFIG_SETTING_AI_MAX_OPCODES :{LTBLUE}在 AI 中止前的最大 #opcodes 數:{ORANGE}{STRING} |
1231 | 1230 | |
1232 | STR_CONFIG_SETTING_SERVINT_ISPERCENT :{LTBLUE}維護間隔以百分比計算:{ORANGE}{STRING} | |
1231 | STR_CONFIG_SETTING_SERVINT_ISPERCENT :{LTBLUE}維護間隔以百分比 (%) 計算:{ORANGE}{STRING} | |
1233 | 1232 | STR_CONFIG_SETTING_SERVINT_TRAINS :{LTBLUE}列車預設維護間隔:{ORANGE}{STRING} 天/% |
1234 | 1233 | STR_CONFIG_SETTING_SERVINT_TRAINS_DISABLED :{LTBLUE}列車預設維護間隔:{ORANGE}關閉 |
1235 | 1234 | STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :{LTBLUE}汽車預設維護間隔:{ORANGE}{STRING} 天/% |
1246 | 1245 | STR_CONFIG_SETTING_STARTING_YEAR :{LTBLUE}開始年份:{ORANGE}{STRING} |
1247 | 1246 | STR_CONFIG_SETTING_SMOOTH_ECONOMY :{LTBLUE}開啟平滑經濟模式 (更多、更小的變動):{ORANGE}{STRING} |
1248 | 1247 | STR_CONFIG_SETTING_ALLOW_SHARES :{LTBLUE}允許購買其它公司的股票:{ORANGE}{STRING} |
1249 | STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :{LTBLUE}原料投入工廠生產的比例:{ORANGE}{STRING}% | |
1248 | STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :{LTBLUE}轉運時每段旅程支付的運費比例 (避免虧損):{ORANGE}{STRING}% | |
1250 | 1249 | STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :{LTBLUE}拖拉時每隔:{ORANGE}{STRING} 格自動建造號誌 |
1251 | 1250 | STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}自動在指定年份前建造懸臂號誌:{ORANGE}{STRING} |
1252 | 1251 | STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :{LTBLUE}啟用號誌介面:{ORANGE}{STRING} |
2123 | 2122 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:{LTBLUE}{STRING} |
2124 | 2123 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}接收貨物:{LTBLUE} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2125 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}軌道速限:{LTBLUE}{VELOCITY} | |
2126 | 2126 | |
2127 | 2127 | # Description of land area of different tiles |
2128 | 2128 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :石頭 |
3122 | 3122 | STR_ORDER_GO_TO_HANGAR_FORMAT :{STRING} {STATION} 機棚 |
3123 | 3123 | |
3124 | 3124 | STR_ORDER_REFIT_ORDER :(改裝成 {STRING}) |
3125 | STR_ORDER_REFIT_STOP_ORDER :(裝載 {STRING} 並停止) | |
3125 | STR_ORDER_REFIT_STOP_ORDER :(裝載 {STRING} 並停止) | |
3126 | 3126 | STR_ORDER_STOP_ORDER :(停止) |
3127 | 3127 | |
3128 | 3128 | STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING} |
3285 | 3285 | STR_ERROR_GAME_LOAD_FAILED :{WHITE}遊戲載入失敗{}{STRING} |
3286 | 3286 | STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :內部錯誤:{STRING} |
3287 | 3287 | STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :損壞的存檔 - {STRING} |
3288 | STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :存檔是由更新版的遊戲所建立 | |
3288 | STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :該存檔是由較新版本的遊戲所產生 | |
3289 | 3289 | STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :檔案無法讀取 |
3290 | 3290 | STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :檔案無法寫入 |
3291 | 3291 | STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :資料完整性檢查失敗 |
3346 | 3346 | STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}無法變更此處地形... |
3347 | 3347 | STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}挖掘工作會摧毀隧道 |
3348 | 3348 | STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}已到海平面 |
3349 | STR_ERROR_TOO_HIGH :{WHITE}太高 | |
3349 | STR_ERROR_TOO_HIGH :{WHITE}... 太高 | |
3350 | 3350 | STR_ERROR_ALREADY_LEVELLED :{WHITE}... 已經平了 |
3351 | 3351 | |
3352 | 3352 | # Company related errors |
3361 | 3361 | STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}無法把貸款的錢流通出去... |
3362 | 3362 | STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}無法購買公司... |
3363 | 3363 | STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}無法建造公司總部... |
3364 | STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}無法購買這間�司的股份... | |
3364 | STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}無法購買這間公司的股份... | |
3365 | 3365 | STR_ERROR_CAN_T_SELL_25_SHARE_IN :{WHITE}無法出售這間公司的股份... |
3366 | 3366 | STR_ERROR_PROTECTED :{WHITE}這間公司才剛成立,還不能交易股票... |
3367 | 3367 | |
3517 | 3517 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}橋樑太接近地面 |
3518 | 3518 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}開始與結束位置必須在同一直線上 |
3519 | 3519 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... 橋樑的兩端應在陸地上 |
3520 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... 橋樑過長 | |
3520 | 3521 | |
3521 | 3522 | # Tunnel related errors |
3522 | 3523 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}無法在此挖掘隧道... |
3624 | 3625 | STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}此交通工具將不停靠此車站 |
3625 | 3626 | |
3626 | 3627 | # Sign related errors |
3627 | STR_ERROR_TOO_MANY_SIGNS :{WHITE}... 太多標誌了 | |
3628 | STR_ERROR_TOO_MANY_SIGNS :{WHITE}... 已有太多標誌 | |
3628 | 3629 | STR_ERROR_CAN_T_PLACE_SIGN_HERE :{WHITE}不能在這邊放置標誌... |
3629 | 3630 | STR_ERROR_CAN_T_CHANGE_SIGN_NAME :{WHITE}不能修改標誌名稱... |
3630 | 3631 | STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}無法刪除標誌... |
10 | 10 | ##case tamlanan |
11 | 11 | |
12 | 12 | |
13 | # $Id: turkish.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
13 | # $Id: turkish.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
14 | 14 | |
15 | 15 | # This file is part of OpenTTD. |
16 | 16 | # OpenTTD 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, version 2. |
229 | 229 | |
230 | 230 | STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Pencereyi kapat |
231 | 231 | STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Pencere başlığı - pencereyi hareket ettirmek için sürükle |
232 | STR_TOOLTIP_SHADE :{BLACK}Pencereyi gizle - Yalnız başlık çubuğunu göster | |
232 | STR_TOOLTIP_SHADE :{BLACK}Pencereyi gizle - yalnız başlık çubuğunu göster | |
233 | 233 | STR_TOOLTIP_STICKY :{BLACK}'Tüm pencereleri kapat' tuşuyla kapanmasın |
234 | 234 | STR_TOOLTIP_RESIZE :{BLACK}Pencereyi boyutlandirmak için tıklayıp sürükle |
235 | 235 | STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Pencere boyutunu büyült/küçült |
294 | 294 | STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Kaydet, ana menüye dön, çık |
295 | 295 | STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Haritayı göster |
296 | 296 | STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Şehir listesini göster |
297 | STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Sübvansiyonları göster | |
297 | STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Teşvikleri göster | |
298 | 298 | STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Şirkete ait istasyonları listele |
299 | 299 | STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Şirketin ekonomik durumunu göster |
300 | 300 | STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Şirketin genel durumunu göster |
303 | 303 | STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Yeni fabrika kur veya tüm fabrikaları listele |
304 | 304 | STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Şirkete ait trenleri listele. Ctrl+sol tuş ile grup/araç listesini aç/kapa |
305 | 305 | STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Şirkete ait karayolu taşıtlarını listele. Ctrl-tık grup/araç listesini açıp kapatır |
306 | STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Şirkete ait gemileri listele | |
307 | STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Şirkete ait uçakları listele | |
306 | STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Şirkete ait gemileri listele. Ctrl+Tık grup/araç listesini açar/kapatır | |
307 | STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Şirkete ait uçakları listele. Ctrl+Tık grup/araç listesini açar/kapatır | |
308 | 308 | STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Yakınlaş |
309 | 309 | STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Uzaklaş |
310 | 310 | STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Tren rayı yapımı |
314 | 314 | STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Arazi düzenleme araç çubuğunu aç (ağaç dikme, alçaltma/yükseltme vb. için). |
315 | 315 | STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Ses/müzik penceresini göster |
316 | 316 | STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Son mesajı/haberi göster, mesaj ayarlarını göster |
317 | STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Arazi bilgisi | |
317 | STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Arazi bilgisi, konsol, YZ hata ayıklama, ekran görüntüsü yakalama, OpenTTD hakkında | |
318 | 318 | STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Araç çubuklarını değiştir |
319 | 319 | |
320 | 320 | # Extra tooltips for the scenario editor toolbar |
374 | 374 | ############ end of the 'Town' dropdown |
375 | 375 | |
376 | 376 | ############ range for subsidies menu starts |
377 | STR_SUBSIDIES_MENU_SUBSIDIES :Sübvansiyonlar | |
377 | STR_SUBSIDIES_MENU_SUBSIDIES :Teşvikler | |
378 | 378 | ############ range ends here |
379 | 379 | |
380 | 380 | ############ range for graph menu starts |
392 | 392 | ############ range ends here |
393 | 393 | |
394 | 394 | ############ range for industry menu starts |
395 | STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Fabrika Listesi | |
395 | STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :Fabrika listesi | |
396 | 396 | STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :Yeni fabrika kur |
397 | 397 | ############ range ends here |
398 | 398 | |
399 | 399 | ############ range for railway construction menu starts |
400 | 400 | STR_RAIL_MENU_RAILROAD_CONSTRUCTION :Demiryolu yapımı |
401 | STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Elektrikli Ray Yapımı | |
401 | STR_RAIL_MENU_ELRAIL_CONSTRUCTION :Elektrikli ray yapımı | |
402 | 402 | STR_RAIL_MENU_MONORAIL_CONSTRUCTION :Monoray yapımı |
403 | 403 | STR_RAIL_MENU_MAGLEV_CONSTRUCTION :MagLev yapımı |
404 | 404 | ############ range ends here |
435 | 435 | ############ range for about menu starts |
436 | 436 | STR_ABOUT_MENU_LAND_BLOCK_INFO :Arazi bilgisi |
437 | 437 | STR_ABOUT_MENU_SEPARATOR : |
438 | STR_ABOUT_MENU_TOGGLE_CONSOLE :Konsol Aç/Kapa | |
439 | STR_ABOUT_MENU_AI_DEBUG :YZ Hata Ayıklama | |
438 | STR_ABOUT_MENU_TOGGLE_CONSOLE :Konsol aç/kapa | |
439 | STR_ABOUT_MENU_AI_DEBUG :YZ hata ayıklama | |
440 | 440 | STR_ABOUT_MENU_SCREENSHOT :Ekran Görüntüsü (Ctrl-S) |
441 | STR_ABOUT_MENU_GIANT_SCREENSHOT :Dev Ekran Görüntüsü (Ctrl-G) | |
441 | STR_ABOUT_MENU_GIANT_SCREENSHOT :Dev ekran görüntüsü (Ctrl-G) | |
442 | 442 | STR_ABOUT_MENU_ABOUT_OPENTTD :'OpenTTD' Hakkında |
443 | 443 | ############ range ends here |
444 | 444 | |
561 | 561 | STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Kredi: |
562 | 562 | STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Toplam: |
563 | 563 | ############ End of order list |
564 | STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Araç sayısı; araba, tren uçak ve gemiler dahil | |
565 | STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}İstasyon parçaları. Tek bir istasyon halinde olsa bile istasyonun her parçasi ayri olarak sayılir (ör: tren istasyonu, otobüs durağı, havalimanı) | |
564 | STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Geçen yıl kar eden araç sayısı. Araba, tren, uçak ve gemileri kapsar | |
565 | STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Yakın zamanda hizmet almış istasyon parçaları. Tek bir istasyon halinde olsa bile istasyonun her parçası ayrı olarak sayılır (ör: tren istasyonu, otobüs durağı, havalimanı) | |
566 | 566 | STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}En az gelirli aracın kârı (Sadece 2 yıldan yaşlı araçlar için) |
567 | STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Son 12 çeyrekte en az kârlı aydaki gelir | |
567 | STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Son 12 çeyrek içindeki en az kârlı çeyrekteki gelir | |
568 | 568 | STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Son 12 çeyreğin en kârlı olanında kazanılan para |
569 | 569 | STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Son 4 çeyrekte taşınan kargo miktar |
570 | 570 | STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Son çeyrekte taşınan farkli kargo türleri |
688 | 688 | STR_SMALLMAP_LEGENDA_SNOW :{TINYFONT}{BLACK}Karlı |
689 | 689 | |
690 | 690 | STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Harita üzerinde şehir isimlerini göster/gizle |
691 | STR_SMALLMAP_CENTER :{BLACK}Küçük haritayı burada ortala | |
691 | STR_SMALLMAP_CENTER :{BLACK}Küçük haritayı mevcut konumda ortala | |
692 | 692 | STR_SMALLMAP_INDUSTRY :{TINYFONT}{STRING} ({NUM}) |
693 | 693 | STR_SMALLMAP_TOWN :{TINYFONT}{WHITE}{TOWN} |
694 | 694 | STR_SMALLMAP_DISABLE_ALL :{BLACK}Hepsini kapa |
733 | 733 | STR_NEWS_MESSAGE_TYPE_ADVICE_INFORMATION_ON_COMPANY :{YELLOW}Şirketin araçları hakkında tavsiye / bilgi |
734 | 734 | STR_NEWS_MESSAGE_TYPE_NEW_VEHICLES :{YELLOW}Yeni araçlar |
735 | 735 | STR_NEWS_MESSAGE_TYPE_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Kargo isteğindeki değişiklikler |
736 | STR_NEWS_MESSAGE_TYPE_SUBSIDIES :{YELLOW}Sübvansiyonlar | |
736 | STR_NEWS_MESSAGE_TYPE_SUBSIDIES :{YELLOW}Teşvikler | |
737 | 737 | STR_NEWS_MESSAGE_TYPE_GENERAL_INFORMATION :{YELLOW}Genel bilgi |
738 | 738 | |
739 | 739 | STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIGFONT}{BLACK}Kutlama Yapıldı . . .{} {STATION} istasyonuna ilk kez tren geldi! |
748 | 748 | STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIGFONT}{BLACK}Trafik kazasi!{}Trenle çarpisan aracın soförü feci şekilde can verdi |
749 | 749 | STR_NEWS_ROAD_VEHICLE_CRASH :{BIGFONT}{BLACK}Trafik kazasi!{}{COMMA} kişi patlamadan kurtulamadı |
750 | 750 | STR_NEWS_AIRCRAFT_CRASH :{BIGFONT}{BLACK}Uçak Kazasi!{}{COMMA} ölü var - {STATION} |
751 | STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIGFONT}{BLACK}Uçak Kazasi!{}Benzin yetmedi, {COMMA} kisi öldü! | |
751 | STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIGFONT}{BLACK}Uçak Kazası!{}Uçağın havada yakıtı bitti, {COMMA} kişi hayatını kaybetti | |
752 | 752 | |
753 | 753 | STR_NEWS_DISASTER_ZEPPELIN :{BIGFONT}{BLACK}Zeplin düştü - {STATION}! |
754 | 754 | STR_NEWS_DISASTER_SMALL_UFO :{BIGFONT}{BLACK}UFO'yla çarpışan araba parçalandı! |
786 | 786 | STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL :{BIGFONT}{BLACK}{INDUSTRY}nde yeni kömür tabakasi bulundu!{} Üretimin ikiye katlanması bekleniyor! |
787 | 787 | STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL :{BIGFONT}{BLACK}{INDUSTRY}nda yeni petrol rezervi bulundu!{} Üretimin ikiye katlanması bekleniyor! |
788 | 788 | STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM :{BIGFONT}{BLACK}{INDUSTRY}ndeki yeni tarim tekniklerinin üretimi ikiye katlamasi bekleniyor! |
789 | STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{1:INDUSTRY}'nin {BIGFONT}{BLACK}{0:STRING} üretimi %{2:COMMA} arttı! | |
789 | STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_SMOOTH :{BIGFONT}{1:INDUSTRY}'nin {BLACK}{0:STRING} üretimi %{2:COMMA} arttı! | |
790 | 790 | STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIGFONT}{BLACK}{INDUSTRY} üretimi %50 düşürdü |
791 | 791 | STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIGFONT}{BLACK}{INDUSTRY} bölgesine böcek sürüsü girdi !{} Üretim %50 düştü |
792 | STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{1:INDUSTRY}'nin {BIGFONT}{BLACK}{0:STRING} üretimi %{2:COMMA} azaldı! | |
792 | STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIGFONT}{1:INDUSTRY}'nin {BLACK}{0:STRING} üretimi %{2:COMMA} azaldı! | |
793 | 793 | |
794 | 794 | STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} garajda bekliyor |
795 | 795 | STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} garajda bekliyor |
823 | 823 | STR_NEWS_STATION_NOW_ACCEPTS_CARGO :{WHITE}{STATION} artık {STRING} istiyor |
824 | 824 | STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION} artık {STRING} ve {STRING} istiyor |
825 | 825 | |
826 | STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIGFONT}{BLACK}Sübvansiyon zamanı doldu: {}{}{STRING} {STRING} -> {STRING} artık fazla gelir getirmeyecek. | |
827 | STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIGFONT}{BLACK}Sübvansiyon geri çekildi:{}{}{STRING} servisi {STRING} -> {STRING} arasında fazla gelir getirmeyecek. | |
828 | STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIGFONT}{BLACK}Servis ihalesi önerildi: {}{} ilk {STRING} servisi {STRING} -> {STRING} arasında belediyeden prim alacak! | |
829 | STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIGFONT}{BLACK}Sübvansiyon {STRING} şirketine verildi!{}{}{STRING} servisi {STRING} -> {STRING} aralığında bir yıl boyunca %50 fazla gelir sağlayacak! | |
830 | STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIGFONT}{BLACK}Sübvansiyon {STRING} şirketine verildi!{}{}{STRING} servisi {STRING} -> {STRING} aralığında bir yıl boyunca iki kat fazla gelir sağlayacak! | |
831 | STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIGFONT}{BLACK}Sübvansiyon {STRING} şirketine verildi!{}{}{STRING} servisi {STRING} -> {STRING} aralığında bir yıl boyunca üç kat fazla gelir sağlayacak! | |
832 | STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIGFONT}{BLACK}Sübvansiyon {STRING} şirketine verildi!{}{}{STRING} servisi {STRING} -> {STRING} aralığında bir yıl boyunca dört kat fazla gelir sağlayacak! | |
826 | STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIGFONT}{BLACK}Teşvik önerisinin süresi doldu: {}{}{STRING} {STRING} -> {STRING} artık teşvik almayacak. | |
827 | STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIGFONT}{BLACK}Teşvik geri çekildi:{}{}{1:STRING} -> {2:STRING} arasındaki {0:STRING} taşıma hizmeti artık teşvik almayacak. | |
828 | STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIGFONT}{BLACK}Hizmet teşviği önerildi: {}{} {1:STRING} -> {2:STRING} arası ilk {0:STRING} taşıma hizmeti belediyeden teşvik alacak! | |
829 | STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIGFONT}{BLACK}Hizmet teşviği {0:STRING} şirketine verildi!{}{}{2:STRING} -> {3:STRING} arasındaki {1:STRING} taşıma hizmeti bir yıl boyunca %50 fazla gelir sağlayacak! | |
830 | STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIGFONT}{BLACK}Hizmet teşviği {0:STRING} şirketine verildi!{}{}{2:STRING} -> {3:STRING} arasındaki {1:STRING} taşıma hizmeti bir yıl boyunca iki kat fazla gelir sağlayacak! | |
831 | STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIGFONT}{BLACK}Hizmet teşviği {0:STRING} şirketine verildi!{}{}{2:STRING} -> {3:STRING} arasındaki {1:STRING} taşıma hizmeti bir yıl boyunca üç kat fazla gelir sağlayacak! | |
832 | STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIGFONT}{BLACK}Hizmet teşviği {0:STRING} şirketine verildi!{}{}{2:STRING} -> {3:STRING} arasındaki {1:STRING} taşıma hizmeti bir yıl boyunca dört kat fazla gelir sağlayacak! | |
833 | 833 | |
834 | 834 | STR_NEWS_ROAD_REBUILDING :{BIGFONT}{BLACK} {TOWN} şehrinde trafik durdu!{}{} {STRING} şirketinin yol yapım çalışmaları başladı! |
835 | 835 | |
1003 | 1003 | STR_DIFFICULTY_LEVEL_SETTING_VEHICLE_RUNNING_COSTS :{LTBLUE}Bakım ücretleri: {ORANGE}{STRING} |
1004 | 1004 | STR_DIFFICULTY_LEVEL_SETTING_CONSTRUCTION_SPEED_OF_COMPETITOR :{LTBLUE}Rakip inşa hızı: {ORANGE}{STRING} |
1005 | 1005 | STR_DIFFICULTY_LEVEL_SETTING_VEHICLE_BREAKDOWNS :{LTBLUE}Araç bozulmaları: {ORANGE}{STRING} |
1006 | STR_DIFFICULTY_LEVEL_SETTING_SUBSIDY_MULTIPLIER :{LTBLUE}İhale çarpanı: {ORANGE}{STRING} | |
1006 | STR_DIFFICULTY_LEVEL_SETTING_SUBSIDY_MULTIPLIER :{LTBLUE}Teşvik çarpanı: {ORANGE}{STRING} | |
1007 | 1007 | STR_DIFFICULTY_LEVEL_SETTING_COST_OF_CONSTRUCTION :{LTBLUE}İnşa fiyatları: {ORANGE}{STRING} |
1008 | 1008 | STR_DIFFICULTY_LEVEL_SETTING_TERRAIN_TYPE :{LTBLUE}Yer tipi: {ORANGE}{STRING} |
1009 | 1009 | STR_DIFFICULTY_LEVEL_SETTING_QUANTITY_OF_SEA_LAKES :{LTBLUE}Su miktarı: {ORANGE}{STRING} |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :diğer fabrikalar gibi |
1099 | 1099 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :tetkik aramayla |
1100 | 1100 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Bir şehirde birden fazla aynı fabrika olması izinli: {ORANGE}{STRING} |
1101 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Aynı tür fabrikalar yan yana yapılabilir: {ORANGE}{STRING} | |
1102 | 1101 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Durum çubuğunda uzun tarih göster: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Sinyalizasyon sürüş yönünde olsun: {ORANGE}{STRING} |
1104 | 1103 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Sene sonunda ekonomik durumu göster: {ORANGE}{STRING} |
1349 | 1348 | STR_INTRO_AI_SETTINGS :{BLACK}YZ Ayarları |
1350 | 1349 | STR_INTRO_QUIT :{BLACK}Çıkış |
1351 | 1350 | |
1352 | STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Yeni oyuna başla | |
1351 | STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Yeni oyuna başla. Ctrl+Click harita ayarlamasını atlar. | |
1353 | 1352 | STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Oyun yükle |
1354 | 1353 | STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Yükseklik haritasını kullanarak yeni oyun başlat |
1355 | 1354 | STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Özel bir senaryo kullanarak yeni oyun başlat |
1356 | STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Kendi dünyani/senoryonu yarat | |
1355 | STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Kendi dünyanı/senaryonu yarat | |
1357 | 1356 | STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Çok oyunculu oyun başlat |
1358 | 1357 | |
1359 | 1358 | STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}'ılıman' yer stilini seç |
1463 | 1462 | STR_FACE_SIMPLE_TOOLTIP :{BLACK}Basit yüz seçimi. |
1464 | 1463 | STR_FACE_LOAD :{BLACK}Yükle |
1465 | 1464 | STR_FACE_LOAD_TOOLTIP :{BLACK}Tercih edilen yüzü yükle |
1466 | STR_FACE_LOAD_DONE :{WHITE}Tercih edilen yüz OpenTTD ayar dosyasından yüklendi. | |
1465 | STR_FACE_LOAD_DONE :{WHITE}Tercih edilen yüz OpenTTD ayar dosyasından yüklendi | |
1467 | 1466 | STR_FACE_FACECODE :{BLACK}Oyuncu yüzü no. |
1468 | 1467 | STR_FACE_FACECODE_TOOLTIP :{BLACK}Oyuncu suratının numarasını göster/değiştir |
1469 | 1468 | STR_FACE_FACECODE_CAPTION :{WHITE}Oyuncu suratının numarasını göster/değiştir |
1471 | 1470 | STR_FACE_FACECODE_ERR :{WHITE}Oyuncu surat numarası ayarlanamadı - 0 ve 4.294.967.295 arasında bir sayı olmalı! |
1472 | 1471 | STR_FACE_SAVE :{BLACK}Kaydet |
1473 | 1472 | STR_FACE_SAVE_TOOLTIP :{BLACK}Tercih edilen yüzü kaydet |
1474 | STR_FACE_SAVE_DONE :{WHITE}Bu surat OpenTTD ayar dosyasına kaydedilecek. | |
1473 | STR_FACE_SAVE_DONE :{WHITE}Bu yüz OpenTTD ayar dosyasına favoriniz olarak kaydedilecek | |
1475 | 1474 | STR_FACE_EUROPEAN :{BLACK}Avrupalı |
1476 | STR_FACE_SELECT_EUROPEAN :{BLACK}Beyaz yüz seç | |
1475 | STR_FACE_SELECT_EUROPEAN :{BLACK}Avrupalı yüz seç | |
1477 | 1476 | STR_FACE_AFRICAN :{BLACK}Afrikalı |
1478 | 1477 | STR_FACE_SELECT_AFRICAN :{BLACK}Siyah yüz seç |
1479 | 1478 | STR_FACE_YES :Evet |
1533 | 1532 | STR_NETWORK_SERVER_LIST_GAME_INFO :{SILVER}OYUN BİLGİSİ |
1534 | 1533 | STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}İstemciler: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA} |
1535 | 1534 | STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}Dil: {WHITE}{STRING} |
1536 | STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Set: {WHITE}{STRING} | |
1535 | STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}Yer yüzü: {WHITE}{STRING} | |
1537 | 1536 | STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}Harita boyutu: {WHITE}{COMMA}x{COMMA} |
1538 | 1537 | STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}Sunucu sürümü: {WHITE}{STRING} |
1539 | 1538 | STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}Sunucu adresi: {WHITE}{STRING} |
1809 | 1808 | STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Bu bağımlılık indirilmek üzere seçildi |
1810 | 1809 | STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Bu zaten var |
1811 | 1810 | STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Bu içerik bilinmiyor ve OpenTTD'ye indirilemez |
1812 | STR_CONTENT_DETAIL_UPDATE :{SILVER}Bu mevcut {STRING} için bir yenilemedir | |
1811 | STR_CONTENT_DETAIL_UPDATE :{SILVER}Bu, mevcut {STRING} için bir yenilemedir | |
1813 | 1812 | STR_CONTENT_DETAIL_NAME :{SILVER}Ad: {WHITE}{STRING} |
1814 | 1813 | STR_CONTENT_DETAIL_VERSION :{SILVER}Sürüm: {WHITE}{STRING} |
1815 | 1814 | STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Tanım: {WHITE}{STRING} |
1922 | 1921 | STR_BUILD_SIGNAL_SEMAPHORE_NORM_TOOLTIP :{BLACK}Blok Sinyali (semafor){}Bu en temel sinyal tipidir, bir blok içinde aynı anda yalnız bir tren bulunmasına izin verir. |
1923 | 1922 | STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Giriş-Sinyali (semafor){}Yolun devam eden bölümünde en az bir yeşil çıkış sinyali olduğu sürece yeşil yanar. Aksi halde kırmızı yanar. |
1924 | 1923 | STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Çıkış Sinyali (semafor){}Blok sinyali ile aynı şekilde çalışır ancak giriş ve karışık ön sinyaller ile doğru rengi tetiklemek gerekmektedir. |
1925 | STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Karışık Sinyal (semafor){}Karışık sinyal hem giriş hem de çıkış sinyali gibi davranır. Bu büyük ön sinyal "ağaçları" yapmanızı sağlar. | |
1924 | STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Karışık Sinyal (semafor){}Karışık sinyal hem giriş hem de çıkış sinyali gibi davranır. Bu şekilde büyük ön sinyal "ağaçları" yapabilirsiniz | |
1926 | 1925 | STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Yol Sinyali (semafor){}Yol sinyali, gelen tren güvenli bir durma noktasına yol ayırabiliyor ise bir sinyal bloğuna aynı anda birden fazla trenin girmesine izin verir. Standart yol sinyalleri arka taraftan geçişe izin verir. |
1927 | 1926 | STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Tek Yön Yol Sinyali (semafor){}Yol sinyali, gelen tren güvenli bir durma noktasına yol ayırabiliyor ise bir sinyal bloğuna aynı anda birden fazla trenin girmesine izin verir. Tek yön yol sinyalleri arka taraftan geçişe izin vermez. |
1928 | 1927 | STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Blok Sinyali (elektrikli){}En temel sinyal tipidir, bir blok içinde aynı anda yalnız bir tren bulunmasına izin verir. |
1929 | 1928 | STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Giriş-Sinyali (elektrikli){}Yolun devam eden bölümünde en az bir yeşil çıkış sinyali olduğu sürece yeşil yanar. Aksi halde kırmızı yanar. |
1930 | 1929 | STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Çıkış Sinyali (elektrikli){}Blok sinyali ile aynı şekilde çalışır ancak giriş ve karışık ön sinyaller ile doğru rengi tetiklemek gerekmektedir. |
1931 | STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Karışık Sinyal (elektrikli){}Karışık sinyal hem giriş hem de çıkış sinyali gibi davranır. Bu büyük ön sinyal "ağaçları" yapmanızı sağlar. | |
1930 | STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Karışık Sinyal (elektrikli){}Karışık sinyal hem giriş hem de çıkış sinyali gibi davranır. Bu şekilde büyük ön sinyal "ağaçları" yapabilirsiniz. | |
1932 | 1931 | STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Yol Sinyali (elektrikli){}Yol sinyali, gelen tren güvenli bir durma noktasına yol ayırabiliyor ise bir sinyal bloğuna aynı anda birden fazla trenin girmesine izin verir. Standart yol sinyalleri arka taraftan geçişe izin verir. |
1933 | 1932 | STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Tek Yön Yol Sinyali (elektrikli){}Yol sinyali, gelen tren güvenli bir durma noktasına yol ayırabiliyor ise bir sinyal bloğuna aynı anda birden fazla trenin girmesine izin verir. Tek yön yol sinyalleri arka taraftan geçişe izin vermez. |
1934 | 1933 | STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Sinyal Dönüştür{}Seçildiğinde, tıklama var olan sinyali seçili sinyal tür ve alt türüne çevirir, CTRL ile tıklama mevcut alt türü değiştirir. |
1939 | 1938 | # Bridge selection window |
1940 | 1939 | STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Tren Köprüsü Seç |
1941 | 1940 | STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Köprü Seç |
1942 | STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Köprü seçimi - yapacağınız köprüyü seçin | |
1941 | STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Köprü seçimi - tercih ettiğiniz köprüyü yapmak için tıklayın | |
1943 | 1942 | STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY} |
1944 | 1943 | STR_BRIDGE_NAME_SUSPENSION_STEEL :Çelik, Asma |
1945 | 1944 | STR_BRIDGE_NAME_GIRDER_STEEL :Çelik, Kirişli |
2114 | 2113 | STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Sahibi: {LTBLUE}{STRING} |
2115 | 2114 | STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Yolun sahibi: {LTBLUE}{STRING} |
2116 | 2115 | STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Tramvayın sahibi: {LTBLUE}{STRING} |
2117 | STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Demiryolunun sahibi: {LTBLUE}{STRING} | |
2116 | STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Demiryolu sahibi: {LTBLUE}{STRING} | |
2118 | 2117 | STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Belediyesi: {LTBLUE}{STRING} |
2119 | 2118 | STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Hiçbiri |
2120 | 2119 | STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinatlar: {LTBLUE}{NUM}x{NUM}x{NUM} ({STRING}) |
2124 | 2123 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}İstenen: {LTBLUE} |
2126 | 2125 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2126 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Ray hız sınırı: {LTBLUE}{VELOCITY} | |
2127 | 2127 | |
2128 | 2128 | # Description of land area of different tiles |
2129 | 2129 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kayalar |
2159 | 2159 | STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Tren garı |
2160 | 2160 | |
2161 | 2161 | STR_LAI_ROAD_DESCRIPTION_ROAD :Yol |
2162 | STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Lambali yol | |
2162 | STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Sokak lambalı yol | |
2163 | 2163 | STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :Ağaçli yol |
2164 | 2164 | STR_LAI_ROAD_DESCRIPTION_ROAD_VEHICLE_DEPOT :Araba garı |
2165 | 2165 | STR_LAI_ROAD_DESCRIPTION_ROAD_RAIL_LEVEL_CROSSING :Hemzemin geçit |
2378 | 2378 | |
2379 | 2379 | # NewGRF related 'general' warnings |
2380 | 2380 | STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Uyarı! |
2381 | STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Çalışan bir oyunu değiştirmek üzeresiniz; bu OpenTTD'yi çökertebilir.{}Emin misiniz? | |
2381 | STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Çalışan bir oyunu değiştirmek üzeresiniz. Bu OpenTTD'yi çökertebilir.{}Bundan kesinlikle emin misiniz? | |
2382 | 2382 | |
2383 | 2383 | STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Dosya eklenemiyor: GRF ID çakışması |
2384 | 2384 | STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Eşleşen dosya bulunamadı (uyumlu GRF yüklendi) |
2465 | 2465 | STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Yakalanma riskini göze alarak belediyeye rüşvet ver.{} Fiyat: {CURRENCY} |
2466 | 2466 | |
2467 | 2467 | # Subsidies window |
2468 | STR_SUBSIDIES_CAPTION :{WHITE}Sübvansiyonlar | |
2469 | STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Teklif edilmiş sübvansiyonlar: | |
2468 | STR_SUBSIDIES_CAPTION :{WHITE}Teşvikler | |
2469 | STR_SUBSIDIES_OFFERED_TITLE :{BLACK}Teklif edilmiş teşvikler: | |
2470 | 2470 | STR_SUBSIDIES_OFFERED_FROM_TO :{ORANGE}{STRING} {STRING} -> {STRING}{YELLOW} ({DATE_SHORT} tarihinden itibaren) |
2471 | 2471 | STR_SUBSIDIES_NONE :{ORANGE}Yok |
2472 | STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Verilen sübvansiyonlar: | |
2472 | STR_SUBSIDIES_SUBSIDISED_TITLE :{BLACK}Teşvik almakta olan hizmetler: | |
2473 | 2473 | STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING} {STRING} -> {STRING}{YELLOW} ({COMPANY}{YELLOW}, {DATE_SHORT} tarihine kadar) |
2474 | 2474 | STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Görüntüyü ortalamak için servisi tıklayın |
2475 | 2475 | |
2536 | 2536 | STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}İnşaat |
2537 | 2537 | STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Yeni araçlar |
2538 | 2538 | STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Tren Bakımları |
2539 | STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Araba Bakımları | |
2539 | STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Kara Taşıtı Çalıştırma Giderleri | |
2540 | 2540 | STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Uçak Bakımları |
2541 | 2541 | STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Gemi Bakımları |
2542 | 2542 | STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}İnşaat bakımları |
2903 | 2903 | STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Gemi ayrıntılarını göster |
2904 | 2904 | STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Uçak ayrıntılarını göster |
2905 | 2905 | |
2906 | STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Tren durumu - treni durdurmak/başlatmak için buraya tıklayın | |
2907 | STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Aracın durumu - durdurmak/başlatmak için tıklayın | |
2908 | STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Geminin durumu - durdurmak/başlatmak için buraya tıkla | |
2909 | STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Uçağın durumu - uçağı durdurmak/başlatmak için tıkla | |
2906 | STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Trenin mevcut hareketi - treni durdurmak/başlatmak için buraya tıklayın. Hedefe gitmek için CTRL+Tıkla | |
2907 | STR_VEHICLE_VIEW_ROAD_VEHICLE_STATE_START_STOP_TOOLTIP :{BLACK}Aracın mevcut hareketi - durdurmak/başlatmak için tıklayın. Hedefe gitmek için CTRL+Tıkla | |
2908 | STR_VEHICLE_VIEW_SHIP_STATE_START_STOP_TOOLTIP :{BLACK}Geminin mevcut hareketi - durdurmak/başlatmak için buraya tıkla. Hedefe gitmek için CTRL+Tıkla | |
2909 | STR_VEHICLE_VIEW_AIRCRAFT_STATE_START_STOP_TOOLTIP :{BLACK}Uçağın durumu - uçağı durdurmak/başlatmak için tıkla. Ctrl+Tık ile hedefe git | |
2910 | 2910 | |
2911 | 2911 | # Messages in the start stop button in the vehicle view |
2912 | 2912 | STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Yükleme / Boşaltma |
3518 | 3518 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Köprü bu arazi için çok alçakta |
3519 | 3519 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Başlangıç ve bitiş aynı çizgi üzerinde olmalı |
3520 | 3520 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... köprünün her iki ucu da karada olmalı |
3521 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... köprü çok uzun | |
3521 | 3522 | |
3522 | 3523 | # Tunnel related errors |
3523 | 3524 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Buraya tünel yapılamaz... |
11 | 11 | ##case r d z |
12 | 12 | |
13 | 13 | |
14 | # $Id: ukrainian.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
14 | # $Id: ukrainian.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
15 | 15 | |
16 | 16 | # This file is part of OpenTTD. |
17 | 17 | # OpenTTD 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, version 2. |
915 | 915 | STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIGFONT}{BLACK}Нашестя саранчі призвело до спустошення на {INDUSTRY}!{}Виробництво впало на 50% |
916 | 916 | STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIGFONT}{BLACK}{1:INDUSTRY}: Виробництво {0:STRING.r} впало на {2:COMMA}%! |
917 | 917 | |
918 | STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} чакає в депо | |
919 | STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} чакає в депо | |
920 | STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} чакає в депо | |
921 | STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} чакає в ангарі | |
918 | STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} чекає в депо | |
919 | STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} чекає в депо | |
920 | STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} чекає в депо | |
921 | STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} чекає в ангарі | |
922 | 922 | |
923 | 923 | # Start of order review system. |
924 | 924 | # DON'T ADD OR REMOVE LINES HERE |
1222 | 1222 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :як інша промисловість |
1223 | 1223 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :перспективний |
1224 | 1224 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Подібна промисловість в одному місті: {ORANGE}{STRING} |
1225 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Будувати промисловість однакового типу поруч: {ORANGE}{STRING} | |
1226 | 1225 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Завжди показувати повну дату в рядку стану: {ORANGE}{STRING} |
1227 | 1226 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Показувати сигнали за напрямом руху: {ORANGE}{STRING} |
1228 | 1227 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Показувати вікно фінансів в кінці року: {ORANGE}{STRING} |
2248 | 2247 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2249 | 2248 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Приймає: {LTBLUE} |
2250 | 2249 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2250 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Ліміт швидкості залізниці: {LTBLUE}{VELOCITY} | |
2251 | 2251 | |
2252 | 2252 | # Description of land area of different tiles |
2253 | 2253 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Каміння |
2738 | 2738 | STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Показати підприємство у центрі екрану. Утримання Ctrl відкриє нове вікно з видом підприємства |
2739 | 2739 | |
2740 | 2740 | ############ range for requires starts |
2741 | STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Потребує: {YELLOW}{STRING}{STRING} | |
2742 | STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Потребує: {YELLOW}{STRING}{STRING}, {STRING}{STRING} | |
2743 | STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Потребує: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} | |
2741 | STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Потребує: {YELLOW}{STRING.z}{STRING.z} | |
2742 | STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Потребує: {YELLOW}{STRING.z}{STRING.z}, {STRING.z}{STRING.z} | |
2743 | STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Потребує: {YELLOW}{STRING.z}{STRING.z}, {STRING.z}{STRING.z}, {STRING.z}{STRING.z} | |
2744 | 2744 | ############ range for requires ends |
2745 | 2745 | |
2746 | 2746 | ############ range for produces starts |
3642 | 3642 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Міст дуже низький для цього місця |
3643 | 3643 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Початок та кінець мають бути на одній лінії |
3644 | 3644 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... обидва кінці мосту мають бути на землі |
3645 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... міст надто довгий | |
3645 | 3646 | |
3646 | 3647 | # Tunnel related errors |
3647 | 3648 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Неможливо збудувати тунель... |
4270 | 4271 | STR_LORRY :{BLACK}{LORRY} |
4271 | 4272 | STR_PLANE :{BLACK}{PLANE} |
4272 | 4273 | STR_SHIP :{BLACK}{SHIP} |
4274 | ||
4275 | STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) |
9 | 9 | ##grflangid 0x32 |
10 | 10 | |
11 | 11 | |
12 | # $Id: frisian.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
12 | # $Id: frisian.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
285 | 285 | STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Lit grafyken sjen |
286 | 286 | STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Lit de bedriuwskompetysjetabel sjen |
287 | 287 | STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Betelje de bou fan in nije yndustry |
288 | STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Lit in list sjen fan de treinen fan dit bedriuw | |
289 | STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Lit in list sjen fan de auto's fan dit bedriuw | |
290 | STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Lit in list sjen fan de skepen fan dit bedriuw | |
288 | STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Lit in list sjen fan de treinen fan dit bedriuw. Ctrl + klik ipent of slût de groep/fiertúg list sjen | |
289 | STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Lit in list sjen fan de auto's fan dit bedriuw. Ctrl + klik ipent of slût de groep/fiertúg list sjen | |
290 | STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Lit in list sjen fan de skepen fan dit bedriuw. Ctrl + klik ipent of slût de groep/fiertúg list sjen | |
291 | 291 | STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}Lit in list sjen fan de fleantúgen fan dit bedriuw. |
292 | 292 | STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Zoom it byld yn |
293 | 293 | STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Zoom it byld út |
957 | 957 | STR_INTRO_DIFFICULTY :{BLACK}Moeilikhyd ({STRING}) |
958 | 958 | STR_INTRO_QUIT :{BLACK}Ôfslúte |
959 | 959 | |
960 | STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Begjin in nei spul | |
960 | STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Begjin in nei spul. Ctrl + klik slaat kaartynstelling oer | |
961 | 961 | STR_INTRO_TOOLTIP_LOAD_GAME :{BLACK}Laad in opslein spul |
962 | 962 | STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP :{BLACK}Begjin in nij spul, mei de hichtekaart as lânskip |
963 | 963 | STR_INTRO_TOOLTIP_PLAY_SCENARIO :{BLACK}Start in nei spul, mei in selsmakke lânskip |
9 | 9 | ##grflangid 0x42 |
10 | 10 | |
11 | 11 | |
12 | # $Id: thai.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
12 | # $Id: thai.txt 19555 2010-04-03 20:19:26Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
1049 | 1049 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :ไม่เลย |
1050 | 1050 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :ตามอุตสาหกรรมอื่นๆ |
1051 | 1051 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}อนุญาตให้มีหลายอุตสาหกรรมต่อหนึ่งเมือง: {ORANGE}{STRING} |
1052 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}อุตสาหกรรมชนิดเดียวกันสามารถสร้างใกล้กันได้: {ORANGE}{STRING} | |
1053 | 1052 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}แสดงวันที่แบบยาวบนแถบสถานะเสมอ: {ORANGE}{STRING} |
1054 | 1053 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}แสดงสัญญาณบนฝั่งถนนมีการขับ: {ORANGE}{STRING} |
1055 | 1054 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}แสดงหน้าต่างการเงินเมื่อสิ้นสุดแต่ละปี: {ORANGE}{STRING} |
9 | 9 | ##grflangid 0x54 |
10 | 10 | |
11 | 11 | |
12 | # $Id: vietnamese.txt 19446 2010-03-17 22:21:03Z rubidium $ | |
12 | # $Id: vietnamese.txt 19666 2010-04-17 22:39:17Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
1097 | 1097 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :như nhà máy khác |
1098 | 1098 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :hứa hẹn |
1099 | 1099 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Cho phép nhiều nhà máy tương tự nhau trong mỗi đô thị: {ORANGE}{STRING} |
1100 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Nhà máy cùng kiểu có thể xây sát nhau: {ORANGE}{STRING} | |
1101 | 1100 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Luôn luôn hiện ngày tháng đầy đủ trên thanh trạng thái: {ORANGE}{STRING} |
1102 | 1101 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Hiển thị tín hiệu cùng phía làn đường: {ORANGE}{STRING} |
1103 | 1102 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Hiện bảng tài chính vào cuối năm: {ORANGE}{STRING} |
1767 | 1766 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Game đang dừng ({STRING}) |
1768 | 1767 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Game đang dừng ({STRING}, {STRING}) |
1769 | 1768 | STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Game vẫn đang dừng ({STRING}, {STRING}, {STRING}) |
1770 | STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Bỏ tạm dừng game ({STRING}) | |
1769 | STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Game được tiếp tục ({STRING}) | |
1771 | 1770 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :không đủ người chơi |
1772 | 1771 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :máy trạm kết nối đến |
1773 | 1772 | STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :tự chọn |
2123 | 2122 | STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} |
2124 | 2123 | STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Hàng hoá chấp nhận: {LTBLUE} |
2125 | 2124 | STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) |
2125 | STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Giới hạn tốc độ đường ray: {LTBLUE}{VELOCITY} | |
2126 | 2126 | |
2127 | 2127 | # Description of land area of different tiles |
2128 | 2128 | STR_LAI_CLEAR_DESCRIPTION_ROCKS :Đá |
3517 | 3517 | STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Cầu thấp quá so với mặt đất |
3518 | 3518 | STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Điểu đầu và cuối phải trên 1 đường thẳng |
3519 | 3519 | STR_ERROR_ENDS_OF_BRIDGE_MUST_BOTH :{WHITE}... hai đầu cầu phải được gá vào đất |
3520 | STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... cầu quá dài | |
3520 | 3521 | |
3521 | 3522 | # Tunnel related errors |
3522 | 3523 | STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Không thể đào hầm ở đây... |
9 | 9 | ##grflangid 0x0f |
10 | 10 | |
11 | 11 | |
12 | # $Id: welsh.txt 19411 2010-03-13 18:47:58Z rubidium $ | |
12 | # $Id: welsh.txt 19555 2010-04-03 20:19:26Z rubidium $ | |
13 | 13 | |
14 | 14 | # This file is part of OpenTTD. |
15 | 15 | # OpenTTD 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, version 2. |
1066 | 1066 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :fel diwydiannau eraill |
1067 | 1067 | STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :chwilio am adnoddau crai |
1068 | 1068 | STR_CONFIG_SETTING_MULTIPINDTOWN :{LTBLUE}Caniatáu nifer o ddiwydiannau bach i bob tref: {ORANGE}{STRING} |
1069 | STR_CONFIG_SETTING_SAMEINDCLOSE :{LTBLUE}Gall diwydiannau o'r un math gael eu hadeiladu'n agos i'w gilydd: {ORANGE}{STRING} | |
1070 | 1069 | STR_CONFIG_SETTING_LONGDATE :{LTBLUE}Dangos y dyddiad hir yn y bar statws drwy'r amser: {ORANGE}{STRING} |
1071 | 1070 | STR_CONFIG_SETTING_SIGNALSIDE :{LTBLUE}Dangos signalau ar yr ochr yrru: {ORANGE}{STRING} |
1072 | 1071 | STR_CONFIG_SETTING_SHOWFINANCES :{LTBLUE}Dangos y ffenestr gyllid ar ddechrau'r flwyddyn: {ORANGE}{STRING} |
0 | /* $Id: livery.h 17248 2009-08-21 20:21:05Z rubidium $ */ | |
0 | /* $Id: livery.h 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
54 | 54 | }; |
55 | 55 | |
56 | 56 | DECLARE_POSTFIX_INCREMENT(LiveryScheme); |
57 | template <> struct EnumPropsT<LiveryScheme> : MakeEnumPropsT<LiveryScheme, byte, LS_BEGIN, LS_END, LS_END, 8> {}; | |
57 | 58 | |
58 | 59 | /* List of different livery classes, used only by the livery GUI. */ |
59 | 60 | enum LiveryClass { |
0 | /* $Id: misc_cmd.cpp 18732 2010-01-05 17:11:56Z rubidium $ */ | |
0 | /* $Id: misc_cmd.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
96 | 96 | loan -= loan % LOAN_INTERVAL; |
97 | 97 | break; |
98 | 98 | case 2: // Repay the given amount of loan |
99 | if ((p1 % LOAN_INTERVAL != 0) || ((int32)p1 < LOAN_INTERVAL)) return CMD_ERROR; // Invalid amount to loan | |
99 | if (p1 % LOAN_INTERVAL != 0 || (int32)p1 < LOAN_INTERVAL || p1 > c->current_loan) return CMD_ERROR; // Invalid amount to loan | |
100 | 100 | loan = p1; |
101 | 101 | break; |
102 | 102 | } |
0 | /* $Id: misc_gui.cpp 19439 2010-03-16 20:54:26Z rubidium $ */ | |
0 | /* $Id: misc_gui.cpp 19551 2010-04-03 19:48:01Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
156 | 156 | |
157 | 157 | td.station_class = STR_NULL; |
158 | 158 | td.station_name = STR_NULL; |
159 | td.rail_speed = 0; | |
159 | 160 | |
160 | 161 | td.grf = NULL; |
161 | 162 | |
239 | 240 | if (td.station_name != STR_NULL) { |
240 | 241 | SetDParam(0, td.station_name); |
241 | 242 | GetString(this->landinfo_data[line_nr], STR_LAND_AREA_INFORMATION_STATION_TYPE, lastof(this->landinfo_data[line_nr])); |
243 | line_nr++; | |
244 | } | |
245 | ||
246 | /* Rail speed limit */ | |
247 | if (td.rail_speed != 0) { | |
248 | SetDParam(0, td.rail_speed); | |
249 | GetString(this->landinfo_data[line_nr], STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT, lastof(this->landinfo_data[line_nr])); | |
242 | 250 | line_nr++; |
243 | 251 | } |
244 | 252 |
0 | /* $Id: music.cpp 19223 2010-02-23 23:26:37Z rubidium $ */ | |
0 | /* $Id: music.cpp 19741 2010-04-30 21:01:21Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
56 | 56 | return BaseMedia<Tbase_set>::used_set != NULL; |
57 | 57 | } |
58 | 58 | |
59 | bool MusicSet::FillSetDetails(IniFile *ini, const char *path) | |
59 | bool MusicSet::FillSetDetails(IniFile *ini, const char *path, const char *full_filename) | |
60 | 60 | { |
61 | bool ret = this->BaseSet<MusicSet, NUM_SONGS_AVAILABLE, GM_DIR>::FillSetDetails(ini, path); | |
61 | bool ret = this->BaseSet<MusicSet, NUM_SONGS_AVAILABLE, GM_DIR>::FillSetDetails(ini, path, full_filename); | |
62 | 62 | if (ret) { |
63 | 63 | this->num_available = 0; |
64 | 64 | IniGroup *names = ini->GetGroup("names"); |
92 | 92 | this->num_available++; |
93 | 93 | } |
94 | 94 | } |
95 | return true; | |
95 | return ret; | |
96 | 96 | } |
0 | /* $Id: tcp_game.h 18809 2010-01-15 16:41:15Z rubidium $ */ | |
0 | /* $Id: tcp_game.h 19690 2010-04-21 19:20:28Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
34 | 34 | PACKET_CLIENT_COMPANY_INFO, |
35 | 35 | PACKET_SERVER_COMPANY_INFO, |
36 | 36 | PACKET_SERVER_CLIENT_INFO, |
37 | PACKET_SERVER_NEED_PASSWORD, | |
38 | PACKET_CLIENT_PASSWORD, | |
37 | PACKET_SERVER_NEED_GAME_PASSWORD, | |
38 | PACKET_SERVER_NEED_COMPANY_PASSWORD, | |
39 | PACKET_CLIENT_GAME_PASSWORD, | |
40 | PACKET_CLIENT_COMPANY_PASSWORD, | |
39 | 41 | PACKET_SERVER_WELCOME, |
40 | 42 | PACKET_CLIENT_GETMAP, |
41 | 43 | PACKET_SERVER_WAIT, |
73 | 75 | |
74 | 76 | /** Status of a client */ |
75 | 77 | enum ClientStatus { |
76 | STATUS_INACTIVE, ///< The client is not connected nor active | |
77 | STATUS_AUTHORIZING,///< The client is authorizing | |
78 | STATUS_AUTH, ///< The client is authorized | |
79 | STATUS_MAP_WAIT, ///< The client is waiting as someone else is downloading the map | |
80 | STATUS_MAP, ///< The client is downloading the map | |
81 | STATUS_DONE_MAP, ///< The client has downloaded the map | |
82 | STATUS_PRE_ACTIVE, ///< The client is catching up the delayed frames | |
83 | STATUS_ACTIVE, ///< The client is active within in the game | |
78 | STATUS_INACTIVE, ///< The client is not connected nor active | |
79 | STATUS_AUTH_GAME, ///< The client is authorizing with game (server) password | |
80 | STATUS_AUTH_COMPANY, ///< The client is authorizing with company password | |
81 | STATUS_AUTHORIZED, ///< The client is authorized | |
82 | STATUS_MAP_WAIT, ///< The client is waiting as someone else is downloading the map | |
83 | STATUS_MAP, ///< The client is downloading the map | |
84 | STATUS_DONE_MAP, ///< The client has downloaded the map | |
85 | STATUS_PRE_ACTIVE, ///< The client is catching up the delayed frames | |
86 | STATUS_ACTIVE, ///< The client is active within in the game | |
87 | STATUS_END ///< Must ALWAYS be on the end of this list!! (period) | |
84 | 88 | }; |
85 | 89 | |
86 | 90 | class NetworkClientSocket; |
0 | /* $Id: network.cpp 19376 2010-03-08 22:19:39Z rubidium $ */ | |
0 | /* $Id: network.cpp 19624 2010-04-13 21:40:24Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
34 | 34 | #include "../rev.h" |
35 | 35 | #include "../core/pool_func.hpp" |
36 | 36 | #include "../gfx_func.h" |
37 | #include "table/strings.h" | |
38 | ||
37 | 39 | #ifdef DEBUG_DUMP_COMMANDS |
38 | #include "../fileio_func.h" | |
40 | #include "../fileio_func.h" | |
41 | /** When running the server till the wait point, run as fast as we can! */ | |
42 | bool _ddc_fastforward = true; | |
39 | 43 | #endif /* DEBUG_DUMP_COMMANDS */ |
40 | #include "table/strings.h" | |
41 | 44 | |
42 | 45 | DECLARE_POSTFIX_INCREMENT(ClientID); |
43 | 46 | |
248 | 251 | SetDParam(2, data); |
249 | 252 | GetString(message, strid, lastof(message)); |
250 | 253 | |
251 | DEBUG(desync, 1, "msg: %d; %d; %s\n", _date, _date_fract, message); | |
254 | DEBUG(desync, 1, "msg: %08x; %02x; %s", _date, _date_fract, message); | |
252 | 255 | IConsolePrintF(colour, "%s", message); |
253 | 256 | NetworkAddChatMessage((TextColour)colour, duration, "%s", message); |
254 | 257 | } |
448 | 451 | { |
449 | 452 | const NetworkClientSocket *cs; |
450 | 453 | FOR_ALL_CLIENT_SOCKETS(cs) { |
451 | if (cs->status >= STATUS_AUTH && cs->status < STATUS_ACTIVE) return true; | |
454 | if (cs->status >= STATUS_AUTHORIZED && cs->status < STATUS_ACTIVE) return true; | |
452 | 455 | } |
453 | 456 | |
454 | 457 | return false; |
544 | 547 | */ |
545 | 548 | if (cs->sock == INVALID_SOCKET) return status; |
546 | 549 | |
547 | if (status != NETWORK_RECV_STATUS_CONN_LOST && !cs->HasClientQuit() && _network_server && cs->status > STATUS_INACTIVE) { | |
550 | if (status != NETWORK_RECV_STATUS_CONN_LOST && !cs->HasClientQuit() && _network_server && cs->status >= STATUS_AUTHORIZED) { | |
548 | 551 | /* We did not receive a leave message from this client... */ |
549 | 552 | char client_name[NETWORK_CLIENT_NAME_LENGTH]; |
550 | 553 | NetworkClientSocket *new_cs; |
555 | 558 | |
556 | 559 | /* Inform other clients of this... strange leaving ;) */ |
557 | 560 | FOR_ALL_CLIENT_SOCKETS(new_cs) { |
558 | if (new_cs->status > STATUS_AUTH && cs != new_cs) { | |
561 | if (new_cs->status > STATUS_AUTHORIZED && cs != new_cs) { | |
559 | 562 | SEND_COMMAND(PACKET_SERVER_ERROR_QUIT)(new_cs, cs->client_id, NETWORK_ERROR_CONNECTION_LOST); |
560 | 563 | } |
561 | 564 | } |
565 | 568 | |
566 | 569 | if (_network_server) { |
567 | 570 | /* We just lost one client :( */ |
568 | if (cs->status >= STATUS_AUTH) _network_game_info.clients_on--; | |
571 | if (cs->status >= STATUS_AUTHORIZED) _network_game_info.clients_on--; | |
569 | 572 | _network_clients_connected--; |
570 | 573 | |
571 | 574 | SetWindowDirty(WC_CLIENT_LIST, 0); |
1023 | 1026 | if (_sync_seed_1 != _random.state[0]) { |
1024 | 1027 | #endif |
1025 | 1028 | NetworkError(STR_NETWORK_ERROR_DESYNC); |
1026 | DEBUG(desync, 1, "sync_err: %d; %d\n", _date, _date_fract); | |
1029 | DEBUG(desync, 1, "sync_err: %08x; %02x", _date, _date_fract); | |
1027 | 1030 | DEBUG(net, 0, "Sync error detected!"); |
1028 | 1031 | NetworkClientError(NETWORK_RECV_STATUS_DESYNC, NetworkClientSocket::Get(0)); |
1029 | 1032 | return false; |
1073 | 1076 | if (!NetworkReceive()) return; |
1074 | 1077 | |
1075 | 1078 | if (_network_server) { |
1079 | /* Log the sync state to check for in-syncedness of replays. */ | |
1080 | if (_date_fract == 0) { | |
1081 | /* We don't want to log multiple times if paused. */ | |
1082 | static Date last_log; | |
1083 | if (last_log != _date) { | |
1084 | DEBUG(desync, 1, "sync: %08x; %02x; %08x; %08x", _date, _date_fract, _random.state[0], _random.state[1]); | |
1085 | last_log = _date; | |
1086 | } | |
1087 | } | |
1088 | ||
1076 | 1089 | #ifdef DEBUG_DUMP_COMMANDS |
1090 | /* Loading of the debug commands from -ddesync>=1 */ | |
1077 | 1091 | static FILE *f = FioFOpenFile("commands.log", "rb", SAVE_DIR); |
1078 | 1092 | static Date next_date = 0; |
1079 | 1093 | static uint32 next_date_fract; |
1080 | 1094 | static CommandPacket *cp = NULL; |
1095 | static bool check_sync_state = false; | |
1096 | static uint32 sync_state[2]; | |
1081 | 1097 | if (f == NULL && next_date == 0) { |
1082 | printf("Cannot open commands.log\n"); | |
1098 | DEBUG(net, 0, "Cannot open commands.log"); | |
1083 | 1099 | next_date = 1; |
1084 | 1100 | } |
1085 | 1101 | |
1086 | 1102 | while (f != NULL && !feof(f)) { |
1087 | if (cp != NULL && _date == next_date && _date_fract == next_date_fract) { | |
1088 | _current_company = cp->company; | |
1089 | DoCommandP(cp->tile, cp->p1, cp->p2, cp->cmd, NULL, cp->text); | |
1090 | free(cp); | |
1091 | cp = NULL; | |
1103 | if (_date == next_date && _date_fract == next_date_fract) { | |
1104 | if (cp != NULL) { | |
1105 | NetworkSend_Command(cp->tile, cp->p1, cp->p2, cp->cmd & ~CMD_FLAGS_MASK, NULL, cp->text, cp->company); | |
1106 | DEBUG(net, 0, "injecting: %08x; %02x; %02x; %06x; %08x; %08x; %08x; \"%s\" (%s)", _date, _date_fract, (int)_current_company, cp->tile, cp->p1, cp->p2, cp->cmd, cp->text, GetCommandName(cp->cmd)); | |
1107 | free(cp); | |
1108 | cp = NULL; | |
1109 | } | |
1110 | if (check_sync_state) { | |
1111 | if (sync_state[0] == _random.state[0] && sync_state[1] == _random.state[1]) { | |
1112 | DEBUG(net, 0, "sync check: %08x; %02x; match", _date, _date_fract); | |
1113 | } else { | |
1114 | DEBUG(net, 0, "sync check: %08x; %02x; mismatch expected {%08x, %08x}, got {%08x, %08x}", | |
1115 | _date, _date_fract, sync_state[0], sync_state[1], _random.state[0], _random.state[1]); | |
1116 | NOT_REACHED(); | |
1117 | } | |
1118 | check_sync_state = false; | |
1119 | } | |
1092 | 1120 | } |
1093 | 1121 | |
1094 | if (cp != NULL) break; | |
1122 | if (cp != NULL || check_sync_state) break; | |
1095 | 1123 | |
1096 | 1124 | char buff[4096]; |
1097 | 1125 | if (fgets(buff, lengthof(buff), f) == NULL) break; |
1098 | if (strncmp(buff, "cmd: ", 8) != 0) continue; | |
1099 | cp = MallocT<CommandPacket>(1); | |
1100 | int company; | |
1101 | sscanf(&buff[8], "%d; %d; %d; %d; %d; %d; %d; %s", &next_date, &next_date_fract, &company, &cp->tile, &cp->p1, &cp->p2, &cp->cmd, cp->text); | |
1102 | cp->company = (CompanyID)company; | |
1126 | ||
1127 | char *p = buff; | |
1128 | /* Ignore the "[date time] " part of the message */ | |
1129 | if (*p == '[') { | |
1130 | p = strchr(p, ']'); | |
1131 | if (p == NULL) break; | |
1132 | p += 2; | |
1133 | } | |
1134 | ||
1135 | if (strncmp(p, "cmd: ", 5) == 0) { | |
1136 | cp = CallocT<CommandPacket>(1); | |
1137 | int company; | |
1138 | int ret = sscanf(p + 5, "%x; %x; %x; %x; %x; %x; %x; \"%[^\"]\"", &next_date, &next_date_fract, &company, &cp->tile, &cp->p1, &cp->p2, &cp->cmd, cp->text); | |
1139 | /* There are 8 pieces of data to read, however the last is a | |
1140 | * string that might or might not exist. Ignore it if that | |
1141 | * string misses because in 99% of the time it's not used. */ | |
1142 | assert(ret == 8 || ret == 7); | |
1143 | cp->company = (CompanyID)company; | |
1144 | } else if (strncmp(p, "join: ", 6) == 0) { | |
1145 | /* Manually insert a pause when joining; this way the client can join at the exact right time. */ | |
1146 | int ret = sscanf(p + 6, "%x; %x", &next_date, &next_date_fract); | |
1147 | assert(ret == 2); | |
1148 | DEBUG(net, 0, "injecting pause for join at %08x:%02x; please join when paused", next_date, next_date_fract); | |
1149 | cp = CallocT<CommandPacket>(1); | |
1150 | cp->company = COMPANY_SPECTATOR; | |
1151 | cp->cmd = CMD_PAUSE; | |
1152 | cp->p1 = PM_PAUSED_NORMAL; | |
1153 | cp->p2 = 1; | |
1154 | _ddc_fastforward = false; | |
1155 | } else if (strncmp(p, "sync: ", 6) == 0) { | |
1156 | int ret = sscanf(p + 6, "%x; %x; %x; %x", &next_date, &next_date_fract, &sync_state[0], &sync_state[1]); | |
1157 | assert(ret == 4); | |
1158 | check_sync_state = true; | |
1159 | } else if (strncmp(p, "msg: ", 5) == 0 || strncmp(p, "client: ", 8) == 0 || | |
1160 | strncmp(p, "load: ", 6) == 0 || strncmp(p, "save: ", 6) == 0) { | |
1161 | /* A message that is not very important to the log playback, but part of the log. */ | |
1162 | } else { | |
1163 | /* Can't parse a line; what's wrong here? */ | |
1164 | DEBUG(net, 0, "trying to parse: %s", p); | |
1165 | NOT_REACHED(); | |
1166 | } | |
1167 | } | |
1168 | if (f != NULL && feof(f)) { | |
1169 | DEBUG(net, 0, "End of commands.log"); | |
1170 | fclose(f); | |
1171 | f = NULL; | |
1103 | 1172 | } |
1104 | 1173 | #endif /* DEBUG_DUMP_COMMANDS */ |
1105 | 1174 | if (_frame_counter >= _frame_counter_max) { |
0 | /* $Id: network_chat_gui.cpp 18966 2010-01-30 18:34:48Z frosch $ */ | |
0 | /* $Id: network_chat_gui.cpp 19646 2010-04-16 22:02:33Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
115 | 115 | |
116 | 116 | void NetworkInitChatMessage() |
117 | 117 | { |
118 | MAX_CHAT_MESSAGES = _settings_client.gui.network_chat_box_height; | |
119 | ||
120 | _chatmsg_list = ReallocT(_chatmsg_list, _settings_client.gui.network_chat_box_height); | |
121 | _chatmsg_box.x = 10; | |
122 | _chatmsg_box.y = 3 * FONT_HEIGHT_NORMAL; | |
123 | _chatmsg_box.width = _settings_client.gui.network_chat_box_width; | |
124 | _chatmsg_box.height = _settings_client.gui.network_chat_box_height * (FONT_HEIGHT_NORMAL + NETWORK_CHAT_LINE_SPACING) + 2; | |
125 | _chatmessage_backup = ReallocT(_chatmessage_backup, _chatmsg_box.width * _chatmsg_box.height * BlitterFactoryBase::GetCurrentBlitter()->GetBytesPerPixel()); | |
118 | MAX_CHAT_MESSAGES = _settings_client.gui.network_chat_box_height; | |
119 | ||
120 | _chatmsg_list = ReallocT(_chatmsg_list, _settings_client.gui.network_chat_box_height); | |
121 | _chatmsg_box.x = 10; | |
122 | _chatmsg_box.y = 3 * FONT_HEIGHT_NORMAL; | |
123 | _chatmsg_box.width = _settings_client.gui.network_chat_box_width; | |
124 | _chatmsg_box.height = _settings_client.gui.network_chat_box_height * (FONT_HEIGHT_NORMAL + NETWORK_CHAT_LINE_SPACING) + 2; | |
125 | _chatmessage_backup = ReallocT(_chatmessage_backup, _chatmsg_box.width * _chatmsg_box.height * BlitterFactoryBase::GetCurrentBlitter()->GetBytesPerPixel()); | |
126 | _chatmessage_visible = false; | |
126 | 127 | |
127 | 128 | for (uint i = 0; i < MAX_CHAT_MESSAGES; i++) { |
128 | 129 | _chatmsg_list[i].message[0] = '\0'; |
0 | /* $Id: network_client.cpp 19132 2010-02-14 16:31:35Z alberth $ */ | |
0 | /* $Id: network_client.cpp 19690 2010-04-21 19:20:28Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
166 | 166 | return NETWORK_RECV_STATUS_OKAY; |
167 | 167 | } |
168 | 168 | |
169 | DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_PASSWORD)(NetworkPasswordType type, const char *password) | |
170 | { | |
171 | /* | |
172 | * Packet: CLIENT_PASSWORD | |
169 | DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_GAME_PASSWORD)(const char *password) | |
170 | { | |
171 | /* | |
172 | * Packet: CLIENT_GAME_PASSWORD | |
173 | 173 | * Function: Send a password to the server to authorize |
174 | 174 | * Data: |
175 | 175 | * uint8: NetworkPasswordType |
176 | 176 | * String: Password |
177 | 177 | */ |
178 | Packet *p = new Packet(PACKET_CLIENT_PASSWORD); | |
179 | p->Send_uint8 (type); | |
180 | p->Send_string(type == NETWORK_GAME_PASSWORD ? password : GenerateCompanyPasswordHash(password)); | |
178 | Packet *p = new Packet(PACKET_CLIENT_GAME_PASSWORD); | |
179 | p->Send_string(password); | |
180 | MY_CLIENT->Send_Packet(p); | |
181 | return NETWORK_RECV_STATUS_OKAY; | |
182 | } | |
183 | ||
184 | DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_COMPANY_PASSWORD)(const char *password) | |
185 | { | |
186 | /* | |
187 | * Packet: CLIENT_COMPANY_PASSWORD | |
188 | * Function: Send a password to the server to authorize | |
189 | * Data: | |
190 | * uint8: NetworkPasswordType | |
191 | * String: Password | |
192 | */ | |
193 | Packet *p = new Packet(PACKET_CLIENT_COMPANY_PASSWORD); | |
194 | p->Send_string(GenerateCompanyPasswordHash(password)); | |
181 | 195 | MY_CLIENT->Send_Packet(p); |
182 | 196 | return NETWORK_RECV_STATUS_OKAY; |
183 | 197 | } |
447 | 461 | /* The client changed from client-player.. |
448 | 462 | * Do not display that for now */ |
449 | 463 | } |
464 | ||
465 | /* Make sure we're in the company the server tells us to be in, | |
466 | * for the rare case that we get moved while joining. */ | |
467 | if (client_id == _network_own_client_id) SetLocalCompany(!Company::IsValidID(playas) ? COMPANY_SPECTATOR : playas); | |
450 | 468 | |
451 | 469 | ci->client_playas = playas; |
452 | 470 | strecpy(ci->client_name, name, lastof(ci->client_name)); |
534 | 552 | return ret; |
535 | 553 | } |
536 | 554 | |
537 | DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_NEED_PASSWORD) | |
538 | { | |
539 | NetworkPasswordType type = (NetworkPasswordType)p->Recv_uint8(); | |
540 | ||
555 | DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_NEED_GAME_PASSWORD) | |
556 | { | |
541 | 557 | const char *password = _network_join_server_password; |
542 | ||
543 | switch (type) { | |
544 | case NETWORK_COMPANY_PASSWORD: | |
545 | /* Initialize the password hash salting variables. */ | |
546 | _password_game_seed = p->Recv_uint32(); | |
547 | p->Recv_string(_password_server_id, sizeof(_password_server_id)); | |
548 | if (MY_CLIENT->HasClientQuit()) return NETWORK_RECV_STATUS_MALFORMED_PACKET; | |
549 | password = _network_join_company_password; | |
550 | /* FALL THROUGH */ | |
551 | case NETWORK_GAME_PASSWORD: | |
552 | if (StrEmpty(password)) { | |
553 | ShowNetworkNeedPassword(type); | |
554 | } else { | |
555 | return SEND_COMMAND(PACKET_CLIENT_PASSWORD)(type, password); | |
556 | } | |
557 | return NETWORK_RECV_STATUS_OKAY; | |
558 | ||
559 | default: return NETWORK_RECV_STATUS_MALFORMED_PACKET; | |
560 | } | |
558 | if (!StrEmpty(password)) { | |
559 | return SEND_COMMAND(PACKET_CLIENT_GAME_PASSWORD)(password); | |
560 | } | |
561 | ||
562 | ShowNetworkNeedPassword(NETWORK_GAME_PASSWORD); | |
563 | ||
564 | return NETWORK_RECV_STATUS_OKAY; | |
565 | } | |
566 | ||
567 | DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_NEED_COMPANY_PASSWORD) | |
568 | { | |
569 | _password_game_seed = p->Recv_uint32(); | |
570 | p->Recv_string(_password_server_id, sizeof(_password_server_id)); | |
571 | if (MY_CLIENT->HasClientQuit()) return NETWORK_RECV_STATUS_MALFORMED_PACKET; | |
572 | ||
573 | const char *password = _network_join_company_password; | |
574 | if (!StrEmpty(password)) { | |
575 | return SEND_COMMAND(PACKET_CLIENT_COMPANY_PASSWORD)(password); | |
576 | } | |
577 | ||
578 | ShowNetworkNeedPassword(NETWORK_COMPANY_PASSWORD); | |
579 | ||
580 | return NETWORK_RECV_STATUS_OKAY; | |
561 | 581 | } |
562 | 582 | |
563 | 583 | DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_WELCOME) |
920 | 940 | NULL, // PACKET_CLIENT_COMPANY_INFO, |
921 | 941 | RECEIVE_COMMAND(PACKET_SERVER_COMPANY_INFO), |
922 | 942 | RECEIVE_COMMAND(PACKET_SERVER_CLIENT_INFO), |
923 | RECEIVE_COMMAND(PACKET_SERVER_NEED_PASSWORD), | |
924 | NULL, // PACKET_CLIENT_PASSWORD, | |
943 | RECEIVE_COMMAND(PACKET_SERVER_NEED_GAME_PASSWORD), | |
944 | RECEIVE_COMMAND(PACKET_SERVER_NEED_COMPANY_PASSWORD), | |
945 | NULL, // PACKET_CLIENT_GAME_PASSWORD, | |
946 | NULL, // PACKET_CLIENT_COMPANY_PASSWORD, | |
925 | 947 | RECEIVE_COMMAND(PACKET_SERVER_WELCOME), |
926 | 948 | NULL, // PACKET_CLIENT_GETMAP, |
927 | 949 | RECEIVE_COMMAND(PACKET_SERVER_WAIT), |
1004 | 1026 | SEND_COMMAND(PACKET_CLIENT_MOVE)(company_id, pass); |
1005 | 1027 | } |
1006 | 1028 | |
1029 | void NetworkClientsToSpectators(CompanyID cid) | |
1030 | { | |
1031 | /* If our company is changing owner, go to spectators */ | |
1032 | if (cid == _local_company) SetLocalCompany(COMPANY_SPECTATOR); | |
1033 | ||
1034 | NetworkClientInfo *ci; | |
1035 | FOR_ALL_CLIENT_INFOS(ci) { | |
1036 | if (ci->client_playas != cid) continue; | |
1037 | NetworkTextMessage(NETWORK_ACTION_COMPANY_SPECTATOR, CC_DEFAULT, false, ci->client_name); | |
1038 | ci->client_playas = COMPANY_SPECTATOR; | |
1039 | } | |
1040 | } | |
1041 | ||
1007 | 1042 | void NetworkUpdateClientName() |
1008 | 1043 | { |
1009 | 1044 | NetworkClientInfo *ci = NetworkFindClientInfoFromClientID(_network_own_client_id); |
0 | /* $Id: network_client.h 18809 2010-01-15 16:41:15Z rubidium $ */ | |
0 | /* $Id: network_client.h 19624 2010-04-13 21:40:24Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
21 | 21 | DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_ERROR)(NetworkErrorCode errorno); |
22 | 22 | DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_QUIT)(); |
23 | 23 | DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_CHAT)(NetworkAction action, DestType desttype, int dest, const char *msg, int64 data); |
24 | DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_PASSWORD)(NetworkPasswordType type, const char *password); | |
24 | DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_GAME_PASSWORD)(const char *password); | |
25 | DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_COMPANY_PASSWORD)(const char *password); | |
25 | 26 | DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_SET_PASSWORD)(const char *password); |
26 | 27 | DEF_CLIENT_SEND_COMMAND_PARAM(PACKET_CLIENT_SET_NAME)(const char *name); |
27 | 28 | DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_ACK); |
0 | /* $Id: network_command.cpp 19081 2010-02-10 16:24:05Z rubidium $ */ | |
0 | /* $Id: network_command.cpp 19622 2010-04-13 19:30:51Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
127 | 127 | } |
128 | 128 | |
129 | 129 | /** |
130 | * Sync our local command queue to the command queue of the given | |
131 | * socket. This is needed for the case where we receive a command | |
132 | * before saving the game for a joining client, but without the | |
133 | * execution of those commands. Not syncing those commands means | |
134 | * that the client will never get them and as such will be in a | |
135 | * desynced state from the time it started with joining. | |
136 | * @param cs The client to sync the queue to. | |
137 | */ | |
138 | void NetworkSyncCommandQueue(NetworkClientSocket *cs) | |
139 | { | |
140 | for (CommandPacket *p = _local_command_queue; p != NULL; p = p->next) { | |
141 | CommandPacket c = *p; | |
142 | c.callback = 0; | |
143 | NetworkAddCommandQueue(c, cs); | |
144 | } | |
145 | } | |
146 | ||
147 | /** | |
130 | 148 | * Execute all commands on the local command queue that ought to be executed this frame. |
131 | 149 | */ |
132 | 150 | void NetworkExecuteLocalCommandQueue() |
0 | /* $Id: network_content.cpp 19278 2010-02-27 16:41:10Z rubidium $ */ | |
0 | /* $Id: network_content.cpp 19690 2010-04-21 19:20:28Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
372 | 372 | |
373 | 373 | if (fin == NULL || fout == NULL) { |
374 | 374 | ret = false; |
375 | goto exit; | |
376 | } | |
377 | ||
378 | byte buff[8192]; | |
379 | while (!gzeof(fin)) { | |
380 | int read = gzread(fin, buff, sizeof(buff)); | |
381 | if (read < 0 || (size_t)read != fwrite(buff, 1, read, fout)) { | |
382 | ret = false; | |
383 | break; | |
384 | } | |
385 | } | |
386 | ||
387 | exit: | |
375 | } else { | |
376 | byte buff[8192]; | |
377 | while (1) { | |
378 | int read = gzread(fin, buff, sizeof(buff)); | |
379 | if (read == 0) { | |
380 | /* If gzread() returns 0, either the end-of-file has been | |
381 | * reached or an underlying read error has occurred. | |
382 | * | |
383 | * gzeof() can't be used, because: | |
384 | * 1.2.5 - it is safe, 1 means 'everything was OK' | |
385 | * 1.2.3.5, 1.2.4 - 0 or 1 is returned 'randomly' | |
386 | * 1.2.3.3 - 1 is returned for truncated archive | |
387 | * | |
388 | * So we use gzerror(). When proper end of archive | |
389 | * has been reached, then: | |
390 | * errnum == Z_STREAM_END in 1.2.3.3, | |
391 | * errnum == 0 in 1.2.4 and 1.2.5 */ | |
392 | int errnum; | |
393 | gzerror(fin, &errnum); | |
394 | if (errnum != 0 && errnum != Z_STREAM_END) ret = false; | |
395 | break; | |
396 | } | |
397 | if (read < 0 || (size_t)read != fwrite(buff, 1, read, fout)) { | |
398 | /* If gzread() returns -1, there was an error in archive */ | |
399 | ret = false; | |
400 | break; | |
401 | } | |
402 | /* DO NOT DO THIS! It will fail to detect broken archive with 1.2.3.3! | |
403 | * if (read < sizeof(buff)) break; */ | |
404 | } | |
405 | } | |
406 | ||
388 | 407 | if (fin != NULL) { |
389 | 408 | /* Closes ftmp too! */ |
390 | 409 | gzclose(fin); |
603 | 622 | |
604 | 623 | p = strrchr(str, '/'); |
605 | 624 | check_not_null(p); |
625 | p++; // Start after the '/' | |
606 | 626 | |
607 | 627 | char tmp[MAX_PATH]; |
608 | 628 | if (strecpy(tmp, p, lastof(tmp)) == lastof(tmp)) { |
0 | /* $Id: network_func.h 19075 2010-02-10 15:17:27Z smatz $ */ | |
0 | /* $Id: network_func.h 19653 2010-04-17 12:00:59Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
46 | 46 | void NetworkPopulateCompanyStats(NetworkCompanyStats *stats); |
47 | 47 | |
48 | 48 | void NetworkUpdateClientInfo(ClientID client_id); |
49 | void NetworkClientsToSpectators(CompanyID cid); | |
49 | 50 | void NetworkClientConnectGame(NetworkAddress address, CompanyID join_as, const char *join_server_password = NULL, const char *join_company_password = NULL); |
50 | 51 | void NetworkClientRequestMove(CompanyID company, const char *pass = ""); |
51 | 52 | void NetworkClientSendRcon(const char *password, const char *command); |
60 | 61 | /*** Commands ran by the server ***/ |
61 | 62 | void NetworkServerMonthlyLoop(); |
62 | 63 | void NetworkServerYearlyLoop(); |
63 | void NetworkServerChangeOwner(Owner current_owner, Owner new_owner); | |
64 | 64 | void NetworkServerSendConfigUpdate(); |
65 | 65 | void NetworkServerShowStatusToConsole(); |
66 | 66 | bool NetworkServerStart(); |
0 | /* $Id: network_gui.cpp 19132 2010-02-14 16:31:35Z alberth $ */ | |
0 | /* $Id: network_gui.cpp 19624 2010-04-13 21:40:24Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
2115 | 2115 | AllocateWindowDescFront<NetworkClientListWindow>(&_client_list_desc, 0); |
2116 | 2116 | } |
2117 | 2117 | |
2118 | ||
2119 | static NetworkPasswordType pw_type; | |
2120 | ||
2121 | ||
2122 | void ShowNetworkNeedPassword(NetworkPasswordType npt) | |
2123 | { | |
2124 | StringID caption; | |
2125 | ||
2126 | pw_type = npt; | |
2127 | switch (npt) { | |
2128 | default: NOT_REACHED(); | |
2129 | case NETWORK_GAME_PASSWORD: caption = STR_NETWORK_NEED_GAME_PASSWORD_CAPTION; break; | |
2130 | case NETWORK_COMPANY_PASSWORD: caption = STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION; break; | |
2131 | } | |
2132 | ShowQueryString(STR_EMPTY, caption, 20, 180, FindWindowById(WC_NETWORK_STATUS_WINDOW, 0), CS_ALPHANUMERAL, QSF_NONE); | |
2133 | } | |
2134 | ||
2135 | 2118 | /* Vars needed for the join-GUI */ |
2136 | 2119 | NetworkJoinStatus _network_join_status; |
2137 | 2120 | uint8 _network_join_waiting; |
2145 | 2128 | }; |
2146 | 2129 | |
2147 | 2130 | struct NetworkJoinStatusWindow : Window { |
2131 | NetworkPasswordType password_type; | |
2132 | ||
2148 | 2133 | NetworkJoinStatusWindow(const WindowDesc *desc) : Window() |
2149 | 2134 | { |
2150 | 2135 | this->parent = FindWindowById(WC_NETWORK_WINDOW, 0); |
2224 | 2209 | if (StrEmpty(str)) { |
2225 | 2210 | NetworkDisconnect(); |
2226 | 2211 | ShowNetworkGameWindow(); |
2227 | } else { | |
2228 | SEND_COMMAND(PACKET_CLIENT_PASSWORD)(pw_type, str); | |
2212 | return; | |
2213 | } | |
2214 | ||
2215 | switch (this->password_type) { | |
2216 | case NETWORK_GAME_PASSWORD: SEND_COMMAND(PACKET_CLIENT_GAME_PASSWORD) (str); break; | |
2217 | case NETWORK_COMPANY_PASSWORD: SEND_COMMAND(PACKET_CLIENT_COMPANY_PASSWORD)(str); break; | |
2218 | default: NOT_REACHED(); | |
2229 | 2219 | } |
2230 | 2220 | } |
2231 | 2221 | }; |
2254 | 2244 | { |
2255 | 2245 | DeleteWindowById(WC_NETWORK_STATUS_WINDOW, 0); |
2256 | 2246 | new NetworkJoinStatusWindow(&_network_join_status_window_desc); |
2247 | } | |
2248 | ||
2249 | void ShowNetworkNeedPassword(NetworkPasswordType npt) | |
2250 | { | |
2251 | NetworkJoinStatusWindow *w = (NetworkJoinStatusWindow *)FindWindowById(WC_NETWORK_STATUS_WINDOW, 0); | |
2252 | if (w == NULL) return; | |
2253 | w->password_type = npt; | |
2254 | ||
2255 | StringID caption; | |
2256 | switch (npt) { | |
2257 | default: NOT_REACHED(); | |
2258 | case NETWORK_GAME_PASSWORD: caption = STR_NETWORK_NEED_GAME_PASSWORD_CAPTION; break; | |
2259 | case NETWORK_COMPANY_PASSWORD: caption = STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION; break; | |
2260 | } | |
2261 | ShowQueryString(STR_EMPTY, caption, 20, 180, w, CS_ALPHANUMERAL, QSF_NONE); | |
2257 | 2262 | } |
2258 | 2263 | |
2259 | 2264 |
0 | /* $Id: network_internal.h 19072 2010-02-09 23:49:19Z rubidium $ */ | |
0 | /* $Id: network_internal.h 19622 2010-04-13 19:30:51Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
36 | 36 | */ |
37 | 37 | #define NETWORK_SEND_DOUBLE_SEED |
38 | 38 | #endif /* RANDOM_DEBUG */ |
39 | ||
40 | /** | |
41 | * Helper variable to make the dedicated server go fast until the (first) join. | |
42 | * Used to load the desync debug logs, i.e. for reproducing a desync. | |
43 | * There's basically no need to ever enable this, unless you really know what | |
44 | * you are doing, i.e. debugging a desync. | |
45 | */ | |
46 | #ifdef DEBUG_DUMP_COMMANDS | |
47 | extern bool _ddc_fastforward; | |
48 | #else | |
49 | #define _ddc_fastforward (false) | |
50 | #endif /* DEBUG_DUMP_COMMANDS */ | |
39 | 51 | |
40 | 52 | enum MapPacket { |
41 | 53 | MAP_PACKET_START, |
150 | 162 | void NetworkAddCommandQueue(CommandPacket cp, NetworkClientSocket *cs = NULL); |
151 | 163 | void NetworkExecuteLocalCommandQueue(); |
152 | 164 | void NetworkFreeLocalCommandQueue(); |
165 | void NetworkSyncCommandQueue(NetworkClientSocket *cs); | |
153 | 166 | |
154 | 167 | /* from network.c */ |
155 | 168 | NetworkRecvStatus NetworkCloseClient(NetworkClientSocket *cs, NetworkRecvStatus status); |
0 | /* $Id: network_server.cpp 19072 2010-02-09 23:49:19Z rubidium $ */ | |
0 | /* $Id: network_server.cpp 19741 2010-04-30 21:01:21Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
151 | 151 | GetString(str, strid, lastof(str)); |
152 | 152 | |
153 | 153 | /* Only send when the current client was in game */ |
154 | if (cs->status > STATUS_AUTH) { | |
154 | if (cs->status > STATUS_AUTHORIZED) { | |
155 | 155 | NetworkClientSocket *new_cs; |
156 | 156 | char client_name[NETWORK_CLIENT_NAME_LENGTH]; |
157 | 157 | |
162 | 162 | NetworkTextMessage(NETWORK_ACTION_LEAVE, CC_DEFAULT, false, client_name, NULL, strid); |
163 | 163 | |
164 | 164 | FOR_ALL_CLIENT_SOCKETS(new_cs) { |
165 | if (new_cs->status > STATUS_AUTH && new_cs != cs) { | |
165 | if (new_cs->status > STATUS_AUTHORIZED && new_cs != cs) { | |
166 | 166 | /* Some errors we filter to a more general error. Clients don't have to know the real |
167 | 167 | * reason a joining failed. */ |
168 | 168 | if (error == NETWORK_ERROR_NOT_AUTHORIZED || error == NETWORK_ERROR_NOT_EXPECTED || error == NETWORK_ERROR_WRONG_REVISION) |
208 | 208 | return NETWORK_RECV_STATUS_OKAY; |
209 | 209 | } |
210 | 210 | |
211 | DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_NEED_PASSWORD)(NetworkClientSocket *cs, NetworkPasswordType type) | |
211 | DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_NEED_GAME_PASSWORD)(NetworkClientSocket *cs) | |
212 | 212 | { |
213 | 213 | /* |
214 | * Packet: SERVER_NEED_PASSWORD | |
215 | * Function: Indication to the client that the server needs a password | |
214 | * Packet: PACKET_SERVER_NEED_GAME_PASSWORD | |
215 | * Function: Indication to the client that the server needs a game password | |
216 | */ | |
217 | ||
218 | /* Invalid packet when status is STATUS_AUTH_GAME or higher */ | |
219 | if (cs->status >= STATUS_AUTH_GAME) return NetworkCloseClient(cs, NETWORK_RECV_STATUS_MALFORMED_PACKET); | |
220 | ||
221 | cs->status = STATUS_AUTH_GAME; | |
222 | ||
223 | Packet *p = new Packet(PACKET_SERVER_NEED_GAME_PASSWORD); | |
224 | cs->Send_Packet(p); | |
225 | return NETWORK_RECV_STATUS_OKAY; | |
226 | } | |
227 | ||
228 | DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_NEED_COMPANY_PASSWORD)(NetworkClientSocket *cs) | |
229 | { | |
230 | /* | |
231 | * Packet: PACKET_SERVER_NEED_COMPANY_PASSWORD | |
232 | * Function: Indication to the client that the server needs a company password | |
216 | 233 | * Data: |
217 | * uint8: Type of password | |
218 | */ | |
219 | ||
220 | /* Invalid packet when status is AUTH or higher */ | |
221 | if (cs->status >= STATUS_AUTH) return NetworkCloseClient(cs, NETWORK_RECV_STATUS_MALFORMED_PACKET); | |
222 | ||
223 | cs->status = STATUS_AUTHORIZING; | |
224 | ||
225 | Packet *p = new Packet(PACKET_SERVER_NEED_PASSWORD); | |
226 | p->Send_uint8(type); | |
234 | * uint32: Generation seed | |
235 | * string: Network ID of the server | |
236 | */ | |
237 | ||
238 | /* Invalid packet when status is STATUS_AUTH_COMPANY or higher */ | |
239 | if (cs->status >= STATUS_AUTH_COMPANY) return NetworkCloseClient(cs, NETWORK_RECV_STATUS_MALFORMED_PACKET); | |
240 | ||
241 | cs->status = STATUS_AUTH_COMPANY; | |
242 | ||
243 | Packet *p = new Packet(PACKET_SERVER_NEED_COMPANY_PASSWORD); | |
227 | 244 | p->Send_uint32(_settings_game.game_creation.generation_seed); |
228 | 245 | p->Send_string(_settings_client.network.network_id); |
229 | 246 | cs->Send_Packet(p); |
243 | 260 | NetworkClientSocket *new_cs; |
244 | 261 | |
245 | 262 | /* Invalid packet when status is AUTH or higher */ |
246 | if (cs->status >= STATUS_AUTH) return NetworkCloseClient(cs, NETWORK_RECV_STATUS_MALFORMED_PACKET); | |
247 | ||
248 | cs->status = STATUS_AUTH; | |
263 | if (cs->status >= STATUS_AUTHORIZED) return NetworkCloseClient(cs, NETWORK_RECV_STATUS_MALFORMED_PACKET); | |
264 | ||
265 | cs->status = STATUS_AUTHORIZED; | |
249 | 266 | _network_game_info.clients_on++; |
250 | 267 | |
251 | 268 | p = new Packet(PACKET_SERVER_WELCOME); |
256 | 273 | |
257 | 274 | /* Transmit info about all the active clients */ |
258 | 275 | FOR_ALL_CLIENT_SOCKETS(new_cs) { |
259 | if (new_cs != cs && new_cs->status > STATUS_AUTH) | |
276 | if (new_cs != cs && new_cs->status > STATUS_AUTHORIZED) | |
260 | 277 | SEND_COMMAND(PACKET_SERVER_CLIENT_INFO)(cs, new_cs->GetInfo()); |
261 | 278 | } |
262 | 279 | /* Also send the info of the server */ |
304 | 321 | * nothing |
305 | 322 | */ |
306 | 323 | |
307 | static FILE *file_pointer; | |
324 | static FILE *file_pointer = NULL; | |
308 | 325 | static uint sent_packets; // How many packets we did send succecfully last time |
309 | 326 | |
310 | if (cs->status < STATUS_AUTH) { | |
327 | if (cs->status < STATUS_AUTHORIZED) { | |
311 | 328 | /* Illegal call, return error and ignore the packet */ |
312 | 329 | return SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_AUTHORIZED); |
313 | 330 | } |
314 | 331 | |
315 | if (cs->status == STATUS_AUTH) { | |
332 | if (cs->status == STATUS_AUTHORIZED) { | |
316 | 333 | const char *filename = "network_server.tmp"; |
317 | 334 | Packet *p; |
318 | 335 | |
319 | 336 | /* Make a dump of the current game */ |
320 | 337 | if (SaveOrLoad(filename, SL_SAVE, AUTOSAVE_DIR) != SL_OK) usererror("network savedump failed"); |
321 | 338 | |
339 | if (file_pointer != NULL) fclose(file_pointer); | |
340 | ||
322 | 341 | file_pointer = FioFOpenFile(filename, "rb", AUTOSAVE_DIR); |
342 | if (file_pointer == NULL) usererror("network savedump failed - could not open just saved dump"); | |
343 | ||
323 | 344 | fseek(file_pointer, 0, SEEK_END); |
324 | ||
325 | 345 | if (ftell(file_pointer) == 0) usererror("network savedump failed - zero sized savegame?"); |
326 | 346 | |
327 | 347 | /* Now send the _frame_counter and how many packets are coming */ |
335 | 355 | |
336 | 356 | sent_packets = 4; // We start with trying 4 packets |
337 | 357 | |
358 | NetworkSyncCommandQueue(cs); | |
338 | 359 | cs->status = STATUS_MAP; |
339 | 360 | /* Mark the start of download */ |
340 | 361 | cs->last_frame = _frame_counter; |
363 | 384 | * to send it is ready (maybe that happens like never ;)) */ |
364 | 385 | cs->status = STATUS_DONE_MAP; |
365 | 386 | fclose(file_pointer); |
387 | file_pointer = NULL; | |
366 | 388 | |
367 | 389 | NetworkClientSocket *new_cs; |
368 | 390 | bool new_map_client = false; |
373 | 395 | /* Check if we already have a new client to send the map to */ |
374 | 396 | if (!new_map_client) { |
375 | 397 | /* If not, this client will get the map */ |
376 | new_cs->status = STATUS_AUTH; | |
398 | new_cs->status = STATUS_AUTHORIZED; | |
377 | 399 | new_map_client = true; |
378 | 400 | SEND_COMMAND(PACKET_SERVER_MAP)(new_cs); |
379 | 401 | } else { |
646 | 668 | |
647 | 669 | /* We now want a password from the client else we do not allow him in! */ |
648 | 670 | if (!StrEmpty(_settings_client.network.server_password)) { |
649 | return SEND_COMMAND(PACKET_SERVER_NEED_PASSWORD)(cs, NETWORK_GAME_PASSWORD); | |
671 | return SEND_COMMAND(PACKET_SERVER_NEED_GAME_PASSWORD)(cs); | |
650 | 672 | } |
651 | 673 | |
652 | 674 | if (Company::IsValidID(ci->client_playas) && !StrEmpty(_network_company_states[ci->client_playas].password)) { |
653 | return SEND_COMMAND(PACKET_SERVER_NEED_PASSWORD)(cs, NETWORK_COMPANY_PASSWORD); | |
675 | return SEND_COMMAND(PACKET_SERVER_NEED_COMPANY_PASSWORD)(cs); | |
654 | 676 | } |
655 | 677 | |
656 | 678 | return SEND_COMMAND(PACKET_SERVER_WELCOME)(cs); |
715 | 737 | strecpy(ci->client_name, name, lastof(ci->client_name)); |
716 | 738 | ci->client_playas = playas; |
717 | 739 | ci->client_lang = client_lang; |
740 | DEBUG(desync, 1, "client: %08x; %02x; %02x; %04x", _date, _date_fract, (int)ci->client_playas, ci->index); | |
718 | 741 | |
719 | 742 | /* Make sure companies to which people try to join are not autocleaned */ |
720 | 743 | if (Company::IsValidID(playas)) _network_company_states[playas].months_empty = 0; |
726 | 749 | return SEND_COMMAND(PACKET_SERVER_CHECK_NEWGRFS)(cs); |
727 | 750 | } |
728 | 751 | |
729 | DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_PASSWORD) | |
730 | { | |
731 | NetworkPasswordType type; | |
752 | DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_GAME_PASSWORD) | |
753 | { | |
754 | if (cs->status != STATUS_AUTH_GAME) { | |
755 | return SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_EXPECTED); | |
756 | } | |
757 | ||
732 | 758 | char password[NETWORK_PASSWORD_LENGTH]; |
733 | const NetworkClientInfo *ci; | |
734 | ||
735 | type = (NetworkPasswordType)p->Recv_uint8(); | |
736 | 759 | p->Recv_string(password, sizeof(password)); |
737 | 760 | |
738 | if (cs->status == STATUS_AUTHORIZING && type == NETWORK_GAME_PASSWORD) { | |
739 | /* Check game-password */ | |
740 | if (strcmp(password, _settings_client.network.server_password) != 0) { | |
741 | /* Password is invalid */ | |
742 | return SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_WRONG_PASSWORD); | |
743 | } | |
744 | ||
745 | ci = cs->GetInfo(); | |
746 | ||
747 | if (Company::IsValidID(ci->client_playas) && !StrEmpty(_network_company_states[ci->client_playas].password)) { | |
748 | return SEND_COMMAND(PACKET_SERVER_NEED_PASSWORD)(cs, NETWORK_COMPANY_PASSWORD); | |
749 | } | |
750 | ||
751 | /* Valid password, allow user */ | |
752 | return SEND_COMMAND(PACKET_SERVER_WELCOME)(cs); | |
753 | } else if (cs->status == STATUS_AUTHORIZING && type == NETWORK_COMPANY_PASSWORD) { | |
754 | ci = cs->GetInfo(); | |
755 | ||
756 | if (strcmp(password, _network_company_states[ci->client_playas].password) != 0) { | |
757 | /* Password is invalid */ | |
758 | return SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_WRONG_PASSWORD); | |
759 | } | |
760 | ||
761 | return SEND_COMMAND(PACKET_SERVER_WELCOME)(cs); | |
762 | } | |
763 | ||
764 | return SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_EXPECTED); | |
761 | /* Check game password. Allow joining if we cleared the password meanwhile */ | |
762 | if (!StrEmpty(_settings_client.network.server_password) && | |
763 | strcmp(password, _settings_client.network.server_password) != 0) { | |
764 | /* Password is invalid */ | |
765 | return SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_WRONG_PASSWORD); | |
766 | } | |
767 | ||
768 | const NetworkClientInfo *ci = cs->GetInfo(); | |
769 | if (Company::IsValidID(ci->client_playas) && !StrEmpty(_network_company_states[ci->client_playas].password)) { | |
770 | return SEND_COMMAND(PACKET_SERVER_NEED_COMPANY_PASSWORD)(cs); | |
771 | } | |
772 | ||
773 | /* Valid password, allow user */ | |
774 | return SEND_COMMAND(PACKET_SERVER_WELCOME)(cs); | |
775 | } | |
776 | ||
777 | DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_COMPANY_PASSWORD) | |
778 | { | |
779 | if (cs->status != STATUS_AUTH_COMPANY) { | |
780 | return SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_EXPECTED); | |
781 | } | |
782 | ||
783 | char password[NETWORK_PASSWORD_LENGTH]; | |
784 | p->Recv_string(password, sizeof(password)); | |
785 | ||
786 | /* Check company password. Allow joining if we cleared the password meanwhile. | |
787 | * Also, check the company is still valid - client could be moved to spectators | |
788 | * in the middle of the authorization process */ | |
789 | CompanyID playas = cs->GetInfo()->client_playas; | |
790 | if (Company::IsValidID(playas) && !StrEmpty(_network_company_states[playas].password) && | |
791 | strcmp(password, _network_company_states[playas].password) != 0) { | |
792 | /* Password is invalid */ | |
793 | return SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_WRONG_PASSWORD); | |
794 | } | |
795 | ||
796 | return SEND_COMMAND(PACKET_SERVER_WELCOME)(cs); | |
765 | 797 | } |
766 | 798 | |
767 | 799 | DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_GETMAP) |
789 | 821 | |
790 | 822 | /* The client was never joined.. so this is impossible, right? |
791 | 823 | * Ignore the packet, give the client a warning, and close his connection */ |
792 | if (cs->status < STATUS_AUTH || cs->HasClientQuit()) { | |
824 | if (cs->status < STATUS_AUTHORIZED || cs->HasClientQuit()) { | |
793 | 825 | return SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_AUTHORIZED); |
794 | 826 | } |
795 | 827 | |
830 | 862 | cs->last_frame_server = _frame_counter; |
831 | 863 | |
832 | 864 | FOR_ALL_CLIENT_SOCKETS(new_cs) { |
833 | if (new_cs->status > STATUS_AUTH) { | |
865 | if (new_cs->status > STATUS_AUTHORIZED) { | |
834 | 866 | SEND_COMMAND(PACKET_SERVER_CLIENT_INFO)(new_cs, cs->GetInfo()); |
835 | 867 | SEND_COMMAND(PACKET_SERVER_JOIN)(new_cs, cs->client_id); |
836 | 868 | } |
963 | 995 | NetworkTextMessage(NETWORK_ACTION_LEAVE, CC_DEFAULT, false, client_name, NULL, strid); |
964 | 996 | |
965 | 997 | FOR_ALL_CLIENT_SOCKETS(new_cs) { |
966 | if (new_cs->status > STATUS_AUTH) { | |
998 | if (new_cs->status > STATUS_AUTHORIZED) { | |
967 | 999 | SEND_COMMAND(PACKET_SERVER_ERROR_QUIT)(new_cs, cs->client_id, errorno); |
968 | 1000 | } |
969 | 1001 | } |
990 | 1022 | NetworkTextMessage(NETWORK_ACTION_LEAVE, CC_DEFAULT, false, client_name, NULL, STR_NETWORK_MESSAGE_CLIENT_LEAVING); |
991 | 1023 | |
992 | 1024 | FOR_ALL_CLIENT_SOCKETS(new_cs) { |
993 | if (new_cs->status > STATUS_AUTH) { | |
1025 | if (new_cs->status > STATUS_AUTHORIZED) { | |
994 | 1026 | SEND_COMMAND(PACKET_SERVER_QUIT)(new_cs, cs->client_id); |
995 | 1027 | } |
996 | 1028 | } |
1001 | 1033 | |
1002 | 1034 | DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_ACK) |
1003 | 1035 | { |
1004 | if (cs->status < STATUS_AUTH) { | |
1036 | if (cs->status < STATUS_AUTHORIZED) { | |
1005 | 1037 | /* Illegal call, return error and ignore the packet */ |
1006 | 1038 | return SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_AUTHORIZED); |
1007 | 1039 | } |
1070 | 1102 | } |
1071 | 1103 | break; |
1072 | 1104 | case DESTTYPE_TEAM: { |
1073 | bool show_local = true; // If this is false, the message is already displayed | |
1074 | /* on the client who did sent it. | |
1075 | * Find all clients that belong to this company */ | |
1105 | /* If this is false, the message is already displayed on the client who sent it. */ | |
1106 | bool show_local = true; | |
1107 | /* Find all clients that belong to this company */ | |
1076 | 1108 | ci_to = NULL; |
1077 | 1109 | FOR_ALL_CLIENT_SOCKETS(cs) { |
1078 | 1110 | ci = cs->GetInfo(); |
1128 | 1160 | |
1129 | 1161 | DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_CHAT) |
1130 | 1162 | { |
1131 | if (cs->status < STATUS_AUTH) { | |
1163 | if (cs->status < STATUS_AUTHORIZED) { | |
1132 | 1164 | /* Illegal call, return error and ignore the packet */ |
1133 | 1165 | return SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_AUTHORIZED); |
1134 | 1166 | } |
1269 | 1301 | RECEIVE_COMMAND(PACKET_CLIENT_COMPANY_INFO), |
1270 | 1302 | NULL, // PACKET_SERVER_COMPANY_INFO, |
1271 | 1303 | NULL, // PACKET_SERVER_CLIENT_INFO, |
1272 | NULL, // PACKET_SERVER_NEED_PASSWORD, | |
1273 | RECEIVE_COMMAND(PACKET_CLIENT_PASSWORD), | |
1304 | NULL, // PACKET_SERVER_NEED_GAME_PASSWORD, | |
1305 | NULL, // PACKET_SERVER_NEED_COMPANY_PASSWORD, | |
1306 | RECEIVE_COMMAND(PACKET_CLIENT_GAME_PASSWORD), | |
1307 | RECEIVE_COMMAND(PACKET_CLIENT_COMPANY_PASSWORD), | |
1274 | 1308 | NULL, // PACKET_SERVER_WELCOME, |
1275 | 1309 | RECEIVE_COMMAND(PACKET_CLIENT_GETMAP), |
1276 | 1310 | NULL, // PACKET_SERVER_WAIT, |
1395 | 1429 | |
1396 | 1430 | if (ci == NULL) return; |
1397 | 1431 | |
1432 | DEBUG(desync, 1, "client: %08x; %02x; %02x; %04x", _date, _date_fract, (int)ci->client_playas, client_id); | |
1433 | ||
1398 | 1434 | FOR_ALL_CLIENT_SOCKETS(cs) { |
1399 | 1435 | SEND_COMMAND(PACKET_SERVER_CLIENT_INFO)(cs, ci); |
1400 | 1436 | } |
1661 | 1697 | NetworkAutoCleanCompanies(); |
1662 | 1698 | } |
1663 | 1699 | |
1664 | void NetworkServerChangeOwner(Owner current_owner, Owner new_owner) | |
1665 | { | |
1666 | /* The server has to handle all administrative issues, for example | |
1667 | * updating and notifying all clients of what has happened */ | |
1668 | NetworkClientInfo *ci = NetworkFindClientInfoFromClientID(CLIENT_ID_SERVER); | |
1669 | ||
1670 | /* The server has just changed from owner */ | |
1671 | if (current_owner == ci->client_playas) { | |
1672 | ci->client_playas = new_owner; | |
1673 | NetworkUpdateClientInfo(CLIENT_ID_SERVER); | |
1674 | } | |
1675 | ||
1676 | /* Find all clients that were in control of this company, and mark them as new_owner */ | |
1677 | FOR_ALL_CLIENT_INFOS(ci) { | |
1678 | if (current_owner == ci->client_playas) { | |
1679 | ci->client_playas = new_owner; | |
1680 | NetworkUpdateClientInfo(ci->client_id); | |
1681 | } | |
1682 | } | |
1683 | } | |
1684 | ||
1685 | 1700 | const char *GetClientIP(NetworkClientInfo *ci) |
1686 | 1701 | { |
1687 | 1702 | return ci->client_address.GetHostname(); |
1691 | 1706 | { |
1692 | 1707 | static const char * const stat_str[] = { |
1693 | 1708 | "inactive", |
1694 | "authorizing", | |
1709 | "authorizing (server password)", | |
1710 | "authorizing (company password)", | |
1695 | 1711 | "authorized", |
1696 | 1712 | "waiting", |
1697 | 1713 | "loading map", |
1699 | 1715 | "ready", |
1700 | 1716 | "active" |
1701 | 1717 | }; |
1718 | assert_compile(lengthof(stat_str) == STATUS_END); | |
1702 | 1719 | |
1703 | 1720 | NetworkClientSocket *cs; |
1704 | 1721 | FOR_ALL_CLIENT_SOCKETS(cs) { |
0 | /* $Id: newgrf.cpp 19376 2010-03-08 22:19:39Z rubidium $ */ | |
0 | /* $Id: newgrf.cpp 19653 2010-04-17 12:00:59Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
185 | 185 | struct GRFTempEngineData { |
186 | 186 | uint16 cargo_allowed; |
187 | 187 | uint16 cargo_disallowed; |
188 | RailTypeLabel railtypelabel; | |
188 | 189 | bool refitmask_valid; ///< Did the newgrf set any refittability property? If not, default refittability will be applied. |
189 | 190 | uint8 rv_max_speed; ///< Temporary storage of RV prop 15, maximum speed in mph/0.8 |
190 | 191 | }; |
400 | 401 | size_t len = (Engine::GetPoolSize() - engine_pool_size) * sizeof(*_gted); |
401 | 402 | memset(_gted + engine_pool_size, 0, len); |
402 | 403 | } |
404 | if (type == VEH_TRAIN) { | |
405 | _gted[e->index].railtypelabel = GetRailTypeInfo(e->u.rail.railtype)->label; | |
406 | } | |
403 | 407 | |
404 | 408 | grfmsg(5, "Created new engine at index %d for GRFID %x, type %d, index %d", e->index, BSWAP32(file->grfid), type, internal_id); |
405 | 409 | |
526 | 530 | uint8 tracktype = buf->ReadByte(); |
527 | 531 | |
528 | 532 | if (tracktype < _cur_grffile->railtype_max) { |
529 | RailType railtype = GetRailTypeByLabel(_cur_grffile->railtype_list[tracktype]); | |
530 | if (railtype == INVALID_RAILTYPE) { | |
531 | /* Rail type is not available, so disable this engine */ | |
532 | ei[i].climates = 0x80; | |
533 | } else { | |
534 | rvi[i].railtype = railtype; | |
535 | } | |
533 | _gted[e->index].railtypelabel = _cur_grffile->railtype_list[tracktype]; | |
536 | 534 | break; |
537 | 535 | } |
538 | 536 | |
539 | 537 | switch (tracktype) { |
540 | case 0: rvi->railtype = rvi->engclass >= 2 ? RAILTYPE_ELECTRIC : RAILTYPE_RAIL; break; | |
541 | case 1: rvi->railtype = RAILTYPE_MONO; break; | |
542 | case 2: rvi->railtype = RAILTYPE_MAGLEV; break; | |
538 | case 0: _gted[e->index].railtypelabel = rvi->engclass >= 2 ? RAILTYPE_ELECTRIC_LABEL : RAILTYPE_RAIL_LABEL; break; | |
539 | case 1: _gted[e->index].railtypelabel = RAILTYPE_MONO_LABEL; break; | |
540 | case 2: _gted[e->index].railtypelabel = RAILTYPE_MAGLEV_LABEL; break; | |
543 | 541 | default: |
544 | 542 | grfmsg(1, "RailVehicleChangeInfo: Invalid track type %d specified, ignoring", tracktype); |
545 | 543 | break; |
660 | 658 | if (_cur_grffile->railtype_max == 0) { |
661 | 659 | /* Use traction type to select between normal and electrified |
662 | 660 | * rail only when no translation list is in place. */ |
663 | if (rvi->railtype == RAILTYPE_RAIL && engclass >= EC_ELECTRIC) rvi->railtype = RAILTYPE_ELECTRIC; | |
664 | if (rvi->railtype == RAILTYPE_ELECTRIC && engclass < EC_ELECTRIC) rvi->railtype = RAILTYPE_RAIL; | |
661 | if (_gted[e->index].railtypelabel == RAILTYPE_RAIL_LABEL && engclass >= EC_ELECTRIC) _gted[e->index].railtypelabel = RAILTYPE_ELECTRIC_LABEL; | |
662 | if (_gted[e->index].railtypelabel == RAILTYPE_ELECTRIC_LABEL && engclass < EC_ELECTRIC) _gted[e->index].railtypelabel = RAILTYPE_RAIL_LABEL; | |
665 | 663 | } |
666 | 664 | |
667 | 665 | rvi->engclass = engclass; |
1458 | 1456 | return ret; |
1459 | 1457 | } |
1460 | 1458 | |
1459 | static ChangeInfoResult IgnoreTownHouseProperty(int prop, ByteReader *buf) | |
1460 | { | |
1461 | ChangeInfoResult ret = CIR_SUCCESS; | |
1462 | ||
1463 | switch (prop) { | |
1464 | case 0x09: | |
1465 | case 0x0B: | |
1466 | case 0x0C: | |
1467 | case 0x0D: | |
1468 | case 0x0E: | |
1469 | case 0x0F: | |
1470 | case 0x11: | |
1471 | case 0x14: | |
1472 | case 0x15: | |
1473 | case 0x16: | |
1474 | case 0x18: | |
1475 | case 0x19: | |
1476 | case 0x1A: | |
1477 | case 0x1B: | |
1478 | case 0x1C: | |
1479 | case 0x1D: | |
1480 | case 0x1F: | |
1481 | buf->ReadByte(); | |
1482 | break; | |
1483 | ||
1484 | case 0x0A: | |
1485 | case 0x10: | |
1486 | case 0x12: | |
1487 | case 0x13: | |
1488 | case 0x21: | |
1489 | case 0x22: | |
1490 | buf->ReadWord(); | |
1491 | break; | |
1492 | ||
1493 | case 0x1E: | |
1494 | buf->ReadDWord(); | |
1495 | break; | |
1496 | ||
1497 | case 0x17: | |
1498 | for (uint j = 0; j < 4; j++) buf->ReadByte(); | |
1499 | break; | |
1500 | ||
1501 | case 0x20: { | |
1502 | byte count = buf->ReadByte(); | |
1503 | for (byte j = 0; j < count; j++) buf->ReadByte(); | |
1504 | ret = CIR_UNHANDLED; | |
1505 | } break; | |
1506 | ||
1507 | default: | |
1508 | ret = CIR_UNKNOWN; | |
1509 | break; | |
1510 | } | |
1511 | return ret; | |
1512 | } | |
1513 | ||
1461 | 1514 | static ChangeInfoResult TownHouseChangeInfo(uint hid, int numinfo, int prop, ByteReader *buf) |
1462 | 1515 | { |
1463 | 1516 | ChangeInfoResult ret = CIR_SUCCESS; |
1476 | 1529 | HouseSpec *housespec = _cur_grffile->housespec[hid + i]; |
1477 | 1530 | |
1478 | 1531 | if (prop != 0x08 && housespec == NULL) { |
1479 | grfmsg(2, "TownHouseChangeInfo: Attempt to modify undefined house %u. Ignoring.", hid + i); | |
1480 | return CIR_INVALID_ID; | |
1532 | /* If the house property 08 is not yet set, ignore this property */ | |
1533 | ChangeInfoResult cir = IgnoreTownHouseProperty(prop, buf); | |
1534 | if (cir > ret) ret = cir; | |
1535 | continue; | |
1481 | 1536 | } |
1482 | 1537 | |
1483 | 1538 | switch (prop) { |
2064 | 2119 | return ret; |
2065 | 2120 | } |
2066 | 2121 | |
2122 | static ChangeInfoResult IgnoreIndustryTileProperty(int prop, ByteReader *buf) | |
2123 | { | |
2124 | ChangeInfoResult ret = CIR_SUCCESS; | |
2125 | ||
2126 | switch (prop) { | |
2127 | case 0x09: | |
2128 | case 0x0D: | |
2129 | case 0x0E: | |
2130 | case 0x10: | |
2131 | case 0x11: | |
2132 | case 0x12: | |
2133 | buf->ReadByte(); | |
2134 | break; | |
2135 | ||
2136 | case 0x0A: | |
2137 | case 0x0B: | |
2138 | case 0x0C: | |
2139 | case 0x0F: | |
2140 | buf->ReadWord(); | |
2141 | break; | |
2142 | ||
2143 | default: | |
2144 | ret = CIR_UNKNOWN; | |
2145 | break; | |
2146 | } | |
2147 | return ret; | |
2148 | } | |
2149 | ||
2067 | 2150 | static ChangeInfoResult IndustrytilesChangeInfo(uint indtid, int numinfo, int prop, ByteReader *buf) |
2068 | 2151 | { |
2069 | 2152 | ChangeInfoResult ret = CIR_SUCCESS; |
2082 | 2165 | IndustryTileSpec *tsp = _cur_grffile->indtspec[indtid + i]; |
2083 | 2166 | |
2084 | 2167 | if (prop != 0x08 && tsp == NULL) { |
2085 | grfmsg(2, "IndustryTilesChangeInfo: Attempt to modify undefined industry tile %u. Ignoring.", indtid + i); | |
2086 | return CIR_INVALID_ID; | |
2168 | ChangeInfoResult cir = IgnoreIndustryTileProperty(prop, buf); | |
2169 | if (cir > ret) ret = cir; | |
2170 | continue; | |
2087 | 2171 | } |
2088 | 2172 | |
2089 | 2173 | switch (prop) { |
2172 | 2256 | return ret; |
2173 | 2257 | } |
2174 | 2258 | |
2259 | static ChangeInfoResult IgnoreIndustryProperty(int prop, ByteReader *buf) | |
2260 | { | |
2261 | ChangeInfoResult ret = CIR_SUCCESS; | |
2262 | ||
2263 | switch (prop) { | |
2264 | case 0x09: | |
2265 | case 0x0B: | |
2266 | case 0x0F: | |
2267 | case 0x12: | |
2268 | case 0x13: | |
2269 | case 0x14: | |
2270 | case 0x17: | |
2271 | case 0x18: | |
2272 | case 0x19: | |
2273 | case 0x21: | |
2274 | case 0x22: | |
2275 | buf->ReadByte(); | |
2276 | break; | |
2277 | ||
2278 | case 0x0C: | |
2279 | case 0x0D: | |
2280 | case 0x0E: | |
2281 | case 0x10: | |
2282 | case 0x1B: | |
2283 | case 0x1F: | |
2284 | case 0x24: | |
2285 | buf->ReadWord(); | |
2286 | break; | |
2287 | ||
2288 | case 0x1A: | |
2289 | case 0x1C: | |
2290 | case 0x1D: | |
2291 | case 0x1E: | |
2292 | case 0x20: | |
2293 | case 0x23: | |
2294 | buf->ReadDWord(); | |
2295 | break; | |
2296 | ||
2297 | case 0x0A: { | |
2298 | byte num_table = buf->ReadByte(); | |
2299 | for (byte j = 0; j < num_table; j++) { | |
2300 | for (uint k = 0;; k++) { | |
2301 | byte x = buf->ReadByte(); | |
2302 | if (x == 0xFE && k == 0) { | |
2303 | buf->ReadByte(); | |
2304 | buf->ReadByte(); | |
2305 | break; | |
2306 | } | |
2307 | ||
2308 | byte y = buf->ReadByte(); | |
2309 | if (x == 0 && y == 0x80) break; | |
2310 | ||
2311 | byte gfx = buf->ReadByte(); | |
2312 | if (gfx == 0xFE) buf->ReadWord(); | |
2313 | } | |
2314 | } | |
2315 | } break; | |
2316 | ||
2317 | case 0x11: | |
2318 | case 0x16: | |
2319 | for (byte j = 0; j < 3; j++) buf->ReadByte(); | |
2320 | break; | |
2321 | ||
2322 | case 0x15: { | |
2323 | byte number_of_sounds = buf->ReadByte(); | |
2324 | for (uint8 j = 0; j < number_of_sounds; j++) { | |
2325 | buf->ReadByte(); | |
2326 | } | |
2327 | } break; | |
2328 | ||
2329 | default: | |
2330 | ret = CIR_UNKNOWN; | |
2331 | break; | |
2332 | } | |
2333 | return ret; | |
2334 | } | |
2335 | ||
2175 | 2336 | /** |
2176 | 2337 | * Validate the industry layout; e.g. to prevent duplicate tiles. |
2177 | 2338 | * @param layout the layout to check |
2211 | 2372 | IndustrySpec *indsp = _cur_grffile->industryspec[indid + i]; |
2212 | 2373 | |
2213 | 2374 | if (prop != 0x08 && indsp == NULL) { |
2214 | grfmsg(2, "IndustriesChangeInfo: Attempt to modify undefined industry %u. Ignoring.", indid + i); | |
2215 | return CIR_INVALID_ID; | |
2375 | ChangeInfoResult cir = IgnoreIndustryProperty(prop, buf); | |
2376 | if (cir > ret) ret = cir; | |
2377 | continue; | |
2216 | 2378 | } |
2217 | 2379 | |
2218 | 2380 | switch (prop) { |
2476 | 2638 | |
2477 | 2639 | case 0x24: // name for nearby station |
2478 | 2640 | indsp->station_name = buf->ReadWord(); |
2479 | _string_to_grf_mapping[&indsp->station_name] = _cur_grffile->grfid; | |
2641 | if (indsp->station_name != STR_NULL) _string_to_grf_mapping[&indsp->station_name] = _cur_grffile->grfid; | |
2480 | 2642 | break; |
2481 | 2643 | |
2482 | 2644 | default: |
5730 | 5892 | |
5731 | 5893 | /* Allocate temporary refit/cargo class data */ |
5732 | 5894 | _gted = CallocT<GRFTempEngineData>(Engine::GetPoolSize()); |
5895 | ||
5896 | /* Fill rail type label temporary data for default trains */ | |
5897 | Engine *e; | |
5898 | FOR_ALL_ENGINES_OF_TYPE(e, VEH_TRAIN) { | |
5899 | _gted[e->index].railtypelabel = GetRailTypeInfo(e->u.rail.railtype)->label; | |
5900 | } | |
5733 | 5901 | |
5734 | 5902 | /* Reset GRM reservations */ |
5735 | 5903 | memset(&_grm_engines, 0, sizeof(_grm_engines)); |
6476 | 6644 | } |
6477 | 6645 | } |
6478 | 6646 | |
6647 | FOR_ALL_ENGINES_OF_TYPE(e, VEH_TRAIN) { | |
6648 | RailType railtype = GetRailTypeByLabel(_gted[e->index].railtypelabel); | |
6649 | if (railtype == INVALID_RAILTYPE) { | |
6650 | /* Rail type is not available, so disable this engine */ | |
6651 | e->info.climates = 0x80; | |
6652 | } else { | |
6653 | e->u.rail.railtype = railtype; | |
6654 | } | |
6655 | } | |
6656 | ||
6479 | 6657 | SetYearEngineAgingStops(); |
6480 | 6658 | |
6481 | 6659 | FinalisePriceBaseMultipliers(); |
0 | /* $Id: newgrf_industries.cpp 18988 2010-02-02 23:11:10Z yexo $ */ | |
0 | /* $Id: newgrf_industries.cpp 19567 2010-04-05 21:34:47Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
217 | 217 | |
218 | 218 | /* Company info */ |
219 | 219 | case 0x45: { |
220 | byte colours; | |
220 | byte colours = 0; | |
221 | 221 | bool is_ai = false; |
222 | 222 | |
223 | 223 | const Company *c = Company::GetIfValid(industry->founder); |
226 | 226 | |
227 | 227 | is_ai = c->is_ai; |
228 | 228 | colours = l->colour1 + l->colour2 * 16; |
229 | } else { | |
230 | colours = GB(Random(), 0, 8); | |
231 | 229 | } |
232 | 230 | |
233 | 231 | return industry->founder | (is_ai ? 0x10000 : 0) | (colours << 24); |
0 | /* $Id: newgrf_spritegroup.cpp 18809 2010-01-15 16:41:15Z rubidium $ */ | |
0 | /* $Id: newgrf_spritegroup.cpp 19551 2010-04-03 19:48:01Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
41 | 41 | free(this->dts); |
42 | 42 | } |
43 | 43 | |
44 | TemporaryStorageArray<uint32, 0x110> _temp_store; | |
44 | TemporaryStorageArray<int32, 0x110> _temp_store; | |
45 | 45 | |
46 | 46 | |
47 | 47 | static inline uint32 GetVariable(const ResolverObject *object, byte variable, byte parameter, bool *available) |
117 | 117 | case DSGA_OP_AND: return last_value & value; |
118 | 118 | case DSGA_OP_OR: return last_value | value; |
119 | 119 | case DSGA_OP_XOR: return last_value ^ value; |
120 | case DSGA_OP_STO: _temp_store.Store(value, last_value); return last_value; | |
120 | case DSGA_OP_STO: _temp_store.Store((U)value, (S)last_value); return last_value; | |
121 | 121 | case DSGA_OP_RST: return value; |
122 | case DSGA_OP_STOP: if (object->psa != NULL) object->psa->Store(value, last_value); return last_value; | |
122 | case DSGA_OP_STOP: if (object->psa != NULL) object->psa->Store((U)value, (S)last_value); return last_value; | |
123 | 123 | case DSGA_OP_ROR: return RotateRight(last_value, value); |
124 | 124 | case DSGA_OP_SCMP: return ((S)last_value == (S)value) ? 1 : ((S)last_value < (S)value ? 0 : 2); |
125 | 125 | case DSGA_OP_UCMP: return ((U)last_value == (U)value) ? 1 : ((U)last_value < (U)value ? 0 : 2); |
0 | /* $Id: newgrf_spritegroup.h 19056 2010-02-07 22:22:54Z peter1138 $ */ | |
0 | /* $Id: newgrf_spritegroup.h 19551 2010-04-03 19:48:01Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
30 | 30 | */ |
31 | 31 | static inline uint32 GetRegister(uint i) |
32 | 32 | { |
33 | extern TemporaryStorageArray<uint32, 0x110> _temp_store; | |
33 | extern TemporaryStorageArray<int32, 0x110> _temp_store; | |
34 | 34 | return _temp_store.Get(i); |
35 | 35 | } |
36 | 36 |
0 | /* $Id: newgrf_station.h 18809 2010-01-15 16:41:15Z rubidium $ */ | |
0 | /* $Id: newgrf_station.h 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
26 | 26 | STAT_CLASS_MAX = 32, ///< Maximum number of classes. |
27 | 27 | }; |
28 | 28 | typedef SimpleTinyEnumT<StationClassID, byte> StationClassIDByte; |
29 | template <> struct EnumPropsT<StationClassID> : MakeEnumPropsT<StationClassID, byte, STAT_CLASS_BEGIN, STAT_CLASS_MAX, STAT_CLASS_MAX, 8> {}; | |
29 | 30 | |
30 | 31 | /** Allow incrementing of StationClassID variables */ |
31 | 32 | DECLARE_POSTFIX_INCREMENT(StationClassID); |
0 | /* $Id: newgrf_storage.h 17248 2009-08-21 20:21:05Z rubidium $ */ | |
0 | /* $Id: newgrf_storage.h 19551 2010-04-03 19:48:01Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
36 | 36 | * @param pos the position to write at |
37 | 37 | * @param value the value to write |
38 | 38 | */ |
39 | virtual void Store(uint pos, uint32 value) = 0; | |
39 | virtual void Store(uint pos, int32 value) = 0; | |
40 | 40 | }; |
41 | 41 | |
42 | 42 | /** |
69 | 69 | * @param pos the position to write at |
70 | 70 | * @param value the value to write |
71 | 71 | */ |
72 | void Store(uint pos, uint32 value) | |
72 | void Store(uint pos, int32 value) | |
73 | 73 | { |
74 | 74 | /* Out of the scope of the array */ |
75 | 75 | if (pos >= SIZE) return; |
137 | 137 | * @param pos the position to write at |
138 | 138 | * @param value the value to write |
139 | 139 | */ |
140 | void Store(uint pos, uint32 value) | |
140 | void Store(uint pos, int32 value) | |
141 | 141 | { |
142 | 142 | /* Out of the scope of the array */ |
143 | 143 | if (pos >= SIZE) return; |
0 | /* $Id: newgrf_text.cpp 18492 2009-12-13 21:12:36Z alberth $ */ | |
0 | /* $Id: newgrf_text.cpp 19585 2010-04-08 15:40:46Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
290 | 290 | case 8: |
291 | 291 | d += Utf8Encode(d, SCC_NEWGRF_PRINT_HEX_DWORD); |
292 | 292 | break; |
293 | case 0x0B: | |
294 | d += Utf8Encode(d, SCC_NEWGRF_PRINT_HEX_QWORD); | |
295 | break; | |
293 | 296 | |
294 | 297 | default: |
295 | 298 | grfmsg(1, "missing handler for extended format code"); |
570 | 573 | */ |
571 | 574 | void PrepareTextRefStackUsage(byte numEntries) |
572 | 575 | { |
573 | extern TemporaryStorageArray<uint32, 0x110> _temp_store; | |
576 | extern TemporaryStorageArray<int32, 0x110> _temp_store; | |
574 | 577 | |
575 | 578 | _newgrf_textrefstack->ResetStack(); |
576 | 579 | |
609 | 612 | * @param argv the OpenTTD stack of values |
610 | 613 | * @return the string control code to "execute" now |
611 | 614 | */ |
612 | uint RemapNewGRFStringControlCode(uint scc, char **buff, const char **str, int64 *argv) | |
615 | uint RemapNewGRFStringControlCode(uint scc, char *buf_start, char **buff, const char **str, int64 *argv) | |
613 | 616 | { |
614 | 617 | if (_newgrf_textrefstack->used) { |
615 | 618 | switch (scc) { |
623 | 626 | |
624 | 627 | case SCC_NEWGRF_PRINT_HEX_BYTE: *argv = _newgrf_textrefstack->PopUnsignedByte(); break; |
625 | 628 | case SCC_NEWGRF_PRINT_HEX_DWORD: *argv = _newgrf_textrefstack->PopUnsignedDWord(); break; |
629 | case SCC_NEWGRF_PRINT_HEX_QWORD: *argv = _newgrf_textrefstack->PopSignedQWord(); break; | |
626 | 630 | |
627 | 631 | case SCC_NEWGRF_PRINT_HEX_WORD: |
628 | 632 | case SCC_NEWGRF_PRINT_WORD_SPEED: |
636 | 640 | |
637 | 641 | case SCC_NEWGRF_ROTATE_TOP_4_WORDS: _newgrf_textrefstack->RotateTop4Words(); break; |
638 | 642 | case SCC_NEWGRF_PUSH_WORD: _newgrf_textrefstack->PushWord(Utf8Consume(str)); break; |
639 | case SCC_NEWGRF_UNPRINT: *buff -= Utf8Consume(str); break; | |
643 | case SCC_NEWGRF_UNPRINT: *buff = max(*buff - Utf8Consume(str), buf_start); break; | |
640 | 644 | |
641 | 645 | case SCC_NEWGRF_PRINT_STRING_ID: |
642 | 646 | *argv = TTDPStringIDToOTTDStringIDMapping(_newgrf_textrefstack->PopUnsignedWord()); |
655 | 659 | case SCC_NEWGRF_PRINT_HEX_BYTE: |
656 | 660 | case SCC_NEWGRF_PRINT_HEX_WORD: |
657 | 661 | case SCC_NEWGRF_PRINT_HEX_DWORD: |
662 | case SCC_NEWGRF_PRINT_HEX_QWORD: | |
658 | 663 | return SCC_HEX; |
659 | 664 | |
660 | 665 | case SCC_NEWGRF_PRINT_DWORD_CURRENCY: |
0 | /* $Id: newgrf_text.h 18809 2010-01-15 16:41:15Z rubidium $ */ | |
0 | /* $Id: newgrf_text.h 19585 2010-04-08 15:40:46Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
27 | 27 | void SwitchToNormalRefStack(); |
28 | 28 | void SwitchToErrorRefStack(); |
29 | 29 | void RewindTextRefStack(); |
30 | uint RemapNewGRFStringControlCode(uint scc, char **buff, const char **str, int64 *argv); | |
30 | uint RemapNewGRFStringControlCode(uint scc, char *buf_start, char **buff, const char **str, int64 *argv); | |
31 | 31 | |
32 | 32 | StringID TTDPStringIDToOTTDStringIDMapping(StringID string); |
33 | 33 |
0 | /* $Id: openttd.cpp 19430 2010-03-15 22:52:39Z rubidium $ */ | |
0 | /* $Id: openttd.cpp 19690 2010-04-21 19:20:28Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
796 | 796 | SettingsDisableElrail(_settings_game.vehicle.disable_elrails); |
797 | 797 | |
798 | 798 | /* In a dedicated server, the server does not play */ |
799 | if (BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() == 0) { | |
799 | if (_network_dedicated || BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() == 0) { | |
800 | 800 | SetLocalCompany(COMPANY_SPECTATOR); |
801 | 801 | IConsoleCmdExec("exec scripts/game_start.scr 0"); |
802 | 802 | return; |
1109 | 1109 | |
1110 | 1110 | Vehicle *v; |
1111 | 1111 | FOR_ALL_VEHICLES(v) { |
1112 | if (v != v->First()) continue; | |
1112 | if (v != v->First() || v->vehstatus & VS_CRASHED) continue; | |
1113 | 1113 | |
1114 | 1114 | switch (v->type) { |
1115 | 1115 | case VEH_ROAD: { |
1116 | 1116 | RoadVehicle *rv = RoadVehicle::From(v); |
1117 | RoadVehicleCache cache = rv->rcache; | |
1117 | RoadVehicleCache cache; | |
1118 | memset(&cache, 0, sizeof(cache)); | |
1119 | cache = rv->rcache; | |
1118 | 1120 | RoadVehUpdateCache(rv); |
1119 | 1121 | |
1120 | 1122 | if (memcmp(&cache, &rv->rcache, sizeof(RoadVehicleCache)) != 0) { |
1121 | DEBUG(desync, 2, "cache mismatch: vehicle %i, company %i, unit number %i\n", v->index, (int)v->owner, v->unitnumber); | |
1123 | DEBUG(desync, 2, "cache mismatch: vehicle %i, company %i, unit number %i", v->index, (int)v->owner, v->unitnumber); | |
1122 | 1124 | } |
1123 | 1125 | } break; |
1124 | 1126 | |
1127 | 1129 | Train *t = Train::From(v); |
1128 | 1130 | for (Vehicle *u = t; u != NULL; u = u->Next()) length++; |
1129 | 1131 | |
1130 | TrainCache *wagons = MallocT<TrainCache>(length); | |
1132 | TrainCache *wagons = CallocT<TrainCache>(length); | |
1131 | 1133 | length = 0; |
1132 | 1134 | for (Train *u = t; u != NULL; u = u->Next()) wagons[length++] = u->tcache; |
1133 | 1135 | |
1136 | 1138 | length = 0; |
1137 | 1139 | for (Train *u = t; u != NULL; u = u->Next()) { |
1138 | 1140 | if (memcmp(&wagons[length], &u->tcache, sizeof(TrainCache)) != 0) { |
1139 | DEBUG(desync, 2, "cache mismatch: vehicle %i, company %i, unit number %i, wagon %i\n", v->index, (int)v->owner, v->unitnumber, length); | |
1141 | DEBUG(desync, 2, "cache mismatch: vehicle %i, company %i, unit number %i, wagon %i", v->index, (int)v->owner, v->unitnumber, length); | |
1140 | 1142 | } |
1141 | 1143 | length++; |
1142 | 1144 | } |
1146 | 1148 | |
1147 | 1149 | case VEH_AIRCRAFT: { |
1148 | 1150 | Aircraft *a = Aircraft::From(v); |
1149 | AircraftCache cache = a->acache; | |
1151 | AircraftCache cache; | |
1152 | memset(&cache, 0, sizeof(cache)); | |
1153 | cache = a->acache; | |
1150 | 1154 | UpdateAircraftCache(a); |
1151 | 1155 | |
1152 | 1156 | if (memcmp(&cache, &a->acache, sizeof(AircraftCache)) != 0) { |
1153 | DEBUG(desync, 2, "cache mismatch: vehicle %i, company %i, unit number %i\n", v->index, (int)v->owner, v->unitnumber); | |
1157 | DEBUG(desync, 2, "cache mismatch: vehicle %i, company %i, unit number %i", v->index, (int)v->owner, v->unitnumber); | |
1154 | 1158 | } |
1155 | 1159 | } break; |
1156 | 1160 | |
1203 | 1207 | CallWindowTickEvent(); |
1204 | 1208 | NewsLoop(); |
1205 | 1209 | } else { |
1210 | if (_debug_desync_level > 2 && _date_fract == 0 && (_date & 0x1F) == 0) { | |
1211 | /* Save the desync savegame if needed. */ | |
1212 | char name[MAX_PATH]; | |
1213 | snprintf(name, lengthof(name), "dmp_cmds_%08x_%08x.sav", _settings_game.game_creation.generation_seed, _date); | |
1214 | SaveOrLoad(name, SL_SAVE, AUTOSAVE_DIR); | |
1215 | } | |
1216 | ||
1206 | 1217 | CheckCaches(); |
1207 | 1218 | |
1208 | 1219 | /* All these actions has to be done from OWNER_NONE |
0 | /* $Id: order_cmd.cpp 19223 2010-02-23 23:26:37Z rubidium $ */ | |
0 | /* $Id: order_cmd.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
10 | 10 | |
11 | 11 | #include "stdafx.h" |
12 | 12 | #include "debug.h" |
13 | #include "cmd_helper.h" | |
13 | 14 | #include "command_func.h" |
14 | 15 | #include "company_func.h" |
15 | 16 | #include "news_func.h" |
467 | 468 | Order new_order(p2); |
468 | 469 | |
469 | 470 | Vehicle *v = Vehicle::GetIfValid(veh); |
470 | if (v == NULL || !CheckOwnership(v->owner)) return CMD_ERROR; | |
471 | if (v == NULL || !v->IsPrimaryVehicle() || !CheckOwnership(v->owner)) return CMD_ERROR; | |
471 | 472 | |
472 | 473 | /* Check if the inserted order is to the correct destination (owner, type), |
473 | 474 | * and has the correct flags if any */ |
546 | 547 | default: return CMD_ERROR; |
547 | 548 | } |
548 | 549 | } |
549 | } else { | |
550 | if (!IsCompanyBuildableVehicleType(v)) return CMD_ERROR; | |
551 | 550 | } |
552 | 551 | |
553 | 552 | if (new_order.GetNonStopType() != ONSF_STOP_EVERYWHERE && v->type != VEH_TRAIN && v->type != VEH_ROAD) return CMD_ERROR; |
728 | 727 | |
729 | 728 | Vehicle *v = Vehicle::GetIfValid(veh_id); |
730 | 729 | |
731 | if (v == NULL || !CheckOwnership(v->owner)) return CMD_ERROR; | |
730 | if (v == NULL || !v->IsPrimaryVehicle() || !CheckOwnership(v->owner)) return CMD_ERROR; | |
732 | 731 | |
733 | 732 | /* If we did not select an order, we maybe want to de-clone the orders */ |
734 | 733 | if (sel_ord >= v->GetNumOrders()) |
794 | 793 | |
795 | 794 | Vehicle *v = Vehicle::GetIfValid(veh_id); |
796 | 795 | |
797 | if (v == NULL || !CheckOwnership(v->owner) || sel_ord == v->cur_order_index || | |
798 | sel_ord >= v->GetNumOrders() || v->GetNumOrders() < 2) { | |
799 | return CMD_ERROR; | |
800 | } | |
796 | if (v == NULL || !v->IsPrimaryVehicle() || !CheckOwnership(v->owner) || sel_ord == v->cur_order_index || sel_ord >= v->GetNumOrders() || v->GetNumOrders() < 2) return CMD_ERROR; | |
801 | 797 | |
802 | 798 | if (flags & DC_EXEC) { |
803 | 799 | v->cur_order_index = sel_ord; |
834 | 830 | VehicleOrderID target_order = GB(p2, 16, 16); |
835 | 831 | |
836 | 832 | Vehicle *v = Vehicle::GetIfValid(veh); |
837 | if (v == NULL || !CheckOwnership(v->owner)) return CMD_ERROR; | |
833 | if (v == NULL || !v->IsPrimaryVehicle() || !CheckOwnership(v->owner)) return CMD_ERROR; | |
838 | 834 | |
839 | 835 | /* Don't make senseless movements */ |
840 | 836 | if (moving_order >= v->GetNumOrders() || target_order >= v->GetNumOrders() || |
909 | 905 | { |
910 | 906 | VehicleOrderID sel_ord = GB(p1, 16, 16); // XXX - automatically truncated to 8 bits. |
911 | 907 | VehicleID veh = GB(p1, 0, 16); |
912 | ModifyOrderFlags mof = (ModifyOrderFlags)GB(p2, 0, 4); | |
913 | uint16 data = GB(p2, 4, 11); | |
908 | ModifyOrderFlags mof = Extract<ModifyOrderFlags, 0, 4>(p2); | |
909 | uint16 data = GB(p2, 4, 11); | |
914 | 910 | |
915 | 911 | if (mof >= MOF_END) return CMD_ERROR; |
916 | 912 | |
917 | 913 | Vehicle *v = Vehicle::GetIfValid(veh); |
918 | if (v == NULL || !CheckOwnership(v->owner)) return CMD_ERROR; | |
914 | if (v == NULL || !v->IsPrimaryVehicle() || !CheckOwnership(v->owner)) return CMD_ERROR; | |
919 | 915 | |
920 | 916 | /* Is it a valid order? */ |
921 | 917 | if (sel_ord >= v->GetNumOrders()) return CMD_ERROR; |
1138 | 1134 | VehicleID veh_dst = GB(p1, 0, 16); |
1139 | 1135 | |
1140 | 1136 | Vehicle *dst = Vehicle::GetIfValid(veh_dst); |
1141 | ||
1142 | if (dst == NULL || !CheckOwnership(dst->owner)) return CMD_ERROR; | |
1137 | if (dst == NULL || !dst->IsPrimaryVehicle() || !CheckOwnership(dst->owner)) return CMD_ERROR; | |
1143 | 1138 | |
1144 | 1139 | switch (p2) { |
1145 | 1140 | case CO_SHARE: { |
1146 | 1141 | Vehicle *src = Vehicle::GetIfValid(veh_src); |
1147 | 1142 | |
1148 | 1143 | /* Sanity checks */ |
1149 | if (src == NULL || !CheckOwnership(src->owner) || dst->type != src->type || dst == src) { | |
1150 | return CMD_ERROR; | |
1151 | } | |
1144 | if (src == NULL || !src->IsPrimaryVehicle() || !CheckOwnership(src->owner) || dst->type != src->type || dst == src) return CMD_ERROR; | |
1152 | 1145 | |
1153 | 1146 | /* Trucks can't share orders with busses (and visa versa) */ |
1154 | 1147 | if (src->type == VEH_ROAD && RoadVehicle::From(src)->IsBus() != RoadVehicle::From(dst)->IsBus()) { |
1187 | 1180 | Vehicle *src = Vehicle::GetIfValid(veh_src); |
1188 | 1181 | |
1189 | 1182 | /* Sanity checks */ |
1190 | if (src == NULL || !CheckOwnership(src->owner) || dst->type != src->type || dst == src) { | |
1191 | return CMD_ERROR; | |
1192 | } | |
1183 | if (src == NULL || !src->IsPrimaryVehicle() || !CheckOwnership(src->owner) || dst->type != src->type || dst == src) return CMD_ERROR; | |
1193 | 1184 | |
1194 | 1185 | /* Trucks can't copy all the orders from busses (and visa versa), |
1195 | 1186 | * and neither can helicopters and aircarft. */ |
1262 | 1253 | CargoID cargo = GB(p2, 0, 8); |
1263 | 1254 | byte subtype = GB(p2, 8, 8); |
1264 | 1255 | |
1256 | if (cargo >= NUM_CARGO) return CMD_ERROR; | |
1257 | ||
1265 | 1258 | const Vehicle *v = Vehicle::GetIfValid(veh); |
1266 | if (v == NULL || !CheckOwnership(v->owner)) return CMD_ERROR; | |
1259 | if (v == NULL || !v->IsPrimaryVehicle() || !CheckOwnership(v->owner)) return CMD_ERROR; | |
1267 | 1260 | |
1268 | 1261 | Order *order = v->GetOrder(order_number); |
1269 | 1262 | if (order == NULL) return CMD_ERROR; |
1415 | 1408 | |
1416 | 1409 | Vehicle *v = Vehicle::GetIfValid(p1); |
1417 | 1410 | /* Check the vehicle type and ownership, and if the service interval and order are in range */ |
1418 | if (v == NULL || !CheckOwnership(v->owner)) return CMD_ERROR; | |
1411 | if (v == NULL || !v->IsPrimaryVehicle() || !CheckOwnership(v->owner)) return CMD_ERROR; | |
1412 | ||
1419 | 1413 | if (serv_int != GetServiceIntervalClamped(serv_int, v->owner) || cur_ord >= v->GetNumOrders()) return CMD_ERROR; |
1420 | 1414 | |
1421 | 1415 | if (flags & DC_EXEC) { |
0 | /* $Id: order_gui.cpp 19393 2010-03-12 21:12:35Z rubidium $ */ | |
0 | /* $Id: order_gui.cpp 19585 2010-04-08 15:40:46Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
620 | 620 | */ |
621 | 621 | void OrderClick_Nonstop(int non_stop) |
622 | 622 | { |
623 | if (this->vehicle->type != VEH_TRAIN && this->vehicle->type != VEH_ROAD) return; | |
624 | ||
623 | 625 | VehicleOrderID sel_ord = this->OrderGetSel(); |
624 | 626 | const Order *order = this->vehicle->GetOrder(sel_ord); |
625 | 627 | |
1276 | 1278 | virtual void OnTimeout() |
1277 | 1279 | { |
1278 | 1280 | static const int raise_widgets[] = { |
1279 | ORDER_WIDGET_SKIP, ORDER_WIDGET_DELETE, ORDER_WIDGET_REFIT, ORDER_WIDGET_SHARED_ORDER_LIST, WIDGET_LIST_END, | |
1281 | ORDER_WIDGET_TIMETABLE_VIEW, ORDER_WIDGET_SKIP, ORDER_WIDGET_DELETE, ORDER_WIDGET_REFIT, ORDER_WIDGET_SHARED_ORDER_LIST, WIDGET_LIST_END, | |
1280 | 1282 | }; |
1281 | 1283 | |
1282 | 1284 | /* Unclick all buttons in raise_widgets[]. */ |
0 | /* $Id: order_type.h 18518 2009-12-16 21:31:21Z yexo $ */ | |
0 | /* $Id: order_type.h 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
148 | 148 | MOF_COND_DESTINATION,///< Change the destination of a conditional order. |
149 | 149 | MOF_END |
150 | 150 | }; |
151 | template <> struct EnumPropsT<ModifyOrderFlags> : MakeEnumPropsT<ModifyOrderFlags, byte, MOF_NON_STOP, MOF_END, MOF_END, 4> {}; | |
151 | 152 | |
152 | 153 | /** |
153 | 154 | * Depot action to switch to when doing a MOF_DEPOT_ACTION. |
0 | 0 | //Microsoft Developer Studio generated resource script. |
1 | // $Id: ottdres.rc.in 19530 2010-03-31 22:12:30Z rubidium $ | |
1 | // $Id: ottdres.rc.in 19742 2010-04-30 21:24:33Z rubidium $ | |
2 | 2 | // |
3 | 3 | // This file is part of OpenTTD. |
4 | 4 | // OpenTTD 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, version 2. |
78 | 78 | // |
79 | 79 | |
80 | 80 | VS_VERSION_INFO VERSIONINFO |
81 | FILEVERSION 1,0,0,19530 | |
82 | PRODUCTVERSION 1,0,0,19530 | |
81 | FILEVERSION 1,0,1,19742 | |
82 | PRODUCTVERSION 1,0,1,19742 | |
83 | 83 | FILEFLAGSMASK 0x3fL |
84 | 84 | #ifdef _DEBUG |
85 | 85 | FILEFLAGS 0x1L |
97 | 97 | VALUE "Comments", "This program is licensed under the GNU General Public License version 2.\0" |
98 | 98 | VALUE "CompanyName", "OpenTTD Development Team\0" |
99 | 99 | VALUE "FileDescription", "OpenTTD\0" |
100 | VALUE "FileVersion", "1.0.0\0" | |
100 | VALUE "FileVersion", "1.0.1\0" | |
101 | 101 | VALUE "InternalName", "openttd\0" |
102 | 102 | VALUE "LegalCopyright", "Copyright \xA9 OpenTTD Developers 2002-2010. All Rights Reserved.\0" |
103 | 103 | VALUE "LegalTrademarks", "\0" |
104 | 104 | VALUE "OriginalFilename", "openttd.exe\0" |
105 | 105 | VALUE "PrivateBuild", "\0" |
106 | 106 | VALUE "ProductName", "OpenTTD\0" |
107 | VALUE "ProductVersion", "1.0.0\0" | |
107 | VALUE "ProductVersion", "1.0.1\0" | |
108 | 108 | VALUE "SpecialBuild", "-\0" |
109 | 109 | END |
110 | 110 | END |
0 | /* $Id: rail.cpp 17693 2009-10-04 17:16:41Z rubidium $ */ | |
0 | /* $Id: rail.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
180 | 180 | |
181 | 181 | bool ValParamRailtype(const RailType rail) |
182 | 182 | { |
183 | return HasRailtypeAvail(_current_company, rail); | |
183 | return rail < RAILTYPE_END && HasRailtypeAvail(_current_company, rail); | |
184 | 184 | } |
185 | 185 | |
186 | 186 | RailType GetBestRailtype(const CompanyID company) |
0 | /* $Id: rail_cmd.cpp 19439 2010-03-16 20:54:26Z rubidium $ */ | |
0 | /* $Id: rail_cmd.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
368 | 368 | */ |
369 | 369 | CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
370 | 370 | { |
371 | RailType railtype = (RailType)p1; | |
372 | Track track = (Track)p2; | |
371 | RailType railtype = Extract<RailType, 0, 4>(p1); | |
372 | Track track = Extract<Track, 0, 3>(p2); | |
373 | 373 | CommandCost cost(EXPENSES_CONSTRUCTION); |
374 | 374 | |
375 | 375 | if (!ValParamRailtype(railtype) || !ValParamTrackOrientation(track)) return CMD_ERROR; |
508 | 508 | */ |
509 | 509 | CommandCost CmdRemoveSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
510 | 510 | { |
511 | Track track = (Track)p2; | |
511 | Track track = Extract<Track, 0, 3>(p2); | |
512 | 512 | CommandCost cost(EXPENSES_CONSTRUCTION); |
513 | 513 | bool crossing = false; |
514 | 514 | |
515 | if (!ValParamTrackOrientation((Track)p2)) return CMD_ERROR; | |
515 | if (!ValParamTrackOrientation(track)) return CMD_ERROR; | |
516 | 516 | TrackBits trackbit = TrackToTrackBits(track); |
517 | 517 | |
518 | 518 | /* Need to read tile owner now because it may change when the rail is removed |
742 | 742 | static CommandCost CmdRailTrackHelper(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
743 | 743 | { |
744 | 744 | CommandCost ret, total_cost(EXPENSES_CONSTRUCTION); |
745 | Track track = (Track)GB(p2, 4, 3); | |
745 | Track track = Extract<Track, 4, 3>(p2); | |
746 | 746 | bool remove = HasBit(p2, 7); |
747 | RailType railtype = (RailType)GB(p2, 0, 4); | |
747 | RailType railtype = Extract<RailType, 0, 4>(p2); | |
748 | 748 | |
749 | 749 | if (!ValParamRailtype(railtype) || !ValParamTrackOrientation(track)) return CMD_ERROR; |
750 | 750 | if (p1 >= MapSize()) return CMD_ERROR; |
829 | 829 | CommandCost CmdBuildTrainDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
830 | 830 | { |
831 | 831 | /* check railtype and valid direction for depot (0 through 3), 4 in total */ |
832 | if (!ValParamRailtype((RailType)p1)) return CMD_ERROR; | |
832 | RailType railtype = Extract<RailType, 0, 4>(p1); | |
833 | if (!ValParamRailtype(railtype)) return CMD_ERROR; | |
833 | 834 | |
834 | 835 | Slope tileh = GetTileSlope(tile, NULL); |
835 | 836 | |
836 | DiagDirection dir = Extract<DiagDirection, 0>(p2); | |
837 | DiagDirection dir = Extract<DiagDirection, 0, 2>(p2); | |
837 | 838 | |
838 | 839 | /* Prohibit construction if |
839 | 840 | * The tile is non-flat AND |
861 | 862 | Depot *d = new Depot(tile); |
862 | 863 | d->town_index = ClosestTownFromTile(tile, UINT_MAX)->index; |
863 | 864 | |
864 | MakeRailDepot(tile, _current_company, d->index, dir, (RailType)p1); | |
865 | MakeRailDepot(tile, _current_company, d->index, dir, railtype); | |
865 | 866 | MarkTileDirtyByTile(tile); |
866 | 867 | |
867 | 868 | AddSideToSignalBuffer(tile, INVALID_DIAGDIR, _current_company); |
894 | 895 | */ |
895 | 896 | CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
896 | 897 | { |
897 | Track track = (Track)GB(p1, 0, 3); | |
898 | Track track = Extract<Track, 0, 3>(p1); | |
898 | 899 | bool ctrl_pressed = HasBit(p1, 3); // was the CTRL button pressed |
899 | 900 | SignalVariant sigvar = (ctrl_pressed ^ HasBit(p1, 4)) ? SIG_SEMAPHORE : SIG_ELECTRIC; // the signal variant of the new signal |
900 | SignalType sigtype = (SignalType)GB(p1, 5, 3); // the signal type of the new signal | |
901 | SignalType sigtype = Extract<SignalType, 5, 3>(p1); // the signal type of the new signal | |
901 | 902 | bool convert_signal = HasBit(p1, 8); // convert button pressed |
902 | SignalType cycle_start = (SignalType)GB(p1, 9, 3); | |
903 | SignalType cycle_stop = (SignalType)GB(p1, 12, 3); | |
903 | SignalType cycle_start = Extract<SignalType, 9, 3>(p1); | |
904 | SignalType cycle_stop = Extract<SignalType, 12, 3>(p1); | |
904 | 905 | uint num_dir_cycle = GB(p1, 15, 2); |
905 | 906 | |
906 | 907 | if (sigtype > SIGTYPE_LAST) return CMD_ERROR; |
908 | if (cycle_start > cycle_stop || cycle_stop > SIGTYPE_LAST) return CMD_ERROR; | |
907 | 909 | |
908 | 910 | /* You can only build signals on plain rail tiles, and the selected track must exist */ |
909 | 911 | if (!ValParamTrackOrientation(track) || !IsPlainRailTile(tile) || |
1121 | 1123 | bool err = true; |
1122 | 1124 | TileIndex start_tile = tile; |
1123 | 1125 | |
1124 | Track track = (Track)GB(p2, 0, 3); | |
1126 | Track track = Extract<Track, 0, 3>(p2); | |
1125 | 1127 | bool mode = HasBit(p2, 3); |
1126 | 1128 | bool semaphores = HasBit(p2, 4); |
1127 | 1129 | bool remove = HasBit(p2, 5); |
1128 | 1130 | bool autofill = HasBit(p2, 6); |
1129 | Trackdir trackdir = TrackToTrackdir(track); | |
1130 | 1131 | byte signal_density = GB(p2, 24, 8); |
1131 | 1132 | |
1132 | if (p1 >= MapSize()) return CMD_ERROR; | |
1133 | if (p1 >= MapSize() || !ValParamTrackOrientation(track)) return CMD_ERROR; | |
1133 | 1134 | TileIndex end_tile = p1; |
1134 | 1135 | if (signal_density == 0 || signal_density > 20) return CMD_ERROR; |
1135 | 1136 | |
1139 | 1140 | * since the original amount will be too dense (shorter tracks) */ |
1140 | 1141 | signal_density *= 2; |
1141 | 1142 | |
1143 | Trackdir trackdir = TrackToTrackdir(track); | |
1142 | 1144 | if (ValidateAutoDrag(&trackdir, tile, end_tile).Failed()) return CMD_ERROR; |
1143 | 1145 | |
1144 | 1146 | track = TrackdirToTrack(trackdir); // trackdir might have changed, keep track in sync |
1260 | 1262 | */ |
1261 | 1263 | CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
1262 | 1264 | { |
1263 | Track track = (Track)GB(p1, 0, 3); | |
1265 | Track track = Extract<Track, 0, 3>(p1); | |
1264 | 1266 | |
1265 | 1267 | if (!ValParamTrackOrientation(track) || |
1266 | 1268 | !IsPlainRailTile(tile) || |
1360 | 1362 | CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
1361 | 1363 | { |
1362 | 1364 | CommandCost cost(EXPENSES_CONSTRUCTION); |
1363 | RailType totype = (RailType)p2; | |
1365 | RailType totype = Extract<RailType, 0, 4>(p2); | |
1364 | 1366 | |
1365 | 1367 | if (!ValParamRailtype(totype)) return CMD_ERROR; |
1366 | 1368 | if (p1 >= MapSize()) return CMD_ERROR; |
2522 | 2524 | |
2523 | 2525 | static void GetTileDesc_Track(TileIndex tile, TileDesc *td) |
2524 | 2526 | { |
2527 | const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(tile)); | |
2528 | td->rail_speed = rti->max_speed; | |
2525 | 2529 | td->owner[0] = GetTileOwner(tile); |
2526 | 2530 | switch (GetRailTileType(tile)) { |
2527 | 2531 | case RAIL_TILE_NORMAL: |
2595 | 2599 | |
2596 | 2600 | case RAIL_TILE_DEPOT: |
2597 | 2601 | td->str = STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT; |
2602 | if (_settings_game.vehicle.train_acceleration_model != AM_ORIGINAL) { | |
2603 | if (td->rail_speed > 0) { | |
2604 | td->rail_speed = min(td->rail_speed, 61); | |
2605 | } else { | |
2606 | td->rail_speed = 61; | |
2607 | } | |
2608 | } | |
2598 | 2609 | break; |
2599 | 2610 | |
2600 | 2611 | default: |
0 | /* $Id: rail_gui.cpp 19439 2010-03-16 20:54:26Z rubidium $ */ | |
0 | /* $Id: rail_gui.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
269 | 269 | |
270 | 270 | static void PlaceRail_Tunnel(TileIndex tile) |
271 | 271 | { |
272 | DoCommandP(tile, _cur_railtype, 0, CMD_BUILD_TUNNEL | CMD_MSG(STR_ERROR_CAN_T_BUILD_TUNNEL_HERE), CcBuildRailTunnel); | |
272 | DoCommandP(tile, _cur_railtype | (TRANSPORT_RAIL << 8), 0, CMD_BUILD_TUNNEL | CMD_MSG(STR_ERROR_CAN_T_BUILD_TUNNEL_HERE), CcBuildRailTunnel); | |
273 | 273 | } |
274 | 274 | |
275 | 275 | static void PlaceRail_ConvertRail(TileIndex tile) |
813 | 813 | |
814 | 814 | virtual void OnPlacePresize(Point pt, TileIndex tile) |
815 | 815 | { |
816 | DoCommand(tile, _cur_railtype, 0, DC_AUTO, CMD_BUILD_TUNNEL); | |
816 | DoCommand(tile, _cur_railtype | (TRANSPORT_RAIL << 8), 0, DC_AUTO, CMD_BUILD_TUNNEL); | |
817 | 817 | VpSetPresizeRange(tile, _build_tunnel_endtile == 0 ? tile : _build_tunnel_endtile); |
818 | 818 | } |
819 | 819 |
0 | /* $Id: rail_type.h 18970 2010-01-30 21:59:22Z peter1138 $ */ | |
0 | /* $Id: rail_type.h 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
14 | 14 | #include "core/enum_type.hpp" |
15 | 15 | |
16 | 16 | typedef uint32 RailTypeLabel; |
17 | ||
18 | static const RailTypeLabel RAILTYPE_RAIL_LABEL = 'RAIL'; | |
19 | static const RailTypeLabel RAILTYPE_ELECTRIC_LABEL = 'ELRL'; | |
20 | static const RailTypeLabel RAILTYPE_MONO_LABEL = 'MONO'; | |
21 | static const RailTypeLabel RAILTYPE_MAGLEV_LABEL = 'MGLV'; | |
17 | 22 | |
18 | 23 | /** |
19 | 24 | * Enumeration for all possible railtypes. |
37 | 42 | /** Allow incrementing of Track variables */ |
38 | 43 | DECLARE_POSTFIX_INCREMENT(RailType); |
39 | 44 | /** Define basic enum properties */ |
40 | template <> struct EnumPropsT<RailType> : MakeEnumPropsT<RailType, byte, RAILTYPE_BEGIN, RAILTYPE_END, INVALID_RAILTYPE> {}; | |
45 | template <> struct EnumPropsT<RailType> : MakeEnumPropsT<RailType, byte, RAILTYPE_BEGIN, RAILTYPE_END, INVALID_RAILTYPE, 4> {}; | |
41 | 46 | typedef TinyEnumT<RailType> RailTypeByte; |
42 | 47 | |
43 | 48 | /** |
0 | /* $Id: rev.cpp.in 19530 2010-03-31 22:12:30Z rubidium $ */ | |
0 | /* $Id: rev.cpp.in 19742 2010-04-30 21:24:33Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
26 | 26 | * norev000 is for non-releases that are made on systems without |
27 | 27 | * subversion or sources that are not a checkout of subversion. |
28 | 28 | */ |
29 | const char _openttd_revision[] = "1.0.0"; | |
29 | const char _openttd_revision[] = "1.0.1"; | |
30 | 30 | |
31 | 31 | /** |
32 | 32 | * The text version of OpenTTD's build date. |
59 | 59 | * final release will always have a lower version number than the released |
60 | 60 | * version, thus making comparisions on specific revisions easy. |
61 | 61 | */ |
62 | const uint32 _openttd_newgrf_version = 1 << 28 | 0 << 24 | 0 << 20 | 1 << 19 | (19530 & ((1 << 19) - 1)); | |
62 | const uint32 _openttd_newgrf_version = 1 << 28 | 0 << 24 | 1 << 20 | 1 << 19 | (19742 & ((1 << 19) - 1)); | |
63 | 63 | |
64 | 64 | #ifdef __MORPHOS__ |
65 | 65 | /** |
66 | 66 | * Variable used by MorphOS to show the version. |
67 | 67 | */ |
68 | extern const char morphos_versions_tag[] = "$VER: OpenTTD 1.0.0 (!!DATE!!) OpenTTD Team [MorphOS, PowerPC]"; | |
68 | extern const char morphos_versions_tag[] = "$VER: OpenTTD 1.0.1 (!!DATE!!) OpenTTD Team [MorphOS, PowerPC]"; | |
69 | 69 | #endif |
0 | /* $Id: road_cmd.cpp 19439 2010-03-16 20:54:26Z rubidium $ */ | |
0 | /* $Id: road_cmd.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
454 | 454 | p2 = (town != NULL) ? town->index : (TownID)INVALID_TOWN; |
455 | 455 | } |
456 | 456 | |
457 | RoadBits pieces = Extract<RoadBits, 0>(p1); | |
457 | RoadBits pieces = Extract<RoadBits, 0, 4>(p1); | |
458 | 458 | |
459 | 459 | /* do not allow building 'zero' road bits, code wouldn't handle it */ |
460 | 460 | if (pieces == ROAD_NONE) return CMD_ERROR; |
461 | 461 | |
462 | RoadType rt = (RoadType)GB(p1, 4, 2); | |
462 | RoadType rt = Extract<RoadType, 4, 2>(p1); | |
463 | 463 | if (!IsValidRoadType(rt) || !ValParamRoadType(rt)) return CMD_ERROR; |
464 | 464 | |
465 | DisallowedRoadDirections toggle_drd = (DisallowedRoadDirections)GB(p1, 6, 2); | |
465 | DisallowedRoadDirections toggle_drd = Extract<DisallowedRoadDirections, 6, 2>(p1); | |
466 | 466 | |
467 | 467 | Slope tileh = GetTileSlope(tile, NULL); |
468 | 468 | |
713 | 713 | if (p1 >= MapSize()) return CMD_ERROR; |
714 | 714 | |
715 | 715 | TileIndex end_tile = p1; |
716 | RoadType rt = (RoadType)GB(p2, 3, 2); | |
716 | RoadType rt = Extract<RoadType, 3, 2>(p2); | |
717 | 717 | if (!IsValidRoadType(rt) || !ValParamRoadType(rt)) return CMD_ERROR; |
718 | 718 | |
719 | Axis axis = Extract<Axis, 2>(p2); | |
719 | Axis axis = Extract<Axis, 2, 1>(p2); | |
720 | 720 | /* Only drag in X or Y direction dictated by the direction variable */ |
721 | 721 | if (axis == AXIS_X && TileY(start_tile) != TileY(end_tile)) return CMD_ERROR; // x-axis |
722 | 722 | if (axis == AXIS_Y && TileX(start_tile) != TileX(end_tile)) return CMD_ERROR; // y-axis |
800 | 800 | if (p1 >= MapSize()) return CMD_ERROR; |
801 | 801 | |
802 | 802 | TileIndex end_tile = p1; |
803 | RoadType rt = (RoadType)GB(p2, 3, 2); | |
803 | RoadType rt = Extract<RoadType, 3, 2>(p2); | |
804 | 804 | if (!IsValidRoadType(rt)) return CMD_ERROR; |
805 | 805 | |
806 | Axis axis = Extract<Axis, 2>(p2); | |
806 | Axis axis = Extract<Axis, 2, 1>(p2); | |
807 | 807 | /* Only drag in X or Y direction dictated by the direction variable */ |
808 | 808 | if (axis == AXIS_X && TileY(start_tile) != TileY(end_tile)) return CMD_ERROR; // x-axis |
809 | 809 | if (axis == AXIS_Y && TileX(start_tile) != TileX(end_tile)) return CMD_ERROR; // y-axis |
863 | 863 | */ |
864 | 864 | CommandCost CmdBuildRoadDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
865 | 865 | { |
866 | DiagDirection dir = Extract<DiagDirection, 0>(p1); | |
867 | RoadType rt = (RoadType)GB(p1, 2, 2); | |
866 | DiagDirection dir = Extract<DiagDirection, 0, 2>(p1); | |
867 | RoadType rt = Extract<RoadType, 2, 2>(p1); | |
868 | 868 | |
869 | 869 | if (!IsValidRoadType(rt) || !ValParamRoadType(rt)) return CMD_ERROR; |
870 | 870 | |
1499 | 1499 | rail_owner = GetTileOwner(tile); |
1500 | 1500 | if (HasBit(rts, ROADTYPE_ROAD)) road_owner = GetRoadOwner(tile, ROADTYPE_ROAD); |
1501 | 1501 | if (HasBit(rts, ROADTYPE_TRAM)) tram_owner = GetRoadOwner(tile, ROADTYPE_TRAM); |
1502 | ||
1503 | const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(tile)); | |
1504 | td->rail_speed = rti->max_speed; | |
1505 | ||
1502 | 1506 | break; |
1503 | 1507 | } |
1504 | 1508 |
0 | /* $Id: road_func.h 18809 2010-01-15 16:41:15Z rubidium $ */ | |
0 | /* $Id: road_func.h 19552 2010-04-03 19:57:23Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
25 | 25 | static inline bool IsValidRoadType(RoadType rt) |
26 | 26 | { |
27 | 27 | return rt == ROADTYPE_ROAD || rt == ROADTYPE_TRAM; |
28 | } | |
29 | ||
30 | /** | |
31 | * Are the given bits pointing to valid roadtypes? | |
32 | * @param rts the roadtypes to check for validness | |
33 | * @return true if and only if valid | |
34 | */ | |
35 | static inline bool AreValidRoadTypes(RoadTypes rts) | |
36 | { | |
37 | return HasBit(rts, ROADTYPE_ROAD) || HasBit(rts, ROADTYPE_TRAM); | |
38 | 28 | } |
39 | 29 | |
40 | 30 | /** |
0 | /* $Id: road_gui.cpp 18966 2010-01-30 18:34:48Z frosch $ */ | |
0 | /* $Id: road_gui.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
173 | 173 | |
174 | 174 | static void PlaceRoad_Tunnel(TileIndex tile) |
175 | 175 | { |
176 | DoCommandP(tile, 0x200 | RoadTypeToRoadTypes(_cur_roadtype), 0, CMD_BUILD_TUNNEL | CMD_MSG(STR_ERROR_CAN_T_BUILD_TUNNEL_HERE), CcBuildRoadTunnel); | |
176 | DoCommandP(tile, RoadTypeToRoadTypes(_cur_roadtype) | (TRANSPORT_ROAD << 8), 0, CMD_BUILD_TUNNEL | CMD_MSG(STR_ERROR_CAN_T_BUILD_TUNNEL_HERE), CcBuildRoadTunnel); | |
177 | 177 | } |
178 | 178 | |
179 | 179 | static void BuildRoadOutsideStation(TileIndex tile, DiagDirection direction) |
612 | 612 | |
613 | 613 | virtual void OnPlacePresize(Point pt, TileIndex tile) |
614 | 614 | { |
615 | DoCommand(tile, 0x200 | RoadTypeToRoadTypes(_cur_roadtype), 0, DC_AUTO, CMD_BUILD_TUNNEL); | |
615 | DoCommand(tile, RoadTypeToRoadTypes(_cur_roadtype) | (TRANSPORT_ROAD << 8), 0, DC_AUTO, CMD_BUILD_TUNNEL); | |
616 | 616 | VpSetPresizeRange(tile, _build_tunnel_endtile == 0 ? tile : _build_tunnel_endtile); |
617 | 617 | } |
618 | 618 |
0 | /* $Id: road_map.h 18809 2010-01-15 16:41:15Z rubidium $ */ | |
0 | /* $Id: road_map.h 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
167 | 167 | DRD_END |
168 | 168 | }; |
169 | 169 | DECLARE_ENUM_AS_BIT_SET(DisallowedRoadDirections); |
170 | template <> struct EnumPropsT<DisallowedRoadDirections> : MakeEnumPropsT<DisallowedRoadDirections, byte, DRD_NONE, DRD_END, DRD_END, 2> {}; | |
170 | 171 | |
171 | 172 | /** |
172 | 173 | * Gets the disallowed directions |
0 | /* $Id: road_type.h 17248 2009-08-21 20:21:05Z rubidium $ */ | |
0 | /* $Id: road_type.h 19690 2010-04-21 19:20:28Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
26 | 26 | INVALID_ROADTYPE = 0xFF ///< flag for invalid roadtype |
27 | 27 | }; |
28 | 28 | DECLARE_POSTFIX_INCREMENT(RoadType); |
29 | template <> struct EnumPropsT<RoadType> : MakeEnumPropsT<RoadType, byte, ROADTYPE_BEGIN, ROADTYPE_END, INVALID_ROADTYPE, 2> {}; | |
29 | 30 | |
30 | 31 | /** |
31 | 32 | * The different roadtypes we support, but then a bitmask of them |
40 | 41 | INVALID_ROADTYPES = 0xFF ///< Invalid roadtypes |
41 | 42 | }; |
42 | 43 | DECLARE_ENUM_AS_BIT_SET(RoadTypes); |
44 | template <> struct EnumPropsT<RoadTypes> : MakeEnumPropsT<RoadTypes, byte, ROADTYPES_NONE, ROADTYPES_END, INVALID_ROADTYPES, 2> {}; | |
43 | 45 | typedef SimpleTinyEnumT<RoadTypes, byte> RoadTypesByte; |
44 | 46 | |
45 | 47 | |
63 | 65 | ROAD_S = ROAD_SE | ROAD_SW, ///< Road at the two southern edges |
64 | 66 | ROAD_W = ROAD_NW | ROAD_SW, ///< Road at the two western edges |
65 | 67 | |
66 | ROAD_ALL = ROAD_X | ROAD_Y ///< Full 4-way crossing | |
68 | ROAD_ALL = ROAD_X | ROAD_Y, ///< Full 4-way crossing | |
69 | ||
70 | ROAD_END = ROAD_ALL + 1 ///< Out-of-range roadbits, used for iterations | |
67 | 71 | }; |
68 | 72 | DECLARE_ENUM_AS_BIT_SET(RoadBits); |
73 | template <> struct EnumPropsT<RoadBits> : MakeEnumPropsT<RoadBits, byte, ROAD_NONE, ROAD_END, ROAD_NONE, 4> {}; | |
69 | 74 | |
70 | 75 | #endif /* ROAD_TYPE_H */ |
0 | /* $Id: roadveh_cmd.cpp 19091 2010-02-10 21:28:26Z rubidium $ */ | |
0 | /* $Id: roadveh_cmd.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
199 | 199 | */ |
200 | 200 | CommandCost CmdBuildRoadVeh(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
201 | 201 | { |
202 | if (!IsEngineBuildable(p1, VEH_ROAD, _current_company)) return_cmd_error(STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE); | |
203 | ||
204 | const Engine *e = Engine::Get(p1); | |
202 | EngineID eid = GB(p1, 0, 16); | |
203 | if (!IsEngineBuildable(eid, VEH_ROAD, _current_company)) return_cmd_error(STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE); | |
204 | ||
205 | const Engine *e = Engine::Get(eid); | |
205 | 206 | /* Engines without valid cargo should not be available */ |
206 | 207 | if (e->GetDefaultCargoType() == CT_INVALID) return CMD_ERROR; |
207 | 208 | |
215 | 216 | |
216 | 217 | if (HasTileRoadType(tile, ROADTYPE_TRAM) != HasBit(e->info.misc_flags, EF_ROAD_TRAM)) return_cmd_error(STR_ERROR_DEPOT_WRONG_DEPOT_TYPE); |
217 | 218 | |
218 | uint num_vehicles = 1 + CountArticulatedParts(p1, false); | |
219 | uint num_vehicles = 1 + CountArticulatedParts(eid, false); | |
219 | 220 | |
220 | 221 | /* Allow for the front and the articulated parts */ |
221 | 222 | if (!Vehicle::CanAllocateItem(num_vehicles)) { |
253 | 254 | |
254 | 255 | v->last_station_visited = INVALID_STATION; |
255 | 256 | v->max_speed = rvi->max_speed; |
256 | v->engine_type = (EngineID)p1; | |
257 | v->engine_type = eid; | |
257 | 258 | v->rcache.first_engine = INVALID_ENGINE; // needs to be set before first callback |
258 | 259 | |
259 | 260 | v->reliability = e->reliability; |
296 | 297 | InvalidateAutoreplaceWindow(v->engine_type, v->group_id); // updates the replace Road window |
297 | 298 | } |
298 | 299 | |
299 | Company::Get(_current_company)->num_engines[p1]++; | |
300 | Company::Get(_current_company)->num_engines[eid]++; | |
300 | 301 | |
301 | 302 | CheckConsistencyOfArticulatedVehicle(v); |
302 | 303 | } |
1736 | 1737 | if (flags & DC_EXEC) { |
1737 | 1738 | RoadVehicle *front = v->First(); |
1738 | 1739 | RoadVehUpdateCache(front); |
1739 | SetWindowDirty(WC_VEHICLE_DETAILS, front->index); | |
1740 | InvalidateWindowData(WC_VEHICLE_DETAILS, front->index); | |
1740 | 1741 | SetWindowDirty(WC_VEHICLE_DEPOT, front->tile); |
1741 | 1742 | InvalidateWindowClassesData(WC_ROADVEH_LIST, 0); |
1742 | 1743 | } else { |
0 | /* $Id: saveload.cpp 19044 2010-02-06 17:26:21Z rubidium $ */ | |
0 | /* $Id: saveload.cpp 19646 2010-04-16 22:02:33Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
1881 | 1881 | /* General tactic is to first save the game to memory, then use an available writer |
1882 | 1882 | * to write it to file, either in threaded mode if possible, or single-threaded */ |
1883 | 1883 | if (mode == SL_SAVE) { // SAVE game |
1884 | DEBUG(desync, 1, "save: %s\n", filename); | |
1884 | DEBUG(desync, 1, "save: %08x; %02x; %s", _date, _date_fract, filename); | |
1885 | 1885 | |
1886 | 1886 | _sl.write_bytes = WriteMem; |
1887 | 1887 | _sl.excpt_uninit = UnInitMem; |
1905 | 1905 | } |
1906 | 1906 | } else { // LOAD game |
1907 | 1907 | assert(mode == SL_LOAD); |
1908 | DEBUG(desync, 1, "load: %s\n", filename); | |
1908 | DEBUG(desync, 1, "load: %s", filename); | |
1909 | 1909 | |
1910 | 1910 | /* Can't fseek to 0 as in tar files that is not correct */ |
1911 | 1911 | long pos = ftell(_sl.fh); |
0 | /* $Id: waypoint_sl.cpp 18809 2010-01-15 16:41:15Z rubidium $ */ | |
0 | /* $Id: waypoint_sl.cpp 19741 2010-04-30 21:01:21Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
69 | 69 | * waypoint struct. */ |
70 | 70 | if (CheckSavegameVersion(17)) { |
71 | 71 | for (OldWaypoint *wp = _old_waypoints.Begin(); wp != _old_waypoints.End(); wp++) { |
72 | if (wp->delete_ctr == 0 && HasBit(_m[wp->xy].m3, 4)) { | |
72 | if (wp->delete_ctr != 0) continue; // The waypoint was deleted | |
73 | ||
74 | /* Waypoint indices were not added to the map prior to this. */ | |
75 | _m[wp->xy].m2 = (StationID)wp->index; | |
76 | ||
77 | if (HasBit(_m[wp->xy].m3, 4)) { | |
73 | 78 | wp->spec = GetCustomStationSpec(STAT_CLASS_WAYP, _m[wp->xy].m4 + 1); |
74 | 79 | } |
75 | 80 | } |
0 | /* $Id: settings_gui.cpp 19081 2010-02-10 16:24:05Z rubidium $ */ | |
0 | /* $Id: settings_gui.cpp 19555 2010-04-03 20:19:26Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
1368 | 1368 | static SettingEntry _settings_economy_industries[] = { |
1369 | 1369 | SettingEntry("construction.raw_industry_construction"), |
1370 | 1370 | SettingEntry("economy.multiple_industry_per_town"), |
1371 | SettingEntry("economy.same_industry_close"), | |
1372 | 1371 | SettingEntry("game_creation.oil_refinery_limit"), |
1373 | 1372 | }; |
1374 | 1373 | /** Industries sub-page */ |
0 | /* $Id: settings_type.h 19082 2010-02-10 17:01:03Z smatz $ */ | |
0 | /* $Id: settings_type.h 19555 2010-04-03 20:19:26Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
337 | 337 | bool give_money; ///< allow giving other companies money |
338 | 338 | bool mod_road_rebuild; ///< roadworks remove unneccesary RoadBits |
339 | 339 | bool multiple_industry_per_town; ///< allow many industries of the same type per town |
340 | bool same_industry_close; ///< allow same type industries to be built close to each other | |
341 | 340 | uint8 town_growth_rate; ///< town growth rate |
342 | 341 | uint8 larger_towns; ///< the number of cities to build. These start off larger and grow twice as fast |
343 | 342 | uint8 initial_city_size; ///< multiplier for the initial size of the cities compared to towns |
0 | /* $Id: ship_cmd.cpp 19091 2010-02-10 21:28:26Z rubidium $ */ | |
0 | /* $Id: ship_cmd.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
610 | 610 | */ |
611 | 611 | CommandCost CmdBuildShip(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
612 | 612 | { |
613 | EngineID eid = GB(p1, 0, 16); | |
613 | 614 | UnitID unit_num; |
614 | 615 | |
615 | if (!IsEngineBuildable(p1, VEH_SHIP, _current_company)) return_cmd_error(STR_ERROR_SHIP_NOT_AVAILABLE); | |
616 | ||
617 | const Engine *e = Engine::Get(p1); | |
616 | if (!IsEngineBuildable(eid, VEH_SHIP, _current_company)) return_cmd_error(STR_ERROR_SHIP_NOT_AVAILABLE); | |
617 | ||
618 | const Engine *e = Engine::Get(eid); | |
618 | 619 | CommandCost value(EXPENSES_NEW_VEHICLES, e->GetCost()); |
619 | 620 | |
620 | 621 | /* Engines without valid cargo should not be available */ |
659 | 660 | |
660 | 661 | v->last_station_visited = INVALID_STATION; |
661 | 662 | v->max_speed = svi->max_speed; |
662 | v->engine_type = p1; | |
663 | v->engine_type = eid; | |
663 | 664 | |
664 | 665 | v->reliability = e->reliability; |
665 | 666 | v->reliability_spd_dec = e->reliability_spd_dec; |
691 | 692 | InvalidateAutoreplaceWindow(v->engine_type, v->group_id); // updates the replace Ship window |
692 | 693 | } |
693 | 694 | |
694 | Company::Get(_current_company)->num_engines[p1]++; | |
695 | Company::Get(_current_company)->num_engines[eid]++; | |
695 | 696 | } |
696 | 697 | |
697 | 698 | return value; |
0 | /* $Id: signal_type.h 17248 2009-08-21 20:21:05Z rubidium $ */ | |
0 | /* $Id: signal_type.h 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
26 | 26 | SIGTYPE_COMBO = 3, ///< presignal inter-block |
27 | 27 | SIGTYPE_PBS = 4, ///< normal pbs signal |
28 | 28 | SIGTYPE_PBS_ONEWAY = 5, ///< no-entry signal |
29 | ||
30 | SIGTYPE_END, | |
29 | 31 | SIGTYPE_LAST = SIGTYPE_PBS_ONEWAY, |
30 | 32 | SIGTYPE_LAST_NOPBS = SIGTYPE_COMBO |
31 | 33 | }; |
34 | template <> struct EnumPropsT<SignalType> : MakeEnumPropsT<SignalType, byte, SIGTYPE_NORMAL, SIGTYPE_END, SIGTYPE_END, 3> {}; | |
32 | 35 | |
33 | 36 | |
34 | 37 | #endif /* SIGNAL_TYPE_H */ |
0 | /* $Id: smallmap_gui.cpp 19376 2010-03-08 22:19:39Z rubidium $ */ | |
0 | /* $Id: smallmap_gui.cpp 19552 2010-04-03 19:57:23Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
391 | 391 | if (_legend_from_industries[_industry_to_list_pos[Industry::GetByTile(tile)->type]].show_on_map) { |
392 | 392 | return GetIndustrySpec(Industry::GetByTile(tile)->type)->map_colour * 0x01010101; |
393 | 393 | } else { |
394 | /* Otherwise, return the colour of the clear tiles, which will make it disappear */ | |
395 | t = MP_CLEAR; | |
394 | /* Otherwise, return the colour which will make it disappear */ | |
395 | t = (GetWaterClass(tile) == WATER_CLASS_INVALID) ? MP_CLEAR : MP_WATER; | |
396 | 396 | } |
397 | 397 | } |
398 | 398 |
0 | /* $Id: station_cmd.cpp 19393 2010-03-12 21:12:35Z rubidium $ */ | |
0 | /* $Id: station_cmd.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
972 | 972 | CommandCost CmdBuildRailStation(TileIndex tile_org, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
973 | 973 | { |
974 | 974 | /* Unpack parameters */ |
975 | RailType rt = (RailType)GB(p1, 0, 4); | |
976 | Axis axis = Extract<Axis, 4>(p1); | |
975 | RailType rt = Extract<RailType, 0, 4>(p1); | |
976 | Axis axis = Extract<Axis, 4, 1>(p1); | |
977 | 977 | byte numtracks = GB(p1, 8, 8); |
978 | 978 | byte plat_len = GB(p1, 16, 8); |
979 | 979 | bool adjacent = HasBit(p1, 24); |
980 | 980 | |
981 | StationClassID spec_class = (StationClassID)GB(p2, 0, 8); | |
981 | StationClassID spec_class = Extract<StationClassID, 0, 8>(p2); | |
982 | 982 | byte spec_index = GB(p2, 8, 8); |
983 | 983 | StationID station_to_join = GB(p2, 16, 16); |
984 | 984 | |
987 | 987 | if (!ValParamRailtype(rt)) return CMD_ERROR; |
988 | 988 | |
989 | 989 | /* Check if the given station class is valid */ |
990 | if ((uint)spec_class >= GetNumStationClasses()) return CMD_ERROR; | |
990 | if ((uint)spec_class >= GetNumStationClasses() || spec_class == STAT_CLASS_WAYP) return CMD_ERROR; | |
991 | 991 | if (spec_index >= GetNumCustomStations(spec_class)) return CMD_ERROR; |
992 | 992 | if (plat_len == 0 || numtracks == 0) return CMD_ERROR; |
993 | 993 | |
1523 | 1523 | bool type = HasBit(p2, 0); |
1524 | 1524 | bool is_drive_through = HasBit(p2, 1); |
1525 | 1525 | bool build_over_road = is_drive_through && IsNormalRoadTile(tile); |
1526 | RoadTypes rts = (RoadTypes)GB(p2, 2, 2); | |
1526 | RoadTypes rts = Extract<RoadTypes, 2, 2>(p2); | |
1527 | 1527 | StationID station_to_join = GB(p2, 16, 16); |
1528 | 1528 | bool reuse = (station_to_join != NEW_STATION); |
1529 | 1529 | if (!reuse) station_to_join = INVALID_STATION; |
1533 | 1533 | |
1534 | 1534 | if (distant_join && (!_settings_game.station.distant_join_stations || !Station::IsValidID(station_to_join))) return CMD_ERROR; |
1535 | 1535 | |
1536 | if (!AreValidRoadTypes(rts) || !HasRoadTypesAvail(_current_company, rts)) return CMD_ERROR; | |
1536 | if (!HasExactlyOneBit(rts) || !HasRoadTypesAvail(_current_company, rts)) return CMD_ERROR; | |
1537 | 1537 | |
1538 | 1538 | /* Trams only have drive through stops */ |
1539 | 1539 | if (!is_drive_through && HasBit(rts, ROADTYPE_TRAM)) return CMD_ERROR; |
2574 | 2574 | td->grf = gc->name; |
2575 | 2575 | } |
2576 | 2576 | } |
2577 | ||
2578 | const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(tile)); | |
2579 | td->rail_speed = rti->max_speed; | |
2577 | 2580 | } |
2578 | 2581 | |
2579 | 2582 | StringID str; |
0 | /* $Id: stdafx.h 19258 2010-02-25 21:18:38Z rubidium $ */ | |
0 | /* $Id: stdafx.h 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
275 | 275 | /* MSVCRT of course has to have a different syntax for long long *sigh* */ |
276 | 276 | #if defined(_MSC_VER) || defined(__MINGW32__) |
277 | 277 | #define OTTD_PRINTF64 "%I64d" |
278 | #define OTTD_PRINTFHEX64 "%I64x" | |
278 | 279 | #define PRINTF_SIZE "%Iu" |
279 | 280 | #else |
280 | 281 | #define OTTD_PRINTF64 "%lld" |
282 | #define OTTD_PRINTFHEX64 "%llx" | |
281 | 283 | #define PRINTF_SIZE "%zu" |
282 | 284 | #endif |
283 | 285 | |
310 | 312 | #define PERSONAL_DIR "" |
311 | 313 | #endif |
312 | 314 | |
313 | /* Compile time assertions. Prefer c++0x static_assert() */ | |
315 | /* Compile time assertions. Prefer c++0x static_assert(). | |
316 | * Older compilers cannot evaluate some expressions at compile time, | |
317 | * typically when templates are involved, try assert_tcompile() in those cases. */ | |
314 | 318 | #if defined(__STDCXX_VERSION__) || defined(__GXX_EXPERIMENTAL_CXX0X__) || defined(__GXX_EXPERIMENTAL_CPP0X__) || defined(static_assert) |
315 | 319 | /* __STDCXX_VERSION__ is c++0x feature macro, __GXX_EXPERIMENTAL_CXX0X__ is used by gcc, __GXX_EXPERIMENTAL_CPP0X__ by icc */ |
316 | 320 | #define assert_compile(expr) static_assert(expr, #expr ) |
321 | #define assert_tcompile(expr) assert_compile(expr) | |
317 | 322 | #elif defined(__OS2__) |
318 | 323 | /* Disabled for OS/2 */ |
319 | 324 | #define assert_compile(expr) |
325 | #define assert_tcompile(expr) assert_compile(expr) | |
320 | 326 | #else |
321 | 327 | #define assert_compile(expr) typedef int __ct_assert__[1 - 2 * !(expr)] |
328 | #define assert_tcompile(expr) assert(expr) | |
322 | 329 | #endif |
323 | 330 | |
324 | 331 | /* Check if the types have the bitsizes like we are using them */ |
0 | /* $Id: strings.cpp 19223 2010-02-23 23:26:37Z rubidium $ */ | |
0 | /* $Id: strings.cpp 19653 2010-04-17 12:00:59Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
230 | 230 | return FormatNumber(buff, number, last, "", 20 - count); |
231 | 231 | } |
232 | 232 | |
233 | static char *FormatHexNumber(char *buff, int64 number, const char *last) | |
234 | { | |
235 | return buff + seprintf(buff, last, "0x%x", (uint32)number); | |
233 | static char *FormatHexNumber(char *buff, uint64 number, const char *last) | |
234 | { | |
235 | return buff + seprintf(buff, last, "0x" OTTD_PRINTFHEX64, number); | |
236 | 236 | } |
237 | 237 | |
238 | 238 | /** |
389 | 389 | case 2: |
390 | 390 | return n > 1; |
391 | 391 | |
392 | /* Three forms, special case for zero | |
392 | /* Three forms, special case for 0 and ending in 1, except those ending in 11 | |
393 | 393 | * Used in: |
394 | 394 | * Latvian */ |
395 | 395 | case 3: |
396 | 396 | return n % 10 == 1 && n % 100 != 11 ? 0 : n != 0 ? 1 : 2; |
397 | 397 | |
398 | /* Three forms, special case for one and two | |
398 | /* Five forms, special case for one, two, 3 to 6 and 7 to 10 | |
399 | 399 | * Used in: |
400 | 400 | * Gaelige (Irish) */ |
401 | 401 | case 4: |
402 | return n == 1 ? 0 : n == 2 ? 1 : 2; | |
402 | return n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4; | |
403 | 403 | |
404 | 404 | /* Three forms, special case for numbers ending in 1[2-9] |
405 | 405 | * Used in: |
409 | 409 | |
410 | 410 | /* Three forms, special cases for numbers ending in 1 and 2, 3, 4, except those ending in 1[1-4] |
411 | 411 | * Used in: |
412 | * Croatian, Russian, Slovak, Ukrainian */ | |
412 | * Croatian, Russian, Ukrainian */ | |
413 | 413 | case 6: |
414 | 414 | return n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2; |
415 | 415 | |
433 | 433 | |
434 | 434 | /* Three forms, special cases for one and 2, 3, or 4 |
435 | 435 | * Used in: |
436 | * Czech */ | |
436 | * Czech, Slovak */ | |
437 | 437 | case 10: |
438 | 438 | return n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2; |
439 | 439 | |
462 | 462 | default: |
463 | 463 | NOT_REACHED(); |
464 | 464 | } |
465 | ||
466 | /* Four forms: one, 0 and everything ending in 02..10, everything ending in 11..19. | |
467 | * Used in: | |
468 | * Maltese */ | |
469 | case 12: | |
470 | return (n == 1 ? 0 : n == 0 || (n % 100 > 1 && n % 100 < 11) ? 1 : (n % 100 > 10 && n % 100 < 20) ? 2 : 3); | |
465 | 471 | } |
466 | 472 | } |
467 | 473 | |
551 | 557 | WChar b; |
552 | 558 | int64 *argv_orig = argv; |
553 | 559 | uint modifier = 0; |
560 | char *buf_start = buff; | |
554 | 561 | |
555 | 562 | while ((b = Utf8Consume(&str)) != '\0') { |
556 | 563 | if (SCC_NEWGRF_FIRST <= b && b <= SCC_NEWGRF_LAST) { |
557 | 564 | /* We need to pass some stuff as it might be modified; oh boy. */ |
558 | b = RemapNewGRFStringControlCode(b, &buff, &str, argv); | |
565 | b = RemapNewGRFStringControlCode(b, buf_start, &buff, &str, argv); | |
559 | 566 | if (b == 0) continue; |
560 | 567 | } |
561 | 568 | |
855 | 862 | } break; |
856 | 863 | |
857 | 864 | case SCC_HEX: // {HEX} |
858 | buff = FormatHexNumber(buff, GetInt64(&argv), last); | |
865 | buff = FormatHexNumber(buff, (uint64)GetInt64(&argv), last); | |
859 | 866 | break; |
860 | 867 | |
861 | 868 | case SCC_BYTES: // {BYTES} |
0 | /* $Id: control_codes.h 18339 2009-11-29 17:24:39Z rubidium $ */ | |
0 | /* $Id: control_codes.h 19585 2010-04-08 15:40:46Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
122 | 122 | SCC_NEWGRF_PRINT_HEX_BYTE, ///< Read 1 byte from the stack and print it as hex |
123 | 123 | SCC_NEWGRF_PRINT_HEX_WORD, ///< Read 2 bytes from the stack and print it as hex |
124 | 124 | SCC_NEWGRF_PRINT_HEX_DWORD, ///< Read 4 bytes from the stack and print it as hex |
125 | SCC_NEWGRF_PRINT_HEX_QWORD, ///< Read 8 bytes from the stack and print it as hex | |
125 | 126 | SCC_NEWGRF_PUSH_WORD, ///< Pushes 2 bytes onto the stack |
126 | 127 | SCC_NEWGRF_UNPRINT, ///< "Unprints" the given number of bytes from the string |
127 | 128 | SCC_NEWGRF_DISCARD_WORD, ///< Discard the next two bytes |
0 | /* $Id: settings.h 19393 2010-03-12 21:12:35Z rubidium $ */ | |
0 | /* $Id: settings.h 19555 2010-04-03 20:19:26Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
424 | 424 | SDT_BOOL(GameSettings, economy.inflation, 0, 0, true, STR_CONFIG_SETTING_INFLATION, NULL), |
425 | 425 | SDT_VAR(GameSettings, construction.raw_industry_construction, SLE_UINT8, 0,MS, 0, 0, 2, 0, STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD, InvalidateBuildIndustryWindow), |
426 | 426 | SDT_BOOL(GameSettings, economy.multiple_industry_per_town, 0, 0, false, STR_CONFIG_SETTING_MULTIPINDTOWN, NULL), |
427 | SDT_BOOL(GameSettings, economy.same_industry_close, 0, 0, false, STR_CONFIG_SETTING_SAMEINDCLOSE, NULL), | |
427 | SDT_CONDNULL( 1, 0, 140), | |
428 | 428 | SDT_BOOL(GameSettings, economy.bribe, 0, 0, true, STR_CONFIG_SETTING_BRIBE, NULL), |
429 | 429 | SDT_CONDBOOL(GameSettings, economy.exclusive_rights, 79, SL_MAX_VERSION, 0, 0, true, STR_CONFIG_SETTING_ALLOW_EXCLUSIVE, NULL), |
430 | 430 | SDT_CONDBOOL(GameSettings, economy.give_money, 79, SL_MAX_VERSION, 0, 0, true, STR_CONFIG_SETTING_ALLOW_GIVE_MONEY, NULL), |
0 | /* $Id: strgen_tables.h 19223 2010-02-23 23:26:37Z rubidium $ */ | |
0 | /* $Id: strgen_tables.h 19653 2010-04-17 12:00:59Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
154 | 154 | { 1, "Only one form" }, |
155 | 155 | { 2, "Two forms, singular used for zero and 1" }, |
156 | 156 | { 3, "Three forms, special case for 0 and ending in 1, except those ending in 11" }, |
157 | { 3, "Three forms, special case for 1 and 2" }, | |
157 | { 5, "Five forms, special case for one, two, 3 to 6 and 7 to 10" }, | |
158 | 158 | { 3, "Three forms, special case for numbers ending in 1[2-9]" }, |
159 | 159 | { 3, "Three forms, special cases for numbers ending in 1 and 2, 3, 4, except those ending in 1[1-4]" }, |
160 | 160 | { 3, "Three forms, special case for 1 and some numbers ending in 2, 3, or 4" }, |
162 | 162 | { 2, "Two forms, singular used for everything ending in 1 but not in 11" }, |
163 | 163 | { 3, "Three forms, special case for 1 and 2, 3, or 4" }, |
164 | 164 | { 2, "Two forms, cases for numbers ending with a consonant and with a vowel" }, |
165 | { 4, "Four forms: one, 0 and everything ending in 02..10, everything ending in 11..19" }, | |
165 | 166 | }; |
166 | 167 | |
167 | 168 | /* Flags: |
0 | /* $Id: terraform_cmd.cpp 18866 2010-01-18 22:57:21Z rubidium $ */ | |
0 | /* $Id: terraform_cmd.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
371 | 371 | uint oldh = TileHeight(p1); |
372 | 372 | |
373 | 373 | /* compute new height */ |
374 | uint h = oldh + p2; | |
374 | uint h = oldh + (int8)p2; | |
375 | 375 | |
376 | 376 | /* Check range of destination height */ |
377 | 377 | if (h > MAX_TILE_HEIGHT) return_cmd_error((oldh == 0) ? STR_ERROR_ALREADY_AT_SEA_LEVEL : STR_ERROR_TOO_HIGH); |
0 | /* $Id: tile_cmd.h 18809 2010-01-15 16:41:15Z rubidium $ */ | |
0 | /* $Id: tile_cmd.h 19551 2010-04-03 19:48:01Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
58 | 58 | StringID station_name; ///< Type of station within the class |
59 | 59 | const char *grf; ///< newGRF used for the tile contents |
60 | 60 | uint64 dparam[2]; ///< Parameters of the \a str string |
61 | uint16 rail_speed; ///< Speed limit of rail | |
61 | 62 | }; |
62 | 63 | |
63 | 64 | /** |
0 | /* $Id: town_cmd.cpp 18866 2010-01-18 22:57:21Z rubidium $ */ | |
0 | /* $Id: town_cmd.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
13 | 13 | #include "road_cmd.h" |
14 | 14 | #include "landscape.h" |
15 | 15 | #include "viewport_func.h" |
16 | #include "cmd_helper.h" | |
16 | 17 | #include "command_func.h" |
17 | 18 | #include "industry.h" |
18 | 19 | #include "station_base.h" |
1444 | 1445 | t->larger_town = city; |
1445 | 1446 | |
1446 | 1447 | int x = (int)size * 16 + 3; |
1447 | if (size == TS_RANDOM) x = (Random() & 0xF) + 8; | |
1448 | if (size == TSZ_RANDOM) x = (Random() & 0xF) + 8; | |
1448 | 1449 | /* Don't create huge cities when founding town in-game */ |
1449 | 1450 | if (city && (!manual || _game_mode == GM_EDITOR)) x *= _settings_game.economy.initial_city_size; |
1450 | 1451 | |
1517 | 1518 | */ |
1518 | 1519 | CommandCost CmdFoundTown(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
1519 | 1520 | { |
1520 | TownSize size = (TownSize)GB(p1, 0, 2); | |
1521 | TownSize size = Extract<TownSize, 0, 2>(p1); | |
1521 | 1522 | bool city = HasBit(p1, 2); |
1522 | TownLayout layout = (TownLayout)GB(p1, 3, 3); | |
1523 | TownLayout layout = Extract<TownLayout, 3, 3>(p1); | |
1523 | 1524 | TownNameParams par(_settings_game.game_creation.town_name); |
1524 | 1525 | bool random = HasBit(p1, 6); |
1525 | 1526 | uint32 townnameparts = p2; |
1526 | 1527 | |
1527 | if (size > TS_RANDOM) return CMD_ERROR; | |
1528 | if (size > TSZ_RANDOM) return CMD_ERROR; | |
1528 | 1529 | if (layout > TL_RANDOM) return CMD_ERROR; |
1529 | 1530 | |
1530 | 1531 | /* Some things are allowed only in the scenario editor */ |
1531 | 1532 | if (_game_mode != GM_EDITOR) { |
1532 | 1533 | if (_settings_game.economy.found_town == TF_FORBIDDEN) return CMD_ERROR; |
1533 | if (size == TS_LARGE) return CMD_ERROR; | |
1534 | if (size == TSZ_LARGE) return CMD_ERROR; | |
1534 | 1535 | if (random) return CMD_ERROR; |
1535 | 1536 | if (_settings_game.economy.found_town != TF_CUSTOM_LAYOUT && layout != _settings_game.economy.town_layout) { |
1536 | 1537 | return CMD_ERROR; |
1554 | 1555 | if (ret.Failed()) return ret; |
1555 | 1556 | } |
1556 | 1557 | |
1557 | static const byte price_mult[][TS_RANDOM + 1] = {{ 15, 25, 40, 25 }, { 20, 35, 55, 35 }}; | |
1558 | static const byte price_mult[][TSZ_RANDOM + 1] = {{ 15, 25, 40, 25 }, { 20, 35, 55, 35 }}; | |
1558 | 1559 | /* multidimensional arrays have to have defined length of non-first dimension */ |
1559 | 1560 | assert_compile(lengthof(price_mult[0]) == 4); |
1560 | 1561 | |
1781 | 1782 | /* Get a unique name for the town. */ |
1782 | 1783 | if (!GenerateTownName(&townnameparts)) continue; |
1783 | 1784 | /* try 20 times to create a random-sized town for the first loop. */ |
1784 | if (CreateRandomTown(20, townnameparts, TS_RANDOM, city, layout) != NULL) num++; // if creation successfull, raise a flag | |
1785 | if (CreateRandomTown(20, townnameparts, TSZ_RANDOM, city, layout) != NULL) num++; // If creation was successful, raise a flag. | |
1785 | 1786 | } while (--n); |
1786 | 1787 | |
1787 | 1788 | if (num != 0) return true; |
1789 | 1790 | /* If num is still zero at this point, it means that not a single town has been created. |
1790 | 1791 | * So give it a last try, but now more aggressive */ |
1791 | 1792 | if (GenerateTownName(&townnameparts) && |
1792 | CreateRandomTown(10000, townnameparts, TS_RANDOM, _settings_game.economy.larger_towns != 0, layout) != NULL) { | |
1793 | CreateRandomTown(10000, townnameparts, TSZ_RANDOM, _settings_game.economy.larger_towns != 0, layout) != NULL) { | |
1793 | 1794 | return true; |
1794 | 1795 | } |
1795 | 1796 |
0 | /* $Id: town_gui.cpp 19119 2010-02-13 14:02:36Z rubidium $ */ | |
0 | /* $Id: town_gui.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
1052 | 1052 | public: |
1053 | 1053 | FoundTownWindow(const WindowDesc *desc, WindowNumber window_number) : |
1054 | 1054 | QueryStringBaseWindow(MAX_LENGTH_TOWN_NAME_BYTES), |
1055 | town_size(TS_MEDIUM), | |
1055 | town_size(TSZ_MEDIUM), | |
1056 | 1056 | town_layout(_settings_game.economy.town_layout), |
1057 | 1057 | params(_settings_game.game_creation.town_name) |
1058 | 1058 | { |
0 | /* $Id: town_type.h 18281 2009-11-24 21:18:11Z smatz $ */ | |
0 | /* $Id: town_type.h 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
18 | 18 | |
19 | 19 | /** Supported initial town sizes */ |
20 | 20 | enum TownSize { |
21 | TS_SMALL, ///< small town | |
22 | TS_MEDIUM, ///< medium town | |
23 | TS_LARGE, ///< large town | |
24 | TS_RANDOM, ///< random size, bigger than small, smaller than large | |
21 | TSZ_SMALL, ///< Small town. | |
22 | TSZ_MEDIUM, ///< Medium town. | |
23 | TSZ_LARGE, ///< Large town. | |
24 | TSZ_RANDOM, ///< Random size, bigger than small, smaller than large. | |
25 | ||
26 | TSZ_END, ///< Number of available town sizes. | |
25 | 27 | }; |
28 | template <> struct EnumPropsT<TownSize> : MakeEnumPropsT<TownSize, byte, TSZ_SMALL, TSZ_END, TSZ_END, 2> {}; | |
26 | 29 | |
27 | 30 | enum { |
28 | 31 | /* These refer to the maximums, so Appalling is -1000 to -400 |
86 | 89 | |
87 | 90 | NUM_TLS, ///< Number of town layouts |
88 | 91 | }; |
92 | template <> struct EnumPropsT<TownLayout> : MakeEnumPropsT<TownLayout, byte, TL_BEGIN, NUM_TLS, NUM_TLS, 3> {}; | |
89 | 93 | /** It needs to be 8bits, because we save and load it as such */ |
90 | 94 | typedef SimpleTinyEnumT<TownLayout, byte> TownLayoutByte; // typedefing-enumification of TownLayout |
91 | 95 |
0 | /* $Id: track_type.h 17248 2009-08-21 20:21:05Z rubidium $ */ | |
0 | /* $Id: track_type.h 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
32 | 32 | /** Allow incrementing of Track variables */ |
33 | 33 | DECLARE_POSTFIX_INCREMENT(Track); |
34 | 34 | /** Define basic enum properties */ |
35 | template <> struct EnumPropsT<Track> : MakeEnumPropsT<Track, byte, TRACK_BEGIN, TRACK_END, INVALID_TRACK> {}; | |
35 | template <> struct EnumPropsT<Track> : MakeEnumPropsT<Track, byte, TRACK_BEGIN, TRACK_END, INVALID_TRACK, 3> {}; | |
36 | 36 | typedef TinyEnumT<Track> TrackByte; |
37 | 37 | |
38 | 38 | |
93 | 93 | }; |
94 | 94 | |
95 | 95 | /** Define basic enum properties */ |
96 | template <> struct EnumPropsT<Trackdir> : MakeEnumPropsT<Trackdir, byte, TRACKDIR_BEGIN, TRACKDIR_END, INVALID_TRACKDIR> {}; | |
96 | template <> struct EnumPropsT<Trackdir> : MakeEnumPropsT<Trackdir, byte, TRACKDIR_BEGIN, TRACKDIR_END, INVALID_TRACKDIR, 4> {}; | |
97 | 97 | typedef TinyEnumT<Trackdir> TrackdirByte; |
98 | 98 | |
99 | 99 | /** |
0 | /* $Id: train_cmd.cpp 19300 2010-03-02 00:38:01Z rubidium $ */ | |
0 | /* $Id: train_cmd.cpp 19690 2010-04-21 19:20:28Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
480 | 480 | int st_max_speed = 120; |
481 | 481 | |
482 | 482 | int delta_v = this->cur_speed / (distance_to_go + 1); |
483 | if (this->max_speed > (this->cur_speed - delta_v)) { | |
483 | if (max_speed > (this->cur_speed - delta_v)) { | |
484 | 484 | st_max_speed = this->cur_speed - (delta_v / 10); |
485 | 485 | } |
486 | 486 | |
815 | 815 | */ |
816 | 816 | CommandCost CmdBuildRailVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
817 | 817 | { |
818 | EngineID eid = GB(p1, 0, 16); | |
818 | 819 | /* Check if the engine-type is valid (for the company) */ |
819 | if (!IsEngineBuildable(p1, VEH_TRAIN, _current_company)) return_cmd_error(STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE); | |
820 | ||
821 | const Engine *e = Engine::Get(p1); | |
820 | if (!IsEngineBuildable(eid, VEH_TRAIN, _current_company)) return_cmd_error(STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE); | |
821 | ||
822 | const Engine *e = Engine::Get(eid); | |
822 | 823 | const RailVehicleInfo *rvi = &e->u.rail; |
823 | 824 | CommandCost value(EXPENSES_NEW_VEHICLES, e->GetCost()); |
824 | 825 | |
832 | 833 | if (!IsRailDepotTile(tile)) return CMD_ERROR; |
833 | 834 | if (!IsTileOwner(tile, _current_company)) return CMD_ERROR; |
834 | 835 | |
835 | if (rvi->railveh_type == RAILVEH_WAGON) return CmdBuildRailWagon(p1, tile, flags); | |
836 | if (rvi->railveh_type == RAILVEH_WAGON) return CmdBuildRailWagon(eid, tile, flags); | |
836 | 837 | |
837 | 838 | uint num_vehicles = |
838 | 839 | (rvi->railveh_type == RAILVEH_MULTIHEAD ? 2 : 1) + |
839 | CountArticulatedParts(p1, false); | |
840 | CountArticulatedParts(eid, false); | |
840 | 841 | |
841 | 842 | /* Check if depot and new engine uses the same kind of tracks * |
842 | 843 | * We need to see if the engine got power on the tile to avoid eletric engines in non-electric depots */ |
874 | 875 | v->value = value.GetCost(); |
875 | 876 | v->last_station_visited = INVALID_STATION; |
876 | 877 | |
877 | v->engine_type = p1; | |
878 | v->engine_type = eid; | |
878 | 879 | v->tcache.first_engine = INVALID_ENGINE; // needs to be set before first callback |
879 | 880 | |
880 | 881 | v->reliability = e->reliability; |
919 | 920 | InvalidateAutoreplaceWindow(v->engine_type, v->group_id); // updates the replace Train window |
920 | 921 | } |
921 | 922 | |
922 | Company::Get(_current_company)->num_engines[p1]++; | |
923 | Company::Get(_current_company)->num_engines[eid]++; | |
923 | 924 | |
924 | 925 | CheckConsistencyOfArticulatedVehicle(v); |
925 | 926 | } |
0 | /* $Id: transport_type.h 17248 2009-08-21 20:21:05Z rubidium $ */ | |
0 | /* $Id: transport_type.h 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
29 | 29 | TRANSPORT_END, |
30 | 30 | INVALID_TRANSPORT = 0xff, |
31 | 31 | }; |
32 | template <> struct EnumPropsT<TransportType> : MakeEnumPropsT<TransportType, byte, TRANSPORT_BEGIN, TRANSPORT_END, INVALID_TRANSPORT, 2> {}; | |
32 | 33 | |
33 | 34 | #endif /* TRANSPORT_TYPE_H */ |
0 | /* $Id: tree_cmd.cpp 18872 2010-01-21 01:38:13Z rubidium $ */ | |
0 | /* $Id: tree_cmd.cpp 19646 2010-04-16 22:02:33Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
335 | 335 | /** Plant a tree. |
336 | 336 | * @param tile start tile of area-drag of tree plantation |
337 | 337 | * @param flags type of operation |
338 | * @param p1 tree type, -1 means random. | |
338 | * @param p1 tree type, TREE_INVALID means random. | |
339 | 339 | * @param p2 end tile of area-drag |
340 | 340 | * @param text unused |
341 | 341 | * @return the cost of this operation or an error |
344 | 344 | { |
345 | 345 | StringID msg = INVALID_STRING_ID; |
346 | 346 | CommandCost cost(EXPENSES_OTHER); |
347 | const byte tree_to_plant = GB(p1, 0, 8); // We cannot use Extract as min and max are climate specific. | |
347 | 348 | |
348 | 349 | if (p2 >= MapSize()) return CMD_ERROR; |
349 | /* Check the tree type. It can be random or some valid value within the current climate */ | |
350 | if (p1 != UINT_MAX && p1 - _tree_base_by_landscape[_settings_game.game_creation.landscape] >= _tree_count_by_landscape[_settings_game.game_creation.landscape]) return CMD_ERROR; | |
350 | /* Check the tree type within the current climate */ | |
351 | if (tree_to_plant != TREE_INVALID && !IsInsideBS(tree_to_plant, _tree_base_by_landscape[_settings_game.game_creation.landscape], _tree_count_by_landscape[_settings_game.game_creation.landscape])) return CMD_ERROR; | |
351 | 352 | |
352 | 353 | TileArea ta(tile, p2); |
353 | 354 | TILE_AREA_LOOP(tile, ta) { |
373 | 374 | continue; |
374 | 375 | } |
375 | 376 | /* FALL THROUGH */ |
376 | case MP_CLEAR: | |
377 | case MP_CLEAR: { | |
377 | 378 | if (IsBridgeAbove(tile)) { |
378 | 379 | msg = STR_ERROR_SITE_UNSUITABLE; |
380 | continue; | |
381 | } | |
382 | ||
383 | TreeType treetype = (TreeType)tree_to_plant; | |
384 | /* Be a bit picky about which trees go where. */ | |
385 | if (_settings_game.game_creation.landscape == LT_TROPIC && treetype != TREE_INVALID && ( | |
386 | /* No cacti outside the desert */ | |
387 | (treetype == TREE_CACTUS && GetTropicZone(tile) != TROPICZONE_DESERT) || | |
388 | /* No rain forest trees outside the rain forest, except in the editor mode where it makes those tiles rain forest tile */ | |
389 | (IsInsideMM(treetype, TREE_RAINFOREST, TREE_CACTUS) && GetTropicZone(tile) != TROPICZONE_RAINFOREST && _game_mode != GM_EDITOR) || | |
390 | /* And no subtropical trees in the desert/rain forest */ | |
391 | (IsInsideMM(treetype, TREE_SUB_TROPICAL, TREE_TOYLAND) && GetTropicZone(tile) != TROPICZONE_NORMAL))) { | |
392 | msg = STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE; | |
379 | 393 | continue; |
380 | 394 | } |
381 | 395 | |
400 | 414 | } |
401 | 415 | |
402 | 416 | if (flags & DC_EXEC) { |
403 | TreeType treetype; | |
404 | ||
405 | treetype = (TreeType)p1; | |
406 | 417 | if (treetype == TREE_INVALID) { |
407 | 418 | treetype = GetRandomTreeType(tile, GB(Random(), 24, 8)); |
408 | 419 | if (treetype == TREE_INVALID) treetype = TREE_CACTUS; |
413 | 424 | MarkTileDirtyByTile(tile); |
414 | 425 | |
415 | 426 | /* When planting rainforest-trees, set tropiczone to rainforest in editor. */ |
416 | if (_game_mode == GM_EDITOR && IsInsideMM(treetype, TREE_RAINFOREST, TREE_CACTUS)) | |
427 | if (_game_mode == GM_EDITOR && IsInsideMM(treetype, TREE_RAINFOREST, TREE_CACTUS)) { | |
417 | 428 | SetTropicZone(tile, TROPICZONE_RAINFOREST); |
429 | } | |
418 | 430 | } |
419 | 431 | cost.AddCost(_price[PR_BUILD_TREES]); |
420 | break; | |
432 | } break; | |
421 | 433 | |
422 | 434 | default: |
423 | 435 | msg = STR_ERROR_SITE_UNSUITABLE; |
0 | /* $Id: tree_gui.cpp 18966 2010-01-30 18:34:48Z frosch $ */ | |
0 | /* $Id: tree_gui.cpp 19646 2010-04-16 22:02:33Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
17 | 17 | #include "company_base.h" |
18 | 18 | #include "command_func.h" |
19 | 19 | #include "sound_func.h" |
20 | #include "tree_map.h" | |
20 | 21 | |
21 | 22 | #include "table/sprites.h" |
22 | 23 | #include "table/strings.h" |
49 | 50 | { |
50 | 51 | uint16 base; ///< Base tree number used for drawing the window. |
51 | 52 | uint16 count; ///< Number of different trees available. |
52 | uint tree_to_plant; ///< Tree number to plant, \c UINT_MAX for a random tree. | |
53 | TreeType tree_to_plant; ///< Tree number to plant, \c TREE_INVALID for a random tree. | |
53 | 54 | |
54 | 55 | public: |
55 | 56 | BuildTreesWindow(const WindowDesc *desc, WindowNumber window_number) : Window() |
104 | 105 | if (widget - BTW_TYPE_11 >= this->count) break; |
105 | 106 | |
106 | 107 | if (HandlePlacePushButton(this, widget, SPR_CURSOR_TREE, HT_RECT, NULL)) { |
107 | this->tree_to_plant = this->base + widget - BTW_TYPE_11; | |
108 | this->tree_to_plant = (TreeType)(this->base + widget - BTW_TYPE_11); | |
108 | 109 | } |
109 | 110 | break; |
110 | 111 | |
111 | 112 | case BTW_TYPE_RANDOM: // tree of random type. |
112 | 113 | if (HandlePlacePushButton(this, BTW_TYPE_RANDOM, SPR_CURSOR_TREE, HT_RECT, NULL)) { |
113 | this->tree_to_plant = UINT_MAX; | |
114 | this->tree_to_plant = TREE_INVALID; | |
114 | 115 | } |
115 | 116 | break; |
116 | 117 |
0 | /* $Id: tree_map.h 18809 2010-01-15 16:41:15Z rubidium $ */ | |
0 | /* $Id: tree_map.h 19741 2010-04-30 21:01:21Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
21 | 21 | * offsets from the grfs files. These points to the start of |
22 | 22 | * the tree list for a landscape. See the TREE_COUNT_* enumerations |
23 | 23 | * for the amount of different trees for a specific landscape. |
24 | * | |
25 | * @note TREE_INVALID may be 0xFF according to the coding style, not -1 (Progman) | |
26 | 24 | */ |
27 | 25 | enum TreeType { |
28 | TREE_INVALID = -1, ///< An invalid tree | |
29 | 26 | TREE_TEMPERATE = 0x00, ///< temperate tree |
30 | 27 | TREE_SUB_ARCTIC = 0x0C, ///< tree on a sub_arctic landscape |
31 | 28 | TREE_RAINFOREST = 0x14, ///< tree on the 'green part' on a sub-tropical map |
32 | 29 | TREE_CACTUS = 0x1B, ///< a catus for the 'desert part' on a sub-tropical map |
33 | 30 | TREE_SUB_TROPICAL = 0x1C, ///< tree on a sub-tropical map, non-rainforest, non-desert |
34 | 31 | TREE_TOYLAND = 0x20, ///< tree on a toyland map |
32 | TREE_INVALID = 0xFF, ///< An invalid tree | |
35 | 33 | }; |
36 | 34 | |
37 | 35 | /** |
42 | 40 | * got two types of area, one for normal trees and one only for cacti. |
43 | 41 | */ |
44 | 42 | enum { |
45 | TREE_COUNT_TEMPERATE = TREE_SUB_ARCTIC - TREE_TEMPERATE, ///< number of treetypes on a temperate map | |
46 | TREE_COUNT_SUB_ARCTIC = TREE_RAINFOREST - TREE_SUB_ARCTIC, ///< number of treetypes on a sub arctic map | |
47 | TREE_COUNT_RAINFOREST = TREE_CACTUS - TREE_RAINFOREST, ///< number of treetypes for the 'green part' of a sub tropic map | |
48 | TREE_COUNT_SUB_TROPICAL = TREE_SUB_TROPICAL - TREE_CACTUS, ///< number of treetypes for the 'desert part' of a sub tropic map | |
43 | TREE_COUNT_TEMPERATE = TREE_SUB_ARCTIC - TREE_TEMPERATE, ///< number of treetypes on a temperate map | |
44 | TREE_COUNT_SUB_ARCTIC = TREE_RAINFOREST - TREE_SUB_ARCTIC, ///< number of treetypes on a sub arctic map | |
45 | TREE_COUNT_RAINFOREST = TREE_CACTUS - TREE_RAINFOREST, ///< number of treetypes for the 'rainforrest part' of a sub-tropic map | |
46 | TREE_COUNT_SUB_TROPICAL = TREE_TOYLAND - TREE_SUB_TROPICAL, ///< number of treetypes for the 'sub-tropic part' of a sub-tropic map | |
49 | 47 | TREE_COUNT_TOYLAND = 9 ///< number of treetypes on a toyland map |
50 | 48 | }; |
51 | 49 |
0 | /* $Id: tunnelbridge_cmd.cpp 19393 2010-03-12 21:12:35Z rubidium $ */ | |
0 | /* $Id: tunnelbridge_cmd.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
16 | 16 | #include "landscape.h" |
17 | 17 | #include "unmovable_map.h" |
18 | 18 | #include "viewport_func.h" |
19 | #include "cmd_helper.h" | |
19 | 20 | #include "command_func.h" |
20 | 21 | #include "town.h" |
21 | 22 | #include "variables.h" |
159 | 160 | return CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_FOUNDATION]); |
160 | 161 | } |
161 | 162 | |
162 | bool CheckBridge_Stuff(BridgeType bridge_type, uint bridge_len, DoCommandFlag flags) | |
163 | /** Is a bridge of the specified type and length available? | |
164 | * @param bridge_type Wanted type of bridge. | |
165 | * @param bridge_len Wanted length of the bridge. | |
166 | * @return A succeeded (the requested bridge is available) or failed (it cannot be built) command. | |
167 | */ | |
168 | CommandCost CheckBridgeAvailability(BridgeType bridge_type, uint bridge_len, DoCommandFlag flags) | |
163 | 169 | { |
164 | 170 | if (flags & DC_QUERY_COST) { |
165 | return bridge_len <= (_settings_game.construction.longbridges ? 100U : 16U); | |
166 | } | |
167 | ||
168 | if (bridge_type >= MAX_BRIDGES) return false; | |
171 | if (bridge_len <= (_settings_game.construction.longbridges ? 100U : 16U)) return CommandCost(); | |
172 | return_cmd_error(STR_ERROR_BRIDGE_TOO_LONG); | |
173 | } | |
174 | ||
175 | if (bridge_type >= MAX_BRIDGES) return CMD_ERROR; | |
169 | 176 | |
170 | 177 | const BridgeSpec *b = GetBridgeSpec(bridge_type); |
171 | if (b->avail_year > _cur_year) return false; | |
178 | if (b->avail_year > _cur_year) return CMD_ERROR; | |
172 | 179 | |
173 | 180 | uint max = b->max_length; |
174 | 181 | if (max >= 16 && _settings_game.construction.longbridges) max = 100; |
175 | 182 | |
176 | return b->min_length <= bridge_len && bridge_len <= max; | |
183 | if (b->min_length > bridge_len) return CMD_ERROR; | |
184 | if (bridge_len <= max) return CommandCost(); | |
185 | return_cmd_error(STR_ERROR_BRIDGE_TOO_LONG); | |
177 | 186 | } |
178 | 187 | |
179 | 188 | /** Build a Bridge |
182 | 191 | * @param p1 packed start tile coords (~ dx) |
183 | 192 | * @param p2 various bitstuffed elements |
184 | 193 | * - p2 = (bit 0- 7) - bridge type (hi bh) |
185 | * - p2 = (bit 8-14) - rail type or road types. | |
194 | * - p2 = (bit 8-11) - rail type or road types. | |
186 | 195 | * - p2 = (bit 15-16) - transport type. |
187 | 196 | * @param text unused |
188 | 197 | * @return the cost of this operation or an error |
199 | 208 | |
200 | 209 | if (p1 >= MapSize()) return CMD_ERROR; |
201 | 210 | |
202 | TransportType transport_type = (TransportType)GB(p2, 15, 2); | |
211 | TransportType transport_type = Extract<TransportType, 15, 2>(p2); | |
203 | 212 | |
204 | 213 | /* type of bridge */ |
205 | 214 | switch (transport_type) { |
206 | 215 | case TRANSPORT_ROAD: |
207 | roadtypes = (RoadTypes)GB(p2, 8, 2); | |
208 | if (!AreValidRoadTypes(roadtypes) || !HasRoadTypesAvail(_current_company, roadtypes)) return CMD_ERROR; | |
216 | roadtypes = Extract<RoadTypes, 8, 2>(p2); | |
217 | if (!HasExactlyOneBit(roadtypes) || !HasRoadTypesAvail(_current_company, roadtypes)) return CMD_ERROR; | |
209 | 218 | break; |
210 | 219 | |
211 | 220 | case TRANSPORT_RAIL: |
212 | railtype = (RailType)GB(p2, 8, 7); | |
221 | railtype = Extract<RailType, 8, 4>(p2); | |
213 | 222 | if (!ValParamRailtype(railtype)) return CMD_ERROR; |
214 | 223 | break; |
215 | 224 | |
241 | 250 | uint bridge_len = GetTunnelBridgeLength(tile_start, tile_end); |
242 | 251 | if (transport_type != TRANSPORT_WATER) { |
243 | 252 | /* set and test bridge length, availability */ |
244 | if (!CheckBridge_Stuff(bridge_type, bridge_len, flags)) return_cmd_error(STR_ERROR_CAN_T_BUILD_BRIDGE_HERE); | |
253 | CommandCost ret = CheckBridgeAvailability(bridge_type, bridge_len, flags); | |
254 | if (ret.Failed()) return ret; | |
245 | 255 | } else { |
246 | if (bridge_len > (_settings_game.construction.longbridges ? 100U : 16U)) return_cmd_error(STR_ERROR_CAN_T_BUILD_BRIDGE_HERE); | |
256 | if (bridge_len > (_settings_game.construction.longbridges ? 100U : 16U)) return_cmd_error(STR_ERROR_BRIDGE_TOO_LONG); | |
247 | 257 | } |
248 | 258 | |
249 | 259 | /* retrieve landscape height and ensure it's on land */ |
469 | 479 | /** Build Tunnel. |
470 | 480 | * @param start_tile start tile of tunnel |
471 | 481 | * @param flags type of operation |
472 | * @param p1 railtype or roadtypes. bit 9 set means road tunnel | |
482 | * @param p1 bit 0-3 railtype or roadtypes | |
483 | * bit 8-9 transport type | |
473 | 484 | * @param p2 unused |
474 | 485 | * @param text unused |
475 | 486 | * @return the cost of this operation or an error |
476 | 487 | */ |
477 | 488 | CommandCost CmdBuildTunnel(TileIndex start_tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
478 | 489 | { |
479 | TransportType transport_type = (TransportType)GB(p1, 9, 1); | |
490 | TransportType transport_type = Extract<TransportType, 8, 2>(p1); | |
480 | 491 | CommandCost cost(EXPENSES_CONSTRUCTION); |
481 | 492 | |
493 | RailType railtype = INVALID_RAILTYPE; | |
494 | RoadTypes rts = ROADTYPES_NONE; | |
482 | 495 | _build_tunnel_endtile = 0; |
483 | if (transport_type == TRANSPORT_RAIL) { | |
484 | if (!ValParamRailtype((RailType)p1)) return CMD_ERROR; | |
485 | } else { | |
486 | const RoadTypes rts = (RoadTypes)GB(p1, 0, 2); | |
487 | if (!AreValidRoadTypes(rts) || !HasRoadTypesAvail(_current_company, rts)) return CMD_ERROR; | |
496 | switch (transport_type) { | |
497 | case TRANSPORT_RAIL: | |
498 | railtype = Extract<RailType, 0, 4>(p1); | |
499 | if (!ValParamRailtype(railtype)) return CMD_ERROR; | |
500 | break; | |
501 | ||
502 | case TRANSPORT_ROAD: | |
503 | rts = Extract<RoadTypes, 0, 2>(p1); | |
504 | if (!HasExactlyOneBit(rts) || !HasRoadTypesAvail(_current_company, rts)) return CMD_ERROR; | |
505 | break; | |
506 | ||
507 | default: return CMD_ERROR; | |
488 | 508 | } |
489 | 509 | |
490 | 510 | uint start_z; |
571 | 591 | |
572 | 592 | if (flags & DC_EXEC) { |
573 | 593 | if (transport_type == TRANSPORT_RAIL) { |
574 | MakeRailTunnel(start_tile, _current_company, direction, (RailType)GB(p1, 0, 4)); | |
575 | MakeRailTunnel(end_tile, _current_company, ReverseDiagDir(direction), (RailType)GB(p1, 0, 4)); | |
594 | MakeRailTunnel(start_tile, _current_company, direction, railtype); | |
595 | MakeRailTunnel(end_tile, _current_company, ReverseDiagDir(direction), railtype); | |
576 | 596 | AddSideToSignalBuffer(start_tile, INVALID_DIAGDIR, _current_company); |
577 | 597 | YapfNotifyTrackLayoutChange(start_tile, DiagDirToDiagTrack(direction)); |
578 | 598 | } else { |
579 | MakeRoadTunnel(start_tile, _current_company, direction, (RoadTypes)GB(p1, 0, 2)); | |
580 | MakeRoadTunnel(end_tile, _current_company, ReverseDiagDir(direction), (RoadTypes)GB(p1, 0, 2)); | |
599 | MakeRoadTunnel(start_tile, _current_company, direction, rts); | |
600 | MakeRoadTunnel(end_tile, _current_company, ReverseDiagDir(direction), rts); | |
581 | 601 | } |
582 | 602 | } |
583 | 603 | |
1311 | 1331 | td->owner[i] = tram_owner; |
1312 | 1332 | } |
1313 | 1333 | } |
1334 | ||
1335 | if (tt == TRANSPORT_RAIL) { | |
1336 | const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(tile)); | |
1337 | td->rail_speed = rti->max_speed; | |
1338 | ||
1339 | if (!IsTunnel(tile)) { | |
1340 | uint16 spd = GetBridgeSpec(GetBridgeType(tile))->speed; | |
1341 | if (td->rail_speed == 0 || spd < td->rail_speed) { | |
1342 | td->rail_speed = spd; | |
1343 | } | |
1344 | } | |
1345 | } | |
1314 | 1346 | } |
1315 | 1347 | |
1316 | 1348 |
0 | /* $Id: vehicle_cmd.cpp 19024 2010-02-05 21:51:26Z rubidium $ */ | |
0 | /* $Id: vehicle_cmd.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
12 | 12 | #include "roadveh.h" |
13 | 13 | #include "news_func.h" |
14 | 14 | #include "airport.h" |
15 | #include "cmd_helper.h" | |
15 | 16 | #include "command_func.h" |
16 | 17 | #include "company_func.h" |
17 | 18 | #include "vehicle_gui.h" |
122 | 123 | * - bit 0-4 Vehicle type |
123 | 124 | * - bit 5 false = start vehicles, true = stop vehicles |
124 | 125 | * - bit 6 if set, then it's a vehicle list window, not a depot and Tile is ignored in this case |
125 | * - bit 8-11 Vehicle List Window type (ignored unless bit 1 is set) | |
126 | * - bit 8-11 Vehicle List Window type (ignored unless bit 6 is set) | |
126 | 127 | * @param text unused |
127 | 128 | * @return the cost of this operation or an error |
128 | 129 | */ |
129 | 130 | CommandCost CmdMassStartStopVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
130 | 131 | { |
131 | 132 | VehicleList list; |
132 | VehicleType vehicle_type = (VehicleType)GB(p2, 0, 5); | |
133 | VehicleType vehicle_type = Extract<VehicleType, 0, 3>(p2); | |
133 | 134 | bool start_stop = HasBit(p2, 5); |
134 | 135 | bool vehicle_list_window = HasBit(p2, 6); |
136 | ||
137 | if (!IsCompanyBuildableVehicleType(vehicle_type)) return CMD_ERROR; | |
135 | 138 | |
136 | 139 | if (vehicle_list_window) { |
137 | 140 | uint32 id = p1; |
138 | 141 | uint16 window_type = p2 & VLW_MASK; |
139 | 142 | |
140 | GenerateVehicleSortList(&list, vehicle_type, _current_company, id, window_type); | |
143 | if (!GenerateVehicleSortList(&list, vehicle_type, _current_company, id, window_type)) return CMD_ERROR; | |
141 | 144 | } else { |
142 | 145 | /* Get the list of vehicles in the depot */ |
143 | 146 | BuildDepotVehicleList(vehicle_type, tile, &list, NULL); |
176 | 179 | VehicleList list; |
177 | 180 | |
178 | 181 | CommandCost cost(EXPENSES_NEW_VEHICLES); |
179 | VehicleType vehicle_type = (VehicleType)GB(p1, 0, 8); | |
182 | VehicleType vehicle_type = Extract<VehicleType, 0, 3>(p1); | |
180 | 183 | uint sell_command = GetCmdSellVeh(vehicle_type); |
184 | ||
185 | if (!IsCompanyBuildableVehicleType(vehicle_type)) return CMD_ERROR; | |
181 | 186 | |
182 | 187 | /* Get the list of vehicles in the depot */ |
183 | 188 | BuildDepotVehicleList(vehicle_type, tile, &list, &list); |
204 | 209 | { |
205 | 210 | VehicleList list; |
206 | 211 | CommandCost cost = CommandCost(EXPENSES_NEW_VEHICLES); |
207 | VehicleType vehicle_type = (VehicleType)GB(p1, 0, 8); | |
208 | ||
212 | VehicleType vehicle_type = Extract<VehicleType, 0, 3>(p1); | |
213 | ||
214 | if (!IsCompanyBuildableVehicleType(vehicle_type)) return CMD_ERROR; | |
209 | 215 | if (!IsDepotTile(tile) || !IsTileOwner(tile, _current_company)) return CMD_ERROR; |
210 | 216 | |
211 | 217 | /* Get the list of vehicles in the depot */ |
349 | 355 | |
350 | 356 | /* Format buffer and determine starting number. */ |
351 | 357 | int num; |
358 | byte padding = 0; | |
352 | 359 | if (number_position == strlen(src->name)) { |
353 | 360 | /* No digit at the end, so start at number 2. */ |
354 | 361 | strecpy(buf, src->name, lastof(buf)); |
359 | 366 | /* Found digits, parse them and start at the next number. */ |
360 | 367 | strecpy(buf, src->name, lastof(buf)); |
361 | 368 | buf[number_position] = '\0'; |
362 | num = strtol(&src->name[number_position], NULL, 10) + 1; | |
369 | char *endptr; | |
370 | num = strtol(&src->name[number_position], &endptr, 10) + 1; | |
371 | padding = endptr - &src->name[number_position]; | |
363 | 372 | } |
364 | 373 | |
365 | 374 | /* Check if this name is already taken. */ |
366 | 375 | for (int max_iterations = 1000; max_iterations > 0; max_iterations--, num++) { |
367 | 376 | /* Attach the number to the temporary name. */ |
368 | seprintf(&buf[number_position], lastof(buf), "%d", num); | |
377 | seprintf(&buf[number_position], lastof(buf), "%0*d", padding, num); | |
369 | 378 | |
370 | 379 | /* Check the name is unique. */ |
371 | 380 | if (IsUniqueVehicleName(buf)) { |
391 | 400 | uint32 build_argument = 2; |
392 | 401 | |
393 | 402 | Vehicle *v = Vehicle::GetIfValid(p1); |
394 | if (v == NULL) return CMD_ERROR; | |
403 | if (v == NULL || !v->IsPrimaryVehicle()) return CMD_ERROR; | |
395 | 404 | Vehicle *v_front = v; |
396 | 405 | Vehicle *w = NULL; |
397 | 406 | Vehicle *w_front = NULL; |
576 | 585 | { |
577 | 586 | VehicleList list; |
578 | 587 | |
579 | GenerateVehicleSortList(&list, type, owner, id, vlw_flag); | |
588 | if (!GenerateVehicleSortList(&list, type, owner, id, vlw_flag)) return CMD_ERROR; | |
580 | 589 | |
581 | 590 | /* Send all the vehicles to a depot */ |
582 | 591 | for (uint i = 0; i < list.Length(); i++) { |
606 | 615 | CommandCost CmdRenameVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
607 | 616 | { |
608 | 617 | Vehicle *v = Vehicle::GetIfValid(p1); |
609 | if (v == NULL || !CheckOwnership(v->owner)) return CMD_ERROR; | |
618 | if (v == NULL || !v->IsPrimaryVehicle() || !CheckOwnership(v->owner)) return CMD_ERROR; | |
610 | 619 | |
611 | 620 | bool reset = StrEmpty(text); |
612 | 621 | |
637 | 646 | CommandCost CmdChangeServiceInt(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
638 | 647 | { |
639 | 648 | Vehicle *v = Vehicle::GetIfValid(p1); |
640 | if (v == NULL || !CheckOwnership(v->owner)) return CMD_ERROR; | |
649 | if (v == NULL || !v->IsPrimaryVehicle() || !CheckOwnership(v->owner)) return CMD_ERROR; | |
641 | 650 | |
642 | 651 | uint16 serv_int = GetServiceIntervalClamped(p2, v->owner); // Double check the service interval from the user-input |
643 | 652 | if (serv_int != p2) return CMD_ERROR; |
0 | /* $Id: vehicle_gui.cpp 19223 2010-02-23 23:26:37Z rubidium $ */ | |
0 | /* $Id: vehicle_gui.cpp 19554 2010-04-03 20:09:19Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
1397 | 1397 | this->tab = TDW_TAB_CARGO; |
1398 | 1398 | } |
1399 | 1399 | |
1400 | virtual void OnInvalidateData(int data) | |
1401 | { | |
1402 | const Vehicle *v = Vehicle::Get(this->window_number); | |
1403 | if (v->type == VEH_ROAD) { | |
1404 | const NWidgetBase *nwid_info = this->GetWidget<NWidgetBase>(VLD_WIDGET_MIDDLE_DETAILS); | |
1405 | uint aimed_height = this->GetRoadVehDetailsHeight(v); | |
1406 | /* If the number of articulated parts changes, the size of the window must change too. */ | |
1407 | if (aimed_height != nwid_info->current_y) { | |
1408 | this->ReInit(); | |
1409 | } | |
1410 | } | |
1411 | } | |
1412 | ||
1413 | /** | |
1414 | * Gets the desired height for the road vehicle details panel. | |
1415 | * @param v Road vehicle being shown. | |
1416 | * @return Desired height in pixels. | |
1417 | */ | |
1418 | uint GetRoadVehDetailsHeight(const Vehicle *v) | |
1419 | { | |
1420 | uint desired_height; | |
1421 | if (RoadVehicle::From(v)->HasArticulatedPart()) { | |
1422 | /* An articulated RV has its text drawn under the sprite instead of after it, hence 15 pixels extra. */ | |
1423 | desired_height = WD_FRAMERECT_TOP + 15 + 3 * FONT_HEIGHT_NORMAL + 2 + WD_FRAMERECT_BOTTOM; | |
1424 | /* Add space for the cargo amount for each part. */ | |
1425 | for (const Vehicle *u = v; u != NULL; u = u->Next()) { | |
1426 | if (u->cargo_cap != 0) desired_height += FONT_HEIGHT_NORMAL + 1; | |
1427 | } | |
1428 | } else { | |
1429 | desired_height = WD_FRAMERECT_TOP + 4 * FONT_HEIGHT_NORMAL + 3 + WD_FRAMERECT_BOTTOM; | |
1430 | } | |
1431 | return desired_height; | |
1432 | } | |
1433 | ||
1400 | 1434 | virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) |
1401 | 1435 | { |
1402 | 1436 | switch (widget) { |
1424 | 1458 | const Vehicle *v = Vehicle::Get(this->window_number); |
1425 | 1459 | switch (v->type) { |
1426 | 1460 | case VEH_ROAD: |
1427 | if (RoadVehicle::From(v)->HasArticulatedPart()) { | |
1428 | /* An articulated RV has its text drawn under the sprite instead of after it, hence 15 pixels extra. */ | |
1429 | size->height = WD_FRAMERECT_TOP + 15 + 3 * FONT_HEIGHT_NORMAL + 2 + WD_FRAMERECT_BOTTOM; | |
1430 | /* Add space for the cargo amount for each part. */ | |
1431 | for (const Vehicle *u = v; u != NULL; u = u->Next()) { | |
1432 | if (u->cargo_cap != 0) size->height += FONT_HEIGHT_NORMAL + 1; | |
1433 | } | |
1434 | } else { | |
1435 | size->height = WD_FRAMERECT_TOP + 4 * FONT_HEIGHT_NORMAL + 3 + WD_FRAMERECT_BOTTOM; | |
1436 | } | |
1461 | size->height = this->GetRoadVehDetailsHeight(v); | |
1437 | 1462 | break; |
1438 | 1463 | |
1439 | 1464 | case VEH_SHIP: |
0 | /* $Id: vehicle_type.h 18963 2010-01-30 16:27:35Z terkhen $ */ | |
0 | /* $Id: vehicle_type.h 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
27 | 27 | VEH_INVALID = 0xFF, ///< Non-existing type of vehicle. |
28 | 28 | }; |
29 | 29 | DECLARE_POSTFIX_INCREMENT(VehicleType); |
30 | template <> struct EnumPropsT<VehicleType> : MakeEnumPropsT<VehicleType, byte, VEH_TRAIN, VEH_END, VEH_INVALID, 3> {}; | |
30 | 31 | /** It needs to be 8bits, because we save and load it as such */ |
31 | 32 | typedef SimpleTinyEnumT<VehicleType, byte> VehicleTypeByte; |
32 | 33 |
0 | /* $Id: vehiclelist.cpp 17248 2009-08-21 20:21:05Z rubidium $ */ | |
0 | /* $Id: vehiclelist.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
75 | 75 | * <li>VLW_WAYPOINT_LIST: index of waypoint to generate a list for</li> |
76 | 76 | * </ul> |
77 | 77 | * @param window_type The type of window the list is for, using the VLW_ flags in vehicle_gui.h |
78 | * @return false if invalid list is requested | |
78 | 79 | */ |
79 | void GenerateVehicleSortList(VehicleList *list, VehicleType type, Owner owner, uint32 index, uint16 window_type) | |
80 | bool GenerateVehicleSortList(VehicleList *list, VehicleType type, Owner owner, uint32 index, uint16 window_type) | |
80 | 81 | { |
81 | 82 | list->Clear(); |
82 | 83 | |
100 | 101 | |
101 | 102 | case VLW_SHARED_ORDERS: |
102 | 103 | /* Add all vehicles from this vehicle's shared order list */ |
103 | for (v = Vehicle::Get(index); v != NULL; v = v->NextShared()) { | |
104 | v = Vehicle::GetIfValid(index); | |
105 | if (v == NULL || v->type != type || !v->IsPrimaryVehicle()) return false; | |
106 | ||
107 | for (; v != NULL; v = v->NextShared()) { | |
104 | 108 | *list->Append() = v; |
105 | 109 | } |
106 | 110 | break; |
152 | 156 | } |
153 | 157 | break; |
154 | 158 | |
155 | default: NOT_REACHED(); | |
159 | default: return false; | |
156 | 160 | } |
157 | 161 | |
158 | 162 | list->Compact(); |
163 | return true; | |
159 | 164 | } |
0 | /* $Id: vehiclelist.h 18809 2010-01-15 16:41:15Z rubidium $ */ | |
0 | /* $Id: vehiclelist.h 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
18 | 18 | |
19 | 19 | typedef SmallVector<const Vehicle *, 32> VehicleList; |
20 | 20 | |
21 | void GenerateVehicleSortList(VehicleList *list, VehicleType type, Owner owner, uint32 index, uint16 window_type); | |
21 | bool GenerateVehicleSortList(VehicleList *list, VehicleType type, Owner owner, uint32 index, uint16 window_type); | |
22 | 22 | void BuildDepotVehicleList(VehicleType type, TileIndex tile, VehicleList *engine_list, VehicleList *wagon_list, bool individual_wagons = false); |
23 | 23 | |
24 | 24 | #endif /* VEHICLELIST_H */ |
0 | /* $Id: dedicated_v.cpp 18809 2010-01-15 16:41:15Z rubidium $ */ | |
0 | /* $Id: dedicated_v.cpp 19603 2010-04-11 10:57:21Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
299 | 299 | |
300 | 300 | cur_ticks = GetTime(); |
301 | 301 | _realtime_tick += cur_ticks - prev_cur_ticks; |
302 | if (cur_ticks >= next_tick || cur_ticks < prev_cur_ticks) { | |
302 | if (cur_ticks >= next_tick || cur_ticks < prev_cur_ticks || _ddc_fastforward) { | |
303 | 303 | next_tick = cur_ticks + 30; |
304 | 304 | |
305 | 305 | GameLoop(); |
306 | 306 | UpdateWindows(); |
307 | 307 | } |
308 | CSleep(1); | |
308 | ||
309 | /* Don't sleep when fast forwarding (for desync debugging) */ | |
310 | if (!_ddc_fastforward) CSleep(1); | |
309 | 311 | } |
310 | 312 | } |
311 | 313 |
0 | /* $Id: water_cmd.cpp 18872 2010-01-21 01:38:13Z rubidium $ */ | |
0 | /* $Id: water_cmd.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
103 | 103 | */ |
104 | 104 | CommandCost CmdBuildShipDepot(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
105 | 105 | { |
106 | TileIndex tile2; | |
107 | ||
108 | CommandCost ret; | |
109 | ||
110 | Axis axis = Extract<Axis, 0>(p1); | |
111 | ||
112 | tile2 = tile + (axis == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1)); | |
106 | Axis axis = Extract<Axis, 0, 1>(p1); | |
107 | ||
108 | TileIndex tile2 = tile + (axis == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1)); | |
113 | 109 | |
114 | 110 | if (!IsWaterTile(tile) || !IsWaterTile(tile2)) { |
115 | 111 | return_cmd_error(STR_ERROR_MUST_BE_BUILT_ON_WATER); |
124 | 120 | |
125 | 121 | WaterClass wc1 = GetWaterClass(tile); |
126 | 122 | WaterClass wc2 = GetWaterClass(tile2); |
127 | ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); | |
123 | CommandCost ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); | |
128 | 124 | if (ret.Failed()) return CMD_ERROR; |
129 | 125 | ret = DoCommand(tile2, 0, 0, flags, CMD_LANDSCAPE_CLEAR); |
130 | 126 | if (ret.Failed()) return CMD_ERROR; |
290 | 286 | { |
291 | 287 | CommandCost cost(EXPENSES_CONSTRUCTION); |
292 | 288 | |
293 | if (p1 >= MapSize()) return CMD_ERROR; | |
289 | if (p1 >= MapSize() || p2 > 2) return CMD_ERROR; | |
294 | 290 | |
295 | 291 | /* Outside of the editor you can only build canals, not oceans */ |
296 | 292 | if (p2 != 0 && _game_mode != GM_EDITOR) return CMD_ERROR; |
0 | /* $Id: waypoint_cmd.cpp 18921 2010-01-26 23:03:47Z yexo $ */ | |
0 | /* $Id: waypoint_cmd.cpp 19665 2010-04-17 22:27:49Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
10 | 10 | |
11 | 11 | #include "stdafx.h" |
12 | 12 | |
13 | #include "cmd_helper.h" | |
13 | 14 | #include "command_func.h" |
14 | 15 | #include "landscape.h" |
15 | 16 | #include "bridge_map.h" |
213 | 214 | CommandCost CmdBuildRailWaypoint(TileIndex start_tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text) |
214 | 215 | { |
215 | 216 | /* Unpack parameters */ |
216 | Axis axis = (Axis)GB(p1, 4, 1); | |
217 | Axis axis = Extract<Axis, 4, 1>(p1); | |
217 | 218 | byte width = GB(p1, 8, 8); |
218 | 219 | byte height = GB(p1, 16, 8); |
219 | 220 | bool adjacent = HasBit(p1, 24); |
220 | 221 | |
221 | StationClassID spec_class = (StationClassID)GB(p2, 0, 8); | |
222 | StationClassID spec_class = Extract<StationClassID, 0, 8>(p2); | |
222 | 223 | byte spec_index = GB(p2, 8, 8); |
223 | 224 | StationID station_to_join = GB(p2, 16, 16); |
224 | 225 |
0 | /* $Id: window.cpp 19258 2010-02-25 21:18:38Z rubidium $ */ | |
0 | /* $Id: window.cpp 19567 2010-04-05 21:34:47Z rubidium $ */ | |
1 | 1 | |
2 | 2 | /* |
3 | 3 | * This file is part of OpenTTD. |
547 | 547 | if (this->resize.step_height > 1) dy -= dy % (int)this->resize.step_height; |
548 | 548 | |
549 | 549 | ResizeWindow(this, dx, dy); |
550 | this->OnResize(); | |
551 | this->SetDirty(); | |
550 | /* ResizeWindow() does this->SetDirty() already, no need to do it again here. */ | |
552 | 551 | } |
553 | 552 | |
554 | 553 | /** Set the shaded state of the window to \a make_shaded. |
961 | 960 | if (this->resize.step_height > 1) enlarge_y -= enlarge_y % (int)this->resize.step_height; |
962 | 961 | |
963 | 962 | ResizeWindow(this, enlarge_x, enlarge_y); |
964 | } | |
965 | ||
966 | /* Always call OnResize; that way the scrollbars and matrices get initialized */ | |
967 | this->OnResize(); | |
963 | /* ResizeWindow() calls this->OnResize(). */ | |
964 | } else { | |
965 | /* Always call OnResize; that way the scrollbars and matrices get initialized. */ | |
966 | this->OnResize(); | |
967 | } | |
968 | 968 | |
969 | 969 | int nx = this->left; |
970 | 970 | int ny = this->top; |
1412 | 1412 | */ |
1413 | 1413 | void ResizeWindow(Window *w, int delta_x, int delta_y) |
1414 | 1414 | { |
1415 | if (delta_x == 0 && delta_y == 0) return; | |
1416 | ||
1417 | w->SetDirty(); | |
1418 | ||
1419 | uint new_xinc = max(0, (w->nested_root->resize_x == 0) ? 0 : (int)(w->nested_root->current_x - w->nested_root->smallest_x) + delta_x); | |
1420 | uint new_yinc = max(0, (w->nested_root->resize_y == 0) ? 0 : (int)(w->nested_root->current_y - w->nested_root->smallest_y) + delta_y); | |
1421 | assert(w->nested_root->resize_x == 0 || new_xinc % w->nested_root->resize_x == 0); | |
1422 | assert(w->nested_root->resize_y == 0 || new_yinc % w->nested_root->resize_y == 0); | |
1423 | ||
1424 | w->nested_root->AssignSizePosition(ST_RESIZE, 0, 0, w->nested_root->smallest_x + new_xinc, w->nested_root->smallest_y + new_yinc, _dynlang.text_dir == TD_RTL); | |
1425 | w->width = w->nested_root->current_x; | |
1426 | w->height = w->nested_root->current_y; | |
1415 | if (delta_x != 0 || delta_y != 0) { | |
1416 | w->SetDirty(); | |
1417 | ||
1418 | uint new_xinc = max(0, (w->nested_root->resize_x == 0) ? 0 : (int)(w->nested_root->current_x - w->nested_root->smallest_x) + delta_x); | |
1419 | uint new_yinc = max(0, (w->nested_root->resize_y == 0) ? 0 : (int)(w->nested_root->current_y - w->nested_root->smallest_y) + delta_y); | |
1420 | assert(w->nested_root->resize_x == 0 || new_xinc % w->nested_root->resize_x == 0); | |
1421 | assert(w->nested_root->resize_y == 0 || new_yinc % w->nested_root->resize_y == 0); | |
1422 | ||
1423 | w->nested_root->AssignSizePosition(ST_RESIZE, 0, 0, w->nested_root->smallest_x + new_xinc, w->nested_root->smallest_y + new_yinc, _dynlang.text_dir == TD_RTL); | |
1424 | w->width = w->nested_root->current_x; | |
1425 | w->height = w->nested_root->current_y; | |
1426 | } | |
1427 | ||
1428 | /* Always call OnResize to make sure everything is initialised correctly if it needs to be. */ | |
1429 | w->OnResize(); | |
1427 | 1430 | w->SetDirty(); |
1428 | 1431 | } |
1429 | 1432 | |
1678 | 1681 | |
1679 | 1682 | /* ResizeWindow sets both pre- and after-size to dirty for redrawal */ |
1680 | 1683 | ResizeWindow(w, x, y); |
1681 | w->OnResize(); | |
1682 | 1684 | return false; |
1683 | 1685 | } |
1684 | 1686 | } |
2547 | 2549 | * in a 'backup'-desc that the window should always be centred. */ |
2548 | 2550 | switch (w->window_class) { |
2549 | 2551 | case WC_MAIN_TOOLBAR: |
2550 | if (neww - w->width != 0) { | |
2551 | ResizeWindow(w, min(neww, 640) - w->width, 0); | |
2552 | w->OnResize(); | |
2553 | } | |
2552 | if (neww - w->width != 0) ResizeWindow(w, min(neww, 640) - w->width, 0); | |
2554 | 2553 | |
2555 | 2554 | top = w->top; |
2556 | 2555 | left = PositionMainToolbar(w); // changes toolbar orientation |