diff --git a/.gitignore b/.gitignore index 33f381a..e6bb10e 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ *.kdev4 *.ods# .~lock* +/docu diff --git a/class/astar.nut b/class/astar.nut new file mode 100644 index 0000000..ced738a --- /dev/null +++ b/class/astar.nut @@ -0,0 +1,822 @@ +/** @file astar.nut + * @brief Classes to help with route-searching. + */ + +/** + * @brief astar.nut + * Classes to help with route-searching. + * Based on the A* algorithm. + */ + +/** + * Nodes for A* + */ +class astar_node extends coord3d +{ + previous = null // previous node + cost = -1 // cost to reach this node + dist = -1 // distance to target + constructor(c, p, co, d) + { + x = c.x + y = c.y + z = c.z + previous = p + cost = co + dist = d + } + function is_straight_move(d) + { + return d == dir || (previous && previous.dir == d) + } +} + +/** + * Class to perform A* searches. + * + * Derived classes have to implement: + * process_node(node): add nodes to open list reachable by node + * + * To use this: + * 1) call prepare_search + * 2) add tiles to target array + * 3) call compute_bounding_box + * 4) add start tiles to open list + * 5) call search() + * 6) use route + */ +class astar +{ + closed_list = null // table + nodes = null // array of astar_node + heap = null // binary heap + targets = null // array of coord3d's + + boundingbox = null // box containing all the targets + + route = null // route, reversed: target to start + + // statistics + calls_open = 0 + calls_closed = 0 + calls_pop = 0 + + // costs - can be fine-tuned + cost_straight = 10 + cost_curve = 14 + + constructor() + { + closed_list = {} + heap = simple_heap_x() + targets = [] + + } + + function prepare_search() + { + closed_list = {} + nodes = [] + route = [] + heap.clear() + targets = [] + calls_open = 0 + calls_closed = 0 + calls_pop = 0 + } + + // adds node c to closed list + function add_to_close(c) + { + closed_list[ coord3d_to_key(c) ] <- 1 + calls_closed++ + } + + function test_and_close(c) + { + local key = coord3d_to_key(c) + if (key in closed_list) { + return false + } + else { + closed_list[ key ] <- 1 + calls_closed++ + return true + } + } + + function is_closed(c) + { + local key = coord3d_to_key(c) + return (key in closed_list) + } + + // add node c to open list with give weight + function add_to_open(c, weight) + { + local i = nodes.len() + nodes.append(c) + heap.insert(weight, i) + calls_open++ + } + + function search() + { + // compute bounding box of targets + compute_bounding_box() + + local current_node = null + while (!heap.is_empty()) { + calls_pop++ + + local wi = heap.pop() + current_node = nodes[wi.value] + local dist = current_node.dist + + // target reached + if (dist == 0) break; + // already visited previously + if (!test_and_close(current_node)) { + current_node = null + continue; + } + // investigate neighbours and put them into open list + process_node(current_node) + + if ( current_node != null ) { + check_way_last_tile = current_node + } + + current_node = null + } + + route = [] + if (current_node) { + // found route + route.append(current_node) + + while (current_node.previous) { + current_node = current_node.previous + route.append(current_node) + } + } + + print("Calls: pop = " + calls_pop + ", open = " + calls_open + ", close = " + calls_closed) + } + + /** + * Computes bounding box of all targets to speed up distance computation. + */ + function compute_bounding_box() + { + if (targets.len()>0) { + local first = targets[0] + boundingbox = { xmin = first.x, xmax = first.x, ymin = first.y, ymax = first.y } + + for(local i=1; i < targets.len(); i++) { + local t = targets[i] + if (boundingbox.xmin > t.x) boundingbox.xmin = t.x; + if (boundingbox.xmax < t.x) boundingbox.xmax = t.x; + if (boundingbox.ymin > t.y) boundingbox.ymin = t.y; + if (boundingbox.ymax < t.y) boundingbox.ymax = t.y; + } + } + } + + /** + * Estimates distance to target. + * Returns zero if and only if c is a target tile. + */ + function estimate_distance(c) + { + local d = 0 + local curved = 0 + + // distance to bounding box + local dx = boundingbox.xmin - c.x + if (dx <= 0) dx = c.x - boundingbox.xmax; + if (dx > 0) d += dx; else dx = 0; + + local dy = boundingbox.ymin - c.y + if (dy <= 0) dy = c.y - boundingbox.ymax + if (dy > 0) d += dy; else dy = 0; + + if (d > 0) { + // cost to bounding box + return cost_straight * d + (dx*dy > 0 ? cost_curve - cost_straight : 0); + } + else { + local t = targets[0] + d = abs(t.x-c.x) + abs(t.y-c.y) + + // inside bounding box + for(local i=1; i < targets.len(); i++) { + local t = targets[i] + local dx = abs(t.x-c.x) + local dy = abs(t.y-c.y) + d = min(d, cost_straight * (dx+dy) + (dx*dy > 0 ? cost_curve - cost_straight : 0)) + } + } + return d + } +} + +/** + * Class to search a route along existing ways. + */ +class astar_route_finder extends astar +{ + wt = wt_all + + constructor(wt_) + { + base.constructor() + wt = wt_ + if ( [wt_all, wt_invalid, wt_water, wt_air].find(wt) ) { + throw("Using this waytype is going to be inefficient. Use at own risk.") + } + cost_curve = cost_straight + } + + function process_node(cnode) + { + local from = tile_x(cnode.x, cnode.y, cnode.z) + local back = dir.backward(cnode.dir) + // allowed directions + local dirs = from.get_way_dirs_masked(wt) + + for(local d = 1; d<16; d*=2) { + // do not go backwards, only along existing ways + if ( d == back || ( (dirs & d) == 0) ) { + continue + } + + local to = from.get_neighbour(wt, d) + if (to) { + if (!is_closed(to)) { + // estimate moving cost + local move = cnode.is_straight_move(d) ? cost_straight : cost_curve + local dist = estimate_distance(to) + local cost = cnode.cost + move + local weight = cost //+ dist + local node = ab_node(to, cnode, cost, dist, d) + + add_to_open(node, weight) + } + } + } + } + + // start and end have to be arrays of objects with 3d-coordinates + function search_route(start, end) + { + prepare_search() + foreach (e in end) { + targets.append(e); + } + compute_bounding_box() + + foreach (s in start) + { + local dist = estimate_distance(s) + add_to_open(ab_node(s, null, 1, dist+1, 0, 0), dist+1) + } + + search() + + if (route.len() > 0) { + return { start = route[route.len()-1], end = route[0], routes = route } + } + print("No route found") + return { err = "No route" } + } +} + +/** + * Class to search a route along existing ways. + */ +class astar_route_finder extends astar +{ + wt = wt_all + + constructor(wt_) + { + base.constructor() + wt = wt_ + if ( [wt_all, wt_invalid, wt_water, wt_air].find(wt) ) { + throw("Using this waytype is going to be inefficient. Use at own risk.") + } + cost_curve = cost_straight + } + + function process_node(cnode) + { + local from = tile_x(cnode.x, cnode.y, cnode.z) + local back = dir.backward(cnode.dir) + // allowed directions + local dirs = from.get_way_dirs_masked(wt) + + for(local d = 1; d<16; d*=2) { + // do not go backwards, only along existing ways + if ( d == back || ( (dirs & d) == 0) ) { + continue + } + + local to = from.get_neighbour(wt, d) + if (to) { + if (!is_closed(to)) { + // estimate moving cost + local move = cnode.is_straight_move(d) ? cost_straight : cost_curve + local dist = estimate_distance(to) + local cost = cnode.cost + move + local weight = cost //+ dist + local node = ab_node(to, cnode, cost, dist, d) + + add_to_open(node, weight) + } + } + } + } + + // start and end have to be arrays of objects with 3d-coordinates + function search_route(start, end) + { + prepare_search() + foreach (e in end) { + targets.append(e); + } + compute_bounding_box() + + foreach (s in start) + { + local dist = estimate_distance(s) + add_to_open(ab_node(s, null, 1, dist+1, 0, 0), dist+1) + } + + search() + + if (route.len() > 0) { + return { start = route.top(), end = route[0], routes = route } + } + print("No route found") + return { err = "No route" } + } +} + +class ab_node extends ::astar_node +{ + dir = 0 // direction to reach this node + flag = 0 // flag internal to the route searcher + constructor(c, p, co, d, di, fl=0) + { + base.constructor(c, p, co, d) + dir = di + flag = fl + } +} + +/** + * Helper class to find bridges and spots to place them. + */ +class pontifex +{ + player = null + bridge = null + + constructor(pl, way) + { + // print messages box + // 1 = erreg + // 2 = list bridges + local print_message_box = 0 + local wt_name = ["", "road", "rail", "water"] + + if ( print_message_box > 1 ) { + gui.add_message_at("____________ Search bridge ___________", world.get_time()) + } + player = pl + local list = bridge_desc_x.get_available_bridges(way.get_waytype()) + local len = list.len() + local way_speed = way.get_topspeed() + local bridge_min_len = 5 + + if (len>0) { + bridge = list[0] + if ( print_message_box == 2 ) { + gui.add_message_at(" ***** way : " + wt_name[way.get_waytype()], world.get_time()) + gui.add_message_at(" ***** bridge : " + bridge.get_name(), world.get_time()) + gui.add_message_at(" ***** get_max_length : " + bridge.get_max_length(), world.get_time()) + } + + for(local i=1; i bridge_min_len || b.get_max_length() == 0 ) { + if (bridge.get_topspeed() < way_speed) { + if (b.get_topspeed() > bridge.get_topspeed()) { + bridge = b + } + } + else { + if (way_speed < b.get_topspeed() && b.get_topspeed() < bridge.get_topspeed()) { + bridge = b + } + } + } + } + } + if ( print_message_box > 1 ) { + gui.add_message_at(" *** bridge found : " + bridge.get_name() + " way : " + wt_name[way.get_waytype()], world.get_time()) + gui.add_message_at("--------- Search bridge end ----------", world.get_time()) + } + } + + function find_end(pos, dir, min_length) + { + return bridge_planner_x.find_end(player, pos, dir, bridge, min_length) + } +} + +/** + * Class to search a route and to build a connection (i.e. roads). + * Builds bridges. But not tunnels (not implemented). + */ +class astar_builder extends astar +{ + builder = null + bridger = null + way = null + + function process_node(cnode) + { + local from = tile_x(cnode.x, cnode.y, cnode.z) + local back = dir.backward(cnode.dir) + + for(local d = 1; d<16; d*=2) { + // do not go backwards + if (d == back) { + continue + } + // continue straight after a bridge + if (cnode.flag == 1 && d != cnode.dir) { + continue + } + + local to = from.get_neighbour(wt_all, d) + if (to) { + if (builder.is_allowed_step(from, to) && !is_closed(to)) { + // estimate moving cost + local move = cnode.is_straight_move(d) ? cost_straight : cost_curve + local dist = estimate_distance(to) + // is there already a road? + if (!to.has_way(wt_road)) { + move += 8 + } + + local cost = cnode.cost + move + local weight = cost + dist + local node = ab_node(to, cnode, cost, dist, d) + + add_to_open(node, weight) + } + // try bridges + else if (bridger && d == cnode.dir && cnode.flag != 1) { + local len = 1 + local max_len = bridger.bridge.get_max_length() + + do { + local to = bridger.find_end(from, d, len) + if (to.x < 0 || is_closed(to)) { + break + } + local bridge_len = abs(from.x-to.x) + abs(from.y-to.y) + + // long bridges bad + local bridge_factor = 3 + + if ( bridge_len > 20 ) { + bridge_factor = 4 + }/* else if ( bridge_len > 8 ) { + bridge_factor = 4 + }*/ + local move = bridge_len * cost_straight * bridge_factor /*extra bridge penalty */; + // set distance to 1 if at a target tile + local dist = max(estimate_distance(to), 1) + + local cost = cnode.cost + move + local weight = cost + dist + local node = ab_node(to, cnode, cost, dist, d, 1 /*bridge*/) + + add_to_open(node, weight) + + len = bridge_len + 1 + } while (len <= max_len) + } + } + } + } + + function search_route(start, end, build_route = 1) + { + + if ( start.len() == 0 || end.len() == 0 ) { + if ( print_message_box > 0 ) { + gui.add_message_at(" *** invalid tile : start or end ", world.get_time()) + } + return { err = "No route" } + } + + prepare_search() + foreach (e in end) { + targets.append(e); + } + compute_bounding_box() + + foreach (s in start) + { + local dist = estimate_distance(s) + add_to_open(ab_node(s, null, 1, dist+1, 0, 0), dist+1) + } + + search() + + local bridge_tiles = 0 + local count_tree = 0 + + if (route.len() > 0) { + remove_field( route[0] ) + + // do not try to build in tunnels + local is_tunnel_0 = tile_x(route[0].x, route[0].y, route[0].z).find_object(mo_tunnel) + local is_tunnel_1 = is_tunnel_0 + + local last_treeway_tile = null + + for (local i = 1; i 1 && i < (route.len()-1) ) { + local tx_0 = tile_x(route[i-1].x, route[i-1].y, route[i-1].z) + local tx_1 = tile_x(route[i+1].x, route[i+1].y, route[i+1].z) + if ( tx_0.find_object(mo_way) != null && tx_1.find_object(mo_way) != null ) { + //gui.add_message_at(" check tx_0 and tx_1 ", t) + if ( test_exists_way == null ) { + local ty = route[i] + local cnv_count = tx_0.find_object(mo_way).get_convoys_passed()[0] + tx_0.find_object(mo_way).get_convoys_passed()[1] + + if ( last_treeway_tile != null && cnv_count == 0 ) { + ty = route[last_treeway_tile] + } + err = test_select_way(tx_1, tx_0, ty, way.get_waytype()) + //gui.add_message_at(" check tx_0 and tx_1 : test_select_way " + err, t) + if ( err ) { + check_build_tile = false + } + err = null + } + } else if ( test_exists_way != null && test_exists_way.get_waytype() == way.get_waytype() ) { + check_build_tile = false + } + if ( tx_0.find_object(mo_signal) != null ) { + check_build_tile = false + + } + } + + if ( test_exists_way != null && test_exists_way.get_owner() != our_player.nr ) { //&& last_treeway_tile != null + //gui.add_message_at("test_exists_way " + test_exists_way + " last_treeway_tile " + last_treeway_tile + " test_exists_way.get_waytype() " + test_exists_way.get_waytype() + " !t.is_bridge() " + !t.is_bridge() + " t.get_slope() " + t.get_slope(), t) + + test_exists_way = null + + + } + + if ( t.is_bridge() ) { + //gui.add_message_at(" t.is_bridge() " + t.is_bridge(), t) + last_treeway_tile = null + } + + if ( i > 2 && test_exists_way != null && last_treeway_tile != null && test_exists_way.get_waytype() == wt_rail && t.get_slope() == 0 ) { + //gui.add_message_at(our_player, " (624) ", t) + err = test_select_way(route[i], route[last_treeway_tile], route[i-1], way.get_waytype()) + if ( err ) { + last_treeway_tile = null + } else { + test_exists_way = null + last_treeway_tile = null + } + err = null + } + /*if ( way.get_waytype() == wt_rail && !t.is_bridge() && t.get_slope == 0 ) { + t = tile_x(route[i-1].x, route[i-1].y, route[i-1].z) + d = t.get_way_dirs(way.get_waytype()) + if ( dir.is_threeway(d) ) { + last_treeway_tile = i - 1 + } else { + last_treeway_tile = null + test_exists_way = null + } + + }*/ + if ( test_exists_way != null && ( i < 2 || test_exists_way.get_waytype() == wt_road ) ) { + test_exists_way = null + } + + local build_tile = false + if ( settings.get_pay_for_total_distance_mode == 2 && test_exists_way == null && check_build_tile ) { + err = command_x.build_way(our_player, route[i-1], route[i], way, true) + build_tile = true + } else if ( test_exists_way == null && check_build_tile ) { + err = command_x.build_way(our_player, route[i-1], route[i], way, false) + build_tile = true + } + if (err) { + //gui.add_message_at("Failed to build " + way.get_name() + " from " + coord_to_string(route[i-1]) + " to " + coord_to_string(route[i]) +"\n" + err, route[i]) + // remove way + // route[0] to route[i] + //err = command_x.remove_way(our_player, route[0], route[i]) + remove_wayline(route, (i - 1), way.get_waytype()) + } else { + t = tile_x(route[i-1].x, route[i-1].y, route[i-1].z) + d = t.get_way_dirs(way.get_waytype()) + //gui.add_message_at(" (666) dir.is_threeway(d) " + dir.is_threeway(d), t) + if ( dir.is_threeway(d) && way.get_waytype() == wt_rail && build_tile ) { + last_treeway_tile = i - 1 + } + } + } else if ( build_route == 0 ) { + if ( tile_x(route[i].x, route[i].y, route[i].z).find_object(mo_tree) != null ) { + count_tree++ + } + } + //} + } + else if (route[i-1].flag == 1) { + // plan build bridge + + local b_tiles = 0 + + // + if ( route[i-1].x == route[i].x ) { + if ( route[i-1].y > route[i].y ) { + b_tiles = (route[i-1].y - route[i].y + 1) + bridge_tiles += b_tiles + } else { + b_tiles = (route[i].y - route[i-1].y + 1) + bridge_tiles += b_tiles + } + } else if ( route[i-1].y == route[i].y ) { + if ( route[i-1].x > route[i].x ) { + b_tiles = (route[i-1].x - route[i].x + 1) + bridge_tiles += b_tiles + } else { + b_tiles = (route[i].x - route[i-1].x + 1) + bridge_tiles += b_tiles + } + } + + + if ( build_route == 1 ) { + // check ground under bridge + // check_ground() return true build bridge + // check_ground() return false no build bridge + + local build_bridge = true + // check whether the ground can be adjusted and no bridge is necessary + // bridge len <= 4 tiles + if ( b_tiles < 8 ) { + build_bridge = check_ground(tile_x(route[i-1].x, route[i-1].y, route[i-1].z), tile_x(route[i].x, route[i].y, route[i].z), way) + //gui.add_message_at("check_ground(pos_s, pos_e) --- " + build_bridge, route[i-1]) + } + + if ( build_bridge ) { + err = command_x.build_bridge(our_player, route[i-1], route[i], bridger.bridge) + if (err) { + // check whether bridge exists + sleep() + local arf = astar_route_finder(wt_road) + local res_bridge = arf.search_route([route[i-1]], [route[i]]) + + if ("routes" in res_bridge && res_bridge.routes.len() == abs(route[i-1].x-route[i].x)+abs(route[i-1].y-route[i].y)+1) { + // there is a bridge, continue + err = null + gui.add_message_at("Failed to build bridge from " + coord_to_string(route[i-1]) + " to " + coord_to_string(route[i]) +"\n" + err, route[i]) + } else { + remove_wayline(route, (i - 1), way.get_waytype()) + // remove bridge tiles build by not build bridge + + } + } + } + + } else if ( build_route == 0 ) { + } + + } + if (err) { + return { err = err } + } + } + return { start = route.top(), end = route[0], routes = route, bridge_lens = bridge_tiles, bridge_obj = bridger.bridge, tiles_tree = count_tree } + } + print("No route found") + return { err = "No route" } + } +} + +/* + * + * + */ +function test_select_way(start, end, wt = wt_rail) { + //gui.add_message_at("start " + coord3d_to_string(start) + " end " + coord3d_to_string(end) + " t_end " + coord3d_to_string(t_end), start) + local asf = astar_route_finder(wt) + local wayline = asf.search_route([start], [end]) + if ( "err" in wayline ) { + //gui.add_message_at("no route from " + coord3d_to_string(start) + " to " + coord3d_to_string(end) , start) + if ( check_way_last_tile != null ) { + local tile = tile_x(check_way_last_tile.x, check_way_last_tile.y, check_way_last_tile.z) + //gui.add_message("test_select_way last tile " + coord3d_to_string(tile)) + r_way.c = tile + + //if ( check_way_mark_tile == null ) { check_way_mark_tile = check_way_last_tile } + /*local sasf = astar_route_finder(wt) + local waybuild = sasf.search_route([start], [tile]) + if ( "err" in waybuild ) { + //gui.add_message("error build ") + } else { + foreach(node in waybuild.routes) { + local t = tile_x(node.x, node.y, node.z) + // gui.add_message("test tile " + coord3d_to_string(t)) + + + } + }*/ + + } else { + //gui.add_message("test_select_way last tile - null") + } + + return false + } else { + //gui.add_message_at("exists route from " + coord3d_to_string(start) + " to " + coord3d_to_string(end) , start) + + return true + } +} + +function unmark_waybuild() { + if ( check_way_mark_tile != null ) { + + local w_dir = my_tile(check_way_mark_tile).get_way_dirs(wt_rail) + if ( dir.is_twoway(w_dir) ) { + + gui.add_message("### check_way_mark_tile " + coord3d_to_string(check_way_mark_tile)) + local r = my_tile(check_way_mark_tile).find_object(mo_way) + if ( r ) { r.unmark() } + //r = my_tile(check_way_mark_tile).find_object(mo_label) + //if ( r ) { r.remove_object(player_x(0), mo_label) } + check_way_mark_tile = check_way_last_tile + } + } else { + check_way_mark_tile = check_way_last_tile + } +} \ No newline at end of file diff --git a/class/class_basic_chapter.nut b/class/class_basic_chapter.nut index 24bd71c..28bd6dd 100644 --- a/class/class_basic_chapter.nut +++ b/class/class_basic_chapter.nut @@ -1,11 +1,17 @@ -/* - * class basis_chapter - * - * - * Can NOT be used in network game ! - */ +/** + * @file class_basic_chapter.nut + * @brief global parameters and functions + * + * + * Can NOT be used in network game ! + * + */ + +/** + * @brief global parameters and functions + */ -//Global coordinate for mark build tile +// Global coordinate for mark build tile currt_pos <- null //----------------Para las señales de paso------------------------ @@ -18,6 +24,8 @@ sigcoord <- null r_way <- { c = coord3d(0, 0, 0), p = 0, r = false, m = false, l = false, s = 0, z = null} r_way_list <- {} wayend <- coord3d(0, 0, 0) +check_way_last_tile <- null +check_way_mark_tile <- null //------------------------------------------------------------------------------------------------------------- // Mark / Unmark build in to link @@ -30,7 +38,9 @@ tile_delay <- 0x0000000f & time() //delay for mark tiles gl_tile_i <- 0 /** - * chapter description : this is a placeholder class + * @class basic_chapter + * @brief class to chapter description : this is a placeholder class + * */ class basic_chapter { @@ -43,15 +53,15 @@ class basic_chapter glpos = coord3d(0,0,0) gltool = null glresult = null - tmpsw = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + tmpsw = [] tmpcoor = [] - stop_flag = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + stop_flag = [] st_cover = settings.get_station_coverage() glmark = coord3d(0,0,0) //coordenadas para realizar unmark //Para las pendientes - slope_estatus = [0,0,0,0,0,0] + slope_estatus = [] //--------------------way scan ------------------------------------ cursor_sw = false @@ -68,6 +78,8 @@ class basic_chapter map_siz = world.get_size() + pl_unown = player_x(15) + constructor(pl) { scenario.short_description = scenario_name + " - " + translate(this.chapter_name) @@ -75,6 +87,11 @@ class basic_chapter general_disabled_tools(pl) //this.set_all_rules(pl) this.step = 1 + + // fill arrays + reset_tmpsw() + reset_stop_flag() + slope_estatus.resize(6, 0) } // FUNCTIONS TO REWRITE @@ -97,45 +114,6 @@ class basic_chapter return text.tostring() } - /* - * calculate percentage chapter complete - * - * ch_steps = count chapter steps - * step = actual chapter step - * sup_steps = count sub steps in a chapter step - * sub_step = actual sub step in a chapter step - * - * no sub steps in chapter step, then set sub_steps and sub_step to 0 - * - * This function is called during a step() and can alter the map - * - */ - function chapter_percentage(ch_steps, ch_step, sub_steps, sub_step) - { - local percentage_step = 100 / ch_steps - - local percentage = percentage_step * ch_step - - local percentage_sub_step = 0 - if ( sub_steps > 0 && sub_step > 0) { - percentage_sub_step = (percentage_step / sub_steps ) * sub_step - percentage += percentage_sub_step - } - - if ( ch_step <= ch_steps ) { - percentage -= percentage_step - } - - // tutorial finish - if ( tutorial.len() == persistent.chapter && ch_steps == ch_step && sub_steps == sub_step ) { - percentage = 101 - } - - //gui.add_message("ch_steps "+ch_steps+" ch_step "+ch_step+" ch_steps "+sub_steps+" sub_step "+sub_step) - - return percentage - } - function is_chapter_completed(pl) { local percentage = 0 @@ -145,12 +123,13 @@ class basic_chapter // BASIC FUNCTIONS, NO REWRITE //Para arrancar vehiculos usando comm ---------------------------------------------------------------- - function comm_set_convoy(cov_nr, coord, name, veh_nr = false) - /*1 Numero de convoy actual,****** - * 2 coord del deposito, * - * 3 Name del vehiculo, * - * 4 Numero de remolques/bagones)*/ - { + function comm_set_convoy( cov_nr, coord, name, veh_nr = false ) { + /* 1 Numero de convoy actual, + * 2 coord del deposito, + * 3 Name del vehiculo, + * 4 Numero de remolques/bagones + */ + local pl = player_x(0) local depot = depot_x(coord.x, coord.y, coord.z) // Deposito /Garaje local cov_list = depot.get_convoy_list() // Lista de vehiculos en el deposito @@ -185,7 +164,7 @@ class basic_chapter } } - function comm_destroy_convoy(pl, coord){ + function comm_destroy_convoy( pl, coord ) { local depot = depot_x(coord.x, coord.y, coord.z) // Deposito /Garaje local cov_list = depot.get_convoy_list() // Lista de vehiculos en el deposito local d_nr = cov_list.len() //Numero de vehiculos en el deposito @@ -214,7 +193,7 @@ class basic_chapter return null } - function comm_get_line(player, wt, sched) + function comm_get_line(player, wt, sched, line_name) { player.create_line(wt) // find the line - it is a line without schedule and convoys @@ -223,6 +202,7 @@ class basic_chapter foreach(line in list) { if (line.get_waytype() == wt && line.get_schedule().entries.len()==0) { // right type, no schedule -> take this. + line.set_name(line_name) c_line = line break } @@ -234,10 +214,6 @@ class basic_chapter return c_line } - //---------------------------------------------------------------------------------------------------------------- - - //------------------------- - function checks_convoy_nr(nr, max) { for(local j=0;j7) { - - local text = ttext("The waittime in waystop {nr} '{name}' isn't {wait} {pos}") local txwait = get_wait_time_text(wait) - text.name = target_list[0].get_name() - text.pos = pos_to_text(coord) - text.wait = txwait - text.nr = (nr+1) - return text.tostring() + local iswait = get_wait_time_text(entrie.wait) + if(txwait!=iswait){ + local text = ttext("The waittime in waystop {nr} '{name}' isn't {wait} {pos}") + text.name = target_list[0].get_name() + text.pos = pos_to_text(coord) + text.wait = txwait + text.nr = (nr+1) + return text.tostring() + } } - return result + return null } function get_wait_time_text(wait) @@ -706,7 +665,7 @@ class basic_chapter return result } - function is_convoy_correct(depot,cov,veh,good_list,name, max_tile, is_st_tile = false) + function is_convoy_correct(depot, cov, veh, good_list, name, max_tile, is_st_tile = false) { local cov_list = depot.get_convoy_list() local cov_nr = cov_list.len() @@ -798,7 +757,7 @@ class basic_chapter if (cov_nr==cov) res.cov = true - //Check name car and cab + //Check name car and cab for (local j=0;j size) + return format(translate("The schedule needs to have %d waystops, but there are %d ."), size, nr) - if (conv_sch) - entries = conv_sch.entries - else - return 0 - local sch_nr = entries.len() - if (sch_nr!=all) - return 1 - if (entries[nr].load!=load) - return 2 - if (entries[nr].wait!=wait) - return 3 + for(local j=0;j0;j--){ - if (result==null) - result = is_conv_schedule_correct(pl, all, nr, 0, 0, cov, convoy, c_list[j], line) - else - break - nr++ - } - } - - if (result!=null){ - switch (result) { - case 4: - return translate("The line is not correct.") - break - - case 5: - return translate("First create a line for the vehicle.") - break - - default : - return translate("The schedule is not correct.") - break - } - } - - if (result == null){ - update_convoy_removed(convoy, pl) - - } - return result - } - - function set_schedule_convoy(result, pl, cov, convoy, selc, load, time, c_list, siz, line = false) - { - for(local j=0;j tile_b.x ) { + result = 6 + } + } else if ( tile_a.x == tile_b.x ) { + if ( tile_a.y < tile_b.y ) { + result = 3 + } else if ( tile_a.y > tile_b.y ) { + result = 2 + } + } + + return result + } //dir 0 = auto //dir 2 = coorda.y-- //dir 3 = coorda.y++ @@ -1335,11 +1216,14 @@ class basic_chapter if (!way) return res if (obj){ + if (obj == mo_wayobj){ + if(!way.is_electrified()){ way.mark() - if (!tun) - label_x.create(coora, player_x(1), translate("Here")) + + if (coora.z >= square_x(coora.x,coora.y).get_ground_tile().z) + label_x.create(coora, pl_unown, translate("Here")) return res } else{ @@ -1525,8 +1409,8 @@ class basic_chapter if (obj == mo_wayobj){ if(!way.is_electrified()){ way.mark() - if (!tun) - label_x.create(coora, player_x(1), translate("Here")) + if (coora.z >= square_x(coora.x,coora.y).get_ground_tile().z) + label_x.create(coora, pl_unown, translate("Here")) return res } @@ -1820,17 +1704,26 @@ class basic_chapter } - function all_control(result, wt, st, way, ribi, tool_id, pos, coor, name, plus = 0){ + function all_control(result, wt, st, tool_id, pos, coor, name, plus = 0){ local t = tile_x(coor.x, coor.y, coor.z) + local way = t.find_object(mo_way) local brig = t.find_object(mo_bridge) local desc = way_desc_x.get_available_ways(wt, st) + local ribi = 0 + if ( way ) { + if ( tool_id != tool_build_bridge ) + ribi = way.get_dirs() + if ( !t.has_way(gl_wt) ) + ribi = 0 + } + if ((tool_id==tool_remove_way)||(tool_id==tool_remover)){ if (way && way.get_waytype() != wt) return result else { local cur_key = coord3d_to_key(pos) - result = translate("Action not allowed")+" ("+pos.tostring()+")." + result = get_tile_message(1, pos) //translate("Action not allowed")+" ("+pos.tostring()+")." if(way && way.get_desc().get_system_type() == st_elevated) return null @@ -1868,16 +1761,20 @@ class basic_chapter else if ((pos.x == t.x && pos.y == t.y && pos.z == t.z)||(cursor_sw)){ if (tool_id==tool_build_way || tool_id==tool_build_tunnel){ if ((ribi==0) || (ribi==1) || (ribi==2) || (ribi==4) || (ribi==8)){ - if(t.find_object(mo_tunnel)){ - return null - } - foreach(d in desc){ + if(t.find_object(mo_tunnel)){ + return null + } + // check selected way + return check_select_way(name, wt) + + /*foreach(d in desc){ //gui.add_message(d.get_name()+" :: "+name) if(d.get_name() == name){ return null } - } - return translate("Action not allowed")+" ("+pos.tostring()+")." + }*/ + //return get_tile_message(1, pos) //translate("Action not allowed")+" ("+pos.tostring()+")." + } else{ under_lv = settings.get_underground_view_level() @@ -1894,7 +1791,7 @@ class basic_chapter } } else - return translate("Action not allowed")+" ("+pos.tostring()+")." + return get_tile_message(1, pos) //translate("Action not allowed")+" ("+pos.tostring()+")." } else if(brig) { if (tool_id==tool_build_way) { @@ -1907,10 +1804,10 @@ class basic_chapter foreach(d in desc){ //gui.add_message(d.get_name()+" :: "+name) if(d.get_name() == name){ - return translate("Connect the Track here")+" ("+coord3d(coor.x, coor.y, coor.z).tostring()+")." + return get_tile_message(11, coor) //translate("Connect the Track here")+" ("+coord3d(coor.x, coor.y, coor.z).tostring()+")." } } - return translate("Action not allowed")+" ("+pos.tostring()+")." + return get_tile_message(1, pos) //translate("Action not allowed")+" ("+pos.tostring()+")." } return "" } @@ -2052,7 +1949,7 @@ class basic_chapter return translate("The signal does not point in the correct direction")+" ("+coord(sigcoord[0].x,sigcoord[0].y).tostring()+")." } - function get_stop(pos,cs,result,load1,load2,cov,count,sw) + function get_stop(pos,cs,result,load1,load2,cov,count,sw) { local allret = {cs=cs,result=result,count=count,pot=null} local st_c = coord(pos.x,pos.y) @@ -2158,7 +2055,7 @@ class basic_chapter local ribi = way.get_dirs() if ((ribi==1)||(ribi==2)||(ribi==4)||(ribi==8)||(ribi==10)||(ribi==5)){ - label_x.create(c_label, player_x(1), translate(text)) + label_x.create(c_label, pl_unown, translate(text)) way.mark() local c_sa = coord(c_label.x, c_label.y) result.coord[stnr] = {x = c_sa.x, y = c_sa.y} @@ -2189,15 +2086,15 @@ class basic_chapter return result } - function get_dep_cov_nr(a,b){ + function get_dep_cov_nr(a,b){ local nr = -1 - for(local j=a;j take this. - line.set_name(line_name) - c_line = line - break - } - } + else if (cov_line.get_name() == line_name && cov_line.get_waytype() == wt){ + cov_line.change_schedule(play, sched) + return null + } + // find the line - it is a line without schedule and convoys + local list = play.get_line_list() + local c_line = null + foreach(line in list) { + if (line.get_name() == line_name && line.get_waytype() == wt){ + c_line = line + break } + else { + if (line.get_waytype() == wt && line.get_schedule().entries.len()==0) { + // right type, no schedule -> take this. + line.set_name(line_name) + c_line = line + break + } + } + } if(c_line){ c_line.change_schedule(play, sched) cov_list[0].set_line(play, c_line) } - return null - } - return null + return null } + return null + } function update_convoy_schedule(pl, wt, name, schedule) { //gui.add_message("noooo") @@ -2324,16 +2220,17 @@ class basic_chapter return null } - function is_stop_allowed(result, siz, c_list, pos) - { + function is_stop_allowed(tile, c_list, pos) { + + local result = get_tile_message(3, tile) local st_count=0 - for(local j=0;j%s %d: %s
", translate("Stop"), j+1, link) + } + else{ + local link = c.href(" ("+c.tostring()+")") + local stop_tx = translate("Build Stop here:") + list_tx += format("%s %d: %s %s
", translate("Stop"), j+1, stop_tx, link) + } + } + return list_tx +} + +function create_schedule_list(coord_list) { + local list_tx = "" + local c_list = coord_list + for (local j = 0; j < coord_list.len(); j++) { + local c = coord(c_list[j].x, c_list[j].y) + local tile = my_tile(c) + local st_halt = tile.get_halt() + if(sch_cov_correct){ + list_tx += format("%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) + continue + } + if(tmpsw[j]==0){ + list_tx += format("%s %d: %s
", translate("Stop"), j+1, c.href(st_halt.get_name()+" ("+c.tostring()+")")) + } + else{ + list_tx += format("%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) + } + } + return list_tx +} + +/** + * calculate station lenght + * + * veh1 = loco + * veh2 = wg + * veh2c = wg count + * + */ +function calc_station_lenght(veh1, veh2, veh2c) { + local list = vehicle_desc_x.get_available_vehicles(wt_rail) + local cnv_lenght = 0 + foreach(veh in list) { + if ( veh.get_name() == veh1 ) { + cnv_lenght += veh.get_length() + } + if ( veh.get_name() == veh2 ) { + cnv_lenght += (veh.get_length() * veh2c) + } + } + local st_count = 0 + do { + cnv_lenght -= 16 + st_count += 1 + } while(cnv_lenght > 0) + return st_count +} + +/** + * create array stations tiles + * + * tile_a = tile_x + * tile_b = tile_x + * count + * + */ +function station_tiles(tile_a, tile_b, count) { + local st_tiles = [] + st_tiles.append(tile_x(tile_a.x, tile_a.y, tile_a.z)) + + for ( local i = 1; i < count; i++ ) { + if ( tile_a.x > tile_b.x ) { + st_tiles.append(tile_x(tile_a.x-i, tile_a.y, tile_a.z)) + } + if ( tile_a.x < tile_b.x ) { + st_tiles.append(tile_x(tile_a.x+i, tile_a.y, tile_a.z)) + } + if ( tile_a.y > tile_b.y ) { + st_tiles.append(tile_x(tile_a.x, tile_a.y-i, tile_a.z)) + } + if ( tile_a.y < tile_b.y ) { + st_tiles.append(tile_x(tile_a.x, tile_a.y+i, tile_a.z)) + } + //gui.add_message("st_tiles "+st_tiles[i]+" - "+ i) + } + + return st_tiles +} + +/** + * check rail platform + * + * @param tile = tile_x halt pos + * @param rtype = 0 - check pos in platform + * 1 - return array platform + * @param pos = tile to click + * + * + * @return true (rtype = 0) or tiles_x array (rtype = 1) + */ +function check_rail_station(tile, rtype, pos = null) { + local halt_tiles = tile.get_halt().get_tile_list() + local d = tile.get_way_dirs(wt_rail) + + local check_x = null + local check_y = null + + local pl_tiles = [] + + if ( d == 1 || d == 4 || d == 5 ) { + // NS + check_x = tile.x + } else if ( d == 2 || d == 8 || d == 10 ) { + // EW + check_y = tile.y + } + + for ( local i = 0; i < halt_tiles.len(); i++ ) { + if ( ( halt_tiles[i].x == check_x || halt_tiles[i].y == check_y ) ) { + pl_tiles.append(halt_tiles[i]) + if ( rtype == 0 && halt_tiles[i].x == pos.x && halt_tiles[i].y == pos.y ) { + return true + } + } + } + + if ( pl_tiles.len() > 0 && rtype == 1 ) { + return pl_tiles + } + +} + +/** + * test tile is empty + * removed objects for empty tiles: tree, ground_object, moving_object + * + * @param t_tile = tile_x + * + * @return true or false + * + */ +function test_tile_is_empty(t_tile) { + local tile = tile_x(t_tile.x, t_tile.y, t_tile.z) + + local tile_tree = tile.find_object(mo_tree) + local tile_groundobj = tile.find_object(mo_groundobj) + local tile_moving_object = tile.find_object(mo_moving_object) + + //gui.add_message(" ---=> test_tile " + coord3d_to_string(tile) + " | is_empty " + tile.is_empty() + " | tile_tree " + tile_tree + " | tile_groundobj " + tile_groundobj + " | tile_moving_object " + tile_moving_object) + + if ( tile_tree != null || tile_groundobj != null || tile_moving_object != null ) { + local tool = command_x(tool_remover) + tool.work(player_x(1), tile, "") + + return true + } else if ( tile.is_empty() ) { + return true + } + + return false +} + +/** + * check tile in tile array + * + * @param tiles = tile array + * @param coord = tile as coord + * + */ +function search_tile_in_tiles(tiles, coord) { + + for ( local i = 0; i < tiles.len(); i++ ) { + if ( tiles[i].x == coord.x && tiles[i].y == coord.y ) { + return true + } + } + + return false +} + +/** + * check stations enables post / enables pax and post + * search free tile for post extension + * search road tile for post halt + * replace pass halt -> pass/post halt (not tested) + * + * @param halt_list = array[tiles_x, tile_x, .... ] + * + * @return array[ {a = build_tile, b = code}, .... ] + * code = 0 - build mail extension + * code = 1 - build mail halt + * code = 2 - replace pass halt to pass/mail halt (not tested) + * code = 3 - remove city building (not implemented) + * + */ +function check_post_extension(halt_list) { + + local stations_list_mail = building_desc_x.get_available_stations(building_desc_x.station, wt_road, good_desc_x("Post")) + local build_list = [] + + local station_mail = null // halt accepts mail + local station_passmail = null // halt accepts passenger and mail + // search available halts + if ( stations_list_mail.len() > 0 ) { + for ( local i = 0; i < stations_list_mail.len(); i++ ) { + if ( stations_list_mail[i].enables_pax() && station_passmail == null ) { + station_passmail = stations_list_mail[i] + } else if ( station_mail == null ) { + station_mail = stations_list_mail[i] + } + } + } + + if ( station_mail == null && station_passmail != null) { + station_mail = station_passmail + } + + + if ( station_passmail != null ) { gui.add_message("station_passmail " + station_passmail.get_name()) } + if ( station_mail != null ) { gui.add_message("station_mail " + station_mail.get_name()) } + + for ( local i = 0; i < halt_list.len(); i++ ) { + local tiles = find_tiles_after_tile(my_tile(halt_list[i])) + + local code_0 = null + local code_1 = null + local code_2 = null + local code_2_level = null + local code_3 = null + + local b_types = ["city_res", "city_com", "city_ind"] + + // check road direction + local halt_dir = my_tile(halt_list[i]).get_way_dirs(wt_road) + + for ( local j = 0; j < tiles.len(); j++ ) { + if ( test_tile_is_empty(tiles[j]) ) { + local tile_ok = true + // not build end of road + if ( dir.is_single(halt_dir) ) { + if ( (halt_dir == 1 || halt_dir == 4) && halt_list[i].x == tiles[j].x ) { + tile_ok = false + } + if ( (halt_dir == 2 || halt_dir == 8) && halt_list[i].y == tiles[j].y ) { + tile_ok = false + } + } + + // empty tile build mail extension + if ( tile_ok ) { + code_0 = { a = tiles[j], b = 0 } + break + } + } + + if ( tiles[j].get_slope() == 0 && tiles[j].get_way(wt_road) != null && station_mail != null ) { + // tile has road and mail halt available + local w_dir = tiles[j].get_way_dirs(wt_road) + if ( dir.is_single(w_dir) || dir.is_straight(w_dir) ) { + code_1 = { a = tiles[j], b = 1 } + } + } + + // replace pass halt to pass/mail halt + local tile_building = tiles[j].find_object(mo_building) + if ( tile_building != null ) { + local b_desc = tile_building.get_desc() + if ( b_types.find(b_desc.get_type()) ) { + if ( code_2 == null ) { + code_2 = { a = tiles[j], b = 2 } + code_2_level = tile_building.get_passenger_level() + } else if ( code_2_level < tile_building.get_passenger_level() ) { + code_2 = { a = tiles[j], b = 2 } + code_2_level = tile_building.get_passenger_level() + } + + } + } + } + + if ( code_0 != null ) { + build_list.append(code_0) + } else if ( code_1 != null ) { + build_list.append(code_1) + } else if ( code_2 != null ) { + build_list.append(code_2) + } + + //if ( code_2 != null ) { gui.add_message("code_2 " + coord3d_to_string(code_2.a) ) } + } + + for ( local i = 0; i < build_list.len(); i++ ) { + //gui.add_message("build_list[" + i + "] " + coord3d_to_string(build_list[i].a) + " code " + build_list[i].b ) + //if ( build_list[i].b == 0 ) { + extensions_tiles.append({a = coord(build_list[i].a.x, build_list[i].a.y), b = build_list[i].b}) + //} + } + +} + +/** + * @fn find_tiles_after_tile(tile) + * + * @param tile = tile_x + * + * @return tile_x array + * array[N, S, E, W, NE, SE, NW, SW] + */ +function find_tiles_after_tile(tile) { + local t_array = [] + + t_array.append( tile_x(tile.x, tile.y-1, tile.z) ) + t_array.append( tile_x(tile.x, tile.y+1, tile.z) ) + t_array.append( tile_x(tile.x+1, tile.y, tile.z) ) + t_array.append( tile_x(tile.x-1, tile.y, tile.z) ) + t_array.append( tile_x(tile.x+1, tile.y-1, tile.z) ) + t_array.append( tile_x(tile.x+1, tile.y+1, tile.z) ) + t_array.append( tile_x(tile.x-1, tile.y-1, tile.z) ) + t_array.append( tile_x(tile.x-1, tile.y+1, tile.z) ) + + return t_array +} + + +/** + * find object tool + * + * @param obj = object type ( bridge, tunnel, way, catenary, station, extension, depot ) + * @param wt = waytype + * @param speed = speed - null by station, extension, depot + * @param good = good + * + * @return object + */ +function find_object(obj, wt, speed = null, good = null) { + + local list = [] + switch ( obj ) { + case "bridge": + list = bridge_desc_x.get_available_bridges(wt) + break + case "tunnel": + list = tunnel_desc_x.get_available_tunnels(wt) + break + case "way": + list = way_desc_x.get_available_ways(wt, st_flat) + break + case "catenary": + local li = wayobj_desc_x.get_available_wayobjs(wt) + for (local j=0; j0) { + obj_desc = list[0] + //gui.add_message_at(our_player,"0 obj_desc " + obj_desc.get_name(), world.get_time()) + + for(local i=1; i obj_desc.get_topspeed() && b.get_topspeed() <= speed ) { + obj_desc = b + if ( obj_desc.get_topspeed() == speed ) { break } + } else { + if ( obj_desc.get_topspeed() >= speed ) { break } + obj_desc = b + //gui.add_message_at(our_player, i + " break obj_desc " + obj_desc.get_name(), world.get_time()) + break + } + } + } + } + } + } else { + if ( list.len() > 0 ) { + + if ( obj == "extension" ) { + for ( local i = 0; i < list.len(); i++ ) { + //gui.add_message(" list["+i+"].get_name() " + list[i].get_name() + " list[0].get_waytype() " + list[i].get_waytype()) + + if ( list[i].get_waytype() == 0 ) { + obj_desc = list[i] + } + } + + } else { + obj_desc = list[0] + } + + } + + } + + return obj_desc +} + +/** + * @param name - tool name + * @param wt - waytype + * @param good - + * + * @return error message or null + */ +function check_select_station(name, wt, good) { + + local sel_obj = null + local message = null + switch (wt) { + case wt_water: + sel_obj = building_desc_x.harbour + message = "harbour" + break + case 0: + sel_obj = building_desc_x.station_extension + message = "extension" + break + default: + sel_obj = building_desc_x.station + break + } + + local list = building_desc_x.get_available_stations(sel_obj, wt, good_desc_x(good)) + local list_name = [] + for (local i = 0; i < list.len(); i++ ) { + if ( list[i].get_waytype() == wt ) { + list_name.append(list[i].get_name()) + //gui.add_message(" list_name " + list_name[i]) + } + } + if ( list_name.find(name) == null ) { + switch (message) { + case "extension": + return format(translate("Selected extension accept not %s."), translate(good)) + break + case "harbour": + return format(translate("Selected harbour accept not %s."), translate(good)) + break + default: + return format(translate("Selected halt accept not %s."), translate(good)) + } + + } + return null +} + +/** + * @param name - tool name ( by key select = waytype ) + * @param wt - waytype + * @param st - systemtype + * + * @return error message or null + */ +function check_select_way(name, wt, st = st_flat) { + + //gui.add_message(" list name " + name.len()) + // Selection tool with key + if ( wt.tostring() == name ) { + name = way_desc_x.get_default_way_desc(wt).get_name() + } + + local list = way_desc_x.get_available_ways(wt, st) + + local list_name = [] + for (local i = 0; i < list.len(); i++ ) { + if ( list[i].get_system_type() == st ) { + list_name.append(list[i].get_name()) + //gui.add_message(" list_name " + list_name[i]) + } + } + + if ( list_name.find(name) == null ) { + return translate("Selected way is not correct!") + } + + return null + +} // END OF FILE diff --git a/class/class_basic_convoys.nut b/class/class_basic_convoys.nut index 86c0076..e4a9e51 100644 --- a/class/class_basic_convoys.nut +++ b/class/class_basic_convoys.nut @@ -1,137 +1,137 @@ -/* - * class basic_convoys - * - * - * Can NOT be used in network game ! - */ +/** + * @file class_basic_convoys.nut + * @brief convoys + * + * Can NOT be used in network game ! + */ //Number of convoys in each chapter are listed -cv_list <- [ - //Chapter_02: [Step..], [Cov_nr..], Index -------------- - {stp = [4,6,7], cov = [1,3,1], idx = 0}, +cv_list <- [ + //Chapter_02: [Step..], [Cov_nr..], Index -------------- + {stp = [4,6,7], cov = [set_convoy_count(1),set_convoy_count(2),set_convoy_count(3)], idx = 0}, - //Chapter_03: [Step..], [Cov_nr..], Index -------------- - {stp = [5,7,11], cov = [1,1,3], idx = 0} + //Chapter_03: [Step..], [Cov_nr..], Index -------------- + {stp = [5,7,11], cov = [set_convoy_count(4),set_convoy_count(5),set_convoy_count(6)], idx = 0} - //Chapter_04: [Step..], [Cov_nr..], Index -------------- - {stp = [4,5,7], cov = [2,2,1], idx = 0} + //Chapter_04: [Step..], [Cov_nr..], Index -------------- + {stp = [4,5,7], cov = [set_convoy_count(7),set_convoy_count(8),set_convoy_count(9)], idx = 0} - //Chapter_05: [Step..], [Cov_nr..], Index -------------- - {stp = [2,4,4], cov = [10,3,1], idx = 0} + //Chapter_05: [Step..], [Cov_nr..], Index -------------- + {stp = [2,4,4], cov = [set_convoy_count(10),set_convoy_count(11),set_convoy_count(12)], idx = 0} - //Chapter_06: [Step..], [Cov_nr..], Index -------------- - {stp = [2,3,4], cov = [1,2,5], idx = 0} - ] + //Chapter_06: [Step..], [Cov_nr..], Index -------------- + {stp = [2,3,4], cov = [set_convoy_count(13),set_convoy_count(14),set_convoy_count(15)], idx = 0} + ] //Generate list with convoy limits cv_lim <- [] //[{limit_a, limit_b, chapter_nr, step_nr}..] class basic_convoys { - function set_convoy_limit() - { - local nr = -1 - local idx = 0 - for(local j = 0; jgcov_id) - gcov_id = id - - if (!cov.is_in_depot() && convoy_ignore(ignore_save, id)) - cov_nr++ - } - return cov_nr - } - - function convoy_ignore(list, id) - { - for(local j = 0; j lim.a && cov_nr < lim.b && persistent.status.chapter >= lim.ch){ - if(lim.stp < persistent.step || persistent.status.chapter != lim.ch) - load_conv_ch(lim.ch, lim.stp, pl) - break - } - - } - } + function set_convoy_limit() + { + local nr = -1 + local idx = 0 + for(local j = 0; jgcov_id) + gcov_id = id + + if (!cov.is_in_depot() && convoy_ignore(ignore_save, id)) + cov_nr++ + } + return cov_nr + } + + function convoy_ignore(list, id) + { + for(local j = 0; j lim.a && cov_nr < lim.b && persistent.status.chapter >= lim.ch){ + if(lim.stp < persistent.step || persistent.status.chapter != lim.ch) + load_conv_ch(lim.ch, lim.stp, pl) + break + } + + } + } } // END OF FILE diff --git a/class/class_basic_coords.nut b/class/class_basic_coords.nut deleted file mode 100644 index 5e51a6d..0000000 --- a/class/class_basic_coords.nut +++ /dev/null @@ -1,90 +0,0 @@ -/** - * @file class_basic_coords.nut - * @brief sets the pakset specific map coords - * - * - * - */ - -/** - * set tiles chapter 1 for inspections tool - * - * 0 - mon - * 1 - cur - * 2 - tow - */ - - -/** - * set halt coords city - * - * city1_halt_1 - used in chapter: 2, 5 - * city1_halt_2 - used in chapter: 2 - * city2_halt_1 - used in chapter: 2 - */ - city1_halt_1 <- [] - city1_halt_2 <- [] - city2_halt_1 <- [] - - switch (pak_name) { - case "pak64": - local list = [coord(111,183), coord(116,183), coord(120,183), coord(126,187), coord(121,189), coord(118,191), coord(113,190)] - for ( local i = 0; i < list.len(); i++ ) { - city1_halt_1.append(list[i]) - } - list.clear() - list = [coord(132,189), coord(126,187), coord(121,189), coord(126,198), coord(120,196)] - for ( local i = 0; i < list.len(); i++ ) { - city1_halt_2.append(list[i]) - } - list.clear() - list = [coord(126,187), coord(121,155), coord(127,155), coord(132,155), coord(135,153)] - for ( local i = 0; i < list.len(); i++ ) { - city2_halt_1.append(list[i]) - } - break - case "pak64.german": - local list = [coord(111,183), coord(116,183), coord(120,183), coord(126,187), coord(121,189), coord(118,191), coord(113,190)] - for ( local i = 0; i < list.len(); i++ ) { - city1_halt_1.append(list[i]) - } - list.clear() - list = [coord(132,189), coord(126,187), coord(121,189), coord(126,198), coord(120,196)] - for ( local i = 0; i < list.len(); i++ ) { - city1_halt_2.append(list[i]) - } - list.clear() - list = [coord(126,187), coord(121,155), coord(127,155), coord(132,155), coord(135,153)] - for ( local i = 0; i < list.len(); i++ ) { - city2_halt_1.append(list[i]) - } - break - case "pak128": - local list = [coord(111,183), coord(116,183), coord(120,183), coord(126,187), coord(121,189), coord(118,191), coord(113,190)] - for ( local i = 0; i < list.len(); i++ ) { - city1_halt_1.append(list[i]) - } - list.clear() - list = [coord(132,189), coord(126,187), coord(121,189), coord(126,198), coord(120,196)] - for ( local i = 0; i < list.len(); i++ ) { - city1_halt_2.append(list[i]) - } - list.clear() - list = [coord(126,187), coord(121,155), coord(127,155), coord(132,155), coord(135,153)] - for ( local i = 0; i < list.len(); i++ ) { - city2_halt_1.append(list[i]) - } - break - default: - - } - - -/** - * chapter 5 - * - * id = step - * sid = sub step - * hlist = halt list - * - */ \ No newline at end of file diff --git a/class/class_basic_coords_p128.nut b/class/class_basic_coords_p128.nut new file mode 100644 index 0000000..cd710a1 --- /dev/null +++ b/class/class_basic_coords_p128.nut @@ -0,0 +1,293 @@ +/** + * @file class_basic_coords_p128.nut + * @brief sets the pakset specific map coords for pak128 + */ + +/** + * set limit for build + * + * + */ +city1_limit1 <- {a = coord(109,181), b = coord(128,193)} +city2_limit1 <- {a = coord(120,150), b = coord(138,159)} + +bridge1_limit <- {a = coord(119,193), b = coord(128,201)} +c_bridge1_limit1 <- {a = coord(126,191), b = coord(126,195)} +change1_city1_limit1 <- {a = coord(120,193), b = coord(127,193)} + +c_dock1_limit <- {a = coord(128,181), b = coord(135,193)} +change2_city1_limit1 <- {a = coord(128,182), b = coord(128,192)} + +c_way_limit1 <- {a = coord(127,159), b = coord(133,187)} + +c_way3_lim <- {a = coord(94,198), b = coord(114,198)} +c_bridge3_limit <- {a = coord(90,198), b = coord(94,198)} +c_way3_tun_limit <- {b = coord(92,194), a = coord(63,202)} + +way5_fac7_fac8_lim <- {a = coord(127,211), b = coord(136,233)} +way5_power_lim <- [{a = coord(127,196), b = coord(151,204)}, {a = coord(106,189), b = coord(112,201)}, + {a = coord(106,201), b = coord(127,210)}, {a = coord(127,204), b = coord(140,238)} + ] +way5_power_lim_del <- [{a = coord(107,201), b = coord(111,201)}, {a = coord(127,202), b = coord(127,209)}, {a = coord(128,204), b = coord(139,204)}] + +/** + * set tiles for buildings + * + * mon + * cur + * tow + */ +city1_mon <- coord(113,189) +city1_cur <- coord(113,185) + +city1_tow <- coord(111,184) +city2_tow <- coord(129,154) +city3_tow <- coord(52,194) +city4_tow <- coord(115,268) +city5_tow <- coord(124,326) +city6_tow <- coord(125,378) +city7_tow <- coord(163,498) + +/** + * set tiles for factory + * + * coord_fac_1 - ch1, ch4 + * + * + */ +coord_fac_1 <- coord(123,160) // Timber plantation +coord_fac_2 <- coord(93,153) // Saw mill +coord_fac_3 <- coord(110,190) // Construction Wholesaler +coord_fac_4 <- coord(168,189) // Oil rig +coord_fac_5 <- coord(149,200) // Oil refinery +coord_fac_6 <- coord(112,192) // Gas station +coord_fac_7 <- coord(131,235) // Coal mine +coord_fac_8 <- coord(130,207) // Coal power station + +/** + * set tiles for stations + * + * coord_st_1 - city 1 + * + * + */ +coord_st_1 <- coord(117,197) + +/** + * set halt coords city + * + * used in chapter: 2 + * city1_halt_1 - halts city 1 + * city1_halt_2 - halts connect city 1 dock and station + * city2_halt_1 - halts connect city 2 to city 1 + * line_connect_halt - halt in all halt lists + * + * used chapter 3 + * ch3_rail_stations - city line + * + * used chapter 4 + * ch4_ship1_halts - dock raffinerie - (coord_fac4) + * ch4_ship2_halts - dock raffinerie - canal stop gas station + * ch4_ship3_halts - passenger ship + * + * used chapter 5 + * city1_post_halts - halts for post + * ch5_post_ship_halts - post passenger dock - factory 4 (Oil rigg) + * + * used chapter 6 + * city1_city7_air + * city1_halt_airport + * city1_halt_airport_extension + * city7_halt + * + * used chapter 7 + * ch7_rail_stations + * + * + */ +city1_halt_1 <- [] +city1_halt_2 <- [] +city2_halt_1 <- [] + +line_connect_halt <- coord(126,187) + +city1_halt_airport <- [coord(114,177), coord(121,189), line_connect_halt] +local list = [coord(111,183), coord(116,183), coord(120,183), coord(126,187), coord(121,189), coord(118,191), coord(113,190)] +for ( local i = 0; i < list.len(); i++ ) { + city1_halt_1.append(list[i]) +} +list.clear() +// first coord add city1_post_halts +list = [coord(132,189), coord(126,187), coord(121,189), coord(126,198), coord(120,196)] +for ( local i = 0; i < list.len(); i++ ) { + city1_halt_2.append(list[i]) +} +list.clear() +list = [coord(126,187), coord(121,155), coord(127,155), coord(132,155), coord(135,153)] +for ( local i = 0; i < list.len(); i++ ) { + city2_halt_1.append(list[i]) +} + +city1_post_halts <- [] +for ( local i = 0; i < city1_halt_1.len(); i++ ) { + city1_post_halts.append(city1_halt_1[i]) + if ( i == 3 ) { + city1_post_halts.append(city1_halt_2[0]) + } +} + +city1_city7_air <- [coord(114,176), coord(168,489)] +city1_halt_airport_extension <- [coord(115,177)] + +city7_halt <- [ coord(168,490), coord(160,493), coord(155,493), coord(150,494), coord(154,500), coord(159,499), + coord(164,498), coord(166,503), coord(171,501), coord(176,501), coord(173,493)] + +ch3_rail_stations <- [ tile_x(55,197,11), tile_x(116,198,0), tile_x(120,266,3), tile_x(120,326,5), + tile_x(120,380,9), tile_x(121,326,5), tile_x(121,266,3), tile_x(116,197,0) + ] + +ch4_ship1_halts <- [coord3d(151, 198, -3)] +ch4_ship2_halts <- [ch4_ship1_halts[0], coord3d(114, 194, 1)] +ch4_ship3_halts <- [coord3d(133, 189, -3), coord3d(188, 141, -3), coord3d(179, 135, -3)] + +// add Oil rigg ( factory 4 to schedule passenger ship ) +ch4_schedule_line3 <- [] +for ( local i = 0; i < ch4_ship3_halts.len(); i++ ) { + ch4_schedule_line3.append(ch4_ship3_halts[i]) + if ( i == 0 || i == 2 ) { + ch4_schedule_line3.append(coord_fac_4) + } +} + +ch5_post_ship_halts <- [ch4_ship3_halts[0], coord_fac_4] + +ch7_rail_stations <- [tile_x(57,198,11), tile_x(120,267,3), tile_x(120,327,5), tile_x(120,381,9)] + +/** + * define depots + */ +city1_road_depot <- coord(115,185) +city7_road_depot <- coord(167,497) +ship_depot <- coord(150, 190) + +/** + * rail_depot{depot_tile, way_tile} + * air_depot{depot_tile, way_tile} + * + * road depot must be located one field next to a road + */ +ch3_rail_depot1 <- {b = coord(121,164), a = coord(121,163)} +ch3_rail_depot2 <- {b = coord(94,160), a = coord(93,160)} +ch3_rail_depot3 <- {b = coord(108,196), a = coord(108,197)} +ch5_road_depot <- {a = coord(131,232), b = coord(132,232)} +ch6_air_depot <- {a = coord(113,177), b = coord(113,176)} + +/** + * define bridges + * + * bridge1_coords = road bridge city 1 + * bridge2_coors = rail bridge fac_1 -> fac_2 + * bridge3_coors = rail bridge city 1 -> city 3 + * + */ +bridge1_coords <- {a = coord3d(126,192,-1), b = coord3d(126,194,-1), dir = 3} +bridge2_coords <- {a = coord3d(106,158,-1), b = coord3d(100,158,-1)} +bridge3_coords <- {a = coord3d(93,198,5), b = coord3d(91,198,5)} + +/** + * define ways + * + * way1_coords = road city 1 -> city 2 + * + * way2_fac1_fac2 = rail factory 1 -> factory 2 + * + * way3_cy1_cy3 = city 1 -> city 3 + * way3_cy1_cy6 = city 1 -> city 4 -> city 5 -> city 6 + * + * way3_tun_list, way3_tun_coord = build tunnel city 1 -> city 3 + * + * way4_cannal = cannel to gas station + * + * way5_fac7_fac8 = road coal to power plant + * way5_power1 = powerline fac8 to fac + * + * + */ +way1_coords <- {a = coord3d(130,160,0), b = coord3d(130,185,0), dir = 3} + +// start - 5 tiles after start - bridge tile - bridge tile - 5 tiles before the end - end +way2_fac1_fac2 <- [coord3d(125,163,0), coord3d(120,163,0), coord3d(107,158,1), coord3d(99,158,1), coord3d(96,155,1), coord3d(96,151,1)] +limit_ch3_rail_line_1a <- {a = coord(105, 153), b = coord(122, 166)} +limit_ch3_rail_line_1b <- {a = coord(95, 154), b = coord(103, 160)} + +// start - 5 tiles after start - tunnel tile - tunnel tile - 5 tiles before the end - end +way2_fac2_fac3 <- [coord3d(94,155,2), coord3d(94,160,2), coord3d(95,172,3), coord3d(104,172,3), coord3d(109,184,2), coord3d(109,189,2)] +limit_ch3_rail_line_2a <- {a = coord(91,159), b = coord(97,174)} +limit_ch3_rail_line_2b <- {a = coord(102, 171), b = coord(110, 187)} + +// connect city 1 -> city 3 +way3_cy1_cy3 <- {a = coord3d(114,198,0), b = coord3d(94,198,6), dir = 123} +/* connect [0] - [1] -> city 1 - city 4 + * connect [2] - [3] -> city 4 - city 5 + * connect [4] - [5] -> city 5 - city 6 + */ +way3_cy1_cy6 <- [ {a = coord3d(120,199,0), b = coord3d(120,264,3) }, {a = coord3d(121,264,3), b = coord3d(121,199,0) }, + {a = coord3d(120,271,3), b = coord3d(120,324,5) }, {a = coord3d(121,324,5), b = coord3d(121,271,3) }, + {a = coord3d(120,331,5), b = coord3d(120,377,9) }, {a = coord3d(121,377,9), b = coord3d(121,331,5) } + ] +// tunnel build +way3_tun_list <- [coord3d(88,198,7), coord3d(87,198,8)] +// portal - first tile - end tile - portal +way3_tun_coord <- [coord3d(90,198,7), coord3d(89,198,8), coord3d(63,198,8), coord3d(60,198,11)]//, dir = null + +/** + * define signals and catenary for rail line city 3 -> city 6 + * + */ +way3_sign_list <- [ {c = coord3d(94,197,6), ribi = 8}, {c = coord3d(112,198,2), ribi = 2}, + {c = coord3d(121,199,0), ribi = 1}, {c = coord3d(120,263,3), ribi = 4}, + {c = coord3d(121,271,3), ribi = 1}, {c = coord3d(120,324,5), ribi = 4}, + {c = coord3d(121,331,5), ribi = 1}, {c = coord3d(120,377,9), ribi = 4}, + ] +way3_cate_list1 <- [ {a = coord3d(55,198,11), b = way3_tun_coord[0], dir = 0, tunn = true}, + {a = way3_tun_coord[0], b = coord3d(120,198,0), dir = 0, tunn = false}, + {a = coord3d(120,198,0), b = coord3d(120,383,9), dir = 5, tunn = false}, + {a = coord3d(121,383,9), b = coord3d(121,197,0), dir = 2, tunn = false}, + {a = coord3d(120,197,0), b = coord3d(90,197,7), dir = 6, tunn = false}, + {a = coord3d(90,197,7), b = coord3d(55,197,11), dir = 6, tunn = true} + ] + +// dock raffenery - cannal stop - cannel way build +way4_cannal <- [coord3d(140,194,-3), coord3d(114,194,1), coord3d(127,193,-1)] +c_cannel_lim <- {a = coord(114, 193), b = coord(140, 194)} + +way5_fac7_fac8 <- [coord3d(132,233,0), coord3d(132,211,0)]//{, dir = 2} + +/** + * chapter 5 + * + * extensions_tiles - tiles for post building + * + */ + +//extensions_tiles <- [coord(111,182), coord(116,182), coord(121,183), coord(127,187), +// coord(132,190), coord(121,190), coord(118,192), coord(113,191)] + +/** + * set tiles for pos chapter start + * + * + */ +coord_chapter_1 <- city1_mon // city1_mon +coord_chapter_2 <- city1_road_depot // city1_road_depot +coord_chapter_3 <- coord_fac_2 // Saw mill +coord_chapter_4 <- ship_depot // ship_depot +coord_chapter_5 <- coord_fac_8 // Coal power station +coord_chapter_6 <- city1_halt_airport[0] // airport road stop +coord_chapter_7 <- city3_tow // city 3 townhall + +/** + * coord to arrea + * + */ +ch4_curiosity <- coord(185,135) diff --git a/class/class_basic_coords_p64.nut b/class/class_basic_coords_p64.nut new file mode 100644 index 0000000..c3e782c --- /dev/null +++ b/class/class_basic_coords_p64.nut @@ -0,0 +1,294 @@ +/** + * @file class_basic_coords_p64.nut + * @brief sets the pakset specific map coords for pak64 + */ + +/** + * set limit for build/tool work + * + * + */ +city1_limit1 <- {a = coord(109,181), b = coord(128,193)} +city2_limit1 <- {a = coord(120,150), b = coord(138,159)} + +bridge1_limit <- {a = coord(119,193), b = coord(128,201)} +c_bridge1_limit1 <- {a = coord(126,192), b = coord(126,196)} +change1_city1_limit1 <- {a = coord(120,193), b = coord(127,193)} + +c_dock1_limit <- {a = coord(128,181), b = coord(135,193)} +change2_city1_limit1 <- {a = coord(128,182), b = coord(128,192)} + +c_way_limit1 <- {a = coord(127,159), b = coord(133,187)} + +c_way3_lim <- {a = coord(93,198), b = coord(114,198)} +c_bridge3_limit <- {a = coord(90,198), b = coord(94,198)} +c_way3_tun_limit <- {b = coord(92,194), a = coord(63,202)} + +way5_fac7_fac8_lim <- {a = coord(127,209), b = coord(136,233)} +way5_power_lim <- [{a = coord(127,196), b = coord(151,204)}, {a = coord(106,189), b = coord(112,201)}, + {a = coord(106,201), b = coord(127,210)}, {a = coord(127,204), b = coord(140,238)} + ] +way5_power_lim_del <- [{a = coord(107,201), b = coord(111,201)}, {a = coord(127,202), b = coord(127,209)}, {a = coord(128,204), b = coord(139,204)}] + +/** + * set tiles for buildings + * + * mon + * cur + * tow + */ +city1_mon <- coord(113,189) +city1_cur <- coord(113,185) + +city1_tow <- coord(111,184) +city2_tow <- coord(129,154) +city3_tow <- coord(52,194) +city4_tow <- coord(115,268) +city5_tow <- coord(124,326) +city6_tow <- coord(125,378) +city7_tow <- coord(163,498) + +/** + * set tiles for factory + * + * coord_fac_1 - ch1, ch4 + * + * + */ +coord_fac_1 <- coord(123,160) // Timber plantation +coord_fac_2 <- coord(93,153) // Saw mill +coord_fac_3 <- coord(110,190) // Construction Wholesaler +coord_fac_4 <- coord(168,189) // Oil rig +coord_fac_5 <- coord(149,200) // Oil refinery +coord_fac_6 <- coord(112,192) // Gas station +coord_fac_7 <- coord(131,235) // Coal mine +coord_fac_8 <- coord(130,207) // Coal power station + +/** + * set tiles for stations + * + * coord_st_1 - city 1 + * + * + */ +coord_st_1 <- coord(117,197) + +/** + * set halt coords + * + * used chapter 2 + * city1_halt_1 - halts city 1 + * city1_halt_2 - halts connect city 1 dock and station + * city2_halt_1 - halts connect city 2 to city 1 + * line_connect_halt - halt in all halt lists city1 + * + * used chapter 3 + * ch3_rail_stations - city line + * + * used chapter 4 + * ch4_ship1_halts - dock raffinerie - (coord_fac4) + * ch4_ship2_halts - dock raffinerie - canal stop gas station + * ch4_ship3_halts - passenger ship + * + * used chapter 5 + * city1_post_halts - halts for post + * ch5_post_ship_halts - post passenger dock - factory 4 (Oil rigg) + * + * used chapter 6 + * city1_city7_air + * city1_halt_airport + * city1_halt_airport_extension + * city7_halt + * + * used chapter 7 + * ch7_rail_stations + * + * + */ +city1_halt_1 <- [] +city1_halt_2 <- [] +city2_halt_1 <- [] + +// road halt in all road lines city 1 +line_connect_halt <- coord(126,187) + +city1_halt_airport <- [coord(114,177), coord(121,189), line_connect_halt] +local list = [coord(112,183), coord(117,186), coord(120,183), line_connect_halt, city1_halt_airport[1], coord(118,191), coord(113,190)] +for ( local i = 0; i < list.len(); i++ ) { + city1_halt_1.append(list[i]) +} +list.clear() +// first coord add city1_post_halts +list = [coord(132,189), line_connect_halt, coord(121,189), coord(126,198), coord(120,196)] +for ( local i = 0; i < list.len(); i++ ) { + city1_halt_2.append(list[i]) +} +list.clear() +list = [line_connect_halt, coord(121,155), coord(127,155), coord(132,155), coord(135,153)] +for ( local i = 0; i < list.len(); i++ ) { + city2_halt_1.append(list[i]) +} + +city1_post_halts <- [] +for ( local i = 0; i < city1_halt_1.len(); i++ ) { + city1_post_halts.append(city1_halt_1[i]) + if ( i == 3 ) { + city1_post_halts.append(city1_halt_2[0]) + } +} + +city1_city7_air <- [coord(114,176), coord(168,489)] +city1_halt_airport_extension <- [coord(115,177)] + + +city7_halt <- [ coord(168,490), coord(160,493), coord(155,493), coord(150,494), coord(154,500), coord(159,499), + coord(164,498), coord(166,503), coord(171,501), coord(176,501), coord(173,493)] + +ch3_rail_stations <- [ tile_x(55,197,11), tile_x(116,198,0), tile_x(120,266,3), tile_x(120,326,5), + tile_x(120,380,9), tile_x(121,326,5), tile_x(121,266,3), tile_x(116,197,0) + ] + +ch4_ship1_halts <- [coord3d(151, 198, -3)] +ch4_ship2_halts <- [ch4_ship1_halts[0], coord3d(114, 194, 1)] +ch4_ship3_halts <- [coord3d(133, 189, -3), coord3d(188, 141, -3), coord3d(179, 135, -3)] + +// add Oil rigg ( factory 4 to schedule passenger ship ) +ch4_schedule_line3 <- [] +for ( local i = 0; i < ch4_ship3_halts.len(); i++ ) { + ch4_schedule_line3.append(ch4_ship3_halts[i]) + if ( i == 0 || i == 2 ) { + ch4_schedule_line3.append(coord_fac_4) + } +} + +ch5_post_ship_halts <- [ch4_ship3_halts[0], coord_fac_4] + +ch7_rail_stations <- [tile_x(57,198,11), tile_x(120,267,3), tile_x(120,327,5), tile_x(120,381,9)] + +/** + * define depots + */ +city1_road_depot <- coord(115,185) +city7_road_depot <- coord(167,497) +ship_depot <- coord(150, 190) + +/** + * rail_depot{depot_tile, way_tile} + * air_depot{depot_tile, way_tile} + * + * road depot must be located one field next to a road + */ +ch3_rail_depot1 <- {b = coord(121,164), a = coord(121,163)} +ch3_rail_depot2 <- {b = coord(94,160), a = coord(93,160)} +ch3_rail_depot3 <- {b = coord(108,196), a = coord(108,197)} +ch5_road_depot <- {a = coord(131,232), b = coord(132,232)} +ch6_air_depot <- {a = coord(113,177), b = coord(113,176)} + +/** + * define bridges + * + * bridge1_coords = road bridge city 1 + * bridge2_coors = rail bridge fac_1 -> fac_2 + * bridge3_coors = rail bridge city 1 -> city 3 + * + */ +bridge1_coords <- {a = coord3d(126,193,0), b = coord3d(126,195,0), dir = 3} +bridge2_coords <- {a = coord3d(106,158,-1), b = coord3d(103,158,-1)} +bridge3_coords <- {a = coord3d(93,198,5), b = coord3d(91,198,5)} + +/** + * define ways + * + * way1_coords = road city 1 -> city 2 + * + * way2_fac1_fac2 = rail factory 1 -> factory 2 + * + * way3_cy1_cy3 = city 1 -> city 3 + * way3_cy1_cy6 = city 1 -> city 4 -> city 5 -> city 6 + * + * way3_tun_list, way3_tun_coord = build tunnel city 1 -> city 3 + * + * way4_cannal = cannel to gas station + * + * way5_fac7_fac8 = road coal to power plant + * way5_power1 = powerline fac8 to fac + * + */ +way1_coords <- {a = coord3d(130,160,0), b = coord3d(130,185,0), dir = 3} + +// start - 5 tiles after start - bridge tile - bridge tile - 5 tiles before the end - end +way2_fac1_fac2 <- [coord3d(125,163,0), coord3d(120,163,0), coord3d(107,158,0), coord3d(102,158,0), coord3d(96,155,1), coord3d(96,151,1)] +limit_ch3_rail_line_1a <- {a = coord(105, 153), b = coord(122, 166)} +limit_ch3_rail_line_1b <- {a = coord(95, 154), b = coord(103, 160)} + +// start - 5 tiles after start - tunnel tile - tunnel tile - 5 tiles before the end - end +way2_fac2_fac3 <- [coord3d(94,155,2), coord3d(94,160,2), coord3d(96,172,3), coord3d(104,172,3), coord3d(109,184,2), coord3d(109,189,2)] +limit_ch3_rail_line_2a <- {a = coord(91,159), b = coord(97,174)} +limit_ch3_rail_line_2b <- {a = coord(102, 171), b = coord(110, 187)} + +// connect city 1 -> city 3 +way3_cy1_cy3 <- {a = coord3d(114,198,0), b = coord3d(93,198,5)}//, dir = 123 +/* connect [0] - [1] -> city 1 - city 4 + * connect [2] - [3] -> city 4 - city 5 + * connect [4] - [5] -> city 5 - city 6 + */ +way3_cy1_cy6 <- [ {a = coord3d(120,199,0), b = coord3d(120,264,3) }, {a = coord3d(121,264,3), b = coord3d(121,199,0) }, + {a = coord3d(120,271,3), b = coord3d(120,324,5) }, {a = coord3d(121,324,5), b = coord3d(121,271,3) }, + {a = coord3d(120,331,5), b = coord3d(120,377,9) }, {a = coord3d(121,377,9), b = coord3d(121,331,5) } + ] +// tunnel build +way3_tun_list <- [coord3d(88,198,6), coord3d(87,198,7), coord3d(86,198,8)] +// portal - first tile underground - end tile underground - portal +way3_tun_coord <- [coord3d(90,198,6), coord3d(89,198,6), coord3d(63,198,8), coord3d(60,198,11)]//, dir = null + +/** + * define signals and catenary for rail line city 3 -> city 6 + * + */ +way3_sign_list <- [ {c = coord3d(94,197,6), ribi = 8}, {c = coord3d(112,198,2), ribi = 2}, + {c = coord3d(121,199,0), ribi = 1}, {c = coord3d(120,263,3), ribi = 4}, + {c = coord3d(121,271,3), ribi = 1}, {c = coord3d(120,324,5), ribi = 4}, + {c = coord3d(121,331,5), ribi = 1}, {c = coord3d(120,377,9), ribi = 4}, + ] +way3_cate_list1 <- [ {a = coord3d(55,198,11), b = coord3d(90,198,6), dir = 0, tunn = true}, + {a = coord3d(90,198,6), b = coord3d(120,198,0), dir = 0, tunn = false}, + {a = coord3d(120,198,0), b = coord3d(120,383,9), dir = 5, tunn = false}, + {a = coord3d(121,383,9), b = coord3d(121,197,0), dir = 2, tunn = false}, + {a = coord3d(120,197,0), b = coord3d(90,197,6), dir = 6, tunn = false}, + {a = coord3d(90,197,6), b = coord3d(55,197,11), dir = 6, tunn = true} + ] + +// dock raffenery - cannal stop - cannel way build +way4_cannal <- [coord3d(140,194,-3), ch4_ship2_halts[1], coord3d(127,194,-1)] +c_cannel_lim <- {a = coord(114,194), b = coord(140,194)} + +way5_fac7_fac8 <- [coord3d(132,233,0), coord3d(131,209,-1)]//{, dir = 2} + +/** + * chapter 5 + * + * extensions_tiles - tiles for post building + * + */ + +//extensions_tiles <- [coord(111,182), coord(116,182), coord(121,183), coord(127,187), +// coord(132,190), coord(121,190), coord(118,192), coord(113,191)] + +/** + * set tiles for pos chapter start + * + * + */ +coord_chapter_1 <- city1_mon // city1_mon +coord_chapter_2 <- city1_road_depot // city1_road_depot +coord_chapter_3 <- coord_fac_2 // Saw mill +coord_chapter_4 <- ship_depot // ship_depot +coord_chapter_5 <- coord_fac_8 // Coal power station +coord_chapter_6 <- city1_halt_airport[0] // airport road stop +coord_chapter_7 <- city3_tow // city 3 townhall + +/** + * coord to arrea + * + */ +ch4_curiosity <- coord(185,135) diff --git a/class/class_basic_coords_p64g.nut b/class/class_basic_coords_p64g.nut new file mode 100644 index 0000000..7b4514b --- /dev/null +++ b/class/class_basic_coords_p64g.nut @@ -0,0 +1,292 @@ +/** + * @file class_basic_coords_p64g.nut + * @brief sets the pakset specific map coords for pak64.german + */ + +/** + * set limit for build + * + * + */ +city1_limit1 <- {a = coord(109,180), b = coord(128,193)} +city2_limit1 <- {a = coord(120,150), b = coord(138,159)} + +bridge1_limit <- {a = coord(119,193), b = coord(128,201)} +c_bridge1_limit1 <- {a = coord(126,192), b = coord(126,196)} +change1_city1_limit1 <- {a = coord(120,193), b = coord(127,193)} + +c_dock1_limit <- {a = coord(128,180), b = coord(135,193)} +change2_city1_limit1 <- {a = coord(128,181), b = coord(128,192)} + +c_way_limit1 <- {a = coord(127,159), b = coord(133,187)} + +c_way3_lim <- {a = coord(93,198), b = coord(114,198)} +c_bridge3_limit <- {a = coord(90,198), b = coord(94,198)} +c_way3_tun_limit <- {b = coord(92,194), a = coord(63,202)} + +way5_fac7_fac8_lim <- {a = coord(127,209), b = coord(136,233)} +way5_power_lim <- [{a = coord(127,196), b = coord(151,204)}, {a = coord(106,189), b = coord(112,201)}, + {a = coord(106,201), b = coord(127,210)}, {a = coord(127,204), b = coord(140,238)} + ] +way5_power_lim_del <- [{a = coord(107,201), b = coord(111,201)}, {a = coord(127,202), b = coord(127,209)}, {a = coord(128,204), b = coord(139,204)}] + +/** + * set tiles for buildings + * + * mon + * cur + * tow + */ +city1_mon <- coord(119,183) +city1_cur <- coord(116,188) + +city1_tow <- coord(111,184) +city2_tow <- coord(129,154) +city3_tow <- coord(52,194) +city4_tow <- coord(115,268) +city5_tow <- coord(124,326) +city6_tow <- coord(125,378) +city7_tow <- coord(163,498) + +/** + * set tiles for factory + * + * coord_fac_1 - ch1, ch4 + * + * + */ +coord_fac_1 <- coord(123,160) // Timber plantation +coord_fac_2 <- coord(93,153) // Saw mill +coord_fac_3 <- coord(110,190) // Construction Wholesaler +coord_fac_4 <- coord(168,189) // Oil rig +coord_fac_5 <- coord(149,200) // Oil refinery +coord_fac_6 <- coord(112,192) // Gas station +coord_fac_7 <- coord(131,235) // Coal mine +coord_fac_8 <- coord(130,207) // Coal power station + +/** + * set tiles for stations + * + * coord_st_1 - city 1 + * + * + */ +coord_st_1 <- coord(117,197) + +/** + * set halt coords city + * + * used in chapter: 2 + * city1_halt_1 - halts city 1 + * city1_halt_2 - halts connect city 1 dock and station + * city2_halt_1 - halts connect city 2 to city 1 + * line_connect_halt - halt in all halt lists + * + * used chapter 3 + * ch3_rail_stations - city line + * + * used chapter 4 + * ch4_ship1_halts - dock raffinerie - (coord_fac4) + * ch4_ship2_halts - dock raffinerie - canal stop gas station + * ch4_ship3_halts - passenger ship + * + * used chapter 5 + * city1_post_halts - halts for post + * ch5_post_ship_halts - post passenger dock - factory 4 (Oil rigg) + * + * used chapter 6 + * city1_city7_air + * city1_halt_airport + * city1_halt_airport_extension + * city7_halt + * + * used chapter 7 + * ch7_rail_stations + * + * + */ +city1_halt_1 <- [] +city1_halt_2 <- [] +city2_halt_1 <- [] + +line_connect_halt <- coord(124,186) + +city1_halt_airport <- [coord(114,177), coord(121,189), line_connect_halt] +local list = [coord(114,184), coord(118,186), coord(120,181), line_connect_halt, coord(121,189), coord(118,191), coord(113,190)] +for ( local i = 0; i < list.len(); i++ ) { + city1_halt_1.append(list[i]) +} +list.clear() +// first coord add city1_post_halts +list = [coord(132,189), line_connect_halt, coord(126,198), coord(120,196)] +for ( local i = 0; i < list.len(); i++ ) { + city1_halt_2.append(list[i]) +} +list.clear() +list = [line_connect_halt, coord(121,155), coord(127,155), coord(132,155), coord(135,153)] +for ( local i = 0; i < list.len(); i++ ) { + city2_halt_1.append(list[i]) +} + +city1_post_halts <- [] +for ( local i = 0; i < city1_halt_1.len(); i++ ) { + city1_post_halts.append(city1_halt_1[i]) + if ( i == 3 ) { + city1_post_halts.append(city1_halt_2[0]) + } +} + +city1_city7_air <- [coord(114,176), coord(168,489)] +city1_halt_airport_extension <- [coord(115,177)] + +city7_halt <- [ coord(168,490), coord(160,493), coord(155,493), coord(150,494), coord(154,500), coord(159,499), + coord(164,498), coord(166,503), coord(171,501), coord(176,501), coord(173,493)] + +ch3_rail_stations <- [ tile_x(55,197,11), tile_x(116,198,0), tile_x(120,266,3), tile_x(120,326,5), + tile_x(120,380,9), tile_x(121,326,5), tile_x(121,266,3), tile_x(116,197,0) + ] + +ch4_ship1_halts <- [coord3d(151, 198, -3)] +ch4_ship2_halts <- [ch4_ship1_halts[0], coord3d(114, 194, 1)] +ch4_ship3_halts <- [coord3d(133, 189, -3), coord3d(188, 141, -3), coord3d(179, 135, -3)] + +// add Oil rigg ( factory 4 to schedule passenger ship ) +ch4_schedule_line3 <- [] +for ( local i = 0; i < ch4_ship3_halts.len(); i++ ) { + ch4_schedule_line3.append(ch4_ship3_halts[i]) + if ( i == 0 || i == 2 ) { + ch4_schedule_line3.append(coord_fac_4) + } +} + +ch5_post_ship_halts <- [ch4_ship3_halts[0], coord_fac_4] + +ch7_rail_stations <- [tile_x(57,198,11), tile_x(120,267,3), tile_x(120,327,5), tile_x(120,381,9)] + +/** + * define depots + */ +city1_road_depot <- coord(124,188) //115,185 +city7_road_depot <- coord(167,497) +ship_depot <- coord(150, 190) + +/** + * rail_depot{depot_tile, way_tile} + * air_depot{depot_tile, way_tile} + * + * road depot must be located one field next to a road + */ +ch3_rail_depot1 <- {b = coord(121,164), a = coord(121,163)} +ch3_rail_depot2 <- {b = coord(94,160), a = coord(93,160)} +ch3_rail_depot3 <- {b = coord(108,196), a = coord(108,197)} +ch5_road_depot <- {a = coord(131,232), b = coord(132,232)} +ch6_air_depot <- {a = coord(113,177), b = coord(113,176)} + +/** + * define bridges + * + * bridge1_coords = road bridge city 1 + * bridge2_coors = rail bridge fac_1 -> fac_2 + * bridge3_coors = rail bridge city 1 -> city 3 + * + */ +bridge1_coords <- {a = coord3d(126,193,-1), b = coord3d(126,195,-1), dir = 3} +bridge2_coords <- {a = coord3d(106,158,-1), b = coord3d(103,158,-1)} +bridge3_coords <- {a = coord3d(93,198,5), b = coord3d(91,198,5)} + +/** + * define ways + * + * way1_coords = road city 1 -> city 2 + * + * way2_fac1_fac2 = rail factory 1 -> factory 2 + * + * way2_fac2_fac3 = rail factory 2 -> factory 3 + * way3_cy1_cy6 = city 1 -> city 4 -> city 5 -> city 6 + * + * way3_tun_list, way3_tun_coord = build tunnel city 1 -> city 3 + * + * way4_cannal = cannel to gas station + * + * way5_fac7_fac8 = road coal to power plant + * way5_power1 = powerline fac8 to fac + * + */ +way1_coords <- {a = coord3d(130,160,0), b = coord3d(130,185,0), dir = 3} + +// start - 5 tiles after start - bridge tile - bridge tile - 5 tiles before the end - end +way2_fac1_fac2 <- [coord3d(125,163,0), coord3d(120,163,0), coord3d(107,158,0), coord3d(102,158,0), coord3d(96,155,1), coord3d(96,151,1)] +limit_ch3_rail_line_1a <- {a = coord(105, 153), b = coord(120, 166)} +limit_ch3_rail_line_1b <- {a = coord(95, 154), b = coord(103, 160)} + +// start - 5 tiles after start - tunnel tile - tunnel tile - 5 tiles before the end - end +way2_fac2_fac3 <- [coord3d(94,155,2), coord3d(94,160,2), coord3d(96,172,3), coord3d(104,172,3), coord3d(109,184,2), coord3d(109,189,2)] +limit_ch3_rail_line_2a <- {a = coord(91,159), b = coord(97,174)} +limit_ch3_rail_line_2b <- {a = coord(102, 171), b = coord(110, 187)} + +// connect city 1 -> city 3 +way3_cy1_cy3 <- {a = coord3d(114,198,0), b = coord3d(93,198,5)}//, dir = 123 +/* connect [0] - [1] -> city 1 - city 4 + * connect [2] - [3] -> city 4 - city 5 + * connect [4] - [5] -> city 5 - city 6 + */ +way3_cy1_cy6 <- [ {a = coord3d(120,199,0), b = coord3d(120,264,3) }, {a = coord3d(121,264,3), b = coord3d(121,199,0) }, + {a = coord3d(120,271,3), b = coord3d(120,324,5) }, {a = coord3d(121,324,5), b = coord3d(121,271,3) }, + {a = coord3d(120,331,5), b = coord3d(120,377,9) }, {a = coord3d(121,377,9), b = coord3d(121,331,5) } + ] +// tunnel build +way3_tun_list <- [coord3d(88,198,6), coord3d(87,198,7), coord3d(86,198,8)] +// portal - first tile underground - end tile underground - portal +way3_tun_coord <- [coord3d(90,198,6), coord3d(89,198,6), coord3d(63,198,8), coord3d(60,198,11)]//, dir = null + +/** + * define signals and catenary for rail line city 3 -> city 6 + * + */ +way3_sign_list <- [ {c = coord3d(94,197,6), ribi = 8}, {c = coord3d(112,198,2), ribi = 2}, + {c = coord3d(121,199,0), ribi = 1}, {c = coord3d(120,263,3), ribi = 4}, + {c = coord3d(121,271,3), ribi = 1}, {c = coord3d(120,324,5), ribi = 4}, + {c = coord3d(121,331,5), ribi = 1}, {c = coord3d(120,377,9), ribi = 4}, + ] +way3_cate_list1 <- [ {a = coord3d(55,198,11), b = coord3d(90,198,6), dir = 0, tunn = true}, + {a = coord3d(90,198,6), b = coord3d(120,198,0), dir = 0, tunn = false}, + {a = coord3d(120,198,0), b = coord3d(120,383,9), dir = 5, tunn = false}, + {a = coord3d(121,383,9), b = coord3d(121,197,0), dir = 2, tunn = false}, + {a = coord3d(120,197,0), b = coord3d(90,197,6), dir = 6, tunn = false}, + {a = coord3d(90,197,6), b = coord3d(55,197,11), dir = 6, tunn = true} + ] + +// dock raffenery - cannal stop - cannel way build +way4_cannal <- [coord3d(140,194,-3), ch4_ship2_halts[1], coord3d(127,194,-1)] +c_cannel_lim <- {a = coord(114, 194), b = coord(140, 194)} + +way5_fac7_fac8 <- [coord3d(132,233,0), coord3d(131,209,-1)]//{, dir = 2} + +/** + * chapter 5 + * + * extensions_tiles - tiles for post building + * + */ + +//extensions_tiles <- [coord(111,182), coord(116,182), coord(121,183), coord(127,187), +// coord(132,190), coord(121,190), coord(118,192), coord(113,191)] + +/** + * set tiles for pos chapter start + * + * + */ +coord_chapter_1 <- city1_mon // city1_mon +coord_chapter_2 <- city1_road_depot // city1_road_depot +coord_chapter_3 <- coord_fac_2 // Saw mill +coord_chapter_4 <- ship_depot // ship_depot +coord_chapter_5 <- coord_fac_8 // Coal power station +coord_chapter_6 <- city1_halt_airport[0] // airport road stop +coord_chapter_7 <- city3_tow // city 3 townhall + +/** + * coord to arrea + * + */ +ch4_curiosity <- coord(185,135) diff --git a/class/class_basic_data.nut b/class/class_basic_data.nut index 35b005c..b3738a7 100644 --- a/class/class_basic_data.nut +++ b/class/class_basic_data.nut @@ -1,18 +1,21 @@ -/** - * @file class_basic_data.nut - * @brief sets the pakset specific data - * - * all object names correspond to the names in the dat files - * - */ - -// placeholder for tools names in simutrans +/** @file class_basic_data.nut + * @brief sets the pakset specific data + * + * all object names correspond to the names in the dat files + * + */ + +/// placeholder for tools names in simutrans tool_alias <- {inspe = "Abfrage", road= "ROADTOOLS", rail = "RAILTOOLS", ship = "SHIPTOOLS", land = "SLOPETOOLS", spec = "SPECIALTOOLS"} -// placeholder for good names in pak64 +/// placeholder for good names in pak64 good_alias <- {mail = "Post", passa= "Passagiere", goods = "Goods", wood = "Holz", plan = "Bretter", coal = "Kohle", oel = "Oel" , gas = "Gasoline"} -// placeholder for shortcut keys names +/** + * placeholder for shortcut keys names + * + * @param string pak name + */ switch (pak_name) { case "pak64": key_alias <- {plus_s = "+", minus_s = "-"} @@ -25,18 +28,23 @@ good_alias <- {mail = "Post", passa= "Passagiere", goods = "Goods", wood = "Hol break } +/** + * factory_data list the factory data + * + * list factory_data ( id, { translate name, tile list, tile_x(0, 0) } ) + */ factory_data <- {} function get_factory_data(id) { local t = factory_data.rawget(id) return t } -/* - * rename factory names - * translate object name in to language by start scenario - * - * set factory data - */ +/** + * translate factorys raw name in to game language by start scenario + * + * set factory_data{} + * + */ function rename_factory_names() { local list = factory_list_x() @@ -48,7 +56,7 @@ function rename_factory_names() { factory_x(f_tile[0].x, f_tile[0].y).set_name(translate(f_name)) - if ( f_tile[0].x == 123 && f_tile[0].y == 160 ) { + if ( search_tile_in_tiles(f_tile, coord_fac_1) ) { // Timber plantation //translate_objects_list.rawset("fac_1_name", translate(f_name)) local t = factory_x(f_tile[0].x, f_tile[0].y).get_tile_list() @@ -61,43 +69,43 @@ function rename_factory_names() { gui.add_message("factory_data d.rawin: "+d.rawget("c_list")) //factory_data.1.rawset(")*/ } - if ( f_tile[0].x == 93 && f_tile[0].y == 153 ) { + if ( search_tile_in_tiles(f_tile, coord_fac_2) ) { // Saw mill translate_objects_list.rawset("fac_2_name", translate(f_name)) local t = factory_x(f_tile[0].x, f_tile[0].y).get_tile_list() factory_data.rawset("2", {name = translate(f_name), c_list = t, c = coord(f_tile[0].x, f_tile[0].y)}) } - if ( f_tile[0].x == 110 && f_tile[0].y == 190 ) { + if ( search_tile_in_tiles(f_tile, coord_fac_3) ) { // Construction Wholesaler translate_objects_list.rawset("fac_3_name", translate(f_name)) local t = factory_x(f_tile[0].x, f_tile[0].y).get_tile_list() factory_data.rawset("3", {name = translate(f_name), c_list = t, c = coord(f_tile[0].x, f_tile[0].y)}) } - if ( f_tile[0].x == 168 && f_tile[0].y == 189 ) { + if ( search_tile_in_tiles(f_tile, coord_fac_4) ) { // Oil rig translate_objects_list.rawset("fac_4_name", translate(f_name)) local t = factory_x(f_tile[0].x, f_tile[0].y).get_tile_list() factory_data.rawset("4", {name = translate(f_name), c_list = t, c = coord(f_tile[0].x, f_tile[0].y)}) } - if ( f_tile[0].x == 149 && f_tile[0].y == 200 ) { + if ( search_tile_in_tiles(f_tile, coord_fac_5) ) { // Oil refinery translate_objects_list.rawset("fac_5_name", translate(f_name)) local t = factory_x(f_tile[0].x, f_tile[0].y).get_tile_list() factory_data.rawset("5", {name = translate(f_name), c_list = t, c = coord(f_tile[0].x, f_tile[0].y)}) } - if ( f_tile[0].x == 112 && f_tile[0].y == 192 ) { + if ( search_tile_in_tiles(f_tile, coord_fac_6) ) { // Gas station translate_objects_list.rawset("fac_6_name", translate(f_name)) local t = factory_x(f_tile[0].x, f_tile[0].y).get_tile_list() factory_data.rawset("6", {name = translate(f_name), c_list = t, c = coord(f_tile[0].x, f_tile[0].y)}) } - if ( f_tile[0].x == 131 && f_tile[0].y == 235 ) { + if ( search_tile_in_tiles(f_tile, coord_fac_7) ) { // Coal mine translate_objects_list.rawset("fac_7_name", translate(f_name)) local t = factory_x(f_tile[0].x, f_tile[0].y).get_tile_list() factory_data.rawset("7", {name = translate(f_name), c_list = t, c = coord(f_tile[0].x, f_tile[0].y)}) } - if ( f_tile[0].x == 130 && f_tile[0].y == 207 ) { + if ( search_tile_in_tiles(f_tile, coord_fac_8) ) { // Coal power station translate_objects_list.rawset("fac_8_name", translate(f_name)) local t = factory_x(f_tile[0].x, f_tile[0].y).get_tile_list() @@ -105,24 +113,37 @@ function rename_factory_names() { } } - /* - gui.add_message("factory_data rawin 1: "+factory_data.rawin("1")) - gui.add_message("factory_data rawin 2: "+factory_data.rawin("2")) - gui.add_message("factory_data rawin 3: "+factory_data.rawin("3")) - gui.add_message("factory_data rawin 4: "+factory_data.rawin("4")) - gui.add_message("factory_data rawin 5: "+factory_data.rawin("5")) - gui.add_message("factory_data rawin 6: "+factory_data.rawin("6")) - gui.add_message("factory_data rawin 7: "+factory_data.rawin("7")) - gui.add_message("factory_data rawin 8: "+factory_data.rawin("8")) - */ + /*local fab_list = [ factory_data.rawin("1"), + factory_data.rawin("2"), + factory_data.rawin("3"), + factory_data.rawin("4"), + factory_data.rawin("5"), + factory_data.rawin("6"), + factory_data.rawin("7"), + factory_data.rawin("8") + ]*/ +/* + gui.add_message(player_x(1), "factory_data len: "+factory_data.len()) + + gui.add_message(player_x(1), "factory_data rawin 1: "+factory_data.rawin("1")) + gui.add_message(player_x(1), "factory_data rawin 2: "+factory_data.rawin("2")) + gui.add_message(player_x(1), "factory_data rawin 3: "+factory_data.rawin("3")) + gui.add_message(player_x(1), "factory_data rawin 4: "+factory_data.rawin("4")) + gui.add_message(player_x(1), "factory_data rawin 5: "+factory_data.rawin("5")) + gui.add_message(player_x(1), "factory_data rawin 6: "+factory_data.rawin("6")) + gui.add_message(player_x(1), "factory_data rawin 7: "+factory_data.rawin("7")) + gui.add_message(player_x(1), "factory_data rawin 8: "+factory_data.rawin("8")) + + gui.add_message(player_x(1), "coord_fac_1: "+coord_to_string(coord_fac_1)) +*/ } -/* - * translate objects - * - * - */ +/** + * array to translate texts from simutrans programm + * + * set translate_objects_list + */ function translate_objects() { //translate_objects_list.inspec <- translate("Abfrage") @@ -152,25 +173,33 @@ function translate_objects() { // set toolbar with powerline tools if ( pak_name == "pak64.german" ) { translate_objects_list.rawset("tools_power", translate("POWERLINE")) + translate_objects_list.rawset("tools_mail_extension", translate("EXTENSIONS")) + translate_objects_list.rawset("tools_road_stations", translate("ROADSTATIONS")) } else { translate_objects_list.rawset("tools_power", translate("SPECIALTOOLS")) + translate_objects_list.rawset("tools_mail_extension", translate("SPECIALTOOLS")) + translate_objects_list.rawset("tools_road_stations", translate("ROADTOOLS")) } //gui.add_message("Current: "+translate_objects_list.inspec) + // tools + translate_objects_list.rawset("public_stop", translate("Make way or stop public (will join with neighbours), %i times maintainance")) + rename_factory_names() } -/* - * set vehicle for chapter 2 step 4 - * - */ +/** + * vehicle for chapter 2 step 4, 6, 7 + * + * @return string object name + */ function get_veh_ch2_st4() { switch (pak_name) { case "pak64": return "BuessingLinie" break case "pak64.german": - return "OpelBlitz" + return "BuessingLinie" break case "pak128": return "S_Kroytor_LiAZ-677" @@ -179,15 +208,16 @@ function get_veh_ch2_st4() { } -/* - * set objects for chapter 2 - * - * id 1 = way name - * id 2 = bridge name - * id 3 = stations name - * id 4 = depot name - * - */ +/** + * set objects for chapter 2 + * + * @param integer id + * @li id 1 = way name + * @li id 2 = bridge name + * @li id 3 = stations name + * + * @return object raw name + */ function get_obj_ch2(id) { switch (pak_name) { case "pak64": @@ -201,9 +231,6 @@ function get_obj_ch2(id) { case 3: return "BusStop" break - case 4: - return "CarDepot" - break } break case "pak64.german": @@ -217,9 +244,6 @@ function get_obj_ch2(id) { case 3: return "BusHalt_1" break - case 4: - return "CarDepot" - break } break case "pak128": @@ -233,25 +257,24 @@ function get_obj_ch2(id) { case 3: return "medium_classic_bus_stop" break - case 4: - return "CarDepot" - break } break } } -/* - * set vehicle for chapter 3 - * - * id 1 = step 5 loco - * id 2 = step 7 loco - * id 3 = step 11 loco - * id 4 = step 4 wag - * id 5 = step 7 wag - * id 6 = step 11 wag - * - */ +/** + * vehicle for chapter 3 + * + * @param integer id + * @li id 1 = step 5 loco + * @li id 2 = step 7 loco + * @li id 3 = step 11 loco + * @li id 4 = step 5 wag + * @li id 5 = step 7 wag + * @li id 6 = step 11 wag + * + * @return object raw name + */ function get_veh_ch3(id) { switch (pak_name) { case "pak64": @@ -324,18 +347,20 @@ function get_veh_ch3(id) { } -/* - * set objects for chapter 3 - * - * id 1 = way name - * id 2 = bridge name - * id 3 = stations name - * id 4 = depot name - * id 5 = tunnel name - * id 6 = signal name - * id 7 = overheadpower name - * - */ +/** + * objects for chapter 3 + * + * @param integer id + * @li id 1 = way name + * @li id 2 = bridge name + * @li id 3 = stations name + * @li id 4 = - + * @li id 5 = tunnel name + * @li id 6 = signal name + * @li id 7 = overheadpower name + * + * @return object raw name + */ function get_obj_ch3(id) { switch (pak_name) { case "pak64": @@ -350,7 +375,7 @@ function get_obj_ch3(id) { return "FreightTrainStop" break case 4: - return "TrainDepot" + return "" break case 5: return "RailTunnel" @@ -375,7 +400,7 @@ function get_obj_ch3(id) { return "MHzPS2FreightTrainStop" break case 4: - return "TrainDepot" + return "" break case 5: return "RailTunnel_2" @@ -400,7 +425,7 @@ function get_obj_ch3(id) { return "Container1TrainStop" break case 4: - return "TrainDepot" + return "" break case 5: return "Rail_140_Tunnel" @@ -416,13 +441,15 @@ function get_obj_ch3(id) { } } -/* - * set vehicle for chapter 4 - * - * id 1 = step 4 ship - * id 2 = step 7 ship - * - */ +/** + * vehicle for chapter 4 + * + * @param integer id + * @li id 1 = step 4 ship + * @li id 2 = step 7 ship + * + * @return object raw name + */ function get_veh_ch4(id) { switch (pak_name) { case "pak64": @@ -459,22 +486,23 @@ function get_veh_ch4(id) { } -/* - * set objects for chapter 4 - * - * id 1 = way name - * id 2 = harbour 1 name (good) - * id 3 = cannel stop name - * id 4 = harbour 2 name (passenger) - * id 5 = depot name - * - */ +/** + * objects for chapter 4 + * + * @param integer id + * @li id 1 = - + * @li id 2 = harbour 1 name (good) + * @li id 3 = cannel stop name + * @li id 4 = harbour 2 name (passenger) + * + * @return string object name + */ function get_obj_ch4(id) { switch (pak_name) { case "pak64": switch (id) { case 1: - return "Kanal" + return "" break case 2: return "LargeShipStop" @@ -485,15 +513,12 @@ function get_obj_ch4(id) { case 4: return "ShipStop" break - case 5: - return "ShipDepot" - break } break case "pak64.german": switch (id) { case 1: - return "Kanal" + return "" break case 2: return "LargeShipStop" @@ -504,15 +529,12 @@ function get_obj_ch4(id) { case 4: return "ShipStop" break - case 5: - return "ShipDepot" - break } break case "pak128": switch (id) { case 1: - return "canal_020" + return "" break case 2: return "Long_Goods_Dock" @@ -523,23 +545,22 @@ function get_obj_ch4(id) { case 4: return "ShipStop" break - case 5: - return "ShipDepot" - break } break } } -/* - * set vehicle for chapter 5 - * - * id 1 = step 2 truck (coal) - * id 2 = step 2 truck trail (coal) - * id 3 = step 4 truck (post) - * id 4 = step 4 ship (post) - * - */ +/** + * vehicle for chapter 5 + * + * @param integer id + * @li id 1 = step 2 truck (coal) + * @li id 2 = step 2 truck trail (coal) + * @li id 3 = step 4 truck (post) + * @li id 4 = step 4 ship (post) + * + * @return string object name + */ function get_veh_ch5(id) { switch (pak_name) { case "pak64": @@ -594,17 +615,17 @@ function get_veh_ch5(id) { } -/* - * set objects for chapter 5 - * - * id 1 = road way name - * id 2 = truck stop name (good) - * id 3 = powerline way name - * id 4 = powerline transformer - * id 5 = depot name - * id 6 = post extension name - * - */ +/** + * objects for chapter 5 + * + * @param integer id + * @li id 1 = road way name + * @li id 2 = truck stop name (good) + * @li id 3 = - + * @li id 4 = powerline transformer + * + * @return string object name + */ function get_obj_ch5(id) { switch (pak_name) { case "pak64": @@ -616,17 +637,11 @@ function get_obj_ch5(id) { return "CarStop" break case 3: - return "Powerline" + return "" break case 4: return "Aufspanntransformator" break - case 5: - return "CarDepot" - break - case 6: - return "PostOffice" - break } break case "pak64.german": @@ -638,17 +653,11 @@ function get_obj_ch5(id) { return "LKW_Station_1" break case 3: - return "Powerline" + return "" break case 4: return "Aufspanntransformator" //PowerSource break - case 5: - return "CarDepot" - break - case 6: - return "SmallPostOffice" - break } break case "pak128": @@ -660,30 +669,26 @@ function get_obj_ch5(id) { return "CarStop" break case 3: - return "Powerline" + return "" break case 4: return "Aufspanntransformator" break - case 5: - return "CarDepot" - break - case 6: - return "PostOffice" - break } break } } -/* - * set vehicle for chapter 6 - * - * id 1 = step 2 airplane (passenger) - * id 2 = step 3 bus - * id 3 = step 4 bus - * - */ +/** + * vehicle for chapter 6 + * + * @param integer id + * @li id 1 = step 2 airplane (passenger) + * @li id 2 = step 3 bus + * @li id 3 = step 4 bus + * + * @return string object name + */ function get_veh_ch6(id) { switch (pak_name) { case "pak64": @@ -729,17 +734,17 @@ function get_veh_ch6(id) { } -/* - * set objects for chapter 6 - * - * id 1 = runway name - * id 2 = taxiway name - * id 3 = air stop name - * id 4 = air extension name - * id 5 = air depot name - * id 6 = road depot name - * - */ +/** + * objects for chapter 6 + * + * @param integer id + * @li id 1 = runway name + * @li id 2 = taxiway name + * @li id 3 = air stop name + * @li id 4 = air extension name + * + * @return string object name + */ function get_obj_ch6(id) { switch (pak_name) { case "pak64": @@ -754,13 +759,7 @@ function get_obj_ch6(id) { return "AirStop" break case 4: - return "Tower1930" - break - case 5: - return "1930AirDepot" - break - case 6: - return "CarDepot" + return "Terminal1930" break } break @@ -776,13 +775,7 @@ function get_obj_ch6(id) { return "AirStop" break case 4: - return "Tower1930" - break - case 5: - return "1930AirDepot" - break - case 6: - return "CarDepot" + return "Terminal1930" break } break @@ -800,25 +793,21 @@ function get_obj_ch6(id) { case 4: return "Terminal1950_AirportBlg_S" break - case 5: - return "1940AirDepot" - break - case 6: - return "CarDepot" - break } break } } -/* - * set count wg for train - * - * id 1 - chapter 3 : train good Holz - * id 2 - chapter 3 : train good Bretter - * id 3 - chapter 3 : train good Passagiere - * - */ +/** + * count wg for train + * + * @param integer id + * @li id 1 - chapter 3 : train good Holz + * @li id 2 - chapter 3 : train good Bretter + * @li id 3 - chapter 3 : train good Passagiere + * + * @return integer count + */ function set_train_lenght(id) { switch (pak_name) { @@ -864,17 +853,194 @@ function set_train_lenght(id) { } } -/* - * set transportet goods - * - * id 1 - chapter 3 : train good Holz - * id 2 - chapter 3 : train good Bretter - * id 3 - chapter 7 : bus city Hepplock - * id 4 - chapter 7 : bus city Appingbury - * id 5 - chapter 7 : bus city Hillcross - * id 6 - chapter 7 : bus city Springville - * - */ +/** + * count convoys for line + * + * @param integer id + * @li id 1 - chapter 2 : city1_halt_1 - halts city 1 + * @li id 2 - chapter 2 : city1_halt_2 - halts connect city 1 dock and station + * @li id 3 - chapter 2 : city2_halt_1 - halts connect city 2 to city 1 + * @li id 4 - chapter 3 : rail factory 1 -> factory 2 + * @li id 5 - chapter 3 : rail factory 2 -> factory 3 + * @li id 6 - chapter 3 : ch3_rail_stations - city line + * @li id 7 - chapter 4 : ch4_ship1_halts - dock raffinerie - (coord_fac4) + * @li id 8 - chapter 4 : ch4_ship2_halts - dock raffinerie - canal stop gas station + * @li id 9 - chapter 4 : ch4_ship3_halts - passenger ship + * @li id 10 - chapter 5 : road coal to power plant + * @li id 11 - chapter 5 : city1_post_halts - halts for post + * @li id 12 - chapter 5 : post ship dock - oil rigg + * @li id 13 - chapter 6 : city1_city7_air + * @li id 14 - chapter 6 : city1_halt_airport + * @li id 15 - chapter 6 : city7_halt + * + * @return string object name + */ +function set_convoy_count(id) { + + switch (pak_name) { + case "pak64": + switch (id) { + case 1: + return 1 + break + case 2: + return 3 + break + case 3: + return 1 + break + case 4: + return 1 + break + case 5: + return 1 + break + case 6: + return 3 + break + case 7: + return 2 + break + case 8: + return 2 + break + case 9: + return 1 + break + case 10: + return 10 + break + case 11: + return 2 + break + case 12: + return 1 + break + case 13: + return 1 + break + case 14: + return 2 + break + case 15: + return 4 + break + } + break + case "pak64.german": + switch (id) { + case 1: + return 1 + break + case 2: + return 3 + break + case 3: + return 1 + break + case 4: + return 1 + break + case 5: + return 1 + break + case 6: + return 2 + break + case 7: + return 2 + break + case 8: + return 2 + break + case 9: + return 1 + break + case 10: + return 7 + break + case 11: + return 3 + break + case 12: + return 1 + break + case 13: + return 1 + break + case 14: + return 2 + break + case 15: + return 4 + break + } + break + case "pak128": + switch (id) { + case 1: + return 1 + break + case 2: + return 3 + break + case 3: + return 1 + break + case 4: + return 1 + break + case 5: + return 1 + break + case 6: + return 3 + break + case 7: + return 2 + break + case 8: + return 2 + break + case 9: + return 1 + break + case 10: + return 10 + break + case 11: + return 3 + break + case 12: + return 1 + break + case 13: + return 1 + break + case 14: + return 2 + break + case 15: + return 4 + break + } + break + } +} + +/** + * Number of goods to be transported + * + * @param integer id + * @li id 1 - chapter 3 : train good Holz + * @li id 2 - chapter 3 : train good Bretter + * @li id 3 - chapter 7 : bus city Hepplock + * @li id 4 - chapter 7 : bus city Appingbury + * @li id 5 - chapter 7 : bus city Hillcross + * @li id 6 - chapter 7 : bus city Springville + * + * @return integer transport count + */ function set_transportet_goods(id) { switch (pak_name) { @@ -948,21 +1114,29 @@ function set_transportet_goods(id) { } -/* - * set loading capacity - * - * id 1 - chapter 2 step 4 : bus city Pollingwick - * id 2 - chapter 2 step 6 : bus Pollingwick - Dock - * id 3 - chapter 2 step 7 : bus Pollingwick - Malliby - * - */ +/** + * Number of loading capacity + * + * @param id + * @li id 1 - chapter 2 step 4 : bus city Pollingwick + * @li id 2 - chapter 2 step 6 : bus Pollingwick - Dock + * @li id 3 - chapter 2 step 7 : bus Pollingwick - Malliby + * @li id 4 - chapter 3 step 11 : city train + * @li id 5 - chapter 6 step 2 : air city 1 - city 7 + * @li id 6 - chapter 6 step 3 : bus city 1 - Airport + * @li id 7 - chapter 6 step 4 : bus city 7 - Airport + * @li id 8 - chapter 5 step 4 : post city 1 + * @li id 9 - chapter 5 step 4 : post ship oil rig + * + * @return integer loading capacity + */ function set_loading_capacity(id) { switch (pak_name) { case "pak64": switch (id) { case 1: - return 100 + return 60 break case 2: return 100 @@ -970,6 +1144,24 @@ function set_loading_capacity(id) { case 3: return 100 break + case 4: + return 100 + break + case 5: + return 100 + break + case 6: + return 100 + break + case 7: + return 60 + break + case 8: + return 60 + break + case 9: + return 100 + break } break case "pak64.german": @@ -983,12 +1175,30 @@ function set_loading_capacity(id) { case 3: return 60 break + case 4: + return 80 + break + case 5: + return 100 + break + case 6: + return 100 + break + case 7: + return 60 + break + case 8: + return 60 + break + case 9: + return 70 + break } break case "pak128": switch (id) { case 1: - return 100 + return 60 break case 2: return 100 @@ -996,23 +1206,50 @@ function set_loading_capacity(id) { case 3: return 100 break + case 4: + return 100 + break + case 5: + return 100 + break + case 6: + return 100 + break + case 7: + return 60 + break + case 8: + return 60 + break + case 9: + return 100 + break } break } } -/* - * set waiting time - * - * id 1 - chapter 2 step 4 : bus city Pollingwick - * id 2 - chapter 2 step 6 : bus Pollingwick - Dock - * id 3 - chapter 2 step 7 : bus Pollingwick - Malliby - * - * - * 1 day = 2115 - * 1 hour = 88 - */ +/** + * Number of waiting time passenger and post + * + * 1 day = 2115
+ * 1 hour = 88 + * + * @param id + * @li id 1 - chapter 2 step 4 : bus city Pollingwick + * @li id 2 - chapter 2 step 6 : bus Pollingwick - Dock + * @li id 3 - chapter 2 step 7 : bus Pollingwick - Malliby + * @li id 4 - chapter 3 step 11 : city train + * @li id 5 - chapter 4 step 7 : good ship produser -> consumer + * @li id 6 - chapter 5 step 4 : road mail + * @li id 7 - chapter 5 step 4 : ship oil rig + * @li id 8 - chapter 6 step 2 : air city 1 - city 7 + * @li id 9 - chapter 6 step 3 : bus city 1 - Airport + * @li id 10 - chapter 6 step 4 : bus city 7 - Airport + * + * @return integer waiting time + */ function set_waiting_time(id) { switch (pak_name) { @@ -1022,11 +1259,32 @@ function set_waiting_time(id) { return 10571 break case 2: - return 10571 + return 6343 break case 3: return 10571 break + case 4: + return 25369 + break + case 5: + return 42282 + break + case 6: + return 6343 + break + case 7: + return 42282 + break + case 8: + return 42282 + break + case 9: + return 10571 + break + case 10: + return 4230 + break } break case "pak64.german": @@ -1040,6 +1298,27 @@ function set_waiting_time(id) { case 3: return 2555 break + case 4: + return 2115 + break + case 5: + return 42282 + break + case 6: + return 10571 + break + case 7: + return 42282 + break + case 8: + return 42282 + break + case 9: + return 10571 + break + case 10: + return 4230 + break } break case "pak128": @@ -1048,27 +1327,52 @@ function set_waiting_time(id) { return 10571 break case 2: - return 10571 + return 6345 break case 3: return 10571 break + case 4: + return 25369 + break + case 5: + return 42282 + break + case 6: + return 10571 + break + case 7: + return 42282 + break + case 8: + return 42282 + break + case 9: + return 10571 + break + case 10: + return 4230 + break } break } } -/* - * goods def - * - * id = good id - * select = define return data - * 1 = translate metric - * 2 = raw good name - * 3 = translate good name - * - */ +/** + * good data + * + * @param integer id = good id + * @param integer select = define return data + * @li select 1 = translate metric + * @li select 2 = raw good name + * @li select 3 = translate good name + * + * @return + * @li integer good metric (select 1) + * @li string good raw name (select2) + * @li string good translated name (select=3) + */ function get_good_data(id, select = null) { local good_n = null @@ -1089,6 +1393,9 @@ function get_good_data(id, select = null) { case 5: good_n = "Kohle" break + case 6: + good_n = "Post" + break } local obj = good_desc_x(good_n) @@ -1115,16 +1422,16 @@ function get_good_data(id, select = null) { return output } -/* - * factory prod and good data for textfiles - * - * tile = tile_x factory - * g_id = good name - * read = "in" / "out" - * - * return array[base_production, base_consumption, factor] - */ - function read_prod_data(tile, g_id, read = null) { +/** + * factory prod and good data for textfiles + * + * @param coord tile = tile_x factory + * @param integer g_id = good name + * @param string read = "in" / "out" + * + * @return array array[base_production, base_consumption, factor] + */ +function read_prod_data(tile, g_id, read = null) { // actual not read good data local t = square_x(tile.x, tile.y).get_ground_tile() @@ -1175,8 +1482,18 @@ function get_good_data(id, select = null) { return output - } +} +/** + * files for more infos + * + * @param txt_file + * txt_file = bridge - bridge build + * txt_file = tunnel - tunnel build + * txt_file = info - more infos for pakset + * + * @return ttextfile(file) + */ function get_info_file(txt_file) { //ttextfile("info/build_bridge.txt") @@ -1223,3 +1540,249 @@ function get_info_file(txt_file) { } } + +/** + * halt id for waiting time in the halt list + * + * @param integer id + * @li id 1 = city1_halt_1[id] - halts city 1 + * @li id 2 = city1_halt_2[id] - halts connect city 1 dock and station + * @li id 3 = city2_halt_1[id] - halts connect city 2 to city 1 + * @li id 4 = ch3_rail_stations - city line + * @li id 5 = ch4_ship3_halts - passenger ship + * @li id 6 = city1_city7_air - airplane + * @li id 7 = city1_halt_airport - bus airport - city 1 + * @li id 8 = city7_halt - bus airport - city 7 + * @li id 9 = city1_post_halts - road halts for post + * @li id 10 = ch5_post_ship_halts - post passenger dock - factory 4 (Oil rigg) + * + * @return integer id for halt list + */ +function get_waiting_halt(id) { + + switch (pak_name) { + case "pak64": + switch (id) { + case 1: + return 2 + break + case 2: + return 4 + break + case 3: + return 2 + break + case 4: + return 2 + break + case 5: + return 0 + break + case 6: + return 0 + break + case 7: + return 0 + break + case 8: + return 0 + break + case 9: + return 7 + break + case 10: + return 0 + break + } + break + case "pak64.german": + switch (id) { + case 1: + return 2 + break + case 2: + return 3 + break + case 3: + return 2 + break + case 4: + return 0 + break + case 5: + return 0 + break + case 6: + return 0 + break + case 7: + return 0 + break + case 8: + return 0 + break + case 9: + return 0 + break + case 10: + return 0 + break + } + break + case "pak128": + switch (id) { + case 1: + return 2 + break + case 2: + return 4 + break + case 3: + return 2 + break + case 4: + return 0 + break + case 5: + return 0 + break + case 6: + return 0 + break + case 7: + return 0 + break + case 8: + return 0 + break + case 9: + return 0 + break + case 10: + return 0 + break + } + break + } + +} + +/** + * set icon code to text by different icons in paksets + * + * The folder info_files/img-tools contains a scenario for displaying the icons with their IDs. + * + * @param string id = icon code + * The icon code are documented in the file info_files/img-tools.ods. + * + * + * @return string image code for icons in text + */ +function get_gui_img(id) { + + switch (pak_name) { + case "pak64": + switch (id) { + case "road_menu": + return "" + break + case "rail_menu": + return "" + break + case "grid": + return "" + break + case "display": + return " " + break + case "post_menu": + return "" + break + case "road_halts": + return "" + break + case 7: + return 0 + break + case 8: + return 0 + break + case 9: + return 0 + break + case 10: + return 0 + break + } + break + case "pak64.german": + switch (id) { + case "road_menu": + return " " + break + case "rail_menu": + return " " + break + case "grid": + return "" + break + case "display": + return "" + break + case "post_menu": + return "" + break + case "road_halts": + return " " + break + case 7: + return 0 + break + case 8: + return 0 + break + case 9: + return 0 + break + case 10: + return 0 + break + } + break + case "pak128": + switch (id) { + case "road_menu": + return "" + break + case "rail_menu": + return "" + break + case "grid": + return "" + break + case "display": + return " " + break + case "post_menu": + return "" + break + case "road_halts": + return "" + break + case 7: + return 0 + break + case 8: + return 0 + break + case 9: + return 0 + break + case 10: + return 0 + break + } + break + } + +} diff --git a/class/class_basic_gui.nut b/class/class_basic_gui.nut index d7caaf3..11f18a2 100644 --- a/class/class_basic_gui.nut +++ b/class/class_basic_gui.nut @@ -1,8 +1,10 @@ -/* - * tool id list see ../info_files/tool_id_list.ods - * - * - */ +/** @file class_basic_gui.nut + * @brief defines toolbars and tools + * + * tool id list see ../info_files/tool_id_list.ods + * + * + */ // placeholder for some menus icon switch (pak_name) { @@ -20,11 +22,12 @@ break } -/* - * general disabled not used menu and tools - * - */ -function general_disabled_tools( pl ) { +/** + * @fn general_disabled_tools ( pl ) + * general disabled not used menu and tools + * + */ +function general_disabled_tools ( pl ) { // reset rules rules.clear() @@ -45,13 +48,19 @@ function general_disabled_tools( pl ) { tool_increase_industry, tool_merge_stop, dialog_enlarge_map, - tool_raise_land, - tool_lower_land, - tool_restoreslope, - 4143, //generate script + 4143, //generate script 4144 //pipette ] + // chapter 7 all slope tools allowed + if ( persistent.chapter < 7 ) { + local slope_tools = [ tool_raise_land, + tool_lower_land, + tool_restoreslope + ] + unused_tools.extend(slope_tools) + } + local pak64_tools = [ 0x8004, 0x8005, 0x4022, tool_set_climate ] local pak64german_tools = [ 0x800b, 0x800c, 0x800d, 0x8013, 0x8014, 0x8015, 0x8023, 0x8025, 0x8027, 0x8007, 0x8006 ] local pak128_tools = [0x8004, 0x8005, 0x8006, 0x800a, 0x4022, tool_set_climate ] @@ -75,14 +84,12 @@ function general_disabled_tools( pl ) { chapter_disabled_tools( pl ) } -/* - * disabled tools for chapter - * - * - * - * - */ -function chapter_disabled_tools( pl ) { +/** + * @fn chapter_disabled_tools( pl ) + * disabled tools for chapter + * + */ +function chapter_disabled_tools ( pl ) { /* persistent.chapter <- 1 // stores chapter number persistent.step <- 1 // stores step number of chapter @@ -249,7 +256,6 @@ function chapter_disabled_tools( pl ) { tool_remove_way, tool_remover, tool_make_stop_public, - tool_build_station, tool_build_bridge, tool_build_tunnel, tool_build_depot, @@ -406,14 +412,15 @@ function chapter_disabled_tools( pl ) { } -/* - * enabled tools for chapter step - * - * allowed tools for steps must be allowed in all subsequent steps of the chapter - * allowed tools not persistent save in rules - * - */ -function chapter_step_enabled_tools( pl ) { +/** + * @fn chapter_step_enabled_tools ( pl ) + * enabled tools for chapter step + * + * allowed tools for steps must be allowed in all subsequent steps of the chapter + * allowed tools not persistent save in rules + * + */ +function chapter_step_enabled_tools ( pl ) { /* persistent.chapter <- 1 // stores chapter number persistent.step <- 1 // stores step number of chapter @@ -933,7 +940,7 @@ function chapter_step_enabled_tools( pl ) { enabled_tools.extend(_enabled_tools) local _pak64_tools = [ 0x8009 ] - local _pak64german_tools = [ 0x8011 ] + local _pak64german_tools = [ 0x8002, 0x8011 ] local _pak128_tools = [ 0x800b ] enabled_tools_pak64.extend(_pak64_tools) @@ -1088,7 +1095,7 @@ function chapter_step_enabled_tools( pl ) { case 5: rules.clear() break - } + } break @@ -1133,15 +1140,12 @@ function chapter_step_enabled_tools( pl ) { rules.gui_needs_update() } -/* - * - * - * - * - * - * - */ - function update_tools(list, id, wt_list, wt) { +/** + * @fn update_tools ( list, id, wt_list, wt ) + * + * + */ + function update_tools ( list, id, wt_list, wt ) { local res = {ok = false, result = false } local wt_res = false if(wt < 0){ diff --git a/class/class_chapter_00.nut b/class/class_chapter_00.nut index 0cb512c..5aee1b4 100644 --- a/class/class_chapter_00.nut +++ b/class/class_chapter_00.nut @@ -1,11 +1,13 @@ -/* - * class chapter_00 - * - * - * Can NOT be used in network game ! - */ - - +/** @file class_chapter_00.nut + * @brief error output for not compatible simutrans and pakset version + */ + +/** + * @brief class_chapter_00.nut + * error output for not compatible simutrans and pakset version + * + * Can NOT be used in network game ! + */ class tutorial.chapter_00 extends basic_chapter { chapter_name = "Checking Compatibility" @@ -42,12 +44,7 @@ class tutorial.chapter_00 extends basic_chapter } function is_work_allowed_here(pl, tool_id, pos) { - local label = tile_x(pos.x,pos.y,pos.z).find_object(mo_label) - local result=null // null is equivalent to 'allowed' - - result = translate("Action not allowed") - - return result + return get_message(2) //translate("Action not allowed") } function is_tool_active(pl, tool_id, wt) { diff --git a/class/class_chapter_01.nut b/class/class_chapter_01.nut index 07d4c59..d090448 100644 --- a/class/class_chapter_01.nut +++ b/class/class_chapter_01.nut @@ -1,56 +1,55 @@ -/* - * class chapter_01 - * - * - * Can NOT be used in network game ! - */ - +/** @file class_chapter_01.nut + * @brief Basic information about Simutrans + */ +/** + * @class tutorial.chapter_01 + * @brief class_chapter_01.nut + * Basic information about Simutrans + * + * Can NOT be used in network game ! + * + */ class tutorial.chapter_01 extends basic_chapter { - chapter_name = "Getting Started" - chapter_coord = coord(113,189) + chapter_name = ch1_name + chapter_coord = coord_chapter_1 startcash = 500000 // pl=0 startcash; 0=no reset comm_script = false - // Step 1 ===================================================================================== - c_fac = coord(149,200) - c_st = coord(117,197) - tx_cty = "This is a town centre" - tx_fac = "This is a factory" - tx_st = "This is a station" - tx_link = "This is a link" - // Step 2 ===================================================================================== c_test = coord3d(0,0,1) // Step 3 ===================================================================================== - c_buil1 = coord(113,189) - c_buil2 = coord(113,185) buil1_name = "" //auto started buil2_name = "" //auto started buil2_list = null //auto started + c_list_mon = null // tile list mon + c_list_cur = null // tile list cur // Step 4 ===================================================================================== cit_list = null //auto started - city_lim = {a = coord(109,181), b = coord(128,193)} - cty1 = {c = coord(111,184), name = ""} + cty1 = {name = ""} function start_chapter() //Inicia solo una vez por capitulo { - cty1.name = get_city_name(cty1.c) - local t = my_tile(cty1.c) + cty1.name = get_city_name(city1_tow) + local t = my_tile(city1_tow) local buil = t.find_object(mo_building) cit_list = buil ? buil.get_tile_list() : null - t = my_tile(c_buil1) + t = my_tile(city1_mon) buil = t.find_object(mo_building) buil1_name = buil ? translate(buil.get_name()):"No existe" + c_list_mon = buil.get_tile_list() - t = my_tile(c_buil2) + t = my_tile(city1_cur) buil = t.find_object(mo_building) buil2_name = buil ? translate(buil.get_name()):"No existe" + c_list_cur = buil.get_tile_list() + + //gui.add_message("city1_post_halts " + city1_post_halts.len()) return 0 } @@ -58,97 +57,103 @@ class tutorial.chapter_01 extends basic_chapter function set_goal_text(text){ switch (this.step) { case 1: - text.pos = cty1.c.href("("+cty1.c.tostring()+")") - text.pos1 = cty1.c.href(""+translate(tx_cty)+" ("+cty1.c.tostring()+")") - text.pos2 = c_fac.href(""+translate(tx_fac)+" ("+c_fac.tostring()+")") - text.pos3 = c_st.href(""+translate(tx_st)+" ("+c_st.tostring()+")") - text.link = ""+translate(tx_link)+" >>" + text.pos = city1_tow.href("("+city1_tow.tostring()+")") + text.pos1 = city1_tow.href(""+translate(ch1_text1)+" ("+city1_tow.tostring()+")") + text.pos2 = coord_fac_1.href(""+translate(ch1_text2)+" ("+coord_fac_1.tostring()+")") + text.pos3 = coord_st_1.href(""+translate(ch1_text3)+" ("+coord_st_1.tostring()+")") + text.link = ""+translate(ch1_text4)+" >>" + text.next_step = translate("Go to next step") break; case 3: - text.pos = ""+buil1_name+" ("+c_buil1.tostring()+")" - text.buld_name = ""+buil2_name+" ("+c_buil2.tostring()+")" + text.pos = ""+buil1_name+" ("+city1_mon.tostring()+")" + text.buld_name = ""+buil2_name+" ("+city1_cur.tostring()+")" break; case 4: - text.pos2 = "" + translate("Town Centre")+" ("+cty1.c.tostring()+")" + text.pos2 = "" + translate(ch1_text5)+" ("+city1_tow.tostring()+")" break; } + + // set image for buttons by different in paksets + text.img_grid = get_gui_img("grid") + text.img_display = get_gui_img("display") + text.town = cty1.name text.tool1 = translate(tool_alias.inspe) return text } function is_chapter_completed(pl) { - local chapter_steps = 4 + persistent.ch_max_steps = 4 local chapter_step = persistent.step - local chapter_sub_steps = 0 // count all sub steps - local chapter_sub_step = 0 // actual sub step + persistent.ch_max_sub_steps = 0 // count all sub steps + persistent.ch_sub_step = 0 // actual sub step local txt=c_test.tostring() switch (this.step) { case 1: - if (pot0 == 1) { + if (pot[0] == 1) { this.next_step() } - //return chapter_percentage(chapter_steps, 1, 0, 0) + //return chapter_percentage(persistent.ch_max_steps, 1, 0, 0) break case 2: - if (txt!="0,0,1" || pot0 == 1) { + if (txt!="0,0,1" || pot[0] == 1) { //Creea un cuadro label local opt = 0 local del = false local text = "X" - label_bord(city_lim.a, city_lim.b, opt, del, text) + label_bord(city1_limit1.a, city1_limit1.b, opt, del, text) this.next_step() } - //return chapter_percentage(chapter_steps, 2, 0, 0) + //return chapter_percentage(persistent.ch_max_steps, 2, 0, 0) break case 3: local next_mark = true - local c_list1 = [my_tile(c_buil1)] - local c_list2 = [my_tile(c_buil2)] + local c_list1 = [my_tile(city1_mon)] + local c_list2 = [my_tile(city1_cur)] local stop_mark = true - if (pot0==0) { + if (pot[0]==0) { try { - next_mark = delay_mark_tile(c_list1) + next_mark = delay_mark_tile(c_list_mon) } catch(ev) { return 0 } } - else if (pot0==1 && pot1==0) { + else if (pot[0]==1 && pot[1]==0) { try { - next_mark = delay_mark_tile(c_list1, stop_mark) + next_mark = delay_mark_tile(c_list_mon, stop_mark) } catch(ev) { return 0 } - pot1=1 + pot[1]=1 } - if (pot1==1 && pot2==0) { + if (pot[1]==1 && pot[2]==0) { try { - next_mark = delay_mark_tile(c_list2) + next_mark = delay_mark_tile(c_list_cur) } catch(ev) { return 0 } } - else if (pot2==1 && pot3==0) { + else if (pot[2]==1 && pot[3]==0) { try { - next_mark = delay_mark_tile(c_list2, stop_mark) + next_mark = delay_mark_tile(c_list_cur, stop_mark) } catch(ev) { return 0 } - pot3=1 + pot[3]=1 } - if (pot3==1 && pot4==0){ + if (pot[3]==1 && pot[4]==0){ comm_script = false this.next_step() } - //return chapter_percentage(chapter_steps, 3, 0, 0) + //return chapter_percentage(persistent.ch_max_steps, 3, 0, 0) break case 4: local next_mark = true @@ -161,7 +166,7 @@ class tutorial.chapter_01 extends basic_chapter catch(ev) { return 0 } - if (pot0 == 1 && next_mark) { + if (pot[0] == 1 && next_mark) { next_mark = delay_mark_tile(list, stop_mark) comm_script = false this.next_step() @@ -174,7 +179,7 @@ class tutorial.chapter_01 extends basic_chapter break } - local percentage = chapter_percentage(chapter_steps, chapter_step, chapter_sub_steps, chapter_sub_step) + local percentage = chapter_percentage(persistent.ch_max_steps, chapter_step, persistent.ch_max_sub_steps, persistent.ch_sub_step) return percentage } @@ -182,7 +187,7 @@ class tutorial.chapter_01 extends basic_chapter local label = tile_x(pos.x,pos.y,pos.z).find_object(mo_label) local result=null // null is equivalent to 'allowed' - result = translate("Action not allowed") + result = get_message(2) switch (this.step) { case 1: @@ -191,15 +196,15 @@ class tutorial.chapter_01 extends basic_chapter break case 3: if(tool_id == 4096) { - if(pot0==0){ - if ((pos.x == c_buil1.x)&&(pos.y == c_buil1.y)){ - pot0 = 1 + if(pot[0]==0){ + if ( pos.x == city1_mon.x && pos.y == city1_mon.y ) { + pot[0] = 1 return null } } - else if (pot1==1 && pot2==0){ - if ((pos.x == c_buil2.x)&&(pos.y == c_buil2.y)){ - pot2 = 1 + else if ( pot[1] == 1 && pot[2] == 0 ) { + if ( search_tile_in_tiles(c_list_cur, pos) ) { + pot[2] = 1 return null } } @@ -207,25 +212,24 @@ class tutorial.chapter_01 extends basic_chapter break case 4: if (tool_id == 4096){ - local list = cit_list - foreach(t in list){ - if(pos.x == t.x && pos.y == t.y) { - pot0 = 1 - return null - } + if ( search_tile_in_tiles(cit_list, pos) ) { + pot[0] = 1 + return null } } break } if (tool_id == 4096){ if (label && label.get_text()=="X") - return translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." + //local message = get_tile_message(5, pos.x, pos.y) + //return message + return get_tile_message(5, pos) //translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." else if (label) return translate("Text label")+" ("+pos.tostring()+")." result = null // Always allow query tool } if (label && label.get_text()=="X") - return translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." + return get_tile_message(5, pos) //translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." return result } @@ -243,10 +247,10 @@ class tutorial.chapter_01 extends basic_chapter function script_text() { if (this.step==1){ - pot0=1 + pot[0]=1 } else if (this.step==2){ - pot0 = 1 + pot[0] = 1 } else if(this.step==3){ comm_script = true @@ -254,13 +258,13 @@ class tutorial.chapter_01 extends basic_chapter local opt = 0 local del = false local text = "X" - label_bord(city_lim.a, city_lim.b, opt, del, text) - pot0=1 - pot2=1 + label_bord(city1_limit1.a, city1_limit1.b, opt, del, text) + pot[0]=1 + pot[2]=1 } else if (this.step==4){ comm_script = true - pot0 = 1 + pot[0] = 1 } return null } diff --git a/class/class_chapter_02.nut b/class/class_chapter_02.nut index 8e669e1..0d8f4bb 100644 --- a/class/class_chapter_02.nut +++ b/class/class_chapter_02.nut @@ -1,14 +1,18 @@ -/* - * class chapter_02 - * - * - * Can NOT be used in network game ! - */ - +/** @file class_chapter_02.nut + * @brief Road traffic for bus and postal service + */ + +/** + * @brief class_chapter_02.nut + * Road traffic for bus and postal service + * + * Can NOT be used in network game ! + * + */ class tutorial.chapter_02 extends basic_chapter { - chapter_name = "Ruling the Roads" - chapter_coord = coord(115,185) + chapter_name = ch2_name + chapter_coord = coord_chapter_2 startcash = 800000 // pl=0 startcash; 0=no reset stop_mark = false @@ -26,140 +30,106 @@ class tutorial.chapter_02 extends basic_chapter // Step 7 ===================================================================================== ch2_cov_lim3 = {a = 0, b = 0} - //Limites para las ciudades - city1_lim = {a = coord(109,181), b = coord(128,193)} - city2_lim = {a = coord(120,150), b = coord(138,159)} - cty1 = {c = coord(111,184), name = ""} + cty1 = {name = ""} // Step 1 ===================================================================================== //Carretera para el deposito - dep_lim1 = {a = null, b = null} - dep_lim2 = {a = null, b = null} - coorda = coord(115,186) - c_dep = coord(115,185) // depot - coordb = coord(116,185) - cursor_a = false - cursor_b = false + + build_list = [] // tile list for build // Step 3 ===================================================================================== //Parasdas de autobus - c_lock = [coord(99,28), coord(98,32), coord(99,32), coord(97,27), coord(97,26)] sch_cov_correct = false - //sch_list1 = [coord(111,183), coord(116,183), coord(120,183), coord(126,187), coord(121,189), coord(118,191), coord(113,190)] // Step 4 ===================================================================================== //Primer autobus - line1_name = "Test 1" - veh1_obj = get_veh_ch2_st4() - veh1_load = set_loading_capacity(1) - veh1_wait = set_waiting_time(1) + line1_name = "ch2_l1" + veh_obj = get_veh_ch2_st4() dep_cnr1 = null //auto started // Step 5 ===================================================================================== // Primer puente - brdg_lim = {a = coord(119,193), b = coord(128,201)} - del_lim1 = {a = coord(119,193), b = coord(128,193)} - brdg1 = coord(126,193) - brdg2 = coord(126,195) - - c_brdg1 = {a = coord3d(126,193,-1), b = coord3d(126,196,0), dir = 3} //Inicio, Fin de la via y direccion(fullway) - c_brdg_limi1 = {a = coord(126,192), b = coord(126,196)} t_list_brd = [] // Step 6 ===================================================================================== // Conectando el muelle - dock_lim = {a = coord(128,181), b = coord(135,193)} - del_lim2 = {a = coord(128,181), b = coord(128,193)} - //sch_list2 = [coord(132,189), coord(126,187), coord(121,189), coord(126,198), coord(120,196)] - line2_name = "Test 2" + line2_name = "ch2_l2" dep_cnr2 = null //auto started cov_nr = 0 // Step 7 ===================================================================================== // Conectando las ciudades - c_label1 = {a = coord(130,160), b = coord(130,185)} - cty2 = {c = coord(129,154), name = ""} - c_way_limi1 = {a = coord(127,159), b = coord(133,186)} - c_way1 = {a = coord3d(130,160,0), b = coord3d(130,185,0), dir = 3} //Inicio, Fin de la via y direccion(fullway) - c_st0 = coord(126,187) + cty2 = {name = ""} - //sch_list3 = [coord(126,187), coord(121,155), coord(127,155), coord(132,155), coord(135,153)] - line3_name = "Test 3" + line3_name = "ch2_l3" dep_cnr3 = null //auto started + veh_load = 0 + veh_wait = 0 // Step 8 ===================================================================================== - pub_st1 = coord(120,196) - pub_st2 = coord(120,196) price = 1200 - //Script + // define objects //---------------------------------------------------------------------------------- - //obj_search = find_object("way", wt_road, 50) - //gui.add_message("test") - - // sc_way_name = obj_search.get_name() //"asphalt_road" - /*if ( obj_desc == null ) {.()get_desc - - } else { - } - - /*obj_desc = find_object("bridge", wt_road, 50) - sc_bridge_name = obj_desc.get_name() //"tb_classic_road" - obj_desc = find_station(wt_road) - sc_station_name = obj_desc.get_name() //"BusStop"*/ sc_way_name = get_obj_ch2(1) sc_bridge_name = get_obj_ch2(2) sc_station_name = get_obj_ch2(3) - sc_dep_name = get_obj_ch2(4) + sc_dep_name = null // depot name function start_chapter() //Inicia solo una vez por capitulo { - if ( pak_name == "pak128" ) { - brdg1 = coord(126,192) - brdg2 = coord(126,194) - c_brdg1 = {a = coord3d(126,192,-1), b = coord3d(126,195,0), dir = 3} //Inicio, Fin de la via y direccion(fullway) - c_brdg_limi1 = {a = coord(126,191), b = coord(126,195)} - } - local lim_idx = cv_list[(persistent.chapter - 2)].idx ch2_cov_lim1 = {a = cv_lim[lim_idx].a, b = cv_lim[lim_idx].b} ch2_cov_lim2 = {a = cv_lim[lim_idx+1].a, b = cv_lim[lim_idx+1].b} ch2_cov_lim3 = {a = cv_lim[lim_idx+2].a, b = cv_lim[lim_idx+2].b} + /// set depot name + sc_dep_name = find_object("depot", wt_road).get_name() + dep_cnr1 = get_dep_cov_nr(ch2_cov_lim1.a,ch2_cov_lim1.b) dep_cnr2 = get_dep_cov_nr(ch2_cov_lim2.a,ch2_cov_lim2.b) dep_cnr3 = get_dep_cov_nr(ch2_cov_lim3.a,ch2_cov_lim3.b) - cty1.name = get_city_name(cty1.c) - cty2.name = get_city_name(cty2.c) - - dep_lim1 = {a = c_dep, b = coorda} - dep_lim2 = {a = c_dep, b = coordb} + cty1.name = get_city_name(city1_tow) + cty2.name = get_city_name(city2_tow) + line1_name = "City " + cty1.name + line2_name = line1_name + " dock/station" + line3_name = cty1.name + " - " + cty2.name + + // look for streets next to the depot field + if(this.step == 1) { + local tile = my_tile(city1_road_depot) + if ( tile_x(tile.x-1, tile.y, tile.z).get_way(wt_road) != null ) { build_list.append(tile_x(tile.x-1, tile.y, tile.z)) } + if ( tile_x(tile.x+1, tile.y, tile.z).get_way(wt_road) != null ) { build_list.append(tile_x(tile.x+1, tile.y, tile.z)) } + if ( tile_x(tile.x, tile.y-1, tile.z).get_way(wt_road) != null ) { build_list.append(tile_x(tile.x, tile.y-1, tile.z)) } + if ( tile_x(tile.x, tile.y+1, tile.z).get_way(wt_road) != null ) { build_list.append(tile_x(tile.x, tile.y+1, tile.z)) } + build_list.append(tile) + } local pl = 0 //Schedule list form current convoy if(this.step == 4){ - local c_dep = this.my_tile(c_dep) + local c_dep = this.my_tile(city1_road_depot) local c_list = city1_halt_1 - start_sch_tmpsw(pl,c_dep, c_list) + start_sch_tmpsw(pl, c_dep, c_list) } else if(this.step == 6){ - local c_dep = this.my_tile(c_dep) + local c_dep = this.my_tile(city1_road_depot) local c_list = city1_halt_2 - start_sch_tmpsw(pl,c_dep, c_list) + start_sch_tmpsw(pl, c_dep, c_list) } else if(this.step == 7){ - local c_dep = this.my_tile(c_dep) + local c_dep = this.my_tile(city1_road_depot) local c_list = city2_halt_1 - start_sch_tmpsw(pl,c_dep, c_list) + start_sch_tmpsw(pl, c_dep, c_list) } // Starting tile list for bridge - for(local i = c_brdg1.a.y; i <= c_brdg1.b.y; i++){ - t_list_brd.push(my_tile(coord(c_brdg1.a.x, i))) + for(local i = bridge1_coords.a.y; i <= bridge1_coords.b.y; i++){ + t_list_brd.push(my_tile(coord(bridge1_coords.a.x, i))) } } @@ -177,79 +147,34 @@ class tutorial.chapter_02 extends basic_chapter switch (this.step) { case 1: - text.t1 = c_dep.href("("+c_dep.tostring()+")") - text.t2 = coorda.href("("+coorda.tostring()+")") - text.t3 = coordb.href("("+coordb.tostring()+")") break case 2: - text.pos = c_dep.href("("+c_dep.tostring()+")") break case 3: - local list_tx = "" - local c_list = city1_halt_1 - local siz = c_list.len() - for (local j=0;j%s %d: %s
", translate("Stop"), j+1, link) - } - else{ - local link = c.href(" ("+c.tostring()+")") - local stop_tx = translate("Build Stop here:") - list_tx += format("%s %d: %s %s
", translate("Stop"), j+1, stop_tx, link) - } - } - text.list = list_tx + veh_load = set_loading_capacity(1) + veh_wait = set_waiting_time(1) + text.list = create_halt_list(city1_halt_1) break case 4: - local list_tx = "" - local c_list = city1_halt_1 - local siz = c_list.len() - for (local j=0;j%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) - continue - } - if(tmpsw[j]==0){ - list_tx += format("%s %d: %s
", translate("Stop"), j+1, c.href(st_halt.get_name()+" ("+c.tostring()+")")) - } - else{ - list_tx += format("%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) - } - } - local c = coord(c_list[0].x, c_list[0].y) - local tile = my_tile(c) - text.stnam = "1) "+tile.get_halt().get_name()+" ("+c.tostring()+")" - text.list = list_tx - text.nr = siz + local tile = my_tile(city1_halt_1[get_waiting_halt(1)]) + text.stnam = (get_waiting_halt(1)+1) + ") "+tile.get_halt().get_name()+" ("+city1_halt_1[get_waiting_halt(1)].tostring()+")" + + text.list = create_schedule_list(city1_halt_1) + text.nr = city1_halt_1.len() break case 5: - text.bpos1 = brdg1.href("("+brdg1.tostring()+")") - text.bpos2 = brdg2.href("("+brdg2.tostring()+")") + text.bpos1 = bridge1_coords.a.href("("+bridge1_coords.a.tostring()+")") + text.bpos2 = bridge1_coords.b.href("("+bridge1_coords.b.tostring()+")") + // load file info/build_bridge_xx.txt text.bridge_info = get_info_file("bridge") break case 6: - veh1_load = set_loading_capacity(2) - veh1_wait = set_waiting_time(2) + veh_load = set_loading_capacity(2) + veh_wait = set_waiting_time(2) - local stxt = array(10) - local halt = my_tile(city1_halt_2[0]).get_halt() - - for (local j=0;j[1/2]") @@ -258,146 +183,128 @@ class tutorial.chapter_02 extends basic_chapter text = ttextfile("chapter_02/06_2-2.txt") text.tx = ttext("[2/2]") } + text.list = create_schedule_list(city1_halt_2) + + // dock bus halt + local tile = my_tile(city1_halt_2[get_waiting_halt(2)]) + text.stnam = ""+tile.get_halt().get_name()+" ("+city1_halt_2[get_waiting_halt(2)].tostring()+")" + + local halt = my_tile(city1_halt_2[get_waiting_halt(2)]).get_halt() text.line = get_line_name(halt) - text.st1 = stxt[0] - text.st2 = stxt[1] - text.st3 = stxt[2] - text.st4 = stxt[3] - text.st5 = stxt[4] - text.st6 = stxt[5] - text.st7 = stxt[6] - text.st8 = stxt[7] + text.cir = cov_nr text.cov = dep_cnr2 break case 7: - veh1_load = set_loading_capacity(3) - veh1_wait = set_waiting_time(3) - - if (!cov_sw){ - local a = 3 - local b = 3 - text = ttextfile("chapter_02/07_"+a+"-"+b+".txt") - text.tx = ttext("["+a+"/"+b+"]") - local list_tx = "" - local c_list = city2_halt_1 - local siz = c_list.len() - for (local j=0;j%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) - continue - } - if(tmpsw[j]==0){ - list_tx += format("%s %d: %s
", translate("Stop"), j+1, c.href(st_halt.get_name()+" ("+c.tostring()+")")) - } - else{ - list_tx += format("%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) - } - } - local c = coord(c_list[siz-1].x, c_list[siz-1].y) - local tile = my_tile(c) - text.stnam = ""+siz+") "+tile.get_halt().get_name()+" ("+c.tostring()+")" + veh_load = set_loading_capacity(3) + veh_wait = set_waiting_time(3) + + if (!correct_cov){ + text = ttextfile("chapter_02/07_3-4.txt") + text.tx = ttext("[3/4]") - text.list = list_tx - text.nr = siz + //local tile = my_tile(city2_halt_1[city2_halt_1.len()-1]) + //text.stnam = ""+city2_halt_1.len()+") "+tile.get_halt().get_name()+" ("+coord_to_string(tile)+")" + + //text.list = create_halt_list(city2_halt_1) + //text.nr = city2_halt_1.len() } - else if (pot0==0){ - local a = 1 - local b = 3 - text = ttextfile("chapter_02/07_"+a+"-"+b+".txt") - text.tx = ttext("["+a+"/"+b+"]") + else if (pot[0]==0){ + text = ttextfile("chapter_02/07_1-4.txt") + text.tx = ttext("[1/4]") - local list_tx = "" - local c_list = city2_halt_1 - local siz = c_list.len() - for (local j=1;j%s %d: %s
", translate("Stop"), j, link) - } - else{ - local link = c.href(" ("+c.tostring()+")") - local stop_tx = translate("Build Stop here:") - list_tx += format("%s %d: %s %s
", translate("Stop"), j, stop_tx, link) - } - } - text.list = list_tx + text.list = create_halt_list(city2_halt_1.slice(1)) } - else if (pot2==0){ - local a = 2 - local b = 3 - text = ttextfile("chapter_02/07_"+a+"-"+b+".txt") - text.tx = ttext("["+a+"/"+b+"]") + else if (pot[2]==0){ + text = ttextfile("chapter_02/07_2-4.txt") + text.tx = ttext("[2/4]") if (r_way.r) text.cbor = ""+translate("Ok")+"" else text.cbor = coord(r_way.c.x, r_way.c.y).href("("+r_way.c.tostring()+")") } - else if (pot3==0){ - local a = 3 - local b = 3 - text = ttextfile("chapter_02/07_"+a+"-"+b+".txt") - text.tx = ttext("["+a+"/"+b+"]") + else if (pot[3]==0){ + text = ttextfile("chapter_02/07_3-4.txt") + text.tx = ttext("[3/4]") - local list_tx = "" - local c_list = city2_halt_1 - local siz = c_list.len() - for (local j=0;j%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) - continue - } - if(tmpsw[j]==0){ - list_tx += format("%s %d: %s
", translate("Stop"), j+1, c.href(st_halt.get_name()+" ("+c.tostring()+")")) - } - else{ - list_tx += format("%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) - } - } - local c = coord(c_list[siz-1].x, c_list[siz-1].y) - local tile = my_tile(c) - text.stnam = ""+siz+") "+tile.get_halt().get_name()+" ("+c.tostring()+")" + local tile = my_tile(city2_halt_1[get_waiting_halt(3)]) + text.stnam = ""+tile.get_halt().get_name()+" ("+coord_to_string(tile)+")" - text.list = list_tx - text.nr = siz + text.list = create_schedule_list(city2_halt_1) + text.nr = city2_halt_1.len() + } + else if (pot[4]==0){ + text = ttextfile("chapter_02/07_4-4.txt") + text.tx = ttext("[4/4]") + + local conv = cov_save[current_cov-1] + if(is_cov_valid(conv)){ + local pos = conv.get_pos() + text.covpos = pos.href(conv.get_name()+" ("+pos.tostring()+")") + } + else{ + text.covpos = "null" + } } - text.n1 = cty1.c.href(cty1.name.tostring()) - text.n2 = cty2.c.href(cty2.name.tostring()) - text.pt1 = c_label1.a.href("("+c_label1.a.tostring()+")") - text.pt2 = c_label1.b.href("("+c_label1.b.tostring()+")") - text.dep = c_dep.href("("+c_dep.tostring()+")") + local t = coord(way1_coords.a.x, way1_coords.a.y) + text.pt1 = t.href("("+t.tostring()+")") + t = coord(way1_coords.b.x, way1_coords.b.y) + text.pt2 = t.href("("+t.tostring()+")") break case 8: - local st_halt1 = my_tile(pub_st1).get_halt() - local st_halt2 = my_tile(pub_st2).get_halt() - text.st1 = pub_st1.href(st_halt1.get_name()+" ("+pub_st1.tostring()+")") - //text.st2 = pub_st2.href(st_halt2.get_name()+" ("+pub_st2.tostring()+")") - text.prce = money_to_string(price) + local st_halt1 = my_tile(city1_halt_2[city1_halt_2.len()-1]).get_halt() + text.st1 = city1_halt_2[city1_halt_2.len()-1].href(st_halt1.get_name()+" ("+city1_halt_2[city1_halt_2.len()-1].tostring()+")") + // toolbar icon make_stop_publuc tooltip + local factor = settings.get_make_public_months() + local tool_text = translate_objects_list.public_stop + local idx = tool_text.find("%i") + local t1 = tool_text.slice(0, idx) + local t2 = tool_text.slice(idx+2) + tool_text = t1 + factor + t2 + text.public_stop = tool_text break } - text.load = veh1_load - text.wait = get_wait_time_text(veh1_wait) - text.pos = c_dep.href("("+c_dep.tostring()+")") - text.bus1 = translate(veh1_obj) - text.name = cty1.c.href(cty1.name.tostring()) - text.name2 = cty2.c.href(cty2.name.tostring()) + + // road menu step 1, 2, 4, 5 and 7 + local steps = [1, 2, 4, 5, 7] + if ( steps.find(this.step) != null ) { + // set image for button by different in paksets + text.img_road_menu = get_gui_img("road_menu") + text.toolbar_road = translate_objects_list.tools_road + } + + steps.clear() + // road halt menu step 3 and 7 + steps = [3, 7] + if ( steps.find(this.step) != null ) { + // set image for button by different in paksets + text.img_road_menu = get_gui_img("road_halts") + text.toolbar_halt = translate_objects_list.tools_road_stations + } + + steps.clear() + // depot coord step 1, 2, 4, 6 and 7 + steps = [1, 2, 4, 6, 7] + if ( steps.find(this.step) != null ) { + text.dep = city1_road_depot.href("("+city1_road_depot.tostring()+")") + } + + steps.clear() + // veh load and wait time set to steps 4, 6 and 7 + steps = [4, 6, 7] + if ( steps.find(this.step) != null ) { + text.load = veh_load + text.wait = get_wait_time_text(veh_wait) + text.bus1 = translate(veh_obj) + } + + text.name = city1_tow.href(cty1.name.tostring()) + text.name2 = city2_tow.href(cty2.name.tostring()) text.tool1 = translate_objects_list.inspec - text.tool2 = translate_objects_list.tools_road - text.tool3 = translate_objects_list.tools_special return text } @@ -408,38 +315,35 @@ class tutorial.chapter_02 extends basic_chapter save_glsw() save_pot() - local chapter_steps = 8 + persistent.ch_max_steps = 8 local chapter_step = persistent.step - local chapter_sub_steps = 0 // count all sub steps - local chapter_sub_step = 0 // actual sub step + persistent.ch_max_sub_steps = 0 // count all sub steps + persistent.ch_sub_step = 0 // actual sub step switch (this.step) { case 1: local next_mark = true - local c_list = [my_tile(coordb), my_tile(coorda), my_tile(c_dep)] + local tile = my_tile(city1_road_depot) try { - next_mark = delay_mark_tile_list(c_list) + next_mark = delay_mark_tile_list(build_list) } catch(ev) { return 0 } - cursor_a = cursor_control(my_tile(coorda)) - cursor_b = cursor_control(my_tile(coordb)) - //Para la carretera - local tile = my_tile(c_dep) + //local tile = my_tile(city1_road_depot) local way = tile.find_object(mo_way) local label = tile.find_object(mo_label) if (!way && !label){ local t1 = command_x(tool_remover) - local err1 = t1.work(player_x(pl), my_tile(c_dep), "") - label_x.create(c_dep, player_x(pl), translate("Place the Road here!.")) + local err1 = t1.work(player_x(pl), tile, "") + label_x.create(city1_road_depot, pl_unown, translate("Place the Road here!.")) return 0 } else if ((way)&&(way.get_owner().nr==pl)){ - if(next_mark ){ - next_mark = delay_mark_tile_list(c_list, true) + if(next_mark) { + next_mark = delay_mark_tile_list(build_list, true) tile.remove_object(player_x(1), mo_label) this.next_step() } @@ -449,7 +353,7 @@ class tutorial.chapter_02 extends basic_chapter break; case 2: local next_mark = true - local c_list1 = [my_tile(c_dep)] + local c_list1 = [my_tile(city1_road_depot)] local stop_mark = true try { next_mark = delay_mark_tile(c_list1) @@ -458,10 +362,10 @@ class tutorial.chapter_02 extends basic_chapter return 0 } //Para el deposito - local tile = my_tile(c_dep) + local tile = my_tile(city1_road_depot) local waydepo = tile.find_object(mo_way) if (!tile.find_object(mo_depot_road)){ - label_x.create(c_dep, player_x(pl), translate("Build a Depot here!.")) + label_x.create(city1_road_depot, pl_unown, translate("Build a Depot here!.")) } else if (next_mark){ next_mark = delay_mark_tile(c_list1, stop_mark) @@ -472,33 +376,31 @@ class tutorial.chapter_02 extends basic_chapter //return 0 break; case 3: - if (pot0==0){ + if (pot[0]==0){ //Marca tiles para evitar construccion de objetos local del = false local pl_nr = 1 local text = "X" - lock_tile_list(c_lock, c_lock.len(), del, pl_nr, text) - pot0=1 + pot[0]=1 } - local siz = city1_halt_1.len() local c_list = city1_halt_1 local name = translate("Place Stop here!.") local load = good_alias.passa - local all_stop = is_stop_building(siz, c_list, name, load) + local all_stop = is_stop_building(c_list, name, load) - if (all_stop && pot0==1){ + if (all_stop && pot[0]==1){ this.next_step() } //return 10+percentage break case 4: - local conv = cov_save[0] + local conv = current_cov > 0 ? cov_save[current_cov-1] : null local cov_valid = is_cov_valid(conv) if(cov_valid){ - pot0 = 1 + pot[0] = 1 } - local c_list1 = [my_tile(c_dep)] - if (pot0 == 0){ + local c_list1 = [my_tile(city1_road_depot)] + if (pot[0] == 0){ local next_mark = true try { next_mark = delay_mark_tile(c_list1) @@ -507,7 +409,7 @@ class tutorial.chapter_02 extends basic_chapter return 0 } } - else if (pot0 == 1 && pot1 ==0){ + else if (pot[0] == 1 && pot[1] ==0){ local next_mark = true local stop_mark = true try { @@ -516,11 +418,11 @@ class tutorial.chapter_02 extends basic_chapter catch(ev) { return 0 } - pot1 = 1 + pot[1] = 1 } - if (pot1 == 1 ){ - local c_dep = this.my_tile(c_dep) + if (pot[1] == 1 ){ + local c_dep = this.my_tile(city1_road_depot) local line_name = line1_name //"Test 1" set_convoy_schedule(pl, c_dep, gl_wt, line_name) @@ -531,36 +433,38 @@ class tutorial.chapter_02 extends basic_chapter convoy = cov_list[0] } local all_result = checks_convoy_schedule(convoy, pl) - sch_cov_correct = all_result.res == null ? true : false + if(!all_result.cov ){ + reset_glsw() + } + } + if (cov_valid && current_cov == ch2_cov_lim1.b){ - if (conv.is_followed()) { - pot2=1 - } + pot[2]=1 } - if (pot2 == 1 ){ + + if (pot[2] == 1 ){ this.next_step() //Crear cuadro label local opt = 0 - label_bord(brdg_lim.a, brdg_lim.b, opt, false, "X") + label_bord(bridge1_limit.a, bridge1_limit.b, opt, false, "X") //Elimina cuadro label - label_bord(del_lim1.a, del_lim1.b, opt, true, "X") - //label_bord(c_lock.a, c_lock.b, opt, true, "X") - lock_tile_list(c_lock, c_lock.len(), true, 1) + label_bord(change1_city1_limit1.a, change1_city1_limit1.b, opt, true, "X") } //return 50 break case 5: - local t_label = my_tile(brdg1) + local t_label = my_tile(bridge1_coords.a) local label = t_label.find_object(mo_label) local next_mark = true - if (pot0 == 0){ + if (pot[0] == 0){ if(!label) - label_x.create(brdg1, player_x(pl), translate("Build a Bridge here!.")) + label_x.create(bridge1_coords.a, pl_unown, get_label_text(2)) + label_x.create(bridge1_coords.b, pl_unown, "") try { next_mark = delay_mark_tile(t_list_brd) } @@ -568,7 +472,7 @@ class tutorial.chapter_02 extends basic_chapter return 0 } } - else if (pot0 == 1 && pot1 ==0){ + else if (pot[0] == 1 && pot[1] ==0){ stop_mark = true try { next_mark = delay_mark_tile(t_list_brd, stop_mark) @@ -576,34 +480,41 @@ class tutorial.chapter_02 extends basic_chapter catch(ev) { return 0 } - pot1 = 1 + pot[1] = 1 } - if (pot1==1) { + if (pot[1]==1) { //Comprueba la conexion de la via - local coora = coord3d(c_brdg1.a.x, c_brdg1.a.y, c_brdg1.a.z) - local coorb = coord3d(c_brdg1.b.x, c_brdg1.b.y, c_brdg1.b.z) - local dir = c_brdg1.dir + local tx = 0 + local ty = 1 + local tile = square_x(bridge1_coords.b.x+tx, bridge1_coords.b.y+ty).get_ground_tile() + // todo check bridge direction + + local coora = coord3d(bridge1_coords.a.x, bridge1_coords.a.y, bridge1_coords.a.z) + local coorb = coord3d(tile.x, tile.y, tile.z) + local dir = bridge1_coords.dir local obj = false local r_way = get_fullway(coora, coorb, dir, obj) if (r_way.r){ + t_label.remove_object(player_x(1), mo_label) + t_label = my_tile(bridge1_coords.b) t_label.remove_object(player_x(1), mo_label) this.next_step() //Crear cuadro label local opt = 0 - label_bord(dock_lim.a, dock_lim.b, opt, false, "X") + label_bord(c_dock1_limit.a, c_dock1_limit.b, opt, false, "X") //Elimina cuadro label - label_bord(del_lim2.a, del_lim2.b, opt, true, "X") + label_bord(change2_city1_limit1.a, change2_city1_limit1.b, opt, true, "X") } } //return 65 break case 6: - chapter_sub_steps = 2 + persistent.ch_max_sub_steps = 2 - local c_dep = this.my_tile(c_dep) + local c_dep = this.my_tile(city1_road_depot) local line_name = line2_name //"Test 2" - set_convoy_schedule(pl,c_dep, gl_wt, line_name) + set_convoy_schedule(pl, c_dep, gl_wt, line_name) local id_start = 1 local id_end = 3 @@ -611,70 +522,75 @@ class tutorial.chapter_02 extends basic_chapter local convoy = convoy_x(gcov_id) local all_result = checks_convoy_schedule(convoy, pl) + sch_cov_correct = all_result.res == null ? true : false + if(!all_result.cov ){ reset_glsw() } //gui.add_message("current_cov "+current_cov+" cov_nr "+cov_nr+" all_result "+all_result+" all_result.cov "+all_result.cov) if ( cov_nr>=1 ) { - chapter_sub_step = 1 // sub step finish + persistent.ch_sub_step = 1 // sub step finish } if (current_cov==ch2_cov_lim2.b){ this.next_step() //Elimina cuadro label local opt = 0 - label_bord(city1_lim.a, city1_lim.b, opt, true, "X") - label_bord(brdg_lim.a, brdg_lim.b, opt, true, "X") - label_bord(dock_lim.a, dock_lim.b, opt, true, "X") + label_bord(city1_limit1.a, city1_limit1.b, opt, true, "X") + label_bord(bridge1_limit.a, bridge1_limit.b, opt, true, "X") + label_bord(c_dock1_limit.a, c_dock1_limit.b, opt, true, "X") //Creea un cuadro label - label_bord(city2_lim.a, city2_lim.b, opt, false, "X") + label_bord(city2_limit1.a, city2_limit1.b, opt, false, "X") } //return 70 break case 7: - chapter_sub_steps = 3 + persistent.ch_max_sub_steps = 3 - if (pot0==0){ + if (pot[0]==0){ - local siz = city2_halt_1.len() local c_list = city2_halt_1 - local name = translate("Place Stop here!.") + local name = get_label_text(1) local load = good_alias.passa - local all_stop = is_stop_building(siz, c_list, name, load) + local all_stop = is_stop_building(c_list, name, load) if (all_stop) { - pot0=1 + pot[0]=1 reset_glsw() } } - else if (pot0==1 && pot1==0){ + else if (pot[0]==1 && pot[1]==0){ //Elimina cuadro label local opt = 0 - label_bord(city2_lim.a, city2_lim.b, opt, true, "X") + label_bord(city2_limit1.a, city2_limit1.b, opt, true, "X") //Creea un cuadro label opt = 0 - label_bord(c_way_limi1.a, c_way_limi1.b, opt, false, "X") + label_bord(c_way_limit1.a, c_way_limit1.b, opt, false, "X") //Limpia las carreteras opt = 2 - label_bord(c_way_limi1.a, c_way_limi1.b, opt, true, "X", gl_wt) + label_bord(c_way_limit1.a, c_way_limit1.b, opt, true, "X", gl_wt) - pot1=1 + pot[1]=1 } - else if (pot1==1 && pot2==0){ - chapter_sub_step = 1 // sub step finish + else if (pot[1]==1 && pot[2]==0){ + persistent.ch_sub_step = 1 // sub step finish //Comprueba la conexion de la via - local coora = coord3d(c_way1.a.x,c_way1.a.y,c_way1.a.z) - local coorb = coord3d(c_way1.b.x,c_way1.b.y,c_way1.b.z) - local dir = c_way1.dir + local coora = coord3d(way1_coords.a.x,way1_coords.a.y,way1_coords.a.z) + local coorb = coord3d(way1_coords.b.x,way1_coords.b.y,way1_coords.b.z) + local dir = way1_coords.dir local obj = false local r_way = get_fullway(coora, coorb, dir, obj) + //check_way_last_tile + //test_select_way(my_tile(way1_coords.a), my_tile(way1_coords.b), wt_road) + + //Para marcar inicio y fin de la via local waya = tile_x(coora.x,coora.y,coora.z).find_object(mo_way) local wayb = tile_x(coorb.x,coorb.y,coorb.z).find_object(mo_way) @@ -686,26 +602,25 @@ class tutorial.chapter_02 extends basic_chapter waya.unmark() wayb.unmark() - my_tile(c_label1.a).remove_object(player_x(1), mo_label) - my_tile(c_label1.b).remove_object(player_x(1), mo_label) + //way1_coords.a.remove_object(player_x(1), mo_label) + //way1_coords.b.remove_object(player_x(1), mo_label) //Elimina cuadro label local opt = 0 - label_bord(c_way_limi1.a, c_way_limi1.b, opt, true, "X") + label_bord(c_way_limit1.a, c_way_limit1.b, opt, true, "X") //Creea un cuadro label - local opt = 0 - label_bord(city1_lim.a, city1_lim.b, opt, false, "X") - label_bord(city2_lim.a, city2_lim.b, opt, false, "X") + label_bord(city1_limit1.a, city1_limit1.b, opt, false, "X") + label_bord(city2_limit1.a, city2_limit1.b, opt, false, "X") - pot2=1 + pot[2]=1 } } - else if (pot2==1 && pot3==0) { - chapter_sub_step = 2 // sub step finish - local c_dep = this.my_tile(c_dep) - local line_name = line3_name //"Test 3" + else if (pot[2]==1) { + persistent.ch_sub_step = 2 // sub step finish + local c_dep = this.my_tile(city1_road_depot) + local line_name = line3_name //"Test 3" set_convoy_schedule(pl, c_dep, gl_wt, line_name) local depot = depot_x(c_dep.x, c_dep.y, c_dep.z) @@ -717,34 +632,52 @@ class tutorial.chapter_02 extends basic_chapter local all_result = checks_convoy_schedule(convoy, pl) sch_cov_correct = all_result.res == null ? true : false - if (current_cov == ch2_cov_lim3.b) { - //Desmarca la via en la parada - local way_mark = my_tile(c_st0).find_object(mo_way) - way_mark.unmark() + if (current_cov == ch2_cov_lim3.b){ + pot[3]=1 + } - //Elimina cuadro label - local opt = 0 - //label_bord(city1_lim.a, city1_lim.b, opt, true, "X") - label_bord(city2_lim.a, city2_lim.b, opt, true, "X") - this.next_step() + if (pot[3]==1 && pot[4]==0) { + local conv = cov_save[current_cov-1] + local cov_valid = is_cov_valid(conv) + + if (cov_valid && current_cov == ch2_cov_lim3.b){ + if (conv.is_followed()) { + pot[4] = 1 + } + } + else{ + backward_pot(3) + break + } + } + else if (pot[4]==1 && pot[5]==0){ + //Desmarca la via en la parada + local way_mark = my_tile(line_connect_halt).find_object(mo_way) + way_mark.unmark() + + //Elimina cuadro label + local opt = 0 + label_bord(city1_limit1.a, city1_limit1.b, opt, true, "X") + label_bord(city2_limit1.a, city2_limit1.b, opt, true, "X") + + label_bord(bridge1_limit.a, bridge1_limit.b, opt, false, "X") + this.next_step() } } //return 95 break case 8: - if (pot0==0){ - local halt1 = my_tile(pub_st1).get_halt() - local halt2 = my_tile(pub_st2).get_halt() - if (pl != halt1.get_owner().nr) + if (pot[0]==0){ + local halt1 = my_tile(city1_halt_2[city1_halt_2.len()-1]).get_halt() + if (pl != halt1.get_owner().nr && glsw[0] == 0) glsw[0]=1 - if (pl != halt2.get_owner().nr) + if (pl != halt1.get_owner().nr) glsw[1]=1 if (glsw[0]==1 && glsw[1]==1){ local opt = 0 - label_bord(city1_lim.a, city1_lim.b, opt, true, "X") - label_bord(city2_lim.a, city2_lim.b, opt, true, "X") + label_bord(bridge1_limit.a, bridge1_limit.b, opt, true, "X") this.next_step() } } @@ -759,52 +692,63 @@ class tutorial.chapter_02 extends basic_chapter //return 100 break } - local percentage = chapter_percentage(chapter_steps, chapter_step, chapter_sub_steps, chapter_sub_step) + local percentage = chapter_percentage(persistent.ch_max_steps, chapter_step, persistent.ch_max_sub_steps, persistent.ch_sub_step) return percentage } + function is_work_allowed_here(pl, tool_id, name, pos, tool) { local t = tile_x(pos.x, pos.y, pos.z) - local ribi = 0 - local slope = t.get_slope() - local way = t.find_object(mo_way) - local bridge = t.find_object(mo_bridge) - local build = t.find_object(mo_building) + //local slope = t.get_slope() + //local way = t.find_object(mo_way) + //local bridge = t.find_object(mo_bridge) + //local build = t.find_object(mo_building) local label = t.find_object(mo_label) - local car = t.find_object(mo_car) - if (way){ - if (tool_id!=tool_build_bridge) + //local car = t.find_object(mo_car) + //local ribi = 0 + /*if (way){ + if ( tool_id != tool_build_bridge ) ribi = way.get_dirs() - if (!t.has_way(gl_wt)) + if ( !t.has_way(gl_wt) ) ribi = 0 - } - local st_c = coord(pos.x,pos.y) - local result=null // null is equivalent to 'allowed' - result = translate("Action not allowed")+" ("+pos.tostring()+")." + }*/ + //local st_c = coord(pos.x,pos.y) + local result = null // null is equivalent to 'allowed' + result = get_tile_message(1, pos) //translate("Action not allowed")+" ("+pos.tostring()+")." gltool = tool_id switch (this.step) { //Construye un tramo de carretera case 1: - if (tool_id==tool_build_way){ - local way_desc = way_desc_x.get_available_ways(gl_wt, gl_st) - foreach(desc in way_desc){ - if(desc.get_name() == name){ - if ((pos.x>=dep_lim1.a.x)&&(pos.y>=dep_lim1.a.y)&&(pos.x<=dep_lim1.b.x)&&(pos.y<=dep_lim1.b.y)){ - if(!cursor_b) - return null - } - if ((pos.x>=dep_lim2.a.x)&&(pos.y>=dep_lim2.a.y)&&(pos.x<=dep_lim2.b.x)&&(pos.y<=dep_lim2.b.y)){ - if(!cursor_a) - return null + if ( tool_id == tool_build_way ) { + + // check selected way + local s = check_select_way(name, wt_road) + if ( s != null ) return s + + //local way_desc = way_desc_x.get_available_ways(gl_wt, gl_st) + local str_c = tile_x(tool.start_pos.x, tool.start_pos.y, tool.start_pos.z) + //local str_way = str_c.is_valid () ? t.find_object(mo_way) : null + local str_way = world.is_coord_valid(str_c)? tile_x(str_c.x, str_c.y, str_c.z).find_object(mo_way) : null + //foreach ( desc in way_desc ) { + //if ( desc.get_name() == name ) { + for ( local i = 0; i < build_list.len()-1; i++ ) { + if ( ( pos.x == build_list[i].x && pos.y == build_list[i].y ) || ( pos.x == city1_road_depot.x && pos.y == city1_road_depot.y ) ) { + if(cursor_control(build_list[i])){ + return null + } + if( !str_way ){ + return null + } + } } - return translate("Connect the road here")+" ("+c_dep.tostring()+")." - } - } + return get_tile_message(2, city1_road_depot)//translate("Connect the road here")+" ("+city1_road_depot.tostring()+")." + //} + //} } break; //Construye un deposito de carreteras case 2: - if ((pos.x==c_dep.x)&&(pos.y==c_dep.y)){ - if (my_tile(c_dep).find_object(mo_way)){ + if ((pos.x==city1_road_depot.x)&&(pos.y==city1_road_depot.y)){ + if (my_tile(city1_road_depot).find_object(mo_way)){ if (tool_id==tool_build_depot) return null } else { @@ -813,51 +757,57 @@ class tutorial.chapter_02 extends basic_chapter } } else if (tool_id==tool_build_depot) - return result=translate("You must build the depot in")+" ("+c_dep.tostring()+")." + return result=translate("You must build the depot in")+" ("+city1_road_depot.tostring()+")." break; //Construye las paradas de autobus case 3: - if (pos.x == c_dep.x && pos.y == c_dep.y ) - return format(translate("You must build the %d stops first."),7) - if (pos.x>city1_lim.a.x && pos.y>city1_lim.a.y && pos.x city1_limit1.a.x && pos.y > city1_limit1.a.y && pos.x < city1_limit1.b.x && pos.y < city1_limit1.b.y ) { //Permite construir paradas - if (tool_id==tool_build_station){ - local nr = city1_halt_1.len() - local c_st = city1_halt_1 - return build_stop(nr, c_st, t, way, slope, ribi, label, pos) + if ( tool_id == tool_build_station ) { + // check selected halt accept passenger + local s = check_select_station(name, wt_road, good_alias.passa) + if ( s != null ) { return s } + + return build_stop(city1_halt_1, pos) } //Permite eliminar paradas if (tool_id==tool_remover){ - local nr = city1_halt_1.len() - local c_st = city1_halt_1 - return delete_stop(nr, c_st, way, pos) + for( local j = 0 ; j < city1_halt_1.len(); j++ ) { + if (city1_halt_1[j] != null){ + local stop = tile_x(city1_halt_1[j].x, city1_halt_1[j].y,0).find_object(mo_building) + if ( pos.x == ccity1_halt_1_list[j].x && pos.y == city1_halt_1[j].y && stop ) { + way.mark() + return null + } + } + } + return translate("You can only delete the stops.") } } - else if (tool_id==tool_build_station) - return result = format(translate("Stops should be built in [%s]"),cty1.name)+" ("+cty1.c.tostring()+")." + else if ( tool_id == tool_build_station ) + return result = format(translate("Stops should be built in [%s]"), cty1.name)+" ("+city1_tow.tostring()+")." break; //Enrutar el primer autobus case 4: if (tool_id==tool_build_station) - return format(translate("Only %d stops are necessary."),city1_halt_1.len()) + return get_data_message(2, city1_halt_1.len()) //format(translate("Only %d stops are necessary."), city1_halt_1.len()) //Enrutar vehiculo - if ((pos.x == c_dep.x && pos.y == c_dep.y)){ + if ((pos.x == city1_road_depot.x && pos.y == city1_road_depot.y)){ if(tool_id==4096){ - pot0 = 1 + pot[0] = 1 return null } } if (tool_id==4108) { - local c_list = city1_halt_1 //Lista de todas las paradas de autobus - local c_dep = c_dep //Coordeadas del deposito - local siz = c_list.len() //Numero de paradas - result = translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep.tostring()+")." - return is_stop_allowed(result, siz, c_list, pos) + return is_stop_allowed(city1_road_depot, city1_halt_1, pos) } break; @@ -865,45 +815,43 @@ class tutorial.chapter_02 extends basic_chapter case 5: if (tool_id==tool_build_bridge || tool_id==tool_build_way) { - if ((pos.x>=c_brdg_limi1.a.x)&&(pos.y>=c_brdg_limi1.a.y)&&(pos.x<=c_brdg_limi1.b.x)&&(pos.y<=c_brdg_limi1.b.y)){ - pot0 = 1 + if ((pos.x>=c_bridge1_limit1.a.x)&&(pos.y>=c_bridge1_limit1.a.y)&&(pos.x<=c_bridge1_limit1.b.x)&&(pos.y<=c_bridge1_limit1.b.y)){ + pot[0] = 1 result=null } else - return translate("You must build the bridge here")+" ("+brdg1.tostring()+")." + return translate("You must build the bridge here")+" ("+bridge1_coords.a.tostring()+")." } break; //Segundo Autobus case 6: //Enrutar vehiculo - if (pot0==0){ - if ((tool_id==4096)&&(pos.x == c_dep.x && pos.y == c_dep.y)){ + if (pot[0]==0){ + if ((tool_id==4096)&&(pos.x == city1_road_depot.x && pos.y == city1_road_depot.y)){ stop_mark = true return null } if (tool_id==4108) { stop_mark = true - local c_list = city1_halt_2 //Lista de todas las paradas de autobus - local c_dep = c_dep //Coordeadas del deposito - local siz = c_list.len() //Numero de paradas - result = translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep.tostring()+")." - return is_stop_allowed(result, siz, c_list, pos) + return is_stop_allowed(city1_road_depot, city1_halt_2, pos) } } break; case 7: // Construye las paradas - if (pot0==0){ + if (pot[0]==0){ if ((tool_id==tool_build_station)){ - if (pos.x>city2_lim.a.x && pos.y>city2_lim.a.y && pos.xcity2_limit1.a.x && pos.y>city2_limit1.a.y && pos.x=c_way_limi1.a.x)&&(pos.y>=c_way_limi1.a.y)&&(pos.x<=c_way_limi1.b.x)&&(pos.y<=c_way_limi1.b.y)){ - if((pos.x==c_label1.a.x)&&(pos.y==c_label1.a.y)){ - if (tool_id==tool_remover || tool_id==tool_remove_way) + else if (pot[1]==1 && pot[2]==0){ + if ( (pos.x>=c_way_limit1.a.x) && (pos.y >= c_way_limit1.a.y) && (pos.x <= c_way_limit1.b.x) && (pos.y <= c_way_limit1.b.y) ) { + if( (pos.x == way1_coords.a.x) && (pos.y == way1_coords.a.y) ) { + if (tool_id == tool_remover || tool_id == tool_remove_way) return result else if (tool_id==tool_build_way) return null } else - return all_control(result, gl_wt, gl_st, way, ribi, tool_id, pos, r_way.c, name) + return all_control(result, gl_wt, gl_st, tool_id, pos, r_way.c, name) } } //Para enrutar vehiculos - else if (pot2==1 && pot3==0){ + else if (pot[2]==1 && pot[3]==0){ if (tool_id==4108){ //Paradas de la primera ciudad - local c_list = city2_halt_1 //Lista de todas las paradas de autobus - local c_dep = c_dep //Coordeadas del deposito - local siz = c_list.len() //Numero de paradas - result = translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep.tostring()+")." - return is_stop_allowed(result, siz, c_list, pos) + return is_stop_allowed(city1_road_depot, city2_halt_1, pos) } } break; @@ -949,28 +893,15 @@ class tutorial.chapter_02 extends basic_chapter //Paradas publicas case 8: if (tool_id==4128) { - if (pos.x==pub_st1.x && pos.y==pub_st1.y){ - if (glsw[0]==0) - return null - else - return format(translate("Select station No.%d"),2)+" ("+pub_st2.tostring()+")." - } - if (pos.x==pub_st2.x && pos.y==pub_st2.y){ - if (glsw[1]==0) - return null - } - else { - if (glsw[0]==0) - return format(translate("Select station No.%d"),1)+" ("+pub_st1.tostring()+")." - else if (glsw[1]==0) + if (pos.x==city1_halt_2[city1_halt_2.len()-1].x && pos.y==city1_halt_2[city1_halt_2.len()-1].y && glsw[0] > 0){ return format(translate("Select station No.%d"),2)+" ("+pub_st2.tostring()+")." - } + } else { return null } } break; } if (tool_id==4096){ if (label && label.get_text()=="X") - return translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." + return get_tile_message(5, pos) //translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." else if (label) return translate("Text label")+" ("+pos.tostring()+")." @@ -978,7 +909,7 @@ class tutorial.chapter_02 extends basic_chapter result = null // Always allow query tool } if (label && label.get_text()=="X") - return translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." + return get_tile_message(5, pos) //translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." return result } @@ -986,17 +917,15 @@ class tutorial.chapter_02 extends basic_chapter function is_schedule_allowed(pl, schedule) { local result=null // null is equivalent to 'allowed' if ( (pl == 0) && (schedule.waytype != gl_wt) ) - result = translate("Only road schedules allowed") + result = get_message(3) local nr = schedule.entries.len() switch (this.step) { case 4: - local selc = 0 - local load = veh1_load - local time = veh1_wait + local selc = get_waiting_halt(1) + local load = set_loading_capacity(1) + local time = set_waiting_time(1) local c_list = city1_halt_1 - local siz = c_list.len() - local line = true - result = set_schedule_list(result, pl, schedule, nr, selc, load, time, c_list, siz, line) + result = compare_schedule(result, pl, schedule, selc, load, time, c_list, true) if(result == null){ local line_name = line1_name //"Test 1" update_convoy_schedule(pl, gl_wt, line_name, schedule) @@ -1005,13 +934,11 @@ class tutorial.chapter_02 extends basic_chapter return result break case 6: - local selc = 0 - local load = veh1_load - local time = veh1_wait + local selc = get_waiting_halt(2) + local load = set_loading_capacity(2) + local time = set_waiting_time(2) local c_list = city1_halt_2 - local siz = c_list.len() - local line = true - result = set_schedule_list(result, pl, schedule, nr, selc, load, time, c_list, siz, line) + result = compare_schedule(result, pl, schedule, selc, load, time, c_list, true) if(result == null){ local line_name = line2_name //"Test 2" update_convoy_schedule(pl, gl_wt, line_name, schedule) @@ -1019,13 +946,11 @@ class tutorial.chapter_02 extends basic_chapter return result break case 7: - local load = veh1_load - local time = veh1_wait + local selc = get_waiting_halt(3) + local load = set_loading_capacity(3) + local time = set_waiting_time(3) local c_list = city2_halt_1 - local siz = c_list.len() - local selc = siz-1 - local line = true - result = set_schedule_list(result, pl, schedule, nr, selc, load, time, c_list, siz, line) + result = compare_schedule(result, pl, schedule, selc, load, time, c_list, true) if(result == null){ local line_name = line3_name //"Test 3" update_convoy_schedule(pl, gl_wt, line_name, schedule) @@ -1033,7 +958,7 @@ class tutorial.chapter_02 extends basic_chapter return result break } - return translate("Action not allowed") + return get_message(2) //translate("Action not allowed") } function is_convoy_allowed(pl, convoy, depot) @@ -1045,7 +970,7 @@ class tutorial.chapter_02 extends basic_chapter local cov = 1 local veh = 1 local good_list = [good_desc_x (good_alias.passa).get_catg_index()] //Passengers - local name = veh1_obj + local name = veh_obj local st_tile = 1 result = is_convoy_correct(depot,cov,veh,good_list,name, st_tile) @@ -1053,12 +978,12 @@ class tutorial.chapter_02 extends basic_chapter reset_tmpsw() return bus_result_message(result, translate(name), veh, cov) } - local selc = 0 - local load = veh1_load - local time = veh1_wait + local selc = get_waiting_halt(1) + local load = veh_load + local time = veh_wait local c_list = city1_halt_1 local siz = c_list.len() - result = set_schedule_convoy(result, pl, cov, convoy, selc, load, time, c_list, siz) + result = compare_schedule_convoy(result, pl, cov, convoy, selc, load, time, c_list, siz) if(result == null) reset_tmpsw() return result @@ -1070,21 +995,21 @@ class tutorial.chapter_02 extends basic_chapter local cov = cov_list.len() local veh = 1 local good_list = [good_desc_x (good_alias.passa).get_catg_index()] //Passengers - local name = veh1_obj + local name = veh_obj local st_tile = 1 - result = is_convoy_correct(depot,cov,veh,good_list,name, st_tile) + result = is_convoy_correct(depot, cov, veh, good_list, name, st_tile) if (result!=null){ reset_tmpsw() return bus_result_message(result, translate(name), veh, cov) } - local selc = 0 - local load = veh1_load - local time = veh1_wait + local selc = get_waiting_halt(2) + local load = veh_load + local time = veh_wait local c_list = city1_halt_2 local siz = c_list.len() local line = true - result = set_schedule_convoy(result, pl, cov, convoy, selc, load, time, c_list, siz, line) + result = compare_schedule_convoy(result, pl, cov, convoy, selc, load, time, c_list, siz, line) if(result == null) reset_tmpsw() return result @@ -1095,7 +1020,7 @@ class tutorial.chapter_02 extends basic_chapter local cov = 1 local veh = 1 local good_list = [good_desc_x (good_alias.passa).get_catg_index()] //Passengers - local name = veh1_obj + local name = veh_obj local st_tile = 1 result = is_convoy_correct(depot,cov,veh,good_list,name, st_tile) if (result!=null){ @@ -1103,12 +1028,12 @@ class tutorial.chapter_02 extends basic_chapter return bus_result_message(result, translate(name), veh, cov) } - local load = veh1_load - local time = veh1_wait + local load = veh_load + local time = veh_wait local c_list = city2_halt_1 local siz = c_list.len() - local selc = siz-1 - result = set_schedule_convoy(result, pl, cov, convoy, selc, load, time, c_list, siz) + local selc = get_waiting_halt(3) + result = compare_schedule_convoy(result, pl, cov, convoy, selc, load, time, c_list, siz) if(result == null) reset_tmpsw() return result @@ -1117,7 +1042,7 @@ class tutorial.chapter_02 extends basic_chapter case 1: break } - return result = translate("It is not allowed to start vehicles.") + return get_message(3) //translate("It is not allowed to start vehicles.") } function script_text() @@ -1127,21 +1052,29 @@ class tutorial.chapter_02 extends basic_chapter local pl = 0 switch (this.step) { case 1: - local list = [my_tile(c_dep)] + local tile = my_tile(city1_road_depot) + local list = [tile] delay_mark_tile(list, true) //Para la carretera local t1 = command_x(tool_remover) - local err1 = t1.work(player_x(pl), my_tile(c_dep), "") + local err1 = t1.work(player_x(pl), tile, "") + + local btile = null + if ( tile_x(tile.x-1, tile.y, tile.z).get_way(wt_road) != null ) { btile = tile_x(tile.x-1, tile.y, tile.z) } + else if ( tile_x(tile.x+1, tile.y, tile.z).get_way(wt_road) != null ) { btile = tile_x(tile.x+1, tile.y, tile.z) } + else if ( tile_x(tile.x, tile.y-1, tile.z).get_way(wt_road) != null ) { btile = tile_x(tile.x, tile.y-1, tile.z) } + else if ( tile_x(tile.x, tile.y+1, tile.z).get_way(wt_road) != null ) { btile = tile_x(tile.x, tile.y+1, tile.z) } + local t2 = command_x(tool_build_way) - local err2 = t2.work(player_x(pl), my_tile(coorda), my_tile(c_dep), sc_way_name) + local err2 = t2.work(player_x(pl), btile, tile, sc_way_name) return null break; case 2: - local list = [my_tile(c_dep)] + local list = [my_tile(city1_road_depot)] delay_mark_tile(list, true) //Para el deposito local t = command_x(tool_build_depot) - local err = t.work(player_x(pl), my_tile(c_dep), sc_dep_name) + local err = t.work(player_x(pl), my_tile(city1_road_depot), sc_dep_name) return null break; case 3: @@ -1161,32 +1094,32 @@ class tutorial.chapter_02 extends basic_chapter return null break case 4: - local list = [my_tile(c_dep)] + local list = [my_tile(city1_road_depot)] delay_mark_tile(list, true) - if (pot0 == 0){ - pot0 = 1 + if (pot[0] == 0){ + pot[0] = 1 } if (current_cov>ch2_cov_lim1.a && current_covch2_cov_lim2.a && current_covch2_cov_lim2.a && jch2_cov_lim3.a && current_cov[1/2]") } @@ -334,13 +147,13 @@ class tutorial.chapter_03 extends basic_chapter } break case 2: - local c1 = c_way1.a.href("("+c_way1.a.tostring()+")") - local c2 = c_way1.b.href("("+c_way1.b.tostring()+")") - local c3 = c_way3.a.href("("+c_way3.a.tostring()+")") - local c4 = c_way3.b.href("("+c_way3.b.tostring()+")") + local c1 = way2_fac1_fac2[0].href("("+way2_fac1_fac2[0].tostring()+")") + local c2 = way2_fac1_fac2[2].href("("+way2_fac1_fac2[2].tostring()+")") + local c3 = way2_fac1_fac2[3].href("("+way2_fac1_fac2[3].tostring()+")") + local c4 = way2_fac1_fac2[5].href("("+way2_fac1_fac2[5].tostring()+")") - if (pot0==0){ - local c = label1_lim + if (pot[0]==0){ + local c = way2_fac1_fac2[1] local c_label = c.href("("+c.tostring()+")") local way = tile_x(c.x, c.y, c.z).find_object(mo_way) if(!way) c2 = c_label @@ -348,12 +161,12 @@ class tutorial.chapter_03 extends basic_chapter text = ttextfile("chapter_03/02_1-3.txt") text.tx = ttext("[1/3]") } - else if (pot1==0){ + else if (pot[1]==0){ text = ttextfile("chapter_03/02_2-3.txt") text.tx = ttext("[2/3]") } - else if (pot2==0){ - local c = label2_lim + else if (pot[2]==0){ + local c = way2_fac1_fac2[5] local c_label = c.href("("+c.tostring()+")") local way = tile_x(c.x, c.y, c.z).find_object(mo_way) if(!way) c4 = c_label @@ -361,7 +174,7 @@ class tutorial.chapter_03 extends basic_chapter text = ttextfile("chapter_03/02_3-3.txt") text.tx = ttext("[3/3]") } - text.br = c_brge1.a.href("("+c_brge1.a.tostring()+")") + text.br = bridge2_coords.b.href("("+bridge2_coords.b.tostring()+")") text.w1 = c1 text.w2 = c2 text.w3 = c3 @@ -370,54 +183,58 @@ class tutorial.chapter_03 extends basic_chapter if (r_way.r) text.cbor = "" + translate("Ok") + "" else - text.cbor = coord(r_way.c.x, r_way.c.y).href("("+r_way.c.tostring()+")") + text.cbor = coord(r_way.c.x, r_way.c.y).href("("+coord3d_to_string(r_way.c)+")") break case 3: - if (pot0==0){ + if (pot[0]==0){ text = ttextfile("chapter_03/03_1-2.txt") text.tx = ttext("[1/2]") } - else if (pot0==1&&pot1==0){ + else if (pot[0]==1&&pot[1]==0){ text = ttextfile("chapter_03/03_2-2.txt") text.tx = ttext("[2/2]") } text.tile = loc1_tile break case 4: - if (pot0==0){ + if (pot[0]==0){ text = ttextfile("chapter_03/04_1-3.txt") text.tx=ttext("[1/3]") } - else if (pot0==1&&pot1==0){ + else if (pot[0]==1&&pot[1]==0){ text = ttextfile("chapter_03/04_2-3.txt") text.tx=ttext("[2/3]") } - else if (pot1==1){ + else if (pot[1]==1){ text = ttextfile("chapter_03/04_3-3.txt") text.tx=ttext("[3/3]") } - text.w1 = c_dep1_lim.a.href("("+c_dep1_lim.a.tostring()+")") - text.w2 = c_dep1_lim.b.href("("+c_dep1_lim.b.tostring()+")") - text.dep = c_dep1.href("("+c_dep1.tostring()+")") + text.w1 = ch3_rail_depot1.b.href("("+ch3_rail_depot1.b.tostring()+")") + text.w2 = ch3_rail_depot1.a.href("("+ch3_rail_depot1.a.tostring()+")") + text.dep = ch3_rail_depot1.b.href("("+ch3_rail_depot1.b.tostring()+")") break case 5: text.reached = reached - text.t_reach = f1_reached + text.t_reach = f1_reached + " " + get_good_data(1, 1) text.loc1 = translate(loc1_name_obj) text.wag = sc_wag1_nr text.tile = loc1_tile text.load = loc1_load + local tile = my_tile(way2_fac1_fac2[0]) + text.stnam1 = tile.href(""+tile.get_halt().get_name()) + tile = my_tile(way2_fac1_fac2[way2_fac1_fac2.len()-1]) + text.stnam2 = tile.href(""+tile.get_halt().get_name()) text.wait = get_wait_time_text(loc1_wait) break case 6: - local c1 = c_way4.a.href("("+c_way4.a.tostring()+")") - local c2 = c_way4.b.href("("+c_way4.b.tostring()+")") - local c3 = c_way5.a.href("("+c_way5.a.tostring()+")") - local c4 = c_way5.b.href("("+c_way5.b.tostring()+")") + local c1 = way2_fac2_fac3[0].href("("+way2_fac2_fac3[0].tostring()+")") + local c2 = way2_fac2_fac3[2].href("("+way2_fac2_fac3[2].tostring()+")") + local c3 = way2_fac2_fac3[3].href("("+way2_fac2_fac3[3].tostring()+")") + local c4 = way2_fac2_fac3[5].href("("+way2_fac2_fac3[5].tostring()+")") - if (pot0==0){ - local c = label3_lim + if (pot[0]==0){ + local c = way2_fac2_fac3[1] local c_label = c.href("("+c.tostring()+")") local way = tile_x(c.x, c.y, c.z).find_object(mo_way) if(!way) c2 = c_label @@ -425,12 +242,12 @@ class tutorial.chapter_03 extends basic_chapter text = ttextfile("chapter_03/06_1-5.txt") text.tx=ttext("[1/5]") } - else if (pot1==0){ + else if (pot[1]==0){ text = ttextfile("chapter_03/06_2-5.txt") text.tx=ttext("[2/5]") } - else if (pot2==0){ - local c = label4_lim + else if (pot[2]==0){ + local c = way2_fac2_fac3[4] local c_label = c.href("("+c.tostring()+")") local way = tile_x(c.x, c.y, c.z).find_object(mo_way) if(!way) c4 = c_label @@ -438,15 +255,15 @@ class tutorial.chapter_03 extends basic_chapter text = ttextfile("chapter_03/06_3-5.txt") text.tx=ttext("[3/5]") } - else if (pot3==0){ + else if (pot[3]==0){ text = ttextfile("chapter_03/06_4-5.txt") text.tx=ttext("[4/5]") } - else if (pot4==0){ + else if (pot[4]==0){ text = ttextfile("chapter_03/06_5-5.txt") text.tx = ttext("[5/5]") } - text.tu = c_tway_lim2.a.href("("+c_tway_lim2.a.tostring()+")") + text.tu = way2_fac2_fac3[2].href("("+way2_fac2_fac3[2].tostring()+")") text.w1 = c1 text.w2 = c2 text.w3 = c3 @@ -460,46 +277,50 @@ class tutorial.chapter_03 extends basic_chapter text.wag = sc_wag2_nr text.tile = loc2_tile text.load = loc2_load + local tile = my_tile(way2_fac2_fac3[0]) + text.stnam1 = tile.href(""+tile.get_halt().get_name()) + tile = my_tile(way2_fac2_fac3[way2_fac2_fac3.len()-1]) + text.stnam2 = tile.href(""+tile.get_halt().get_name()) text.wait = get_wait_time_text(loc2_wait) - text.w1 = c_dep2_lim.a.href("("+c_dep2_lim.a.tostring()+")") - text.w2 = c_dep2_lim.b.href("("+c_dep2_lim.b.tostring()+")") + text.w1 = ch3_rail_depot2.a.href("("+ch3_rail_depot2.a.tostring()+")") + text.w2 = ch3_rail_depot2.b.href("("+ch3_rail_depot2.b.tostring()+")") break case 8: - if(pot0==0){ + if(pot[0]==0){ text = ttextfile("chapter_03/08_1-5.txt") text.tx = ttext("[1/5]") - text.w1 = c_way6_lim.b.href("("+c_way6_lim.b.tostring()+")") - text.w2 = c_way6_lim.a.href("("+c_way6_lim.a.tostring()+")") + text.w1 = c_way3_lim.b.href("("+c_way3_lim.b.tostring()+")") + text.w2 = c_way3_lim.a.href("("+c_way3_lim.a.tostring()+")") } - else if(pot1==0){ + else if(pot[1]==0){ text = ttextfile("chapter_03/08_2-5.txt") text.tx = ttext("[2/5]") - text.br = c_brge3.a.href("("+c_brge3.a.tostring()+")") + text.br = bridge3_coords.a.href("("+bridge3_coords.a.tostring()+")") } - else if (pot2==0){ + else if (pot[2]==0){ text = ttextfile("chapter_03/08_3-5.txt") text.tx = ttext("[3/5]") - text.t1 = "("+ start_tunn.tostring()+")" + text.t1 = "("+ way3_tun_coord[0].tostring()+")" } - else if(pot3==0){ + else if(pot[3]==0){ local slope = tile_x(r_way.c.x, r_way.c.y, r_way.c.z).get_slope() - if(r_way.c.z[4/5]") local tx_list = "" local c_bord = coord(r_way.c.x, r_way.c.y) - for(local j=0; j < layer_list.len(); j++){ - local c = slope==0?c_bord:coord(c_tun_list[j].x, c_tun_list[j].y) - local c_z = c_tun_list[j].z - local layer_lvl = layer_list[j] + for(local j=0; j < way3_tun_list.len(); j++){ + local c = slope==0?c_bord:coord(way3_tun_list[j].x, way3_tun_list[j].y) + local c_z = way3_tun_list[j].z + local layer_lvl = way3_tun_list[j].z if (glsw[j]==0){ c = coord3d(c.x, c.y, c_z) local link = c.href("("+c.tostring()+")") - local layer = translate("Layer level")+" = "+(layer_lvl)+"" + local layer = translate("Layer level")+" = "+(way3_tun_list[j].z)+"" tx_list += ttext("--> " + format("[%d] %s %s
", j+1, link, layer)) - text.lev =layer_lvl + text.lev = way3_tun_list[0].z text.tunn = link break } @@ -507,22 +328,22 @@ class tutorial.chapter_03 extends basic_chapter c = coord3d(c.x, c.y, c_z) local link = c.href("("+c.tostring()+")") local tx_ok = translate("OK") - local tx_coord = "("+coord(c_tun_list[j].x, c_tun_list[j].y).tostring()+","+c_z+")" - local layer = translate("Layer level")+" = "+(layer_lvl)+"" + local tx_coord = "("+coord(way3_tun_list[j].x, way3_tun_list[j].y).tostring()+","+c_z+")" + local layer = translate("Layer level")+" = "+(way3_tun_list[j].z)+"" tx_list += ttext(""+format("[%d] %s", j+1, tx_coord+" "+layer+" "+tx_ok+"
")) - text.lev = layer_lvl + text.lev = way3_tun_list[0].z text.tunn = link } } - text.mx_lvl = end_lvl_z + text.mx_lvl = way3_tun_list[way3_tun_list.len()-1].z text.list = tx_list } else{ text = ttextfile("chapter_03/08_5-5.txt") text.tx = ttext("[5/5]") - text.lev = end_lvl_z - text.t1 = "("+ start_tunn.tostring()+")" - text.t2 = "("+ c_end_tunn.tostring()+")" + text.lev = way3_tun_list[way3_tun_list.len()-1].z + text.t1 = "("+ way3_tun_coord[0].tostring()+")" + text.t2 = "("+ way3_tun_coord[way3_tun_coord.len()-1].tostring()+")" } } text.plus = key_alias.plus_s @@ -531,14 +352,14 @@ class tutorial.chapter_03 extends basic_chapter case 9: - if (pot0==0){ + if (pot[0]==0){ local way_list = "" text = ttextfile("chapter_03/09_1-2.txt") text.tx = ttext("[1/2]") local w_nr = 0 - for(local j=0;j[2/2]
") local sigtxt = "" - local list = sign_list + local list = way3_sign_list for(local j=0;j[1/4]") @@ -591,40 +412,49 @@ class tutorial.chapter_03 extends basic_chapter text.tx = ttext("[2/4]") } } - else if (pot1==0){ + else if (pot[1]==0){ text = ttextfile("chapter_03/10_3-4.txt") text.tx = ttext("[3/4]") } - else if (pot2==0){ + else if (pot[2]==0){ text = ttextfile("chapter_03/10_4-4.txt") text.tx = ttext("[4/4]") } - text.dep = c_dep3.href("("+c_dep3.tostring()+")") + text.dep = ch3_rail_depot3.b.href("("+ch3_rail_depot3.b.tostring()+")") break case 11: local tx_list = "" - local nr = sch_list.len() - local list = sch_list - for (local j=0;j%s %d: %s
", translate("Stop"), j+1, c.href(st_halt.get_name()+" ("+c.tostring()+")")) } else{ tx_list += format("%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) + delay_mark_tile(st_list, true) + mark_st++ } } - local c = coord(list[0].x, list[0].y) - text.stnam = "1) "+my_tile(c).get_halt().get_name()+" ("+c.tostring()+")" + local c = coord(list[get_waiting_halt(4)].x, list[get_waiting_halt(4)].y) + text.stnam = (get_waiting_halt(4)+1) + ") " + my_tile(c).get_halt().get_name() + " ("+c.tostring()+")" text.list = tx_list - text.dep = c_dep3.href("("+c_dep3.tostring()+")") + text.dep = ch3_rail_depot3.b.href("("+ch3_rail_depot3.b.tostring()+")") text.loc3 = translate(loc3_name_obj) text.load = loc3_load text.wait = get_wait_time_text(loc3_wait) @@ -651,11 +481,11 @@ class tutorial.chapter_03 extends basic_chapter stext.cy4=cy4.name stext.cy5=cy5.name - stext.co1=cy1.c.href("("+cy1.c.tostring()+")") - stext.co2=cy2.c.href("("+cy2.c.tostring()+")") - stext.co3=cy3.c.href("("+cy3.c.tostring()+")") - stext.co4=cy4.c.href("("+cy4.c.tostring()+")") - stext.co5=cy5.c.href("("+cy5.c.tostring()+")") + stext.co1=city1_tow.href("("+city1_tow.tostring()+")") + stext.co2=city3_tow.href("("+city3_tow.tostring()+")") + stext.co3=city4_tow.href("("+city4_tow.tostring()+")") + stext.co4=city5_tow.href("("+city5_tow.tostring()+")") + stext.co5=city6_tow.href("("+city6_tow.tostring()+")") text.step_hinfo = stext } @@ -663,8 +493,8 @@ class tutorial.chapter_03 extends basic_chapter text.f2 = fac_2.c.href(fac_2.name+" ("+fac_2.c.tostring()+")") text.f3 = fac_3.c.href(fac_3.name+" ("+fac_3.c.tostring()+")") - text.cdep=c_dep1.href("("+c_dep1.tostring()+")") - text.way1=c_dep2.href("("+c_dep2.tostring()+")") + text.cdep=ch3_rail_depot1.b.href("("+ch3_rail_depot1.b.tostring()+")") + text.way1=ch3_rail_depot2.a.href("("+ch3_rail_depot2.a.tostring()+")") text.cy1=cy1.name text.cy2=cy2.name @@ -672,16 +502,16 @@ class tutorial.chapter_03 extends basic_chapter text.cy4=cy4.name text.cy5=cy5.name - text.co1=cy1.c.href("("+cy1.c.tostring()+")") - text.co2=cy2.c.href("("+cy2.c.tostring()+")") - text.co3=cy3.c.href("("+cy3.c.tostring()+")") - text.co4=cy4.c.href("("+cy4.c.tostring()+")") - text.co5=cy5.c.href("("+cy5.c.tostring()+")") + text.co1=city1_tow.href("("+city1_tow.tostring()+")") + text.co2=city3_tow.href("("+city3_tow.tostring()+")") + text.co3=city4_tow.href("("+city4_tow.tostring()+")") + text.co4=city5_tow.href("("+city5_tow.tostring()+")") + text.co5=city6_tow.href("("+city6_tow.tostring()+")") text.cbor = "" if (r_way.r) text.cbor = "" + translate("Ok") + "" else - text.cbor = coord(r_way.c.x, r_way.c.y).href("("+r_way.c.tostring()+")") + text.cbor = coord(r_way.c.x, r_way.c.y).href("("+coord3d_to_string(r_way.c)+")") text.tool1 = translate_objects_list.inspec text.tool2 = translate_objects_list.tools_rail @@ -709,10 +539,10 @@ class tutorial.chapter_03 extends basic_chapter save_pot() save_glsw() - local chapter_steps = 11 + persistent.ch_max_steps = 11 local chapter_step = persistent.step - local chapter_sub_steps = 0 // count all sub steps - local chapter_sub_step = 0 // actual sub step + persistent.ch_max_sub_steps = 0 // count all sub steps + persistent.ch_sub_step = 0 // actual sub step local fac_1 = factory_data.rawget("1") local fac_2 = factory_data.rawget("2") @@ -720,9 +550,9 @@ class tutorial.chapter_03 extends basic_chapter switch (this.step) { case 1: - chapter_sub_steps = 2 + persistent.ch_max_sub_steps = 2 local next_mark = false - if (pot0==0 || pot1 == 0) { + if (pot[0]==0 || pot[1] == 0) { local list = fac_2.c_list try { next_mark = delay_mark_tile(list) @@ -730,11 +560,11 @@ class tutorial.chapter_03 extends basic_chapter catch(ev) { return 0 } - if(next_mark && pot0 == 1) { - pot1=1 + if(next_mark && pot[0] == 1) { + pot[1]=1 } } - else if (pot2==0 || pot3==0) { + else if (pot[2]==0 || pot[3]==0) { local list = fac_1.c_list try { next_mark = delay_mark_tile(list) @@ -742,55 +572,65 @@ class tutorial.chapter_03 extends basic_chapter catch(ev) { return 0 } - if(next_mark && pot2 == 1) { - pot3=1 + if(next_mark && pot[2] == 1) { + pot[3]=1 } - chapter_sub_step = 1 + persistent.ch_sub_step = 1 } - else if (pot3==1 && pot4==0) { + else if (pot[3]==1 && pot[4]==0) { this.next_step() } //return 5 break; case 2: - chapter_sub_steps = 3 + persistent.ch_max_sub_steps = 3 //Primer tramo de rieles - if (pot0==0){ - local limi = label1_lim - local tile1 = my_tile(st1_list[0]) + if (pot[0]==0){ + local limi = my_tile(way2_fac1_fac2[1]) + local tile1 = my_tile(way2_fac1_fac2[0]) if (!tile1.find_object(mo_way)){ - label_x.create(st1_list[0], player_x(pl), translate("Build Rails form here")) + label_x.create(way2_fac1_fac2[0], pl_unown, translate("Build Rails form here")) } else tile1.remove_object(player_x(1), mo_label) local tile2 = my_tile(limi) if (!tile2.find_object(mo_way)){ - label_x.create(limi, player_x(pl), translate("Build Rails form here")) + label_x.create(limi, pl_unown, translate("Build Rails form here")) //elimina el cuadro label - local opt = 0 + /*local opt = 0 local del = true local text = "X" - label_bord(bord1_lim.a, bord1_lim.b, opt, del, text) + label_bord(bord1_lim.a, bord1_lim.b, opt, del, text)*/ } - if (tile2.find_object(mo_label) && r_way.c.x<=limi.x){ - if (!tile_x(wayend.x, wayend.y, wayend.z).find_object(mo_way)) - label_x.create(wayend, player_x(pl), translate("Build Rails form here")) + + if (tile2.find_object(mo_label) && r_way.c.x<=limi.x) { + if (!tile_x(wayend.x, wayend.y, wayend.z).find_object(mo_way)) { + label_x.create(wayend, pl_unown, translate("Build Rails form here")) + + } //Creea un cuadro label - local opt = 0 - local del = false - local text = "X" - label_bord(bord1_lim.a, bord1_lim.b, opt, del, text) - tile2.remove_object(player_x(1), mo_label) + local test_way = test_select_way(tile1, tile2, wt_rail) + if (test_way) { + local opt = 0 + local del = false + local text = "X" + label_bord(limit_ch3_rail_line_1a.a, limit_ch3_rail_line_1a.b, opt, del, text) + + tile2.remove_object(player_x(1), mo_label) + + } } + local opt = 0 - local coora = coord3d(c_way1.a.x, c_way1.a.y, c_way1.a.z) - local coorb = coord3d(c_way1.b.x, c_way1.b.y, c_way1.b.z) - local dir = c_way1.dir + local coora = tile_x(way2_fac1_fac2[0].x, way2_fac1_fac2[0].y, way2_fac1_fac2[0].z) + local coorb = tile_x(way2_fac1_fac2[2].x, way2_fac1_fac2[2].y, way2_fac1_fac2[2].z) + //gui.add_message("get_fullway_dir "+get_fullway_dir(way2_fac1_fac2[0], way2_fac1_fac2[1])) + local dir = get_fullway_dir(way2_fac1_fac2[0], way2_fac1_fac2[1]) local obj = false local wt = wt_rail @@ -798,47 +638,49 @@ class tutorial.chapter_03 extends basic_chapter r_way = get_fullway(coora, coorb, dir, obj) if (r_way.r) { tile_x(coora.x, coora.y, coora.z).find_object(mo_way).unmark() - tile_x(wayend.x, wayend.y, coorb.z).remove_object(player_x(1), mo_label) + tile_x(coorb.x, coorb.y, coorb.z).remove_object(player_x(1), mo_label) tile1.remove_object(player_x(1), mo_label) //elimina el cuadro label local opt = 0 local del = true local text = "X" - label_bord(bord1_lim.a, bord1_lim.b, opt, del, text) + label_bord(limit_ch3_rail_line_1a.a, limit_ch3_rail_line_1a.b, opt, del, text) - pot0=1 + pot[0]=1 wayend=0 } } //Para el puente - else if (pot0==1&&pot1==0) { - chapter_sub_step = 1 // sub step finish - local tile = my_tile(c_brge1.b) + else if (pot[0]==1&&pot[1]==0) { + persistent.ch_sub_step = 1 // sub step finish + local tile = my_tile(bridge2_coords.a) if ((!tile.find_object(mo_bridge))){ - label_x.create(c_brge1.b, player_x(pl), translate("Build a Bridge here!.")) + label_x.create(tile, pl_unown, translate("Build a Bridge here!.")) + label_x.create(my_tile(bridge2_coords.b), pl_unown, translate("Build a Bridge here!.")) r_way.c = coord3d(tile.x, tile.y, tile.z) } else { tile.remove_object(player_x(1), mo_label) + my_tile(bridge2_coords.b).remove_object(player_x(1), mo_label) - if (my_tile(c_brge1.b).find_object(mo_bridge)){ - pot1=1 + if (my_tile(bridge2_coords.a).find_object(mo_bridge)){ + pot[1]=1 } } } //Segundo tramo de rieles - else if (pot1==1 && pot2==0){ - chapter_sub_step = 2 // sub step finish - local limi = label2_lim - local tile1 = my_tile(limi) + else if (pot[1]==1 && pot[2]==0){ + persistent.ch_sub_step = 2 // sub step finish + local limi = my_tile(coord(way2_fac1_fac2[4].x, way2_fac1_fac2[4].y)) + local tile1 = limi if (r_way.c.y > limi.y){ - label_x.create(limi, player_x(pl), translate("Build Rails form here")) + label_x.create(limi, pl_unown, translate("Build Rails form here")) //Creea un cuadro label local opt = 0 local del = false local text = "X" - label_bord(bord2_lim.a, bord2_lim.b, opt, del, text) + label_bord(limit_ch3_rail_line_1b.a, limit_ch3_rail_line_1b.b, opt, del, text) } else { tile1.remove_object(player_x(1), mo_label) @@ -846,15 +688,15 @@ class tutorial.chapter_03 extends basic_chapter local opt = 0 local del = true local text = "X" - label_bord(bord2_lim.a, bord2_lim.b, opt, del, text) + label_bord(limit_ch3_rail_line_1b.a, limit_ch3_rail_line_1b.b, opt, del, text) if (!tile1.find_object(mo_label)) - label_x.create(st2_list[0], player_x(pl), translate("Build Rails form here")) + label_x.create(way2_fac1_fac2[5], pl_unown, translate("Build Rails form here")) } local opt = 0 - local coora = coord3d(c_way3.a.x, c_way3.a.y, c_way3.a.z) - local coorb = coord3d(c_way3.b.x, c_way3.b.y, c_way3.b.z) - local dir = c_way3.dir + local coora = my_tile(way2_fac1_fac2[3]) + local coorb = my_tile(way2_fac1_fac2[5]) + local dir = get_fullway_dir(way2_fac1_fac2[0], way2_fac1_fac2[1])//c_way3.dir local obj = false wayend = coorb @@ -865,7 +707,7 @@ class tutorial.chapter_03 extends basic_chapter local opt = 0 local del = true local text = "X" - label_bord(bord2_lim.a, bord2_lim.b, opt, del, text) + label_bord(limit_ch3_rail_line_1b.a, limit_ch3_rail_line_1b.b, opt, del, text) tile_x(coorb.x, coorb.y, coorb.z).remove_object(player_x(1), mo_label) tile1.remove_object(player_x(1), mo_label) @@ -877,30 +719,30 @@ class tutorial.chapter_03 extends basic_chapter case 3: glresult = null - chapter_sub_steps = 2 + persistent.ch_max_sub_steps = 2 local passa = good_alias.passa local mail = good_alias.mail - if (pot1==0){ + if (pot[1]==0){ //Estaciones de la Fabrica local pl_nr = 1 - local c_list = st2_list + local c_list = station_tiles(way2_fac1_fac2[5], way2_fac1_fac2[4], loc1_tile) local st_nr = c_list.len() //Numero de estaciones local good = good_alias.goods local result = is_stations_building(pl_nr, c_list, st_nr, good) if(result){ - pot0=1 + pot[0]=1 } } - if (pot0==1 && pot1==0){ - chapter_sub_step = 1 // sub step finish + if (pot[0]==1 && pot[1]==0){ + persistent.ch_sub_step = 1 // sub step finish //Estaciones de la Fabrica local pl_nr = 1 - local c_list = st1_list + local c_list = station_tiles(way2_fac1_fac2[0], way2_fac1_fac2[1], loc1_tile) local st_nr = c_list.len() //Numero de estaciones local good = good_alias.goods local result = is_stations_building(pl_nr, c_list, st_nr, good) @@ -912,12 +754,10 @@ class tutorial.chapter_03 extends basic_chapter //return 15 break case 4: - chapter_sub_steps = 3 - local tile = my_tile(c_dep1) - if(pot0==0){ - local c_list = [my_tile(c_dep1_lim.a), my_tile(c_dep1_lim.b)] - local siz = c_list.len() - + persistent.ch_max_sub_steps = 3 + local tile = my_tile(ch3_rail_depot1.b) + if(pot[0]==0){ + local c_list = [my_tile(ch3_rail_depot1.b), my_tile(ch3_rail_depot1.a)] local next_mark = true try { next_mark = delay_mark_tile(c_list) @@ -926,7 +766,7 @@ class tutorial.chapter_03 extends basic_chapter return 0 } if(!tile.find_object(mo_way)){ - label_x.create(c_dep1, player_x(pl), translate("Build Rails form here")) + label_x.create(tile, pl_unown, translate("Build Rails form here")) } else{ local stop_mark = true @@ -936,33 +776,33 @@ class tutorial.chapter_03 extends basic_chapter catch(ev) { return 0 } - pot0=1 + pot[0]=1 } } - else if(pot0==1 && pot1==0){ - chapter_sub_step = 1 // sub step finish + else if(pot[0]==1 && pot[1]==0){ + persistent.ch_sub_step = 1 // sub step finish local label = tile.find_object(mo_label) if(!tile.find_object(mo_depot_rail)){ label.set_text(translate("Build Train Depot here!.")) } else{ tile.remove_object(player_x(1), mo_label) - pot1=1 + pot[1]=1 } } - else if ( pot0==1 && pot1==1 && pot2==0 ) { - chapter_sub_step = 2 // sub step finish + else if ( pot[0]==1 && pot[1]==1 && pot[2]==0 ) { + persistent.ch_sub_step = 2 // sub step finish } - else if(pot2==1){ + else if(pot[2]==1){ this.next_step() } //return 16 break case 5: - if (!cov_sw) + if (!correct_cov) return 0 local wt = wt_rail @@ -970,18 +810,18 @@ class tutorial.chapter_03 extends basic_chapter if (current_cov == ch3_cov_lim1.b){ reached = get_reached_target(fac_2.c, good_alias.wood ) if (reached>= f1_reached){ - pot1=1 + pot[1]=1 } } - if (pot1==1 && pot0==0){ + if (pot[1]==1 && pot[0]==0){ //Marca tiles para evitar construccion de objetos - local c_list = c_lock + /*local c_list = c_lock local siz = c_lock.len() local del = false local pl_nr = 1 local text = "X" - lock_tile_list(c_list, siz, del, pl_nr, text) + lock_tile_list(c_list, siz, del, pl_nr, text)*/ this.next_step() reset_stop_flag() @@ -990,45 +830,45 @@ class tutorial.chapter_03 extends basic_chapter //return 30 break case 6: - chapter_sub_steps = 5 + persistent.ch_max_sub_steps = 5 //Primer tramo de rieles - if (pot0==0){ + if (pot[0]==0){ - local limi = label3_lim - local tile1 = my_tile(st3_list[0]) + local limi = way2_fac2_fac3[1] + local tile1 = my_tile(way2_fac2_fac3[0]) if (!tile1.find_object(mo_way)){ - label_x.create(st3_list[0], player_x(pl), translate("Build Rails form here")) + label_x.create(way2_fac2_fac3[0], pl_unown, translate("Build Rails form here")) } else tile1.remove_object(player_x(1), mo_label) local tile2 = my_tile(limi) if (!tile2.find_object(mo_way)){ - label_x.create(limi, player_x(pl), translate("Build Rails form here")) + label_x.create(limi, pl_unown, translate("Build Rails form here")) //elimina el cuadro label local opt = 0 local del = true local text = "X" - label_bord(bord3_lim.a, bord3_lim.b, opt, del, text) + label_bord(limit_ch3_rail_line_2a.a, limit_ch3_rail_line_2a.b, opt, del, text) } if (tile_x(r_way.c.x, r_way.c.y, r_way.c.z).find_object(mo_way) && r_way.c.y>=limi.y){ tile2.remove_object(player_x(1), mo_label) if (!tile_x(wayend.x, wayend.y, wayend.z).find_object(mo_way)) - label_x.create(wayend, player_x(pl), translate("Build Rails form here")) + label_x.create(wayend, pl_unown, translate("Build Rails form here")) //Creea un cuadro label local opt = 0 local del = false local text = "X" - label_bord(bord3_lim.a, bord3_lim.b, opt, del, text) + label_bord(limit_ch3_rail_line_2a.a, limit_ch3_rail_line_2a.b, opt, del, text) } local opt = 0 - local coora = coord3d(c_way4.a.x, c_way4.a.y, c_way4.a.z) - local coorb = coord3d(c_way4.b.x, c_way4.b.y, c_way4.b.z) + local coora = coord3d(way2_fac2_fac3[0].x, way2_fac2_fac3[0].y, way2_fac2_fac3[0].z) + local coorb = coord3d(way2_fac2_fac3[2].x, way2_fac2_fac3[2].y, way2_fac2_fac3[2].z) local obj = false - local dir = c_way4.dir // 3 + local dir = get_fullway_dir(way2_fac2_fac3[0], way2_fac2_fac3[1]) // 3 wayend = coorb @@ -1041,52 +881,52 @@ class tutorial.chapter_03 extends basic_chapter local opt = 0 local del = true local text = "X" - label_bord(bord3_lim.a, bord3_lim.b, opt, del, text) + label_bord(limit_ch3_rail_line_2a.a, limit_ch3_rail_line_2a.b, opt, del, text) - pot0 = 1 + pot[0] = 1 wayend = 0 } } //Para el tunel - else if (pot0==1 && pot1==0){ - chapter_sub_step = 1 // sub step finish - local tile = my_tile(c_tunn1.a) + else if (pot[0]==1 && pot[1]==0){ + persistent.ch_sub_step = 1 // sub step finish + local tile = my_tile(way2_fac2_fac3[2]) if ((!tile.find_object(mo_tunnel))){ - label_x.create(c_tunn1.a, player_x(pl), translate("Place a Tunnel here!.")) + label_x.create(way2_fac2_fac3[2], pl_unown, translate("Place a Tunnel here!.")) r_way.c = coord3d(tile.x, tile.y, tile.z) } else { tile.remove_object(player_x(1), mo_label) - if (my_tile(c_tunn1.b).find_object(mo_tunnel)){ + if (my_tile(way2_fac2_fac3[3]).find_object(mo_tunnel)){ } } local opt = 0 - local coora = coord3d(c_tunn1.a.x, c_tunn1.a.y, c_tunn1.a.z) - local coorb = coord3d(c_tunn1.b.x, c_tunn1.b.y, c_tunn1.b.z) + local coora = coord3d(way2_fac2_fac3[2].x, way2_fac2_fac3[2].y, way2_fac2_fac3[2].z) + local coorb = coord3d(way2_fac2_fac3[3].x, way2_fac2_fac3[3].y, way2_fac2_fac3[3].z) local obj = false local tunnel = true - local dir = c_tunn1.dir // 5 + local dir = get_fullway_dir(way2_fac2_fac3[2], way2_fac2_fac3[3]) // 5 wayend = coorb r_way = get_fullway(coora, coorb, dir, obj, tunnel) if (r_way.r){ - pot1=1 + pot[1]=1 wayend = 0 } } //Segundo tramo de rieles - else if (pot1==1 && pot2==0){ - chapter_sub_step = 2 // sub step finish - local limi = label4_lim + else if (pot[1]==1 && pot[2]==0){ + persistent.ch_sub_step = 2 // sub step finish + local limi = way2_fac2_fac3[4] local tile1 = my_tile(limi) - local tile2 = my_tile(st4_list[0]) + local tile2 = my_tile(way2_fac2_fac3[5]) if (r_way.c.y < limi.y){ - label_x.create(limi, player_x(pl), translate("Build Rails form here")) + label_x.create(limi, pl_unown, translate("Build Rails form here")) //Creea un cuadro label local opt = 0 local del = false local text = "X" - label_bord(bord4_lim.a, bord4_lim.b, opt, del, text) + label_bord(limit_ch3_rail_line_2b.a, limit_ch3_rail_line_2b.b, opt, del, text) } else { tile1.remove_object(player_x(1), mo_label) @@ -1094,16 +934,16 @@ class tutorial.chapter_03 extends basic_chapter local opt = 0 local del = true local text = "X" - label_bord(bord4_lim.a, bord4_lim.b, opt, del, text) + label_bord(limit_ch3_rail_line_2b.a, limit_ch3_rail_line_2b.b, opt, del, text) if (!tile2.find_object(mo_way)) - label_x.create(st4_list[0], player_x(pl), translate("Build Rails form here")) + label_x.create(way2_fac2_fac3[5], pl_unown, translate("Build Rails form here")) } local opt = 0 - local coora = coord3d(c_way5.a.x, c_way5.a.y, c_way5.a.z) - local coorb = coord3d(c_way5.b.x, c_way5.b.y, c_way5.b.z) + local coora = coord3d(way2_fac2_fac3[3].x, way2_fac2_fac3[3].y, way2_fac2_fac3[3].z) + local coorb = coord3d(way2_fac2_fac3[5].x, way2_fac2_fac3[5].y, way2_fac2_fac3[5].z) local obj = false - local dir = c_way5.dir + local dir = get_fullway_dir(way2_fac2_fac3[2], way2_fac2_fac3[3]) wayend = coorb r_way = get_fullway(coora, coorb, dir, obj) if (r_way.r){ @@ -1113,96 +953,111 @@ class tutorial.chapter_03 extends basic_chapter local opt = 0 local del = true local text = "X" - label_bord(bord4_lim.a, bord4_lim.b, opt, del, text) + label_bord(limit_ch3_rail_line_2b.a, limit_ch3_rail_line_2b.b, opt, del, text) - pot2=1 + pot[2]=1 wayend = 0 } } //Text label para las estaciones - else if (pot2==1 && pot3==0){ - chapter_sub_step = 3 // sub step finish + else if (pot[2]==1 && pot[3]==0){ + persistent.ch_sub_step = 3 // sub step finish glresult = null local passa = good_alias.passa local mail = good_alias.mail //Estaciones de la Fabrica local pl_nr = 1 - local c_list = st4_list + local c_list = station_tiles(way2_fac2_fac3[5], way2_fac2_fac3[4], loc2_tile) local st_nr = c_list.len() //Numero de estaciones local good = good_alias.goods local result = is_stations_building(pl_nr, c_list, st_nr, good) if(result){ - pot3 = 1 + pot[3] = 1 } } - else if (pot3==1 && pot4==0){ - chapter_sub_step = 4 // sub step finish + else if (pot[3]==1 && pot[4]==0){ + persistent.ch_sub_step = 4 // sub step finish glresult = null local passa = good_alias.passa local mail = good_alias.mail //Estaciones de la Fabrica local pl_nr = 1 - local c_list = st3_list + local c_list = station_tiles(way2_fac2_fac3[0], way2_fac2_fac3[1], loc2_tile) local st_nr = c_list.len() //Numero de estaciones local good = good_alias.goods local result = is_stations_building(pl_nr, c_list, st_nr, good) if(result){ - pot4 = 1 + pot[4] = 1 } } - else if (pot4==1 && pot5==0){ + else if (pot[4]==1 && pot[5]==0){ //Elimina las Marcas de tiles - local c_list = c_lock + /*local c_list = c_lock local siz = c_lock.len() local del = true local pl_nr = 1 local text = "X" - lock_tile_list(c_list, siz, del, pl_nr, text) + lock_tile_list(c_list, siz, del, pl_nr, text)*/ this.next_step() } //return 35 break case 7: - if (!cov_sw) + if (!correct_cov) return 0 local opt = 2 local wt = gl_wt - local tile = my_tile(c_dep2) - if(pot0==0){ + local tile = my_tile(ch3_rail_depot2.a) + if(pot[0]==0){ + local c_list = [my_tile(ch3_rail_depot2.b), my_tile(ch3_rail_depot2.a)] + local next_mark = true + try { + next_mark = delay_mark_tile(c_list) + } + catch(ev) { + return 0 + } if(!tile.find_object(mo_way)){ - label_x.create(c_dep2, player_x(pl), translate("Build Rails form here")) + label_x.create(tile, pl_unown, translate("Build Rails form here")) } else{ - pot0=1 + local stop_mark = true + try { + next_mark = delay_mark_tile(c_list, stop_mark) + } + catch(ev) { + return 0 + } + pot[0]=1 } } - else if(pot0==1 && pot1==0){ + else if(pot[0]==1 && pot[1]==0){ local label = tile.find_object(mo_label) if(!tile.find_object(mo_depot_rail)){ label.set_text(translate("Build Train Depot here!.")) } else{ tile.remove_object(player_x(1), mo_label) - pot1=1 + pot[1]=1 } } else if(current_cov == ch3_cov_lim2.b){ reached = get_reached_target(fac_3.c, good_alias.plan) if (reached>=f3_reached){ - pot3=1 + pot[3]=1 } } - if (pot3==1 && pot4==0){ + if (pot[3]==1 && pot[4]==0){ this.next_step() reset_stop_flag() reached = 0 @@ -1211,43 +1066,45 @@ class tutorial.chapter_03 extends basic_chapter //return 40 break case 8: - chapter_sub_steps = 5 + persistent.ch_max_sub_steps = 5 //Para el tramo de via - if (pot0==0){ - local coora = coord3d(c_way6.a.x, c_way6.a.y, c_way6.a.z) - local coorb = coord3d(c_way6.b.x, c_way6.b.y, c_way6.b.z) + if (pot[0]==0){ + local coora = coord3d(way3_cy1_cy3.a.x, way3_cy1_cy3.a.y, way3_cy1_cy3.a.z) + local coorb = coord3d(way3_cy1_cy3.b.x, way3_cy1_cy3.b.y, way3_cy1_cy3.b.z) local obj = false local tunnel = false local dir = get_dir_start(coora) r_way = get_fullway(coora, coorb, dir, obj, tunnel) if (r_way.r){ - pot0=1 + pot[0]=1 //return 45 } } //Para el puente - else if (pot0==1 && pot1==0){ - chapter_sub_step = 1 // sub step finish - local tile = my_tile(c_brge3.a) + else if (pot[0]==1 && pot[1]==0){ + persistent.ch_sub_step = 1 // sub step finish + local tile = my_tile(bridge3_coords.a) if ((!tile.find_object(mo_bridge))){ - label_x.create(c_brge3.a, player_x(pl), translate("Build a Bridge here!.")) + label_x.create(bridge3_coords.a, pl_unown, translate("Build a Bridge here!.")) + label_x.create(my_tile(bridge3_coords.b), pl_unown, translate("Build a Bridge here!.")) r_way.c = coord3d(tile.x, tile.y, tile.z) } else { tile.remove_object(player_x(1), mo_label) + my_tile(bridge3_coords.b).remove_object(player_x(1), mo_label) - if (my_tile(c_brge3.b).find_object(mo_bridge)){ - pot1=1 + if (my_tile(bridge3_coords.b).find_object(mo_bridge)){ + pot[1]=1 } } } //Para la entrada del tunel - else if (pot1==1 && pot2==0){ - chapter_sub_step = 2 // sub step finish - local t_tunn = my_tile(start_tunn) + else if (pot[1]==1 && pot[2]==0){ + persistent.ch_sub_step = 2 // sub step finish + local t_tunn = my_tile(way3_tun_coord[0]) if (!t_tunn.find_object(mo_tunnel)){ - local label_t = my_tile(start_tunn) + local label_t = my_tile(way3_tun_coord[0]) local lab = label_t.find_object(mo_label) if(lab){ if(label_t.is_marked()){ @@ -1260,58 +1117,58 @@ class tutorial.chapter_03 extends basic_chapter } else{ gl_tool = 0 - lab.set_text("Place a Tunnel here!.") + lab.set_text(translate("Place a Tunnel here!.")) } } else{ - label_x.create(start_tunn, player_x(pl), translate("Place a Tunnel here!.")) + label_x.create(way3_tun_coord[0], pl_unown, translate("Place a Tunnel here!.")) } } else{ - pot2=1 + pot[2]=1 t_tunn.remove_object(player_x(1), mo_label) } } //Para conectar las dos entradas del tunel - else if (pot2==1 && pot3==0){ - chapter_sub_step = 3 // sub step finish - local coora = coord3d(c_tunn2.a.x, c_tunn2.a.y, c_tunn2.a.z) - local coorb = coord3d(c_tunn2.b.x, c_tunn2.b.y, c_tunn2.b.z) + else if (pot[2]==1 && pot[3]==0){ + persistent.ch_sub_step = 3 // sub step finish + local coora = coord3d(way3_tun_coord[0].x, way3_tun_coord[0].y, way3_tun_coord[0].z) + local coorb = coord3d(way3_tun_coord[2].x, way3_tun_coord[2].y, way3_tun_coord[2].z) local obj = false local tunnel = true local dir = get_dir_start(coora) r_way = get_fullway(coora, coorb, dir, obj, tunnel) //gui.add_message("plus "+r_way.p) if (r_way.r){ - pot3=1 + pot[3]=1 //return 45 } - if(r_way.c.z=st1_way_lim.a.x && pos.y>=st1_way_lim.a.y && pos.x<=st1_way_lim.b.x && pos.y<=st1_way_lim.b.y){ - if(tool_id==tool_build_way || tool_id==tool_remove_way || tool_id==tool_remover){ - local way_desc = way_desc_x.get_available_ways(gl_wt, gl_st) - foreach(desc in way_desc){ - if(desc.get_name() == name){ + if ( pos.x >= way2_fac1_fac2[1].x && pos.y >= way2_fac1_fac2[1].y && pos.x <= way2_fac1_fac2[0].x && pos.y <= way2_fac1_fac2[0].y ) { + if( tool_id==tool_build_way || tool_id==tool_remove_way || tool_id==tool_remover ) { + /*local way_desc = way_desc_x.get_available_ways(gl_wt, gl_st) + foreach ( desc in way_desc ) { + if( desc.get_name() == name ) { return null } - } + }*/ + // check selected way + local s = check_select_way(name, gl_wt) + if ( s != null ) { return s } else { return null } } } - if (pos.x>=bord1_lim.a.x && pos.y>=bord1_lim.a.y && pos.x<=bord1_lim.b.x && pos.y<=bord1_lim.b.y){ - if (!way && label && label.get_text()=="X"){ - return translate("Indicates the limits for using construction tools")+" ( "+pos.tostring()+")." + if (pos.x>=limit_ch3_rail_line_1a.a.x && pos.y>=limit_ch3_rail_line_1a.a.y && pos.x<=limit_ch3_rail_line_1a.b.x && pos.y<=limit_ch3_rail_line_1a.b.y){ + if ( label && label.get_text() == "X" ) { + return get_tile_message(5, pos) //translate("Indicates the limits for using construction tools")+" ( "+coord3d_to_string(pos)+")." } - return all_control(result, gl_wt, gl_st, way, ribi, tool_id, pos, r_way.c, name) + return all_control(result, gl_wt, gl_st, tool_id, pos, r_way.c, name) } else if(tool_id==tool_build_way) - return translate("Connect the Track here")+" ("+r_way.c.tostring()+")." + return get_tile_message(11, r_way.c) //translate("Connect the Track here")+" ("+coord3d_to_string(r_way.c)+")." } //Construye un puente - if (pot0==1 && pot1==0){ - if (pos.x>=c_bway_lim1.a.x && pos.y>=c_bway_lim1.a.y && pos.x<=c_bway_lim1.b.x && pos.y<=c_bway_lim1.b.y){ - if(tool_id==tool_build_way) + if (pot[0]==1 && pot[1]==0){ + if (pos.x>=bridge2_coords.b.x-1 && pos.y>=bridge2_coords.b.y-1 && pos.x<=bridge2_coords.a.x+1 && pos.y<=bridge2_coords.a.y+1){ + if(tool_id==tool_build_way || tool_id==tool_build_bridge) return null - if(tool_id==tool_build_bridge){ - if(pos.z==brge1_z) - return null - else - return translate("You must build the bridge here")+" ("+c_brge1.b.tostring()+")." - } } + else + return translate("You must build the bridge here")+" ("+coord3d_to_string(bridge2_coords.a)+")." } //Segundo tramo de rieles - if (pot1==1&&pot2==0){ - if (pos.x>=st2_way_lim.a.x && pos.y>=st2_way_lim.a.y && pos.x<=st2_way_lim.b.x && pos.y<=st2_way_lim.b.y){ + if (pot[1]==1&&pot[2]==0){ + if (pos.x>=way2_fac1_fac2[5].x && pos.y>=way2_fac1_fac2[5].y && pos.x<=way2_fac1_fac2[4].x && pos.y<=way2_fac1_fac2[4].y){ if(tool_id==tool_build_bridge) return result - return all_control(result, gl_wt, gl_st, way, ribi, tool_id, pos, r_way.c, name) + return all_control(result, gl_wt, gl_st, tool_id, pos, r_way.c, name) } - if (pos.x>=bord2_lim.a.x && pos.y>=bord2_lim.a.y && pos.x<=bord2_lim.b.x && pos.y<=bord2_lim.b.y){ - if (!way && label && label.get_text()=="X"){ - return translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." + if (pos.x>=limit_ch3_rail_line_1b.a.x && pos.y>=limit_ch3_rail_line_1b.a.y && pos.x<=limit_ch3_rail_line_1b.b.x && pos.y<=limit_ch3_rail_line_1b.b.y){ + if ( label && label.get_text() == "X" ) { + return get_tile_message(5, pos) //translate("Indicates the limits for using construction tools")+" ("+coord3d_to_string(pos)+")." } - return all_control(result, gl_wt, gl_st, way, ribi, tool_id, pos, r_way.c, name) + return all_control(result, gl_wt, gl_st, tool_id, pos, r_way.c, name) } else if(tool_id==tool_build_way) - return translate("Connect the Track here")+" ("+r_way.c.tostring()+")." + return get_tile_message(11, r_way.c) //translate("Connect the Track here")+" ("+coord3d_to_string(r_way.c)+")." } break; case 3: - if (pot0==0){ + if (pot[0]==0){ //Estaciones de la Fabrica - local good = good_alias.goods - local c_list = st2_list - local siz = c_list.len() - return get_stations(pos, tool_id, result, good, c_list, siz) + // check selected halt accept goods + local s = check_select_station(name, wt_rail, good_alias.goods) + if ( s != null ) return s + + local c_list = station_tiles(way2_fac1_fac2[5], way2_fac1_fac2[4], loc1_tile) + return get_stations(pos, tool_id, result, good_alias.goods, c_list) } - else if (pot0==1 && pot1==0){ + else if (pot[0]==1 && pot[1]==0){ //Estaciones del Productor - local good = good_alias.goods - local c_list = st1_list - local siz = c_list.len() - return get_stations(pos, tool_id, result, good, c_list, siz) + // check selected halt accept goods + local s = check_select_station(name, wt_rail, good_alias.goods) + if ( s != null ) return s + + local c_list = station_tiles(way2_fac1_fac2[0], way2_fac1_fac2[1], loc1_tile) + return get_stations(pos, tool_id, result, good_alias.goods, c_list) } break case 4: - if(pot0==0){ - if (pos.x>=c_dep1_lim.a.x && pos.y>=c_dep1_lim.a.y && pos.x<=c_dep1_lim.b.x && pos.y<=c_dep1_lim.b.y){ + if(pot[0]==0){ + if (pos.x>=ch3_rail_depot1.a.x && pos.y>=ch3_rail_depot1.a.y && pos.x<=ch3_rail_depot1.b.x && pos.y<=ch3_rail_depot1.b.y){ if (tool_id==tool_build_way) return null } - else return translate("You must build track in")+" ("+c_dep1.tostring()+")." + else return translate("You must build track in")+" ("+ch3_rail_depot1.b.tostring()+")." } - else if(pot0==1 && pot1==0){ - if ((pos.x==c_dep1.x)&&(pos.y==c_dep1.y)){ + else if(pot[0]==1 && pot[1]==0){ + if ((pos.x==ch3_rail_depot1.b.x)&&(pos.y==ch3_rail_depot1.b.y)){ if (tool_id==tool_build_depot) return null } - else return translate("You must build the train depot in")+" ("+c_dep1.tostring()+")." + else return get_tile_message(12, ch3_rail_depot1.b) //translate("You must build the train depot in")+" ("+ch3_rail_depot1.b.tostring()+")." } - else if (pot1==1 && pot2==0){ - if ((pos.x==c_dep1.x)&&(pos.y==c_dep1.y)){ + else if (pot[1]==1 && pot[2]==0){ + if ((pos.x==ch3_rail_depot1.b.x)&&(pos.y==ch3_rail_depot1.b.y)){ if (tool_id==4096){ - pot2=1 + pot[2]=1 return null } - else return translate("You must use the inspection tool")+" ("+c_dep1.tostring()+")." + else return get_tile_message(9, ch3_rail_depot1.b) //translate("You must use the inspection tool")+" ("+ch3_rail_depot1.b.tostring()+")." } } break case 5: //Enrutar vehiculos (estacion nr1) - if (building && pos.x>=st1_way_lim.a.x && pos.y>=st1_way_lim.a.y && pos.x<=st1_way_lim.b.x && pos.y<=st1_way_lim.b.y){ + local t = tile_x(pos.x, pos.y, pos.z) + local building = t.find_object(mo_building) + local st_check = check_rail_station(my_tile(way2_fac1_fac2[0]), 0, pos) + if (building && st_check){ + //if (building && pos.x>=way2_fac1_fac2[1].x && pos.y>=way2_fac1_fac2[1].y && pos.x<=way2_fac1_fac2[0].x && pos.y<=way2_fac1_fac2[0].y){ if (tool_id==4108){ if (stop_flag[0]==0){ stop_flag[0] = 1 return null } else - return translate("Select the other station")+" ("+coord(st2_list[0].x, st2_list[0].y).tostring()+".)" + return translate("Select the other station")+" ("+coord(way2_fac1_fac2[5].x, way2_fac1_fac2[5].y).tostring()+".)" } } else if (tool_id==4108){ if (stop_flag[0]==0) - return format(translate("Select station No.%d"),1)+" ("+coord(st1_list[0].x, st1_list[0].y).tostring()+".)" + return format(translate("Select station No.%d"),1)+" ("+coord(way2_fac1_fac2[0].x, way2_fac1_fac2[0].y).tostring()+".)" } //Enrutar vehiculos (estacion nr2) - if (building && pos.x>=st2_way_lim.a.x && pos.y>=st2_way_lim.a.y && pos.x<=st2_way_lim.b.x && pos.y<=st2_way_lim.b.y){ + local st_check = check_rail_station(my_tile(way2_fac1_fac2[way2_fac1_fac2.len()-1]), 0, pos) + if (building && st_check){ + //if (building && pos.x>=way2_fac1_fac2[way2_fac1_fac2.len()-1].x && pos.y>=way2_fac1_fac2[way2_fac1_fac2.len()-1].y && pos.x<=way2_fac1_fac2[way2_fac1_fac2.len()-2].x && pos.y<=way2_fac1_fac2[way2_fac1_fac2.len()-2].y){ if (tool_id==4108){ if (stop_flag[0]==1 && stop_flag[1]==0){ stop_flag[1] = 1 return null } if (stop_flag[0]==0) - return translate("Select the other station first")+" ("+coord(st1_list[0].x, st1_list[0].y).tostring()+".)" + return translate("Select the other station first")+" ("+coord(way2_fac1_fac2[0].x, way2_fac1_fac2[0].y).tostring()+".)" else if (stop_flag[0]==1 && stop_flag[1]==1) - return translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep1.tostring()+".)" + return get_tile_message(3, ch3_rail_depot1.a) //translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+ch3_rail_depot1.a.tostring()+".)" } } else if (tool_id==4108){ if (stop_flag[0]==0) - return translate("Select the other station first")+" ("+coord(st1_list[0].x, st1_list[0].y).tostring()+".)" + return translate("Select the other station first")+" ("+coord(way2_fac1_fac2[0].x, way2_fac1_fac2[0].y).tostring()+".)" else if (stop_flag[0]==1 && stop_flag[1]==0) - return format(translate("Select station No.%d"),2)+" ("+coord(st2_list[0].x, st2_list[0].y).tostring()+".)" + return format(translate("Select station No.%d"),2)+" ("+coord(way2_fac1_fac2[5].x, way2_fac1_fac2[5].y).tostring()+".)" else if (stop_flag[0]==1 && stop_flag[1]==1) - return translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep1.tostring()+".)" + return get_tile_message(3, ch3_rail_depot1.a) //translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+ch3_rail_depot1.a.tostring()+".)" } break //Conectando los rieles con el consumidor final case 6: //Primer tramo de rieles - if (pot0==0){ - local lab_t = my_tile(label3_lim) + if (pot[0]==0){ + local lab_t = my_tile(way2_fac2_fac3[1]) local lab = lab_t.find_object(mo_label) if(pos.y > lab_t.y && lab && lab.get_owner().nr == 0){ if(tool_id==tool_build_way) return "" } - if (pos.x>=st3_way_lim.a.x && pos.y>=st3_way_lim.a.y && pos.x<=st3_way_lim.b.x && pos.y<=st3_way_lim.b.y){ + if (pos.x>=way2_fac2_fac3[0].x && pos.y>=way2_fac2_fac3[0].y && pos.x<=way2_fac2_fac3[1].x && pos.y<=way2_fac2_fac3[1].y){ if(tool_id==tool_build_way || tool_id==tool_remove_way || tool_id==tool_remover){ - local way_desc = way_desc_x.get_available_ways(gl_wt, gl_st) + /*local way_desc = way_desc_x.get_available_ways(gl_wt, gl_st) foreach(desc in way_desc){ if(desc.get_name() == name){ return null } - } + }*/ + // check selected way + local s = check_select_way(name, gl_wt) + if ( s != null ) { return s } else { return null } } } - if (pos.x>=bord3_lim.a.x && pos.y>=bord3_lim.a.y && pos.x<=bord3_lim.b.x && pos.y<=bord3_lim.b.y){ + if (pos.x>=limit_ch3_rail_line_2a.a.x && pos.y>=limit_ch3_rail_line_2a.a.y && pos.x<=limit_ch3_rail_line_2a.b.x && pos.y<=limit_ch3_rail_line_2a.b.y){ if (label && label.get_text()=="X"){ - return translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." + return get_tile_message(5, pos) //translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." } - return all_control(result, gl_wt, gl_st, way, ribi, tool_id, pos, r_way.c, name) + return all_control(result, gl_wt, gl_st, tool_id, pos, r_way.c, name) } else if(tool_id==tool_build_way) - return translate("Connect the Track here")+" ("+r_way.c.tostring()+")." + return get_tile_message(11, r_way.c) //translate("Connect the Track here")+" ("+r_way.c.tostring()+")." } //Construye un tunel - else if (pot0==1 && pot1==0){ - if (pos.x>=c_tway_lim2.a.x && pos.y>=c_tway_lim2.a.y && pos.x<=c_tway_lim2.b.x && pos.y<=c_tway_lim2.b.y){ + else if (pot[0]==1 && pot[1]==0){ + if (pos.x>=way2_fac2_fac3[2].x && pos.y>=way2_fac2_fac3[2].y && pos.x<=way2_fac2_fac3[3].x && pos.y<=way2_fac2_fac3[3].y){ if(tool_id==tool_build_way || tool_id==tool_build_tunnel){ return null } @@ -1705,35 +1577,39 @@ class tutorial.chapter_03 extends basic_chapter } //Segundo tramo de rieles - if (pot1==1&&pot2==0){ - if (pos.x>=st4_way_lim.a.x && pos.y>=st4_way_lim.a.y && pos.x<=st4_way_lim.b.x && pos.y<=st4_way_lim.b.y){ + if (pot[1]==1&&pot[2]==0){ + if (pos.x>=way2_fac2_fac3[4].x && pos.y>=way2_fac2_fac3[4].y && pos.x<=way2_fac2_fac3[5].x && pos.y<=way2_fac2_fac3[5].y){ if(tool_id==tool_build_bridge) return result - return all_control(result, gl_wt, gl_st, way, ribi, tool_id, pos, r_way.c, name) + return all_control(result, gl_wt, gl_st, tool_id, pos, r_way.c, name) } - if (pos.x>=bord4_lim.a.x && pos.y>=bord4_lim.a.y && pos.x<=bord4_lim.b.x && pos.y<=bord4_lim.b.y){ - if (!way && label && label.get_text()=="X"){ - return translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." + if (pos.x>=limit_ch3_rail_line_2b.a.x && pos.y>=limit_ch3_rail_line_2b.a.y && pos.x<=limit_ch3_rail_line_2b.b.x && pos.y<=limit_ch3_rail_line_2b.b.y){ + if ( label && label.get_text()=="X"){ + return get_tile_message(5, pos) //translate("Indicates the limits for using construction tools")+" ("+coord3d_to_string(pos)+")." } - return all_control(result, gl_wt, gl_st, way, ribi, tool_id, pos, r_way.c, name) + return all_control(result, gl_wt, gl_st, tool_id, pos, r_way.c, name) } else if(tool_id==tool_build_way) - return translate("Connect the Track here")+" ("+r_way.c.tostring()+")." + return get_tile_message(11, r_way.c) //translate("Connect the Track here")+" ("+coord3d_to_string(r_way.c)+")." } //Estaciones de la Fabrica - else if (pot2==1 && pot3==0){ - local good = good_alias.goods - local c_list = st4_list - local siz = c_list.len() - return get_stations(pos, tool_id, result, good, c_list, siz) + else if (pot[2]==1 && pot[3]==0){ + // check selected halt accept goods + local s = check_select_station(name, wt_rail, good_alias.goods) + if ( s != null ) return s + + local c_list = station_tiles(way2_fac2_fac3[5], way2_fac2_fac3[4], loc2_tile) + return get_stations(pos, tool_id, result, good_alias.goods, c_list) } //Estaciones del Productor - else if (pot3==1 && pot4==0){ - local good = good_alias.goods - local c_list = st3_list - local siz = c_list.len() - return get_stations(pos, tool_id, result, good, c_list, siz) + else if (pot[3]==1 && pot[4]==0){ + // check selected halt accept goods + local s = check_select_station(name, wt_rail, good_alias.goods) + if ( s != null ) return s + + local c_list = station_tiles(way2_fac2_fac3[0], way2_fac2_fac3[1], loc2_tile) + return get_stations(pos, tool_id, result, good_alias.goods, c_list) } break case 7: @@ -1741,94 +1617,97 @@ class tutorial.chapter_03 extends basic_chapter break //Construye rieles y deposito - if (pos.x>=c_dep2_lim.a.x && pos.y>=c_dep2_lim.a.y && pos.x<=c_dep2_lim.b.x && pos.y<=c_dep2_lim.b.y){ - if (pot0==0){ + if (pos.x>=ch3_rail_depot2.a.x && pos.y>=ch3_rail_depot2.a.y && pos.x<=ch3_rail_depot2.b.x && pos.y<=ch3_rail_depot2.b.y){ + if (pot[0]==0){ if(tool_id==tool_build_way) return null else - return translate("You must build track in")+" ("+c_dep2.tostring()+")." + return translate("You must build track in")+" ("+coord3d_to_string(ch3_rail_depot2.a)+")." } - else if (pot0==1 && pot1==0) + else if (pot[0]==1 && pot[1]==0) if(tool_id==tool_build_depot) return null else - return result = translate("You must build the train depot in")+" ("+c_dep2.tostring()+")." + return get_tile_message(12, ch3_rail_depot2.a) //translate("You must build the train depot in")+" ("+ch3_rail_depot2.a.tostring()+")." } - else if (pot0==0) - return translate("You must build track in")+" ("+c_dep2.tostring()+")." - else if (pot0==1 && pot1==0) - return result = translate("You must build the train depot in")+" ("+c_dep2.tostring()+")." + else if (pot[0]==0) + return translate("You must build track in")+" ("+ch3_rail_depot2.a.tostring()+")." + else if (pot[0]==1 && pot[1]==0) + return result = get_tile_message(12, ch3_rail_depot2.a) //translate("You must build the train depot in")+" ("+ch3_rail_depot2.a.tostring()+")." + + local t = tile_x(pos.x, pos.y, pos.z) + local building = t.find_object(mo_building) //Enrutar vehiculos (estacion nr1) - if (pot1==1 && pot2==0){ - if (building && pos.x>=st3_way_lim.a.x && pos.y>=st3_way_lim.a.y && pos.x<=st3_way_lim.b.x && pos.y<=st3_way_lim.b.y){ + if (pot[1]==1 && pot[2]==0){ + if (building && pos.x>=way2_fac2_fac3[0].x && pos.y>=way2_fac2_fac3[0].y && pos.x<=way2_fac2_fac3[1].x && pos.y<=way2_fac2_fac3[1].y){ if (tool_id==4108 && building){ if (stop_flag[0]==0){ stop_flag[0] = 1 return null } else - return translate("Select the other station")+" ("+coord(st4_list[0].x, st4_list[0].y).tostring()+".)" + return translate("Select the other station")+" ("+coord(way2_fac2_fac3[5].x, way2_fac2_fac3[5].y).tostring()+".)" } } else if (tool_id==4108){ if (stop_flag[0]==0) - return format(translate("Select station No.%d"),1)+" ("+coord(st3_list[0].x, st3_list[0].y).tostring()+".)" + return format(translate("Select station No.%d"),1)+" ("+coord(way2_fac2_fac3[0].x, way2_fac2_fac3[0].y).tostring()+".)" } //Enrutar vehiculos (estacion nr2) - if (building && pos.x>=st4_way_lim.a.x && pos.y>=st4_way_lim.a.y && pos.x<=st4_way_lim.b.x && pos.y<=st4_way_lim.b.y){ + if (building && pos.x>=way2_fac2_fac3[4].x && pos.y>=way2_fac2_fac3[4].y && pos.x<=way2_fac2_fac3[5].x && pos.y<=way2_fac2_fac3[5].y){ if (tool_id==4108 && building){ if (stop_flag[0]==1 && stop_flag[1]==0){ stop_flag[1] = 1 return null } if (stop_flag[0]==0) - return translate("Select the other station first")+" ("+coord(st3_list[0].x, st3_list[0].y).tostring()+".)" + return translate("Select the other station first")+" ("+coord(way2_fac2_fac3[0].x, way2_fac2_fac3[0].y).tostring()+".)" else if (stop_flag[0]==1 && stop_flag[1]==1) - return translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep1.tostring()+".)" + return get_tile_message(3, ch3_rail_depot1.a) //translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+ch3_rail_depot1.a.tostring()+".)" } } else if (tool_id==4108){ if (stop_flag[0]==0) - return translate("Select the other station first")+" ("+coord(st3_list[0].x, st3_list[0].y).tostring()+".)" + return translate("Select the other station first")+" ("+coord(way2_fac2_fac3[0].x, way2_fac2_fac3[0].y).tostring()+".)" else if (stop_flag[0]==1 && stop_flag[1]==0) - return format(translate("Select station No.%d"),2)+" ("+coord(st4_list[0].x, st4_list[0].y).tostring()+".)" + return format(translate("Select station No.%d"),2)+" ("+coord(way2_fac2_fac3[5].x, way2_fac2_fac3[5].y).tostring()+".)" else if (stop_flag[0]==1 && stop_flag[1]==1) - return translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep1.tostring()+".)" + return get_tile_message(3, ch3_rail_depot1.a) //translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+ch3_rail_depot1.a.tostring()+".)" } } - if (pot2==1 && pot3==0){ - return translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep1.tostring()+".)" + if (pot[2]==1 && pot[3]==0){ + return get_tile_message(3, ch3_rail_depot1.a) //translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+ch3_rail_depot1.a.tostring()+".)" } break case 8: + local t = tile_x(pos.x, pos.y, pos.z) + local slope = t.get_slope() + local way = t.find_object(mo_way) //Construye tramo de via para el tunel - if (pot0==0){ - if (pos.x>=c_way6_lim.a.x && pos.y<=c_way6_lim.a.y && pos.x<=c_way6_lim.b.x && pos.y>=c_way6_lim.b.y){ + if (pot[0]==0){ + if (pos.x>=c_way3_lim.a.x && pos.y<=c_way3_lim.a.y && pos.x<=c_way3_lim.b.x && pos.y>=c_way3_lim.b.y){ if (tool_id==tool_build_way || tool_id == tool_build_bridge || tool_id == tool_build_tunnel){ - return all_control(result, gl_wt, gl_st, way, ribi, tool_id, pos, r_way.c, name) + return all_control(result, gl_wt, gl_st, tool_id, pos, r_way.c, name) } } - else return translate("Connect the Track here")+" ("+r_way.c.tostring()+")." + else return get_tile_message(11, r_way.c) //translate("Connect the Track here")+" ("+coord3d_to_string(r_way.c)+")." } //Construye un puente - else if (pot0==1 && pot1==0){ - if (pos.x>=c_bway_lim3.a.x && pos.y>=c_bway_lim3.a.y && pos.x<=c_bway_lim3.b.x && pos.y<=c_bway_lim3.b.y){ - if(tool_id==tool_build_way) + else if (pot[0]==1 && pot[1]==0){ + if (pos.x>=c_bridge3_limit.a.x && pos.y>=c_bridge3_limit.a.y && pos.x<=c_bridge3_limit.b.x && pos.y<=c_bridge3_limit.b.y){ + if(tool_id==tool_build_way || tool_id==tool_build_bridge){ return null - if(tool_id==tool_build_bridge){ - if(pos.z==brge3_z) - return null - else - return translate("You must build the bridge here")+" ("+c_brge3.a.tostring()+")." } } + else + return translate("You must build the bridge here")+" ("+bridge3_coords.a.tostring()+")." } //Construye Entrada del tunel - else if (pot1==1 && pot2==0){ + else if (pot[1]==1 && pot[2]==0){ if (tool_id==tool_build_way){ if(t.find_object(mo_bridge)) return null @@ -1837,15 +1716,15 @@ class tutorial.chapter_03 extends basic_chapter //if (pos.x==c_tun_lock.x && pos.y==c_tun_lock.y) //return translate("Press [Ctrl] to build a tunnel entrance here")+" ("+start_tunn.tostring()+".)" - if (pos.x == start_tunn.x && pos.y == start_tunn.y) + if (pos.x == way3_tun_coord[0].x && pos.y == way3_tun_coord[0].y) return null - if (pos.x == end_tunn.x && pos.y == end_tunn.y) + if (pos.x == way3_tun_coord[1].x && pos.y == way3_tun_coord[1].y) return null } } //Conecta los dos extremos del tunel - else if (pot2==1 && pot3==0){ + else if (pot[2]==1 && pot[3]==0){ if (r_way.c==0) return "" local squ_bor = square_x(r_way.c.x, r_way.c.y) local z_bor = squ_bor.get_ground_tile().z @@ -1859,41 +1738,41 @@ class tutorial.chapter_03 extends basic_chapter local max = 1 local count_tunn = count_tunnel(pos, max) if (tool_id==tool_remover){ - if (pos.x>=c_tunn2_lim.a.x && pos.y<=c_tunn2_lim.a.y && pos.x<=c_tunn2_lim.b.x && pos.y>=c_tunn2_lim.b.y){ + if (pos.x>=c_way3_tun_limit.a.x && pos.y<=c_way3_tun_limit.a.y && pos.x<=c_way3_tun_limit.b.x && pos.y>=c_way3_tun_limit.b.y){ //El Tunel ya tiene la altura correcta - if (r_way.c.z+plus == c_tunn2.b.z) { - return all_control(result, gl_wt, gl_st, way, ribi, tool_id, pos, r_way.c, name, plus) + if (r_way.c.z+plus == way3_tun_coord[2].z) { + return all_control(result, gl_wt, gl_st, tool_id, pos, r_way.c, name, plus) } if(!count_tunn && slope==0 && way && way.is_marked()) return null - if(count_tunn && pos.z!=end_lvl_z) return translate("You must use the tool to raise the ground here")+" ("+r_way.c.tostring()+".)" + if(count_tunn && pos.z!=way3_tun_list[way3_tun_list.len()-1].z) return translate("You must use the tool to raise the ground here")+" ("+r_way.c.tostring()+".)" } } if (tool_id==tool_build_tunnel || tool_id==tool_build_way || tool_id== 4099){ - if (pos.x>=c_tunn2_lim.a.x && pos.y<=c_tunn2_lim.a.y && pos.x<=c_tunn2_lim.b.x && pos.y>=c_tunn2_lim.b.y){ + if (pos.x>=c_way3_tun_limit.a.x && pos.y<=c_way3_tun_limit.a.y && pos.x<=c_way3_tun_limit.b.x && pos.y>=c_way3_tun_limit.b.y){ //El Tunel ya tiene la altura correcta - if (r_way.c.z+plus == c_tunn2.b.z) { + if (r_way.c.z+plus == way3_tun_coord[2].z) { //gui.add_message("Z: "+r_way.c.z+plus) - return all_control(result, gl_wt, gl_st, way, ribi, tool_id, pos, r_way.c, name, plus) + return all_control(result, gl_wt, gl_st, tool_id, pos, r_way.c, name, plus) } local dir = dir_1.r local t_r_way = my_tile(r_way.c) local tunn_r_way = t_r_way.find_object(mo_tunnel) if(tunn_r_way){ //Se comprueba el primer tramo despues de la entrada del tunel---------------------------------- - local under = c_tunn2.a.z + local under = way3_tun_coord[0].z result = under_way_check(under, dir) if(result != null){ return result } - local start = c_tunn2.a + local start = way3_tun_coord[0] local max = 3 local new_max = tunnel_get_max(start, pos, max, dir) if(new_max < max){ result = tunnel_build_check(start, pos, under, max, dir) if(result == null){ - return all_control(result, gl_wt, gl_st, way, ribi, tool_id, pos, r_way.c, name, plus) + return all_control(result, gl_wt, gl_st, tool_id, pos, r_way.c, name, plus) } } else{ @@ -1911,7 +1790,7 @@ class tutorial.chapter_03 extends basic_chapter local new_max = tunnel_get_max(start, pos, max, dir) //return new_max if(new_max < max){ - return all_control(result, gl_wt, gl_st, way, ribi, tool_id, pos, r_way.c, name, plus) + return all_control(result, gl_wt, gl_st, tool_id, pos, r_way.c, name, plus) } } else{ @@ -1923,9 +1802,9 @@ class tutorial.chapter_03 extends basic_chapter } //Tunel Con pendientes --------------------------------------------------------------------------------------- if (tool_id == tool_setslope){ - if (pos.x>=c_tunn2_lim.a.x && pos.y<=c_tunn2_lim.a.y && pos.x<=c_tunn2_lim.b.x && pos.y>=c_tunn2_lim.b.y){ + if (pos.x>=c_way3_tun_limit.a.x && pos.y<=c_way3_tun_limit.a.y && pos.x<=c_way3_tun_limit.b.x && pos.y>=c_way3_tun_limit.b.y){ local slp_way = tile_x(r_way.c.x, r_way.c.y, r_way.c.z).get_slope() - local end_z = c_tunn2.b.z + local end_z = way3_tun_coord[2].z if (slp_way == dir_1.s) return translate("The slope is ready.") else if (pos.z < end_z){ @@ -1937,7 +1816,7 @@ class tutorial.chapter_03 extends basic_chapter return null } else if(name == t_name.down){ - return translate("Action not allowed") + return get_message(2) //translate("Action not allowed") } return translate("Only up and down movement in the underground!") } @@ -1947,7 +1826,7 @@ class tutorial.chapter_03 extends basic_chapter return translate("The tunnel is already at the correct level")+" ("+end_z+")." } else{ - return translate("Action not allowed") + return get_message(2) //translate("Action not allowed") } if(slope==0) return translate("Modify the terrain here")+" ("+r_way.c.tostring()+")." } @@ -1955,30 +1834,43 @@ class tutorial.chapter_03 extends basic_chapter } break case 9: - if (pot0==0){ - result = r_way.c != 0? translate("Connect the Track here")+" ("+r_way.c.tostring()+").":result - for(local j=0;j=c_way_lim1[j].a.x && pos.y>=c_way_lim1[j].a.y && pos.x<=c_way_lim1[j].b.x && pos.y<=c_way_lim1[j].b.y){ + local limit_t = [] + if ( way3_cy1_cy6[j].a.x > way3_cy1_cy6[j].b.x || way3_cy1_cy6[j].a.y > way3_cy1_cy6[j].b.y ) { + limit_t.append(way3_cy1_cy6[j].b) + limit_t.append(way3_cy1_cy6[j].a) + } else { + limit_t.append(way3_cy1_cy6[j].a) + limit_t.append(way3_cy1_cy6[j].b) + } + + if(pos.x>=limit_t[0].x && pos.y>=limit_t[0].y && pos.x<=limit_t[1].x && pos.y<=limit_t[1].y) { if(tool_id == tool_build_way){ return null } } - else if (j== c_way_lim1.len()-1){ - result = translate("You are outside the allowed limits!")+" ("+pos.tostring()+")." + else if (j == way3_cy1_cy6.len()-1){ + result = get_tile_message(13, pos) //translate("You are outside the allowed limits!")+" ("+pos.tostring()+")." } break } } return result } - if (pot0==1 && pot1==0){ + if (pot[0]==1 && pot[1]==0){ //Elimina las señales if (tool_id==tool_remover){ if (sign || roadsign){ - for(local j=0;j=c_cate_lim1[j].a.x && pos.y>=c_cate_lim1[j].a.y && pos.x<=c_cate_lim1[j].b.x && pos.y<=c_cate_lim1[j].b.y){ + if (pot[0]==0){ + for(local j=0;j way3_cate_list1[j].b.x || way3_cate_list1[j].a.y > way3_cate_list1[j].b.y ) { + limit_t.append(way3_cate_list1[j].b) + limit_t.append(way3_cate_list1[j].a) + } else { + limit_t.append(way3_cate_list1[j].a) + limit_t.append(way3_cate_list1[j].b) + } - if(tool_id == 4114){ + if(pos.x>=limit_t[0].x && pos.y>=limit_t[0].y && pos.x<=limit_t[1].x && pos.y<=limit_t[1].y) { + if(tool_id == 4114){ return null - } - } - else if (j== c_cate_lim1.len()-1){ - result = translate("Connect the Track here")+" ("+r_way.c.tostring()+")." - } - } - if ((tool_id == 4114)&&(pos.x==c_dep3.x)&&(pos.y==c_dep3.y)) return null + } + } + else if (j== way3_cate_list1.len()-1){ + result = get_tile_message(11, r_way.c) //translate("Connect the Track here")+" ("+r_way.c.tostring()+")." + } + } + if ((tool_id == 4114)&&(pos.x==ch3_rail_depot3.b.x)&&(pos.y==ch3_rail_depot3.b.y)) return null } - else if (pot0==1 && pot1==0){ - if (pos.x>=c_dep3_lim.a.x && pos.y>=c_dep3_lim.a.y && pos.x<=c_dep3_lim.b.x && pos.y<=c_dep3_lim.b.y){ + else if (pot[0]==1 && pot[1]==0){ + local limit_t = [] + if ( ch3_rail_depot3.a.x > ch3_rail_depot3.b.x || ch3_rail_depot3.a.y > ch3_rail_depot3.b.y ) { + limit_t.append(ch3_rail_depot3.b) + limit_t.append(ch3_rail_depot3.a) + } else { + limit_t.append(ch3_rail_depot3.a) + limit_t.append(ch3_rail_depot3.b) + } + + if(pos.x>=limit_t[0].x && pos.y>=limit_t[0].y && pos.x<=limit_t[1].x && pos.y<=limit_t[1].y) { if (tool_id==4114){ return null } } - result = translate("Connect the Track here")+" ("+c_dep3.tostring()+")." + result = get_tile_message(11, r_way.c) //translate("Connect the Track here")+" ("+ch3_rail_depot3.a.tostring()+")." } - else if (pot1==1 && pot2==0){ - if ((pos.x==c_dep3.x)&&(pos.y==c_dep3.y)){ + else if (pot[1]==1 && pot[2]==0){ + if ((pos.x==ch3_rail_depot3.b.x)&&(pos.y==ch3_rail_depot3.b.y)){ if (tool_id==tool_build_depot){ return null } } - result = translate("You must build the train depot in")+" ("+c_dep3.tostring()+")." + result = get_tile_message(12, ch3_rail_depot3.b) //translate("You must build the train depot in")+" ("+ch3_rail_depot3.b.tostring()+")." } break @@ -2057,21 +1966,19 @@ class tutorial.chapter_03 extends basic_chapter if (tool_id==4108){ //gui.add_message(""+st_lim_a.len()+"") - for(local j=0;j=st_lim_a[j].a.x)&&(pos.y>=st_lim_a[j].a.y)&&(pos.x<=st_lim_a[j].b.x)&&(pos.y<=st_lim_a[j].b.y)){ - local c_list = sch_list //Lista de todas las estaciones - local c_dep = c_dep3 //Coordeadas del deposito - local siz = c_list.len() //Numero de paradas - result = translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep.tostring()+")." - return is_stop_allowed_ex(result, siz, c_list, pos, gl_wt) + local check = check_rail_station(ch3_rail_stations[j], 0, pos) + if( check ){ + return is_stop_allowed_ex(ch3_rail_depot3.b, ch3_rail_stations, pos, gl_wt) } else return result } - if ((j+1) == st_lim_a.len()) - return translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep3.tostring()+")." + if ((j+1) == ch3_rail_stations.len()) + return get_tile_message(3, ch3_rail_depot3.b) //translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+ch3_rail_depot3.b.tostring()+")." } return result } @@ -2080,21 +1987,19 @@ class tutorial.chapter_03 extends basic_chapter } if (tool_id == 4096){ if (label && label.get_text()=="X") - return translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." + return get_tile_message(5, pos) //translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." else if (label) return translate("Text label")+" ("+pos.tostring()+")." result = null // Always allow query tool } if (label && label.get_text()=="X") - return translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." + return get_tile_message(5, pos) //translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." return result } function is_schedule_allowed(pl, schedule) { local result=null // null is equivalent to 'allowed' - local nr = schedule.entries.len() - local fac_1 = factory_data.rawget("1") local fac_2 = factory_data.rawget("2") local fac_3 = factory_data.rawget("3") @@ -2104,9 +2009,8 @@ class tutorial.chapter_03 extends basic_chapter local selc = 0 local load = loc1_load local time = loc1_wait - local c_list = [st1_list[0], st2_list[0]] - local siz = c_list.len() - result = set_schedule_list(result, pl, schedule, nr, selc, load, time, c_list, siz) + local c_list = [way2_fac1_fac2[0], way2_fac1_fac2[5]] + result = compare_schedule(result, pl, schedule, selc, load, time, c_list, false) if(result != null) reset_stop_flag() return result @@ -2116,47 +2020,45 @@ class tutorial.chapter_03 extends basic_chapter local selc = 0 local load = loc2_load local time = loc2_wait - local c_list = [st3_list[0], st4_list[0]] - local siz = c_list.len() - result = set_schedule_list(result, pl, schedule, nr, selc, load, time, c_list, siz) + local c_list = [way2_fac2_fac3[0], way2_fac2_fac3[way2_fac2_fac3.len()-1]] + result = compare_schedule(result, pl, schedule, selc, load, time, c_list, false) if(result != null) reset_stop_flag() return result break case 11: - local selc = 0 + local selc = get_waiting_halt(4) local load = loc3_load local time = loc3_wait - local c_list = sch_list - local siz = c_list.len() - local line = true - result = set_schedule_list(result, pl, schedule, nr, selc, load, time, c_list, siz, line) + local c_list = ch3_rail_stations + result = compare_schedule(result, pl, schedule, selc, load, time, c_list, true) if(result == null){ - local line_name = line1_name + local line_name = line3_name update_convoy_schedule(pl, gl_wt, line_name, schedule) } return result break } - return result = translate("Action not allowed") + return get_message(2) //translate("Action not allowed") } function is_convoy_allowed(pl, convoy, depot) { - local result = translate("It is not allowed to start vehicles.") + local result = get_message(3) //translate("It is not allowed to start vehicles.") switch (this.step) { case 5: local wt = gl_wt - if ((depot.x != c_dep1.x)||(depot.y != c_dep1.y)) - return 0 + if ((depot.x != ch3_rail_depot1.b.x)||(depot.y != ch3_rail_depot1.b.y)) + return get_tile_message(10, depot) //"Depot coordinate is incorrect (" + coord3d_to_string(depot) + ")." local cov = 1 - local veh = 6 + local veh = set_train_lenght(1) + 1 local good_list = [good_desc_x(good_alias.wood).get_catg_index()] //Wood local name = loc1_name_obj - local st_tile = st1_list.len() // 3 + local st_tile = loc1_tile // 3 local is_st_tile = true - result = is_convoy_correct(depot,cov,veh,good_list,name, st_tile, is_st_tile) + result = is_convoy_correct(depot, cov, veh, good_list, name, st_tile, is_st_tile) + //gui.add_message("is_convoy_allowed result " + result) if (result!=null){ backward_pot(0) @@ -2164,27 +2066,34 @@ class tutorial.chapter_03 extends basic_chapter return train_result_message(result, translate(name), good, veh, cov, st_tile) } + //gui.add_message("is_convoy_allowed current_cov " + current_cov) + //gui.add_message("is_convoy_allowed ch3_cov_lim1.a " + ch3_cov_lim1.a) + //gui.add_message("is_convoy_allowed ch3_cov_lim1.b " + ch3_cov_lim1.b) if (current_cov>ch3_cov_lim1.a && current_covch3_cov_lim3.a && current_covch3_cov_lim1.a && current_cov way2_fac2_fac3[3].x ) { + t_start.x -= 1 + } else if ( way2_fac2_fac3[2].y < way2_fac2_fac3[3].y ) { + t_start.x += 1 + } else if ( way2_fac2_fac3[2].y > way2_fac2_fac3[3].y ) { + t_start.x -= 1 + } } t_start.remove_object(player_x(1), mo_label) local t = command_x(tool_build_tunnel) @@ -2452,16 +2366,16 @@ class tutorial.chapter_03 extends basic_chapter } //Segundo tramo de rieles - if (pot2==0){ + if (pot[2]==0){ //Outside tramo ---------------------------------------------------------------------- - local t_start = my_tile(coord(c_way5.a.x, c_way5.a.y)) - local t_end = my_tile(label4_lim) + local t_start = my_tile(coord(way2_fac2_fac3[3].x, way2_fac2_fac3[3].y)) + local t_end = my_tile(way2_fac2_fac3[4]) local t = command_x(tool_build_way) local err = t.work(player, t_start, t_end, sc_way_name) //Station tramo ---------------------------------------------------------------------- - t_start = my_tile(label4_lim) - t_end = my_tile(st4_way_lim.b) + t_start = my_tile(way2_fac2_fac3[4]) + t_end = my_tile(way2_fac2_fac3[5]) t_start.remove_object(player_x(1), mo_label) t_end.remove_object(player_x(1), mo_label) @@ -2473,8 +2387,21 @@ class tutorial.chapter_03 extends basic_chapter local passa = good_alias.passa local mail = good_alias.mail //Estaciones de la Fabrica - if (pot3==0){ - for(local j=0;jch3_cov_lim2.a && current_covch3_cov_lim3.a && current_cov[1/2]") } @@ -125,7 +112,7 @@ class tutorial.chapter_04 extends basic_chapter } break case 2: - local c_list = dock_list1 + local c_list = ch4_ship1_halts local txdoc = "" local dock_name = translate("Dock") local ok_tex = translate("OK") @@ -148,35 +135,28 @@ class tutorial.chapter_04 extends basic_chapter break case 5: - local c1 = coord(c1_way.a.x, c1_way.a.y) - local c2 = coord(c1_way.b.x, c1_way.b.y) + local c1 = coord(way4_cannal[0].x, way4_cannal[0].y) + local c2 = coord(way4_cannal[1].x, way4_cannal[1].y) if(!correct_cov){ - local a = 3 - local b = 3 - text = ttextfile("chapter_04/05_"+a+"-"+b+".txt") - text.tx=ttext("["+a+"/"+b+"]") + text = ttextfile("chapter_04/05_3-3.txt") + text.tx=ttext("[3/3]") } - else if (pot0==0){ - local a = 1 - local b = 3 - text = ttextfile("chapter_04/05_"+a+"-"+b+".txt") - text.tx=ttext("["+a+"/"+b+"]") + else if (pot[0]==0){ + text = ttextfile("chapter_04/05_1-3.txt") + text.tx=ttext("[1/3]") } - else if (pot1==0){ - local a = 2 - local b = 3 - text = ttextfile("chapter_04/05_"+a+"-"+b+".txt") - text.tx=ttext("["+a+"/"+b+"]") + else if (pot[1]==0){ + text = ttextfile("chapter_04/05_2-3.txt") + text.tx=ttext("[2/3]") + text.cdock = translate(get_obj_ch4(3)) } - else if (pot2==0){ - local a = 3 - local b = 3 - text = ttextfile("chapter_04/05_"+a+"-"+b+".txt") - text.tx=ttext("["+a+"/"+b+"]") + else if (pot[2]==0){ + text = ttextfile("chapter_04/05_3-3.txt") + text.tx=ttext("[3/3]") } - text.w1 = c1.href(" ("+c1.tostring()+")")+"" - text.w2 = c2.href(" ("+c2.tostring()+")")+"" - text.dock = sch_list2[1].href("("+sch_list2[1].tostring()+")")+"" + text.w1 = c1.href("("+c1.tostring()+")") + text.w2 = c2.href("("+c2.tostring()+")") + text.dock = ch4_ship2_halts[1].href("("+ch4_ship2_halts[1].tostring()+")")+"" //sch_list2 text.all_cov = d2_cnr text.load = ship1_load text.wait = get_wait_time_text(ship1_wait) @@ -184,10 +164,10 @@ class tutorial.chapter_04 extends basic_chapter break case 6: - local list = dock_list2 + local list = ch4_ship3_halts local txdoc = "" - local dock_name = translate("Dock") - local ok_tex = translate("OK") + local dock_name = translate("Dock") + local ok_tex = translate("OK") for(local j=0;j%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) } } - local c = coord(list[0].x, list[0].y) - text.stnam = "1) "+my_tile(c).get_halt().get_name()+" ("+c.tostring()+")" + local c = coord(list[get_waiting_halt(5)].x, list[get_waiting_halt(5)].y) + text.stnam = (get_waiting_halt(5)+1) + ") "+my_tile(c).get_halt().get_name()+" ("+c.tostring()+")" text.list = tx_list text.ship = translate(ship2_name_obj) text.load = ship2_load @@ -228,13 +208,13 @@ class tutorial.chapter_04 extends basic_chapter break } - text.dep1 = c_dep1.href("("+c_dep1.tostring()+")")+"" + text.dep1 = ship_depot.href("("+ship_depot.tostring()+")")+"" text.sh = translate(ship1_name_obj) text.cir = cov_cir text.f1 = fac_1.c.href(""+fac_1.name+" ("+fac_1.c.tostring()+")")+"" text.f3 = fac_2.c.href(""+fac_2.name+" ("+fac_2.c.tostring()+")")+"" text.f4 = fac_3.c.href(""+fac_3.name+" ("+fac_3.c.tostring()+")")+"" - text.tur = tur.href(" ("+tur.tostring()+")")+"" + text.tur = ch4_curiosity.href(" ("+ch4_curiosity.tostring()+")")+"" text.good1 = get_good_data(3, 3) //translate_objects_list.good_oil //text.g1_metric = get_good_data(3, 1) @@ -244,7 +224,6 @@ class tutorial.chapter_04 extends basic_chapter } function is_chapter_completed(pl) { - local percentage=0 save_pot() save_glsw() @@ -252,11 +231,17 @@ class tutorial.chapter_04 extends basic_chapter local fac_2 = factory_data.rawget("5") local fac_3 = factory_data.rawget("6") + persistent.ch_max_steps = 8 + local chapter_step = persistent.step + persistent.ch_max_sub_steps = 0 // count all sub steps + persistent.ch_sub_step = 0 // actual sub step + switch (this.step) { case 1: + persistent.ch_max_sub_steps = 2 local next_mark = false local stop_mark = true - if(pot0==0 || pot1 == 0){ + if(pot[0]==0 || pot[1] == 0){ local list = fac_2.c_list try { next_mark = delay_mark_tile(list) @@ -264,11 +249,12 @@ class tutorial.chapter_04 extends basic_chapter catch(ev) { return 0 } - if(next_mark && pot0 == 1){ - pot1=1 + if(next_mark && pot[0] == 1){ + pot[1]=1 } } - else if (pot2==0 || pot3==0){ + else if (pot[2]==0 || pot[3]==0){ + persistent.ch_sub_step = 1 local list = fac_1.c_list try { next_mark = delay_mark_tile(list) @@ -276,66 +262,69 @@ class tutorial.chapter_04 extends basic_chapter catch(ev) { return 0 } - if(next_mark && pot2 == 1){ - pot3=1 + if(next_mark && pot[2] == 1){ + pot[3]=1 } } - else if (pot3==1 && pot4==0){ + else if (pot[3]==1 && pot[4]==0){ this.next_step() } - return 5 + //return 5 break; case 2: + persistent.ch_max_sub_steps = 0 //Para los Muelles - local siz = dock_list1.len() - local c_list = dock_list1 + local c_list = ch4_ship1_halts local name = translate("Build a Dock here!.") local good = good_alias.goods local label = true - local all_stop = is_stop_building(siz, c_list, name, good, label) + local all_stop = is_stop_building(c_list, name, good, label) if (all_stop) { this.next_step() } - return 5 + //return 5 break; case 3: //Para Astillero - local t1 = my_tile(c_dep1) + local t1 = my_tile(ship_depot) local depot = t1.find_object(mo_depot_water) if (!depot){ - label_x.create(c_dep1, player_x(pl), translate("Build Shipyard here!.")) + label_x.create(ship_depot, pl_unown, translate("Build Shipyard here!.")) } else{ t1.remove_object(player_x(1), mo_label) - pot0=1 + pot[0]=1 } - if (pot1==1){ + if (pot[1]==1){ this.next_step() } - return 10+percentage + //return 10+percentage break case 4: cov_cir = get_convoy_nr((ch4_cov_lim1.a), d1_cnr) - if (cov_cir == d1_cnr){ + if ( cov_cir == d1_cnr ){ reset_stop_flag() this.next_step() } - return 50 + //return 50 break case 5: + persistent.ch_max_sub_steps = 3 + persistent.ch_sub_step = 0 + //Para el canal acuatico - if (pot0==0){ + if (pot[0]==0){ //Inicio del canal - local c_start = coord(c1_way.a.x, c1_way.a.y) + local c_start = coord(way4_cannal[0].x, way4_cannal[0].y) local t_start = my_tile(c_start) local way_start = t_start.find_object(mo_way) if (way_start && way_start.get_desc().get_topspeed()==0){ t_start.mark() - label_x.create(c_start, player_x(1), translate("Build Canal here!.")) + label_x.create(c_start, pl_unown, translate("Build Canal here!.")) } else{ t_start.unmark() @@ -343,20 +332,20 @@ class tutorial.chapter_04 extends basic_chapter } //Final del canal - local c_end = coord(c1_way.b.x, c1_way.b.y) + local c_end = coord(way4_cannal[1].x, way4_cannal[1].y) local t_end = my_tile(c_end) local way_end = t_end.find_object(mo_way) if (way_end && way_end.get_desc().get_topspeed()==0){ t_end.mark() - label_x.create(c_end, player_x(1), translate("Build Canal here!.")) + label_x.create(c_end, pl_unown, translate("Build Canal here!.")) } else{ t_end.unmark() t_end.remove_object(player_x(1), mo_label) } - local coora = {x = c1_way.a.x, y = c1_way.a.y, z = c1_way.a.z } - local coorb = {x = c1_way.b.x, y = c1_way.b.y, z = c1_way.b.z } + local coora = {x = way4_cannal[0].x, y = way4_cannal[0].y, z = way4_cannal[0].z } + local coorb = {x = way4_cannal[1].x, y = way4_cannal[1].y, z = way4_cannal[1].z } local obj = false local dir = 6 @@ -366,266 +355,258 @@ class tutorial.chapter_04 extends basic_chapter local fullway = update_way(coora, coorb, vel_min, wt) //test if (fullway.result){ - pot0=1 + pot[0]=1 } else c_way = fullway.c } //Para el cuarto muelle - else if (pot0==1 && pot1==0){ - local t = my_tile(sch_list2[1]) + else if (pot[0]==1 && pot[1]==0){ + persistent.ch_sub_step = 2 + local t = my_tile(ch4_ship2_halts[1]) //sch_list2 local dock4 = t.find_object(mo_building) public_label(t, translate("Build a Dock here!.")) if(dock4){ - if(is_station_build(0, sch_list2[1], good_alias.goods)==null){ + if(is_station_build(0, ch4_ship2_halts[1], good_alias.goods)==null){ //sch_list2 t.remove_object(player_x(1), mo_label) - pot1=1 + pot[1]=1 } } } //Vehiculos en circulacion - else if (pot1==1 && pot2==0){ + else if (pot[1]==1 && pot[2]==0){ + persistent.ch_sub_step = 1 cov_cir = get_convoy_nr((ch4_cov_lim2.a ), d2_cnr) if (cov_cir==d2_cnr) - pot2=1 + pot[2]=1 } - if (pot2==1 && pot3==0){ + if (pot[2]==1 && pot[3]==0){ reset_stop_flag() this.next_step() } - return 65 + //return 65 break case 6: //Para los Muelles - local siz = dock_list2.len() - local c_list = dock_list2 + local c_list = ch4_ship3_halts local name = translate("Build a Dock here!.") local good = good_alias.passa local label = true - local all_stop = is_stop_building(siz, c_list, name, good, label) + local all_stop = is_stop_building(c_list, name, good, label) if (all_stop) { this.next_step() } - return 0 + //return 0 break case 7: - local c_dep = this.my_tile(c_dep1) - local line_name = line1_name - set_convoy_schedule(pl,c_dep, gl_wt, line_name) + local c_dep = this.my_tile(ship_depot) + local line_name = line1_name + set_convoy_schedule(pl, c_dep, gl_wt, line_name) if(current_cov == ch4_cov_lim3.b){ this.next_step() } - return 0 + //return 0 break case 8: reset_stop_flag() this.next_step() - return 0 + //return 0 break case 9: this.step=1 persistent.step=1 persistent.status.step = 1 - return 100 + //return 100 break } - percentage=(this.step-1)+1 + local percentage = chapter_percentage(persistent.ch_max_steps, chapter_step, persistent.ch_max_sub_steps, persistent.ch_sub_step) return percentage } function is_work_allowed_here(pl, tool_id, name, pos, tool) { - glpos = coord3d(pos.x, pos.y, pos.z) - local t = tile_x(pos.x, pos.y, pos.z) - local ribi = 0 - local wt = 0 - local slope = t.get_slope() - local way = t.find_object(mo_way) - local bridge = t.find_object(mo_bridge) - local label = t.find_object(mo_label) - local building = t.find_object(mo_building) - local sign = t.find_object(mo_signal) - local roadsign = t.find_object(mo_roadsign) + glpos = pos + //local t = tile_x(pos.x, pos.y, pos.z) + //local ribi = 0 + //local wt = 0 + //local slope = t.get_slope() + //local way = t.find_object(mo_way) + //local bridge = t.find_object(mo_bridge) + //local building = t.find_object(mo_building) + //local sign = t.find_object(mo_signal) + //local roadsign = t.find_object(mo_roadsign) local fac_1 = factory_data.rawget("4") local fac_2 = factory_data.rawget("5") local fac_3 = factory_data.rawget("6") - if (way){ + /*if (way){ wt = way.get_waytype() if (tool_id!=4111) ribi = way.get_dirs() //if (!t.has_way(gl_wt)) //ribi = 0 - } - local result = translate("Action not allowed") // null is equivalent to 'allowed' + }*/ + local result = get_message(2) //translate("Action not allowed") // null is equivalent to 'allowed' //glbpos = coord3d(pos.x,pos.y,pos.y) gltool = tool_id switch (this.step) { case 1: - if (tool_id == 4096){ - if (pot0==0){ - local list = fac_2.c_list - foreach(t in list){ - if(pos.x == t.x && pos.y == t.y) { - pot0 = 1 - return null - } + if ( tool_id == 4096 ) { + if ( pot[0] == 0 ) { + if ( search_tile_in_tiles(fac_2.c_list, pos) ) { + pot[0] = 1 + return null } } - else if (pot1==1){ - local list = fac_1.c_list - foreach(t in list){ - if(pos.x == t.x && pos.y == t.y) { - pot2 = 1 - return null - } + else if ( pot[1] == 1 ) { + if ( search_tile_in_tiles(fac_1.c_list, pos) ) { + pot[2] = 1 + return null } } } else - return translate("You must use the inspection tool")+" ("+pos.tostring()+")." + return tile_message(9, pos) //translate("You must use the inspection tool")+" ("+pos.tostring()+")." break; //Construyendo los Muelles case 2: - local c_list = dock_list1 - local good = good_alias.goods - if((tool_id != 4096)) - return is_dock_build(pos, tool_id, c_list, good) + if ( tool_id == tool_build_station ) { + // check selected halt accept goods + local s = check_select_station(name, wt_water, good_alias.goods) + if ( s != null ) return s + + return is_dock_build(pos, tool_id, ch4_ship1_halts, good_alias.goods) + } else if ( tool_id == 4096 ) { + return null + } break case 3: //Primer Astillero - if (pos.x==c_dep1.x && pos.y==c_dep1.y){ - if (pot0==0){ - if (tool_id == tool_build_depot){ - pot0=1 + if ( pos.x == ship_depot.x && pos.y == ship_depot.y ) { + if ( pot[0] == 0) { + if (tool_id == tool_build_depot) { + pot[0]=1 return null } } - else if (pot0==1 && pot1==0){ - if (tool_id == 4096){ - pot1=1 + else if (pot[0] == 1 && pot[1] == 0) { + if (tool_id == 4096) { + pot[1]=1 return null } } } - else if (pot0==0) - result = translate("Place the shipyard here")+" ("+c_dep1.tostring()+")." + else if (pot[0]==0) + result = get_tile_message(14, ship_depot) //translate("Place the shipyard here")+" ("+ship_depot.tostring()+")." break //Enrutar barcos case 4: - if (tool_id==4108){ - local c_list = sch_list1 //[sch_list1[1], sch_list1[0]] //Lista de todas las paradas de autobus - local c_dep = c_dep1 //Coordeadas del deposito - local siz = c_list.len() //Numero de paradas - result = translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep.tostring()+")." - return is_stop_allowed_ex(result, siz, c_list, pos, gl_wt) + if ( tool_id == 4108 ) { + local c_list = [coord_fac_4] //Lista de todas las paradas de autobus + c_list.append(ch4_ship1_halts[0]) + return is_stop_allowed_ex(ship_depot, c_list, pos, gl_wt) } break case 5: - if (pot0==0){ - if(pos.x==c1_way.a.x && pos.y==c1_way.a.y){ - if(tool_id==tool_remove_way || tool_id==4097) + if (pot[0]==0){ + if ( pos.x == way4_cannal[0].x && pos.y == way4_cannal[0].y ) { + if ( tool_id == tool_remove_way || tool_id == 4097 ) return result - } - if (pos.x>=c1_way_lim.a.x && pos.y>=c1_way_lim.a.y && pos.x<=c1_way_lim.b.x && pos.y<=c1_way_lim.b.y){ - if (tool_id == tool_build_way && way && wt == wt_water) + } + if (pos.x >= c_cannel_lim.a.x && pos.y >= c_cannel_lim.a.y && pos.x <= c_cannel_lim.b.x && pos.y <= c_cannel_lim.b.y) { + local way = tile_x(pos.x, pos.y, pos.z).find_object(mo_way) + if (tool_id == tool_build_way && way && way.get_waytype() == wt_water) return null } } //Cuarto muelle - else if(pot0==1 && pot1==0){ - if(my_tile(sch_list2[1]).find_object(mo_building)){ + else if(pot[0]==1 && pot[1]==0){ + if ( my_tile(ch4_ship2_halts[1]).find_object(mo_building) ) { if (tool_id==4097) return null - if (is_station_build(0, sch_list2[1], good_alias.goods)!=null) - return format(translate("Dock No.%d must accept goods"),4)+" ("+sch_list2[1].tostring()+")." + if ( is_station_build(0, ch4_ship2_halts[1], good_alias.goods) != null ) + return get_tiledata_message(4, 4, ch4_ship2_halts[1]) //format(translate("Dock No.%d must accept goods"),4)+" ("+ch4_ship2_halts[1].tostring()+")." } - if(pos.x==sch_list2[1].x && pos.y==sch_list2[1].y){ - if(tool_id==tool_build_station){ + if ( pos.x == ch4_ship2_halts[1].x && pos.y == ch4_ship2_halts[1].y ) { + if ( tool_id == tool_build_station ) { return null } } } //Enrutar Barcos - else if (pot1==1 && pot2==0){ - if (tool_id==4108){ - local c_list = sch_list2 //Lista de todas las paradas de autobus - local c_dep = c_dep1 //Coordeadas del deposito - local siz = c_list.len() //Numero de paradas - result = translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep.tostring()+")." - return is_stop_allowed_ex(result, siz, c_list, pos, gl_wt) + else if ( pot[1] == 1 && pot[2] == 0 ) { + if ( tool_id == 4108 ) { + return is_stop_allowed_ex(ship_depot, ch4_ship2_halts, pos, gl_wt) } } break case 6: - local c_list = dock_list2 - local good = good_alias.passa - if((tool_id != 4096)) - return is_dock_build(pos, tool_id, c_list, good) + if( tool_id == tool_build_station ) { + // check selected halt accept passenger + local s = check_select_station(name, wt_water, good_alias.passa) + if ( s != null ) return s + return is_dock_build(pos, tool_id, ch4_ship3_halts, good_alias.passa) + } else if ( tool_id == 4096 ) { + return null + } break case 7: - if (tool_id==4108){ - local c_list = sch_list3 //Lista de todas las paradas de autobus - local c_dep = c_dep1 //Coordeadas del deposito - local siz = c_list.len()//Numero de paradas - result = translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep.tostring()+")." - return is_stop_allowed_ex(result, siz, c_list, pos, gl_wt) + if ( tool_id == 4108 ) { + return is_stop_allowed_ex(ship_depot, ch4_schedule_line3, pos, gl_wt) } break } + + local label = tile_x(pos.x, pos.y, pos.z).find_object(mo_label) if (tool_id == 4096){ - if (label && label.get_text()=="X") - return translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." + if ( label && label.get_text() == "X" ) + return get_tile_message(5, pos) //translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." else if (label) return translate("Text label")+" ("+pos.tostring()+")." result = null // Always allow query tool } - if (label && label.get_text()=="X") - return translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." + if ( label && label.get_text() == "X" ) + return get_tile_message(5, pos) //translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." return result } function is_schedule_allowed(pl, schedule) { local result=null // null is equivalent to 'allowed' - local nr = schedule.entries.len() switch (this.step) { case 4: local selc = 0 local load = ship1_load local time = ship1_wait - local c_list = sch_list1 //[sch_list1[1], sch_list1[0]] - local siz = c_list.len() - return set_schedule_list(result, pl, schedule, nr, selc, load, time, c_list, siz) + local c_list = [coord_fac_4] + c_list.append(ch4_ship1_halts[0]) + return compare_schedule(result, pl, schedule, selc, load, time, c_list, false) break case 5: local selc = 0 local load = ship1_load local time = ship1_wait - local c_list = sch_list2 - local siz = c_list.len() - return set_schedule_list(result, pl, schedule, nr, selc, load, time, c_list, siz) + local c_list = ch4_ship2_halts //sch_list2 + return compare_schedule(result, pl, schedule, selc, load, time, c_list, false) break case 7: - local selc = 0 + local selc = get_waiting_halt(5) local load = ship2_load local time = ship2_wait - local c_list = sch_list3 - local siz = c_list.len() - local line = true - result = set_schedule_list(result, pl, schedule, nr, selc, load, time, c_list, siz, line) + local c_list = ch4_schedule_line3 //sch_list3 + return compare_schedule(result, pl, schedule, selc, load, time, c_list, true) if(result == null){ local line_name = line1_name update_convoy_schedule(pl, gl_wt, line_name, schedule) @@ -633,7 +614,7 @@ class tutorial.chapter_04 extends basic_chapter return result break } - return translate("Action not allowed") + return get_message(2) //translate("Action not allowed") } function is_convoy_allowed(pl, convoy, depot) @@ -642,8 +623,8 @@ class tutorial.chapter_04 extends basic_chapter local wt = gl_wt switch (this.step) { case 4: - if ((depot.x != c_dep1.x)||(depot.y != c_dep1.y)) - return translate("You must select the deposit located in")+" ("+c_dep1.tostring()+")." + if ((depot.x != ship_depot.x)||(depot.y != ship_depot.y)) + return get_tile_message(15, ship_depot) //translate("You must select the deposit located in")+" ("+ship_depot.tostring()+")." local cov = d1_cnr local in_dep = true local veh = 1 @@ -654,7 +635,7 @@ class tutorial.chapter_04 extends basic_chapter //Para arracar varios vehiculos local id_start = ch4_cov_lim1.a local id_end = ch4_cov_lim1.b - local cir_nr = get_convoy_number_exp(sch_list1[1], depot, id_start, id_end) + local cir_nr = get_convoy_number_exp(ch4_ship1_halts[0], depot, id_start, id_end) cov -= cir_nr result = is_convoy_correct(depot,cov,veh,good_list,name,st_tile) @@ -668,15 +649,16 @@ class tutorial.chapter_04 extends basic_chapter local selc = 0 local load = ship1_load local time = ship1_wait - local c_list = sch_list1 + local c_list = [coord_fac_4] + c_list.append(ch4_ship1_halts[0]) local siz = c_list.len() - return set_schedule_convoy(result, pl, cov, convoy, selc, load, time, c_list, siz) + return compare_schedule_convoy(result, pl, cov, convoy, selc, load, time, c_list, siz) } break case 5: - if ((depot.x != c_dep1.x)||(depot.y != c_dep1.y)) - return translate("You must select the deposit located in")+" ("+c_dep1.tostring()+")." + if ((depot.x != ship_depot.x)||(depot.y != ship_depot.y)) + return get_tile_message(15, ship_depot) //translate("You must select the deposit located in")+" ("+ship_depot.tostring()+")." local cov = d2_cnr local in_dep = true local veh = 1 @@ -687,7 +669,7 @@ class tutorial.chapter_04 extends basic_chapter //Para arracar varios vehiculos local id_start = ch4_cov_lim2.a local id_end = ch4_cov_lim2.b - local cir_nr = get_convoy_number_exp(sch_list2[1], depot, id_start, id_end) + local cir_nr = get_convoy_number_exp(ch4_ship2_halts[1], depot, id_start, id_end) cov -= cir_nr result = is_convoy_correct(depot,cov,veh,good_list,name,st_tile) @@ -699,14 +681,14 @@ class tutorial.chapter_04 extends basic_chapter local selc = 0 local load = ship1_load local time = ship1_wait - local c_list = sch_list2 + local c_list = ch4_ship2_halts local siz = c_list.len() - return set_schedule_convoy(result, pl, cov, convoy, selc, load, time, c_list, siz) + return compare_schedule_convoy(result, pl, cov, convoy, selc, load, time, c_list, siz) } break case 7: - if ((depot.x != c_dep1.x)||(depot.y != c_dep1.y)) - return translate("You must select the deposit located in")+" ("+c_dep1.tostring()+")." + if ((depot.x != ship_depot.x)||(depot.y != ship_depot.y)) + return get_tile_message(15, ship_depot) //translate("You must select the deposit located in")+" ("+ship_depot.tostring()+")." local cov = 1 local veh = 1 local good_list = [good_desc_x(good_alias.passa).get_catg_index()] //Passengers @@ -720,16 +702,16 @@ class tutorial.chapter_04 extends basic_chapter return ship_result_message(result, translate(name), good, veh, cov) } if (current_cov>ch4_cov_lim3.a && current_cov ch4_cov_lim1.a && current_cov< ch4_cov_lim1.b){ local sched = schedule_x(gl_wt, []) - local t_list = is_water_entry(sch_list1) + local c_list = [coord_fac_4] //Lista de todas las paradas de autobus + c_list.append(ch4_ship1_halts[0]) + + local t_list = is_water_entry(c_list) for(local j =0;j ch4_cov_lim2.a && current_cov< ch4_cov_lim2.b){ local player = player_x(pl) - local c_depot = my_tile(c_dep1) + local c_depot = my_tile(ship_depot) comm_destroy_convoy(player, c_depot) // Limpia los vehiculos del deposito local depot = depot_x(c_depot.x, c_depot.y, c_depot.z) - local t_list = is_water_entry(sch_list2) + local t_list = is_water_entry(ch4_ship2_halts) local sched = schedule_x(gl_wt, []) sched.entries.append(schedule_entry_x(t_list[0], ship1_load, ship1_wait)) sched.entries.append(schedule_entry_x(t_list[1], 0, 0)) - local c_line = comm_get_line(player, gl_wt, sched) + local c_line = comm_get_line(player, gl_wt, sched, line2_name) local good_nr = good_desc_x(good_alias.gas).get_catg_index() //Fuels local name = ship1_name_obj @@ -881,7 +866,7 @@ class tutorial.chapter_04 extends basic_chapter break; case 6: - local t_dep = my_tile(c_dep1) + local t_dep = my_tile(ship_depot) local depot = t_dep.find_object(mo_depot_water) if (!depot){ @@ -889,7 +874,7 @@ class tutorial.chapter_04 extends basic_chapter local err = t.work(player_x(pl), t_dep, sc_dep_name) } //Para los muelles Pasajeros - local c_list = dock_list2 + local c_list = ch4_ship3_halts local name = sc_dock_name3 for(local j =0;j ch4_cov_lim3.a && current_cov< ch4_cov_lim3.b){ - local c_depot = my_tile(c_dep1) + local c_depot = my_tile(ship_depot) comm_destroy_convoy(player, c_depot) // Limpia los vehiculos del deposito local depot = depot_x(c_depot.x, c_depot.y, c_depot.z) local sched = schedule_x(gl_wt, []) - local t_list = is_water_entry(sch_list3) + local t_list = is_water_entry(ch4_schedule_line3) for(local j =0;j%s %d ", trf_name, j+1) + transf_list[j].href("("+transf_list[j].tostring()+")") + "
" + for(local j=0;j%s %d ", trf_name, j+1) + way5_power[j].href("("+coord3d_to_string(way5_power[j])+")") + "
" } else { - tran_tx +=format("%s %d ",trf_name ,j+1)+"("+transf_list[j].tostring()+") "+ok_tx+"
" + tran_tx +=format("%s %d ",trf_name ,j+1)+"("+coord3d_to_string(way5_power[j])+") "+ok_tx+"
" } } text.tran = tran_tx } - else if (pot0==1 && pot1==0){ + else if (pot[0]==1 && pot[1]==0){ text = ttextfile("chapter_05/03_2-2.txt") text.tx="[2/2]" - text.powerline_tool = translate(get_obj_ch5(3)) // tool powerline + text.powerline_tool = translate(sc_power_name) // tool powerline text.toolbar = toolbar local tran_tx = "" local f_list = fab_list for(local j=0;j%s ",translate(f_list[j].name)) + f_list[j].c.href("("+f_list[j].c.tostring()+")") + "
" } else { @@ -212,31 +193,42 @@ class tutorial.chapter_05 extends basic_chapter } break case 4: - if (pot0==1 && pot1==0){ + if (pot[0]==1 && pot[1]==0){ text = ttextfile("chapter_05/04_1-3.txt") text.tx="[1/3]" - text.toolbar = toolbar + + // set image for button by different in paksets + text.img_road_menu = get_gui_img("road_halts") + text.img_post_menu = get_gui_img("post_menu") + + //check_post_extension(city1_post_halts) + text.toolbar_extension = translate_objects_list.tools_mail_extension + text.toolbar_halt = translate_objects_list.tools_road_stations + local st_tx = "" - local list = obj_list1 //Lista de build - local siz = list.len() - for(local j=0;j%d %s ", j+1, name) + list[j].c.href("("+list[j].c.tostring()+")")+"
" + local list = city1_post_halts //extensions_tiles //Lista de build + for ( local j = 0; j < list.len(); j++ ) { + //local c = coord(c_list[j].x, c_list[j].y) + local tile = my_tile(list[j]) + local st_halt = tile.get_halt() + //local name = list[j].name == ""? get_good_text(list[j].good) : translate(list[j].name) + local name = st_halt.get_name() //translate(get_obj_ch5(6)) + if ( glsw[j] == 0 ) { + st_tx +=format("%s: %s ", translate("Stop"), name) + list[j].href("("+list[j].tostring()+")")+"
" } else { - st_tx +=format("%d %s ", j+1, name)+"("+list[j].c.tostring()+")"+ok_tx+"
" + st_tx +=format("%s: %s ", translate("Stop"), name)+"("+list[j].tostring()+")"+ok_tx+"
" } } text.st = st_tx } - else if (pot1==1 && pot2==0 || (current_cov> ch5_cov_lim2.a && current_cov< ch5_cov_lim2.b)){ + else if (pot[1]==1 && pot[2]==0 || (current_cov> ch5_cov_lim2.a && current_cov< ch5_cov_lim2.b)){ text = ttextfile("chapter_05/04_2-3.txt") text.tx = "[2/3]" local list_tx = "" - local c_list = sch_list2 - local siz = c_list.len() - for (local j=0;j%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) } } - local c = coord(c_list[0].x, c_list[0].y) + + if ( pot[1]==1 ) { + new_set_waiting_halt(city1_post_halts) + } + local c = coord(c_list[veh2_waiting_halt].x, c_list[veh2_waiting_halt].y) local tile = my_tile(c) - text.stnam = "1) "+tile.get_halt().get_name()+" ("+c.tostring()+")" + text.stnam = (veh2_waiting_halt+1) + ") "+tile.get_halt().get_name()+" ("+c.tostring()+")" text.list = list_tx - text.dep = c_dep2.href("("+c_dep2.tostring()+")") + text.dep = city1_road_depot.href("("+city1_road_depot.tostring()+")") text.veh = translate(veh2_obj) text.all_cov = d2_cnr text.cir = cov_cir text.load = veh2_load text.wait = get_wait_time_text(veh2_wait) - text.nr = siz + text.nr = c_list.len() } - else if (pot2==1 && pot3==0 || (current_cov> ch5_cov_lim3.a && current_cov< ch5_cov_lim3.b)){ + else if (pot[2]==1 && pot[3]==0 || (current_cov> ch5_cov_lim3.a && current_cov< ch5_cov_lim3.b)){ text = ttextfile("chapter_05/04_3-3.txt") text.tx = "[3/3]" local list_tx = "" - local c_list = sch_list3 + local c_list = ch5_post_ship_halts local siz = c_list.len() for (local j=0;j%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) } } - local c = coord(c_list[0].x, c_list[0].y) + local c = coord(c_list[get_waiting_halt(10)].x, c_list[get_waiting_halt(10)].y) local tile = my_tile(c) - text.stnam = "1) "+tile.get_halt().get_name()+" ("+c.tostring()+")" + text.stnam = (get_waiting_halt(10)+1) + ") "+tile.get_halt().get_name()+" ("+c.tostring()+")" text.list = list_tx - text.dep = c_dep3.href("("+c_dep3.tostring()+")") + text.dep = ship_depot.href("("+ship_depot.tostring()+")") text.ship = translate(veh3_obj) text.load = veh3_load text.wait = get_wait_time_text(veh3_wait) text.nr = siz } break - case 5: - - break - case 6: - - break - case 7: - break - - case 8: - break - - case 9: - break } text.f1 = fab_list[0].c.href(""+fab_list[0].name+" ("+fab_list[0].c.tostring()+")")+"" @@ -326,7 +308,6 @@ class tutorial.chapter_05 extends basic_chapter } function is_chapter_completed(pl) { - local percentage=0 save_glsw() save_pot() @@ -337,23 +318,28 @@ class tutorial.chapter_05 extends basic_chapter factory_data.rawget("8") ] + persistent.ch_max_steps = 4 + local chapter_step = persistent.step + persistent.ch_max_sub_steps = 0 // count all sub steps + persistent.ch_sub_step = 0 // actual sub step + switch (this.step) { case 1: - if(pot0==1){ + if(pot[0]==1){ //Creea un cuadro label local opt = 0 local del = false local text = "X" - label_bord(c_way_lim1.a, c_way_lim1.b, opt, del, text) + label_bord(way5_fac7_fac8_lim.a, way5_fac7_fac8_lim.b, opt, del, text) this.next_step() } - return 0 - break; + //return 0 + break; case 2: - if (pot0==0){ - local coora = coord3d(c_way1.a.x,c_way1.a.y,c_way1.a.z) - local coorb = coord3d(c_way1.b.x,c_way1.b.y,c_way1.b.z) + if (pot[0]==0){ + local coora = coord3d(way5_fac7_fac8[0].x,way5_fac7_fac8[0].y,way5_fac7_fac8[0].z) + local coorb = coord3d(way5_fac7_fac8[1].x,way5_fac7_fac8[1].y,way5_fac7_fac8[1].z) local t_start = tile_x(coora.x,coora.y,coora.z) local t_end = tile_x(coorb.x,coorb.y,coorb.z) @@ -363,7 +349,7 @@ class tutorial.chapter_05 extends basic_chapter if(label.get_text()== "X") t_start.remove_object(player_x(1), mo_label) - label_x.create(t_start, player_x(pl), translate("Place the Road here!.")) + label_x.create(t_start, pl_unown, translate("Place the Road here!.")) } else t_start.remove_object(player_x(1), mo_label) @@ -372,42 +358,41 @@ class tutorial.chapter_05 extends basic_chapter if(label.get_text()== "X") t_end.remove_object(player_x(1), mo_label) - label_x.create(t_end, player_x(pl), translate("Place the Road here!.")) + label_x.create(t_end, pl_unown, translate("Place the Road here!.")) } else t_end.remove_object(player_x(1), mo_label) //Comprueba la conexion de la via local obj = false - local dir = c_way1.dir + local dir = 2//way5_fac7_fac8[0].dir local r_way = get_fullway(coora, coorb, dir, obj) - if (r_way.r){ + if (test_select_way(way5_fac7_fac8[1], way5_fac7_fac8[0], wt_road)){ //elimina el cuadro label local opt = 0 local del = true local text = "X" - label_bord(c_way_lim1.a, c_way_lim1.b, opt, del, text) + label_bord(way5_fac7_fac8_lim.a, way5_fac7_fac8_lim.b, opt, del, text) - pot0=1 - return 10 + pot[0]=1 + //return 10 } } - else if (pot0==1 && pot1==0){ - local siz = sch_list1.len() - local c_list = sch_list1 + else if (pot[0]==1 && pot[1]==0){ + local c_list = way5_fac7_fac8 local name = translate("Place Stop here!.") local load = good_alias.goods - local all_stop = is_stop_building(siz, c_list, name, load) + local all_stop = is_stop_building(c_list, name, load) if (all_stop){ reset_glsw() - pot1=1 + pot[1]=1 } } - else if (pot1==1 && pot2==0){ - local tile = my_tile(c_dep1_lim.a) + else if (pot[1]==1 && pot[2]==0){ + local tile = my_tile(ch5_road_depot.a) if(!tile.find_object(mo_way)){ - label_x.create(c_dep1_lim.a, player_x(pl), translate("Place the Road here!.")) + label_x.create(ch5_road_depot.a, pl_unown, translate("Place the Road here!.")) } else { if (!tile.find_object(mo_depot_road)){ @@ -416,23 +401,24 @@ class tutorial.chapter_05 extends basic_chapter } else{ tile.remove_object(player_x(1), mo_label) - pot2=1 + pot[2]=1 } } } - else if (pot2==1 && pot3==0){ + else if (pot[2]==1 && pot[3]==0){ cov_cir = get_convoy_nr((ch5_cov_lim1.a), d1_cnr) if (cov_cir == d1_cnr){ this.next_step() } } - return 0 - break; + //return 0 + break; case 3: - if (pot0==0){ - for(local j=0;j= ch5_cov_lim2.b){ sch_cov_correct = false - pot2=1 + pot[2]=1 } - } - if (pot2==1 && pot3==0){ - local c_dep = this.my_tile(c_dep3) + } + if (pot[2]==1 && pot[3]==0){ + persistent.ch_sub_step = 1 + local c_dep = this.my_tile(ship_depot) local depot = depot_x(c_dep.x, c_dep.y, c_dep.z) local cov_list = depot.get_convoy_list() //Lista de vehiculos en el deposito local convoy = convoy_x(gcov_id) @@ -556,33 +563,33 @@ class tutorial.chapter_05 extends basic_chapter this.next_step() } } - return 80 + //return 80 break case 5: this.step=1 persistent.step =1 persistent.status.step = 1 - return 100 + //return 100 break } - percentage=(this.step-1)+1 + local percentage = chapter_percentage(persistent.ch_max_steps, chapter_step, persistent.ch_max_sub_steps, persistent.ch_sub_step) return percentage } function is_work_allowed_here(pl, tool_id, name, pos, tool) { //return tool_id glpos = coord3d(pos.x, pos.y, pos.z) - local t = tile_x(pos.x, pos.y, pos.z) - local ribi = 0 - local wt = 0 - local slope = t.get_slope() - local way = t.find_object(mo_way) - local powerline = t.find_object(mo_powerline) - local bridge = t.find_object(mo_bridge) - local label = t.find_object(mo_label) - local building = t.find_object(mo_building) - local sign = t.find_object(mo_signal) - local roadsign = t.find_object(mo_roadsign) + //local t = tile_x(pos.x, pos.y, pos.z) + //local ribi = 0 + //local wt = 0 + //local slope = t.get_slope() + //local way = t.find_object(mo_way) + //local powerline = t.find_object(mo_powerline) + //local bridge = t.find_object(mo_bridge) + //local label = t.find_object(mo_label) + //local building = t.find_object(mo_building) + //local sign = t.find_object(mo_signal) + //local roadsign = t.find_object(mo_roadsign) /*if (way){ wt = way.get_waytype() if (tool_id!=4111) @@ -590,6 +597,13 @@ class tutorial.chapter_05 extends basic_chapter if (!t.has_way(gl_wt)) ribi = 0 }*/ + + local label = null + local st_nr = [2, 3] + if ( st_nr.find(this.step) ) { + label = tile_x(pos.x, pos.y, pos.z).find_object(mo_label) + } + local fab_list = [ factory_data.rawget("5"), factory_data.rawget("3"), @@ -597,7 +611,8 @@ class tutorial.chapter_05 extends basic_chapter factory_data.rawget("8") ] - local result = translate("Action not allowed") // null is equivalent to 'allowed' + local result = get_message(2) //translate("Action not allowed") // null is equivalent to 'allowed' + switch (this.step) { case 1: if (tool_id == 4096){ @@ -606,7 +621,7 @@ class tutorial.chapter_05 extends basic_chapter local t_list = fab_list[j].c_list foreach(t in t_list){ if(pos.x == t.x && pos.y == t.y){ - pot0=1 + pot[0]=1 } } } @@ -614,198 +629,227 @@ class tutorial.chapter_05 extends basic_chapter break; case 2: - if(pot0==0){ - if(pos.x>=c_way_lim1.a.x && pos.y>=c_way_lim1.a.y && pos.x<=c_way_lim1.b.x && pos.y<=c_way_lim1.b.y){ + local way = tile_x(pos.x, pos.y, pos.z).find_object(mo_way) + if(pot[0]==0){ + if(pos.x>=way5_fac7_fac8_lim.a.x && pos.y>=way5_fac7_fac8_lim.a.y && pos.x<=way5_fac7_fac8_lim.b.x && pos.y<=way5_fac7_fac8_lim.b.y){ if (!way && label && label.get_text()=="X"){ - return translate("Indicates the limits for using construction tools")+" ( "+pos.tostring()+")." + return get_tile_message(5, pos) //translate("Indicates the limits for using construction tools")+" ( "+pos.tostring()+")." } - local label = tile_x(r_way.c.x, r_way.c.y, r_way.c.z).find_object(mo_label) - if(label){ - if(tool_id==tool_build_way || tool_id==4113 || tool_id==tool_remover) + + if( tile_x(r_way.c.x, r_way.c.y, r_way.c.z).find_object(mo_label) ){ + if(tool_id == tool_build_way || tool_id == 4113 || tool_id == tool_remover) return null } - else return all_control(result, wt_road, st_flat, way, ribi, tool_id, pos, r_way.c, name) + else return all_control(result, wt_road, st_flat, tool_id, pos, r_way.c, name) } } - else if(pot0==1 && pot1==0){ - for(local j=0;j=c_dep1_lim.a.x && pos.y>=c_dep1_lim.a.y && pos.x<=c_dep1_lim.b.x && pos.y<=c_dep1_lim.b.y){ + else if(pot[1]==1 && pot[2]==0){ + if(pos.x>=ch5_road_depot.a.x && pos.y>=ch5_road_depot.a.y && pos.x<=ch5_road_depot.b.x && pos.y<=ch5_road_depot.b.y){ if(tool_id==tool_build_way || tool_id==tool_build_depot){ return null } } } - else if(pot2==1 && pot3==0){ + else if(pot[2]==1 && pot[3]==0){ if (tool_id==4108) { - local c_list = sch_list1 //Lista de todas las paradas - local c_dep = c_dep1 //Coordeadas del deposito - local nr = c_list.len() //Numero de paradas - result = translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep.tostring()+")." - return is_stop_allowed(result, nr, c_list, pos) + return is_stop_allowed(ch5_road_depot.a, way5_fac7_fac8, pos) } } break; //Conectando los transformadores case 3: - if (pot0==0){ - for(local j=0;j=pow_lim[j].a.x && pos.y>=pow_lim[j].a.y && pos.x<=pow_lim[j].b.x && pos.y<=pow_lim[j].b.y){ - - if(tool_id == tool_build_way || tool_id == tool_build_bridge || tool_id == tool_build_tunnel){ - if (label && label.get_text()=="X") - return translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." - else - return null - - return result - } - else if (tool_id == tool_remover || tool_id == tool_remove_way){ - if (building && !t.get_halt()) - return null - - else if (powerline) - return null - - return result - } - } - else if (j== pow_lim.len()-1){ - result = translate("You are outside the allowed limits!")+" ("+pos.tostring()+")." - } - } - if(tool_id == tool_build_way) - return result + else + return translate("There is already a transformer here!")+" ("+pos.tostring()+")." + } + else if ( glsw[j] == 0 ) + result = translate("Build the transformer here!")+" ("+coord3d_to_string(way5_power[j])+")." + } + } + if(tool_id == tool_build_transformer) + return result + } + else if (pot[0]==1 && pot[1] == 0){ + for(local j=0;j=way5_power_lim[j].a.x && pos.y>=way5_power_lim[j].a.y && pos.x<=way5_power_lim[j].b.x && pos.y<=way5_power_lim[j].b.y){ + + if (tool_id == tool_build_way || tool_id == tool_build_bridge || tool_id == tool_build_tunnel){ + if (label && label.get_text()=="X") + return get_tile_message(5, pos) //translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." + else + return null + + return result + } + else if (tool_id == tool_remover || tool_id == tool_remove_way){ + if (building && !t.get_halt()) + return null + + else if (powerline) + return null + + return result + } + } + else if ( j == way5_power_lim.len()-1 ) { + result = get_tile_message(13, pos) //translate("You are outside the allowed limits!")+" ("+pos.tostring()+")." + } + } + if (tool_id == tool_build_way) + return result - } + } break case 4: - if (pot0==1 && pot1==0){ - //Permite construir paradas - if (tool_id==tool_build_station){ - local list = obj_list1 - local nr = list.len() - return build_stop_ex(nr, list, t) - } + if ( pot[0] == 1 && pot[1] == 0 ) { + // Permite construir paradas + + if ( tool_id == tool_build_station ) { + local wt = wt_road + local tile_found = false + // define station or station_extension + for( local j = 0; j < extensions_tiles.len(); j++ ) { + if ( pos.x == extensions_tiles[j].a.x && pos.y == extensions_tiles[j].a.y ) { + tile_found = true + if ( extensions_tiles[j].b == 0 ) { + wt = 0 + break + } + } + } + + if ( !tile_found ) { + return translate("Place the mail extension at the marked tiles.") + } - //Permite eliminar paradas - if (tool_id==4097){ - local list = obj_list1 - local nr = list.len() - return delete_stop_ex(nr, list, pos) + // check selected halt accept mail + local s = check_select_station(name, wt, good_alias.mail) + if ( s != null ) { return s } + + for ( local j = 0; j < extensions_tiles.len(); j++ ) { + if ( pos.x == extensions_tiles[j].a.x && pos.y == extensions_tiles[j].a.y ) { + if ( glsw[j] == 0 ) { + return null + } else { + return translate("This stop already accepts mail.") + } + } + + } } + + // Permite eliminar paradas + if ( tool_id == 4097 ) { + for( local j = 0; j < extensions_tiles.len(); j++ ) { + local c = extensions_tiles[j].a + if (c != null){ + local stop = my_tile(c).find_object(mo_building) + if ( pos.x == c.x && pos.y == c.y && stop ) { + return null } - if (pot1==1 && pot2==0){ + } + } + return translate("You can only delete the stops/extensions.") + } + } + if ( pot[1]==1 && pot[2]==0 ) { if (tool_id==4108) { - local c_list = sch_list2 //Lista de todas las paradas de autobus - local c_dep = c_dep2 //Coordeadas del deposito - local nr = c_list.len() //Numero de paradas - result = translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep.tostring()+")." - return is_stop_allowed(result, nr, c_list, pos) + return is_stop_allowed(city1_road_depot, city1_post_halts, pos) } - } - if (pot2==1 && pot3==0){ + } + if ( pot[2]==1 && pot[3]==0 ) { if (tool_id==4108) { - local c_list = sch_list3 //Lista de todas las paradas de autobus - local c_dep = c_dep3 //Coordeadas del deposito - local siz = c_list.len() //Numero de paradas - local wt = wt_water - result = translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep.tostring()+")." - return is_stop_allowed_ex(result, siz, c_list, pos, wt) + return is_stop_allowed_ex(ship_depot, ch5_post_ship_halts, pos, wt_water) } - } - break - case 5: - break + } + break } - if (tool_id == 4096){ + + if ( tool_id == 4096 ){ + local label = tile_x(pos.x, pos.y, pos.z).find_object(mo_label) if (label && label.get_text()=="X") - return translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." - else if (label) - return translate("Text label")+" ("+pos.tostring()+")." + return get_tile_message(5, pos) //translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." + //else if (label) + // return translate("Text label")+" ("+pos.tostring()+")." result = null // Always allow query tool } - if (label && label.get_text()=="X") - return translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." + //if (label && label.get_text()=="X") + // return get_tile_message(5, pos) //translate("Indicates the limits for using construction tools")+" ("+pos.tostring()+")." return result } function is_schedule_allowed(pl, schedule) { local result=null // null is equivalent to 'allowed' - if ( (pl == 0) && (schedule.waytype != wt_road) ) - result = translate("Only road schedules allowed") local nr = schedule.entries.len() switch (this.step) { case 2: + if ( (pl == 0) && (schedule.waytype != wt_road) ) + result = translate("Only road schedules allowed") + local selc = 0 local load = veh1_load local time = veh1_wait - local c_list = sch_list1 - local siz = c_list.len() - result = set_schedule_list(result, pl, schedule, nr, selc, load, time, c_list, siz) + local c_list = way5_fac7_fac8 + result = compare_schedule(result, pl, schedule, selc, load, time, c_list, false) if(result != null) reset_tmpsw() return result break case 4: if (current_cov> ch5_cov_lim2.a && current_cov< ch5_cov_lim2.b){ - local selc = 0 + if ( (pl == 0) && (schedule.waytype != wt_road) ) + result = translate("Only road schedules allowed") + + local selc = veh2_waiting_halt local load = veh2_load local time = veh2_wait - local c_list = sch_list2 - local siz = c_list.len() - local line = true - result = set_schedule_list(result, pl, schedule, nr, selc, load, time, c_list, siz, line) + local c_list = city1_post_halts + result = compare_schedule(result, pl, schedule, selc, load, time, c_list, true) if(result == null){ - local line_name = line1_name + local line_name = line2_name update_convoy_schedule(pl, wt_road, line_name, schedule) } } else if (current_cov> ch5_cov_lim3.a && current_cov< ch5_cov_lim3.b){ - local selc = 0 + if ( (pl == 0) && (schedule.waytype != wt_water) ) + result = translate("Only water schedules allowed") + + local selc = get_waiting_halt(10) local load = veh3_load local time = veh3_wait - local c_list = sch_list3 - local siz = c_list.len() - result = set_schedule_list(result, pl, schedule, nr, selc, load, time, c_list, siz) + local c_list = ch5_post_ship_halts + result = compare_schedule(result, pl, schedule, selc, load, time, c_list, false) } return result break } return result } + function is_convoy_allowed(pl, convoy, depot) { local result=null // null is equivalent to 'allowed' @@ -821,7 +865,7 @@ class tutorial.chapter_05 extends basic_chapter //Para arracar varios vehiculos local id_start = ch5_cov_lim1.a local id_end = ch5_cov_lim1.b - local c_sch = sch_list1[0] + local c_sch = way5_fac7_fac8[0] local cir_nr = get_convoy_number_exp(c_sch, depot, id_start, id_end) cov -= cir_nr @@ -836,9 +880,9 @@ class tutorial.chapter_05 extends basic_chapter local selc = 0 local load = veh1_load local time = veh1_wait - local c_list = sch_list1 + local c_list = way5_fac7_fac8 local siz = c_list.len() - return set_schedule_convoy(result, pl, cov, convoy, selc, load, time, c_list, siz) + return compare_schedule_convoy(result, pl, cov, convoy, selc, load, time, c_list, siz) } break case 4: @@ -852,7 +896,7 @@ class tutorial.chapter_05 extends basic_chapter //Para arracar varios vehiculos local id_start = ch5_cov_lim2.a local id_end = ch5_cov_lim2.b - local c_sch = sch_list2[0] + local c_sch = city1_post_halts[0] local cir_nr = get_convoy_number_exp(c_sch, depot, id_start, id_end) cov -= cir_nr @@ -862,12 +906,12 @@ class tutorial.chapter_05 extends basic_chapter local good = translate(good_alias.mail) return truck_result_message(result, translate(name), good, veh, cov) } - local selc = 0 + local selc = veh2_waiting_halt local load = veh2_load local time = veh2_wait - local c_list = sch_list2 + local c_list = city1_post_halts local siz = c_list.len() - return set_schedule_convoy(result, pl, cov, convoy, selc, load, time, c_list, siz) + return compare_schedule_convoy(result, pl, cov, convoy, selc, load, time, c_list, siz) } else if (current_cov> ch5_cov_lim3.a && current_cov< ch5_cov_lim3.b){ @@ -882,16 +926,16 @@ class tutorial.chapter_05 extends basic_chapter local good = translate(good_alias.mail) return ship_result_message(result, translate(name), good, veh, cov) } - local selc = 0 + local selc = get_waiting_halt(10) local load = veh3_load local time = veh3_wait - local c_list = sch_list3 + local c_list = ch5_post_ship_halts local siz = c_list.len() - return set_schedule_convoy(result, pl, cov, convoy, selc, load, time, c_list, siz) + return compare_schedule_convoy(result, pl, cov, convoy, selc, load, time, c_list, siz) } break } - return result = translate("It is not allowed to start vehicles.") + return get_message(3) //translate("It is not allowed to start vehicles.") } function script_text() @@ -899,23 +943,23 @@ class tutorial.chapter_05 extends basic_chapter local player = player_x(0) switch (this.step) { case 1: - if(pot0==0) pot0=1 + if(pot[0]==0) pot[0]=1 return null break; case 2: - if (pot0==0){ - local coora = coord3d(c_way1.a.x,c_way1.a.y,c_way1.a.z) - local coorb = coord3d(c_way1.b.x,c_way1.b.y,c_way1.b.z) + if (pot[0]==0){ + local coora = coord3d(way5_fac7_fac8[0].x,way5_fac7_fac8[0].y,way5_fac7_fac8[0].z) + local coorb = coord3d(way5_fac7_fac8[1].x,way5_fac7_fac8[1].y,way5_fac7_fac8[1].z) local t = command_x(tool_build_way) local err = t.work(player, coora, coorb, sc_way_name) } - if (pot2==0){ + if (pot[2]==0){ //Para la carretera - local t_start = my_tile(c_dep1_lim.a) - local t_end = my_tile(c_dep1_lim.b) + local t_start = my_tile(ch5_road_depot.a) + local t_end = my_tile(ch5_road_depot.b) t_start.remove_object(player_x(1), mo_label) local t = command_x(tool_build_way) @@ -925,9 +969,9 @@ class tutorial.chapter_05 extends basic_chapter t.work(player, t_start, sc_dep_name) } - if (pot1==0){ - for(local j=0;j ch5_cov_lim1.a && current_cov< ch5_cov_lim1.b){ local wt = wt_road - local c_depot = my_tile(c_dep1) + local c_depot = my_tile(ch5_road_depot.a) try { comm_destroy_convoy(player, c_depot) // Limpia los vehiculos del deposito @@ -949,9 +993,9 @@ class tutorial.chapter_05 extends basic_chapter local depot = c_depot.find_object(mo_depot_road) local good_nr = good_desc_x(f1_good).get_catg_index() //Coal local sched = schedule_x(wt, []) - sched.entries.append(schedule_entry_x(my_tile(sch_list1[0]), veh1_load, veh1_wait)) - sched.entries.append(schedule_entry_x(my_tile(sch_list1[1]), 0, 0)) - local c_line = comm_get_line(player, wt, sched) + sched.entries.append(schedule_entry_x(my_tile(way5_fac7_fac8[0]), veh1_load, veh1_wait)) + sched.entries.append(schedule_entry_x(my_tile(way5_fac7_fac8[1]), 0, 0)) + local c_line = comm_get_line(player, wt, sched, line1_name) local name = veh1_obj local cov_nr = d1_cnr //Max convoys nr in depot @@ -976,9 +1020,9 @@ class tutorial.chapter_05 extends basic_chapter break case 3: - if (pot0==0){ - for(local j=0;j message to message window and break + gui.add_message( j + " tool.work " + res + " name " + name) + break + } + } } - } + } local ok = false - if (current_cov> ch5_cov_lim2.a && current_cov< ch5_cov_lim2.b){ + if (current_cov> ch5_cov_lim2.a && current_cov< ch5_cov_lim2.b) { + + new_set_waiting_halt(city1_post_halts) + local wt = wt_road - local c_depot = my_tile(c_dep2) + local c_depot = my_tile(city1_road_depot) comm_destroy_convoy(player, c_depot) // Limpia los vehiculos del deposito local sched = schedule_x(wt, []) - local c_list = sch_list2 + local c_list = city1_post_halts local siz = c_list.len() for(local j = 0;j ch5_cov_lim3.a && current_cov< ch5_cov_lim3.b)){ local wt = wt_water - local c_depot = my_tile(c_dep3) + local c_depot = my_tile(ship_depot) comm_destroy_convoy(player, c_depot) // Limpia los vehiculos del deposito local sched = schedule_x(wt, []) - local c_list = is_water_entry(sch_list3) + local c_list = is_water_entry(ch5_post_ship_halts) local siz = c_list.len() for(local j = 0;j=1){ - convoy = cov_list[0] - } - local all_result = checks_convoy_schedule(convoy, pl) - sch_cov_correct = all_result.res == null ? true : false + if(this.step == 2){ + local c_dep = this.my_tile(city1_road_depot) + local c_list = city1_halt_1 + start_sch_tmpsw(pl, c_dep, c_list) } - - local pl = 0 - //Schedule list form current convoy - if(this.step == 3){ - local c_dep = this.my_tile(c_dep2) - local c_list = sch_list2 - start_sch_tmpsw(pl,c_dep, c_list) + else if(this.step == 3){ + local c_dep = this.my_tile(city1_road_depot) + local c_list = city1_halt_2 + start_sch_tmpsw(pl, c_dep, c_list) } else if(this.step == 4){ - local c_dep = this.my_tile(c_dep3) - local c_list = sch_list3 - start_sch_tmpsw(pl,c_dep, c_list) - } - return 0 + local c_dep = this.my_tile(city1_road_depot) + local c_list = city2_halt_1 + start_sch_tmpsw(pl, c_dep, c_list) + }*/ } function set_goal_text(text){ switch (this.step) { case 1: - text.c1_a = " ("+c1_track.a.tostring()+")" - text.c1_b = " ("+c1_track.b.tostring()+")" - text.c2_a = " ("+c2_track.a.tostring()+")" - text.c2_b = " ("+c2_track.b.tostring()+")" + text.c1_a = "("+c1_track.a.tostring()+")" + text.c1_b = "("+c1_track.b.tostring()+")" + text.c2_a = "("+c2_track.a.tostring()+")" + text.c2_b = "("+c2_track.b.tostring()+")" + + text.st1 = "("+city1_city7_air[0].tostring()+")" + text.st2 = "("+city1_halt_airport_extension[0].tostring()+")" + break case 2: + local list_tx = "" + local c_list = city1_city7_air + local siz = c_list.len() + for (local j=0;j%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) + continue + } + if(tmpsw[j]==0 ){ + list_tx += format("%s %d: %s
", translate("Stop"), j+1, c.href(st_halt.get_name()+" ("+c.tostring()+")")) + } + else{ + list_tx += format("%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) + } + } + local c = coord(c_list[get_waiting_halt(6)].x, c_list[get_waiting_halt(6)].y) + text.stnam = (get_waiting_halt(6)+1) + ") " + my_tile(c).get_halt().get_name()+" ("+c.tostring()+")" + text.list = list_tx text.plane = translate(plane1_obj) - text.load = plane1_load - text.wait = get_wait_time_text(plane1_wait) + text.load = set_loading_capacity(5) + text.wait = get_wait_time_text(set_waiting_time(8)) text.cnr = d1_cnr - break + + + break case 3: local list_tx = "" - local c_list = sch_list2 + local c_list = city1_halt_airport local siz = c_list.len() for (local j=0;j "+st_halt.get_name()+" ("+tile.x+","+tile.y+")" + } + if(sch_cov_correct){ list_tx += format("%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) continue @@ -168,24 +184,31 @@ class tutorial.chapter_06 extends basic_chapter list_tx += format("%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) } } - local c = coord(c_list[0].x, c_list[0].y) - text.stnam = "1) "+my_tile(c).get_halt().get_name()+" ("+c.tostring()+")" + + local c = coord(c_list[get_waiting_halt(7)].x, c_list[get_waiting_halt(7)].y) + text.stnam = (get_waiting_halt(7)+1) + ") " + my_tile(c).get_halt().get_name()+" ("+c.tostring()+")" text.stx = list_tx - text.dep2 = " ("+c_dep2.tostring()+")" - text.load = veh1_load - text.wait = get_wait_time_text(veh1_wait) + text.dep2 = " ("+city1_road_depot.tostring()+")" + text.load = set_loading_capacity(6) + text.wait = get_wait_time_text(set_waiting_time(9)) text.cnr = d2_cnr break case 4: local list_tx = "" - local c_list = sch_list3 + local c_list = city7_halt local siz = c_list.len() for (local j=0;j "+st_halt.get_name()+" ("+tile.x+","+tile.y+")" + } + if(sch_cov_correct){ list_tx += format("%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) continue @@ -197,44 +220,41 @@ class tutorial.chapter_06 extends basic_chapter list_tx += format("%s %d: %s %s
", translate("Stop"), j+1, st_halt.get_name(), translate("OK")) } } - local c = coord(c_list[0].x, c_list[0].y) - text.stnam = "1) "+my_tile(c).get_halt().get_name()+" ("+c.tostring()+")" + local c = coord(c_list[get_waiting_halt(8)].x, c_list[get_waiting_halt(8)].y) + text.stnam = (get_waiting_halt(8)+1) + ") " + my_tile(c).get_halt().get_name()+" ("+c.tostring()+")" text.stx = list_tx - text.dep3 = " ("+c_dep3.tostring()+")" + text.dep3 = "("+city7_road_depot.tostring()+")" - text.load = veh1_load - text.wait = get_wait_time_text(veh1_wait) + text.load = set_loading_capacity(7) + text.wait = get_wait_time_text(set_waiting_time(10)) text.cnr = d3_cnr break - } - local st1_halt = my_tile(sch_list1[0]).get_halt() - local st2_halt = my_tile(sch_list1[1]).get_halt() - if(st1_halt){ - text.sch1 = " "+st1_halt.get_name()+" ("+sch_list1[0].tostring()+")" - text.sch2 = " "+st2_halt.get_name()+" ("+sch_list1[1].tostring()+")" - } + } + text.w1name = translate(obj1_way_name) text.w2name = translate(obj2_way_name) text.bus1 = translate(veh1_obj) text.bus2 = translate(veh2_obj) - text.cit1 = cty1.c.href(cty1.name.tostring()) - text.cit2 = cty2.c.href(cty2.name.tostring()) - text.st1 = " ("+st1_pos.tostring()+")" - text.st2 = " ("+st2_pos.tostring()+")" - text.dep1 = " ("+c_dep1.tostring()+")" + text.cit1 = city1_tow.href(cty1.name.tostring()) + text.cit2 = city7_tow.href(cty2.name.tostring()) + text.dep1 = "("+ch6_air_depot.a.tostring()+")" return text } function is_chapter_completed(pl) { - local percentage=0 save_glsw() save_pot() + persistent.ch_max_steps = 4 + local chapter_step = persistent.step + persistent.ch_max_sub_steps = 0 // count all sub steps + persistent.ch_sub_step = 0 // actual sub step + switch (this.step) { case 1: - if (pot0==0){ + if (pot[0]==0){ local tile = my_tile(c1_start) c1_is_way = tile.find_object(mo_way) @@ -246,15 +266,15 @@ class tutorial.chapter_06 extends basic_chapter local fullway = check_way(ta, tb, wt, name_list, dir) if (fullway.result){ c_way = coord(0,0) - pot0=1 + pot[0]=1 } else c_way = fullway.c - return 5 + //return 5 } - else if (pot0==1 && pot1==0){ + else if (pot[0]==1 && pot[1]==0){ local tile = my_tile(c2_start) c2_is_way = tile.find_object(mo_way) @@ -266,41 +286,41 @@ class tutorial.chapter_06 extends basic_chapter local fullway = check_way(ta, tb, wt, name_list, dir) if (fullway.result){ c_way = coord(0,0) - pot1=1 + pot[1]=1 } else c_way = fullway.c - return 10 + //return 10 } - else if (pot1==1 && pot2==0){ - local tile = my_tile(st1_pos) + else if (pot[1]==1 && pot[2]==0){ + local tile = my_tile(city1_city7_air[0]) local way = tile.find_object(mo_way) local buil = tile.find_object(mo_building) local name = translate("Build here") public_label(tile, name) if(way && buil){ tile.remove_object(player_x(1), mo_label) - pot2 = 1 + pot[2] = 1 } - return 15 + //return 15 } - else if (pot2==1 && pot3==0){ - local tile = my_tile(st2_pos) + else if (pot[2]==1 && pot[3]==0){ + local tile = my_tile(city1_halt_airport_extension[0]) local buil = tile.find_object(mo_building) local name = translate("Build here") public_label(tile, name) if(buil){ tile.remove_object(player_x(1), mo_label) - pot3 = 1 + pot[3] = 1 } - return 20 + //return 20 } - else if (pot3==1 && pot4==0){ - local tile = my_tile(c_dep1) + else if (pot[3]==1 && pot[4]==0){ + local tile = my_tile(ch6_air_depot.a) local way = tile.find_object(mo_way) local depot = tile.find_object(mo_depot_air) local name = translate("Build here") @@ -308,19 +328,19 @@ class tutorial.chapter_06 extends basic_chapter if(way && depot){ tile.remove_object(player_x(1), mo_label) tile.remove_object(player_x(1), mo_label) - pot4 = 1 + pot[4] = 1 } - return 25 + //return 25 } - else if (pot4==1 && pot5==0){ - local tile = my_tile(st1_pos) + else if (pot[4]==1 && pot[5]==0){ + local tile = my_tile(city1_halt_airport[0]) local buil = tile.find_object(mo_building) if(buil && buil.get_owner().nr == 1){ - pot5 = 1 + pot[5] = 1 } - return 30 + //return 30 } - else if (pot5==1 && pot6==0){ + else if (pot[5]==1 && pot[6]==0){ this.next_step() } @@ -328,17 +348,31 @@ class tutorial.chapter_06 extends basic_chapter case 2: + local c_dep = my_tile(ch6_air_depot.a) + local line_name = line1_name + set_convoy_schedule(pl, c_dep, wt_air, line_name) + + local depot = depot_x(c_dep.x, c_dep.y, c_dep.z) + local cov_list = depot.get_convoy_list() //Lista de vehiculos en el deposito + local convoy = convoy_x(gcov_id) + if (cov_list.len()>=1){ + convoy = cov_list[0] + } + local all_result = checks_convoy_schedule(convoy, pl) + sch_cov_correct = all_result.res == null ? true : false + if(current_cov == ch6_cov_lim1.b){ + sch_cov_correct = false this.next_step() } - return 50 + //return 50 break; case 3: - local c_dep = this.my_tile(c_dep2) - local line_name = line1_name - set_convoy_schedule(pl, c_dep, wt_road, line_name) + local c_dep = my_tile(city1_road_depot) + local line_name = line2_name + set_convoy_schedule(pl, c_dep, wt_road, line_name) local depot = depot_x(c_dep.x, c_dep.y, c_dep.z) local cov_list = depot.get_convoy_list() //Lista de vehiculos en el deposito @@ -351,25 +385,25 @@ class tutorial.chapter_06 extends basic_chapter if(current_cov == ch6_cov_lim2.b){ sch_cov_correct = false - this.next_step() + this.next_step() } - return 65 + //return 65 break; case 4: - if (pot0==0){ - local tile = my_tile(c_dep3) + if (pot[0]==0){ + local tile = my_tile(city7_road_depot) local way = tile.find_object(mo_way) local depot = tile.find_object(mo_depot_road) if(way && depot){ - pot0 = 1 + pot[0] = 1 } - return 25 + //return 25 } - else if (pot0==1 && pot1==0){ - local c_dep = this.my_tile(c_dep3) - local line_name = line2_name - set_convoy_schedule(pl, c_dep, wt_road, line_name) + else if (pot[0]==1 && pot[1]==0){ + local c_dep = my_tile(city7_road_depot) + local line_name = line3_name + set_convoy_schedule(pl, c_dep, wt_road, line_name) local depot = depot_x(c_dep.x, c_dep.y, c_dep.z) local cov_list = depot.get_convoy_list() //Lista de vehiculos en el deposito @@ -385,24 +419,24 @@ class tutorial.chapter_06 extends basic_chapter this.next_step() } } - return 80 + //return 80 break; case 5: this.step=1 persistent.step=1 persistent.status.step = 1 - return 100 + //return 100 break; - } - percentage=(this.step-1)+1 - return percentage + } + local percentage = chapter_percentage(persistent.ch_max_steps, chapter_step, persistent.ch_max_sub_steps, persistent.ch_sub_step) + return percentage } function is_work_allowed_here(pl, tool_id, name, pos, tool) { local result = null // null is equivalent to 'allowed' - result = translate("Action not allowed") + result = get_message(2) //translate("Action not allowed") local t = tile_x(pos.x, pos.y, pos.z) local ribi = 0 local wt = 0 @@ -430,14 +464,20 @@ class tutorial.chapter_06 extends basic_chapter if (tool_id==4096) return null + switch (this.step) { case 1: local climate = square_x(pos.x, pos.y).get_climate() //return climate - if (pot0==0){ + if (pot[0]==0){ if ((pos.x>=c1_track.a.x)&&(pos.y>=c1_track.a.y)&&(pos.x<=c1_track.b.x)&&(pos.y<=c1_track.b.y)){ - if (way && way.get_name() != obj1_way_name){ - if(tool_id == tool_remover || tool_id == tool_remove_way) return null + + // check selected way + local s = check_select_way(name, wt_air, st_runway) + if ( s != null ) return s + + if ( way && way.get_name() != obj1_way_name ) { + if ( tool_id == tool_remover || tool_id == tool_remove_way ) return null result = format(translate("The track is not correct it must be: %s, use the 'Remove' tool"),translate(obj1_way_name)) + " ("+c1_start.tostring()+")." @@ -447,15 +487,20 @@ class tutorial.chapter_06 extends basic_chapter if(tool_id == tool_build_way) return null } - else return translate("Build here") + ": ("+c_way.tostring()+")!." + else return translate("Build here") + ": ("+coord3d_to_string(c_way)+")!." } - else if (pot0==1 && pot1==0){ + else if (pot[0]==1 && pot[1]==0){ if (pos.x == c2_track.a.x && pos.y == c2_track.a.y){ if(tool_id == tool_remover || tool_id == tool_remove_way) return result else if(tool_build_way) return null } if ((pos.x>=c2_track.a.x)&&(pos.y>=c2_track.a.y)&&(pos.x<=c2_track.b.x)&&(pos.y<=c2_track.b.y)){ + + // check selected way + local s = check_select_way(name, wt_air) + if ( s != null ) return s + if (way && way.get_name() != obj2_way_name){ if(tool_id == tool_remover || tool_id == tool_remove_way) return null @@ -472,8 +517,8 @@ class tutorial.chapter_06 extends basic_chapter else return translate("Build here") + ": ("+c_way.tostring()+")!." } - else if (pot1==1 && pot2==0){ - if(pos.x == st1_pos.x && pos.y == st1_pos.y){ + else if (pot[1]==1 && pot[2]==0){ + if(pos.x == city1_city7_air[0].x && pos.y == city1_city7_air[0].y){ if(tool_id == tool_build_way){ if (way){ return translate("The track is correct.") @@ -487,11 +532,11 @@ class tutorial.chapter_06 extends basic_chapter else return null } } - else return translate("Build here") + ": ("+st1_pos.tostring()+")!." + else return translate("Build here") + ": ("+city1_halt_airport[0].tostring()+")!." } - else if (pot2==1 && pot3==0){ - if(pos.x == st2_pos.x && pos.y == st2_pos.y){ + else if (pot[2]==1 && pot[3]==0){ + if(pos.x == city1_halt_airport_extension[0].x && pos.y == city1_halt_airport_extension[0].y){ if(tool_id == tool_build_station){ if (buil){ return translate("There is already a station.") @@ -499,11 +544,11 @@ class tutorial.chapter_06 extends basic_chapter else return null } } - else return translate("Build here") + ": ("+st2_pos.tostring()+")!." + else return translate("Build here") + ": ("+city1_halt_airport_extension[0].tostring()+")!." } - else if (pot3==1 && pot4==0){ - if((pos.x == c_dep_lim1.a.x && pos.y == c_dep_lim1.a.y) || (pos.x == c_dep_lim1.b.x && pos.y == c_dep_lim1.b.y)){ + else if (pot[3]==1 && pot[4]==0){ + if((pos.x == ch6_air_depot.b.x && pos.y == ch6_air_depot.b.y) || (pos.x == ch6_air_depot.a.x && pos.y == ch6_air_depot.a.y)){ if(tool_id == tool_build_way){ return null } @@ -514,10 +559,10 @@ class tutorial.chapter_06 extends basic_chapter else return null } } - else return translate("Build here") + ": ("+c_dep1.tostring()+")!." + else return translate("Build here") + ": ("+ch6_air_depot.a.tostring()+")!." } - else if (pot4==1 && pot5==0){ - if(pos.x == st1_pos.x && pos.y == st1_pos.y){ + else if (pot[4]==1 && pot[5]==0){ + if(pos.x == city1_halt_airport[0].x && pos.y == city1_halt_airport[0].y){ if(tool_id == tool_make_stop_public){ if(buil){ return null @@ -525,7 +570,7 @@ class tutorial.chapter_06 extends basic_chapter else return null } } - else return translate("Click on the stop") + " ("+st1_pos.tostring()+")!." + else return translate("Click on the stop") + " ("+city1_halt_airport[0].tostring()+")!." } break; @@ -533,37 +578,20 @@ class tutorial.chapter_06 extends basic_chapter case 2: if (tool_id==4108) { - if (glsw[0]==0){ - if(pos.x == sch_list1[0].x && pos.y == sch_list1[0].y) { - glsw[0]=1 - return null - } - else return translate("Click on the stop") + " ("+sch_list1[0].tostring()+")!." - } + return is_stop_allowed(ch6_air_depot.a, city1_city7_air, pos) - if (glsw[1]==0 && glsw[0]==1){ - if(pos.x == sch_list1[1].x && pos.y == sch_list1[1].y) { - glsw[1]=1 - return null - } - else return translate("Click on the stop") + " ("+sch_list1[1].tostring()+")!." - } } break; case 3: if (tool_id==4108) { - local c_list = sch_list2 //Lista de todas las paradas de autobus - local c_dep = c_dep2 //Coordeadas del deposito - local siz = c_list.len() //Numero de paradas - result = translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep.tostring()+")." - return is_stop_allowed(result, siz, c_list, pos) + return is_stop_allowed(city1_road_depot, city1_halt_airport, pos) } break; case 4: - if (pot0==0){ - if(pos.x == c_dep3.x && pos.y == c_dep3.y){ + if (pot[0]==0){ + if(pos.x == city7_road_depot.x && pos.y == city7_road_depot.y){ if(tool_id == tool_build_depot){ if(depot){ return translate("The Depot is correct.") @@ -571,15 +599,11 @@ class tutorial.chapter_06 extends basic_chapter else return null } } - else return translate("Build here") + ": ("+c_dep3.tostring()+")!." + else return translate("Build here") + ": ("+city7_road_depot.tostring()+")!." } - if (pot0==1 && pot1==0){ + if (pot[0]==1 && pot[1]==0){ if (tool_id==4108) { - local c_list = sch_list3 //Lista de todas las paradas de autobus - local c_dep = c_dep3 //Coordeadas del deposito - local siz = c_list.len() //Numero de paradas - result = translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+c_dep.tostring()+")." - return is_stop_allowed(result, siz, c_list, pos) + return is_stop_allowed(city7_road_depot, city7_halt, pos) } } break; @@ -592,52 +616,57 @@ class tutorial.chapter_06 extends basic_chapter function is_schedule_allowed(pl, schedule) { local result=null // null is equivalent to 'allowed' - local nr = schedule.entries.len() switch (this.step) { case 2: + if ( schedule.waytype != wt_air ) + result = translate("Only air schedules allowed") + reset_glsw() - local selc = 0 - local load = plane1_load - local time = plane1_wait - local c_list = sch_list1 - local siz = c_list.len() - return set_schedule_list(result, pl, schedule, nr, selc, load, time, c_list, siz) + local selc = get_waiting_halt(6) + local load = set_loading_capacity(5) + local time = set_waiting_time(8) + local c_list = city1_city7_air + result = compare_schedule(result, pl, schedule, selc, load, time, c_list, false) + if(result == null){ + update_convoy_schedule(pl, wt_air, line1_name, schedule) + } + return result break case 3: if ( schedule.waytype != wt_road ) result = translate("Only road schedules allowed") - local selc = 0 - local load = veh1_load - local time = veh1_wait - local c_list = sch_list2 - local siz = c_list.len() - local line = true - result = set_schedule_list(result, pl, schedule, nr, selc, load, time, c_list, siz, line) + + reset_glsw() + + local selc = get_waiting_halt(7) + local load = set_loading_capacity(6) + local time = set_waiting_time(9) + local c_list = city1_halt_airport + result = compare_schedule(result, pl, schedule, selc, load, time, c_list, true) if(result == null){ - local line_name = line1_name - update_convoy_schedule(pl, wt_road, line_name, schedule) + update_convoy_schedule(pl, wt_road, line2_name, schedule) } return result break case 4: if ( schedule.waytype != wt_road ) result = translate("Only road schedules allowed") - local selc = 0 - local load = veh1_load - local time = veh1_wait - local c_list = sch_list3 - local siz = c_list.len() - local line = true - result = set_schedule_list(result, pl, schedule, nr, selc, load, time, c_list, siz, line) + + reset_glsw() + + local selc = get_waiting_halt(8) + local load = set_loading_capacity(7) + local time = set_waiting_time(10) + local c_list = city7_halt + result = compare_schedule(result, pl, schedule, selc, load, time, c_list, true) if(result == null){ - local line_name = line2_name - update_convoy_schedule(pl, wt_road, line_name, schedule) + update_convoy_schedule(pl, wt_road, line3_name, schedule) } return result break } - return translate("Action not allowed") + return get_message(2) //translate("Action not allowed") } function is_convoy_allowed(pl, convoy, depot) @@ -646,14 +675,15 @@ class tutorial.chapter_06 extends basic_chapter switch (this.step) { case 2: local wt = gl_wt - if ((depot.x != c_dep1.x)||(depot.y != c_dep1.y)) - return translate("You must select the deposit located in")+" ("+c_dep1.tostring()+")." + if ((depot.x != ch6_air_depot.a.x)||(depot.y != ch6_air_depot.a.y)) + return get_tile_message(15, ch6_air_depot.a) //translate("You must select the deposit located in")+" ("+ch6_air_depot.a.tostring()+")." if (current_cov>ch6_cov_lim1.a && current_covch6_cov_lim2.a && current_covch6_cov_lim3.a && current_cov ch6_cov_lim1.a && current_cov< ch6_cov_lim1.b){ local pl = player - local c_depot = my_tile(c_dep1) + local c_depot = my_tile(ch6_air_depot.a) try { comm_destroy_convoy(pl, c_depot) // Limpia los vehiculos del deposito @@ -874,14 +908,14 @@ class tutorial.chapter_06 extends basic_chapter return null } local sched = schedule_x(gl_wt, []) - local c_list = sch_list1 - for(local j = 0;jch6_cov_lim2.a && current_covch6_cov_lim3.a && current_covgoal_lod1){ load = 0 transfer_pass = 0 + pass_count = 0 this.next_step() } //return 5 @@ -178,14 +174,18 @@ class tutorial.chapter_07 extends basic_chapter if (!correct_cov) return 0 - if ( check_halt_merge(st2_c, stop2) ) { - load = cov_pax(stop2, gl_wt, gl_good) - transfer_pass - } else { - transfer_pass = cov_pax(stop2, gl_wt, gl_good) + local tile = check_halt_wt(ch7_rail_stations[1], wt_road) + if ( tile != null ) { + if ( pass_count == 0 ) { + transfer_pass = cov_pax(ch7_rail_stations[1], gl_wt, gl_good) + pass_count++ + } + load = cov_pax(tile, gl_wt, gl_good) - transfer_pass } if(load>goal_lod2){ load = 0 transfer_pass = 0 + pass_count = 0 this.next_step() } //return 25 @@ -195,14 +195,18 @@ class tutorial.chapter_07 extends basic_chapter if (!correct_cov) return 0 - if ( check_halt_merge(st3_c, stop3) ) { - load = cov_pax(stop3, gl_wt, gl_good) - transfer_pass - } else { - transfer_pass = cov_pax(stop2, gl_wt, gl_good) + local tile = check_halt_wt(ch7_rail_stations[2], wt_road) + if ( tile != null ) { + if ( pass_count == 0 ) { + transfer_pass = cov_pax(ch7_rail_stations[2], gl_wt, gl_good) + pass_count++ + } + load = cov_pax(tile, gl_wt, gl_good) - transfer_pass } if(load>goal_lod3){ load = 0 transfer_pass = 0 + pass_count = 0 this.next_step() } //return 50 @@ -212,83 +216,75 @@ class tutorial.chapter_07 extends basic_chapter if (!correct_cov) return 0 - if ( check_halt_merge(st4_c, stop4) ) { - load = cov_pax(stop4, gl_wt, gl_good) - transfer_pass - } else { - transfer_pass = cov_pax(stop2, gl_wt, gl_good) + local tile = check_halt_wt(ch7_rail_stations[3], wt_road) + if ( tile != null ) { + if ( pass_count == 0 ) { + transfer_pass = cov_pax(ch7_rail_stations[3], gl_wt, gl_good) + pass_count++ + } + load = cov_pax(tile, gl_wt, gl_good) - transfer_pass } if(load>goal_lod4){ load = 0 transfer_pass = 0 + pass_count = 0 this.next_step() } //return 75 break; - - case 5: - // last step no actions - break; } - local percentage = chapter_percentage(chapter_steps, chapter_step, chapter_sub_steps, chapter_sub_step) + local percentage = chapter_percentage(persistent.ch_max_steps, chapter_step, persistent.ch_max_sub_steps, persistent.ch_sub_step) return percentage } function is_work_allowed_here(pl, tool_id, name, pos, tool) { - local result=null // null is equivalent to 'allowed' + //local result=null // null is equivalent to 'allowed' local t = tile_x(pos.x, pos.y, pos.z) - local way = t.find_object(mo_way) + //local way = t.find_object(mo_way) local nr = compass_nr + + // inspections tool + if (tool_id==4096) + return null + switch (this.step) { case 1: - if (tool_id==4096) - return null if ((pos.x>=c_cty_lim1[nr].a.x-(1))&&(pos.y>=c_cty_lim1[nr].a.y-(1))&&(pos.x<=c_cty_lim1[nr].b.x+(1))&&(pos.y<=c_cty_lim1[nr].b.y+(1))){ return null } else - return translate("You can only use this tool in the city")+ " " + cty1.name.tostring()+" ("+cty1.c.tostring()+")." + return translate("You can only use this tool in the city")+ " " + cty1.name.tostring()+" ("+city3_tow.tostring()+")." break; case 2: - if (tool_id==4096) - return null if ((pos.x>=c_cty_lim2[nr].a.x-(1))&&(pos.y>=c_cty_lim2[nr].a.y-(1))&&(pos.x<=c_cty_lim2[nr].b.x+(1))&&(pos.y<=c_cty_lim2[nr].b.y+(1))){ return null } else - return translate("You can only use this tool in the city")+cty2.name.tostring()+" ("+cty2.c.tostring()+")." + return translate("You can only use this tool in the city")+cty2.name.tostring()+" ("+city4_tow.tostring()+")." break; case 3: - if (tool_id==4096) - return null if ((pos.x>=c_cty_lim3[nr].a.x-(1))&&(pos.y>=c_cty_lim3[nr].a.y-(1))&&(pos.x<=c_cty_lim3[nr].b.x+(1))&&(pos.y<=c_cty_lim3[nr].b.y+(1))){ return null } else - return translate("You can only use this tool in the city")+cty3.name.tostring()+" ("+cty3.c.tostring()+")." + return translate("You can only use this tool in the city")+cty3.name.tostring()+" ("+city5_tow.tostring()+")." break; case 4: - if (tool_id==4096) - return null if ((pos.x>=c_cty_lim4[nr].a.x-(1))&&(pos.y>=c_cty_lim4[nr].a.y-(1))&&(pos.x<=c_cty_lim4[nr].b.x+(1))&&(pos.y<=c_cty_lim4[nr].b.y+(1))){ return null } else - return translate("You can only use this tool in the city")+cty4.name.tostring()+" ("+cty4.c.tostring()+")." + return translate("You can only use this tool in the city")+cty4.name.tostring()+" ("+city6_tow.tostring()+")." break; - case 5: - return null; - } - if (tool_id==4096) - return null return tool_id } @@ -314,7 +310,7 @@ class tutorial.chapter_07 extends basic_chapter ignore_save.push({id = convoy.id, ig = true}) //Ingnora el vehiculo return null } - return result = translate("It is not allowed to start vehicles.") + return get_message(3) //translate("It is not allowed to start vehicles.") } function script_text() diff --git a/class/class_messages.nut b/class/class_messages.nut index 4b2954c..77819b5 100644 --- a/class/class_messages.nut +++ b/class/class_messages.nut @@ -1,18 +1,35 @@ -/* - * list messages - * - * - * - */ +/** + * @file class_messages.nut + * @brief list messages + * + */ -/* +/** + * chapter texts + * +*/ +ch1_name <- "Getting Started" +ch1_text1 <- "This is a town centre" +ch1_text2 <- "This is a factory" +ch1_text3 <- "This is a station" +ch1_text4 <- "This is a link" +ch1_text5 <- "Town Centre" + +ch2_name <- "Ruling the Roads" +ch3_name <- "Riding the Rails" +ch4_name <- "Setting Sail" +ch5_name <- "Industrial Efficiency" +ch6_name <- "The forgotten Air transport" +ch7_name <- "Bus networks" + +/** * single messages * * id - message id * 1 = You can only delete the stops. * 2 = Action not allowed - * - * + * 3 = Only road schedules allowed + * 4 = It is not allowed to start vehicles. * * * @@ -24,25 +41,25 @@ function get_message(id) { local txt_message = "" switch(id) { - case: 1 + case 1: txt_message = translate("You can only delete the stops.") break - case: 2 + case 2: txt_message = translate("Action not allowed") break - case: 3 - + case 3: + txt_message = translate("Only road schedules allowed") break - case: 4 - + case 4: + txt_message = translate("It is not allowed to start vehicles.") break - case: 5 + case 5: break - case: 6 + case 6: break - case: 7 + case 7: break } @@ -51,7 +68,7 @@ function get_message(id) { } -/* +/** * messages with a tile * * id - message id @@ -66,49 +83,103 @@ function get_message(id) { * 6 = Text label (x, y, z). * 7 = You must first build a stretch of road (x, y, z). * 8 = You must build the depot in (x, y, z). - * - * + * 9 = You must use the inspection tool (x, y, z). + * 10 = Depot coordinate is incorrect (x, y, z). + * 11 = Connect the Track here (x, y, z). + * 12 = You must build the train depot in (x, y, z). + * 13 = You are outside the allowed limits! (x, y, z). + * 14 = Place the shipyard here (x, y, z). + * 15 = You must select the deposit located in (x, y, z). + * 16 = + * 17 = + * 18 = + * 19 = + * 20 = * */ function get_tile_message(id, tile) { local txt_tile = "" - if ( tile.len() == 2 ) { + /*if ( tz == null ) { + local tile = coord(tx, ty) txt_tile = coord_to_string(tile) - } else if ( tile.len() == 3 ) { - txt_tile = coord3d_to_string(tile) } else { - txt_tile = tile + local tile = coord3d(tx, ty, tz) + txt_tile = coord3d_to_string(tile) + }*/ + local count = 0 + try { + count = tile.len() + if ( count == 2 ) { + txt_tile = coord_to_string(tile) + } else if ( tile.len() == 3 ) { + txt_tile = coord3d_to_string(tile) + } else { + txt_tile = tile + } } + catch(ev) { + try { + txt_tile = coord_to_string(tile) + } + catch(ev) { + txt_tile = coord3d_to_string(tile) + } + } + local txt_message = "" switch(id) { - case: 1 - txt_message = translate("Action not allowed")+" ("+txt_tile+")." + case 1: + txt_message = format(translate("Action not allowed (%s)."), txt_tile) break - case: 2 + case 2: txt_message = translate("Connect the road here")+" ("+txt_tile+")." break - case: 3 - txt_message = translate("The route is complete, now you may dispatch the vehicle from the depot")+" ("+txt_tile+")." + case 3: + txt_message = format(translate("The route is complete, now you may dispatch the vehicle from the depot (%s)."), txt_tile) break - case: 4 + case 4: txt_message = translate("You must build the bridge here")+" ("+txt_tile+")." break - case: 5 - txt_message = translate("Indicates the limits for using construction tools")+" ("+txt_tile+")." + case 5: + txt_message = format(translate("Indicates the limits for using construction tools (%s)."), txt_tile) break - case: 6 + case 6: txt_message = translate("Text label")+" ("+txt_tile+")." break - case: 7 + case 7: txt_message = translate("You must first build a stretch of road")+" ("+txt_tile+")." break - case: 8 + case 8: txt_message = translate("You must build the depot in")+" ("+txt_tile+")." break - case: 9 - + case 9: + txt_message = format(translate("You must use the inspection tool (%s)."), txt_tile) + break + case 10: + txt_message = format(translate("Depot coordinate is incorrect (%s)."), txt_tile) + break + case 11: + txt_message = format(translate("Connect the Track here (%s)."), txt_tile) + break + case 12: + txt_message = format(translate("You must build the train depot in (%s)."), txt_tile) + break + case 13: + txt_message = format(translate("You are outside the allowed limits! (%s)."), txt_tile) + break + case 14: + txt_message = format(translate("Place the shipyard here (%s)."), txt_tile) + break + case 15: + txt_message = format(translate("You must select the deposit located in (%s)."), txt_tile) + break + case 16: + //txt_message = format(translate(" (%s)."), txt_tile) + break + case 17: + //txt_message = format(translate(" (%s)."), txt_tile) break } @@ -116,7 +187,7 @@ function get_tile_message(id, tile) { } -/* +/** * messages with a string/digit include * * id - message id @@ -136,25 +207,25 @@ function get_data_message(id, data) { local txt_message = "" switch(id) { - case: 1 + case 1: txt_message = format(translate("You must build the %d stops first."), data) break - case: 2 + case 2: txt_message = format(translate("Only %d stops are necessary."), data) break - case: 3 + case 3: break - case: 4 + case 4: break - case: 5 + case 5: break - case: 6 + case 6: break - case: 7 + case 7: break } @@ -163,8 +234,7 @@ function get_data_message(id, data) { } - -/* +/** * messages with a string/digit and tile * * id - message id @@ -175,7 +245,7 @@ function get_data_message(id, data) { * 1 = Stops should be built in [%s] (x, y, z). * 2 = You must build a stop in [%s] first (x, y, z). * 3 = Select station No.%d") (x, y, z). - * + * 4 = Dock No.%d must accept goods (x, y, z). * * * @@ -183,42 +253,57 @@ function get_data_message(id, data) { */ function get_tiledata_message(id, data, tile) { local txt_tile = "" - if ( tile.len() == 2 ) { + /*if ( tile.len() == 2 ) { txt_tile = coord_to_string(tile) } else if ( tile.len() == 3 ) { txt_tile = coord3d_to_string(tile) } else { txt_tile = tile + }*/ + local count = 0 + try { + count = tile.len() + if ( count == 2 ) { + txt_tile = coord_to_string(tile) + } else if ( tile.len() == 3 ) { + txt_tile = coord3d_to_string(tile) + } else { + txt_tile = tile + } + } + catch(ev) { + txt_tile = coord_to_string(tile) } + local txt_message = "" switch(id) { - case: 1 + case 1: txt_message = format(translate("Stops should be built in [%s]"), data)+" ("+txt_tile+")." break - case: 2 + case 2: txt_message = format(translate("You must build a stop in [%s] first"), data)+" ("+txt_tile+")." break - case: 3 + case 3: txt_message = format(translate("Select station No.%d"), data)+" ("+txt_tile+")." break - case: 4 - + case 4: + txt_message = format(translate("Dock No.%d must accept goods (%s)."), data, txt_tile) break - case: 5 + case 5: break - case: 6 + case 6: break - case: 7 + case 7: break - case: 8 + case 8: break - case: 9 + case 9: break } @@ -227,14 +312,65 @@ function get_tiledata_message(id, data, tile) { } +function bus_result_message(nr, name, veh, cov) { + switch (nr) { + case 0: + return format(translate("Select the Bus [%s]."), name) + break -/* + case 1: + return format(translate("The number of bus must be [%d]."), cov) + break + case 2: + return format(translate("The number of convoys must be [%d], press the [Sell] button."), cov) + case 3: + return translate("The bus must be [Passengers].") + break + case 4: + return format(translate("Must not use trailers [%d]."),veh-1) + break + default: + return translate("The convoy is not correct.") + break + } +} +/** + * label messages + * + * + */ +function get_label_text(id) { + local txt_message = "" + switch(id) { + case 1: + txt_message = translate("Place Stop here!.") + break + case 2: + txt_message = translate("Build a Bridge here!.") + break + case 3: + break + case 4: -*/ + break + case 5: + + break + case 6: + + break + case 7: + + break + } + + return txt_message + +} diff --git a/de.tab b/de.tab index 05caeb2..7984c0f 100644 --- a/de.tab +++ b/de.tab @@ -1,23 +1,23 @@ -################################################################################# +§################################################################################# # for translate see # # https://simutrans-germany.com/translator_page/scenarios/scenario_5/ # ################################################################################# Action not allowed Aktion nicht erlaubt Advance is not allowed with the game paused. -Kein Fortschritt möglich während das Spiel in Pause ist. +Kein Fortschritt möglich während das Spiel in Pause ist. Advance not allowed Fortschritt nicht erlaubt Advanced Topics Fortgeschrittene Themen All wagons must be for [%s]. -Alle Wagen müssen für [%s] geeignet sein. +Alle Wagen müssen für [%s] geeignet sein. All wagons must be for: -Alle Wagen müssen geeignet sein für +Alle Wagen müssen geeignet sein für Are you lost ?, see the instructions shown below. Sind Sie verloren? Siehe die unten gezeigten Anweisungen. Build a Bridge here!. -Baue eine Brücke hier +Baue eine Brücke hier Build a Depot here!. Baue hier ein Depot! Build a Dock here!. @@ -47,19 +47,21 @@ Bus-Netzwerk Chapter Kapitel Chapter {number} - {cname} complete, next Chapter {nextcname} start here: ({coord}). -Kapitel {number} - {cname} abgeschlossen, nächstes Kapitel {nextcname} beginnt hier: ({coord}). +Kapitel {number} - {cname} abgeschlossen, nächstes Kapitel {nextcname} beginnt hier: ({coord}). +Chapter {number} - {cname} complete. +Kapitel {number} - {cname} abgeschlossen. Checking Compatibility -Versionsprüfung +Versionsprüfung Choose a different stop. -Wählen Sie eine andere Haltestelle. +Wählen Sie eine andere Haltestelle. Click on the stop Klicken Sie auf die Haltestelle Connect the road here -Verbinde die Straße hier -Connect the Track here -Verbinde den Weg hier +Verbinde die Straße hier +Connect the Track here (%s). +Verbinde den Weg hier (%s). Creating Schedules is currently not allowed -Das Erstellen von Fahrplänen ist derzeit nicht zulässig +Das Erstellen von Fahrplänen ist derzeit nicht zulässig Dock No.%d must accept [%s] Dock Nr.%d muss %s akzeptieren empty chapter @@ -69,37 +71,35 @@ Erweiterungen sind nicht erlaubt. First buy an Airplane [%s]. Kaufen Sie zuerst ein Flugzeug [%s]. First create a line for the vehicle. -Erstellen Sie zunächst eine Linie für das Fahrzeug. +Erstellen Sie zunächst eine Linie für das Fahrzeug. First you must build a tunnel section. -Zuerst müssen Sie einen Tunnelabschnitt bauen. +Zuerst müssen Sie einen Tunnelabschnitt bauen. First you must lower the layer level. -Zuerst müssen Sie die Ebene absenken. +Zuerst müssen Sie die Ebene absenken. First you must Upper the layer level. -Zuerst müssen Sie den Grund erhöhen. +Zuerst müssen Sie den Grund erhöhen. First you need to activate the underground view / sliced map view. -Zuerst müssen Sie die Untergrundansicht / Ebene durch Karte aktivieren. +Zuerst müssen Sie die Untergrundansicht / Ebene durch Karte aktivieren. Flat slope here!. Flache Ebene hier! Getting Started Anfangen Go to next step -weiter zum nächsten Schritt +weiter zum nächsten Schritt Here Hier Incorrect vehicle configuration, check vehicle status. -Falsche Fahrzeugkonfiguration, Fahrzeugstatus prüfen. -Indicates the limits for using construction tools -Gibt die Grenzwerte für die Verwendung von Konstruktionswerkzeugen an. +Falsche Fahrzeugkonfiguration, Fahrzeugstatus prüfen. +Indicates the limits for using construction tools (%s). +Gibt die Grenzwerte für die Verwendung von Konstruktionswerkzeugen an. (%s) Industrial Efficiency Produktion steigern bei Industrien It is not a slope. Dies ist kein Hang. It is not allowed to start vehicles. -Fahrzeuge dürfen nicht gestartet werden. +Fahrzeuge dürfen nicht gestartet werden. It is not flat terrain. Dies ist keine flache Ebene. -It is not possible to build stops at intersections -Es ist nicht möglich, Haltestellen an Kreuzungen zu bauen It must be a block signal! Es muss ein Blocksignal sein! It must be a slope. @@ -113,29 +113,33 @@ Lasst uns beginnen! Mail Extension Here!. Post-Erweiterung hier Modify the terrain here -Ändern Sie hier das Gelände +Ändern Sie hier das Gelände Must choose a locomotive [%s]. -Muss eine Lok wählen [%s]. +Muss eine Lok wählen [%s]. Must choose a locomotive: -Wählen Sie eine Lok vom Typ: +Wählen Sie eine Lok vom Typ: Must not use trailers [%d]. -Darf keine Anhänger [%d] verwenden. +Darf keine Anhänger [%d] verwenden. No barges allowed. -Keine Lastkähne erlaubt. +Keine Lastkähne erlaubt. No intersections allowed Keine Kreuzungen erlaubt Number of convoys in the depot: Anzahl der Konvois im Depot: Only %d stops are necessary. Es sind nur %d Stopps erforderlich. +Only air schedules allowed +Nur Flugzeugfahrpläne erlaubt Only delete signals. -Nur Signale löschen. +Nur Signale löschen. Only one train is allowed, press the [Sell] button. -Es ist nur ein Zug zulässig. Drücken Sie die Taste [Verkaufen]. +Es ist nur ein Zug zulässig. Drücken Sie die Taste [Verkaufen]. Only railway schedules allowed -Nur Bahnfahrpläne erlaubt +Nur Bahnfahrpläne erlaubt Only road schedules allowed -Nur Straßenfahrpläne erlaubt +Nur Straßenfahrpläne erlaubt +Only water schedules allowed +Nur Schifffahrpläne erlaubt Place a block signal here Platzieren Sie hier ein Blocksignal Place a Tunnel here!. @@ -145,39 +149,39 @@ Platziere hier ein Singnal! Place Stop here!. Hier Halt platzieren Place the Road here!. -Platzieren Sie die Straße hier -Place the shipyard here -Platzieren Sie die Werft hier -Place the stops at the marked points -Platzieren Sie die Stationen an den markierten Stellen +Platzieren Sie die Straße hier +Place the shipyard here (%s). +Platzieren Sie die Werft hier (%s). +Place the stops at the marked points. +Platzieren Sie die Stationen an den markierten Stellen. Press [Ctrl] to build a tunnel entrance here -Drücken Sie [Strg], um hier einen Tunneleingang zu erstellen +Drücken Sie [Strg], um hier einen Tunneleingang zu erstellen Press the [Copy Backward] button, then set the Minimum Load and Month Wait Time at the first stop!. -Drücken Sie den Button [Rückfahrkarte] und stellen Sie die Mindestladung und die maximale monatliche Wartezeit beim ersten Stopp ein!. +Drücken Sie den Button [Rückfahrkarte] und stellen Sie die Mindestladung und die maximale monatliche Wartezeit beim ersten Stopp ein!. Raise ground here -Ebene hier erhöhen +Ebene hier erhöhen Riding the Rails Auf der Schiene fahren Ruling the Roads -Die Straßen regieren +Die Straßen regieren Savegame has a different {more_info} script version! Maybe, it will work. Spielstand hat eine andere {more_info} Skriptversion! Vielleicht wird es funktionieren. Select station No.%d -Station Nr. %d auswählen +Station Nr. %d auswählen Select station No.%d [%s] -Wählen Sie die Station Nr. %d +Wählen Sie die Station Nr. %d Select the Bus [%s]. -Wählen Sie den Bus [%s] aus +Wählen Sie den Bus [%s] aus Select the dock No.%d -Wählen Sie das Dock Nr. %d aus +Wählen Sie das Dock Nr. %d aus Select the other station -Wählen Sie die Station +Wählen Sie die Station Select the other station first -Wählen Sie zuerst die Station +Wählen Sie zuerst die Station Setting Sail Segel setzen Slope Height. -Hanghöhe +Hanghöhe Station No.%d here Station Nr. %d hier Station No.%d must accept goods @@ -192,10 +196,8 @@ Taking to the Air In die Luft gehen Text label Textmarker -The %s stop must be for %s -Stop [%s] muss für [%s] sein. Verwenden Sie das Werkzeug 'Entfernen' The bus must be [Passengers]. -Der Bus muss [Passagiere] befördern können. +Der Bus muss [Passagiere] befördern können. The cabin: Die Kabine: The convoy is not correct. @@ -203,9 +205,9 @@ Der Konvoi ist nicht korrekt. The Depot is correct. Das Depot ist korrekt. The extension building for station [%s] must be a [%s], use the 'Remove' tool -Das Erweiterungsgebäude für Station [%s] muss ein [%s] sein. Verwenden Sie das Werkzeug 'Entfernen' +Das Erweiterungsgebäude für Station [%s] muss ein [%s] sein. Verwenden Sie das Werkzeug 'Entfernen' The extension building for station [%s] must be for [%s], use the 'Remove' tool -Das Erweiterungsgebäude für Station [%s] muss für [%s] sein. Verwenden Sie das Werkzeug 'Entfernen' +Das Erweiterungsgebäude für Station [%s] muss für [%s] sein. Verwenden Sie das Werkzeug 'Entfernen' The first train Der erste Zug The forgotten Air transport @@ -223,11 +225,11 @@ Die Anzahl der Flugzeuge im Hangar muss [%d] betragen. The number of bus must be [%d]. Die Anzahl der Busse muss [%d] sein. The number of convoys must be [%d], press the [Sell] button. -Die Anzahl der Konvois muss [%d] betragen, drücken Sie die Schaltfläche [Verkaufen]. +Die Anzahl der Konvois muss [%d] betragen, drücken Sie die Schaltfläche [Verkaufen]. The number of convoys must be [%d]. Die Anzahl der Konvois muss [%d] betragen. The number of planes in the hangar must be [%d], use the [sell] button. -Die Anzahl an Flugzeugen im Hangar darf [%d] nicht überschreiten. Verwende die [Verkaufen]-Taste +Die Anzahl an Flugzeugen im Hangar darf [%d] nicht überschreiten. Verwende die [Verkaufen]-Taste The number of ships must be [%d]. Die Anzahl der Schiffe muss [%d] betragen. The number of trucks must be [%d]. @@ -237,25 +239,25 @@ Die Anzahl der Wagons muss [%d] betragen. The number of wagons must be: Die Anzahl an Waggons muss betragen: The Plane must be for [%s]. -Das Flugzeug muss für [%s] sein. -The route is complete, now you may dispatch the vehicle from the depot -Die Route ist fertiggestellt. Sie mögen nun die Fahrzeuge aus dem Depot lassen. +Das Flugzeug muss für [%s] sein. +The route is complete, now you may dispatch the vehicle from the depot (%s). +Die Route ist fertiggestellt. Sie mögen nun die Fahrzeuge aus dem Depot (%s) lassen. The schedule is not correct. Der Fahrplan ist falsch. The schedule list must not be empty. Der Fahrplan darf nicht leer sein. The schedule needs to have %d waystops, but there are %d. -Der Fahrplan sollte %d Halte beinhalten, gezählt wurden jedoch %d. +Der Fahrplan sollte %d Halte beinhalten, gezählt wurden jedoch %d. The second train Der zweite Zug The ship must be for [%s]. -Das Schiff muss für [%s] sein. +Das Schiff muss für [%s] sein. The signal does not point in the correct direction Das Signal zeigt in die falsche Richtung The signal is ready! Das Signal ist bereit! The slope is ready. -Die Aufschüttung ist bereit. +Die Aufschüttung ist bereit. The slope points to the [%s]. Der Hang zeigt nach [%s]. The slope points to the Northeast. @@ -273,19 +275,19 @@ Die Strecke ist falsch, es muss sein: %s. Verwende das Abrisswerkzeug. The track is stuck, use the [Remove] tool here! Die Strecke ist blockiert. Verwende das Abrisswerkzeug. The trailers numbers must be [%d]. -Die Anzahl von Anhängern muss [%d] sein. +Die Anzahl von Anhängern muss [%d] sein. The train cannot be shorter than [%d] tiles. -Der Zug darf nicht kürzer als [%d] Kacheln sein. +Der Zug darf nicht kürzer als [%d] Kacheln sein. The train may not be longer than [%d] tiles. -Der Zug darf nicht kürzer als [%d] Kacheln sein. +Der Zug darf nicht länger als [%d] Kacheln sein. The truck must be for [%s]. -Der LKW muss für [%s] sein. +Der LKW muss für [%s] sein. The tunnel is already at the correct level Der Tunnel ist schon auf der richtigen Ebene. The tunnel is not correct, use the [Remove] tool here -Der Tunnel ist nicht korrekt, verwenden Sie die Schaltfläche [Entfernen] hier. +Der Tunnel ist nicht korrekt, verwenden Sie die Schaltfläche [Entfernen] hier. The vehicle must be [%s]. -Das Fahrzeug muss [%s] heißen. +Das Fahrzeug muss [%s] heißen. The waittime in waystop {nr} '{name}' isn't {wait} {pos} Die max. Wartezeit bei Halt {name} {pos} ist nicht {wait} There is already a station. @@ -297,7 +299,7 @@ Hier gibt es schon ein Umspannwerk! This is a factory Das ist eine Fabrik This is a link -Das ist eine Verknüpfung +Das ist eine Verknüpfung This is a station Das ist eine Station This is a town centre @@ -312,63 +314,79 @@ Tutorial Scenario complete. Tutorial Scenario beendet. Updating text ... Waiting ... Text aktualisieren ... Bitte warten ... -You are outside the allowed limits! -Sie befinden sich außerhalb der zulässigen Grenzen! -You can only build on a straight road -Sie können nur auf einer geraden Straße bauen +You are outside the allowed limits! (%s) +Sie befinden sich außerhalb der zulässigen Grenzen! (%s) You can only build stops on flat ground -Sie können Halte nur auf ebenem Boden bauen -You can only build stops on roads -Sie können nur auf Straßen Haltestellen bauen +Sie können Halte nur auf ebenem Boden bauen You can only delete the stations. -Sie können nur den Bahnhof löschen +Sie können nur den Bahnhof löschen You can only delete the stops. -Sie können nur die Halte löschen +Sie können nur die Halte löschen +You can only delete the stops/extensions. +Sie können nur die Haltestellen/Erweiterungen löschen. You can only use this tool in the city -Sie können dieses Tool nur in der Stadt verwenden +Sie können dieses Tool nur in der Stadt verwenden You can only use vehicles: -Sie können nur folgende Fahrzeuge benutzen: +Sie können nur folgende Fahrzeuge benutzen: You didn't build a station at {pos} Du hast noch keine Haltestelle an {pos} gebaut You must build a stop in [%s] -Sie müssen einen Stopp in [%s] bauen +Sie müssen einen Stopp in [%s] bauen You must build a stop in [%s] first -Sie müssen zuerst den Halt in [%s] bauen +Sie müssen zuerst den Halt in [%s] bauen You must build the %d stops first. -Sie müssen zuerst den Halt %d bauen +Sie müssen zuerst den Halt %d bauen You must build the bridge here -Sie müssen hier eine Brücke bauen +Sie müssen hier eine Brücke bauen You must build the depot in -Sie müssen ein Depot bauen in -You must build the train depot in -Sie müssen ein Eisenbahndepot bauen in +Sie müssen ein Depot bauen in +You must build the train depot in (%s). +Sie müssen ein Eisenbahndepot bauen in (%s). You must build track in -Sie müssen zuerst Schienen bauen in +Sie müssen zuerst Schienen bauen in You must click on the stops -Sie müssen auf die Haltestellen klicken +Sie müssen auf die Haltestellen klicken You must connect the two cities first. -Sie müssen zuerst die beiden Städte verbinden +Sie müssen zuerst die beiden Städte verbinden You must first build a stretch of road -Sie müssen zuerst einen Straßenabschnitt bauen +Sie müssen zuerst einen Straßenabschnitt bauen You must first buy a bus [%s]. -Sie müssen erst den Bus [%s] kaufen +Sie müssen erst den Bus [%s] kaufen You must first buy a locomotive [%s]. -Sie müssen erst die Lokomotive [%s] kaufen +Sie müssen erst die Lokomotive [%s] kaufen You must first buy a ship [%s]. -Sie müssen erst das Schiff [%s] kaufen +Sie müssen erst das Schiff [%s] kaufen You must lift the land with a flat slope first -Sie müssen den Grund zuerst eben anheben +Sie müssen den Grund zuerst eben anheben You must lower the ground first -Sie müssen zuerst den Boden absenken +Sie müssen zuerst den Boden absenken You must press the [Copy backward] button to complete the route. -Sie müssen die Taste [Rückfahrkarte] drücken, um die Route abzuschließen. +Sie müssen die Taste [Rückfahrkarte] drücken, um die Route abzuschließen. You must select a [%s]. -Sie müssen erst [%s] auswählen -You must select the deposit located in -Sie müssen das Depot auswählen in +Sie müssen erst [%s] auswählen +You must select the deposit located in (%s). +Sie müssen das Depot auswählen in (%s). You must upper the ground first -Sie müssen zuerst den Boden anheben +Sie müssen zuerst den Boden anheben You must use the inspection tool -Sie müssen das Abfragewerkzeug (Taste a) benutzen +Sie müssen das Abfragewerkzeug (Taste a) benutzen You must use the tool to raise the ground here -Sie müssen das Werkzeug verwenden, um den Boden hier anzuheben +Sie müssen das Werkzeug verwenden, um den Boden hier anzuheben +#_________________________________errer message_________________________________ +#_________________________________errer message_________________________________ +Selected harbour accept not %s. +Ausgewählter Hafen akzeptiert keine %s. +#_________________________________error message_________________________________ +#_________________________________error message_________________________________ +Action not allowed (%s). +Aktion auf Feld (%s) nicht erlaubt. +Place the mail extension at the marked tiles. +Platzieren Sie den Post Erweiterungsbau an den markierten Stellen. +Selected extension accept not %s. +Ausgewählte Erweiterung akzeptiert keine %s. +Selected halt accept not %s. +Ausgewählter Halt akzeptiert keine %s. +Selected way is not correct! +Ausgewählter Weg ist nicht Korrekt! +This stop already accepts mail. +Dieser Halt akzeptiert bereits Post. diff --git a/de/about.txt b/de/about.txt index 4f361a1..d1585e8 100644 --- a/de/about.txt +++ b/de/about.txt @@ -1 +1 @@ -

Scenario: {short_description}
Version: {version}
Author: {author}
Übersetzung: {translation}

\ No newline at end of file +

Scenario: {short_description}
Version: {version}
Author: {author}
Übersetzung: {translation}

\ No newline at end of file diff --git a/de/chapter_01/goal.txt b/de/chapter_01/goal.txt index 364ba0a..dc058ee 100644 --- a/de/chapter_01/goal.txt +++ b/de/chapter_01/goal.txt @@ -1 +1 @@ -

{scr}

{txtst_01}Schritt A - Über das Tutorial-Szenario
{step_01}

{txtst_02}Schritt B - Sich bewegen
{step_02}

{txtst_03}Schritt C - Die Details sehen
{step_03}

{txtst_04}Schritt D - Die Minikarte und andere Fenster
{step_04}

\ No newline at end of file +

{scr}

{txtst_01}Schritt A - Über das Tutorial-Szenario
{step_01}

{txtst_02}Schritt B - Sich bewegen
{step_02}

{txtst_03}Schritt C - Die Details sehen
{step_03}

{txtst_04}Schritt D - Die Minikarte und andere Fenster
{step_04}

\ No newline at end of file diff --git a/de/chapter_01/goal_step_01.txt b/de/chapter_01/goal_step_01.txt index 40e5718..7ff29dc 100644 --- a/de/chapter_01/goal_step_01.txt +++ b/de/chapter_01/goal_step_01.txt @@ -1 +1 @@ -

In diesem ersten Schritt werden wir einige grundlegende Aspekte des Tutorial-Szenarios erläutern.

Warnfenster

Diese werden verwendet, um den Spieler zu warnen, wenn er etwas falsch macht. Beispielsweise das falsche Werkzeug verwendet. Die Ereignisse im Szenario, die Pop-ups anzeigen, sind:
1 - Werkzeugverwendung, wenn Sie mit dem falschen Werkzeug auf die Karte klicken.
2 - Fahrzeugroute, wenn der Fahrplan des Fahrzeugs falsch ist.
3 - Fahrzeuge starten, wenn der erforderliche Fahrzeugtyp falsch ist.

Markierungen und Beschriftungen

Eine Reihe von Hinweisen auf der Karte werden verwendet, um dem Spieler beim Auffinden/Lokalisieren von Dingen zu helfen. Die drei Arten von Anzeigen sind:
1 - Textmarkierungen, diese Objekte werden verwendet, um einen Leittext anzuzeigen und mit X die Grenzen für die Verwendung von Werkzeugen anzuzeigen.
2 - Markierungen auf Objekten, werden verwendet, um Objekte, auf die Sie klicken müssen, rot hervorzuheben.
3 - Markierungen auf dem Gelände, werden verwendet, um Objekte hervorzuheben. Beim Gelände spielen sie auch eine optische Rolle bei der Verbindung von Wegen.

Links

In diesem Szenario werden Sie häufig Links zu Elementpositionen sehen. Wenn Sie auf einen davon klicken, wird die Karte auf die angegebene Stelle positioniert. Zum Beispiel gelangen Sie beim anklicken von {pos} direkt zur Stadt {town}. Sie werden hauptsächlich verwendet, um zu folgenden Orten zu gelangen: Städte ({pos1}), Fabriken ({pos2}), Stationen ({pos3}) usw.

Kapitel-/Schritt-Regressionen

Dies geschieht nur, wenn Sie ein im Umlauf befindliches Fahrzeug entfernen. Unabhängig davon, in welchem Kapitel Sie sich befinden, werden Sie zurückgeschickt, um das Problem zu beheben.

Link 'Schritt überspringen'

Es handelt sich um einen speziellen Linktyp, der es Ihnen ermöglicht, den Kapitel-Schritt automatisch auszuführen zu lassen.

Szenariomeldungen

Szenariomeldungen sind standardmäßig deaktiviert. Sie können sie auf folgende Weise aktivieren:
- Wählen Sie im Hauptmenü Mailbox und klicken Sie im sich öffnenden Fenster die Schaltfläche Optionen
- Jede Zeile steht für bestimmte Nachrichten. Ausführliche Erklärungen in der Hilfe (? im Fenstertitel).

Tipp: Für Szenario-Nachrichten wird empfohlen, nur das Temporäre Fenster zu aktivieren.

Hinweis: Es dauert immer einige Sekunden, bis der Text in diesem Fenster aktualisiert wird.

Um zum nächsten Schritt zu gelangen, müssen Sie auf diesen Link {link} klicken.

\ No newline at end of file +

In diesem ersten Schritt werden wir einige grundlegende Aspekte des Tutorial-Szenarios erläutern.

Warnfenster

Diese werden verwendet, um den Spieler zu warnen, wenn er etwas falsch macht. Beispielsweise das falsche Werkzeug verwendet. Die Ereignisse im Szenario, die Pop-ups anzeigen, sind:
1 - Werkzeugverwendung, wenn Sie mit dem falschen Werkzeug auf die Karte klicken.
2 - Fahrzeugroute, wenn der Fahrplan des Fahrzeugs falsch ist.
3 - Fahrzeuge starten, wenn der erforderliche Fahrzeugtyp falsch ist.

Markierungen und Beschriftungen

Eine Reihe von Hinweisen auf der Karte werden verwendet, um dem Spieler beim Auffinden/Lokalisieren von Dingen zu helfen. Die drei Arten von Anzeigen sind:
1 - Textmarkierungen, diese Objekte werden verwendet, um einen Leittext anzuzeigen und mit X die Grenzen für die Verwendung von Werkzeugen anzuzeigen.
2 - Markierungen auf Objekten, werden verwendet, um Objekte, auf die Sie klicken müssen, rot hervorzuheben.
3 - Markierungen auf dem Gelände, werden verwendet, um Objekte hervorzuheben. Beim Gelände spielen sie auch eine optische Rolle bei der Verbindung von Wegen.

Links

In diesem Szenario werden Sie häufig Links zu Elementpositionen sehen. Wenn Sie auf einen davon klicken, wird die Karte auf die angegebene Stelle positioniert. Zum Beispiel gelangen Sie beim anklicken von {pos} direkt zur Stadt {town}. Sie werden hauptsächlich verwendet, um zu folgenden Orten zu gelangen: Städte ({pos1}), Fabriken ({pos2}), Stationen ({pos3}) usw.

Kapitel-/Schritt-Regressionen

Dies geschieht nur, wenn Sie ein im Umlauf befindliches Fahrzeug entfernen. Unabhängig davon, in welchem Kapitel Sie sich befinden, werden Sie zurückgeschickt, um das Problem zu beheben.

Link '{next_step}'

Es handelt sich um einen speziellen Linktyp, der es Ihnen ermöglicht, den Kapitel-Schritt automatisch auszuführen zu lassen.

Meldungen
Szenariomeldungen sind standardmäßig deaktiviert. Sie können sie auf folgende Weise aktivieren:
- Wählen Sie im Hauptmenü Meldungen und klicken Sie im sich öffnenden Fenster die Schaltfläche Optionen
- Jede Zeile steht für bestimmte Nachrichten. Ausführliche Erklärungen in der Hilfe (? im Fenstertitel).

Tipp: Für Szenario-Nachrichten wird empfohlen, nur das Temporäre Fenster zu aktivieren.

Hinweis: Es dauert immer einige Sekunden, bis der Text in diesem Fenster aktualisiert wird.

Um zum nächsten Schritt zu gelangen, müssen Sie auf diesen Link {link} klicken.

\ No newline at end of file diff --git a/de/chapter_01/goal_step_02.txt b/de/chapter_01/goal_step_02.txt index 0f849a1..34e0853 100644 --- a/de/chapter_01/goal_step_02.txt +++ b/de/chapter_01/goal_step_02.txt @@ -1 +1 @@ -

Wir empfehlen Ihnen, das Raster für dieses Tutorial durch Drücken der Taste # zu aktivieren. Darüber hinaus wird dringend empfohlen, die Bäume entweder über das Menü Einstellungen - Anzeige so zu konfigurieren, dass sie transparent oder minimiert sind. Das Umschalten zwischen Groß und Klein/Transparent ist durch Drücken der Taste % möglich.

Sie können die Kartenansicht mit dem Mausrad oder den Tasten Bild runter/Bild hoch vergrößern oder verkleinern.

Sie können sich auf der Karte bewegen, indem Sie die Maus mit gedrückter Maustaste (rechts/links) bewegen. Die Cursortasten oder die Tasten des Ziffernblocks (wenn aktiv) können ebenfalls verwendet werden.

Sie können die Karte drehen, indem Sie Umschalt+r (Großbuchstabe R) drücken oder das Werkzeug Karte drehen aus dem Hauptmenü auswählen.

Versuchen Sie, in die Kamera hinein- und heraus zu zoomen und sich auf der Karte zu bewegen.

Um mit dem nächsten Schritt fortzufahren, drehen Sie die Karte.

\ No newline at end of file +

{img_grid} Kartenraster
Wir empfehlen Ihnen, das Raster für dieses Tutorial durch Drücken der Taste # zu aktivieren.

{img_display} Einstellungen - Anzeige
Darüber hinaus wird dringend empfohlen, die Bäume entweder über das Menü Einstellungen - Anzeige so zu konfigurieren, dass sie transparent oder minimiert sind. Das Umschalten zwischen Groß und Klein/Transparent ist durch Drücken der Taste % möglich.

Sie können die Kartenansicht mit dem Mausrad oder den Tasten Bild runter/Bild hoch vergrößern oder verkleinern.

Sie können sich auf der Karte bewegen, indem Sie die Maus mit gedrückter Maustaste (rechts/links) bewegen. Die Cursortasten oder die Tasten des Ziffernblocks (wenn aktiv) können ebenfalls verwendet werden.

Karte drehen
Sie können die Karte drehen, indem Sie Umschalt+r (Großbuchstabe R) drücken oder das Werkzeug Karte drehen aus dem Hauptmenü auswählen.

Versuchen Sie, in die Kamera hinein- und heraus zu zoomen und sich auf der Karte zu bewegen.

Um mit dem nächsten Schritt fortzufahren, drehen Sie die Karte.

\ No newline at end of file diff --git a/de/chapter_01/goal_step_03.txt b/de/chapter_01/goal_step_03.txt index f72e279..b41c5ac 100644 --- a/de/chapter_01/goal_step_03.txt +++ b/de/chapter_01/goal_step_03.txt @@ -1 +1 @@ -

Da Sie nun wissen, wie Sie sich auf der Karte bewegen, besteht der nächste Schritt darin, Informationen über Elemente auf der Karte zu erhalten.

Abfragewerkzeug

Dies ist das Hauptwerkzeug des Spiels. Es kann kostenlos verwendet werden und ermöglicht die Anzeige des Informationsfensters für jedes Element auf der Karte, sofern vorhanden und aktiviert. Es ist auch das standardmäßig ausgewählte Werkzwug. Ist dies nicht der Fall, kann es über das Hauptmenü (das Lupensymbol) oder durch drücken der Taste a aktiviert werden.

Rechts in der Statuszeile werden die Koordinaten der Position (x,y,z) des Cursors angezeigt. Die Statuszeile befindet sich standardmäßig am unteren Rand.

Klicken Sie zunächst mit dem {tool1} auf {pos}. Nachdem Sie auf das Monument geklickt haben, müssen Sie das Informationsfenster schließen, indem Sie oben auf X klicken. Drücken Sie Esc, um das aktive geöffnete Fenster zu schließen oder indem Sie die Löschtaste drücken, um alle Fenster zu schließen.

Abschließend klicken Sie mit dem {tool1} auf die {buld_name} und schließen das Informationsfenster.

Tipp: Sie können im Informationsfenster auf das Bild des Objekts klicken und die Karte wird auf dessen Position zentriert.

\ No newline at end of file +

Da Sie nun wissen, wie Sie sich auf der Karte bewegen, besteht der nächste Schritt darin, Informationen über Elemente auf der Karte zu erhalten.

Abfragewerkzeug
Dies ist das Hauptwerkzeug des Spiels. Es kann kostenlos verwendet werden und ermöglicht die Anzeige des Informationsfensters für jedes Element auf der Karte, sofern vorhanden und aktiviert. Es ist auch das standardmäßig ausgewählte Werkzwug. Ist dies nicht der Fall, kann es über das Hauptmenü (das Lupensymbol) oder durch drücken der Taste a aktiviert werden.

Rechts in der Statuszeile werden die Koordinaten der Position (x,y,z) des Cursors angezeigt. Die Statuszeile befindet sich standardmäßig am unteren Rand.

Klicken Sie zunächst mit dem {tool1} auf {pos}. Nachdem Sie auf das Monument geklickt haben, müssen Sie das Informationsfenster schließen, indem Sie oben auf X klicken. Drücken Sie Esc, um das aktive geöffnete Fenster zu schließen oder indem Sie die Löschtaste drücken, um alle Fenster zu schließen.

Abschließend klicken Sie mit dem {tool1} auf die {buld_name} und schließen das Informationsfenster.

Tipp: Sie können im Informationsfenster auf das Bild des Objekts klicken und die Karte wird auf dessen Position zentriert.

\ No newline at end of file diff --git a/de/chapter_01/goal_step_04.txt b/de/chapter_01/goal_step_04.txt index d45c793..bbf4c66 100644 --- a/de/chapter_01/goal_step_04.txt +++ b/de/chapter_01/goal_step_04.txt @@ -1 +1 @@ -

Es gibt eine Reihe von Fenstern mit wichtigen Informationen.

Die Minikarte kann durch Drücken der Taste m angezeigt werden.
Das Fenster Finanzen kann durch Drücken der Taste f angezeigt werden.
Die Meldungen können durch drücken von Umschalt+b angezeigt werden.
Weitere Informationen über die Stadt erhalten Sie, indem Sie mit dem {tool1} auf das Rathaus klicken.

Um zum nächsten Kapitel zu gelangen, klicken Sie mit dem {tool1} auf das {pos2} von {town}.

\ No newline at end of file +

Es gibt eine Reihe von Fenstern mit wichtigen Informationen.

Minikarte
Die Minikarte kann durch Drücken der Taste m angezeigt werden.

Finanzen
Das Fenster Finanzen kann durch Drücken der Taste f angezeigt werden.

Meldungen
Die Meldungen können durch drücken von Umschalt+b angezeigt werden.

{tool1}
Weitere Informationen über die Stadt erhalten Sie, indem Sie mit dem {tool1} auf das Rathaus klicken.

Um zum nächsten Kapitel zu gelangen, klicken Sie mit dem {tool1} auf das {pos2} von {town}.

\ No newline at end of file diff --git a/de/chapter_02/06_1-2.txt b/de/chapter_02/06_1-2.txt index b5e5e1f..af4e52b 100644 --- a/de/chapter_02/06_1-2.txt +++ b/de/chapter_02/06_1-2.txt @@ -1 +1 @@ -

Nachdem die Brücke nun repariert wurde, benötigt die Stadt {name} eine Linie mit 3 Bussen, die Touristen vom im Bau befindlichen Pier {st1} befördern.

{tx} Starten der Busse.

Die Linien:

Linien sind hilfreich um mehrere Fahrzeuge zu kontrollieren, wenn sie dieselbe Route bedienen. Sie können Linien auch einen benutzerdefinierten Namen geben, um sie leichter identifizieren. Linien machen es auch leichter, Fahrzeuge auszuwechseln, da diese den Fahrplan behalten.
Linien können über das Fenster Linienverwaltung verwaltet werden, das über die Symbolleiste oder durch Drücken der Taste w aufgerufen werden kann.

Erste Schritte:

[1] Klicken Sie zunächst mit dem {tool1} auf das Straßendepot{pos} und wählen Sie im Depotfenster den Bus {bus1}.
[2] Es ist notwendig, ein Linie zu konfigurieren zur gleichzeitigen Verwaltung mehrerer Fahrzeuge. Klicken Sie bei Bedient Linie: auf das Auswahlfeld und klicken Neue Linie erstellen an.

Alle Haltestellen auswählen:

[1] Wählen Sie die Haltestelle {st1} und konfigurieren Sie die Haltestelle wie folgt:
--> [a] Stellen Sie Mindestladung auf {load}% ein.
--> [b] Stellen Sie maximale Wartezeit, um {wait}.
[2] Wählen Sie die Haltestelle {st2} und alles so lassen, wie es ist.
[3] Wählen Sie die Haltestelle {st3} und alles so lassen, wie es ist.
[4] Wählen Sie die Haltestelle {st4} und alles so lassen, wie es ist.
[5] Wählen Sie die Haltestelle {st5} und alles so lassen, wie es ist.

Wichtiger Hinweis: Der Halt der im Linienplan markiert ist, ist der Halt den Fahrzeuge anfahren werden, die diese Linie zugewiesen bekommen. Deshalb sollte nach Zuweisung einer Linie im Fahrplan des Fahrzeuges geprüft werden, welcher Halt als nächstes angefahren wird. Dieser sollte ggf. durch anklicken auf einen Halt in der Nähe des Fahrzeuges geändert werden, um lange Fahrten zu vermeiden.

Abschließende Schritte:

[1] Geben Sie der Linie einen Namen und schließen Sie das Fenster, damit die Änderungen übernommen werden.
[2] Klicken Sie abschließend auf Starten, damit das Fahrzeug das Depot verlässt.

Um zum nächsten Schritt zu gelangen, starten Sie den Bus.

\ No newline at end of file +

Nachdem die Brücke nun repariert wurde, benötigt die Stadt {name} eine Linie mit 3 Bussen, die Touristen zum im Bau befindlichen Pier {stnam} befördern.

{tx} Starten der Busse.

Die Linien:

Linien sind hilfreich um mehrere Fahrzeuge zu kontrollieren, wenn sie dieselbe Route bedienen. Sie können Linien auch einen benutzerdefinierten Namen geben, um sie leichter identifizieren. Linien machen es auch leichter, Fahrzeuge auszuwechseln, da diese den Fahrplan behalten.
Linien können über das Fenster Linienverwaltung verwaltet werden, das über die Symbolleiste oder durch Drücken der Taste w aufgerufen werden kann.

Erste Schritte:

[1] Klicken Sie zunächst mit dem {tool1} auf das Straßendepot {dep} und wählen Sie im Depotfenster den Bus {bus1}.
[2] Es ist notwendig, eine Linie zu konfigurieren zur gleichzeitigen Verwaltung mehrerer Fahrzeuge. Klicken Sie bei Bedient Linie: auf das Auswahlfeld und klicken Neue Linie erstellen an.

Haltestellen auswählen:


{list}
[*] Wählen Sie die Haltestelle {stnam} und konfigurieren Sie diese wie folgt:
--> [a] Stellen Sie Mindestladung auf {load}% ein.
--> [b] Stellen Sie maximale Wartezeit auf {wait}.

Wichtiger Hinweis: Der Halt der im Linienplan markiert ist, ist der Halt den Fahrzeuge anfahren werden, die diese Linie zugewiesen bekommen. Deshalb sollte nach Zuweisung einer Linie im Fahrplan des Fahrzeuges geprüft werden, welcher Halt als nächstes angefahren wird. Dieser sollte ggf. durch anklicken auf einen Halt in der Nähe des Fahrzeuges geändert werden, um lange Fahrten zu vermeiden.

Abschließende Schritte:

[1] Geben Sie der Linie einen Namen und schließen Sie das Fenster, damit die Änderungen übernommen werden.
[2] Klicken Sie abschließend auf Starten, damit das Fahrzeug das Depot verlässt.

Um zum nächsten Schritt zu gelangen, starten Sie den Bus.

\ No newline at end of file diff --git a/de/chapter_02/06_2-2.txt b/de/chapter_02/06_2-2.txt index e39de02..38f1b31 100644 --- a/de/chapter_02/06_2-2.txt +++ b/de/chapter_02/06_2-2.txt @@ -1 +1 @@ -

Nachdem die Brücke nun repariert wurde, benötigt die Stadt {name} eine Linie mit 3 Bussen, die Touristen vom im Bau befindlichen Pier {st1} befördern.

{tx} Mehrere Fahrzeuge auf der selben Route

Linien zuordnen:

Bestehende Linien können neuen Fahrzeugen zugewiesen werden, sofern es sich um Fahrzeuge derselben Kategorie handelt. In diesem Beispiel werden wir unseren neuen Fahrzeugen die Linie {line} zuweisen.

Wichtiger Hinweis: Der Halt der im Linienplan markiert ist, ist der Halt den Fahrzeuge anfahren werden, die diese Linie zugewiesen bekommen. Deshalb sollte nach Zuweisung einer Linie im Fahrplan des Fahrzeuges geprüft werden, welcher Halt als nächstes angefahren wird. Dieser sollte ggf. durch anklicken auf einen Halt in der Nähe des Fahrzeuges geändert werden, um lange Fahrten zu vermeiden.

[1] Kaufen Sie zuerst einen Bus {bus1}.
[2] Wenn die Linie korrekt erstellt wurde, können Sie bei Bedient Linie: klicken und dann die Zeile {line} auswählen.
[3] Klicken Sie abschließend auf Starten.

Busse im Umlauf: {cir}/3

Um zum nächsten Schritt zu gelangen, starten Sie alle 3 Busse.

\ No newline at end of file +

Nachdem die Brücke nun repariert wurde, benötigt die Stadt {name} eine Linie mit 3 Bussen, die Touristen vom im Bau befindlichen Pier {stnam} befördern.

{tx} Mehrere Fahrzeuge auf der selben Route

Linien zuordnen:

Bestehende Linien können neuen Fahrzeugen zugewiesen werden, sofern es sich um Fahrzeuge derselben Kategorie handelt. In diesem Beispiel werden wir unseren neuen Fahrzeugen die Linie {line} zuweisen.

Wichtiger Hinweis: Der Halt der im Linienplan markiert ist, ist der Halt den Fahrzeuge anfahren werden, die diese Linie zugewiesen bekommen. Deshalb sollte nach Zuweisung einer Linie im Fahrplan des Fahrzeuges geprüft werden, welcher Halt als nächstes angefahren wird. Dieser sollte ggf. durch anklicken auf einen Halt in der Nähe des Fahrzeuges geändert werden, um lange Fahrten zu vermeiden.

[1] Kaufen Sie zuerst einen Bus {bus1}.
[2] Wenn die Linie korrekt erstellt wurde, können Sie bei Bedient Linie: klicken und dann die Zeile {line} auswählen.
[3] Klicken Sie abschließend auf Starten.

Busse im Umlauf: {cir}/3

Um zum nächsten Schritt zu gelangen, starten Sie alle 3 Busse.

\ No newline at end of file diff --git a/de/chapter_02/07_1-3.txt b/de/chapter_02/07_1-3.txt deleted file mode 100644 index de5408a..0000000 --- a/de/chapter_02/07_1-3.txt +++ /dev/null @@ -1 +0,0 @@ -

Da die Brücke nun repariert ist, benötigt die Stadt {name} eine Buslinie mit Verbindung zur Nachbarstadt {name2}.

{tx} Sie müssen zuerst die Halte in {name2} bauen.

Liste der Haltestellen:
{list}

Um zum nächsten Schritt zu gelangen, bauen Sie alle Halte.

\ No newline at end of file diff --git a/de/chapter_02/07_1-4.txt b/de/chapter_02/07_1-4.txt new file mode 100644 index 0000000..e881a83 --- /dev/null +++ b/de/chapter_02/07_1-4.txt @@ -0,0 +1 @@ +

Da die Brücke nun repariert ist, benötigt die Stadt {name} eine Buslinie mit Verbindung zur Nachbarstadt {name2}.

{img_road_menu} {toolbar_halt}

{tx} Sie müssen zuerst die Halte in {name2} bauen.

Liste der Haltestellen:
{list}

Um zum nächsten Schritt zu gelangen, bauen Sie alle Halte.

\ No newline at end of file diff --git a/de/chapter_02/07_2-3.txt b/de/chapter_02/07_2-3.txt deleted file mode 100644 index eb42b7c..0000000 --- a/de/chapter_02/07_2-3.txt +++ /dev/null @@ -1 +0,0 @@ -

Da die Brücke nun repariert ist, benötigt die Stadt {name} eine Buslinie mit Verbindung zur Nachbarstadt {name2}.

{tx} Öffnen Sie {tool2} und bauen Sie eine Straße von {pt1} nach {pt2}.

Tipp: Halten Sie Strg gedrückt, um gerade Abschnitte zu bauen.

Um zum nächsten Schritt zu gelangen, bauen Sie die Straße.

\ No newline at end of file diff --git a/de/chapter_02/07_2-4.txt b/de/chapter_02/07_2-4.txt new file mode 100644 index 0000000..c26d300 --- /dev/null +++ b/de/chapter_02/07_2-4.txt @@ -0,0 +1 @@ +

Da die Brücke nun repariert ist, benötigt die Stadt {name} eine Buslinie mit Verbindung zur Nachbarstadt {name2}.

{tx} Öffnen Sie {toolbar_road} und bauen Sie eine Straße von {pt1} nach {pt2}.

Tipp: Halten Sie Strg gedrückt, um gerade Abschnitte zu bauen.

Um zum nächsten Schritt zu gelangen, bauen Sie die Straße.

\ No newline at end of file diff --git a/de/chapter_02/07_3-3.txt b/de/chapter_02/07_3-3.txt deleted file mode 100644 index 8c53c47..0000000 --- a/de/chapter_02/07_3-3.txt +++ /dev/null @@ -1 +0,0 @@ -

Da die Brücke nun repariert ist, benötigt die Stadt {name} eine Buslinie mit Verbindung zur Nachbarstadt {name2}.

{tx} Klicken Sie auf das Straßendepot{dep}, wählen Sie einen Bus {bus1} aus und klicken Sie auf Fahrplan.

Wählen Sie nun die Haltestellen aus:
{list}
- Nachdem Sie die {nr} Haltestellen hinzugefügt haben, wählen Sie die Haltestelle {stnam} aus der Liste und konfigurieren Sie sie wie folgt:
--> [a] Konfigurieren Sie Mindestladung auf {load}%.
--> [b] Setzen Sie maximale Wartezeit auf {wait}.

Um zum nächsten Schritt zu gelangen, starten Sie den Bus.

\ No newline at end of file diff --git a/de/chapter_02/07_3-4.txt b/de/chapter_02/07_3-4.txt new file mode 100644 index 0000000..e697887 --- /dev/null +++ b/de/chapter_02/07_3-4.txt @@ -0,0 +1 @@ +

Da die Brücke nun repariert ist, benötigt die Stadt {name} eine Buslinie mit Verbindung zur Nachbarstadt {name2}.

{tx} Klicken Sie auf das Straßendepot {dep}, wählen Sie einen Bus {bus1} aus und klicken Sie auf Fahrplan.

Wählen Sie nun die Haltestellen aus:
{list}
- Nachdem Sie die {nr} Haltestellen hinzugefügt haben, wählen Sie die Haltestelle {stnam} aus der Liste und konfigurieren Sie sie wie folgt:
--> [a] Konfigurieren Sie Mindestladung auf {load}%.
--> [b] Setzen Sie maximale Wartezeit auf {wait}.

Um zum nächsten Schritt zu gelangen, starten Sie den Bus.

\ No newline at end of file diff --git a/de/chapter_02/07_4-4.txt b/de/chapter_02/07_4-4.txt new file mode 100644 index 0000000..811241a --- /dev/null +++ b/de/chapter_02/07_4-4.txt @@ -0,0 +1 @@ +

Da die Brücke nun repariert ist, benötigt die Stadt {name} eine Buslinie mit Verbindung zur Nachbarstadt {name2}.

{tx} Jetzt müssen Sie dem Konvoi folgen.

Fahrzeugen folgen

Mit dieser Option können Sie Fahrzeuge auf ihrer Route verfolgen, sodass sie immer im Blick bleiben, egal wohin sie fahren. Sie wird im Fahrzeug-Fenster aktiviert und befindet sich in der Titelzeile des Fensters .

Klicken Sie auf das Fahrzeug, das bereits im Umlauf ist, um die Titelleiste des Fahrzeugfensters anzuzeigen und klicken Sie auf das Auge-Symbol, um dem Fahrzeug zu folgen

Um zum nächsten Schritt zu gelangen, folgen Sie dem Fahrzeug.

Das Fahrzeug befindet sich bei: {covpos}

Das Tutorial geht zum nächsten Schritt über, wenn Sie dem Konvoi folgen.

\ No newline at end of file diff --git a/de/chapter_02/goal.txt b/de/chapter_02/goal.txt index f3ea7f4..9ce7b8c 100644 --- a/de/chapter_02/goal.txt +++ b/de/chapter_02/goal.txt @@ -1 +1 @@ -

{scr}

{txtst_01}Schritt A - Bau eines Straßenabschnitts
{step_01}

{txtst_02}Schritt B - Bau eines Straßendepots
{step_02}

{txtst_03}Schritt C - Platzierung von Bushaltestellen
{step_03}

{txtst_04}Schritt D - Erster Bus gestartet
{step_04}

{txtst_05}Schritt E - Eine Brücke bauen
{step_05}

{txtst_06}Schritt F - Verbindung des im Bau befindlichen Docks
{step_06}

{txtst_07}Schritt G - Verbindung der Städte
{step_07}

{txtst_08}Schritt H - Öffentliche Haltestellen erstellen
{step_08}

\ No newline at end of file +

{scr}

{txtst_01}Schritt A - Bau eines Straßenabschnitts
{step_01}

{txtst_02}Schritt B - Bau eines Straßendepots
{step_02}

{txtst_03}Schritt C - Platzierung von Bushaltestellen
{step_03}

{txtst_04}Schritt D - Erster Bus gestartet
{step_04}

{txtst_05}Schritt E - Eine Brücke bauen
{step_05}

{txtst_06}Schritt F - Verbindung des im Bau befindlichen Docks
{step_06}

{txtst_07}Schritt G - Verbindung der Städte
{step_07}

{txtst_08}Schritt H - Öffentliche Haltestellen erstellen
{step_08}

\ No newline at end of file diff --git a/de/chapter_02/goal_step_01.txt b/de/chapter_02/goal_step_01.txt index 12289d4..3e2b6eb 100644 --- a/de/chapter_02/goal_step_01.txt +++ b/de/chapter_02/goal_step_01.txt @@ -1 +1 @@ -

Wir werden einen Busdienst in der Stadt {name} eröffnen.

Zuerst müssen Sie eine Sackgasse bauen, um darauf ein Depot zu errichten.

Straßen:

Dieses Werkzeug kann durch Ziehen oder Klicken von einem Punkt zu einem anderen verwendet werden. Sie können auch Strg drücken, um gerade Straßen zu erstellen. Es gibt verschiedene Arten von Straßen, deren Höchstgeschwindigkeit variieren kann. Für die Straßeninstandhaltung wird eine Gebühr erhoben, deren Höhe je nach Straßenart variiert. Es ist auch möglich, Straßen zu elektrifizieren (nicht in jedem Grafikset möglich), um die Durchfahrt von Elektrofahrzeugen zu ermöglichen.

Öffnen Sie das Menü {tool2} und wählen Sie eine Straße. Jetzt können Sie eine Straße bauen, indem Sie einmal auf den Anfang und einmal auf das Ende klicken oder den Cursor mit gedrückter linken Maustaste zwischen diesen Punkten ziehen.

Um zum nächsten Schritt zu gelangen, verbinden Sie die Felder zwischen {t1} und {t2} oder {t1} und {t3}.

\ No newline at end of file +

Wir werden einen Busdienst in der Stadt {name} eröffnen.

Zuerst müssen Sie ein Straßenende suchen oder bauen, um darauf ein Depot zu errichten.

Straßen:

Dieses Werkzeug kann durch Ziehen oder Klicken von einem Punkt zu einem anderen verwendet werden. Sie können auch Strg drücken, um gerade Straßen zu erstellen. Es gibt verschiedene Arten von Straßen, deren Höchstgeschwindigkeit variieren kann. Für die Straßeninstandhaltung wird eine Gebühr erhoben, deren Höhe je nach Straßenart variiert. Es ist auch möglich, Straßen zu elektrifizieren (nicht in jedem Grafikset möglich), um die Durchfahrt von Elektrofahrzeugen zu ermöglichen.

{img_road_menu} {toolbar_road}

Öffnen Sie das Menü {toolbar_road} und wählen Sie eine Straße. Jetzt können Sie eine Straße bauen, indem Sie einmal auf den Anfang und einmal auf das Ende klicken oder den Cursor mit gedrückter linken Maustaste zwischen diesen Punkten ziehen.

Um zum nächsten Schritt zu gelangen, verbinden Sie das Feld {dep} mit einer benachbarten Straße.

\ No newline at end of file diff --git a/de/chapter_02/goal_step_02.txt b/de/chapter_02/goal_step_02.txt index 964b1c7..fdbd851 100644 --- a/de/chapter_02/goal_step_02.txt +++ b/de/chapter_02/goal_step_02.txt @@ -1 +1 @@ -

Wir werden einen Busdienst in der Stadt {name} starten

Der erste Schritt zum Start des Dienstes ist der Bau eines Straßendepots auf das Feld {pos}. Sie finden dieses Tool im Menü {tool2}.

Straßendepot:

Depots können nur auf ein Straßenendstück gebaut werden. Im Depot ist es möglich, Fahrzeuge zu kaufen, zu verkaufen, die Route anzupassen und zu starten. Es gibt auch eine Option, die den Einsatz von Elektrofahrzeugen ermöglicht, diese wird jedoch nur angezeigt, wenn das Depot elektrifiziert ist und Fahrzeuge zur Verfügung stehen.

Um zum nächsten Schritt zu gelangen, bauen Sie ein Straßendepot auf das Feld {pos}.

\ No newline at end of file +

Wir werden einen Busdienst in der Stadt {name} starten

{img_road_menu} {toolbar_road}

Der erste Schritt zum Start des Dienstes ist der Bau eines Straßendepots auf das Feld {dep}. Sie finden dieses Tool im Menü {toolbar_road}.

Straßendepot:

Depots können nur auf ein Straßenendstück gebaut werden. Im Depot ist es möglich, Fahrzeuge zu kaufen, zu verkaufen, die Route anzupassen und zu starten. Es gibt auch eine Option, die den Einsatz von Elektrofahrzeugen ermöglicht, diese wird jedoch nur angezeigt, wenn das Depot elektrifiziert ist und Fahrzeuge zur Verfügung stehen.

Um zum nächsten Schritt zu gelangen, bauen Sie ein Straßendepot auf das Feld {dep}.

\ No newline at end of file diff --git a/de/chapter_02/goal_step_03.txt b/de/chapter_02/goal_step_03.txt index 8eef85d..2c68455 100644 --- a/de/chapter_02/goal_step_03.txt +++ b/de/chapter_02/goal_step_03.txt @@ -1 +1 @@ -

Der nächste Schritt zum Starten Ihres Busdienstes für die Stadt {name}.

Es ist notwendig, auf jedem markierten Feld eine Bushaltestelle zu bauen:
{list}

Die Haltestellen finden Sie im Menü {tool2}.

Bushaltestellen:

Damit der Bus Passagiere befördern kann, müssen die Haltestellen in der Nähe von Gebäuden, Touristenattraktionen (komplette Abdeckung nötig) oder Fabriken (ein Feld Abdeckung nötig) liegen. Die Haltestellen können unterschiedliche Kapazitäten haben. Es ist auch möglich, sie zu kombinieren, um ihre Kapazität und Reichweite zu erhöhen. Sie können die Ladeart (Passagiere, Post oder Waren) auch erweitern, indem Sie Erweiterungsgebäude oder Stationen verwenden, die verschiedene Arten von Ladegut aufnehmen.

Hinweis: Die Haltestellen haben eine Kartenabdeckung von meist 5x5 Feldern. Daher ist es ratsam, die Haltestellen so im Abstand zu platzieren, das ihre Abdeckungen sich nicht überlagern. Der Abdeckungsbereich kann durch Drücken der Taste v angezeigt werden.

Tipp: Drücken Sie die Taste ", um die städtischen Gebäude auszublenden.

Um zum nächsten Schritt zu gelangen, bauen Sie alle Halte.

\ No newline at end of file +

Der nächste Schritt zum Starten Ihres Busdienstes für die Stadt {name}.

{img_road_menu} {toolbar_halt}

Es ist notwendig, auf jedem markierten Feld eine Bushaltestelle zu bauen. Die Haltestellen finden Sie im Menü {toolbar_halt}.

{list}

Bushaltestellen:

Damit der Bus Passagiere befördern kann, müssen die Haltestellen in der Nähe von Gebäuden, Touristenattraktionen (komplette Abdeckung nötig) oder Fabriken (ein Feld Abdeckung nötig) liegen. Die Haltestellen können unterschiedliche Kapazitäten haben. Es ist auch möglich, sie zu kombinieren, um ihre Kapazität und Reichweite zu erhöhen. Sie können die Ladeart (Passagiere, Post oder Waren) auch erweitern, indem Sie Erweiterungsgebäude oder Stationen verwenden, die verschiedene Arten von Ladegut aufnehmen.

Hinweis: Die Haltestellen haben eine Kartenabdeckung von meist 5x5 Feldern. Daher ist es ratsam, die Haltestellen so im Abstand zu platzieren, das ihre Abdeckungen sich nicht überlagern. Der Abdeckungsbereich kann durch Drücken der Taste v angezeigt werden.
Beachten Sie bei Haltestellen die Akzeptanz von Passagieren, Post und Waren. Diese steht am Ende des Tooltips, wenn sie mit der Maus auf dem Tool-Button verweilen. Sie kann auf dem Tool-Button auch mit einem kleinen Icon angezeigt werden.

Tipp: Drücken Sie die Taste ", um die städtischen Gebäude auszublenden.

Um zum nächsten Schritt zu gelangen, bauen Sie alle Halte.

\ No newline at end of file diff --git a/de/chapter_02/goal_step_04.txt b/de/chapter_02/goal_step_04.txt index 3202a2e..8cacf3a 100644 --- a/de/chapter_02/goal_step_04.txt +++ b/de/chapter_02/goal_step_04.txt @@ -1 +1 @@ -

Da nun die Haltestellen vorhanden sind, müssen Sie einen Bus kaufen, um den Service anbieten zu können.

[1] Klicken Sie mit dem {tool1} auf das Straßendepot {pos} und kaufen den Bus {bus1}.
[2] Um die Fahrzeugroute zu konfigurieren, müssen Sie zunächst auf die Schaltfläche Fahrplan klicken um das Fahrzeugfenster zu öffnen.
[3] Im Reiter Fahrplan müssen Sie nun alle Haltestellen in der Stadt auswählen, um sie zur Liste hinzuzufügen:
{list}
[4] Nachdem Sie die {nr} Haltestellen hinzugefügt haben, wählen Sie die Haltestelle {stnam} aus der Liste aus und konfigurieren Sie die Haltestelle wie folgt:
--> [a] Konfigurieren Sie Mindestladung auf {load} %.
--> [b] Setzen Sie maximale Wartezeit auf {wait}.
[5] Schließen Sie nun das Fahrzeugfenster und klicken Sie auf den Starten, damit das Fahrzeug das Depot verlässt.

Tipp: Drücken Sie die Taste ", um städtische Gebäude auszublenden.

Fahrzeugen folgen

Mit dieser Option können Sie Fahrzeuge auf ihrer Route verfolgen, sodass sie immer im Blick bleiben, egal wohin sie fahren. Sie wird im Fahrzeug-Fenster aktiviert und befindet sich in der Titelzeile des Fensters (das Auge).

Klicken Sie auf das Fahrzeug, das bereits im Umlauf ist, um die Titelleiste des Fahrzeugfensters anzuzeigen und klicken Sie auf das Auge-Symbol, um dem Fahrzeug zu folgen

Um zum nächsten Schritt zu gelangen, folgen Sie dem Fahrzeug.

\ No newline at end of file +

Da nun die Haltestellen vorhanden sind, müssen Sie einen Bus kaufen, um den Service anbieten zu können.

[1] Klicken Sie mit dem {tool1} auf das Straßendepot {dep} und kaufen den Bus {bus1}.
[2] Um die Fahrzeugroute zu konfigurieren, müssen Sie zunächst auf die Schaltfläche Fahrplan klicken um das Fahrzeugfenster zu öffnen.
Hinweis: Das Depot-Fenster können Sie mit einem rechten Mausklick auf die Titelleiste ausblenden. Ein weiterer Klcik auf die Titelleiste blendet das Fenster wieder ein.
[3] Im Reiter Fahrplan müssen Sie nun alle Haltestellen in der Stadt auswählen, um sie zur Liste hinzuzufügen:
{list}
[4] Nachdem Sie die {nr} Haltestellen hinzugefügt haben, wählen Sie die Haltestelle {stnam} aus der Liste aus und konfigurieren Sie die Haltestelle wie folgt:
--> [a] Setzen Sie Mindestladung auf {load} %.
--> [b] Setzen Sie maximale Wartezeit auf {wait}.
[5] Schließen Sie nun das Fahrzeugfenster und klicken Sie auf Starten, damit das Fahrzeug das Depot verlässt.

Tipp: Drücken Sie die Taste ", um städtische Gebäude auszublenden.

Klicken Sie auf das Fahrzeug, das bereits im Umlauf ist, um die Titelleiste des Fahrzeugfensters anzuzeigen und klicken Sie auf das Auge-Symbol, um dem Fahrzeug zu folgen

Klicken Sie auf das bereits fahrende Fahrzeug, um das Konvoi-Fenster anzuzeigen. Suchen Sie in der Titelleiste des Konvoi-Fensters nach dem vierten Symbol (dem Augensymbol) und drücken Sie darauf, um dem Konvoi zu folgen.

Das Tutorial fährt mit dem nächsten Schritt fort, sobald Sie den Konvoi gestartet haben.

\ No newline at end of file diff --git a/de/chapter_02/goal_step_05.txt b/de/chapter_02/goal_step_05.txt index d1aa710..e9805ae 100644 --- a/de/chapter_02/goal_step_05.txt +++ b/de/chapter_02/goal_step_05.txt @@ -1 +1 @@ -

Die Brücke zu einem der äußeren Vororte wurde kürzlich weggespült.
Die Stadt {name} möchte, dass Sie diesen Vorort durch den Bau einer Brücke zwischen {bpos1} und {bpos2} wieder verbinden.

Es gibt zwei Möglichkeiten, dies zu erreichen. Wählen Sie zuerst eine Brücke im Menü {tool2} aus und dann...
[1] Sie können die Brücke bauen, indem Sie auf eine der gegenüberliegenden geraden Hangfeldern klicken.
[2] Sie können die Brücke bauen, indem Sie den Cursor von Hang auf einer Seite zum gegenüberliegenden Hang mit gedrückter linken Maustaste ziehen.

Um zum nächsten Schritt zu gelangen, bauen Sie eine Brücke auf Feld {bpos1}.

{bridge_info} \ No newline at end of file +

Die Brücke zu einem der äußeren Vororte wurde kürzlich weggespült.
Die Stadt {name} möchte, dass Sie diesen Vorort durch den Bau einer Brücke zwischen {bpos1} und {bpos2} wieder verbinden.

{img_road_menu} {toolbar_road}

Es gibt zwei Möglichkeiten, dies zu erreichen. Wählen Sie zuerst eine Brücke im Menü {toolbar_road} aus und dann...
[1] Sie können die Brücke bauen, indem Sie nacheinander auf die gegenüberliegenden geraden Hangfeldern klicken.
[2] Sie können die Brücke bauen, indem Sie den Cursor vom Hang auf einer Seite zum gegenüberliegenden Hang mit gedrückter linken Maustaste ziehen.

Um zum nächsten Schritt zu gelangen, bauen Sie eine Brücke auf Feld {bpos1}.

{bridge_info} \ No newline at end of file diff --git a/de/chapter_02/goal_step_08.txt b/de/chapter_02/goal_step_08.txt index f6d8bb9..9bdbc6a 100644 --- a/de/chapter_02/goal_step_08.txt +++ b/de/chapter_02/goal_step_08.txt @@ -1 +1 @@ -

Die Stadt {name} benötigt Sie, um die Buslinie mit der im Bau befindlichen Bahnlinie zu verbinden.

Wählen Sie in der Symbolleiste {tool3} und wählen Sie das Werkzeug In öffentliche Haltestelle umwande.

In eine öffentliche Haltestelle umwandeln

Durch die Einrichtung einer öffentlichen Haltestelle wird ermöglicht, das mehrere Spieler diesen Halt nutzen können. Dies ermöglicht das Verknüpfen von Teilnetzen für den gemeinsamen Passagier-, Post- und Warentransport. Aber Sie müssen vorsichtig sein, da diese Aktion nicht rückgängig gemacht werden kann, es sei denn, Sie wechseln zum Spieler für den öffentlichen Dienst.

Warnung: Die Verwendung dieses Tools ist sehr teuer. Die Kosten sind das 60-fache der Instandhaltung.

Hinweis: Öffentliche Halte sind für das Alleinspiel nicht zwingend notwendig.

Wählen Sie das Werkzeug In öffentliche Haltestelle umwande und klicken Sie auf die Haltestelle {st1}. Sie werden feststellen, dass sich die Farbe des Stopps ändert.

Sie gelangen zum nächsten Kapitel, wenn der Halt {st1} öffentlich ist.

\ No newline at end of file +

Die Stadt {name} benötigt Sie, um die Buslinie mit der im Bau befindlichen Bahnlinie zu verbinden.


{public_stop}

Durch die Einrichtung einer öffentlichen Haltestelle wird ermöglicht, das mehrere Spieler diesen Halt nutzen können. Dies ermöglicht das Verknüpfen von Teilnetzen für den gemeinsamen Passagier-, Post- und Warentransport. Aber Sie müssen vorsichtig sein, da diese Aktion nicht rückgängig gemacht werden kann, es sei denn, Sie wechseln zum Spieler für den öffentlichen Dienst.

Hinweis: Öffentliche Halte sind für das Alleinspiel nicht zwingend notwendig.

Wählen Sie das Werkzeug zum öffentlich machen von Halten und klicken Sie auf die Haltestelle {st1}. Sie werden feststellen, dass sich die Farbe des Stopps ändert.

Sie gelangen zum nächsten Kapitel, wenn der Halt {st1} öffentlich ist.

\ No newline at end of file diff --git a/de/chapter_03/01_1-2.txt b/de/chapter_03/01_1-2.txt index 62e3b96..d93d6a7 100644 --- a/de/chapter_03/01_1-2.txt +++ b/de/chapter_03/01_1-2.txt @@ -1 +1 @@ -

Um {good2} herzustellen, müssen Sie {good1} von {f1} nach {f2} transportieren.

{tx} Verwenden Sie {tool1} auf {f2}, um Details anzuzeigen

\ No newline at end of file +

Um {good2} herzustellen, müssen Sie {good1} von {f1} nach {f2} transportieren.

{tx} Verwenden Sie {tool1} auf {f2}, um Details anzuzeigen

\ No newline at end of file diff --git a/de/chapter_03/01_2-2.txt b/de/chapter_03/01_2-2.txt index b89edac..646762c 100644 --- a/de/chapter_03/01_2-2.txt +++ b/de/chapter_03/01_2-2.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Die Details sind:

Maximale Produktion pro Monat:
Zeigt die Produktionskapazität an, über die die Fabrik verfügt. Die Produktion kann je nach Bedarf durch den Transport von Passagieren, Post oder Strom zur Fabrik gesteigert werden.

Produktion:
Zeigt, was die Fabrik produziert, wie viel auf Lager ist und wie viel sie aus einer Einheit Rohstoffe herstellt.
Beispiel: {f2} verbraucht {g1_factor}% von {good1} und produziert {g2_factor}% von {good2}. Die maximale Produktion beträgt {prod_out} Einheiten pro Monat. Das bedeutet, dass es bis zu {g1_consum} {g1_metric} {good1} pro Monat verbraucht und daraus {g2_prod} {g2_metric} {good2} produziert.
Hinweis: Die oben angezeigte Produktion entspricht der Produktion von 100% Ware.

Verbrauch:
Zeigt die Rohstoffe an, die die Fabrik benötigt, die gelagerte oder unterwegs befindliche Menge und wie viel Rohstoff zur Herstellung einer Produkteinheit benötigt wird.

Verbraucher/Lieferanten:
Zeigt verbundene Fabriken an. Sie können Waren nur zwischen verbundenen Industrien transportieren.

Arbeiter wohnen in:
Zeigt die Städte an, aus denen die Arbeiter kommen mit Passagier- und Postrate.

Hinweis: Der Transport von Passagieren und Post zur Fabrik ist für die Produktion der Fabrik nicht erforderlich. Ob der Transport von Passagieren und Post sowie die Versorgung mit Strom die Produktion erhöht wird im Reiter Produktionskennzahlen angezeigt.

Um zum nächsten Schritt zu gelangen, klicken Sie auf {f1}.

\ No newline at end of file +{step_hinfo}

{tx} Die Details sind:

Maximale Produktion pro Monat:
Zeigt die Produktionskapazität an, über die die Fabrik verfügt. Die Produktion kann je nach Bedarf durch den Transport von Passagieren, Post oder Strom zur Fabrik gesteigert werden.

Produktion:
Zeigt, was die Fabrik produziert, wie viel auf Lager ist und wie viel sie aus einer Einheit Rohstoffe herstellt.
Beispiel: {f2} verbraucht {g1_factor}% von {good1} und produziert {g2_factor}% von {good2}. Die maximale Produktion beträgt {prod_out} Einheiten pro Monat. Das bedeutet, dass es bis zu {g1_consum} {g1_metric} {good1} pro Monat verbraucht und daraus {g2_prod} {g2_metric} {good2} produziert.
Hinweis: Die oben angezeigte Produktion entspricht dem Verbrauch und der Produktion von 100% Ware. Weicht der Prozentsatz bei der Ware ab, dann ist der Verbrauch/die Produktion für die Ware der entsprechende Prozentsatz.

Verbrauch:
Zeigt die Rohstoffe an, die die Fabrik benötigt, die gelagerte oder unterwegs befindliche Menge und wie viel Rohstoff zur Herstellung einer Produkteinheit benötigt wird.

Verbraucher/Lieferanten:
Zeigt verbundene Fabriken an. Sie können Waren nur zwischen verbundenen Industrien transportieren.

Arbeiter wohnen in:
Zeigt die Städte an, aus denen die Arbeiter kommen mit Passagier- und Postrate.

Hinweis: Der Transport von Passagieren und Post zur Fabrik ist für die Produktion der Fabrik nicht erforderlich. Ob der Transport von Passagieren und Post sowie die Versorgung mit Strom die Produktion erhöht wird im Reiter Produktionskennzahlen angezeigt.

Um zum nächsten Schritt zu gelangen, klicken Sie auf {f1}.

\ No newline at end of file diff --git a/de/chapter_03/02_1-3.txt b/de/chapter_03/02_1-3.txt index 71983f4..4557624 100644 --- a/de/chapter_03/02_1-3.txt +++ b/de/chapter_03/02_1-3.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Wählen Sie {tool2} und bauen Sie eine Bahnstrecke, die die beiden Punkte {w1} und {w2} verbindet.

Bahngleise

Es gibt verschiedene Arten von Bahngleisen für unterschiedliche Geschwindigkeiten. Sie sollten bedenken, das schneller Bahngleise auch teurer im Bau und Unterhalt sind. Da langsame Bahngleise leicht durch schnellere überbaut werden können, wird empfohlen am Anfang mit langsamen Bahngleisen anzufangen.

Bauen Sie das Bahngleis von {cbor} nach {w2}.

\ No newline at end of file +{step_hinfo}

{tx} Wählen Sie {tool2} und bauen Sie eine Bahnstrecke, die die beiden Punkte {w1} und {w2} verbindet.

Bahngleise

Es gibt verschiedene Arten von Bahngleisen für unterschiedliche Geschwindigkeiten. Sie sollten bedenken, das schneller Bahngleise auch teurer im Bau und Unterhalt sind. Da langsame Bahngleise leicht durch schnellere überbaut werden können, wird empfohlen am Anfang mit langsamen Bahngleisen anzufangen.

Bauen Sie das Bahngleis von {cbor} nach {w2}.

\ No newline at end of file diff --git a/de/chapter_03/02_2-3.txt b/de/chapter_03/02_2-3.txt index 4b6cfcc..6ea8902 100644 --- a/de/chapter_03/02_2-3.txt +++ b/de/chapter_03/02_2-3.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Wählen Sie {tool2} und bauen Sie eine Brücke zu {br}.

\ No newline at end of file +{step_hinfo}

{tx} Wählen Sie {tool2} und bauen Sie eine Brücke zu {br}.

\ No newline at end of file diff --git a/de/chapter_03/02_3-3.txt b/de/chapter_03/02_3-3.txt index 66a8b75..dd2fecb 100644 --- a/de/chapter_03/02_3-3.txt +++ b/de/chapter_03/02_3-3.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Wählen Sie {tool2} und bauen Sie ein Bahngleis, das die beiden Punkte {cbor} und {w4} verbindet.

\ No newline at end of file +{step_hinfo}

{tx} Wählen Sie {tool2} und bauen Sie ein Bahngleis, das die beiden Punkte {cbor} und {w4} verbindet.

\ No newline at end of file diff --git a/de/chapter_03/03_1-2.txt b/de/chapter_03/03_1-2.txt index 5197dbd..223bc9a 100644 --- a/de/chapter_03/03_1-2.txt +++ b/de/chapter_03/03_1-2.txt @@ -1 +1 @@ -{step_hinfo}

Warenstationen

Um herauszufinden, ob eine Station Waren (Fracht) akzeptiert, platzieren Sie den Cursor über dem Button in der Symbolleiste. Daraufhin wird ein Hinweistext angezeigt. Ein Bahnhof, der aus mehreren Feldern besteht, wird Fracht akzeptieren, wann immer eines der Felder dies tut.

{tx} Wählen Sie {tool2} und bauen Sie eine Warenstation ({tile} Felder lang) in der Nähe von {f2}.

\ No newline at end of file +{step_hinfo}

Warenstationen

Um herauszufinden, ob eine Station Waren (Fracht) akzeptiert, platzieren Sie den Cursor über dem Button in der Symbolleiste. Daraufhin wird ein Hinweistext angezeigt. Ein Bahnhof, der aus mehreren Feldern besteht, wird Fracht akzeptieren, wann immer eines der Felder dies tut.


Hinweis: Sollten Sie einen falschen Halt bauen, können Sie diesen mit einem anderen Halt mit höherer Kapazität überbauen. Hat der vorhandene Halt die gleiche oder eine höhere Kapazität. dann können Sie das überbauen mit gedrückter Strg - Taste erzwingen.

{tx} Wählen Sie {tool2} und bauen Sie eine Warenstation ({tile} Felder lang) in der Nähe von {f2}.

\ No newline at end of file diff --git a/de/chapter_03/03_2-2.txt b/de/chapter_03/03_2-2.txt index c80e6d3..eea7b4e 100644 --- a/de/chapter_03/03_2-2.txt +++ b/de/chapter_03/03_2-2.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Wählen Sie {tool2} und bauen Sie eine Frachtstation ({tile} Felder lang) in der Nähe von {f1}.

\ No newline at end of file +{step_hinfo}

{tx} Wählen Sie {tool2} und bauen Sie eine Frachtstation ({tile} Felder lang) in der Nähe von {f1}.

\ No newline at end of file diff --git a/de/chapter_03/04_1-3.txt b/de/chapter_03/04_1-3.txt index 6faae78..171e48e 100644 --- a/de/chapter_03/04_1-3.txt +++ b/de/chapter_03/04_1-3.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Wählen Sie {tool2} und bauen Sie ein Bahngleis von {w1} nach {w2}.

\ No newline at end of file +{step_hinfo}

{tx} Wählen Sie {tool2} und bauen Sie ein Bahngleis von {w1} nach {w2}.

\ No newline at end of file diff --git a/de/chapter_03/04_2-3.txt b/de/chapter_03/04_2-3.txt index cc38ad3..28d1dcc 100644 --- a/de/chapter_03/04_2-3.txt +++ b/de/chapter_03/04_2-3.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Wählen Sie {tool2} und bauen Sie ein Bahndepot auf Feld {dep}.

\ No newline at end of file +{step_hinfo}

{tx} Wählen Sie {tool2} und bauen Sie ein Bahndepot auf Feld {dep}.

\ No newline at end of file diff --git a/de/chapter_03/04_3-3.txt b/de/chapter_03/04_3-3.txt index 82e24f7..4d02bb1 100644 --- a/de/chapter_03/04_3-3.txt +++ b/de/chapter_03/04_3-3.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Um zum nächsten Schritt zu gelangen, klicken Sie mit dem {tool1} auf das Bahndepot {dep}.

\ No newline at end of file +{step_hinfo}

{tx} Um zum nächsten Schritt zu gelangen, klicken Sie mit dem {tool1} auf das Bahndepot {dep}.

\ No newline at end of file diff --git a/de/chapter_03/06_1-5.txt b/de/chapter_03/06_1-5.txt index 2c81812..a550251 100644 --- a/de/chapter_03/06_1-5.txt +++ b/de/chapter_03/06_1-5.txt @@ -1 +1 @@ -

Sie müssen {good2} von {f2} nach {f3} in {cy1} transportieren.

{tx} Wählen Sie {tool2} und bauen sie ein Bahngleis zwischen {w1} und {w2}.

\ No newline at end of file +

Sie müssen {good2} von {f2} nach {f3} in {cy1} transportieren.

{tx} Wählen Sie {tool2} und bauen sie ein Bahngleis zwischen {w1} und {w2}.

\ No newline at end of file diff --git a/de/chapter_03/06_2-5.txt b/de/chapter_03/06_2-5.txt index b72c99f..553e08f 100644 --- a/de/chapter_03/06_2-5.txt +++ b/de/chapter_03/06_2-5.txt @@ -1 +1 @@ -

Sie müssen {good2} von {f2} nach {f3} in {cy1} transportieren.

{tx} Wählen Sie {tool2} und bauen Sie einen Tunnel auf Feld {tu}.

\ No newline at end of file +

Sie müssen {good2} von {f2} nach {f3} in {cy1} transportieren.

{tx} Wählen Sie {tool2} und bauen Sie einen Tunnel auf Feld {tu}.

\ No newline at end of file diff --git a/de/chapter_03/06_3-5.txt b/de/chapter_03/06_3-5.txt index 363b8e9..ce2d838 100644 --- a/de/chapter_03/06_3-5.txt +++ b/de/chapter_03/06_3-5.txt @@ -1 +1 @@ -

Sie müssen {good2} von {f2} nach {f3} in {cy1} transportieren.

{tx} Wählen Sie {tool2} bauen eine Bahngleis zwischen {w3} und {w4}.

\ No newline at end of file +

Sie müssen {good2} von {f2} nach {f3} in {cy1} transportieren.

{tx} Wählen Sie {tool2} bauen eine Bahngleis zwischen {w3} und {w4}.

\ No newline at end of file diff --git a/de/chapter_03/06_4-5.txt b/de/chapter_03/06_4-5.txt index 7dfcf6f..7221f37 100644 --- a/de/chapter_03/06_4-5.txt +++ b/de/chapter_03/06_4-5.txt @@ -1 +1 @@ -

Sie müssen {good2} von {f2} nach {f3} in {cy1} transportieren.

Warenstationen

Um herauszufinden, ob eine Station Waren (Fracht) akzeptiert, platzieren Sie den Cursor über dem Button in der Symbolleiste. Daraufhin wird ein Hinweistext angezeigt. Ein Bahnhof, der aus mehreren Feldern besteht, wird Fracht akzeptieren, wann immer eines der Felder dies tut.

{tx} Wählen Sie {tool2} und bauen Sie eine Frachtstation ({tile} Felder lang) in der Nähe von {f3}.

\ No newline at end of file +

Sie müssen {good2} von {f2} nach {f3} in {cy1} transportieren.

Warenstationen

Um herauszufinden, ob eine Station Waren (Fracht) akzeptiert, platzieren Sie den Cursor über dem Button in der Symbolleiste. Daraufhin wird ein Hinweistext angezeigt. Ein Bahnhof, der aus mehreren Feldern besteht, wird Fracht akzeptieren, wann immer eines der Felder dies tut.

{tx} Wählen Sie {tool2} und bauen Sie eine Frachtstation ({tile} Felder lang) in der Nähe von {f3}.

\ No newline at end of file diff --git a/de/chapter_03/06_5-5.txt b/de/chapter_03/06_5-5.txt index f9f9ece..ddb602c 100644 --- a/de/chapter_03/06_5-5.txt +++ b/de/chapter_03/06_5-5.txt @@ -1 +1 @@ -

Sie müssen {good2} von {f2} nach {f3} in {cy1} transportieren.

{tx} Wählen Sie {tool2} und bauen Sie eine Frachtstation ({tile} Felder lang) in der Nähe von {f2}.

\ No newline at end of file +

Sie müssen {good2} von {f2} nach {f3} in {cy1} transportieren.

{tx} Wählen Sie {tool2} und bauen Sie eine Frachtstation ({tile} Felder lang) in der Nähe von {f2}.

\ No newline at end of file diff --git a/de/chapter_03/08_1-5.txt b/de/chapter_03/08_1-5.txt index 82799f0..61aae3f 100644 --- a/de/chapter_03/08_1-5.txt +++ b/de/chapter_03/08_1-5.txt @@ -1 +1 @@ -

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die Städte führt:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Wählen Sie {tool2} und bauen sie ein Bahngleis von {w1} nach {w2}.

\ No newline at end of file +

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die Städte führt:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Wählen Sie {tool2} und bauen sie ein Bahngleis von {w1} nach {w2}.

\ No newline at end of file diff --git a/de/chapter_03/08_2-5.txt b/de/chapter_03/08_2-5.txt index 4cac6ff..ac7185f 100644 --- a/de/chapter_03/08_2-5.txt +++ b/de/chapter_03/08_2-5.txt @@ -1 +1 @@ -

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die Städte führt:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Wählen Sie {tool2} und bauen Sie eine Brücke auf Feld {br}.

\ No newline at end of file +

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die Städte führt:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Wählen Sie {tool2} und bauen Sie eine Brücke auf Feld {br}.

\ No newline at end of file diff --git a/de/chapter_03/08_3-5.txt b/de/chapter_03/08_3-5.txt index 53eb984..6a62aea 100644 --- a/de/chapter_03/08_3-5.txt +++ b/de/chapter_03/08_3-5.txt @@ -1 +1 @@ -

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

Untergundansicht

Es gibt 2 Arten von Untergrundansichten. Die komplette Ansicht (Umschalt+u) und die Ebenenansicht (Strg+u). Durch erneutes drücken der Tastenkombination wird die jeweilige Ansicht wieder ausgeschalten.

Ebenenansicht
Durch drücken der Tasten {plus} und {minus} kann die angezeigte Ebene gewechselt werden.
Aus der Ebenenansicht kann mit Umschalt+u in die komplette Ansicht gewechselt werden. Durch erneutes drücken von Umschalt+u wird zurück zur Ebenenansicht gewechselt.

Hinweis: In der Ebenenansicht des Untergrundes lässt es sich leichter bauen, da dort das Feldraster auf der Ebene angezeigt wird. In der Kompletten Ansich ist es leichter sich einen Überblick zu verschaffen. Vor allem dann, wenn die Strecken über mehrere Ebenen verlaufen.
Für die Umschaltung der Ansichten können in den Menüs Buttons vorhanden sein.

Bauen im Untergrund

Strecken im Untergrund werden mit den Tunnel-Werkzeugen gebaut. Ausnahme sind Straßenbahnschienen auf Straßen. Desweiteren müssen Strecken immer an vorhandenen Strecken anschließen.
Höhenwechsel für Strecken
Nur Streckenenden können so verändert werden das die Höhe der Ebene geändert wird. Dafür muss mit den Feldwerkzeugen Feldeben anheben und Feldeben absenken (ganz rechts in den Geländewerkzeugen) auf das jeweilige Streckenende geklickt werden.

{tx} Wählen Sie {tool2} und bauen Sie ein Tunnelportal auf das Feld {t1}, indem Sie die Taste Strg gedrückt halten beim klicken.

\ No newline at end of file +

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

Untergundansicht

Es gibt 2 Arten von Untergrundansichten. Die komplette Ansicht (Umschalt+u) und die Ebenenansicht (Strg+u). Durch erneutes drücken der Tastenkombination wird die jeweilige Ansicht wieder ausgeschalten.

Ebenenansicht
Durch drücken der Tasten {plus} und {minus} kann die angezeigte Ebene gewechselt werden.
Aus der Ebenenansicht kann mit Umschalt+u in die komplette Ansicht gewechselt werden. Durch erneutes drücken von Umschalt+u wird zurück zur Ebenenansicht gewechselt.

Hinweis: In der Ebenenansicht des Untergrundes lässt es sich leichter bauen, da dort das Feldraster auf der Ebene angezeigt wird. In der Kompletten Ansich ist es leichter sich einen Überblick zu verschaffen. Vor allem dann, wenn die Strecken über mehrere Ebenen verlaufen.
Für die Umschaltung der Ansichten können in den Menüs Buttons vorhanden sein.

Bauen im Untergrund

Strecken im Untergrund werden mit den Tunnel-Werkzeugen gebaut. Ausnahme sind Straßenbahnschienen auf Straßen. Desweiteren müssen Strecken immer an vorhandenen Strecken anschließen.
Höhenwechsel für Strecken
Nur Streckenenden können so verändert werden das die Höhe der Ebene geändert wird. Dafür muss mit den Feldwerkzeugen Feldeben anheben und Feldeben absenken (ganz rechts in den Geländewerkzeugen) auf das jeweilige Streckenende geklickt werden.

{tx} Wählen Sie {tool2} und bauen Sie ein Tunnelportal auf das Feld {t1}, indem Sie die Taste Strg gedrückt halten beim klicken.

\ No newline at end of file diff --git a/de/chapter_03/08_4-5.txt b/de/chapter_03/08_4-5.txt index 88e9e32..297d922 100644 --- a/de/chapter_03/08_4-5.txt +++ b/de/chapter_03/08_4-5.txt @@ -1 +1 @@ -

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Bau von Tunneln mit Höhenwechsel:
[1] Aktivieren Sie die Untergrundansicht nach Ebenen und setzen Sie die angezeigte Ebene auf Höhe {lev}.
[2] Bauen Sie nun ein Tunnelsegment nach {tunn}.
[3] Erhöhen Sie das Gelände mit {tool3} auf Feld {tunn}.

Sie müssen diesen Vorgang wiederholen, bis Sie Höhe [Z = {mx_lvl}] erreichen:

Liste der Bauabschnitte:
{list}

\ No newline at end of file +

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Bau von Tunneln mit Höhenwechsel:
[1] Aktivieren Sie die Untergrundansicht nach Ebenen und setzen Sie die angezeigte Ebene auf Höhe {lev}.
[2] Bauen Sie nun ein Tunnelsegment nach {tunn}.
[3] Erhöhen Sie das Gelände mit {tool3} auf Feld {tunn}.

Sie müssen diesen Vorgang wiederholen, bis Sie Höhe [Z = {mx_lvl}] erreichen:

Liste der Bauabschnitte:
{list}

\ No newline at end of file diff --git a/de/chapter_03/08_5-5.txt b/de/chapter_03/08_5-5.txt index 0e64e02..4bb97a1 100644 --- a/de/chapter_03/08_5-5.txt +++ b/de/chapter_03/08_5-5.txt @@ -1 +1 @@ -

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Verbinden Sie die Tunnelenden der beiden Tunneleingänge auf Feld {t1} und Feld {t2} im Untergrund.

Tipp: Die Verbindung erfolgt auf Ebene 8.

\ No newline at end of file +

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Verbinden Sie die Tunnelenden der beiden Tunneleingänge auf Feld {t1} und Feld {t2} im Untergrund.

Tipp: Die Verbindung erfolgt auf Ebene 8.

\ No newline at end of file diff --git a/de/chapter_03/09_1-2.txt b/de/chapter_03/09_1-2.txt index cf2d78f..0506f53 100644 --- a/de/chapter_03/09_1-2.txt +++ b/de/chapter_03/09_1-2.txt @@ -1 +1 @@ -

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Wählen Sie {tool2} und bauen Sie ein Bahngleis zwischen {w2} und {w1}.

Liste der Verbindungen:
{list}

Tipp: Sie können sie einfach verbinden, indem Sie auf {w2} und {w1} klicken.

\ No newline at end of file +

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Wählen Sie {tool2} und bauen Sie ein Bahngleis zwischen {w2} und {w1}.

Liste der Verbindungen:
{list}

Tipp: Sie können sie einfach verbinden, indem Sie auf {w2} und {w1} klicken.

\ No newline at end of file diff --git a/de/chapter_03/09_2-2.txt b/de/chapter_03/09_2-2.txt index 410dc5c..49b919d 100644 --- a/de/chapter_03/09_2-2.txt +++ b/de/chapter_03/09_2-2.txt @@ -1 +1 @@ -

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Wählen Sie {tool2} und bauen Sie Signale auf den angegebenen Feldern.
Die Fahrtrichtung ist rechts, weswegen die Signale auf der in Fahrtrichtung rechten Seite stehen müssen.

{sig}

Hinweis: Klicken Sie mehrmals mit dem Signalwerkzeug auf das gleiche Feld, um die Richtung entsprechend festzulegen.

\ No newline at end of file +

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Wählen Sie {tool2} und bauen Sie Signale auf den angegebenen Feldern.
Die Fahrtrichtung ist rechts, weswegen die Signale auf der in Fahrtrichtung rechten Seite stehen müssen.

{sig}

Hinweis: Klicken Sie mehrmals mit dem Signalwerkzeug auf das gleiche Feld, um die Richtung entsprechend festzulegen.

\ No newline at end of file diff --git a/de/chapter_03/10_1-4.txt b/de/chapter_03/10_1-4.txt index 802263e..ce86b62 100644 --- a/de/chapter_03/10_1-4.txt +++ b/de/chapter_03/10_1-4.txt @@ -1 +1 @@ -

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Wählen Sie {tool2} und bauen Sie eine Oberleitung auf das Gleis vom Bahnhof {co2} in {cy2} zum Bahnhof in {cy5} {co5}.

Hinweis: Sie können längere Strecken elektrifizieren, indem Sie einen Startpunkt und einen Endpunkt anklicken. Zu beachten ist, das beim Bau von Oberleitungen die Richtung der Signale berücksichtigt wird.

Nicht elektrifizierte Gleise:
{cbor}

\ No newline at end of file +

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Wählen Sie {tool2} und bauen Sie eine Oberleitung auf das Gleis vom Bahnhof {co2} in {cy2} zum Bahnhof in {cy5} {co5}.

Hinweis: Sie können längere Strecken elektrifizieren, indem Sie einen Startpunkt und einen Endpunkt anklicken. Zu beachten ist, das beim Bau von Oberleitungen die Richtung der Signale berücksichtigt wird.

Nicht elektrifizierte Gleise:
{cbor}

\ No newline at end of file diff --git a/de/chapter_03/10_2-4.txt b/de/chapter_03/10_2-4.txt index 7ed313e..e14baeb 100644 --- a/de/chapter_03/10_2-4.txt +++ b/de/chapter_03/10_2-4.txt @@ -1 +1 @@ -

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Wählen Sie {tool2} und bauen Sie eine Oberleitung auf das Gleis vom Bahnhof {co5} in {cy5} zum Bahnhof in {cy2} {co2}.

Hinweis: Beim Bau von Oberleitungen wird die Richtung der Signale berücksichtigt.

Nicht elektrifizierte Gleise:
{cbor}

\ No newline at end of file +

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Wählen Sie {tool2} und bauen Sie eine Oberleitung auf das Gleis vom Bahnhof {co5} in {cy5} zum Bahnhof in {cy2} {co2}.

Hinweis: Beim Bau von Oberleitungen wird die Richtung der Signale berücksichtigt.

Nicht elektrifizierte Gleise:
{cbor}

\ No newline at end of file diff --git a/de/chapter_03/10_3-4.txt b/de/chapter_03/10_3-4.txt index 8444efc..2d4af3d 100644 --- a/de/chapter_03/10_3-4.txt +++ b/de/chapter_03/10_3-4.txt @@ -1 +1 @@ -

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Wählen Sie {tool2} und bauen Sie eine Oberleitung auf das Feld {dep} für das Bahndepot.

Hinweis: Elektrofahrzeuge (ausser Akkufahrzeuge) werden nur dann angezeigt, wenn das Depot elektrifiziert ist. Depots können auch nachträglich elektrifiziert werden.

\ No newline at end of file +

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Wählen Sie {tool2} und bauen Sie eine Oberleitung auf das Feld {dep} für das Bahndepot.

Hinweis: Elektrofahrzeuge (ausser Akkufahrzeuge) werden nur dann angezeigt, wenn das Depot elektrifiziert ist. Depots können auch nachträglich elektrifiziert werden.

\ No newline at end of file diff --git a/de/chapter_03/10_4-4.txt b/de/chapter_03/10_4-4.txt index cc38ad3..28d1dcc 100644 --- a/de/chapter_03/10_4-4.txt +++ b/de/chapter_03/10_4-4.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Wählen Sie {tool2} und bauen Sie ein Bahndepot auf Feld {dep}.

\ No newline at end of file +{step_hinfo}

{tx} Wählen Sie {tool2} und bauen Sie ein Bahndepot auf Feld {dep}.

\ No newline at end of file diff --git a/de/chapter_03/goal.txt b/de/chapter_03/goal.txt index c4e724a..0b396ba 100644 --- a/de/chapter_03/goal.txt +++ b/de/chapter_03/goal.txt @@ -1 +1 @@ -

In diesem Kapitel sind die Züge die Protagonisten und mit ihnen lernen wir, Güter und Passagiere zu transportieren.

{scr}

{txtst_01}Schritt A - Ein Blick auf die Fabriken
{step_01}

{txtst_02}Schritt B - Lieferanten verbinden
{step_02}

{txtst_03}Schritt C - Stationen bauen
{step_03}

{txtst_04}Schritt D - Bau eines Depots
{step_04}

{txtst_05}Schritt E - Der erste Zug
{step_05}

{txtst_06}Schritt F - Den Verbraucher verbinden
{step_06}

{txtst_07}Schritt G - Der zweite Zug
{step_07}

{txtst_08}Schritt H - Bauen im Untergrund
{step_08}

{txtst_09}Schritt I - Verbinden der Stationen
{step_09}

{txtst_10}Schritt J - Elektrifizierte Gleise
{step_10}

{txtst_11}Schritt K - elektrische Züge
{step_11}

\ No newline at end of file +

In diesem Kapitel sind die Züge die Protagonisten und mit ihnen lernen wir, Güter und Passagiere zu transportieren.

{scr}

{txtst_01}Schritt A - Ein Blick auf die Fabriken
{step_01}

{txtst_02}Schritt B - Lieferanten verbinden
{step_02}

{txtst_03}Schritt C - Stationen bauen
{step_03}

{txtst_04}Schritt D - Bau eines Depots
{step_04}

{txtst_05}Schritt E - Der erste Zug
{step_05}

{txtst_06}Schritt F - Den Verbraucher verbinden
{step_06}

{txtst_07}Schritt G - Der zweite Zug
{step_07}

{txtst_08}Schritt H - Bauen im Untergrund
{step_08}

{txtst_09}Schritt I - Verbinden der Stationen
{step_09}

{txtst_10}Schritt J - Elektrifizierte Gleise
{step_10}

{txtst_11}Schritt K - elektrische Züge
{step_11}

\ No newline at end of file diff --git a/de/chapter_03/goal_step_05.txt b/de/chapter_03/goal_step_05.txt index 60ad32a..177cd24 100644 --- a/de/chapter_03/goal_step_05.txt +++ b/de/chapter_03/goal_step_05.txt @@ -1 +1 @@ -

Für die Produktion von {good2} müssen Sie {good1} von {f1} nach {f2} transportieren.

Sie müssen nun ein geeignetes Fahrzeug auswählen, um {good1} nach {f2} zu transportieren.
[1] Öffnen Sie das Zugdepot und wählen Sie eine Lokomotive {loc1} im Reiter Loks.
[2] Wählen Sie nun {wag} Waggons für {good1} aus. (Der Zug darf die Haltlänge von {tile} nicht überschreiten).
[3] Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen und wählen Sie als ersten Halt den Bahnhof in der Nähe von {f1} aus.
--> Stellen Sie Mindestladung auf {load}% ein.
[4] Wählen Sie die Station in der Nähe von {f2} aus.
[5] Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.
[6] Starten Sie den Zug mit Klick auf Starten.

Tipp: Sie können den Filter im unteren Bereich des Depotfensters verwenden, um nur Fahrzeuge anzuzeigen, die eine bestimmte Fracht transportieren können.

Um zum nächsten Schritt zu gelangen, müssen {t_reach}t {good1} an {f2} geliefert werden.

Tipp: Drücken Sie die Taste W (Umschalttaste+w), um den Schnellvorlauf zu aktivieren. Erneutes drücken deaktiviert den Schnellvorlauf wieder.

Geliefert: {reached} {g1_metric} {good1}

\ No newline at end of file +

Für die Produktion von {good2} müssen Sie {good1} von {f1} nach {f2} transportieren.

Sie müssen nun ein geeignetes Fahrzeug auswählen, um {good1} nach {f2} zu transportieren.
[1] Öffnen Sie das Zugdepot und wählen Sie eine Lokomotive {loc1} im Reiter Loks.
[2] Wählen Sie nun {wag} Waggons für {good1} aus. (Der Zug darf die Haltlänge von {tile} nicht überschreiten).
[3] Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen und wählen Sie als ersten Halt den Bahnhof {stnam1} aus.
--> Stellen Sie Mindestladung auf {load}% ein.
[4] Wählen Sie als zweiten Halt den Bahnhof {stnam2} aus.
[5] Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.
[6] Starten Sie den Zug mit Klick auf Starten.

Tipp: Sie können den Filter im unteren Bereich des Depotfensters verwenden, um nur Fahrzeuge anzuzeigen, die eine bestimmte Fracht transportieren können.

Um zum nächsten Schritt zu gelangen, müssen {t_reach} {good1} an {f2} geliefert werden.

Tipp: Drücken Sie die Taste W (Umschalttaste+w), um den Schnellvorlauf zu aktivieren. Erneutes drücken deaktiviert den Schnellvorlauf wieder.

Geliefert: {reached} {g1_metric} {good1}

\ No newline at end of file diff --git a/de/chapter_03/goal_step_07.txt b/de/chapter_03/goal_step_07.txt index 5527b38..e7dbadb 100644 --- a/de/chapter_03/goal_step_07.txt +++ b/de/chapter_03/goal_step_07.txt @@ -1 +1 @@ -

Sie müssen {good2} von {f2} nach {f3} in {cy1} transportieren.

[1] Bauen Sie eine Bahnstrecke zwischen {w1} und {w2}.
[2] Platzieren Sie das Zugdepot auf Feld {way1}.

Sie müssen nun einen geeigneten Zug zusammen stellen, um {good2} nach {f3} zu transportieren.
[1] Öffnen Sie das Zugdepot und wählen Sie eine Lokomotive {loc2} im Reiter Loks.
[2] Wählen Sie nun {wag} Waggons für {good2} aus. (Der Zug darf die Haltlänge von {tile} nicht überschreiten).
[3] Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen und wählen Sie als ersten Halt den Bahnhof in der Nähe von {f2} aus.
--> Stellen Sie Mindestladung auf {load}% ein.
[4] Wählen Sie die Station in der Nähe von {f3} aus.
[5] Geben Sie der Linie einen aussagekräftigen Namen und schließen Sie den Linienplan.
[6] Starten Sie den Zug mit Klick auf Starten.

Tipp: Sie können den Filter im unteren Bereich des Depotfensters verwenden, um nur Fahrzeuge anzuzeigen, die eine bestimmte Fracht transportieren können.

Um zum nächsten Schritt zu gelangen, müssen {t_reach} {g1_metric} {good2} an {f3} geliefert werden.

Tipp: Drücken Sie die Taste W ([Umschalt]+w), um den Schnellvorlauf zu aktivieren. Erneutes drücken deaktiviert den Schnellvorlauf wieder.

Geliefert: {reached} {g1_metric} {good2}

\ No newline at end of file +

Sie müssen {good2} von {f2} nach {f3} in {cy1} transportieren.

[1] Bauen Sie eine Bahnstrecke zwischen {w1} und {w2}.
[2] Platzieren Sie das Zugdepot auf Feld {way1}.

Sie müssen nun einen geeigneten Zug zusammen stellen, um {good2} nach {f3} zu transportieren.
[1] Öffnen Sie das Zugdepot und wählen Sie eine Lokomotive {loc2} im Reiter Loks.
[2] Wählen Sie nun {wag} Waggons für {good2} aus. (Der Zug darf die Haltlänge von {tile} nicht überschreiten).
[3] Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen und wählen Sie als ersten Halt den Bahnhof {stnam1} aus.
--> Stellen Sie Mindestladung auf {load}% ein.
[4] Wählen Sie als zweiten Halt den Bahnhof {stnam2} aus.
[5] Geben Sie der Linie einen aussagekräftigen Namen und schließen Sie den Linienplan.
[6] Starten Sie den Zug mit Klick auf Starten.

Tipp: Sie können den Filter im unteren Bereich des Depotfensters verwenden, um nur Fahrzeuge anzuzeigen, die eine bestimmte Fracht transportieren können.

Um zum nächsten Schritt zu gelangen, müssen {t_reach} {g1_metric} {good2} an {f3} geliefert werden.

Tipp: Drücken Sie die Taste W ([Umschalt]+w), um den Schnellvorlauf zu aktivieren. Erneutes drücken deaktiviert den Schnellvorlauf wieder.

Geliefert: {reached} {g1_metric} {good2}

\ No newline at end of file diff --git a/de/chapter_03/goal_step_11.txt b/de/chapter_03/goal_step_11.txt index 7bee4e6..6cbd680 100644 --- a/de/chapter_03/goal_step_11.txt +++ b/de/chapter_03/goal_step_11.txt @@ -1 +1 @@ -

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die Städte führt:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

Vorbereitung der elektrischen Züge.

Die elektrischen Züge:


Der erste Schritt zur Nutzung dieser Züge besteht darin, alle zu befahrenden Gleise und ein angeschlossenes Depot zu elektrifizieren.

Jetzt müssen Sie einen Personenzug zusammenstellen.
[1] Nachdem Sie das Depotfenster geöffnet haben, wählen Sie eine Lok {loc3} im Reiter Loks.
[2] Wählen Sie nun 6 Waggons für Passagiere im Reiter Passagierzüge (der Zug darf 4 Haltfelder nicht überschreiten).
Tipp: Verwenden Sie den Filter, um nur Personenfahrzeuge anzuzeigen.
Hinweis: Elektrofahrzeuge (ausser Akkufahrzeuge) erscheinen nur, wenn das Depot elektrifiziert ist.
[3] Klicken Sie bei Bedient Linie: auf das Auswahlfeld und klicken Neue Linie erstellen an.
Fügen Sie folgende Halte in der angegebenen Reihenfolge zum Fahrplan hinzu:
{list}
[4] Nachdem Sie alle Stationen hinzugefügt haben, wählen Sie die Station {stnam} in der Liste aus und konfigurieren Sie sie wie folgt:
--> [a] Stellen Sie Mindestladung auf {load}%.
--> [b] Setzen Sie maximale Wartezeit auf {wait}.
[5] Geben Sie der Linie einen Namen und schließen den Linienplan.

Wichtiger Hinweis: Der Halt der im Linienplan markiert ist, ist der Halt den Fahrzeuge anfahren werden, die diese Linie zugewiesen bekommen. Deshalb sollte nach Zuweisung einer Linie im Fahrplan des Fahrzeuges geprüft werden, welcher Halt als nächstes angefahren wird. Dieser sollte ggf. durch anklicken auf einen Halt in der Nähe des Fahrzeuges geändert werden, um lange Fahrten zu vermeiden. Bei Fahrweggebundenen Fahrzeugen wie Zügen sind dabei die Richtungen von Signalen zu beachten.

Fahrzeug kopieren:

Durch klicken auf die Schaltfläche Kopieren wird die Zusammenstellung oben kopiert. Inklusive Fahrplan bzw. zugewiesener Linie.

- Klicken Sie so oft auf die Schaltfläche Kopieren, bis Sie {cnr} Züge haben.

Starten Sie die Züge:

Sobald Sie die {cnr} Züge erstellt haben, ist es Zeit, mit anklicken von Starten die Züge auf ihre Fahrt zu schicken.

Sie gelangen zum nächsten Kapitel, wenn alle Züge im Umlauf sind.

\ No newline at end of file +

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die Städte führt:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

Vorbereitung der elektrischen Züge.

Die elektrischen Züge:


Der erste Schritt zur Nutzung dieser Züge besteht darin, alle zu befahrenden Gleise und ein angeschlossenes Depot zu elektrifizieren.

Jetzt müssen Sie einen Personenzug zusammenstellen.
[1] Nachdem Sie das Depotfenster geöffnet haben, wählen Sie eine Lok {loc3} im Reiter Loks.
[2] Wählen Sie nun 6 Waggons für Passagiere im Reiter Passagierzüge (der Zug darf 4 Haltfelder nicht überschreiten).
Tipp: Verwenden Sie den Filter, um nur Personenfahrzeuge anzuzeigen.
Hinweis: Elektrofahrzeuge (ausser Akkufahrzeuge) erscheinen nur, wenn das Depot elektrifiziert ist.
[3] Klicken Sie bei Bedient Linie: auf das Auswahlfeld und klicken Neue Linie erstellen an.
Fügen Sie folgende Halte in der angegebenen Reihenfolge zum Fahrplan hinzu:
{list}
[4] Nachdem Sie alle Stationen hinzugefügt haben, wählen Sie die Station {stnam} in der Liste aus und konfigurieren Sie sie wie folgt:
--> [a] Stellen Sie Mindestladung auf {load}%.
--> [b] Setzen Sie maximale Wartezeit auf {wait}.
[5] Geben Sie der Linie einen Namen und schließen den Linienplan.

Wichtiger Hinweis: Der Halt der im Linienplan markiert ist, ist der Halt den Fahrzeuge anfahren werden, die diese Linie zugewiesen bekommen. Deshalb sollte nach Zuweisung einer Linie im Fahrplan des Fahrzeuges geprüft werden, welcher Halt als nächstes angefahren wird. Dieser sollte ggf. durch anklicken auf einen Halt in der Nähe des Fahrzeuges geändert werden, um lange Fahrten zu vermeiden. Bei Fahrweggebundenen Fahrzeugen wie Zügen sind dabei die Richtungen von Signalen zu beachten.

Fahrzeug kopieren:

Durch klicken auf die Schaltfläche Kopieren wird die Zusammenstellung oben kopiert. Inklusive Fahrplan bzw. zugewiesener Linie.

- Klicken Sie so oft auf die Schaltfläche Kopieren, bis Sie {cnr} Züge haben.

Starten Sie die Züge:

Sobald Sie die {cnr} Züge erstellt haben, ist es Zeit, mit anklicken von Starten die Züge auf ihre Fahrt zu schicken.

Sie gelangen zum nächsten Kapitel, wenn alle Züge im Umlauf sind.

\ No newline at end of file diff --git a/de/chapter_03/step_1-4_hinfo.txt b/de/chapter_03/step_1-4_hinfo.txt index 31e7bf5..2b48984 100644 --- a/de/chapter_03/step_1-4_hinfo.txt +++ b/de/chapter_03/step_1-4_hinfo.txt @@ -1 +1 @@ -

Für die Produktion von {good2} müssen Sie {good1} von {f1} nach {f2} transportieren.

\ No newline at end of file +

Für die Produktion von {good2} müssen Sie {good1} von {f1} nach {f2} transportieren.

\ No newline at end of file diff --git a/de/chapter_03/step_8-10_hinfo.txt b/de/chapter_03/step_8-10_hinfo.txt index 3a30868..be557fd 100644 --- a/de/chapter_03/step_8-10_hinfo.txt +++ b/de/chapter_03/step_8-10_hinfo.txt @@ -1 +1 @@ -

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

\ No newline at end of file +

Der Öffentliche Dienst benötigt Sie, um das Eisenbahnnetz fertigzustellen, das durch die folgenden Städte verläuft:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

\ No newline at end of file diff --git a/de/chapter_04/01_2-2.txt b/de/chapter_04/01_2-2.txt index 0f14540..b007196 100644 --- a/de/chapter_04/01_2-2.txt +++ b/de/chapter_04/01_2-2.txt @@ -1 +1 @@ -

Um {good2} zu produzieren, muss {good1} von {f1} nach {f3} transportiert werden.

{tx} Die Beschreibung Details finden Sie in der Hilfe, die Sie über das ? in der Titelzeile des Fabrikfensters aufrufen können.

Hinweis: Der Transport von Passagieren und Post zur Fabrik ist für die Produktion der Fabrik nicht erforderlich. Ob der Transport von Passagieren und Post sowie die Versorgung mit Strom die Produktion erhöht wird im Reiter Produktionskennzahlen angezeigt.

Um zum nächsten Schritt zu gelangen, klicken Sie auf {f1}.

\ No newline at end of file +

Um {good2} zu produzieren, muss {good1} von {f1} nach {f3} transportiert werden.

{tx} Die Beschreibung Details finden Sie in der Hilfe, die Sie über das ? in der Titelzeile des Fabrikfensters aufrufen können.

Hinweis: Der Transport von Passagieren und Post zur Fabrik ist für die Produktion der Fabrik nicht erforderlich. Ob der Transport von Passagieren und Post sowie die Versorgung mit Strom die Produktion erhöht wird im Reiter Produktionskennzahlen angezeigt.

Um zum nächsten Schritt zu gelangen, klicken Sie auf {f1}.

\ No newline at end of file diff --git a/de/chapter_04/05_1-3.txt b/de/chapter_04/05_1-3.txt index 27d6ea0..9443e4f 100644 --- a/de/chapter_04/05_1-3.txt +++ b/de/chapter_04/05_1-3.txt @@ -1 +1 @@ -

{good2} muss von {f3} nach {f4} transportiert werden.

Flüsse und Kanäle

Es gibt in Simutrans schiffbare und unschiffbare Flüsse. Weiterhin können Kanäle gebaut werden. Diese können über Land gebaut werden oder zum Ausbau von Flüssen genutzt werden. Aber Vorsicht, die Baukosten für Kanäle sind sehr hoch, weshalb Sie die Baukosten unbedingt vorher überschlagen sollten, um den Bankrott Ihrer Firma zu vermeiden.

{tx} Bauen sie den Fluss von {w1} nach {w2} mit einem Kanal aus.

\ No newline at end of file +

{good2} muss von {f3} nach {f4} transportiert werden.

Flüsse und Kanäle

Es gibt in Simutrans schiffbare und unschiffbare Flüsse. Weiterhin können Kanäle gebaut werden. Diese können über Land gebaut werden oder zum Ausbau von Flüssen genutzt werden. Aber Vorsicht, die Baukosten für Kanäle sind sehr hoch, weshalb Sie die Baukosten unbedingt vorher überschlagen sollten, um den Bankrott Ihrer Firma zu vermeiden.

{tx} Bauen sie den Fluss von {w1} nach {w2} mit einem Kanal aus.

\ No newline at end of file diff --git a/de/chapter_04/05_2-3.txt b/de/chapter_04/05_2-3.txt index e95aa1f..a376160 100644 --- a/de/chapter_04/05_2-3.txt +++ b/de/chapter_04/05_2-3.txt @@ -1 +1 @@ -

{good2} muss von {f3} nach {f4} transportiert werden.

{tx} Bauen Sie einen Binnenhafen für Waren auf Feld {dock}.

\ No newline at end of file +

{good2} muss von {f3} nach {f4} transportiert werden.

{tx} Bauen Sie einen {cdock} für Waren auf Feld {dock}.

\ No newline at end of file diff --git a/de/chapter_04/05_3-3.txt b/de/chapter_04/05_3-3.txt index 5ce6e1e..e2fb3cd 100644 --- a/de/chapter_04/05_3-3.txt +++ b/de/chapter_04/05_3-3.txt @@ -1 +1 @@ -

{tx} Verbindung zum Verbraucher {f4}

{all_cov} Schiffe werden benötigt, um {f4} mit {good2} zu versorgen.

[1] Klicken Sie im Fenster Schiffdepot {dep1} auf die Registerkarte Schiffe und wählen Sie dann das {sh} aus.
[2] Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen.
[3] Wählen Sie die Feder bei {f3} aus und stellen Sie die Mindestlast auf {load}%
[4] Wählen Sie das Dock bei {f4}.
[5] Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.
[6] Drücken Sie auf Kopieren, bis alle {all_cov} Schiffe unterwegs sind.
[7] Klicken Sie abschließend Starten.

Tipp: Drücken Sie Strg beim klicken auf Starten, damit alle Fahrzeuge das Depot verlassen.

Um zum nächsten Schritt zu gelangen, müssen alle Schiffe im Umlauf sein.

Schiffe im Umlauf: {cir}/{all_cov}

\ No newline at end of file +

{tx} Verbindung zum Verbraucher {f4}

{all_cov} Schiffe werden benötigt, um {f4} mit {good2} zu versorgen.

[1] Klicken Sie im Fenster Schiffdepot {dep1} auf die Registerkarte Schiffe und wählen Sie dann das {sh} aus.
[2] Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen.
[3] Wählen Sie ein Wasserfeld beim Hafen an der {f3} aus und stellen Sie die Mindestlast auf {load}%
[4] Wählen Sie den Binnenhafen bei {f4}.
[5] Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.
[6] Drücken Sie auf Kopieren, bis sie {all_cov} Schiffe haben.
[7] Klicken Sie abschließend Starten.

Tipp: Drücken Sie Strg beim klicken auf Starten, damit alle Fahrzeuge das Depot verlassen.

Um zum nächsten Schritt zu gelangen, müssen alle Schiffe im Umlauf sein.

Schiffe im Umlauf: {cir}/{all_cov}

\ No newline at end of file diff --git a/de/chapter_04/goal.txt b/de/chapter_04/goal.txt index ec5f8f3..cd05fa9 100644 --- a/de/chapter_04/goal.txt +++ b/de/chapter_04/goal.txt @@ -1 +1 @@ -

In diesem Kapitel sind die Schiffe die Protagonisten und mit ihnen werden wir Güter, Passagiere und Post transportieren.

{scr}

{txtst_01}Schritt A - Ein Blick auf die Fabriken
{step_01}

{txtst_02}Schritt B - Docks platzieren
{step_02}

{txtst_03}Schritt C - Werften platzieren
{step_03}

{txtst_04}Schritt D - Die Lieferanten verbinden
{step_04}

{txtst_05}Schritt E - Den Verbraucher verbinden
{step_05}

{txtst_06}Schritt F - Passagierpiers
{step_06}

{txtst_07}Schritt G - Verbindung von Touristenattraktionen
{step_07}

\ No newline at end of file +

In diesem Kapitel sind die Schiffe die Protagonisten und mit ihnen werden wir Güter, Passagiere und Post transportieren.

{scr}

{txtst_01}Schritt A - Ein Blick auf die Fabriken
{step_01}

{txtst_02}Schritt B - Docks platzieren
{step_02}

{txtst_03}Schritt C - Werften platzieren
{step_03}

{txtst_04}Schritt D - Die Lieferanten verbinden
{step_04}

{txtst_05}Schritt E - Den Verbraucher verbinden
{step_05}

{txtst_06}Schritt F - Passagierpiers
{step_06}

{txtst_07}Schritt G - Verbindung von Touristenattraktionen
{step_07}

\ No newline at end of file diff --git a/de/chapter_04/goal_step_02.txt b/de/chapter_04/goal_step_02.txt index 3effed9..2409e4c 100644 --- a/de/chapter_04/goal_step_02.txt +++ b/de/chapter_04/goal_step_02.txt @@ -1 +1 @@ -

Um {good2} zu produzieren, muss {good1} von {f1} nach {f3} transportiert werden.

Werkzeuge für den Schiffsverkehr finden Sie im Menü Kanäle, Häfen und Werfeten.

Bauen Sie {nr} Hafen für Waren auf das angegebene Feld:
{dock}

Um zum nächsten Schritt zu gelangen, bauen Sie den Hafen.

\ No newline at end of file +

Um {good2} zu produzieren, muss {good1} von {f1} nach {f3} transportiert werden.

Werkzeuge für den Schiffsverkehr finden Sie im Menü Kanäle, Häfen und Werfeten.

Bauen Sie {nr} Hafen für Waren auf das angegebene Feld:
{dock}

Um zum nächsten Schritt zu gelangen, bauen Sie den Hafen.

\ No newline at end of file diff --git a/de/chapter_04/goal_step_03.txt b/de/chapter_04/goal_step_03.txt index 82f2f59..6ef68c4 100644 --- a/de/chapter_04/goal_step_03.txt +++ b/de/chapter_04/goal_step_03.txt @@ -1 +1 @@ -

Um {good2} zu produzieren, muss {good1} von {f1} nach {f3} transportiert werden.

Bauen Sie ein Schiffdepot auf Feld {dep1}.

Um zum nächsten Schritt zu gelangen, klicken Sie mit dem Abfragewerkzeug auf das Schiffdepot {dep1}.

\ No newline at end of file +

Um {good2} zu produzieren, muss {good1} von {f1} nach {f3} transportiert werden.

Bauen Sie ein Schiffdepot auf Feld {dep1}.

Um zum nächsten Schritt zu gelangen, klicken Sie mit dem Abfragewerkzeug auf das Schiffdepot {dep1}.

\ No newline at end of file diff --git a/de/chapter_04/goal_step_04.txt b/de/chapter_04/goal_step_04.txt index 61feb8c..4c029ee 100644 --- a/de/chapter_04/goal_step_04.txt +++ b/de/chapter_04/goal_step_04.txt @@ -1 +1 @@ -

Um {good2} zu produzieren, muss {good1} von {f1} nach {f3} transportiert werden.

Verbindung zum Lieferanten herstellen {f1}

{all_cov} Schiffe werden benötigt, um {f3} mit {good1} zu versorgen.

Hinweis: Bei Häfen und Docks müssen Sie für den Fahrplanhalt auf die Wasserfläche davor in das Einzugsgebiet (Taste v) klicken. Bei Kanalhäfen hingegen müssen sie auf den Kanalhafen klicken. Bei Wasserindustrien reicht ebenfalls ein Klick in das Einzugsgebiet.

[1] Klicken Sie im Fenster Schiffdepot auf die Registerkarte Schiffe und wählen Sie dann das Symbol {sh} aus.
[2] Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen
[3] Wählen Sie die Bohrinsel {f1} aus und stellen Sie die Mindestladung auf {load}%
[4] Wählen Sie den Hafen bei {f3}
[5] Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.
[6] Drücken Sie auf Kopieren, bis Sie {all_cov} Konvois/Schiffe erreichen.
[7] Drücken Sie abschließend die Schaltfläche Starten.

Tipp: Drücken Sie Strg beim klicken auf Starten, damit alle Fahrzeuge das Depot verlassen.

Um zum nächsten Schritt zu gelangen, müssen alle Schiffe im Umlauf sein.

Schiffe im Umlauf: {cir}/{all_cov}

\ No newline at end of file +

Um {good2} zu produzieren, muss {good1} von {f1} nach {f3} transportiert werden.

Verbindung zum Lieferanten herstellen {f1}

{all_cov} Schiffe werden benötigt, um {f3} mit {good1} zu versorgen.

Hinweis: Bei Häfen und Docks müssen Sie für den Fahrplanhalt auf die Wasserfläche davor in das Einzugsgebiet (Taste v) klicken. Bei Kanalhäfen hingegen müssen sie auf den Kanalhafen klicken. Bei Wasserindustrien reicht ebenfalls ein Klick in das Einzugsgebiet.

[1] Klicken Sie im Fenster Schiffdepot auf die Registerkarte Schiffe und wählen Sie dann das Symbol {sh} aus.
[2] Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen
[3] Wählen Sie ein Wasserfeld bei der Bohrinsel {f1} aus und stellen Sie die Mindestladung auf {load}%
[4] Wählen Sie ein Wasserfeld am Hafen bei {f3}
[5] Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.
[6] Drücken Sie auf Kopieren, bis Sie {all_cov} Konvois/Schiffe erreichen.
[7] Drücken Sie abschließend die Schaltfläche Starten.

Tipp: Drücken Sie Strg beim klicken auf Starten, damit alle Fahrzeuge das Depot verlassen.

Um zum nächsten Schritt zu gelangen, müssen alle Schiffe im Umlauf sein.

Schiffe im Umlauf: {cir}/{all_cov}

\ No newline at end of file diff --git a/de/chapter_04/goal_step_06.txt b/de/chapter_04/goal_step_06.txt index 67b2558..54e5549 100644 --- a/de/chapter_04/goal_step_06.txt +++ b/de/chapter_04/goal_step_06.txt @@ -1 +1 @@ -

Es ist notwendig, Passagiere in touristische Gebiete {tur} zu transportieren.

Platzieren Sie {nr} Häfen für Passagiere auf den angegebenen Feldern:
{dock}

Um zum nächsten Schritt zu gelangen, bauen Sie alle Häfen.

\ No newline at end of file +

Es ist notwendig, Passagiere ins touristische Gebiete bei {tur} zu transportieren.

Platzieren Sie {nr} Häfen für Passagiere auf den angegebenen Feldern:
{dock}

Um zum nächsten Schritt zu gelangen, bauen Sie alle Häfen.

\ No newline at end of file diff --git a/de/chapter_04/goal_step_07.txt b/de/chapter_04/goal_step_07.txt index 7189068..1a8ac20 100644 --- a/de/chapter_04/goal_step_07.txt +++ b/de/chapter_04/goal_step_07.txt @@ -1 +1 @@ -

Es ist notwendig, Passagiere in touristische Gebiete {tur} zu transportieren.

Klicken Sie mit dem Abfragewerkzeug auf das Schiffdepot {dep1}. Kaufen Sie im Reiter Fähren ein {ship}.

Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen und fügen sie folgende Haltestellen hinzu:
{list}

Nachdem Sie die Haltestellen hinzugefügt haben, wählen Sie die Haltestelle {stnam} aus und konfigurieren Sie wie folgt:
--> [a] Setzen Sie Mindestladung auf {load}% .
--> [b] Setzen Sie maximale Wartezeit auf {wait}.

Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.
Klicken Sie abschließend auf Starten.

Um zum nächsten Kapitel zu gelangen, starten Sie das Schiff.

\ No newline at end of file +

Es ist notwendig, Passagiere in touristische Gebiete {tur} zu transportieren.

Klicken Sie mit dem Abfragewerkzeug auf das Schiffdepot {dep1}. Kaufen Sie im Reiter Fähren ein {ship}.

Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen und fügen sie folgende Haltestellen hinzu:
{list}

Nachdem Sie die Haltestellen hinzugefügt haben, wählen Sie die Haltestelle {stnam} aus und konfigurieren Sie wie folgt:
--> [a] Setzen Sie Mindestladung auf {load}% .
--> [b] Setzen Sie maximale Wartezeit auf {wait}.

Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.
Klicken Sie abschließend auf Starten.

Um zum nächsten Kapitel zu gelangen, starten Sie das Schiff.

\ No newline at end of file diff --git a/de/chapter_05/03_1-2.txt b/de/chapter_05/03_1-2.txt index ce4ae76..78b80e7 100644 --- a/de/chapter_05/03_1-2.txt +++ b/de/chapter_05/03_1-2.txt @@ -1 +1 @@ -

{tx} Im Menü {toolbar} wählen Sie {trf_name} aus, um Umspannwerke an den Fabriken zu bauen:
{tran}

Um zum nächsten Schritt zu gelangen, bauen Sie alle Umspannwerke.

\ No newline at end of file +

{tx} Im Menü {toolbar} wählen Sie {trf_name} aus, um Umspannwerke an den Fabriken zu bauen:
{tran}

Um zum nächsten Schritt zu gelangen, bauen Sie alle Umspannwerke.

\ No newline at end of file diff --git a/de/chapter_05/03_2-2.txt b/de/chapter_05/03_2-2.txt index 94c74d5..14bf551 100644 --- a/de/chapter_05/03_2-2.txt +++ b/de/chapter_05/03_2-2.txt @@ -1 +1 @@ -

{tx} Im Menü {toolbar} wählen Sie {powerline_tool}, um alle Fabriken an das Stromnetz anzuschließen:
{tran}

Um zum nächsten Schritt zu gelangen, verbinden Sie alle Umspannwerke.

\ No newline at end of file +

{tx} Im Menü {toolbar} wählen Sie {powerline_tool}, um alle Fabriken an das Stromnetz anzuschließen:
{tran}

Um zum nächsten Schritt zu gelangen, verbinden Sie alle Umspannwerke.

\ No newline at end of file diff --git a/de/chapter_05/04_1-3.txt b/de/chapter_05/04_1-3.txt index 451063b..841f8c3 100644 --- a/de/chapter_05/04_1-3.txt +++ b/de/chapter_05/04_1-3.txt @@ -1 +1 @@ -

{tx} Im Menü {toolbar} wählen Sie Erweiterungsgebäude für die Post aus und platzieren Sie eines an jedem der folgenden Orte:
{st}

Um zum nächsten Schritt zu gelangen, bauen Sie alle Gebäude.

\ No newline at end of file +

{img_road_menu} {toolbar_halt}

{img_post_menu} {toolbar_extension}

Es gibt zwei Möglichkeiten Stationen für Post freizuschalten. Zum einen kann ein Post-Erweiterungsgebäude (Menü {toolbar_extension}) auf ein freies Feld neben dem Halt gebaut werden.
Zum anderen kann ein weiterer Halt (Menü {toolbar_halt}) auf einen geraden Weg angebaut werden, der Post akzeptiert.

Hinweis: Sollten Sie einen falschen Halt bauen, können Sie diesen mit einem anderen Halt mit höherer Kapazität überbauen. Hat der vorhandene Halt die gleiche oder eine höhere Kapazität. dann können Sie das überbauen mit gedrückter Strg - Taste erzwingen.

{tx} Erweitern Sie die folgenden Halte, damit sie Post akzeptieren. {st}

Um zum nächsten Schritt zu gelangen, müssen alle Halte Post akzeptieren.

\ No newline at end of file diff --git a/de/chapter_05/04_2-3.txt b/de/chapter_05/04_2-3.txt index 4ee1fc2..5373dfc 100644 --- a/de/chapter_05/04_2-3.txt +++ b/de/chapter_05/04_2-3.txt @@ -1 +1 @@ -

{tx} Wählen Sie im Straßendepot {dep} einen {veh} aus.
Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen.

Wählen Sie nun die Haltestellen aus:
{list}

Nachdem Sie alle {nr} Haltestellen hinzugefügt haben, wählen Sie die Haltestelle {stnam} und konfigurieren Sie es wie folgt:
--> [a] Konfigurieren Sie Mindestlast auf {load} %.
--> [b] Setzen Sie Ausfahrt nach auf {wait}.
Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.

Klicken Sie auf Kopieren, bis Sie {all_cov} Fahrzeuge haben.
Drücken Sie abschließend die Schaltfläche Starten

Um zum nächsten Schritt zu gelangen, starten Sie alle Lkw.

Konvois im Umlauf: {cir}/{all_cov}

\ No newline at end of file +

{tx} Wählen Sie im Straßendepot {dep} einen {veh} aus.
Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen.

Wählen Sie nun die Haltestellen aus:
{list}

Nachdem Sie alle {nr} Haltestellen hinzugefügt haben, wählen Sie die Haltestelle {stnam} und konfigurieren Sie es wie folgt:
--> [a] Konfigurieren Sie Mindestlast auf {load} %.
--> [b] Setzen Sie Ausfahrt nach auf {wait}.
Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.

Klicken Sie auf Kopieren, bis Sie {all_cov} Fahrzeuge haben.
Drücken Sie abschließend die Schaltfläche Starten

Um zum nächsten Schritt zu gelangen, starten Sie alle Lkw.

Lkw im Umlauf: {cir}/{all_cov}

\ No newline at end of file diff --git a/de/chapter_05/04_3-3.txt b/de/chapter_05/04_3-3.txt index 4c6ac45..2f5dc89 100644 --- a/de/chapter_05/04_3-3.txt +++ b/de/chapter_05/04_3-3.txt @@ -1 +1 @@ -

Klicken Sie mit dem Abfragewerkzeug auf das Schiffdepot {dep}. Kaufen Sie im Reiter Fähren ein {ship}.

Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen und fügen sie folgende Haltestellen hinzu:
{list}

Nachdem Sie die Haltestellen hinzugefügt haben, wählen Sie die Haltestelle {stnam} aus und konfigurieren Sie wie folgt:
--> [a] Setzen Sie Mindestladung auf {load}% .
--> [b] Setzen Sie maximale Wartezeit auf {wait}.

Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.
Klicken Sie abschließend auf Starten.

Um zum nächsten Kapitel zu gelangen, starten Sie das Schiff.

\ No newline at end of file +

Klicken Sie mit dem Abfragewerkzeug auf das Schiffdepot {dep}. Kaufen Sie im Reiter Fähren ein {ship}.

Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen und fügen sie folgende Haltestellen hinzu:
{list}

Nachdem Sie die Haltestellen hinzugefügt haben, wählen Sie die Haltestelle {stnam} aus und konfigurieren Sie wie folgt:
--> [a] Setzen Sie Mindestladung auf {load}% .
--> [b] Setzen Sie maximale Wartezeit auf {wait}.

Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.
Klicken Sie abschließend auf Starten.

Um zum nächsten Kapitel zu gelangen, starten Sie das Schiff.

\ No newline at end of file diff --git a/de/chapter_05/goal.txt b/de/chapter_05/goal.txt index 9cec9cf..7457a7f 100644 --- a/de/chapter_05/goal.txt +++ b/de/chapter_05/goal.txt @@ -1 +1 @@ -

In diesem Kapitel werden wir die Effizienz unserer Industrieketten verbessern und Passagiere sowie Post transportieren sowie eine Stromversorung aufbauen.

{scr}

{txtst_01}Schritt A - Stromproduktion und -verbrauch
{step_01}

{txtst_02}Schritt B - Kohlelastwagen
{step_02}

{txtst_03}Schritt C - Anschließen des elektrischen Systems
{step_03}

{txtst_04}Schritt D - Zustellung der Post
{step_04}

\ No newline at end of file +

In diesem Kapitel werden wir die Effizienz unserer Industrieketten verbessern und Passagiere sowie Post transportieren sowie eine Stromversorung aufbauen.

{scr}

{txtst_01}Schritt A - Stromproduktion und -verbrauch
{step_01}

{txtst_02}Schritt B - Kohlelastwagen
{step_02}

{txtst_03}Schritt C - Anschließen des elektrischen Systems
{step_03}

{txtst_04}Schritt D - Zustellung der Post
{step_04}

\ No newline at end of file diff --git a/de/chapter_05/goal_step_01.txt b/de/chapter_05/goal_step_01.txt index ef57cb8..44a771d 100644 --- a/de/chapter_05/goal_step_01.txt +++ b/de/chapter_05/goal_step_01.txt @@ -1 +1 @@ -

Elektrifizierte Fabriken

Einige der Fabriken benötigen elektrische Energie, um ihre Produktion zu steigern. Dies wird dadurch erreicht, dass an jeder Fabrik/Industrie ein Umspannwerk gebaut und dieser dann an eine Kraftwerk angeschlossen wird.
Nicht alle Industrien benötigen elektrische Energie. Dies kann anhand des kleinen Symbols oder ?Blitz?-Symbols überprüft werden, das in erscheint Das Fabrikfenster. Dieses Symbol zeigt an, dass die Fabrik elektrische Energie benötigt, um ihre Produktion/Effizienz zu verbessern.

In diesem Kapitel werden wir die folgenden Fabriken elektrifizieren:
{f1}
{f2}
{f3}

Das Stromerzeugungskraftwerk muss ebenfalls angeschlossen sein:
{f4}

Um zum nächsten Schritt zu gelangen, klicken Sie auf eine der Fabriken in der Liste.

\ No newline at end of file +

Elektrifizierte Fabriken

Einige der Fabriken benötigen elektrische Energie, um ihre Produktion zu steigern. Dies wird dadurch erreicht, dass an jeder Fabrik/Industrie ein Umspannwerk gebaut und dieser dann an eine Kraftwerk angeschlossen wird.
Nicht alle Industrien benötigen elektrische Energie. Dies kann anhand des kleinen Symbols oder „Blitz“-Symbols überprüft werden, das in erscheint Das Fabrikfenster. Dieses Symbol zeigt an, dass die Fabrik elektrische Energie benötigt, um ihre Produktion/Effizienz zu verbessern.

In diesem Kapitel werden wir die folgenden Fabriken elektrifizieren:
{f1}
{f2}
{f3}

Das Stromerzeugungskraftwerk muss ebenfalls angeschlossen sein:
{f4}

Um zum nächsten Schritt zu gelangen, klicken Sie auf eine der Fabriken in der Liste.

\ No newline at end of file diff --git a/de/chapter_05/goal_step_02.txt b/de/chapter_05/goal_step_02.txt index 3abfcb2..df1c272 100644 --- a/de/chapter_05/goal_step_02.txt +++ b/de/chapter_05/goal_step_02.txt @@ -1 +1 @@ -

Sie müssen {good} transportieren, um das Stromerzeugungswerk {f4} zu betreiben.

[1] Die Straße verbinden:
Wählen Sie {tool2} und bauen Sie eine Straße zwischen Feld {w1} bei {f3} und Feld {w2} bei {f4}.

[2] LKW-Stationen:
Bauen Sie die Frachtstationen auf Feld {w1} und Feld {w2}.

[3] Das Straßendepot:
Bauen Sie eine Straße auf Feld {dep} und darauf ein Straßendepot.

[4] Vorbereitung der LKWs:
Sie müssen nun ein geeignetes Fahrzeug auswählen, um {good} nach {f4} zu transportieren.
[a] Öffnen Sie das Straßendepot und wählen Sie einen Lkw {veh} im Reiter LKW.
[b] Wählen Sie nun im Reiter Anhänger einen Anhänger für {good} aus.
[c] Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen und wählen Sie als ersten Halt den Lkw-Halt in der Nähe von {f3} aus.
--> Stellen Sie Mindestladung auf {load}% ein.
[d] Wählen Sie den Lkw-Halt in der Nähe von {f4} aus.
[e] Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.
[f] Klicken Sie so oft auf Kopieren, bis Sie {all_cov} Lkws haben.
[g] Starten Sie die Lkw.

Um zum nächsten Schritt zu gelangen, starten Sie alle Fahrzeuge.

Fahrzeuge im Umlauf: {cir}/{all_cov}

\ No newline at end of file +

Sie müssen {good} transportieren, um das Stromerzeugungswerk {f4} zu betreiben.

[1] Die Straße verbinden:
Wählen Sie {tool2} und bauen Sie eine Straße zwischen Feld {w1} bei {f3} und Feld {w2} bei {f4}.

[2] LKW-Stationen:
Bauen Sie die Frachtstationen auf Feld {w1} und Feld {w2}.

[3] Das Straßendepot:
Bauen Sie eine Straße auf Feld {dep} und darauf ein Straßendepot.

[4] Vorbereitung der LKWs:
Sie müssen nun ein geeignetes Fahrzeug auswählen, um {good} nach {f4} zu transportieren.
[a] Öffnen Sie das Straßendepot und wählen Sie einen Lkw {veh} im Reiter LKW.
[b] Wählen Sie nun im Reiter Anhänger einen Anhänger für {good} aus.
[c] Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen und wählen Sie als ersten Halt den Lkw-Halt in der Nähe von {f3} aus.
--> Stellen Sie Mindestladung auf {load}% ein.
[d] Wählen Sie den Lkw-Halt in der Nähe von {f4} aus.
[e] Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.
[f] Klicken Sie so oft auf Kopieren, bis Sie {all_cov} Lkws haben.
[g] Starten Sie die Lkw.

Um zum nächsten Schritt zu gelangen, starten Sie alle Fahrzeuge.

Fahrzeuge im Umlauf: {cir}/{all_cov}

\ No newline at end of file diff --git a/de/chapter_06/goal_step_01.txt b/de/chapter_06/goal_step_01.txt index eafd703..aefa2bb 100644 --- a/de/chapter_06/goal_step_01.txt +++ b/de/chapter_06/goal_step_01.txt @@ -1 +1 @@ -

Der öffentliche Dienst benötigt Ihre Hilfe, um die Stadt {cit1} mit der Stadt {cit2} per Flugzeug zu verbinden.

Flughafen im Bau


Schritte:
1 - Bauen Sie {w1name} zwischen {c1_a} und {c1_b}.
2 - Bauen Sie {w2name} zwischen {c2_a} und {c2_b}.
3 - Bauen Sie den Halt auf das Feld: {st1}.
4 - Bauen Sie ein Passagierterminal auf das Feld: {st2}.
5 - Bauen Sie den Hangar auf Feld: {dep1}.
6 - Machen Sie den Halt öffentlich: {st1}.

Um zum nächsten Schritt zu gelangen, bauen Sie den Flughafen und machen Sie ihn öffentlich.

\ No newline at end of file +

Der öffentliche Dienst benötigt Ihre Hilfe, um die Stadt {cit1} mit der Stadt {cit2} per Flugzeug zu verbinden.

Flughafen im Bau


Schritte:
1 - Bauen Sie {w1name} zwischen {c1_a} und {c1_b}.
2 - Bauen Sie {w2name} zwischen {c2_a} und {c2_b}.
3 - Bauen Sie den Halt auf das Feld: {st1}.
4 - Bauen Sie ein Passagierterminal auf das Feld: {st2}.
5 - Bauen Sie den Hangar auf Feld: {dep1}.
6 - Machen Sie den Halt öffentlich: {st1}.

Um zum nächsten Schritt zu gelangen, bauen Sie den Flughafen und machen Sie ihn öffentlich.

\ No newline at end of file diff --git a/de/chapter_06/goal_step_02.txt b/de/chapter_06/goal_step_02.txt index 47e2eb3..6ed9c26 100644 --- a/de/chapter_06/goal_step_02.txt +++ b/de/chapter_06/goal_step_02.txt @@ -1 +1 @@ -

Der öffentliche Dienst benötigt Ihre Hilfe, um die Stadt {cit1} mit der Stadt {cit2} per Flugzeug zu verbinden.

Klicken Sie auf den Hangar {dep1} und wählen das Flugzeug {plane}
Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen.

[1] Wählen Sie den Halt {sch1} und konfigurieren Sie den Halt wie folgt:
--> [a] Konfigurieren Sie Mindestladung auf {load}%
--> [b] Setzen Sie maximale Wartezeit auf {wait}
[2] Wählen Sie den Halt {sch2}. Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.
[3] Starten Sie das Flugzeug mit Klick auf Starten

Um zum nächsten Schritt zu gelangen, starten Sie das Flugzeug.

\ No newline at end of file +

Der öffentliche Dienst benötigt Ihre Hilfe, um die Stadt {cit1} mit der Stadt {cit2} per Flugzeug zu verbinden.

Klicken Sie auf den Hangar {dep1} und wählen das Flugzeug {plane}.
Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen.

Wählen Sie nun die Halte aus:
{list}

Nachdem Sie alle Halte hinzugefügt haben, wählen Sie den Halt {stnam} und konfigurieren Sie ihn wie folgt:
--> [a] Konfigurieren Sie Mindestlast auf {load} %.
--> [b] Setzen Sie Ausfahrt nach auf {wait}.
Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.

Drücken Sie abschließend die Schaltfläche Starten

Um zum nächsten Schritt zu gelangen, starten Sie das Flugzeug.

\ No newline at end of file diff --git a/de/chapter_06/goal_step_03.txt b/de/chapter_06/goal_step_03.txt index c3af40e..749ab47 100644 --- a/de/chapter_06/goal_step_03.txt +++ b/de/chapter_06/goal_step_03.txt @@ -1 +1 @@ -

Verbindung der Stadt {cit1} mit dem Flughafen {sch1} mithilfe von {cnr} Bussen.

Klicken Sie auf das Straßendepot {dep2} und wählen Sie einen Bus {bus1}.
Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen

[1] Wählen Sie alle Haltestellen der Reihe nach aus:
{stx}

[2] Nachdem Sie die Haltestellen hinzugefügt haben, wählen Sie die Haltestelle {stnam} aus der Liste und konfigurieren Sie den Halt wie folgt:
--> [a] Konfigurieren Sie Mindestladung auf {load}% und maximale Wartezeit auf {wait}
[3] Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.
[4] Verwenden Sie die Schaltfläche Kopieren, um die erforderlichen {cnr} Busse zu erhalten.
[5] Klicken Sie auf Starten, bis alle Fahrzeuge das Depot verlassen.

Um zum nächsten Schritt zu gelangen, starten Sie alle Busse.

\ No newline at end of file +

Verbindung der Stadt {cit1} mit dem Flughafen {sch1} mithilfe von {cnr} Bussen.

Klicken Sie auf das Straßendepot {dep2} und wählen Sie einen Bus {bus1}.
Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen

[1] Wählen Sie alle Haltestellen der Reihe nach aus:
{stx}

[2] Nachdem Sie die Haltestellen hinzugefügt haben, wählen Sie die Haltestelle {stnam} aus der Liste und konfigurieren Sie den Halt wie folgt:
--> [a] Konfigurieren Sie Mindestladung auf {load}% und maximale Wartezeit auf {wait}
[3] Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.
[4] Verwenden Sie die Schaltfläche Kopieren, um die erforderlichen {cnr} Busse zu erhalten.
[5] Klicken Sie auf Starten, bis alle Fahrzeuge das Depot verlassen.

Um zum nächsten Schritt zu gelangen, starten Sie alle Busse.

\ No newline at end of file diff --git a/de/chapter_06/goal_step_04.txt b/de/chapter_06/goal_step_04.txt index 9f67f7e..162beea 100644 --- a/de/chapter_06/goal_step_04.txt +++ b/de/chapter_06/goal_step_04.txt @@ -1 +1 @@ -

Verbindung der Stadt {cit1} mit dem Flughafen {sch2} mithilfe von {cnr} Bussen.

Das Straßendepot

Gehen Sie zum Standort {cit2}, suchen Sie die Position {dep3} und bauen Sie ein Straßendepot.

Die Busse

Klicken Sie auf das Straßendepot {dep3} und wählen Sie einen Bus {bus2}.
Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen

[1] Wählen Sie alle Haltestellen der Reihe nach aus:
{stx}

[2] Nachdem Sie die Haltestellen hinzugefügt haben, wählen Sie den Halt {stnam} aus der Liste und konfigurieren Sie den Halt wie folgt:
--> Konfigurieren Sie Mindestladung auf {load}% und maximale Wartezeit auf {wait}
[3] Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.
[4] Verwenden Sie die Schaltfläche Kopieren, um die erforderlichen {cnr} Busse zu erhalten.
[5] Klicken Sie auf Starten, bis alle Fahrzeuge das Depot verlassen.

Um zum nächsten Schritt zu gelangen, starten Sie alle Busse.

\ No newline at end of file +

Verbindung der Stadt {cit1} mit dem Flughafen {sch2} mithilfe von {cnr} Bussen.

Das Straßendepot

Gehen Sie zum Standort {cit2}, suchen Sie die Position {dep3} und bauen Sie ein Straßendepot.

Die Busse

Klicken Sie auf das Straßendepot {dep3} und wählen Sie einen Bus {bus2}.
Wählen Sie bei Bedient Linie: den Eintrag Neue Linie erstellen

[1] Wählen Sie alle Haltestellen der Reihe nach aus:
{stx}

[2] Nachdem Sie die Haltestellen hinzugefügt haben, wählen Sie den Halt {stnam} aus der Liste und konfigurieren Sie den Halt wie folgt:
--> Konfigurieren Sie Mindestladung auf {load}% und maximale Wartezeit auf {wait}
[3] Geben Sie der Linie einen passenden Namen und schließen Sie den Linienplan.
[4] Verwenden Sie die Schaltfläche Kopieren, um die erforderlichen {cnr} Busse zu erhalten.
[5] Klicken Sie auf Starten, bis alle Fahrzeuge das Depot verlassen.

Um zum nächsten Schritt zu gelangen, starten Sie alle Busse.

\ No newline at end of file diff --git a/de/chapter_07/goal.txt b/de/chapter_07/goal.txt index 9f43713..4303b22 100644 --- a/de/chapter_07/goal.txt +++ b/de/chapter_07/goal.txt @@ -1 +1 @@ -

{txtst_01}Schritt A - Die Stadtbusse I
{step_01}

{txtst_02}Schritt B - Die Stadtbusse II
{step_02}

{txtst_03}Schritt C - Die Stadtbusse III
{step_03}

{txtst_04}Schritt D - Die Stadtbusse IV
{step_04}

{txtst_05}Schritt E - Ende des Szenarios
{step_05}

\ No newline at end of file +

{txtst_01}Schritt A - Die Stadtbusse I
{step_01}

{txtst_02}Schritt B - Die Stadtbusse II
{step_02}

{txtst_03}Schritt C - Die Stadtbusse III
{step_03}

{txtst_04}Schritt D - Die Stadtbusse IV
{step_04}

\ No newline at end of file diff --git a/de/chapter_07/goal_step_01.txt b/de/chapter_07/goal_step_01.txt deleted file mode 100644 index 223e5d5..0000000 --- a/de/chapter_07/goal_step_01.txt +++ /dev/null @@ -1 +0,0 @@ -

Die Stadt {city} muss ein Busnetz erhalten, das es den Fahrgästen ermöglicht, zum Bahnhof {name} zu gelangen.

[1] Platzieren Sie eine Bushaltestelle auf Feld {stop}.
[2] Machen Sie die Haltestelle {stop} öffentlich.
[3] Richten Sie ein Busnetz in der Stadt {city} ein.
[4] Stellen Sie sicher, dass alle Busse mit der Haltestelle {name} verbunden sind..

Um zum nächsten Schritt zu gelangen, befördern Sie mehr als {load} Passagiere in einem Monat.

Es wurden diesen Monat befördert: {get_load}/{load}

\ No newline at end of file diff --git a/de/chapter_07/goal_step_01x04.txt b/de/chapter_07/goal_step_01x04.txt index 3f9ff0c..3e6180a 100644 --- a/de/chapter_07/goal_step_01x04.txt +++ b/de/chapter_07/goal_step_01x04.txt @@ -1 +1 @@ -

Die Stadt {city} muss ein Busnetz erhalten, das es den Fahrgästen ermöglicht, zum Bahnhof {name} zu gelangen.

Bauen Sie in der Stadt so viele Bushaltestellen wie Sie benötigen, um die Stadt abzudecken. Stellen Sie sicher, dass auf Feld {stop} ein Bushalt ist, der mit dem Bahnhof {name} verbunden ist, damit die Fahrgäste gezählt werden.

Um zum nächsten Schritt zu gelangen, befördern Sie mehr als {load} Passagiere in einem Monat.

Es wurden diesen Monat befördert: {get_load}/{load}

\ No newline at end of file +

Die Stadt {city} muss ein Busnetz erhalten, das es den Fahrgästen ermöglicht, zum Bahnhof {name} zu gelangen.

Bauen Sie in der Stadt so viele Bushaltestellen wie Sie benötigen, um die Stadt abzudecken. Stellen Sie sicher, dass ein Bushalt mit dem Bahnhof {name} verbunden ist, damit die Fahrgäste gezählt werden.

Um zum nächsten Schritt zu gelangen, befördern Sie mehr als {load} Passagiere in einem Monat.

TIPP: Mit dem schnellen Vorlauf kann die Wartezeit verkürzt werden.

Es wurden diesen Monat befördert: {get_load}/{load}

\ No newline at end of file diff --git a/de/chapter_07/goal_step_02.txt b/de/chapter_07/goal_step_02.txt deleted file mode 100644 index 223e5d5..0000000 --- a/de/chapter_07/goal_step_02.txt +++ /dev/null @@ -1 +0,0 @@ -

Die Stadt {city} muss ein Busnetz erhalten, das es den Fahrgästen ermöglicht, zum Bahnhof {name} zu gelangen.

[1] Platzieren Sie eine Bushaltestelle auf Feld {stop}.
[2] Machen Sie die Haltestelle {stop} öffentlich.
[3] Richten Sie ein Busnetz in der Stadt {city} ein.
[4] Stellen Sie sicher, dass alle Busse mit der Haltestelle {name} verbunden sind..

Um zum nächsten Schritt zu gelangen, befördern Sie mehr als {load} Passagiere in einem Monat.

Es wurden diesen Monat befördert: {get_load}/{load}

\ No newline at end of file diff --git a/de/chapter_07/goal_step_03.txt b/de/chapter_07/goal_step_03.txt deleted file mode 100644 index 223e5d5..0000000 --- a/de/chapter_07/goal_step_03.txt +++ /dev/null @@ -1 +0,0 @@ -

Die Stadt {city} muss ein Busnetz erhalten, das es den Fahrgästen ermöglicht, zum Bahnhof {name} zu gelangen.

[1] Platzieren Sie eine Bushaltestelle auf Feld {stop}.
[2] Machen Sie die Haltestelle {stop} öffentlich.
[3] Richten Sie ein Busnetz in der Stadt {city} ein.
[4] Stellen Sie sicher, dass alle Busse mit der Haltestelle {name} verbunden sind..

Um zum nächsten Schritt zu gelangen, befördern Sie mehr als {load} Passagiere in einem Monat.

Es wurden diesen Monat befördert: {get_load}/{load}

\ No newline at end of file diff --git a/de/chapter_07/goal_step_04.txt b/de/chapter_07/goal_step_04.txt deleted file mode 100644 index 223e5d5..0000000 --- a/de/chapter_07/goal_step_04.txt +++ /dev/null @@ -1 +0,0 @@ -

Die Stadt {city} muss ein Busnetz erhalten, das es den Fahrgästen ermöglicht, zum Bahnhof {name} zu gelangen.

[1] Platzieren Sie eine Bushaltestelle auf Feld {stop}.
[2] Machen Sie die Haltestelle {stop} öffentlich.
[3] Richten Sie ein Busnetz in der Stadt {city} ein.
[4] Stellen Sie sicher, dass alle Busse mit der Haltestelle {name} verbunden sind..

Um zum nächsten Schritt zu gelangen, befördern Sie mehr als {load} Passagiere in einem Monat.

Es wurden diesen Monat befördert: {get_load}/{load}

\ No newline at end of file diff --git a/de/finished.txt b/de/finished.txt index 05f48f3..81f9516 100644 --- a/de/finished.txt +++ b/de/finished.txt @@ -1 +1 @@ -

Das ist für den Moment alles, vielen Dank, dass Sie das mythische Simutrans spielen.

Sie können hier folgen: www.facebook.com/Simutrans
Bei Fragen helfen wir Ihnen gerne im internationalem Forum forum.simutrans.com oder im deutschen Forum simutrans-forum.de
Weitere Informationen finden sie auch unter wiki.simutrans.com

Dank an die gesamte Simutrans-Community und insbesondere an:
Dwachs
Prissi
ny911
HaydenRead
Tjoeker
gauthier
Andarix
Roboron

Grüße!! @Yona-TYT.

\ No newline at end of file +{title}

Das ist für den Moment alles, vielen Dank, dass Sie das mythische Simutrans spielen.

Sie können hier folgen: www.facebook.com/Simutrans
Bei Fragen helfen wir Ihnen gerne im internationalem Forum forum.simutrans.com oder im deutschen Forum simutrans-forum.de
Weitere Informationen finden sie auch unter wiki.simutrans.com

Dank an die gesamte Simutrans-Community und insbesondere an:
Dwachs
Prissi
ny911
HaydenRead
Tjoeker
gauthier
Andarix
Roboron

Grüße!! @Yona-TYT.

\ No newline at end of file diff --git a/de/info.txt b/de/info.txt index 4160981..3799cb4 100644 --- a/de/info.txt +++ b/de/info.txt @@ -1 +1 @@ -

Simutrans-Tutorial


Dieses Tutorial erklärt die ersten Schritte beim Aufbau Ihres Transportimperiums in Simutrans. Der Schwerpunkt liegt auf den notwendigen Maßnahmen rund um die Transportketten in Simutrans.

Das Tutorial besteht aus mehreren Kapiteln, in denen jeweils eine Reihe von Schritten zum Abschließen des Kapitels enthalten sind.

Wirtschaftliche Aspekte werden im Tutorial nur kurz behandelt.

{list_of_chapters}

Ausführlichere Hilfe erhalten Sie, indem Sie die Taste F1 drücken. In vielen Fenstern gibt es im Fenstertitel das ?, das beim anklicken direkt zum passenden Hilfetext springt.

{first_link}

Hinweis: In manchen Fällen kann es bis zu 15 Sekunden Verzögerung zwischen der Ausführung einer Aktion und der Aktualisierung des Tutorialtextes geben.


{pakset_info} \ No newline at end of file +

Simutrans-Tutorial


Dieses Tutorial erklärt die ersten Schritte beim Aufbau Ihres Transportimperiums in Simutrans. Der Schwerpunkt liegt auf den notwendigen Maßnahmen rund um die Transportketten in Simutrans.

Fenster {dialog} öffnen

Sollte dieses Fenster geschlossen werden, kann es mit diesem Button im Hauptmenü wieder geöffnet werden.

Das Tutorial besteht aus mehreren Kapiteln, in denen jeweils eine Reihe von Schritten zum Abschließen des Kapitels enthalten sind.

Wirtschaftliche Aspekte werden im Tutorial nur kurz behandelt.

{list_of_chapters}

Ausführlichere Hilfe erhalten Sie, indem Sie die Taste F1 drücken. In vielen Fenstern gibt es im Fenstertitel das ?, das beim anklicken direkt zum passenden Hilfetext springt.

{first_link}

Hinweis: In manchen Fällen kann es bis zu 15 Sekunden Verzögerung zwischen der Ausführung einer Aktion und der Aktualisierung des Tutorialtextes geben.


{pakset_info} \ No newline at end of file diff --git a/de/info/info_pak64perman.txt b/de/info/info_pak64perman.txt index 74f8f4b..7bebde8 100644 --- a/de/info/info_pak64perman.txt +++ b/de/info/info_pak64perman.txt @@ -1 +1 @@ -

Beschreibung pak64.german

\ No newline at end of file +

Beschreibung pak64.german

Das pak64.german ist ein Grafikset was nur eine Höhe verwendet.

Im pak64.german gibt es auch keinen Bonus auf Geschwindigkeit. Diese ist aber trotzdem wichtig, weil Stationen nicht überfüllen dürfen. Überfüllen Stationen, dann bricht das Transportaufkommen ein.
Wenn Mindestladung benutzt wird, dann achten Sie darauf, das dann keine Stationen überfüllen.

Magnetbahn und die S-/U-Bahn sollten erst bei sehr hohem Passagieraufkommen genutzt werden.

\ No newline at end of file diff --git a/de/rule.txt b/de/rule.txt index 054bd06..2d68066 100644 --- a/de/rule.txt +++ b/de/rule.txt @@ -1 +1 @@ -

Es werden nicht alle Werkzeuge angezeigt. Es stehen nur die für den aktuellen Schritt notwendigen Aktionen zur Verfügung.

· Regeln beschreiben
· Ratschläge geben
· Anleitungen zu bekannten Problemen

\ No newline at end of file +

Es werden nicht alle Werkzeuge angezeigt. Es stehen nur die für den aktuellen Schritt notwendigen Aktionen zur Verfügung.

· Regeln beschreiben
· Ratschläge geben
· Anleitungen zu bekannten Problemen

\ No newline at end of file diff --git a/en.tab b/en.tab index fd3e59c..a25c5d4 100644 --- a/en.tab +++ b/en.tab @@ -1,4 +1,4 @@ -################################################################################# +§################################################################################# # for translate see # # https://simutrans-germany.com/translator_page/scenarios/scenario_5/ # ################################################################################# @@ -20,21 +20,33 @@ Bus networks Bus Networks Chapter {number} - {cname} complete, next Chapter {nextcname} start here: ({coord}). Congratulations on completing Chapter {number} - {cname}, Next Chapter '{nextcname}' start here: ({coord}). +Chapter {number} - {cname} complete. +Congratulations on completing Chapter {number} - {cname}. Dock No.%d must accept [%s] Dock No.%d must accept %s Here Here. +Only water schedules allowed +Only shipping schedules allowed Place Singnal here!. Place Singnal here. Press the [Copy Backward] button, then set the Minimum Load and Month Wait Time at the first stop!. Press the [Copy Backward] button, then set Minimum Load and Depart after at the first stop! Straight slope here Steep slope here -The %s stop must be for %s -Stop [%s] must be for [%s], use the 'Remove' tool The load of waystop {nr} '{name}' isn't {load}% {pos} The load of waystop {name} isn't {load}% {pos} The waittime in waystop {nr} '{name}' isn't {wait} {pos} Depart after in waystop {name} isn't {wait} {pos} Translator HWRead +#_________________________________errer message_________________________________ +#_________________________________errer message_________________________________ +#_________________________________error message_________________________________ +#_________________________________error message_________________________________ +Action not allowed (%s). +Action on field (%s) is not allowed. +Place the mail extension at the marked tiles. +Place the post extension building in the marked tiles. +Selected halt accept not %s. +Selected halt accept not %s diff --git a/en/chapter_01/goal_step_01.txt b/en/chapter_01/goal_step_01.txt index 5abe240..2f8d287 100644 --- a/en/chapter_01/goal_step_01.txt +++ b/en/chapter_01/goal_step_01.txt @@ -1 +1 @@ -

In this first step we are going to explain some basic aspects of the Tutorial Scenario.

Warning Windows

These are used to give a warning to the player in case of doing something wrong, like using the wrong tool, the events on the stage that show pop-ups are:
1- Use of tools, when the map is clicked with the wrong tool.
2- Schedule Vehicles, when the schedule or line of the vehicle is incorrect.
3- Start Vehicles, when the type of vehicle required is incorrect.

Marks and labels

A series of prompts are used in the field to help the player find/locate things. The three types of indications are:
1- Text labes, these objects are used to display a guide text and to indicate with "X" the limits for the use of tools.
2- Marks on objects, are used to give a 'Red' highlight to the objects that must be clicked.
3- Marks in the terrain, used to highlight objects and the terrain, also plays a visual role when connecting roads.

Links

In this scenario you will very commonly see the links to object locations, clicking on one of them will automatically take you to the location they indicate, for example "{pos}", clicking will take you directly to the city {town}. They are mainly used to go to: - Cities ({pos1}), Factories ({pos2}), Stations ({pos3}), etc.

Chapter/Step Regressions

This will only happen if you eliminate a vehicle in circulation, regardless of the chapter where you are, you will be sent back to correct the problem.

Link to Skip Steps

It is a special type of link that allows you to execute codes in the Scenario with just one click, using this shortcut you can see how everything is built automatically, it can be used up to Chapter 5.

Scenario Messages

Scenario messages are disabled by default, you can enable as follows:
- In the toolbar select the menu Menssage Center, in the press the button [Options]
- Below is a list of message types, each with 4 checkboxes.
- [Master Control] this control completely enables/disables the selected message.
- [News bar] this control enables/disables messages in the news bar.
- [Temporary Window] this control enables/disables messages in a popup window that disappears in a few seconds.
- [Alert Window] this control enables/disables messages in persistent popup (not recommended).

Tip: For Scenario messages it is recommended to activate only the [Temporary Window] .

Note: The text in this window always takes a few seconds to update.

To advance to the next step, you must click on this link {link}.

\ No newline at end of file +

In this first step we are going to explain some basic aspects of the Tutorial Scenario.

Warning Windows

These are used to give a warning to the player in case of doing something wrong, like using the wrong tool, the events on the stage that show pop-ups are:
1- Use of tools, when the map is clicked with the wrong tool.
2- Schedule Vehicles, when the schedule or line of the vehicle is incorrect.
3- Start Vehicles, when the type of vehicle required is incorrect.

Marks and labels

A series of prompts are used in the field to help the player find/locate things. The three types of indications are:
1- Text labes, these objects are used to display a guide text and to indicate with "X" the limits for the use of tools.
2- Marks on objects, are used to give a 'Red' highlight to the objects that must be clicked.
3- Marks in the terrain, used to highlight objects and the terrain, also plays a visual role when connecting roads.

Links

In this scenario you will very commonly see the links to object locations, clicking on one of them will automatically take you to the location they indicate, for example "{pos}", clicking will take you directly to the city {town}. They are mainly used to go to: - Cities ({pos1}), Factories ({pos2}), Stations ({pos3}), etc.

Chapter/Step Regressions

This will only happen if you eliminate a vehicle in circulation, regardless of the chapter where you are, you will be sent back to correct the problem.

Link '{next_step}'

It is a special type of link that allows you to execute codes in the Scenario with just one click, using this shortcut you can see how everything is built automatically, it can be used up to Chapter 5.

Messages
Scenario messages are disabled by default, you can enable as follows:
- In the toolbar select the menu Message Center, in the press the button [Options]
- Below is a list of message types, each with 4 checkboxes.
- [Master Control] this control completely enables/disables the selected message.
- [News bar] this control enables/disables messages in the news bar.
- [Temporary Window] this control enables/disables messages in a popup window that disappears in a few seconds.
- [Alert Window] this control enables/disables messages in persistent popup (not recommended).

Tip: For Scenario messages it is recommended to activate only the [Temporary Window] .

Note: The text in this window always takes a few seconds to update.

To advance to the next step, you must click on this link {link}.

\ No newline at end of file diff --git a/en/chapter_01/goal_step_02.txt b/en/chapter_01/goal_step_02.txt index e9233fc..d934efe 100644 --- a/en/chapter_01/goal_step_02.txt +++ b/en/chapter_01/goal_step_02.txt @@ -1 +1 @@ -

It is recommended to turn on the grid for this tutorial by using the "#" key. In addition, it is highly recommended that Trees are set to transparent, either through the settings menu, or by pressing the "%" key.

You can zoom in and out using either the Mouse wheel, or by using the "Page Up/Page Down Keys".

You can move about the map either by holding down the Right Mouse button and dragging, using the Arrow Keys or the number pad.

You can rotate the map by pressing "[Shift]+r" (Capital "R") or in from toolbar select Rotate Map tool.

Try zooming in and out and moving about the map.

To proceed to the next step, rotate the map.

\ No newline at end of file +

{img_grid} grid
It is recommended to turn on the grid for this tutorial by using the "#" key.
{img_display} settings menu - display
In addition, it is highly recommended that Trees are set to transparent, either through the settings menu, or by pressing the "%" key.

You can zoom in and out using either the Mouse wheel, or by using the "Page Up/Page Down Keys".

You can move about the map either by holding down the Right Mouse button and dragging, using the Arrow Keys or the number pad.

rotate the map
You can rotate the map by pressing "[Shift]+r" (Capital "R") or in from toolbar select Rotate Map tool.

Try zooming in and out and moving about the map.

To proceed to the next step, rotate the map.

\ No newline at end of file diff --git a/en/chapter_01/goal_step_04.txt b/en/chapter_01/goal_step_04.txt index 0b3c0e6..d9dda36 100644 --- a/en/chapter_01/goal_step_04.txt +++ b/en/chapter_01/goal_step_04.txt @@ -1 +1 @@ -

These windows help you to keep yourself updated about what is going on in the world.

The 'mini-map' can be displayed by pressing the "m" key.
The 'finances' window can be displayed by pressing the "f" key.
The 'message center' can be displayed by pressing "[Shift]+b".
Detailed information about cities can also be viewed by clicking on the Town hall with the '{tool1}'.

To continue to the next chapter click on the {pos2} of {town} using the '{tool1}'.

\ No newline at end of file +

These windows help you to keep yourself updated about what is going on in the world.

mini-map
The 'mini-map' can be displayed by pressing the "m" key.

finances
The 'finances' window can be displayed by pressing the "f" key.

message
The 'message center' can be displayed by pressing "[Shift]+b".

{tool1}
Detailed information about cities can also be viewed by clicking on the Town hall with the '{tool1}'.

To continue to the next chapter click on the {pos2} of {town} using the '{tool1}'.

\ No newline at end of file diff --git a/en/chapter_02/06_1-2.txt b/en/chapter_02/06_1-2.txt index 2ce0ba7..5c18e47 100644 --- a/en/chapter_02/06_1-2.txt +++ b/en/chapter_02/06_1-2.txt @@ -1 +1 @@ -

Now that the bridge has been repaired, the city {name} needs a line with [{cov}] buses in circulation to move tourism in from the dock under construction {st1}.

{tx} Starting the Buses.

The Lines:

They are useful to control large numbers of vehicles if they serve the same route. You can also give them a personalized name to help identify them.
Lines can be managed from the Line Management window and can be accessed from the toolbar or pressing the "w" key.

First steps:

[1] First click on the Garage {pos} using the '{tool1}' and buy a bus {bus1}.
[2] You need to configure a Line to manage multiple vehicles at once. Create a line Clicking on the Serves line filter and then on Create new line.

Select all stops:

[1] Select the stop {st1} and configure it as follows:
--> [a] Set Minimum load to {load}%.
--> [b] Set Depart after to {wait}.
[2] Select the stop {st2} and leave everything as this.
[3] Select the stop {st3} and leave everything as this.
[4] Select the stop {st4} and leave everything as this.
[5] Select the stop {st5} and leave everything as this.

Final steps:

[1] Close the Schedule window for the changes to be applied.
[2] Finally click the Start button to get the vehicle out of the depot.

Buses in circulation: {cir}/{cov}

Advances to the next step when all vehicles are in circulation.

\ No newline at end of file +

Now that the bridge has been repaired, the city {name} needs a line with [{cov}] buses in circulation to move tourism in from the dock under construction {stnam}.

{tx} Starting the Buses.

The Lines:

They are useful to control large numbers of vehicles if they serve the same route. You can also give them a personalized name to help identify them.
Lines can be managed from the Line Management window and can be accessed from the toolbar or pressing the "w" key.

First steps:

[1] First click on the Garage {dep} using the '{tool1}' and buy a bus {bus1}.
[2] You need to configure a Line to manage multiple vehicles at once. Create a line Clicking on the Serves line filter and then on Create new line.

Select all stops:


{list}
[*] Select the stop {stnam} and configure it as follows:
--> [a] Set Minimum load to {load}%.
--> [b] Set Depart after to {wait}.

Final steps:

[1] Close the Schedule window for the changes to be applied.
[2] Finally click the Start button to get the vehicle out of the depot.

Buses in circulation: {cir}/{cov}

Advances to the next step when all vehicles are in circulation.

\ No newline at end of file diff --git a/en/chapter_02/06_2-2.txt b/en/chapter_02/06_2-2.txt index 6d86e33..759d768 100644 --- a/en/chapter_02/06_2-2.txt +++ b/en/chapter_02/06_2-2.txt @@ -1 +1 @@ -

Now that the bridge has been repaired, the city {name} needs a line with [3] buses in circulation to move tourism in from the dock under construction {st1}.

{tx} Starting the Buses.

Assignment of lines:

Existing lines can be assigned to new vehicles, as long as they are vehicles of the same category. In this example we are going to assign the line "{line}" to our new vehicles.

[1] First buy a bus {bus1}.
[2] If the line was created correctly, you can click on the Serves line filter (by default it says: [no schedule set]) and then select the line "{line}".
[3] Finally click on the Start button.

Buses in circulation: {cir}/3

Advances to the next step when all vehicles are in circulation.

\ No newline at end of file +

Now that the bridge has been repaired, the city {name} needs a line with [3] buses in circulation to move tourism in from the dock under construction {stnam}.

{tx} Starting the Buses.

Assignment of lines:

Existing lines can be assigned to new vehicles, as long as they are vehicles of the same category. In this example we are going to assign the line "{line}" to our new vehicles.

[1] First buy a bus {bus1}.
[2] If the line was created correctly, you can click on the Serves line filter (by default it says: [no schedule set]) and then select the line "{line}".
[3] Finally click on the Start button.

Buses in circulation: {cir}/3

Advances to the next step when all vehicles are in circulation.

\ No newline at end of file diff --git a/en/chapter_02/07_1-3.txt b/en/chapter_02/07_1-3.txt deleted file mode 100644 index 1a9ee4f..0000000 --- a/en/chapter_02/07_1-3.txt +++ /dev/null @@ -1 +0,0 @@ -

Now that the bridge is repaired, we should create a bus service from {name} to the neighbouring City of {name2}.

{tx} First you must build all stops in {name2}.

Stops list:
{list}

It takes to the next step when the bus starts from the depot.

\ No newline at end of file diff --git a/en/chapter_02/07_1-4.txt b/en/chapter_02/07_1-4.txt new file mode 100644 index 0000000..1f9002f --- /dev/null +++ b/en/chapter_02/07_1-4.txt @@ -0,0 +1 @@ +

Now that the bridge is repaired, we should create a bus service from {name} to the neighbouring City of {name2}.

{img_road_menu} {toolbar_halt}

{tx} First you must build all stops in {name2}.

Stops list:
{list}

It takes to the next step when the bus starts from the depot.

\ No newline at end of file diff --git a/en/chapter_02/07_2-3.txt b/en/chapter_02/07_2-3.txt deleted file mode 100644 index fa35e46..0000000 --- a/en/chapter_02/07_2-3.txt +++ /dev/null @@ -1 +0,0 @@ -

Now that the bridge is repaired, we should create a bus service from {name} to the neighbouring City of {name2}.

{tx} Open the '{tool2}' toolbar in the upper menu bar and select the road tool to connect the two points between {pt1} and {pt2}.

Connect the road here: {cbor}.

Tip: Hold down the [Ctrl] key to build straight sections of roads/rails.

It takes to the next step when the bus starts from the depot.

\ No newline at end of file diff --git a/en/chapter_02/07_2-4.txt b/en/chapter_02/07_2-4.txt new file mode 100644 index 0000000..8826406 --- /dev/null +++ b/en/chapter_02/07_2-4.txt @@ -0,0 +1 @@ +

Now that the bridge is repaired, we should create a bus service from {name} to the neighbouring City of {name2}.

{tx} Open the '{toolbar_road}' toolbar in the upper menu bar and select the road tool to connect the two points between {pt1} and {pt2}.

Connect the road here: {cbor}.

Tip: Hold down the [Ctrl] key to build straight sections of roads/rails.

It takes to the next step when the bus starts from the depot.

\ No newline at end of file diff --git a/en/chapter_02/07_3-3.txt b/en/chapter_02/07_3-4.txt similarity index 100% rename from en/chapter_02/07_3-3.txt rename to en/chapter_02/07_3-4.txt diff --git a/en/chapter_02/07_4-4.txt b/en/chapter_02/07_4-4.txt new file mode 100644 index 0000000..aeff1e0 --- /dev/null +++ b/en/chapter_02/07_4-4.txt @@ -0,0 +1 @@ +

Now that the bridge is repaired, we should create a bus service from {name} to the neighbouring City of {name2}.

{tx} Now you must follow the Convoy.

Following Convoys

This option allows you to follow vehicles as they travel their route, so that they remain in view no matter where they go, even if they go underground. It is activated from the Convoy Window and is the fourth icon in that Window's title bar (an eye).

Click on the vehicle already in circulation so that the Convoy Window is displayed. Look for the fourth icon in the title bar of the Convoy Window (eye icon) and press it to follow the convoy.

The vehicle is located at: {covpos}

The tutorial will move to the next step when you are following the convoy.

\ No newline at end of file diff --git a/en/chapter_02/goal_step_01.txt b/en/chapter_02/goal_step_01.txt index 533a90c..eb83328 100644 --- a/en/chapter_02/goal_step_01.txt +++ b/en/chapter_02/goal_step_01.txt @@ -1 +1 @@ -

We are going to set up a Bus Service in the town of {name} .

First, you need to build a dead-end road so as to build the depot on it.

The Roads:

This tool can be used by dragging the mouse or clicking from one point to another, you can also press the [Ctrl] key when dragging or clicking to build straight paths. There are several types of roads, these can vary their maximum speed from 30km/h to 200km/h. The maintenance of the roads is charged and costs vary depending on the type of road. It is also possible to electrify the roads to allow the passage of electric vehicles.

Open the '{tool2}' toolbar in the upper menu bar and select the 50 kmph road tool. Then, you can build a road either by clicking once the beginning and once on the end point or by dragging the mouse between these points.

To take to the next step, build a stretch of road between {t1} and {t2} or {t1} and {t3}.

\ No newline at end of file +

We are going to set up a Bus Service in the town of {name} .

First, you need to build a dead-end road so as to build the depot on it.

The Roads:

This tool can be used by dragging the mouse or clicking from one point to another, you can also press the [Ctrl] key when dragging or clicking to build straight paths. There are several types of roads, these can vary their maximum speed from 30km/h to 200km/h. The maintenance of the roads is charged and costs vary depending on the type of road. It is also possible to electrify the roads to allow the passage of electric vehicles.

{img_road_menu} {toolbar_road}

Open the '{toolbar_road}' toolbar in the upper menu bar and select the 50 kmph road tool. Then, you can build a road either by clicking once the beginning and once on the end point or by dragging the mouse between these points.

To take to the next step, connect the field {dep} to an adjacent street.

\ No newline at end of file diff --git a/en/chapter_02/goal_step_02.txt b/en/chapter_02/goal_step_02.txt index 6cbc513..446c209 100644 --- a/en/chapter_02/goal_step_02.txt +++ b/en/chapter_02/goal_step_02.txt @@ -1 +1 @@ -

We are going to set up a Bus Service in the town of {name} .

The first step in setting up the service is building a Garage at {pos}. You will find the garage tool in the '{tool2}' toolbar too.

Garage/Depot:

You can only build a depot on dead ends. From the depots it is possible to buy, sell, route and start the vehicles. There is also an option that allows electric vehicles to be used, but this is only shown if the road under the depot is electrified.
The garage allows you to purchase vehicles to service the routes that you will create.

To take to the next step, build the Garage in {pos}.

\ No newline at end of file +

We are going to set up a Bus Service in the town of {name} .

{img_road_menu} {toolbar_road}

The first step in setting up the service is building a Garage at {dep}. You will find the garage tool in the '{toolbar_road}' toolbar too.

Garage/Depot:

You can only build a depot on dead ends. From the depots it is possible to buy, sell, route and start the vehicles. There is also an option that allows electric vehicles to be used, but this is only shown if the road under the depot is electrified.
The garage allows you to purchase vehicles to service the routes that you will create.

To take to the next step, build the Garage in {dep}.

\ No newline at end of file diff --git a/en/chapter_02/goal_step_03.txt b/en/chapter_02/goal_step_03.txt index a5dc813..92d1145 100644 --- a/en/chapter_02/goal_step_03.txt +++ b/en/chapter_02/goal_step_03.txt @@ -1 +1 @@ -

The next step in setting up your Bus Service for {name}.

It is necessary to build bus stops at each of the points marked in the city:
{list}

Stops are in the '{tool2}' toolbar too.

Bus Stops:

In order for the bus to be able to load passengers it is necessary that the stops are close to some building, tourist attraction or factory. The stops have a storage capacity of 32, 64 or more. It is also possible to combine them to increase their load capacity along with their coverage. You can also extend the load type using extension buildings or stations that accept different types of load.

Note: The stops have a coverage area of 5x5 around them, therefore it is advised to place the stops at a distance of 4 tiles. Unlike buildings, streets do not need to be covered as they do not generate passengers.

Tip: Covered area can be displayed by pressing the "v" key.

To take to the next step, build all the Stops.

\ No newline at end of file +

The next step in setting up your Bus Service for {name}.

{img_road_menu} {toolbar_halt}

It is necessary to build bus stops at each of the points marked in the city. Stops are in the '{toolbar_halt}' toolbar too.

{list}

Bus Stops:

In order for the bus to be able to load passengers it is necessary that the stops are close to some building, tourist attraction or factory. The stops have a storage capacity of 32, 64 or more. It is also possible to combine them to increase their load capacity along with their coverage. You can also extend the load type using extension buildings or stations that accept different types of load.

Note: The stops have a coverage area of 5x5 around them, therefore it is advised to place the stops at a distance of 4 tiles. Unlike buildings, streets do not need to be covered as they do not generate passengers.

Tip: Covered area can be displayed by pressing the "v" key.

To take to the next step, build all the Stops.

\ No newline at end of file diff --git a/en/chapter_02/goal_step_04.txt b/en/chapter_02/goal_step_04.txt index be12459..078c9b9 100644 --- a/en/chapter_02/goal_step_04.txt +++ b/en/chapter_02/goal_step_04.txt @@ -1 +1 @@ -

Now you need to purchase a {bus1} Bus to run the service.

[1] First click on the Garage {pos} using the '{tool1}' and buy a bus {bus1}.
[2] To configure the route of the vehicle, you must first click on the Schedule button.
[3] With the Schedule window open, you should now select all stops in the city to add them to the list:
{list}
[4] After adding the {nr} stops, select the stop {stnam} and configure it as follows:
--> [a] Set Minimum load to {load}%.
--> [b] Set Depart after to {wait}.
[5] Now you may eventually close the schedule window and click the Start button so that the vehicle leaves the depot.

Tip: Press the ["] key to hide the urban buildings.

It takes to the next step when all bus arrives at the first stop on the list.

\ No newline at end of file +

Now you need to purchase a {bus1} Bus to run the service.

[1] First click on the Garage {dep} using the '{tool1}' and buy a bus {bus1}.
[2] To configure the route of the vehicle, you must first click on the Schedule button.
[3] With the Schedule window open, you should now select all stops in the city to add them to the list:
{list}
[4] After adding the {nr} stops, select the stop {stnam} and configure it as follows:
--> [a] Set Minimum load to {load}%.
--> [b] Set Depart after to {wait}.
[5] Now you may eventually close the schedule window and click the Start button so that the vehicle leaves the depot.

Tip: Press the ["] key to hide the urban buildings.

Following Convoys

This option allows you to follow vehicles as they travel their route, so that they remain in view no matter where they go, even if they go underground. It is activated from the Convoy Window and is the fourth icon in that Window's title bar (an eye).

Click on the vehicle already in circulation so that the Convoy Window is displayed. Look for the fourth icon in the title bar of the Convoy Window (eye icon) and press it to follow the convoy.

The tutorial will move to the next step when you are following the convoy.

\ No newline at end of file diff --git a/en/chapter_02/goal_step_05.txt b/en/chapter_02/goal_step_05.txt index 2c4be55..b947ac5 100644 --- a/en/chapter_02/goal_step_05.txt +++ b/en/chapter_02/goal_step_05.txt @@ -1 +1 @@ -

The bridge to an outlying suburb was recently washed out,
and the City of {name} would like you to reconnect the suburb by building a brige between {bpos1} and {bpos2}.

Bridge are in the '{tool2}' toolbar too.

There are two ways this can be done, you must first select the 50 kmph bridge tool in the Road Tools toolbar, then...
[1] You can build the bridge by clicking on one of the facing slopes.
[2] You can place the bridge by dragging mouse from a slope on either side to the slope on the opposite side.

To take to the next step, build a bridge in {bpos1}.

{bridge_info} \ No newline at end of file +

The bridge to an outlying suburb was recently washed out,
and the City of {name} would like you to reconnect the suburb by building a brige between {bpos1} and {bpos2}.

{img_road_menu} {toolbar_road}

Bridge are in the '{toolbar_road}' toolbar too.

There are two ways this can be done, you must first select the 50 kmph bridge tool in the Road Tools toolbar, then...
[1] You can build the bridge by clicking on one of the facing slopes.
[2] You can place the bridge by dragging mouse from a slope on either side to the slope on the opposite side.

To take to the next step, build a bridge in {bpos1}.

{bridge_info} \ No newline at end of file diff --git a/en/chapter_02/goal_step_08.txt b/en/chapter_02/goal_step_08.txt index a5e9ce6..fe8b4d7 100644 --- a/en/chapter_02/goal_step_08.txt +++ b/en/chapter_02/goal_step_08.txt @@ -1 +1 @@ -

The city {name} needs to connect the bus line with the train line under construction.

In the toolbar select '{tool3}' and choose the Make way or stop public tool.

Make stop public

By making the stop public, the player frees himself from maintaining it and also allows sharing the transport network with other players. But be careful, since this can't be reversed unless you change to the Public Service player.

Warning: Using this tool is very expensive, {prce} for each tile.

Select the Make way or stop public tool and click on the stop {st1}. You will notice that its color will change.

It advances to the next chapter when the stop are made public.

\ No newline at end of file +

The city {name} needs to connect the bus line with the train line under construction.


{public_stop}

By making the stop public, the player frees himself from maintaining it and also allows sharing the transport network with other players. But be careful, since this can't be reversed unless you change to the Public Service player.

Select the Make way or stop public tool and click on the stop {st1}. You will notice that its color will change.

It advances to the next chapter when the stop are made public.

\ No newline at end of file diff --git a/en/chapter_03/goal_step_05.txt b/en/chapter_03/goal_step_05.txt index dc15067..bd18a4c 100644 --- a/en/chapter_03/goal_step_05.txt +++ b/en/chapter_03/goal_step_05.txt @@ -1 +1 @@ -

Now you may assemble a convoy that can transport {good1} to {f2}.
[1] After opening the train depot's window, select the locomotive {loc1} in the Locomotives tab.
[2] Now select {wag} Wagons for {good1} in the Cars tab (The train may not be longer than {tile} tiles).
[3] In the field next to "Serves line", select create new line and select the station near {f1}.
--> Set Minimum load at {load}%."
[4] Select the station near {f2} and select Start.

Tip: You can set the Filter in the depot's window to only show vehicles that can transport {good1}.

It takes to the next step when the {f2} receive {t_reach}t of {good1}.

Tip: Press the "W" (capital letter) key to activate fast forward.

Received amount: {reached} {g1_metric} {good1}

\ No newline at end of file +

Now you may assemble a convoy that can transport {good1} to {f2}.
[1] After opening the train depot's window, select the locomotive {loc1} in the Locomotives tab.
[2] Now select {wag} Wagons for {good1} in the Cars tab (The train may not be longer than {tile} tiles).
[3] In the field next to "Serves line", select create new line and select the station {stnam1}.
--> Set Minimum load at {load}%."
[4] Select the station {stnam2} and select Start.

Tip: You can set the Filter in the depot's window to only show vehicles that can transport {good1}.

It takes to the next step when the {f2} receive {t_reach} of {good1}.

Tip: Press the "W" (capital letter) key to activate fast forward.

Received amount: {reached} {g1_metric} {good1}

\ No newline at end of file diff --git a/en/chapter_03/goal_step_07.txt b/en/chapter_03/goal_step_07.txt index ca575b2..b22be70 100644 --- a/en/chapter_03/goal_step_07.txt +++ b/en/chapter_03/goal_step_07.txt @@ -1 +1 @@ -

You need to transport {good2} from {f2} to {f3} in {cy1}.

[1] Build a track section between {w1} and {w2}.
[2] Build a Train Depot at: {way1}.

Now you may buy a locomotive. Click on the Locomotives tab and select {loc2}, then add {wag} wagons that can transport {good2} in the Cars tab (The train may not be longer than {tile} tiles).

Then, click on Schedule. First, select the station at {f2}.
--> Set Minimum load at {load}%."
Then select the station in {f3} and click on Start.

Tip: Use the filter to show only the {good2} wagons.

It takes to the next step when the {f3} receive {t_reach}{g1_metric} of {good2}.

Tip: Press the "W" (capital letter) key to activate fast forward.

Received amount: {reached} {g1_metric} {good2}

\ No newline at end of file +

You need to transport {good2} from {f2} to {f3} in {cy1}.

[1] Build a track section between {w1} and {w2}.
[2] Build a Train Depot at: {way1}.

Now you may buy a locomotive. Click on the Locomotives tab and select {loc2}, then add {wag} wagons that can transport {good2} in the Cars tab (The train may not be longer than {tile} tiles).

Then, click on Schedule. First, select the station {stnam1}.
--> Set Minimum load at {load}%."
Then select the station {stnam2} and click on Start.

Tip: Use the filter to show only the {good2} wagons.

It takes to the next step when the {f3} receive {t_reach}{g1_metric} of {good2}.

Tip: Press the "W" (capital letter) key to activate fast forward.

Received amount: {reached} {g1_metric} {good2}

\ No newline at end of file diff --git a/en/chapter_04/05_2-3.txt b/en/chapter_04/05_2-3.txt index 929ca9b..7eb1190 100644 --- a/en/chapter_04/05_2-3.txt +++ b/en/chapter_04/05_2-3.txt @@ -1 +1 @@ -

It is required to transport {good2} from {f3} to the {f4} for the final consumer.

{tx} Build a Canal Quay of goods in {dock}.

\ No newline at end of file +

It is required to transport {good2} from {f3} to the {f4} for the final consumer.

{tx} Build a {cdock} of goods in {dock}.

\ No newline at end of file diff --git a/en/chapter_05/04_1-3.txt b/en/chapter_05/04_1-3.txt index 4fe9913..8fcaf97 100644 --- a/en/chapter_05/04_1-3.txt +++ b/en/chapter_05/04_1-3.txt @@ -1 +1 @@ -

{tx} In the {toolbar} menu, select one of the "Extension Buildings" for mail and place one in each of the following positions:

{st}

Advances to the next step when the mail truck leaves the depot.

\ No newline at end of file +

{img_road_menu} {toolbar_halt}

{img_post_menu} {toolbar_extension}

{tx} There are two ways to unlock stations for mail. Firstly, a mail extension building (Menu {toolbar_extension}) can be built on an empty space next to the stop.
Secondly, another stop (Menu {toolbar_halt}) that accepts mail can be built on a straight path.

{st}

To proceed to the next step, all Hold Post must be accepted.

\ No newline at end of file diff --git a/en/chapter_06/goal_step_02.txt b/en/chapter_06/goal_step_02.txt index 3839bfa..0e55f37 100644 --- a/en/chapter_06/goal_step_02.txt +++ b/en/chapter_06/goal_step_02.txt @@ -1 +1 @@ -

The public service needs your help to connect the city {cit1} with the city {cit2} by air.

Click Hangar {dep1} and purchase an aircraft named '{plane}' and configure the route as follows:

[1] Select the Aero stop {sch1} and configure it this way:
--> [a] Set Minimum load to {load}%
--> [b] Set Depart after to {wait}.
[2] Select the Aero stop {sch2} and press Start.

Advance to the next step, when the Plane leaves the hangar.

\ No newline at end of file +

The public service needs your help to connect the city {cit1} with the city {cit2} by air.

Click Hangar {dep1} and purchase an aircraft named '{plane}' and configure the route as follows:

[1] Select all stops in order:
{list}
[2] After adding the stops, select the stop {stnam} from the list and configure as follows:
--> [a] Set Minimum load to {load}%.
--> [b] Set Depart after to {wait}.
[3] Use the [Copy Convoy] button to get the {cnr} buses needed.
[4] Now click the [Start] button to make all vehicles leave the depot/garage.

Advance to the next step, when the Plane leaves the hangar.

\ No newline at end of file diff --git a/en/chapter_06/goal_step_04.txt b/en/chapter_06/goal_step_04.txt index dfa0993..b7c51b4 100644 --- a/en/chapter_06/goal_step_04.txt +++ b/en/chapter_06/goal_step_04.txt @@ -1 +1 @@ -

Connected the city {cit2} with the Airport {sch2} using {cnr} buses.

The Road Depot

You must go to the city location {cit2} and locate the position {dep3}, then build the depot/garage there.

The Buses

Click on the Road depot {dep3} and select a bus {bus2} and press [Schedule].

[1] Select all stops in order:
{stx}

[2] After adding the stops, select the stop {stnam} from the list and configure as follows:
--> [a] Set Minimum load to {load}%.
--> [b] Set Depart after to {wait}.
[3] Use the [Copy Convoy] button to get the {cnr} buses needed.
[4] Now click the [Start] button to make all vehicles leave the depot/garage.

Advance to the next chapter when all buses leave the depot/garage.

\ No newline at end of file +

Connected the city {cit2} with the Airport {sch2} using {cnr} buses.

The Road Depot

You must go to the city location {cit2} and locate the position {dep3}, then build the depot/garage there.

The Buses

Click on the Road depot {dep3} and select a bus {bus2} and press [Schedule].

[1] Select all stops in order:
{stx}

[2] After adding the stops, select the stop {stnam} from the list and configure as follows:
--> [a] Set Minimum load to {load}%.
--> [b] Set Depart after to {wait}.
[3] Use the [Copy Convoy] button to get the {cnr} buses needed.
[4] Now click the [Start] button to make all vehicles leave the depot/garage.

Advance to the next chapter when all buses leave the depot/garage.

\ No newline at end of file diff --git a/en/chapter_07/goal.txt b/en/chapter_07/goal.txt index feeee72..0a5ae5a 100644 --- a/en/chapter_07/goal.txt +++ b/en/chapter_07/goal.txt @@ -1 +1 @@ -

{txtst_01}Step A - The buses of the city I
{step_01}

{txtst_02}Step B - The buses of the city II
{step_02}

{txtst_03}Step C - The buses of the city III
{step_03}

{txtst_04}Step D - The buses of the city IV
{step_04}

{txtst_05}Step E - End Scenario
{step_05}

\ No newline at end of file +

{txtst_01}Step A - The buses of the city I
{step_01}

{txtst_02}Step B - The buses of the city II
{step_02}

{txtst_03}Step C - The buses of the city III
{step_03}

{txtst_04}Step D - The buses of the city IV
{step_04}

\ No newline at end of file diff --git a/en/chapter_07/goal_step_01.txt b/en/chapter_07/goal_step_01.txt deleted file mode 100644 index db85842..0000000 --- a/en/chapter_07/goal_step_01.txt +++ /dev/null @@ -1 +0,0 @@ -

The city {city} needs to design a bus network that allows passengers to move to the train station: {name}.

[1] Place a bus stop in the position {stop}.
[2] Make the stop public in {stop}.
[3] Now you are free to build a bus network in the city {city}.
[4] Make sure all buses are connected to the station: {name}.

Progress is made to the next step, when more than {load} passengers are transported to {name} in a month.

Translated this month: {get_load}/{load}

\ No newline at end of file diff --git a/en/chapter_07/goal_step_01x04.txt b/en/chapter_07/goal_step_01x04.txt index 4dde1b5..f796754 100644 --- a/en/chapter_07/goal_step_01x04.txt +++ b/en/chapter_07/goal_step_01x04.txt @@ -1 +1 @@ -

The city {city} must get a bus network that allows passengers to get to the {name} station.

Build as many bus stops in the city as you need to cover the city. Make sure that there is a bus stop on field {stop} that is connected to the {name} station so that passengers are counted.

To go to the next step, transport more than {load} passengers in a month.

Transported this month: {get_load}/{load}

\ No newline at end of file +

The city {city} must get a bus network that allows passengers to get to the {name} station.

Build as many bus stops in the city as you need to cover the city. Make sure there is a bus stop connected to {name} station so that passengers can be counted.

To go to the next step, transport more than {load} passengers in a month.

HINT: Using the fast forward too can shorten the waiting time to complete this step.

Transported this month: {get_load}/{load}

\ No newline at end of file diff --git a/en/chapter_07/goal_step_02.txt b/en/chapter_07/goal_step_02.txt deleted file mode 100644 index fb4a597..0000000 --- a/en/chapter_07/goal_step_02.txt +++ /dev/null @@ -1 +0,0 @@ -

The city {city} needs to design a bus network that allows passengers to move to the train station: {name}.

[1] Place a bus stop in the position {stop}.
[2] Make the stop public in {stop}.
[3] Now you are free to build a bus network in the city {city}.
[4] Make sure all buses are connected to the station: {name}.

Progress is made to the next step, when more than {load} passengers are transported to {name} in a month.

Translated this month: {get_load}/{load}

\ No newline at end of file diff --git a/en/chapter_07/goal_step_03.txt b/en/chapter_07/goal_step_03.txt deleted file mode 100644 index db85842..0000000 --- a/en/chapter_07/goal_step_03.txt +++ /dev/null @@ -1 +0,0 @@ -

The city {city} needs to design a bus network that allows passengers to move to the train station: {name}.

[1] Place a bus stop in the position {stop}.
[2] Make the stop public in {stop}.
[3] Now you are free to build a bus network in the city {city}.
[4] Make sure all buses are connected to the station: {name}.

Progress is made to the next step, when more than {load} passengers are transported to {name} in a month.

Translated this month: {get_load}/{load}

\ No newline at end of file diff --git a/en/chapter_07/goal_step_04.txt b/en/chapter_07/goal_step_04.txt deleted file mode 100644 index db85842..0000000 --- a/en/chapter_07/goal_step_04.txt +++ /dev/null @@ -1 +0,0 @@ -

The city {city} needs to design a bus network that allows passengers to move to the train station: {name}.

[1] Place a bus stop in the position {stop}.
[2] Make the stop public in {stop}.
[3] Now you are free to build a bus network in the city {city}.
[4] Make sure all buses are connected to the station: {name}.

Progress is made to the next step, when more than {load} passengers are transported to {name} in a month.

Translated this month: {get_load}/{load}

\ No newline at end of file diff --git a/en/finished.txt b/en/finished.txt index 0e6a647..94a93d6 100644 --- a/en/finished.txt +++ b/en/finished.txt @@ -1 +1 @@ -

This is all for the moment, thank you very much for playing the mythical Simutrans.

You can follow here: https://www.facebook.com/Simutrans
Any questions we are here to help in the forum: https://forum.simutrans.com/

Credits to the entire Simutrans community, and especially to:
Dwachs
Prissi
ny911
HaydenRead
Tjoeker
gauthier
Andarix
Roboron

Regards!! @Yona-TYT.

\ No newline at end of file +{title}

This is all for the moment, thank you very much for playing the mythical Simutrans.

You can follow here: https://www.facebook.com/Simutrans
Any questions we are here to help in the forum: https://forum.simutrans.com/

Credits to the entire Simutrans community, and especially to:
Dwachs
Prissi
ny911
HaydenRead
Tjoeker
gauthier
Andarix
Roboron

Regards!! @Yona-TYT.

\ No newline at end of file diff --git a/en/info.txt b/en/info.txt index d17546e..9b9d2c2 100644 --- a/en/info.txt +++ b/en/info.txt @@ -1 +1 @@ -

Simutrans Tutorial

In this tutorial, the first steps in setting up your transportation empire in Simutrans are explained. The focus is on the necessary actions around transportation chains in Simutrans.

The tutorial consists of several Chapters each having a number of Steps included in order to complete the target chapter.

Economic concerns are only briefly covered in the Tutorial

{list_of_chapters}

Further help can be found by pressing the "F1" key in regards to the various tools, functions, and logic in Simutrans.

{first_link}

Note: In some cases it can take up to 15 seconds from completing the required actions, before the Tutorial will update to the next step.


{pakset_info} \ No newline at end of file +

Simutrans Tutorial

In this tutorial, the first steps in setting up your transportation empire in Simutrans are explained. The focus is on the necessary actions around transportation chains in Simutrans.

Open window {dialog}

If this window is closed, it can be reopened using this button in the main menu.

The tutorial consists of several Chapters each having a number of Steps included in order to complete the target chapter.

Economic concerns are only briefly covered in the Tutorial

{list_of_chapters}

Further help can be found by pressing the "F1" key in regards to the various tools, functions, and logic in Simutrans.

{first_link}

Note: In some cases it can take up to 15 seconds from completing the required actions, before the Tutorial will update to the next step.


{pakset_info} \ No newline at end of file diff --git a/en/info/info_pak64perman.txt b/en/info/info_pak64perman.txt index 90f034e..57a9d3e 100644 --- a/en/info/info_pak64perman.txt +++ b/en/info/info_pak64perman.txt @@ -1 +1 @@ -

Description pak64.german

\ No newline at end of file +

Description pak64.german

The pak64.german is a graphics set that only uses one height.

In the pak64.german there is no bonus for speed. But this is still important because stations must not be overcrowded. If stations are overcrowded, the transport volume collapses.
If minimum load is used, make sure that stations are not overcrowded.

Magnet railway and the S-Bahn/U-Bahn should only be used when passenger volumes are very high.

\ No newline at end of file diff --git a/en/rule.txt b/en/rule.txt index 23f1ba5..a2d4257 100644 --- a/en/rule.txt +++ b/en/rule.txt @@ -1 +1 @@ -

Not every tool is displayed. Only actions necessary for the current step are available.

· Describe rules .
· Give hints .
· Known issues instructions .

\ No newline at end of file +

Not every tool is displayed. Only actions necessary for the current step are available.

· Describe rules .
· Give hints .
· Known issues instructions .

\ No newline at end of file diff --git a/es.tab b/es.tab index 2c59d6f..25eaada 100644 --- a/es.tab +++ b/es.tab @@ -1,13 +1,13 @@ -################################################################################# +§################################################################################# # for translate see # # https://simutrans-germany.com/translator_page/scenarios/scenario_5/ # ################################################################################# Action not allowed -Acción no permitida +Acción no permitida Advance is not allowed with the game paused. -Avanzar no está permitido con el juego en pausa. +Avanzar no está permitido con el juego en pausa. Advance not allowed -Avanzar no está disponible +Avanzar no está disponible Advanced Topics Conceptos Avanzados All wagons must be for [%s]. @@ -15,39 +15,41 @@ Todos los vagones deben ser para [%s]. All wagons must be for: Todos los vagones deben ser para: Are you lost ?, see the instructions shown below. -¿Estás perdido?, mira las instrucciones que se muestran a continuación. +¿Estás perdido?, mira las instrucciones que se muestran a continuación. Build a Bridge here!. -Construye un Puente aquí. +Construye un Puente aquí. Build a Depot here!. -Construye el Depósito aquí. +Construye el Depósito aquí. Build a Dock here!. -Construye un Muelle aquí. +Construye un Muelle aquí. Build a tunnel here -Construye un túnel aquí +Construye un túnel aquí Build Canal here!. -¡Construye el Canal aquí! +¡Construye el Canal aquí! Build here -Construye aquí +Construye aquí Build Rails form here -Construye las Vías de Tren por aquí. +Construye las Vías de Tren por aquí. Build Shipyard here!. -Construye el Astillero aquí. +Construye el Astillero aquí. Build station No.%d here!. -Construye estación Nr.%d aquí. +Construye estación Nr.%d aquí. Build Stop here: -Construye Parada de Autobús aquí: +Construye Parada de Autobús aquí: Build the track from here -Construye la vía desde aquí +Construye la vía desde aquí Build the transformer here! -¡Construye el transformador aquí! +¡Construye el transformador aquí! Build Train Depot here!. -Construye Depósito de Trenes aquí. +Construye Depósito de Trenes aquí. Bus networks Redes de Autobuses Chapter -Capítulo +Capítulo Chapter {number} - {cname} complete, next Chapter {nextcname} start here: ({coord}). -Felicitaciones, has completado el Capítulo {number} - {cname}, el siguiente Capítulo '{nextcname}' empieza aqui: ({coord}). +Felicitaciones, has completado el Capítulo {number} - {cname}, el siguiente Capítulo '{nextcname}' empieza aqui: ({coord}). +Chapter {number} - {cname} complete. +Felicitaciones, has completado el Capítulo {number} - {cname}. Checking Compatibility Comprobando Compatibilidad Choose a different stop. @@ -55,65 +57,63 @@ Elige una parada diferente. Click on the stop Pulse sobre la parada Connect the road here -Conecte la carretera aquí -Connect the Track here -Conecte la vía aquí +Conecte la carretera aquí +Connect the Track here (%s). +Conecte la vía aquí (%s). Creating Schedules is currently not allowed -La creación de Itineararios no está permitida actualmente +La creación de Itineararios no está permitida actualmente Dock No.%d must accept [%s] El muelle Nr. %d debe aceptar [%s] empty chapter -capítulo vacío +capítulo vacío Extensions are not allowed. No se permiten extensiones. First buy an Airplane [%s]. -Primero compra un Avión [%s]. +Primero compra un Avión [%s]. First create a line for the vehicle. -Primero debes crear una línea para el vehículo. +Primero debes crear una línea para el vehículo. First you must build a tunnel section. -Primero debes construir un tramo de túnel. +Primero debes construir un tramo de túnel. First you must lower the layer level. Primero debes baja el nivel de la capa. First you must Upper the layer level. Primero debes subir el nivel de la capa. First you need to activate the underground view / sliced map view. -Primero necesitas activar la vista subterránea / vista subterránea por capas. +Primero necesitas activar la vista subterránea / vista subterránea por capas. Flat slope here!. -Pendiente plana aquí. +Pendiente plana aquí. Getting Started Empezando Go to next step Avanzar al siguiente paso Here -Aquí +Aquí Incorrect vehicle configuration, check vehicle status. -Configuración incorrecta del vehículo, comprueba el estado del vehículo. -Indicates the limits for using construction tools -Indica los limites para usar herramientas de construcción +Configuración incorrecta del vehículo, comprueba el estado del vehículo. +Indicates the limits for using construction tools (%s). +Indica los limites para usar herramientas de construcción (%s). Industrial Efficiency Eficiencia Industrial It is not a slope. No es una pendiente. It is not allowed to start vehicles. -No está permitido arrancar vehículos. +No está permitido arrancar vehículos. It is not flat terrain. No es terreno llano. -It is not possible to build stops at intersections -No es posible construir paradas en intersecciones It must be a block signal! -Debe ser una señal de bloqueo +Debe ser una señal de bloqueo It must be a slope. Debe ser una pendiente. Layer level in sliced map view should be: %d -El nivel de capa en la vista subterránea por capas debe ser: %d +El nivel de capa en la vista subterránea por capas debe ser: %d Let's go on! -¡Sigamos adelante! +¡Sigamos adelante! Let's start! -¡Empecemos! +¡Empecemos! Mail Extension Here!. -¡Extensión de correo aquí!. +¡Extensión de correo aquí!. Modify the terrain here -Modifique el terreno aquí +Modifique el terreno aquí Must choose a locomotive [%s]. Debes seleccionar una locomotora [%s]. Must choose a locomotive: @@ -125,129 +125,131 @@ No se permiten barcazas. No intersections allowed No se permiten intersecciones Number of convoys in the depot: -Número de convoyes en el depósito: +Número de convoyes en el depósito: OK Correcto Only %d stops are necessary. -Sólo son necesarias %d paradas. +Sólo son necesarias %d paradas. +Only air schedules allowed +Solo se permiten horarios de aeronaves Only delete signals. -Solo puedes eliminar señales. +Solo puedes eliminar señales. Only one train is allowed, press the [Sell] button. -Solo se permite un tren. presiona el botón [Vender]. +Solo se permite un tren. presiona el botón [Vender]. Only railway schedules allowed -Sólo se permiten itinerarios de tren +Sólo se permiten itinerarios de tren Only road schedules allowed Solo se permiten rutas por carretera +Only water schedules allowed +Solo se permiten horarios de envío Place a block signal here -Coloca señal de bloqueo aquí +Coloca señal de bloqueo aquí Place a Tunnel here!. -¡Coloca el Túnel aquí! +¡Coloca el Túnel aquí! Place Singnal here!. -Coloca Señal aquí. +Coloca Señal aquí. Place Stop here!. -Coloca Parada aquí. +Coloca Parada aquí. Place the Road here!. -Coloca la Carretera aquí. -Place the shipyard here -Coloca el astillero aquí -Place the stops at the marked points -Coloca las paradas en los puntos marcados +Coloca la Carretera aquí. +Place the shipyard here (%s). +Coloca el astillero aquí (%s). +Place the stops at the marked points. +Coloca las paradas en los puntos marcados. Press [Ctrl] to build a tunnel entrance here -Presiona [Ctrl] para construir la entrada del Túnel aquí: +Presiona [Ctrl] para construir la entrada del Túnel aquí: Press the [Copy Backward] button, then set the Minimum Load and Month Wait Time at the first stop!. -¡Presione el botón [Viaje de Vuelta], luego configure Carga mínima y Salir después de en la primera parada en la lista! +¡Presione el botón [Viaje de Vuelta], luego configure Carga mínima y Salir después de en la primera parada en la lista! Raise ground here -Eleva el terreno aquí +Eleva el terreno aquí Riding the Rails Transporte por Rieles Ruling the Roads Transporte por carretera Savegame has a different {more_info} script version! Maybe, it will work. -¡La partida guardada tiene una versión {more_info} diferente del script! Tal vez no funcione... +¡La partida guardada tiene una versión {more_info} diferente del script! Tal vez no funcione... Select station No.%d -Selecciona la Estación Nr. %d +Selecciona la Estación Nr. %d Select station No.%d [%s] -Selecciona la Estación Nr. %d [%s] +Selecciona la Estación Nr. %d [%s] Select the Bus [%s]. -Selecciona el Autobús [%s]. +Selecciona el Autobús [%s]. Select the dock No.%d Seleccione el muelle Nr. %d Select the other station -Seleccione la otra estación +Seleccione la otra estación Select the other station first -Seleccione la otra estación primero +Seleccione la otra estación primero Setting Sail Izando Velas Signal Nr.%d -Señal Número: %d +Señal Número: %d Slope Height. Altura de la Pendiente. Station No.%d here -Estación Nr.%d aquí +Estación Nr.%d aquí Station No.%d must accept goods -La estación Nr.%d debe ser para mercancía +La estación Nr.%d debe ser para mercancía Stop Parada Stops should be built in [%s] Las paradas deben construirse en [%s] Straight slope here -Pendiente recta aquí. +Pendiente recta aquí. Taking to the Air Ascendiendo a los Cielos Text label Marcador de texto -The %s stop must be for %s -La parada (%s) debe ser para %s, usa la herramienta [Eliminar] para quitarla The bus must be [Passengers]. -El Autobús debe ser para [Pasajeros]. +El Autobús debe ser para [Pasajeros]. The cabin: La cabina: The convoy is not correct. El convoy no es correcto. The Depot is correct. -El Depósito es correcto. +El Depósito es correcto. The extension building for station [%s] must be a [%s], use the 'Remove' tool -El edificio de extensión para la estacion [%s] debe ser [%s], usa la heramienta de 'Eliminar' +El edificio de extensión para la estacion [%s] debe ser [%s], usa la heramienta de 'Eliminar' The extension building for station [%s] must be for [%s], use the 'Remove' tool -El edificio de extensión para la estacion [%s] debe ser para [%s], usa la heramienta de 'Eliminar' +El edificio de extensión para la estacion [%s] debe ser para [%s], usa la heramienta de 'Eliminar' The first train El primer tren The forgotten Air transport -El olvidado transporte Aéreo +El olvidado transporte Aéreo The Hangar is correct. El Hangar es correcto. The land is already prepared. -El terreno está preparado. +El terreno está preparado. The line is not correct. La linea no es correcta. The load of waystop {nr} '{name}' isn't {load}% {pos} -La carga mínima en la parada [{nr}] {name} debe ser de {load}% {pos} +La carga mínima en la parada [{nr}] {name} debe ser de {load}% {pos} The number of aircraft in the hangar must be [%d]. -El número de aviones en el hangar debe ser de [%d]. +El número de aviones en el hangar debe ser de [%d]. The number of bus must be [%d]. -El número de Autobuses debe ser de [%d]. +El número de Autobuses debe ser de [%d]. The number of convoys must be [%d], press the [Sell] button. El numero de convoys debe ser de [%d], pulsa el boton [Vender]. The number of convoys must be [%d]. -The el número de convoys debe ser: [%d]. +The el número de convoys debe ser: [%d]. The number of planes in the hangar must be [%d], use the [sell] button. -El número de aviones en el hangar debe ser de [%d], usa el boton [vender]. +El número de aviones en el hangar debe ser de [%d], usa el boton [vender]. The number of ships must be [%d]. -El número de barcos debe ser [%d]. +El número de barcos debe ser [%d]. The number of trucks must be [%d]. -El número de camiones debe ser de [%d]. +El número de camiones debe ser de [%d]. The number of wagons must be [%d]. -El número de vagones debe ser: [%d]. +El número de vagones debe ser: [%d]. The number of wagons must be: -El número de vagones debe ser: +El número de vagones debe ser: The Plane must be for [%s]. -El Avión debe ser para [%s]. -The route is complete, now you may dispatch the vehicle from the depot -La ruta está completa, ahora debe arrancar el vehículo desde el depósito +El Avión debe ser para [%s]. +The route is complete, now you may dispatch the vehicle from the depot (%s). +La ruta está completa, ahora debe arrancar el vehículo desde el depósito (%s). The schedule is not correct. El itinerario no es correcto. The schedule list must not be empty. -La lista de itinerario no debe estar vacía. +La lista de itinerario no debe estar vacía. The schedule needs to have %d waystops, but there are %d. La lista de itinerario necesita %d paradas, pero son %d. The second train @@ -255,85 +257,83 @@ El segundo tren The ship must be for [%s]. El barco debe ser para [%s]. The signal does not point in the correct direction -La señal no apunta hacia la dirección correcta +La señal no apunta hacia la dirección correcta The signal is ready! -¡La señal esta lista! +¡La señal esta lista! The slope is ready. -La pendiente está lista. +La pendiente está lista. The slope points to the [%s]. La pendiente apunta hacia el [%s]. The slope points to the Northeast. La pendiente apunta hacia el Noroeste. The station at {pos} doesn't accept freight -La estación en {pos} no acepta la mercancía +La estación en {pos} no acepta la mercancía The station at {pos} isn't your station -La estación en {pos} no es tu estación +La estación en {pos} no es tu estación The terrain must be flat. El terreno debe ser plano. The track is correct. -La vía es correcta. +La vía es correcta. The track is not correct it must be: %s, use the 'Remove' tool -La vía no es correcta, debe ser: %s, usa la herramienta 'Eliminar' +La vía no es correcta, debe ser: %s, usa la herramienta 'Eliminar' The track is stuck, use the [Remove] tool here! -La vía está atascada, ¡usa la herramienta [Eliminar] aquí! +La vía está atascada, ¡usa la herramienta [Eliminar] aquí! The trailers numbers must be [%d]. -El número de remolques debe ser de [%d]. +El número de remolques debe ser de [%d]. The train cannot be shorter than [%d] tiles. El tren no puede ser menor a [%d] casillas. The train may not be longer than [%d] tiles. El tren no puede exceder las [%d] casillas. The truck must be for [%s]. -El camión debe ser para [%s]. +El camión debe ser para [%s]. The tunnel is already at the correct level -El túnel ya está a un nivel adecuado. +El túnel ya está a un nivel adecuado. The tunnel is not correct, use the [Remove] tool here -El túnel no es correcto, usa la herramienta [Eliminar] aquí +El túnel no es correcto, usa la herramienta [Eliminar] aquí The vehicle must be [%s]. -El vehículo debe ser [%s]. +El vehículo debe ser [%s]. The waittime in waystop {nr} '{name}' isn't {wait} {pos} -Salir después de en la parada [{nr}] {name} debe ser {wait} {pos} +Salir después de en la parada [{nr}] {name} debe ser {wait} {pos} There is already a station. -Ya existe una Estacion aquí. +Ya existe una Estacion aquí. There is already a stop here -Ya existe una parada aquí +Ya existe una parada aquí There is already a transformer here! -¡Ya hay un transformador aquí! +¡Ya hay un transformador aquí! This is a factory Esto es una fabrica This is a link Esto es un enlace This is a station -Esto es una estación +Esto es una estación This is a town centre Esto es un ayuntamiento Town Centre Ayuntamiento Transformer Here!. -¡Transformador aquí! +¡Transformador aquí! Translator Yona-TYT, Roboron Tutorial Scenario complete. Escenario Tutorial completado. Updating text ... Waiting ... Actualizando texto ... Esperando ... -You are outside the allowed limits! -¡Estás fuera de los límites permitidos! -You can only build on a straight road -Solo puedes construir paradas en carreteras rectas +You are outside the allowed limits! (%s) +¡Estás fuera de los límites permitidos! (%s) You can only build stops on flat ground Solo puedes construir paradas en terreno llano -You can only build stops on roads -Solo puedes construir paradas en carreteras You can only delete the stations. Solo puedes eliminar estaciones. You can only delete the stops. Solo se permite eliminar paradas. +You can only delete the stops/extensions. +Solo puedes eliminar las paradas/extensiones. You can only use this tool in the city Solo puedes usar esta herramienta en la ciudad You can only use vehicles: -Solo puede usar vehículos: +Solo puede usar vehículos: You didn't build a station at {pos} -No has construido una estación en {pos} +No has construido una estación en {pos} You must build a stop in [%s] Debe construir una parada en [%s] You must build a stop in [%s] first @@ -341,13 +341,13 @@ Primero debes construir una parada en [%s] You must build the %d stops first. Primero debes construir las %d paradas. You must build the bridge here -Debes construir el puente aquí +Debes construir el puente aquí You must build the depot in -Debes construir el depósito en -You must build the train depot in -Debes construir el depósito de trenes en +Debes construir el depósito en +You must build the train depot in (%s). +Debes construir el depósito de trenes en (%s). You must build track in -Debes construir la vía aquí +Debes construir la vía aquí You must click on the stops Debes pulsar en las paradas You must connect the two cities first. @@ -355,7 +355,7 @@ Primero debes conectar las dos ciudades primero. You must first build a stretch of road Primero debes construir un tramo de carretera You must first buy a bus [%s]. -Primero debes comprar un Autobús [%s]. +Primero debes comprar un Autobús [%s]. You must first buy a locomotive [%s]. Primero debes comprar una locomotora [%s]. You must first buy a ship [%s]. @@ -365,14 +365,32 @@ Primero debes levantar el terreno con una pendiente artificial plana You must lower the ground first Primero debes bajar el terreno. You must press the [Copy backward] button to complete the route. -Debes presionar el botón [Viaje de vuelta] para completar la ruta. +Debes presionar el botón [Viaje de vuelta] para completar la ruta. You must select a [%s]. Debes seleccionar un [%s]. -You must select the deposit located in -Seleccione el depósito ubicado en: +You must select the deposit located in (%s). +Seleccione el depósito ubicado en: (%s). You must upper the ground first Primero debes subir el terreno. You must use the inspection tool -Debes usar la herramienta de inspección +Debes usar la herramienta de inspección You must use the tool to raise the ground here -Debes usar la herramienta para elevar el terreno aquí. +Debes usar la herramienta para elevar el terreno aquí. +#_________________________________errer message_________________________________ +#_________________________________errer message_________________________________ +Selected harbour accept not %s. +El puerto seleccionado no acepta %s. +#_________________________________error message_________________________________ +#_________________________________error message_________________________________ +Action not allowed (%s). +No se permite la acción en el campo (%s). +Place the mail extension at the marked tiles. +Coloque el edificio de extensión de postes en las ubicaciones marcadas. +Selected extension accept not %s. +La extensión seleccionada no acepta %s. +Selected halt accept not %s. +La parada seleccionada no acepta %s. +Selected way is not correct! +¡La ruta seleccionada es incorrecta! +This stop already accepts mail. +Esta parada ya acepta correo. diff --git a/es/about.txt b/es/about.txt index 647f36f..444902d 100644 --- a/es/about.txt +++ b/es/about.txt @@ -1 +1 @@ -

Escenario: {short_description}
Versión: {version}
Autor: {author}
Traducciones: {translation}

\ No newline at end of file +

Escenario: {short_description}
Versión: {version}
Autor: {author}
Traducciones: {translation}

\ No newline at end of file diff --git a/es/chapter_00/goal_step_01.txt b/es/chapter_00/goal_step_01.txt index ec5d332..860b7f1 100644 --- a/es/chapter_00/goal_step_01.txt +++ b/es/chapter_00/goal_step_01.txt @@ -1 +1 @@ -

El Escenario no es compatible con tu pakset o versión de Simutrans:

Versión de Simutrans: v{current_stv} -> {stv}.
Nombre del Pakset: {current_pak} -> {pak}.

\ No newline at end of file +

El Escenario no es compatible con tu pakset o versión de Simutrans:

Versión de Simutrans: v{current_stv} -> {stv}.
Nombre del Pakset: {current_pak} -> {pak}.

\ No newline at end of file diff --git a/es/chapter_01/goal.txt b/es/chapter_01/goal.txt index dc1b101..a194535 100644 --- a/es/chapter_01/goal.txt +++ b/es/chapter_01/goal.txt @@ -1 +1 @@ -

{scr}

{txtst_01}Paso A - Sobre el Escenario Tutorial
{step_01}

{txtst_02}Paso B - Moviéndose alrededor
{step_02}

{txtst_03}Paso C - Viendo los detalles
{step_03}

{txtst_04}Paso D - El minimapa y otras ventanas
{step_04}

\ No newline at end of file +

{scr}

{txtst_01}Paso A - Sobre el Escenario Tutorial
{step_01}

{txtst_02}Paso B - Moviéndose alrededor
{step_02}

{txtst_03}Paso C - Viendo los detalles
{step_03}

{txtst_04}Paso D - El minimapa y otras ventanas
{step_04}

\ No newline at end of file diff --git a/es/chapter_01/goal_step_01.txt b/es/chapter_01/goal_step_01.txt index f538992..b7503b6 100644 --- a/es/chapter_01/goal_step_01.txt +++ b/es/chapter_01/goal_step_01.txt @@ -1 +1 @@ -

En este primer paso vamos a explicar algunos aspectos básicos sobre el Escenario Tutorial.

Ventanas de Advertencia

Estas se usan para advertir al jugador en caso de hacer algo mal, como usar la herramienta equivocada. Los eventos en el escenario que muestran ventanas emergentes son:
1 - Uso de herramientas, cuando se pulsa en el mapa con la herramienta incorrecta.
2 - Itinerario de Vehículos, cuando la ruta o línea del vehículo es incorrecta.
3 - Arrancar Vehículos, cuando el tipo de vehículo requerido es incorrecto.

Marcas y etiquetas

Se usan una serie de indicaciones en el terreno para ayudar al jugador a encontrar/ubicar las cosas. Los tres tipos de indicaciones son:
1 - Marcadores de Texto, se usan estos objetos para mostrar un texto guía y para indicar con "X" los límites para el uso de herramientas.
2 - Marcas en objetos, se usan para darle un resalte 'Rojo' a los objetos donde se debe hacer clic.
3 - Marcas en el terreno, se usan para resaltar objetos y el terreno, también cumple un papel visual a la hora de conectar caminos.

Enlaces

En este escenario vas a ver frecuentemete enlaces a ubicaciones de elementos. Pulsar sobre uno de ellos te llevará automáticamente a la ubicación que indican, por ejemplo "{pos}", al pulsar te llevará directamente a la ciudad {town}. Se usan principalmente para ir a:
-- Ciudades ({pos1}), Fábricas ({pos2}), Estaciones ({pos3}), etc.

Regresiones de Capítulos/Pasos

Esto solo ocurre si eliminas un vehículo en circulación, sin importar el capítulo donde estés seras enviado de regreso a corregir el problema.

Enlace para Saltar Pasos

Es un tipo de enlace especial que permite ejecutar códigos en el Escenario con una sola pulsación. Usando este atajo puedes ver como se va construyendo todo automáticamente. Se puede usar hasta el Capítulo 5.

Mensajes de Escenario

Los mensajes de Escenario están desactivados por defecto, puedes activarlos de la siguiente forma: -- En la barra de herramientas selecciona el menú Buzon, y ahí presione el botón de [Opciones]
-- A continuación se muestra un lista de los tipos de mensajes, cada uno con 4 casillas de verificación.
- [Control Maestro] este control activa/desactiva por completo el mensaje seleccionado.
- [Barra de noticias] este control activa/desactiva mensajes en la barra de noticias.
- [Ventana Temporal] este control activa/desactiva mensajes en ventana emergente que desaparece en unos segundos.
- [Ventana Alerta] este control activa/desactiva mensajes en en ventana emergente persistente (no recomendado).

Consejo: Para los mensajes de Escenario se recomienda activar sólo la [Ventana Temporal].

Nota: El texto en esta ventana siempre tarda unos segundos en actualizarse.

Para avanzar al siguiente paso, debes pulsar en este enlace {link}.

\ No newline at end of file +

En este primer paso vamos a explicar algunos aspectos básicos sobre el Escenario Tutorial.

Ventanas de Advertencia

Estas se usan para advertir al jugador en caso de hacer algo mal, como usar la herramienta equivocada. Los eventos en el escenario que muestran ventanas emergentes son:
1 - Uso de herramientas, cuando se pulsa en el mapa con la herramienta incorrecta.
2 - Itinerario de Vehículos, cuando la ruta o línea del vehículo es incorrecta.
3 - Arrancar Vehículos, cuando el tipo de vehículo requerido es incorrecto.

Marcas y etiquetas

Se usan una serie de indicaciones en el terreno para ayudar al jugador a encontrar/ubicar las cosas. Los tres tipos de indicaciones son:
1 - Marcadores de Texto, se usan estos objetos para mostrar un texto guía y para indicar con "X" los límites para el uso de herramientas.
2 - Marcas en objetos, se usan para darle un resalte 'Rojo' a los objetos donde se debe hacer clic.
3 - Marcas en el terreno, se usan para resaltar objetos y el terreno, también cumple un papel visual a la hora de conectar caminos.

Enlaces

En este escenario vas a ver frecuentemete enlaces a ubicaciones de elementos. Pulsar sobre uno de ellos te llevará automáticamente a la ubicación que indican, por ejemplo "{pos}", al pulsar te llevará directamente a la ciudad {town}. Se usan principalmente para ir a:
-- Ciudades ({pos1}), Fábricas ({pos2}), Estaciones ({pos3}), etc.

Regresiones de Capítulos/Pasos

Esto solo ocurre si eliminas un vehículo en circulación, sin importar el capítulo donde estés seras enviado de regreso a corregir el problema.

Enlace '{next_step}'

Es un tipo de enlace especial que permite ejecutar códigos en el Escenario con una sola pulsación. Usando este atajo puedes ver como se va construyendo todo automáticamente. Se puede usar hasta el Capítulo 6.

Mensajes
Los mensajes de Escenario están desactivados por defecto, puedes activarlos de la siguiente forma: -- En la barra de herramientas selecciona el menú Buzon, y ahí presione el botón de [Opciones]
-- A continuación se muestra un lista de los tipos de mensajes, cada uno con 4 casillas de verificación.
- [Control Maestro] este control activa/desactiva por completo el mensaje seleccionado.
- [Barra de noticias] este control activa/desactiva mensajes en la barra de noticias.
- [Ventana Temporal] este control activa/desactiva mensajes en ventana emergente que desaparece en unos segundos.
- [Ventana Alerta] este control activa/desactiva mensajes en en ventana emergente persistente (no recomendado).

Consejo: Para los mensajes de Escenario se recomienda activar sólo la [Ventana Temporal].

Nota: El texto en esta ventana siempre tarda unos segundos en actualizarse.

Para avanzar al siguiente paso, debes pulsar en este enlace {link}.

\ No newline at end of file diff --git a/es/chapter_01/goal_step_02.txt b/es/chapter_01/goal_step_02.txt index 80a2ec1..9bdd65b 100644 --- a/es/chapter_01/goal_step_02.txt +++ b/es/chapter_01/goal_step_02.txt @@ -1 +1 @@ -

Te recomendamos activar la cuadrícula para este tutorial pulsando la tecla "#". Además, es muy recomendable que los Árboles hayan sido configurados para ser transparentes, ya sea a través del menú de opciones o presionando la tecla "%".

Puedes acercar o alejar la cámara usando la rueda del ratón, o las teclas [AvPág/RePág].

Puedes moverte alrededor del mapa usando el Botón Derecho del ratón y arrastrando, usando las teclas de dirección, o el teclado numérico (si no está bloqueado).

Puedes rotar el mapa pulsando "[Mayús]+r" ("R" mayúscula) o seleccionando la herramienta "Rotar Mapa" desde el menú de herramientas.

Intenta acercar y alejar la cámara y moverte por el mapa.

Para continuar al siguiente paso, rota el mapa.

\ No newline at end of file +

{img_grid} cuadrícula
Te recomendamos activar la cuadrícula para este tutorial pulsando la tecla "#".

{img_display} Menú de configuración - Pantalla
Además, es muy recomendable que los Ãrboles hayan sido configurados para ser transparentes, ya sea a través del menú de opciones o presionando la tecla "%".

Puedes acercar o alejar la cámara usando la rueda del ratón, o las teclas [AvPág/RePág].

Puedes moverte alrededor del mapa usando el Botón Derecho del ratón y arrastrando, usando las teclas de dirección, o el teclado numérico (si no está bloqueado).

rotar el mapa
Puedes rotar el mapa pulsando "[Mayús]+r" ("R" mayúscula) o seleccionando la herramienta "Rotar Mapa" desde el menú de herramientas.

Intenta acercar y alejar la cámara y moverte por el mapa.

Para continuar al siguiente paso, rota el mapa.

\ No newline at end of file diff --git a/es/chapter_01/goal_step_03.txt b/es/chapter_01/goal_step_03.txt index b957ae0..9be82d7 100644 --- a/es/chapter_01/goal_step_03.txt +++ b/es/chapter_01/goal_step_03.txt @@ -1 +1 @@ -

Ahora que ya sabes cómo moverte por el mapa, el siguiente paso es obtener información de elementos en el mapa.

Herramienta de Inspección

Esta es la herramienta principal del juego, puede usarse sin coste alguno y permite mostrar la ventana de informacion sobre cualquier elemento del mapa. También es la seleccionada por defecto. Si no lo está, puede ser seleccionada desde la barra de herramientas (el icono de la lupa) o presionando la tecla "A".

En la esquina inferior derecha de la pantalla se muestra las coordenadas o posición (x,y,z) del cursor.

Primero pulse sobre {pos} usando la '{tool1}'. Después de pulsar sobre la estatua, debes cerrar la ventana de información haciendo click en "[X]" en la parte superior, presionar "[Esc]" para cerrar la última ventana abierta o presionando "[Retroceso]" para cerrar todas las ventanas.

Por último use la '{tool1}' sobre {buld_name} y cierre la ventana de información.

Consejo: Puedes pulsar en la vista previa del objeto en la ventana emergente de información, y te llevará directamente a su ubicación en el mapa.

Nota: Presionando "[Retroceso]" se cerrarán todas las ventanas, incluyendo la ventana del tutorial.

\ No newline at end of file +

Ahora que ya sabes cómo moverte por el mapa, el siguiente paso es obtener información de elementos en el mapa.

Herramienta de Inspección

Esta es la herramienta principal del juego, puede usarse sin coste alguno y permite mostrar la ventana de informacion sobre cualquier elemento del mapa. También es la seleccionada por defecto. Si no lo está, puede ser seleccionada desde la barra de herramientas (el icono de la lupa) o presionando la tecla "A".

En la esquina inferior derecha de la pantalla se muestra las coordenadas o posición (x,y,z) del cursor.

Primero pulse sobre {pos} usando la '{tool1}'. Después de pulsar sobre la estatua, debes cerrar la ventana de información haciendo click en "[X]" en la parte superior, presionar "[Esc]" para cerrar la última ventana abierta o presionando "[Retroceso]" para cerrar todas las ventanas.

Por último use la '{tool1}' sobre {buld_name} y cierre la ventana de información.

Consejo: Puedes pulsar en la vista previa del objeto en la ventana emergente de información, y te llevará directamente a su ubicación en el mapa.

Nota: Presionando "[Retroceso]" se cerrarán todas las ventanas, incluyendo la ventana del tutorial.

\ No newline at end of file diff --git a/es/chapter_01/goal_step_04.txt b/es/chapter_01/goal_step_04.txt index 55f6f06..28904bb 100644 --- a/es/chapter_01/goal_step_04.txt +++ b/es/chapter_01/goal_step_04.txt @@ -1 +1 @@ -

Hay una serie de ventanas contiene información esencial.

El 'Minimapa' se puede mostrar presionando la tecla "m".
La ventana de 'Finanzas' se puede mostrar presionando la tecla "f".
El 'Buzón' se puede mostrar pulsando "[Mayús]+b".
Más información sobre la ciudad está disponible pulsando sobre el 'Ayuntamiento' con la '{tool1}'.

Para avanzar al siguiente capítulo, pulsa en {pos2} de {town} usando la '{tool1}'.

\ No newline at end of file +

Hay una serie de ventanas contiene información esencial.

Minimapa
El 'Minimapa' se puede mostrar presionando la tecla "m".

Finanzas
La ventana de 'Finanzas' se puede mostrar presionando la tecla "f".

Buzón
El 'Buzón' se puede mostrar pulsando "[Mayús]+b".

{tool1}
Más información sobre la ciudad está disponible pulsando sobre el 'Ayuntamiento' con la '{tool1}'.

Para avanzar al siguiente capítulo, pulsa en {pos2} de {town} usando la '{tool1}'.

\ No newline at end of file diff --git a/es/chapter_02/06_1-2.txt b/es/chapter_02/06_1-2.txt index e026037..d986a78 100644 --- a/es/chapter_02/06_1-2.txt +++ b/es/chapter_02/06_1-2.txt @@ -1 +1 @@ -

Ahora que el puente fue reparado, la ciudad {name} necesita una línea con [{cov}] autobuses en circulación para mover turistas desde el muelle en construcción {st1}.

{tx} Arrancando los Autobuses.

Las Líneas:

Son necesarias para controlar grandes cantidades de vehículos si estos sirven a la misma ruta. También se les puede dar un nombre personalizado para ayudar a identificarlas.
Las líneas se pueden gestionar desde la ventana Administración de lineas que se puede acceder desde la barra de herramientas o presionando la tecla "w".

Primeros pasos:

[1] Primero con la '{tool1}' pulse sobre el Depósito de Carretera{pos} y en la ventana del depósito elija el Autobús {bus1}.
[2] Es necesario configurar una Línea para gestionar varios vehículos a la vez. Pulsa sobre el filtro Sirve en línea y luego en Crear línea nueva.

Seleccionando todas las paradas:

[1] Selecciona la parada {st1} y configura la parada de la siguiente forma:
--> [a] Configura Carga mínima al {load}%.
--> [b] Configura Salir después de a {wait}.
[2] Selecciona la parada {st2} y deja todo como está.
[3] Seleccione la parada {st3} y deja todo como esta.
[4] Seleccione la parada {st4} y deja todo como esta.
[5] Seleccione la parada {st5} y deja todo como esta.

Pasos finales:

[1] Cierra la ventana Itinerario para que los cambios sean aplicados.
[2] Por último pulsa sobre el botón Arrancar para que el vehículo salga del depósito.

Autobuses en circulación: {cir}/{cov}

Se avanza al siguiente paso cuando todos los vehículos estén en circulación.

\ No newline at end of file +

Ahora que el puente fue reparado, la ciudad {name} necesita una línea con [{cov}] autobuses en circulación para mover turistas desde el muelle en construcción {stnam}.

{tx} Arrancando los Autobuses.

Las Líneas:

Son necesarias para controlar grandes cantidades de vehículos si estos sirven a la misma ruta. También se les puede dar un nombre personalizado para ayudar a identificarlas.
Las líneas se pueden gestionar desde la ventana Administración de lineas que se puede acceder desde la barra de herramientas o presionando la tecla "w".

Primeros pasos:

[1] Primero con la '{tool1}' pulse sobre el Depósito de Carretera{dep} y en la ventana del depósito elija el Autobús {bus1}.
[2] Es necesario configurar una Línea para gestionar varios vehículos a la vez. Pulsa sobre el filtro Sirve en línea y luego en Crear línea nueva.

Seleccionando todas las paradas:


{list}
[*] Selecciona la parada {stnam} y configura la parada de la siguiente forma:
--> [a] Configura Carga mínima al {load}%.
--> [b] Configura Salir después de a {wait}.

Pasos finales:

[1] Cierra la ventana Itinerario para que los cambios sean aplicados.
[2] Por último pulsa sobre el botón Arrancar para que el vehículo salga del depósito.

Autobuses en circulación: {cir}/{cov}

Se avanza al siguiente paso cuando todos los vehículos estén en circulación.

\ No newline at end of file diff --git a/es/chapter_02/06_2-2.txt b/es/chapter_02/06_2-2.txt index a368ed3..ed20064 100644 --- a/es/chapter_02/06_2-2.txt +++ b/es/chapter_02/06_2-2.txt @@ -1 +1 @@ -

Ahora que el puente ha sido reparado, la ciudad {name} necesita una línea con [3] autobuses en circulación para mover turistas desde el muelle en construcción {st1}.

{tx} Arrancando los Autobuses.

Asignando líneas:

Las líneas existentes pueden ser asignadas a nuevos vehículos, siempre que sean vehículos de la misma categoría. En este ejemplo vamos a asigna la línea "{line}" a nuestros nuevos vehículos.

[1] Primero compra un Autobús {bus1}.
[2] Si la línea fue creada correctamente, puedes pulsar sobre el filtro Sirve en línea (por defecto el texto es: [sin itinerario]) y luego selecciona la línea "{line}".
[3] Finalmente pulsa sobre el botón Arrancar.

Autobuses en circulación: {cir}/3

Se avanza al siguiente paso cuando todos los vehículos estén en circulación.

\ No newline at end of file +

Ahora que el puente ha sido reparado, la ciudad {name} necesita una línea con [3] autobuses en circulación para mover turistas desde el muelle en construcción {stnam}.

{tx} Arrancando los Autobuses.

Asignando líneas:

Las líneas existentes pueden ser asignadas a nuevos vehículos, siempre que sean vehículos de la misma categoría. En este ejemplo vamos a asigna la línea "{line}" a nuestros nuevos vehículos.

[1] Primero compra un Autobús {bus1}.
[2] Si la línea fue creada correctamente, puedes pulsar sobre el filtro Sirve en línea (por defecto el texto es: [sin itinerario]) y luego selecciona la línea "{line}".
[3] Finalmente pulsa sobre el botón Arrancar.

Autobuses en circulación: {cir}/3

Se avanza al siguiente paso cuando todos los vehículos estén en circulación.

\ No newline at end of file diff --git a/es/chapter_02/07_1-3.txt b/es/chapter_02/07_1-3.txt deleted file mode 100644 index 73df4e4..0000000 --- a/es/chapter_02/07_1-3.txt +++ /dev/null @@ -1 +0,0 @@ -

Ahora que el puente ha sido reparado, la ciudad {name} necesita una linea de autobús que conecte con la Ciudad vecina de {name2}.

{tx} Primero debes colocar las paradas en {name2}.

Lista de paradas:
{list}

Se avanza al siguiente paso cuando el autobús arranque desde el depósito.

\ No newline at end of file diff --git a/es/chapter_02/07_1-4.txt b/es/chapter_02/07_1-4.txt new file mode 100644 index 0000000..60e2af9 --- /dev/null +++ b/es/chapter_02/07_1-4.txt @@ -0,0 +1 @@ +

Ahora que el puente ha sido reparado, la ciudad {name} necesita una linea de autobús que conecte con la Ciudad vecina de {name2}.

{img_road_menu} {toolbar_halt}

{tx} Primero debes colocar las paradas en {name2}.

Lista de paradas:
{list}

Se avanza al siguiente paso cuando el autobús arranque desde el depósito.

\ No newline at end of file diff --git a/es/chapter_02/07_2-3.txt b/es/chapter_02/07_2-3.txt deleted file mode 100644 index 0989958..0000000 --- a/es/chapter_02/07_2-3.txt +++ /dev/null @@ -1 +0,0 @@ -

Ahora que el puente ha sido reparado, la ciudad {name} necesita una línea de autobús que conecte con la Ciudad vecina de {name2}.

{tx} Abre '{tool2}' en la barra de herramientas y construye una carretera para conectar los puntos entre {pt1} y {pt2}.

Conecta la carretera aquí: {cbor}

Consejo: Mantén presionada la tecla[Ctrl] para construir tramos rectos de carreteras/vías de tren.

Se avanza al siguiente paso cuando el autobús arranque desde el depósito.

\ No newline at end of file diff --git a/es/chapter_02/07_2-4.txt b/es/chapter_02/07_2-4.txt new file mode 100644 index 0000000..a3fc95e --- /dev/null +++ b/es/chapter_02/07_2-4.txt @@ -0,0 +1 @@ +

Ahora que el puente ha sido reparado, la ciudad {name} necesita una línea de autobús que conecte con la Ciudad vecina de {name2}.

{tx} Abre '{toolbar_road}' en la barra de herramientas y construye una carretera para conectar los puntos entre {pt1} y {pt2}.

Conecta la carretera aquí: {cbor}

Consejo: Mantén presionada la tecla[Ctrl] para construir tramos rectos de carreteras/vías de tren.

Se avanza al siguiente paso cuando el autobús arranque desde el depósito.

\ No newline at end of file diff --git a/es/chapter_02/07_3-3.txt b/es/chapter_02/07_3-3.txt deleted file mode 100644 index 05b0569..0000000 --- a/es/chapter_02/07_3-3.txt +++ /dev/null @@ -1 +0,0 @@ -

Ahora que el puente ha sido reparado, la ciudad {name} necesita una linea de autobús que conecte con la Ciudad vecina de {name2}.

{tx} Pulsa sobre el Depósito de Carretera{dep}, y selecciona un autobús {bus1} y pulse sobre 'Itinerario'.

Ahora seleccione las paradas:
{list}
- Después de añadir las {nr} paradas, seleccione la parada {stnam} de la lista y configure de la siguiente forma:
--> [a] Configura Carga mínima al {load}%.
--> [b] Configura Salir después de a {wait}.

Se avanza al siguiente capitulo cuando el autobús salga del depósito.

\ No newline at end of file diff --git a/es/chapter_02/07_3-4.txt b/es/chapter_02/07_3-4.txt new file mode 100644 index 0000000..28075b0 --- /dev/null +++ b/es/chapter_02/07_3-4.txt @@ -0,0 +1 @@ +

Ahora que el puente ha sido reparado, la ciudad {name} necesita una linea de autobús que conecte con la Ciudad vecina de {name2}.

{tx} Pulsa sobre el Depósito de Carretera{dep}, y selecciona un autobús {bus1} y pulse sobre 'Itinerario'.

Ahora seleccione las paradas:
{list}
- Después de añadir las {nr} paradas, seleccione la parada {stnam} de la lista y configure de la siguiente forma:
--> [a] Configura Carga mínima al {load}%.
--> [b] Configura Salir después de a {wait}.

Se avanza al siguiente capitulo cuando el autobús salga del depósito.

\ No newline at end of file diff --git a/es/chapter_02/07_4-4.txt b/es/chapter_02/07_4-4.txt new file mode 100644 index 0000000..9dca573 --- /dev/null +++ b/es/chapter_02/07_4-4.txt @@ -0,0 +1 @@ +

Ahora que el puente ha sido reparado, la ciudad {name} necesita una linea de autobús que conecte con la Ciudad vecina de {name2}.

{tx} Ahora debes seguir al Veh¨ªculo.

Siguiendo Convoyes

Esta opci¨®n le permite seguir los veh¨ªculos mientras recorren su ruta, para que permanezcan a la vista sin importar a donde vayan, incluso si van bajo tierra. Se activa desde la ventana Convoy y es el cuarto icono en la barra de titulo de esa ventana (el ojo).

Haga clic en el veh¨ªculo que ya est¨¢ en circulaci¨®n para que se muestre la ventana Convoy. Busque el cuarto icono en la barra de t¨ªtulo de la ventana del convoy (icono de ojo) y presionar para seguir al convoy.

Localiza al Veh¨ªculo en: {covpos}

El tutorial pasar¨¢ al siguiente paso cuando est¨¦s siguiendo el convoy.

\ No newline at end of file diff --git a/es/chapter_02/goal.txt b/es/chapter_02/goal.txt index 5d2cd2d..7e65057 100644 --- a/es/chapter_02/goal.txt +++ b/es/chapter_02/goal.txt @@ -1 +1 @@ -

{scr}

{txtst_01}Paso A - Construyendo un Tramo de Carretera
{step_01}

{txtst_02}Paso B - Construyendo un Depósito de Carretera
{step_02}

{txtst_03}Paso C - Colocando Paradas de Autobuses
{step_03}

{txtst_04}Paso D - Arrancado el Primer Autobús
{step_04}

{txtst_05}Paso E - Construyendo un Puente
{step_05}

{txtst_06}Paso F - Conectando el Muelle en Construcción
{step_06}

{txtst_07}Paso G - Conectando las Ciudades
{step_07}

{txtst_08}Paso H - Creando Paradas Públicas
{step_08}

\ No newline at end of file +

{scr}

{txtst_01}Paso A - Construyendo un Tramo de Carretera
{step_01}

{txtst_02}Paso B - Construyendo un Depósito de Carretera
{step_02}

{txtst_03}Paso C - Colocando Paradas de Autobuses
{step_03}

{txtst_04}Paso D - Arrancado el Primer Autobús
{step_04}

{txtst_05}Paso E - Construyendo un Puente
{step_05}

{txtst_06}Paso F - Conectando el Muelle en Construcción
{step_06}

{txtst_07}Paso G - Conectando las Ciudades
{step_07}

{txtst_08}Paso H - Creando Paradas Públicas
{step_08}

\ No newline at end of file diff --git a/es/chapter_02/goal_step_01.txt b/es/chapter_02/goal_step_01.txt index 3f631fb..652bd55 100644 --- a/es/chapter_02/goal_step_01.txt +++ b/es/chapter_02/goal_step_01.txt @@ -1 +1 @@ -

Vamos a poner en marcha un Servicio de Autobús en la ciudad de {name}

Primero, necesitas construir una carretera sin salida para construir un depósito en ella.

Las Carreteras:

Esta herramienta se puede usar arrastrando o pulsando de un punto a otro, también puedse presionar la tecla [Ctrl] para construir caminos rectos. Existen varios tipos de carreteras, estas pueden variar su velocidad máxima desde 30km/h hasta 200km/h. Se cobra por el mantenimiento de las carreteras, y su coste varía dependiendo del tipo de carretera. Es posible también electrificar las carreteras para permitir el paso de vehículos eléctricos.

Abre '{tool2}' en el menú de herramientas y selecciona la carretera de 50 km/h. Ahora puedes construir una carretera pulsando una vez sobre el inicio y otra sobre el final, o arrastrando el cursor entre estos puntos.

Conecta los puntos entre {t1} y {t2} o {t1} y {t3} para avanzar al siguiente paso.

\ No newline at end of file +

Vamos a poner en marcha un Servicio de Autobús en la ciudad de {name}

Primero, necesitas construir una carretera sin salida para construir un depósito en ella.

Las Carreteras:

Esta herramienta se puede usar arrastrando o pulsando de un punto a otro, también puedse presionar la tecla [Ctrl] para construir caminos rectos. Existen varios tipos de carreteras, estas pueden variar su velocidad máxima desde 30km/h hasta 200km/h. Se cobra por el mantenimiento de las carreteras, y su coste varía dependiendo del tipo de carretera. Es posible también electrificar las carreteras para permitir el paso de vehículos eléctricos.

{img_road_menu} {toolbar_road}

'{toolbar_road}' en el menú de herramientas y selecciona la carretera de 50 km/h. Ahora puedes construir una carretera pulsando una vez sobre el inicio y otra sobre el final, o arrastrando el cursor entre estos puntos.

Conecta el campo {dep} a una calle adyacente para avanzar al siguiente paso.

\ No newline at end of file diff --git a/es/chapter_02/goal_step_02.txt b/es/chapter_02/goal_step_02.txt index 67fdff5..cce62c5 100644 --- a/es/chapter_02/goal_step_02.txt +++ b/es/chapter_02/goal_step_02.txt @@ -1 +1 @@ -

Vamos a poner en marcha un Servicio de Autobús en la ciudad de {name}

El primer paso para poner en marcha el servicio es construir un Depósito de Carretera en {pos}. Puedes encontrar esta herramienta en '{tool2}' también.

Depósito de carretera:

Puedes construir un depósito en una carretera sin salida. Desde los depósitos es posible comprar, vender, ajustar la ruta y arrancar los vehículos. También hay una opción que permite usar vehículos eléctricos, pero sólo se muestra si la carretera bajo el depósito está electrificada.
El depósito te permite comprar vehículos para dar servicio a las ruta que vas a crear.

Para avanzar al próximo paso, construye un Depósito de Carretera en {pos}.

\ No newline at end of file +

Vamos a poner en marcha un Servicio de Autobús en la ciudad de {name}

{img_road_menu} {toolbar_road}

El primer paso para poner en marcha el servicio es construir un Depósito de Carretera en {dep}. Puedes encontrar esta herramienta en '{toolbar_road}' también.

Depósito de carretera:

Puedes construir un depósito en una carretera sin salida. Desde los depósitos es posible comprar, vender, ajustar la ruta y arrancar los vehículos. También hay una opción que permite usar vehículos eléctricos, pero sólo se muestra si la carretera bajo el depósito está electrificada.
El depósito te permite comprar vehículos para dar servicio a las ruta que vas a crear.

Para avanzar al próximo paso, construye un Depósito de Carretera en {dep}.

\ No newline at end of file diff --git a/es/chapter_02/goal_step_03.txt b/es/chapter_02/goal_step_03.txt index 8c6562c..44698e3 100644 --- a/es/chapter_02/goal_step_03.txt +++ b/es/chapter_02/goal_step_03.txt @@ -1 +1 @@ -

El próximo paso para poner en marcha tu Servicio de Autobús para la ciudad {name}.

Es necesario construir paradas de autobús en cada uno de los puntos marcados en la ciudad:
{list}

Las paradas se encuentran en la barra de herramientas '{tool2}' también.

Las Paradas de Autobús:

Para que el autobús pueda cargar pasajeros es necesario que las paradas estén cerca de algún Edificio, Atracción Turística o Fábrica. Las paradas tienen una capacidad de almacenamiento de 32, 64 o más. En caso de saturarse se te cobrará una penalización. También es posible combinarlas para aumentar su capacidad de carga junto con su cobertura. También se puede extender el tipo de carga usando edificios de extensión o estaciones que acepten distintos tipos de carga.

Nota: Las paradas tienen una cobertura de 5x5, por lo tanto es recomendable colocar las paradas a una distancia de 4 casillas (cuadrados).Al contrario que con los edificios, las calles no necesitan estar dentro del área de cobertura ya que no generan pasajeros.

Consejo: El área de cobertura se puede mostrar presionando la tecla "v".

Consejo: Presiona la tecla " para ocultar los edificios urbanos.

Se avanza al siguiente paso cuando todas las Paradas estén en su lugar.

\ No newline at end of file +

El próximo paso para poner en marcha tu Servicio de Autobús para la ciudad {name}.

{img_road_menu} {toolbar_halt}

Es necesario construir paradas de autobús en cada uno de los puntos marcados en la ciudad. Las paradas se encuentran en la barra de herramientas '{toolbar_halt}' también.

{list}

Las Paradas de Autobús:

Para que el autobús pueda cargar pasajeros es necesario que las paradas estén cerca de algún Edificio, Atracción Turística o Fábrica. Las paradas tienen una capacidad de almacenamiento de 32, 64 o más. En caso de saturarse se te cobrará una penalización. También es posible combinarlas para aumentar su capacidad de carga junto con su cobertura. También se puede extender el tipo de carga usando edificios de extensión o estaciones que acepten distintos tipos de carga.

Nota: Las paradas tienen una cobertura de 5x5, por lo tanto es recomendable colocar las paradas a una distancia de 4 casillas (cuadrados).Al contrario que con los edificios, las calles no necesitan estar dentro del área de cobertura ya que no generan pasajeros.

Consejo: El área de cobertura se puede mostrar presionando la tecla "v".

Consejo: Presiona la tecla " para ocultar los edificios urbanos.

Se avanza al siguiente paso cuando todas las Paradas estén en su lugar.

\ No newline at end of file diff --git a/es/chapter_02/goal_step_04.txt b/es/chapter_02/goal_step_04.txt index 26b07c4..e141a7b 100644 --- a/es/chapter_02/goal_step_04.txt +++ b/es/chapter_02/goal_step_04.txt @@ -1 +1 @@ -

Ahora que las paradas están colocadas, necesitas comprar un Autobús para dar servicio.

[1] Usando la '{tool1}' pulse sobre el Depósito de Carretera{pos} y en la ventana del depósito elige el Autobús {bus1}.
[2] Para configurar la ruta del vehículo, primero debes pulsar sobre el botón Itinerario para abrir la ventana del vehículo.
[3] En la pestaña de Itinerario, ahora debes seleccionar en orden todas la paradas de la ciudad para añadirlas a la lista:
{list}
[4] Después de añadir las {nr} paradas, selecciona la parada {stnam} de la lista y configura la parada de la siguiente forma:
--> [a] Configura Carga mínima al {load}%.
--> [b] Configura Salir después de a {wait}.
[5] Ahora cierra la ventana del vehículo y pulsa sobre el botón Arrancar para que el vehículo salga del depósito.

Consejo: Presiona la tecla ["] para ocultar los edificios urbanos.

Se avanza al siguiente paso cuando el autobús llegue a la primera parada de la lista.

\ No newline at end of file +

Ahora que las paradas están colocadas, necesitas comprar un Autobús para dar servicio.

[1] Usando la '{tool1}' pulse sobre el Depósito de Carretera {dep} y en la ventana del depósito elige el Autobús {bus1}.
[2] Para configurar la ruta del vehículo, primero debes pulsar sobre el botón Itinerario para abrir la ventana del vehículo.
[3] En la pestaña de Itinerario, ahora debes seleccionar en orden todas la paradas de la ciudad para añadirlas a la lista:
{list}
[4] Después de añadir las {nr} paradas, selecciona la parada {stnam} de la lista y configura la parada de la siguiente forma:
--> [a] Configura Carga mínima al {load}%.
--> [b] Configura Salir después de a {wait}.
[5] Ahora cierra la ventana del vehículo y pulsa sobre el botón Arrancar para que el vehículo salga del depósito.

Consejo: Presiona la tecla ["] para ocultar los edificios urbanos.

Siguiendo Convoyes

Esta opción le permite seguir los vehículos mientras recorren su ruta, para que permanezcan a la vista sin importar a donde vayan, incluso si van bajo tierra. Se activa desde la ventana Convoy y es el cuarto icono en la barra de titulo de esa ventana (el ojo).

Haga clic en el vehículo que ya está en circulación para que se muestre la ventana Convoy. Busque el cuarto icono en la barra de título de la ventana del convoy (icono de ojo) y presionar para seguir al convoy.

El tutorial pasará al siguiente paso cuando estés siguiendo el convoy.

\ No newline at end of file diff --git a/es/chapter_02/goal_step_05.txt b/es/chapter_02/goal_step_05.txt index d4a4556..0b1eed5 100644 --- a/es/chapter_02/goal_step_05.txt +++ b/es/chapter_02/goal_step_05.txt @@ -1 +1 @@ -

El puente hacia uno de los suburbios exteriores fue arrasado recientemente,
y a la ciudad de {name} le gustaría que reconectaras dicho suburbio construyendo un puente entre {bpos1} y {bpos2}.

Los puentes también se encuentra se encuentra en la barra de herramientas '{tool2}'.

Hay dos formas de lograr esto. Primero selecciona la herramienta de puente de 50 km/h en Herramientas de Carretera, y luego...
[1] Puedes construir el puente pulsando sobre una de las pendientes opuestas.
[2] Puedes colocar el puente arrastrando el cursor desde una pendiente en cualquiera de los lados hasta la pendiente opuesta.

Para continuar, construye un puente en {bpos1}.

{bridge_info} \ No newline at end of file +

El puente hacia uno de los suburbios exteriores fue arrasado recientemente,
y a la ciudad de {name} le gustaría que reconectaras dicho suburbio construyendo un puente entre {bpos1} y {bpos2}.

{img_road_menu} {toolbar_road}

Los puentes también se encuentra se encuentra en la barra de herramientas '{toolbar_road}'.

Hay dos formas de lograr esto. Primero selecciona la herramienta de puente de 50 km/h en Herramientas de Carretera, y luego...
[1] Puedes construir el puente pulsando sobre una de las pendientes opuestas.
[2] Puedes colocar el puente arrastrando el cursor desde una pendiente en cualquiera de los lados hasta la pendiente opuesta.

Para continuar, construye un puente en {bpos1}.

{bridge_info} \ No newline at end of file diff --git a/es/chapter_02/goal_step_08.txt b/es/chapter_02/goal_step_08.txt index e32585d..d213345 100644 --- a/es/chapter_02/goal_step_08.txt +++ b/es/chapter_02/goal_step_08.txt @@ -1 +1 @@ -

La ciudad {name} necesita que conectes la línea de Autobuses con la línea de Trenes en construcción.

En la barra de herramientas selecciona '{tool3}' y elige la herramienta Convertir en vía o parada pública

Convertir en parada pública

Al hacer la parada pública, el jugador se ahorra el mantenimiento de la parada a la vez que permite compartir con otros jugadores la red de transporte. Pero debes tener cuidado, ya que esta acción no se puede revertir a no ser que cambies al jugador del Servicio Público.

Advertencia: Usar esta herramienta sale muy caro, {prce} por cada casilla.

Selecciona la herramienta Convertir en vía o parada pública y pulsa en la parada {st1}. Notarás que el color de la parada cambiará..

Se avanza al siguiente capítulo cuando la parada sea pública.

\ No newline at end of file +

La ciudad {name} necesita que conectes la línea de Autobuses con la línea de Trenes en construcción.


{public_stop}

Al hacer la parada pública, el jugador se ahorra el mantenimiento de la parada a la vez que permite compartir con otros jugadores la red de transporte. Pero debes tener cuidado, ya que esta acción no se puede revertir a no ser que cambies al jugador del Servicio Público.

Selecciona la herramienta Convertir en vía o parada pública y pulsa en la parada {st1}. Notarás que el color de la parada cambiará..

Se avanza al siguiente capítulo cuando la parada sea pública.

\ No newline at end of file diff --git a/es/chapter_03/01_1-2.txt b/es/chapter_03/01_1-2.txt index c73e248..15e0ea5 100644 --- a/es/chapter_03/01_1-2.txt +++ b/es/chapter_03/01_1-2.txt @@ -1 +1 @@ -


Para la producción de harina de {good2}, necesitarás transportar {good1} desde {f1} hasta {f2}.

{tx} Usa la '{tool1}' en {f2} para mostrar los detalles

\ No newline at end of file +


Para la producción de harina de {good2}, necesitarás transportar {good1} desde {f1} hasta {f2}.

{tx} Usa la '{tool1}' en {f2} para mostrar los detalles

\ No newline at end of file diff --git a/es/chapter_03/01_2-2.txt b/es/chapter_03/01_2-2.txt index 22fca60..b65282d 100644 --- a/es/chapter_03/01_2-2.txt +++ b/es/chapter_03/01_2-2.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Los detalles son:

Producción máxima por mes:
Muestra la capacidad de producción que tiene la industria. La producción puede ser aumentada transportando pasajeros, correo o electricidad a la fábrica, dependiendo de lo que necesite.

Producción:
Muestra qué tipos de bienes de producción produce la fábrica, la cantidad de producción almacenada, y el rendimiento de la producción por cada unidad de materia prima.
Ejemplo: {f2} consume un {g1_factor}% de {good1}, produce un {g2_factor}% de {good2}, y tiene una producción máxima de {prod_out} unidades por mes. Eso significa que consume hasta {g1_consum} {g1_metric} de {good1} por mes, y produce {g2_prod} {g2_metric} de {good2} a partir de {good1}.

Consumo:
Muestra la materia prima que la fábrica necesita, la cantidad almacenada o en camino y cuánta materia prima hace falta para producir una unidad de producto.

Consumidor/Proveedores:
Muestra las fabricas conectadas (sólo puedes transportar mercancías a industrias conectadas).

Los trabajadores viven en:
Muestra las ciudades de donde provienen los trabajadores, su nivel de pasajeros, y su nivel de correo.

Nota: Transportar pasajeros a la fábrica no es obligatorio para que la fábrica produzca, pero hacerlo incrementará la producción.

Se avanza al siguiente paso pulsando sobre {f1}.

\ No newline at end of file +{step_hinfo}

{tx} Los detalles son:

Producción máxima por mes:
Muestra la capacidad de producción que tiene la industria. La producción puede ser aumentada transportando pasajeros, correo o electricidad a la fábrica, dependiendo de lo que necesite.

Producción:
Muestra qué tipos de bienes de producción produce la fábrica, la cantidad de producción almacenada, y el rendimiento de la producción por cada unidad de materia prima.
Ejemplo: {f2} consume un {g1_factor}% de {good1}, produce un {g2_factor}% de {good2}, y tiene una producción máxima de {prod_out} unidades por mes. Eso significa que consume hasta {g1_consum} {g1_metric} de {good1} por mes, y produce {g2_prod} {g2_metric} de {good2} a partir de {good1}.

Consumo:
Muestra la materia prima que la fábrica necesita, la cantidad almacenada o en camino y cuánta materia prima hace falta para producir una unidad de producto.

Consumidor/Proveedores:
Muestra las fabricas conectadas (sólo puedes transportar mercancías a industrias conectadas).

Los trabajadores viven en:
Muestra las ciudades de donde provienen los trabajadores, su nivel de pasajeros, y su nivel de correo.

Nota: Transportar pasajeros a la fábrica no es obligatorio para que la fábrica produzca, pero hacerlo incrementará la producción.

Se avanza al siguiente paso pulsando sobre {f1}.

\ No newline at end of file diff --git a/es/chapter_03/02_1-3.txt b/es/chapter_03/02_1-3.txt index 192e279..6b13763 100644 --- a/es/chapter_03/02_1-3.txt +++ b/es/chapter_03/02_1-3.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Selecciona '{tool2}' en la barra de herramientas y construye una vía de tren que conecte los dos puntos entre {w1} y {w2}.

Vías de tren

Hay varios tipos de vías de tren para diferentes velocidades (desde 60 hasta 200 km/h), deberías tener en cuenta que las vías de alta velocidad son mucho más caras, así que te recomendamos usar vías de 60 o 80 km/h...

Conecta la vía aquí: {cbor}

\ No newline at end of file +{step_hinfo}

{tx} Selecciona '{tool2}' en la barra de herramientas y construye una vía de tren que conecte los dos puntos entre {w1} y {w2}.

Vías de tren

Hay varios tipos de vías de tren para diferentes velocidades (desde 60 hasta 200 km/h), deberías tener en cuenta que las vías de alta velocidad son mucho más caras, así que te recomendamos usar vías de 60 o 80 km/h...

Conecta la vía aquí: {cbor}

\ No newline at end of file diff --git a/es/chapter_03/02_3-3.txt b/es/chapter_03/02_3-3.txt index ee26d7c..9631dc3 100644 --- a/es/chapter_03/02_3-3.txt +++ b/es/chapter_03/02_3-3.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Selecciona '{tool2}' en la barra de herramientas y elige la herramiento de vías de tren para construir una via de tren que conecte los dos puntos entre {w3} y {w4}.

Conecta la vía aquí: {cbor}.

\ No newline at end of file +{step_hinfo}

{tx} Selecciona '{tool2}' en la barra de herramientas y elige la herramiento de vías de tren para construir una via de tren que conecte los dos puntos entre {w3} y {w4}.

Conecta la vía aquí: {cbor}.

\ No newline at end of file diff --git a/es/chapter_03/03_1-2.txt b/es/chapter_03/03_1-2.txt index 987ee0f..192f1c2 100644 --- a/es/chapter_03/03_1-2.txt +++ b/es/chapter_03/03_1-2.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Selecciona '{tool2}' en la barra de herramientas y construye una estación de mercancías ({tile} casillas de largo) cerca de {f2}.

Estaciones de mercancías


Para saber si una estación acepta mercancías, sitúa el cursor sobre el botón de la barra de herramientas y verás aparecer una ventana de información. Una estación compuesta de varios edificios aceptará mercancía siempre que uno de sus edificios lo haga.

\ No newline at end of file +{step_hinfo}

{tx} Selecciona '{tool2}' en la barra de herramientas y construye una estación de mercancías ({tile} casillas de largo) cerca de {f2}.

Estaciones de mercancías


Para saber si una estación acepta mercancías, sitúa el cursor sobre el botón de la barra de herramientas y verás aparecer una ventana de información. Una estación compuesta de varios edificios aceptará mercancía siempre que uno de sus edificios lo haga.

\ No newline at end of file diff --git a/es/chapter_03/03_2-2.txt b/es/chapter_03/03_2-2.txt index c87917d..1493778 100644 --- a/es/chapter_03/03_2-2.txt +++ b/es/chapter_03/03_2-2.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Selecciona '{tool2}' en la barra de herramientas y construye una estación de mercancías ({tile} casillas de largo) cerca de {f1}.

\ No newline at end of file +{step_hinfo}

{tx} Selecciona '{tool2}' en la barra de herramientas y construye una estación de mercancías ({tile} casillas de largo) cerca de {f1}.

\ No newline at end of file diff --git a/es/chapter_03/04_1-3.txt b/es/chapter_03/04_1-3.txt index 90faf28..5a59e3e 100644 --- a/es/chapter_03/04_1-3.txt +++ b/es/chapter_03/04_1-3.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Selecciona '{tool2}' en la barra de herramientas y construye una vía de tren desde {w1} hasta {w2}.

\ No newline at end of file +{step_hinfo}

{tx} Selecciona '{tool2}' en la barra de herramientas y construye una vía de tren desde {w1} hasta {w2}.

\ No newline at end of file diff --git a/es/chapter_03/04_2-3.txt b/es/chapter_03/04_2-3.txt index 751e408..e666e3e 100644 --- a/es/chapter_03/04_2-3.txt +++ b/es/chapter_03/04_2-3.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Selecciona '{tool2}' en la barra de herramientas y construye un Depósito de Trenes en {dep}.

\ No newline at end of file +{step_hinfo}

{tx} Selecciona '{tool2}' en la barra de herramientas y construye un Depósito de Trenes en {dep}.

\ No newline at end of file diff --git a/es/chapter_03/04_3-3.txt b/es/chapter_03/04_3-3.txt index 8c98edc..765d904 100644 --- a/es/chapter_03/04_3-3.txt +++ b/es/chapter_03/04_3-3.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Pulsa con la '{tool1}' sobre el Depósito de Trenes {dep} para avanzar al siguiente paso.

\ No newline at end of file +{step_hinfo}

{tx} Pulsa con la '{tool1}' sobre el Depósito de Trenes {dep} para avanzar al siguiente paso.

\ No newline at end of file diff --git a/es/chapter_03/06_1-5.txt b/es/chapter_03/06_1-5.txt index af86293..d5ac751 100644 --- a/es/chapter_03/06_1-5.txt +++ b/es/chapter_03/06_1-5.txt @@ -1 +1 @@ -

Necesitas transportar {good2} desde {f2} hasta {f3} en {cy1}.

{tx} Selecciona '{tool2}' en la barra de herramientas y elige la herramienta de vías para conectar los dos puntos entre {w1} y {w2}.

Conecta la vía aquí: {cbor}

\ No newline at end of file +

Necesitas transportar {good2} desde {f2} hasta {f3} en {cy1}.

{tx} Selecciona '{tool2}' en la barra de herramientas y elige la herramienta de vías para conectar los dos puntos entre {w1} y {w2}.

Conecta la vía aquí: {cbor}

\ No newline at end of file diff --git a/es/chapter_03/06_2-5.txt b/es/chapter_03/06_2-5.txt index f093060..5aa0ece 100644 --- a/es/chapter_03/06_2-5.txt +++ b/es/chapter_03/06_2-5.txt @@ -1 +1 @@ -

Necesitas transportar {good2} desde {f2} hasta {f3} en {cy1}.

{tx} Selecciona '{tool2}' en la barra de herramientas y construye un túnel en {tu}.

\ No newline at end of file +

Necesitas transportar {good2} desde {f2} hasta {f3} en {cy1}.

{tx} Selecciona '{tool2}' en la barra de herramientas y construye un túnel en {tu}.

\ No newline at end of file diff --git a/es/chapter_03/06_3-5.txt b/es/chapter_03/06_3-5.txt index 7d4f61e..b5d821c 100644 --- a/es/chapter_03/06_3-5.txt +++ b/es/chapter_03/06_3-5.txt @@ -1 +1 @@ -

Necesitas transportar {good2} desde {f2} hasta {f3} en {cy1}.

{tx} Selecciona '{tool2}' en la barra de herramientas y elige la herramienta de vías para conectar los dos puntos entre {w3} y {w4}.

Connecta la vía aquí: {cbor}

\ No newline at end of file +

Necesitas transportar {good2} desde {f2} hasta {f3} en {cy1}.

{tx} Selecciona '{tool2}' en la barra de herramientas y elige la herramienta de vías para conectar los dos puntos entre {w3} y {w4}.

Connecta la vía aquí: {cbor}

\ No newline at end of file diff --git a/es/chapter_03/06_4-5.txt b/es/chapter_03/06_4-5.txt index 9790323..81da979 100644 --- a/es/chapter_03/06_4-5.txt +++ b/es/chapter_03/06_4-5.txt @@ -1 +1 @@ -

Necesitas transportar {good2} desde {f2} hasta {f3} en {cy1}.

{tx} Selecciona '{tool2}' en la barra de herramientas y construye una estación de mercancías ({tile} casillas de largo) cerca de {f3}.

Estaciones de mercancía

Para saber si una estación acepta mercancías, sitúa el cursor sobre el botón de la barra de herramientas y verás aparecer una ventana de información. Una estación compuesta de varios edificios aceptará mercancía siempre que uno de sus edificios lo haga.

\ No newline at end of file +

Necesitas transportar {good2} desde {f2} hasta {f3} en {cy1}.

{tx} Selecciona '{tool2}' en la barra de herramientas y construye una estación de mercancías ({tile} casillas de largo) cerca de {f3}.

Estaciones de mercancía

Para saber si una estación acepta mercancías, sitúa el cursor sobre el botón de la barra de herramientas y verás aparecer una ventana de información. Una estación compuesta de varios edificios aceptará mercancía siempre que uno de sus edificios lo haga.

\ No newline at end of file diff --git a/es/chapter_03/06_5-5.txt b/es/chapter_03/06_5-5.txt index d0fdea5..0b1670e 100644 --- a/es/chapter_03/06_5-5.txt +++ b/es/chapter_03/06_5-5.txt @@ -1 +1 @@ -

Necesitas transportar {good2} desde {f2} hasta {f3} en {cy1}.

{tx} Selecciona '{tool2}' en la barra de herramientas y construye una estación de mercancías ({tile} casillas de largo) cerca de {f2}.

\ No newline at end of file +

Necesitas transportar {good2} desde {f2} hasta {f3} en {cy1}.

{tx} Selecciona '{tool2}' en la barra de herramientas y construye una estación de mercancías ({tile} casillas de largo) cerca de {f2}.

\ No newline at end of file diff --git a/es/chapter_03/08_1-5.txt b/es/chapter_03/08_1-5.txt index d5cc6c9..430ebb7 100644 --- a/es/chapter_03/08_1-5.txt +++ b/es/chapter_03/08_1-5.txt @@ -1 +1 @@ -

El Servicio Público necesita que completes la red ferroviaria que recorre las ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Selecciona '{tool2}' desde la barra de herramientas y use las vías para conectar los dos puntos entre {w1} y {w2}.

Conecta la vía de tren aqui: {cbor}.

\ No newline at end of file +

El Servicio Público necesita que completes la red ferroviaria que recorre las ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Selecciona '{tool2}' desde la barra de herramientas y use las vías para conectar los dos puntos entre {w1} y {w2}.

Conecta la vía de tren aqui: {cbor}.

\ No newline at end of file diff --git a/es/chapter_03/08_2-5.txt b/es/chapter_03/08_2-5.txt index e3851e2..27840e0 100644 --- a/es/chapter_03/08_2-5.txt +++ b/es/chapter_03/08_2-5.txt @@ -1 +1 @@ -

El Servicio Público necesita que completes la red ferroviaria que recorre las ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Selecciona '{tool2}' desde la barra de herramientas y construye un puente en {br}.

\ No newline at end of file +

El Servicio Público necesita que completes la red ferroviaria que recorre las ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Selecciona '{tool2}' desde la barra de herramientas y construye un puente en {br}.

\ No newline at end of file diff --git a/es/chapter_03/08_3-5.txt b/es/chapter_03/08_3-5.txt index 1fb69c5..2f1bd48 100644 --- a/es/chapter_03/08_3-5.txt +++ b/es/chapter_03/08_3-5.txt @@ -1 +1 @@ -

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Selecciona '{tool2}' en la barra de herramientas y construye la entrada del túnel {t1} manteniendo presionada la tecla Ctrl

Puedes activar la Vista Subterránea presionando las teclas [Shift] + U o entrando en los ajustes de Pantalla.
Puedes activar la Vista Subterránea por Capas presionando las teclas [Ctrl] + U, desde la Barra de Herramientas, o entrando en los ajustes de Pantalla.
Con la Vista Subterránea por Capas activada puedes:
[1] Bajar un nivel pulsando [{plus}].
[2] Subir un nivel pulsando [{minus}].

Nota: Cuando construyes estructuras complejas en varias capas, es recomendable usar la Vista Subterránea por Capas.

\ No newline at end of file +

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Selecciona '{tool2}' en la barra de herramientas y construye la entrada del túnel {t1} manteniendo presionada la tecla Ctrl

Puedes activar la Vista Subterránea presionando las teclas [Shift] + U o entrando en los ajustes de Pantalla.
Puedes activar la Vista Subterránea por Capas presionando las teclas [Ctrl] + U, desde la Barra de Herramientas, o entrando en los ajustes de Pantalla.
Con la Vista Subterránea por Capas activada puedes:
[1] Bajar un nivel pulsando [{plus}].
[2] Subir un nivel pulsando [{minus}].

Nota: Cuando construyes estructuras complejas en varias capas, es recomendable usar la Vista Subterránea por Capas.

\ No newline at end of file diff --git a/es/chapter_03/08_4-5.txt b/es/chapter_03/08_4-5.txt index 86fc78f..ad72fef 100644 --- a/es/chapter_03/08_4-5.txt +++ b/es/chapter_03/08_4-5.txt @@ -1 +1 @@ -

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Construcción de túneles con pendientes:
[1] Activa la Vista Subterránea por Capas y ajusta el nivel de la capa a {lev}.
[2] Ahora construye un segmento de túnel en {tunn}.
[3] Eleva el terreno usando la {tool3} en {tunn}.

Debes repetir este proceso hasta obtener la altura correcta [Z = {mx_lvl}]:

Lista de túneles:
{list}

Puedes activar la Vista Subterránea por Capas presionando [CTRL] + U o yendo a la configuración de Pantalla.
Con la Vista Subterránea por Capas activada puedes:
[1] Bajar un nivel pulsando [{plus}].
[2] Subir un nivel pulsando [{minus}].

Nota: Cuando construyes estructuras complejas en varias capas, es recomendable usar la Vista Subterránea por Capas.

Advertencia: En este punto, debes mantener presionada la tecla Ctrl para extender el túnel.

\ No newline at end of file +

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Construcción de túneles con pendientes:
[1] Activa la Vista Subterránea por Capas y ajusta el nivel de la capa a {lev}.
[2] Ahora construye un segmento de túnel en {tunn}.
[3] Eleva el terreno usando la {tool3} en {tunn}.

Debes repetir este proceso hasta obtener la altura correcta [Z = {mx_lvl}]:

Lista de túneles:
{list}

Puedes activar la Vista Subterránea por Capas presionando [CTRL] + U o yendo a la configuración de Pantalla.
Con la Vista Subterránea por Capas activada puedes:
[1] Bajar un nivel pulsando [{plus}].
[2] Subir un nivel pulsando [{minus}].

Nota: Cuando construyes estructuras complejas en varias capas, es recomendable usar la Vista Subterránea por Capas.

Advertencia: En este punto, debes mantener presionada la tecla Ctrl para extender el túnel.

\ No newline at end of file diff --git a/es/chapter_03/08_5-5.txt b/es/chapter_03/08_5-5.txt index c3d3d5e..23850c9 100644 --- a/es/chapter_03/08_5-5.txt +++ b/es/chapter_03/08_5-5.txt @@ -1 +1 @@ -

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.,.

{tx} Ajusta el nivel de la capa a {lev}, y conecta el túnel {t1} con la otra entrada en {t2}.

Puedes activar la Vista Subterránea presionando [Mayús] + U o en la configuración de Pantalla.
Puedes activar la Vista Subterránea por Capas presionando [Ctrl] + U o en la configuración de Pantalla.

Con la Vista Subterránea por Capas activada puedes:
[1] Bajar un nivel pulsando [{plus}].
[2] Subir un nivel pulsando [{minus}].

Nota: Cuando construyes estructuras complejas en varias capas, es recomendable usar la Vista Subterránea por Capas.

Advertencia: En este punto, debe mantener la tecla Ctrl presionada para extender el túnel.

\ No newline at end of file +

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.,.

{tx} Ajusta el nivel de la capa a {lev}, y conecta el túnel {t1} con la otra entrada en {t2}.

Puedes activar la Vista Subterránea presionando [Mayús] + U o en la configuración de Pantalla.
Puedes activar la Vista Subterránea por Capas presionando [Ctrl] + U o en la configuración de Pantalla.

Con la Vista Subterránea por Capas activada puedes:
[1] Bajar un nivel pulsando [{plus}].
[2] Subir un nivel pulsando [{minus}].

Nota: Cuando construyes estructuras complejas en varias capas, es recomendable usar la Vista Subterránea por Capas.

Advertencia: En este punto, debe mantener la tecla Ctrl presionada para extender el túnel.

\ No newline at end of file diff --git a/es/chapter_03/09_1-2.txt b/es/chapter_03/09_1-2.txt index 3b1c277..6251d93 100644 --- a/es/chapter_03/09_1-2.txt +++ b/es/chapter_03/09_1-2.txt @@ -1 +1 @@ -

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Selecciona '{tool2}' en la barra de herramientas y elige una herramienta de vías de tren para conectar los dos puntos entre {w1} y {w2}.

Lista de vías:
{list}

Consejo: Puedes conectarlos simplemente pulsando sobre {w1} y {w2}.

Conecta la vía de tren aquí: {cbor}.

\ No newline at end of file +

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Selecciona '{tool2}' en la barra de herramientas y elige una herramienta de vías de tren para conectar los dos puntos entre {w1} y {w2}.

Lista de vías:
{list}

Consejo: Puedes conectarlos simplemente pulsando sobre {w1} y {w2}.

Conecta la vía de tren aquí: {cbor}.

\ No newline at end of file diff --git a/es/chapter_03/09_2-2.txt b/es/chapter_03/09_2-2.txt index 29d95dd..4b9dcd2 100644 --- a/es/chapter_03/09_2-2.txt +++ b/es/chapter_03/09_2-2.txt @@ -1 +1 @@ -

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Selecciona '{tool2}' en la barra de herramientas y construye Señales en los puntos indicados.
{sig}

Nota: Pulsa varias veces con la herramienta de señales para ajustar la dirección apropiadamente.

\ No newline at end of file +

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Selecciona '{tool2}' en la barra de herramientas y construye Señales en los puntos indicados.
{sig}

Nota: Pulsa varias veces con la herramienta de señales para ajustar la dirección apropiadamente.

\ No newline at end of file diff --git a/es/chapter_03/10_1-4.txt b/es/chapter_03/10_1-4.txt index 85a0f76..560bf30 100644 --- a/es/chapter_03/10_1-4.txt +++ b/es/chapter_03/10_1-4.txt @@ -1 +1 @@ -

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Selecciona '{tool2}' en la barra de herramientas y elige la herramienta de Catenaria para electrificar todas las vías de tren. Usa esta herramienta pulsando primero en un punto de partida y luego en un punto final.
Nota: La construcción de catenarias tiene en cuenta la dirección de las señales.

Vías de tren sin electrificar: {cbor}

\ No newline at end of file +

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Selecciona '{tool2}' en la barra de herramientas y elige la herramienta de Catenaria para electrificar todas las vías de tren. Usa esta herramienta pulsando primero en un punto de partida y luego en un punto final.
Nota: La construcción de catenarias tiene en cuenta la dirección de las señales.

Vías de tren sin electrificar: {cbor}

\ No newline at end of file diff --git a/es/chapter_03/10_2-4.txt b/es/chapter_03/10_2-4.txt index 3007242..a742f7d 100644 --- a/es/chapter_03/10_2-4.txt +++ b/es/chapter_03/10_2-4.txt @@ -1 +1 @@ -

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Selecciona '{tool2}' en la barra de herramientas y elige la herramienta de Catenaria para electrificar el túnel todas las vías de tren.
Usa esta herramienta pulsando sobre un punto de inicio y después sobre un punto final.

Nota: La construcción de catenarias tiene en cuenta la dirección de las señales.

Vías de tren sin electrificar: {cbor}

\ No newline at end of file +

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Selecciona '{tool2}' en la barra de herramientas y elige la herramienta de Catenaria para electrificar el túnel todas las vías de tren.
Usa esta herramienta pulsando sobre un punto de inicio y después sobre un punto final.

Nota: La construcción de catenarias tiene en cuenta la dirección de las señales.

Vías de tren sin electrificar: {cbor}

\ No newline at end of file diff --git a/es/chapter_03/10_3-4.txt b/es/chapter_03/10_3-4.txt index a8439fc..6b38cc1 100644 --- a/es/chapter_03/10_3-4.txt +++ b/es/chapter_03/10_3-4.txt @@ -1 +1 @@ -

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Selecciona '{tool2}' en la barra de herramientas y elige la herramienta de Catenaria para electrificar la vía de tren del Depósito de Trenes {dep}

Nota: Los vehículos eléctricos solo aparecen cuando la vía del depósito está electrificada.

\ No newline at end of file +

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

{tx} Selecciona '{tool2}' en la barra de herramientas y elige la herramienta de Catenaria para electrificar la vía de tren del Depósito de Trenes {dep}

Nota: Los vehículos eléctricos solo aparecen cuando la vía del depósito está electrificada.

\ No newline at end of file diff --git a/es/chapter_03/10_4-4.txt b/es/chapter_03/10_4-4.txt index 751e408..e666e3e 100644 --- a/es/chapter_03/10_4-4.txt +++ b/es/chapter_03/10_4-4.txt @@ -1 +1 @@ -{step_hinfo}

{tx} Selecciona '{tool2}' en la barra de herramientas y construye un Depósito de Trenes en {dep}.

\ No newline at end of file +{step_hinfo}

{tx} Selecciona '{tool2}' en la barra de herramientas y construye un Depósito de Trenes en {dep}.

\ No newline at end of file diff --git a/es/chapter_03/goal.txt b/es/chapter_03/goal.txt index 0c4ad8c..49e5d6b 100644 --- a/es/chapter_03/goal.txt +++ b/es/chapter_03/goal.txt @@ -1 +1 @@ -

En este capitulo los Trenes son protagonistas y con ellos aprenderemos a transportar mercancías y pasajeros.

{scr}

{txtst_01}Paso A - Un Vistazo a las Fábricas
{step_01}

{txtst_02}Paso B - Conectando a los Proveedores
{step_02}

{txtst_03}Paso C - Construyendo Estaciones
{step_03}

{txtst_04}Paso D - Construyendo un Depósito
{step_04}

{txtst_05}Paso E - El Primer Tren
{step_05}

{txtst_06}Paso F - Conectando al Consumidor
{step_06}

{txtst_07}Paso G - El segundo Tren
{step_07}

{txtst_08}Paso H - Construcción Subterránea
{step_08}

{txtst_09}Paso I - Conectando las Estaciones
{step_09}

{txtst_10}Paso J - Vías Electrificadas
{step_10}

{txtst_11}Paso K - Trenes Eléctricos
{step_11}

\ No newline at end of file +

En este capitulo los Trenes son protagonistas y con ellos aprenderemos a transportar mercancías y pasajeros.

{scr}

{txtst_01}Paso A - Un Vistazo a las Fábricas
{step_01}

{txtst_02}Paso B - Conectando a los Proveedores
{step_02}

{txtst_03}Paso C - Construyendo Estaciones
{step_03}

{txtst_04}Paso D - Construyendo un Depósito
{step_04}

{txtst_05}Paso E - El Primer Tren
{step_05}

{txtst_06}Paso F - Conectando al Consumidor
{step_06}

{txtst_07}Paso G - El segundo Tren
{step_07}

{txtst_08}Paso H - Construcción Subterránea
{step_08}

{txtst_09}Paso I - Conectando las Estaciones
{step_09}

{txtst_10}Paso J - Vías Electrificadas
{step_10}

{txtst_11}Paso K - Trenes Eléctricos
{step_11}

\ No newline at end of file diff --git a/es/chapter_03/goal_step_05.txt b/es/chapter_03/goal_step_05.txt index c95c19f..d14be3c 100644 --- a/es/chapter_03/goal_step_05.txt +++ b/es/chapter_03/goal_step_05.txt @@ -1 +1 @@ -

Para la producción de {good2}, necesitarás transportar {good1} desde {f1} hasta {f2}.

Ahora debe elegir un vehículo adecuado para transportar {good1} hasta {f2}.
[1] Abre el depósito de trenes y elige una locomotora {loc1} en la pestaña de Locomotoras.
[2] Ahora selecciona {wag} vagones para {good1} en la pestaña de Vagones (El tren no debe ser más grande que {tile} casillas).
[3] Presiona Itinerario, crea una nueva línea y selecciona la estación de tren cerca de {f1}.
--> Configura Carga mínima al {load}%.
[4] Selecciona la estación cerca de {f2} y presiona Arrancar.

Consejo: Puede usar el Filtro en la ventana del depósito para mostrar solo los vehículos que pueden transportar {good1}.

Se avanza al siguiente paso cuando {f2} reciba {t_reach}t de {good1}.

Consejo: Pulse la tecla "W" (letra may¨²scula) para activar el avance r¨¢pido.

Cantidad recibida: {reached} {g1_metric} {good1}

\ No newline at end of file +

Para la producción de {good2}, necesitarás transportar {good1} desde {f1} hasta {f2}.

Ahora debe elegir un vehículo adecuado para transportar {good1} hasta {f2}.
[1] Abre el depósito de trenes y elige una locomotora {loc1} en la pestaña de Locomotoras.
[2] Ahora selecciona {wag} vagones para {good1} en la pestaña de Vagones (El tren no debe ser más grande que {tile} casillas).
[3] Presiona Itinerario, crea una nueva línea y selecciona la estación de tren {stnam1}.
--> Configura Carga mínima al {load}%.
[4] Selecciona la estación {stnam2} y presiona Arrancar.

Consejo: Puede usar el Filtro en la ventana del depósito para mostrar solo los vehículos que pueden transportar {good1}.

Se avanza al siguiente paso cuando {f2} reciba {t_reach} de {good1}.

Consejo: Pulse la tecla "W" (letra may¨²scula) para activar el avance r¨¢pido.

Cantidad recibida: {reached} {g1_metric} {good1}

\ No newline at end of file diff --git a/es/chapter_03/goal_step_07.txt b/es/chapter_03/goal_step_07.txt index 9168b4c..cc54d67 100644 --- a/es/chapter_03/goal_step_07.txt +++ b/es/chapter_03/goal_step_07.txt @@ -1 +1 @@ -

Necesitas transportar {good2} desde {f2} hasta {f3} en {cy1}.

[1] Construye un tramo de vía de tren entre {w1} y {w2}.
[2] Coloca el Depósito de Trenes en: {way1}.

Ahora debes comprar una locomotora, presiona en la pestaña Locomotoras y selecciona una locomotora {loc2}. Añade {wag} vagones que puedan transportar {good2} en la pestaña de Vagones.

En la ventana Itinerario selecciona la estación en {f2}.
--> Configura Carga mínima al {load}%.
Ahora selecciona la estación en {f3} y presiona Arrancar.

Consejo: Usa el filtro para mostrar solo los vagones para {good2}.

Se avanza al siguiente paso cuando el {f3} reciba {t_reach} {g1_metric} de {good2}.

Consejo: Pulse la tecla "W" (letra may¨²scula) para activar el avance r¨¢pido.

Cantidad recibida: {reached} {g1_metric} {good2}

\ No newline at end of file +

Necesitas transportar {good2} desde {f2} hasta {f3} en {cy1}.

[1] Construye un tramo de vía de tren entre {w1} y {w2}.
[2] Coloca el Depósito de Trenes en: {way1}.

Ahora debes comprar una locomotora, presiona en la pestaña Locomotoras y selecciona una locomotora {loc2}. Añade {wag} vagones que puedan transportar {good2} en la pestaña de Vagones.

En la ventana Itinerario selecciona la {stnam1}.
--> Configura Carga mínima al {load}%.
Ahora selecciona la {stnam2} y presiona Arrancar.

Consejo: Usa el filtro para mostrar solo los vagones para {good2}.

Se avanza al siguiente paso cuando el {f3} reciba {t_reach} {g1_metric} de {good2}.

Consejo: Pulse la tecla "W" (letra may¨²scula) para activar el avance r¨¢pido.

Cantidad recibida: {reached} {g1_metric} {good2}

\ No newline at end of file diff --git a/es/chapter_03/goal_step_11.txt b/es/chapter_03/goal_step_11.txt index ac37188..5b5aa46 100644 --- a/es/chapter_03/goal_step_11.txt +++ b/es/chapter_03/goal_step_11.txt @@ -1 +1 @@ -

El Servicio Público necesita que completes la red ferroviaria que recorre las ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

Preparando los Trenes eléctricos.

Los trenes electrificados:

El primer paso para usar estos trenes es electrificar todas la vías, luego en la ventana del depósito selecciona la pestaña Eléctricos.

Ahora debes ensamblar un tren para Pasajeros.
[1] Después de abrir la ventana del depósito, selecciona un tren {loc3} en la pestaña de locomotoras.
[2] Ahora selecciona 6 vagones para pasajeros en la pestaña Trenes de pasajeros (no deben exceder las 4 Casillas de Estación).

Consejo: Usa el filtro para mostrar solo los vehículos de pasajeros.

Nota: Los vehículos eléctricos solo aparecen cuando la vía del depósito está electrificada.

[3] Pulsa sobre el botón [Itinerario] para configurar la siguiente ruta:
{list}

[4] Después de añadir todas las estaciones, selecciona la estación {stnam} en la lista y configúrala de la siguiente forma:
--> [a] Configura Carga mínima al {load}%.
--> [b] Configura Salir después de a {wait}.

Copiar Vehículo:

Este botón permite copiar el vehículo, incluyendo su itinerario o linea.

- Usa el boton [Copiar Vehículo] "{cnr} veces" para hacer duplicados exactos del tren eléctrico.

Arrancar los trenes:

Una vez que tengas los [{cnr}] trenes correctamente configurados, es momento de presionar el botón [Arrancar].

Se avanza al siguiente capitulo cuando todos los vehículos estén en circulación.

\ No newline at end of file +

El Servicio Público necesita que completes la red ferroviaria que recorre las ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

Preparando los Trenes eléctricos.

Los trenes electrificados:

El primer paso para usar estos trenes es electrificar todas la vías, luego en la ventana del depósito selecciona la pestaña Eléctricos.

Ahora debes ensamblar un tren para Pasajeros.
[1] Después de abrir la ventana del depósito, selecciona un tren {loc3} en la pestaña de locomotoras.
[2] Ahora selecciona 6 vagones para pasajeros en la pestaña Trenes de pasajeros (no deben exceder las 4 Casillas de Estación).

Consejo: Usa el filtro para mostrar solo los vehículos de pasajeros.

Nota: Los vehículos eléctricos solo aparecen cuando la vía del depósito está electrificada.

[3] Pulsa sobre el botón [Itinerario] para configurar la siguiente ruta:
{list}

[4] Después de añadir todas las estaciones, selecciona la estación {stnam} en la lista y configúrala de la siguiente forma:
--> [a] Configura Carga mínima al {load}%.
--> [b] Configura Salir después de a {wait}.

Copiar Vehículo:

Este botón permite copiar el vehículo, incluyendo su itinerario o linea.

- Usa el boton [Copiar Vehículo] "{cnr} veces" para hacer duplicados exactos del tren eléctrico.

Arrancar los trenes:

Una vez que tengas los [{cnr}] trenes correctamente configurados, es momento de presionar el botón [Arrancar].

Se avanza al siguiente capitulo cuando todos los vehículos estén en circulación.

\ No newline at end of file diff --git a/es/chapter_03/step_1-4_hinfo.txt b/es/chapter_03/step_1-4_hinfo.txt index a31d3bb..8e06057 100644 --- a/es/chapter_03/step_1-4_hinfo.txt +++ b/es/chapter_03/step_1-4_hinfo.txt @@ -1 +1 @@ -

Para la producción de {good2}, necesitarás transportar {good1} desde {f1} hasta {f2}.

\ No newline at end of file +

Para la producción de {good2}, necesitarás transportar {good1} desde {f1} hasta {f2}.

\ No newline at end of file diff --git a/es/chapter_03/step_8-10_hinfo.txt b/es/chapter_03/step_8-10_hinfo.txt index 4133742..3d190a6 100644 --- a/es/chapter_03/step_8-10_hinfo.txt +++ b/es/chapter_03/step_8-10_hinfo.txt @@ -1 +1 @@ -

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

\ No newline at end of file +

El Servicio Público necesita que completes la red ferroviaria que recorre las siguientes ciudades de:
{cy2} {co2}, {cy1} {co1}, {cy3} {co3}, {cy4} {co4}, {cy5} {co5}.

\ No newline at end of file diff --git a/es/chapter_04/01_1-2.txt b/es/chapter_04/01_1-2.txt index 64f54d2..db290cb 100644 --- a/es/chapter_04/01_1-2.txt +++ b/es/chapter_04/01_1-2.txt @@ -1 +1 @@ -

Se necesita transportar hidrocarburos ({good1}) desde {f1} hasta {f3} para producir {good2}

{tx} usa la Herramienta de Inspección sobre {f3} para mostrar detalles.

\ No newline at end of file +

Se necesita transportar hidrocarburos ({good1}) desde {f1} hasta {f3} para producir {good2}

{tx} usa la Herramienta de Inspección sobre {f3} para mostrar detalles.

\ No newline at end of file diff --git a/es/chapter_04/01_2-2.txt b/es/chapter_04/01_2-2.txt index 019ebbe..1ebb157 100644 --- a/es/chapter_04/01_2-2.txt +++ b/es/chapter_04/01_2-2.txt @@ -1 +1 @@ -

Se necesita transportar hidrocarburos ({good1}) desde {f1} hasta {f3} para producir {good2}

{tx} Los detalles son:

Producción máxima por mes:
Muestra la capacidad de producción que tiene la industria. La producción puede ser aumentada transportando pasajeros, correo o electricidad a la fábrica, dependiendo de lo que necesite.

Producción:
Muestra qué tipos de bienes de producción produce la fábrica, la cantidad de producción almacenada, y el rendimiento de la producción por cada unidad de materia prima.

Consumo:
Muestra la materia prima que la fábrica necesita, la cantidad almacenada o en camino y cuánta materia prima hace falta para producir una unidad de producto.

Consumidor/Proveedores:
Muestra las fabricas conectadas (sólo puedes transportar mercancías a industrias conectadas).

Los trabajadores viven en:
Muestra las ciudades de donde provienen los trabajadores, su nivel de pasajeros, y su nivel de correo.

Nota: Transportar pasajeros a la fábrica no es obligatorio para que la fábrica produzca, pero hacerlo incrementará la producción.

Se avanza al siguiente paso pulsando sobre {f1} usando la Herramienta de Inspección.

\ No newline at end of file +

Se necesita transportar hidrocarburos ({good1}) desde {f1} hasta {f3} para producir {good2}

{tx} Los detalles son:

Producción máxima por mes:
Muestra la capacidad de producción que tiene la industria. La producción puede ser aumentada transportando pasajeros, correo o electricidad a la fábrica, dependiendo de lo que necesite.

Producción:
Muestra qué tipos de bienes de producción produce la fábrica, la cantidad de producción almacenada, y el rendimiento de la producción por cada unidad de materia prima.

Consumo:
Muestra la materia prima que la fábrica necesita, la cantidad almacenada o en camino y cuánta materia prima hace falta para producir una unidad de producto.

Consumidor/Proveedores:
Muestra las fabricas conectadas (sólo puedes transportar mercancías a industrias conectadas).

Los trabajadores viven en:
Muestra las ciudades de donde provienen los trabajadores, su nivel de pasajeros, y su nivel de correo.

Nota: Transportar pasajeros a la fábrica no es obligatorio para que la fábrica produzca, pero hacerlo incrementará la producción.

Se avanza al siguiente paso pulsando sobre {f1} usando la Herramienta de Inspección.

\ No newline at end of file diff --git a/es/chapter_04/05_2-3.txt b/es/chapter_04/05_2-3.txt index a255d9c..5450116 100644 --- a/es/chapter_04/05_2-3.txt +++ b/es/chapter_04/05_2-3.txt @@ -1 +1 @@ -

Se necesita transportar {good2} desde {f3} hasta {f4} para el consumidor final

{tx} Construye un Muelle de Canal de mercancías en {dock}.

\ No newline at end of file +

Se necesita transportar {good2} desde {f3} hasta {f4} para el consumidor final

{tx} Construye un {cdock} de mercancías en {dock}.

\ No newline at end of file diff --git a/es/chapter_04/05_3-3.txt b/es/chapter_04/05_3-3.txt index fd3b557..07a3aaa 100644 --- a/es/chapter_04/05_3-3.txt +++ b/es/chapter_04/05_3-3.txt @@ -1 +1 @@ -

Se necesita transportar {good2} desde {f3} hasta {f4} para el consumidor final

{tx} Conectando al consumidor {f4}

Se necesitan {all_cov} barcos para suministrar gas a {f4}.

[1] En la ventana del Astillero pulsa sobre la pestaña Barcos, luego selecciona el {sh}.
[2] Ahora debes configurar una línea (Sirve en línea), selecciona Crear línea nueva.
[3] Selecciona el muelle en {f3} y ajuste la Carga mínima al {load}%
[4] Selecciona el muelle en {f4} y cierre la ventana Itinerario
[5] Presiona el botón Copiar vehículo hasta llegar a {all_cov} convoys/barcos.
[6] Por último, presiona el botón Arrancar.

Consejo: Presiona [Ctrl] + pulsa el botón [Arrancar] para que todos los vehículos salgan del depósito.

Se avanza al siguiente paso cuando todos los barcos estén en circulación.

Barcos en circulación: {cir}/{all_cov}

\ No newline at end of file +

Se necesita transportar {good2} desde {f3} hasta {f4} para el consumidor final

{tx} Conectando al consumidor {f4}

Se necesitan {all_cov} barcos para suministrar gas a {f4}.

[1] En la ventana del Astillero pulsa sobre la pestaña Barcos, luego selecciona el {sh}.
[2] Ahora debes configurar una línea (Sirve en línea), selecciona Crear línea nueva.
[3] Selecciona el muelle en {f3} y ajuste la Carga mínima al {load}%
[4] Selecciona el muelle en {f4} y cierre la ventana Itinerario
[5] Presiona el botón Copiar vehículo hasta llegar a {all_cov} convoys/barcos.
[6] Por último, presiona el botón Arrancar.

Consejo: Presiona [Ctrl] + pulsa el botón [Arrancar] para que todos los vehículos salgan del depósito.

Se avanza al siguiente paso cuando todos los barcos estén en circulación.

Barcos en circulación: {cir}/{all_cov}

\ No newline at end of file diff --git a/es/chapter_04/goal.txt b/es/chapter_04/goal.txt index 2e27ebc..645d9aa 100644 --- a/es/chapter_04/goal.txt +++ b/es/chapter_04/goal.txt @@ -1 +1 @@ -

En este capítulo los Barcos son protagonistas y con ellos vamos a transportar mercancías, pasajeros y correo.

{scr}

{txtst_01}Paso A - Un Vistazo a las Fábricas
{step_01}

{txtst_02}Paso B - Colocando Muelles
{step_02}

{txtst_03}Paso C - Colocando Astilleros
{step_03}

{txtst_04}Paso D - Conectando a los Proveedores
{step_04}

{txtst_05}Paso E - Conectando al Consumidor
{step_05}

{txtst_06}Paso F - Muelles de Pasajeros
{step_06}

{txtst_07}Paso G - Conectando Atracciones Turísticas
{step_07}

\ No newline at end of file +

En este capítulo los Barcos son protagonistas y con ellos vamos a transportar mercancías, pasajeros y correo.

{scr}

{txtst_01}Paso A - Un Vistazo a las Fábricas
{step_01}

{txtst_02}Paso B - Colocando Muelles
{step_02}

{txtst_03}Paso C - Colocando Astilleros
{step_03}

{txtst_04}Paso D - Conectando a los Proveedores
{step_04}

{txtst_05}Paso E - Conectando al Consumidor
{step_05}

{txtst_06}Paso F - Muelles de Pasajeros
{step_06}

{txtst_07}Paso G - Conectando Atracciones Turísticas
{step_07}

\ No newline at end of file diff --git a/es/chapter_04/goal_step_02.txt b/es/chapter_04/goal_step_02.txt index 712a078..1a276b0 100644 --- a/es/chapter_04/goal_step_02.txt +++ b/es/chapter_04/goal_step_02.txt @@ -1 +1 @@ -

Se necesita transportar hidrocarburos ({good1}) desde {f1} hasta {f3} para producir {good2}

Coloca todos los Muelles de mercancías en las posiciones idicadas:
{dock}

Se avanza al siguiente paso cuando todos los muelles estén listos.

\ No newline at end of file +

Se necesita transportar hidrocarburos ({good1}) desde {f1} hasta {f3} para producir {good2}

Coloca todos los Muelles de mercancías en las posiciones idicadas:
{dock}

Se avanza al siguiente paso cuando todos los muelles estén listos.

\ No newline at end of file diff --git a/es/chapter_04/goal_step_03.txt b/es/chapter_04/goal_step_03.txt index a3bf28b..5d269c1 100644 --- a/es/chapter_04/goal_step_03.txt +++ b/es/chapter_04/goal_step_03.txt @@ -1 +1 @@ -

Se necesita transportar hidrocarburos ({good1}) desde {f1} hasta {f3} para producir {good2}

Coloca el Astillero aquí {dep1}.

Para avanzar al siguiente paso, pulsa sobre el Astillero {dep1} usando la Herramienta de Inspección

\ No newline at end of file +

Se necesita transportar hidrocarburos ({good1}) desde {f1} hasta {f3} para producir {good2}

Coloca el Astillero aquí {dep1}.

Para avanzar al siguiente paso, pulsa sobre el Astillero {dep1} usando la Herramienta de Inspección

\ No newline at end of file diff --git a/es/chapter_04/goal_step_04.txt b/es/chapter_04/goal_step_04.txt index 14db60b..313ce0d 100644 --- a/es/chapter_04/goal_step_04.txt +++ b/es/chapter_04/goal_step_04.txt @@ -1 +1 @@ -

Se necesita transportar {good1} desde {f1} hasta {f3} para la producción de {good2}

Conectando al proveedor {f1}

Se necesitan {all_cov} barcos para suministrar {good1} a {f3}.

[1] En la ventana del Astillero pulsa sobre la pestaña Barcos, luego selecciona el {sh}.
[2] Ahora debes configurar una línea (Sirve en línea), selecciona Crear línea nueva.
[3] Selecciona el muelle en {f1} y ajuste la Carga mínima al {load}%
[4] Selecciona el muelle en {f3} y cierre la ventana Itinerario
[5] Presiona el botón Copiar vehículo hasta llegar a {all_cov} convoys/barcos.
[6] Por último, presiona el botón Arrancar.

Consejo: Presiona [Ctrl] + pulsa el botón [Arrancar] para que todos los vehículos salgan del depósito.

Se avanza al siguiente paso cuando todos los barcos estén en circulación.

Barcos en circulación: {cir}/{all_cov}

\ No newline at end of file +

Se necesita transportar {good1} desde {f1} hasta {f3} para la producción de {good2}

Conectando al proveedor {f1}

Se necesitan {all_cov} barcos para suministrar {good1} a {f3}.

[1] En la ventana del Astillero pulsa sobre la pestaña Barcos, luego selecciona el {sh}.
[2] Ahora debes configurar una línea (Sirve en línea), selecciona Crear línea nueva.
[3] Selecciona el muelle en {f1} y ajuste la Carga mínima al {load}%
[4] Selecciona el muelle en {f3} y cierre la ventana Itinerario
[5] Presiona el botón Copiar vehículo hasta llegar a {all_cov} convoys/barcos.
[6] Por último, presiona el botón Arrancar.

Consejo: Presiona [Ctrl] + pulsa el botón [Arrancar] para que todos los vehículos salgan del depósito.

Se avanza al siguiente paso cuando todos los barcos estén en circulación.

Barcos en circulación: {cir}/{all_cov}

\ No newline at end of file diff --git a/es/chapter_04/goal_step_06.txt b/es/chapter_04/goal_step_06.txt index 41d9ffb..4d42c5a 100644 --- a/es/chapter_04/goal_step_06.txt +++ b/es/chapter_04/goal_step_06.txt @@ -1 +1 @@ -

Se necesita transportar pasajeros hacia las zonas turísticas {tur}.

Coloque los {nr} Muelles de pasajeros en las posiciones indicadas:
{dock}

Se avanza al siguiente paso cuando todos los muelles estén listos.

\ No newline at end of file +

Se necesita transportar pasajeros hacia las zonas turísticas {tur}.

Coloque los {nr} Muelles de pasajeros en las posiciones indicadas:
{dock}

Se avanza al siguiente paso cuando todos los muelles estén listos.

\ No newline at end of file diff --git a/es/chapter_04/goal_step_07.txt b/es/chapter_04/goal_step_07.txt index 0509fc6..eb404f5 100644 --- a/es/chapter_04/goal_step_07.txt +++ b/es/chapter_04/goal_step_07.txt @@ -1 +1 @@ -

Se necesita transportar pasajeros hacia las zonas turísticas {tur}.

Usa la herramienta de inspección en el Astillero {dep1} y en la pestaña Ferris compra un {ship}.

Ahora presiona itinerario y selecciona las paradas:
{list}

Tras añadir las paradas, selecciona la parada {stnam} y configúrala de la siguiente forma:
--> [a] Configura Carga mínima al {load}%.
--> [b] Configura Salir después de a {wait}.

Por último, presiona el botón Arrancar.

Se avanza al siguiente capítulo cuando el barco arranque desde el Astillero

\ No newline at end of file +

Se necesita transportar pasajeros hacia las zonas turísticas {tur}.

Usa la herramienta de inspección en el Astillero {dep1} y en la pestaña Ferris compra un {ship}.

Ahora presiona itinerario y selecciona las paradas:
{list}

Tras añadir las paradas, selecciona la parada {stnam} y configúrala de la siguiente forma:
--> [a] Configura Carga mínima al {load}%.
--> [b] Configura Salir después de a {wait}.

Por último, presiona el botón Arrancar.

Se avanza al siguiente capítulo cuando el barco arranque desde el Astillero

\ No newline at end of file diff --git a/es/chapter_05/03_1-2.txt b/es/chapter_05/03_1-2.txt index 2f0f06f..6e01263 100644 --- a/es/chapter_05/03_1-2.txt +++ b/es/chapter_05/03_1-2.txt @@ -1 +1 @@ -

{tx} En el menú {toolbar} selecciona {trf_name} para colocar transformadores en las fábricas:

{tran}

Se avanza al siguiente paso cuando todas las factorías estén electrificadas.

\ No newline at end of file +

{tx} En el menú {toolbar} selecciona {trf_name} para colocar transformadores en las fábricas:

{tran}

Se avanza al siguiente paso cuando todas las factorías estén electrificadas.

\ No newline at end of file diff --git a/es/chapter_05/03_2-2.txt b/es/chapter_05/03_2-2.txt index 55d23b7..e70d50f 100644 --- a/es/chapter_05/03_2-2.txt +++ b/es/chapter_05/03_2-2.txt @@ -1 +1 @@ -

{tx} En el menú {toolbar} selecciona {powerline_tool}} para conecta todas las fábricas a la red eléctrica de {f5}:

{tran}

Se avanza al siguiente paso cuando todas las factorías estén electrificadas.

\ No newline at end of file +

{tx} En el menú {toolbar} selecciona {powerline_tool}} para conecta todas las fábricas a la red eléctrica de {f5}:

{tran}

Se avanza al siguiente paso cuando todas las factorías estén electrificadas.

\ No newline at end of file diff --git a/es/chapter_05/04_1-3.txt b/es/chapter_05/04_1-3.txt index 1817305..61121ee 100644 --- a/es/chapter_05/04_1-3.txt +++ b/es/chapter_05/04_1-3.txt @@ -1 +1 @@ -

{tx} En el menú {toolbar} selecciona "Edificios de Extensión" para correo y coloca uno en cada una de las siguientes ubicaciones:

{st}

Se avanza al siguiente paso cuando el camión de correo abandone el depósito.

\ No newline at end of file +

{img_road_menu} {toolbar_halt}

{img_post_menu} {toolbar_extension}

{tx} Hay dos maneras de desbloquear estaciones para el correo. Primero, se puede construir un edificio de extensión de correo (Menú {toolbar_extension}) en un espacio vacío junto a la parada.
Segundo, se puede construir otra parada (Menú {toolbar_halt}) que acepte correo en un camino recto.

{st}

Para continuar al siguiente paso, se deben aceptar todas las publicaciones en espera.

\ No newline at end of file diff --git a/es/chapter_05/04_2-3.txt b/es/chapter_05/04_2-3.txt index 52b896b..d15bb6e 100644 --- a/es/chapter_05/04_2-3.txt +++ b/es/chapter_05/04_2-3.txt @@ -1 +1 @@ -

{tx} En el depósito {dep}, selecciona un camion {veh} para correo y pulsa [Itinerario].

Ahora selecciona las paradas:
{list}

Tras añadir todas las {nr} paradas, selecciona la parada {stnam} y configúrala de la siguiente forma:
--> [a] Configura Carga mínima al {load}%.
--> [b] Configura Salir después de a {wait}.
Pulsa el botón [Copiar vehículo] hasta que obtengas {all_cov}. Por último, pulsa el botón [Arrancar]

Avanza al siguiente capítulo cuando todos los vehículos y el barco esten en circulación.

Convoyes en circulación: {cir}/{all_cov}

\ No newline at end of file +

{tx} En el depósito {dep}, selecciona un camion {veh} para correo y pulsa [Itinerario].

Ahora selecciona las paradas:
{list}

Tras añadir todas las {nr} paradas, selecciona la parada {stnam} y configúrala de la siguiente forma:
--> [a] Configura Carga mínima al {load}%.
--> [b] Configura Salir después de a {wait}.
Pulsa el botón [Copiar vehículo] hasta que obtengas {all_cov}. Por último, pulsa el botón [Arrancar]

Avanza al siguiente capítulo cuando todos los vehículos y el barco esten en circulación.

Convoyes en circulación: {cir}/{all_cov}

\ No newline at end of file diff --git a/es/chapter_05/04_3-3.txt b/es/chapter_05/04_3-3.txt index 988a608..9a5009d 100644 --- a/es/chapter_05/04_3-3.txt +++ b/es/chapter_05/04_3-3.txt @@ -1 +1 @@ -

{tx} Usa la Herramienta de Inspección en el Astillero {dep} y en la pestaña de Ferris compra un {ship}.

Ahora pulsa Itinerario y selecciona las paradas:
{list}

Tras añadir las paradas, selecciona la parada {stnam} de la lista y configúrala de la siguiente forma:
--> [a] Configura Carga Mínima al {load}%.
--> [b] Configura Salir después de a {wait}.

Por última pulsa el botón Arrancar.

Se avanza al siguiente capítulo cuando el barco salga del Astillero.

\ No newline at end of file +

{tx} Usa la Herramienta de Inspección en el Astillero {dep} y en la pestaña de Ferris compra un {ship}.

Ahora pulsa Itinerario y selecciona las paradas:
{list}

Tras añadir las paradas, selecciona la parada {stnam} de la lista y configúrala de la siguiente forma:
--> [a] Configura Carga Mínima al {load}%.
--> [b] Configura Salir después de a {wait}.

Por última pulsa el botón Arrancar.

Se avanza al siguiente capítulo cuando el barco salga del Astillero.

\ No newline at end of file diff --git a/es/chapter_05/goal.txt b/es/chapter_05/goal.txt index 4438886..e6681d1 100644 --- a/es/chapter_05/goal.txt +++ b/es/chapter_05/goal.txt @@ -1 +1 @@ -

En este capítulo vamos a mejorar la eficiencia de nuestras cadenas industriales, trasportando pasajeros, correo y energía eléctrica

{scr}

{txtst_01}Paso A - Producción del Electricidad y Consumo
{step_01}

{txtst_02}Paso B - Camiones para el Carbón
{step_02}

{txtst_03}Paso C - Conectando el Sistema Eléctrico
{step_03}

{txtst_04}Paso D - Entregando el Correo
{step_04}

\ No newline at end of file +

En este capítulo vamos a mejorar la eficiencia de nuestras cadenas industriales, trasportando pasajeros, correo y energía eléctrica

{scr}

{txtst_01}Paso A - Producción del Electricidad y Consumo
{step_01}

{txtst_02}Paso B - Camiones para el Carbón
{step_02}

{txtst_03}Paso C - Conectando el Sistema Eléctrico
{step_03}

{txtst_04}Paso D - Entregando el Correo
{step_04}

\ No newline at end of file diff --git a/es/chapter_05/goal_step_01.txt b/es/chapter_05/goal_step_01.txt index 342d1d9..fdf1364 100644 --- a/es/chapter_05/goal_step_01.txt +++ b/es/chapter_05/goal_step_01.txt @@ -1 +1 @@ -

Fábricas Electrificadas


Algunas de las fábricas necesitan energía eléctrica para mejorar su produción/eficiencia. Esto se logra colocando un transformador a cada fábrica/industria para luego conectarlo a una industria generadora de energía eléctrica.
No todas las industrias requieren energía eléctrica, esto se puede comprobar con el pequeño icono en forma de "rayo" que aparece en la ventana de las fábricas. Este icono indica que la fábrica requiere de energía eléctrica para mejorar su producción/eficiencia.

En este capítulo vamos a electrificar las siguientes fábricas:
{f1}
{f2}
{f3}

También debe conectarse la planta productora de electricidad:
{f4}

Se avanza al siguiente paso pulsando en cualquiera de las fábricas de la lista.

\ No newline at end of file +

Fábricas Electrificadas


Algunas de las fábricas necesitan energía eléctrica para mejorar su produción/eficiencia. Esto se logra colocando un transformador a cada fábrica/industria para luego conectarlo a una industria generadora de energía eléctrica.
No todas las industrias requieren energía eléctrica, esto se puede comprobar con el pequeño icono en forma de "rayo" que aparece en la ventana de las fábricas. Este icono indica que la fábrica requiere de energía eléctrica para mejorar su producción/eficiencia.

En este capítulo vamos a electrificar las siguientes fábricas:
{f1}
{f2}
{f3}

También debe conectarse la planta productora de electricidad:
{f4}

Se avanza al siguiente paso pulsando en cualquiera de las fábricas de la lista.

\ No newline at end of file diff --git a/es/chapter_05/goal_step_02.txt b/es/chapter_05/goal_step_02.txt index fe7b767..76dcccd 100644 --- a/es/chapter_05/goal_step_02.txt +++ b/es/chapter_05/goal_step_02.txt @@ -1 +1 @@ -

Se necesita transportar {good} para operar la planta generadora de electricidad "{f4}".

[1] Conecta la carretera:
Selecciona el menú {tool2} y conecta los puntos entre {w1} "{f3}" y {w2} "{f4}".

[2] Estaciones de camiones:
Construye las estaciones de mercancías en {w1} y {w2}.

[3] El depósito de carretera:
Construye un tramo de carretera en {dep} y luego un Depósito de Carretera.

[4] Preparación de los camiones:
Usa la {tool1} en el tanque y en la pestaña "Camiones" selecciona un {veh}, luego selecciona un tráiler para {good}.
Ahora para crear una línea para la flota de camiones:
- [1] Selecciona la estación en {f3} y coloca la Carga mínima en {load}%.
- [2] Seleccione la estación en {f4} y cierre la ventana Itinerario.
Pulsa el botón [Copiar Vehiculo] hasta llegar a {all_cov} convoyes, finalmente presione el botón [Arrancar].

Se avanza al siguiente paso cuando todos los convoyes estén en circulación.

Convoyes en circulación: {cir}/{all_cov}

\ No newline at end of file +

Se necesita transportar {good} para operar la planta generadora de electricidad "{f4}".

[1] Conecta la carretera:
Selecciona el menú {tool2} y conecta los puntos entre {w1} "{f3}" y {w2} "{f4}".

[2] Estaciones de camiones:
Construye las estaciones de mercancías en {w1} y {w2}.

[3] El depósito de carretera:
Construye un tramo de carretera en {dep} y luego un Depósito de Carretera.

[4] Preparación de los camiones:
Usa la {tool1} en el tanque y en la pestaña "Camiones" selecciona un {veh}, luego selecciona un tráiler para {good}.
Ahora para crear una línea para la flota de camiones:
- [1] Selecciona la estación en {f3} y coloca la Carga mínima en {load}%.
- [2] Seleccione la estación en {f4} y cierre la ventana Itinerario.
Pulsa el botón [Copiar Vehiculo] hasta llegar a {all_cov} convoyes, finalmente presione el botón [Arrancar].

Se avanza al siguiente paso cuando todos los convoyes estén en circulación.

Convoyes en circulación: {cir}/{all_cov}

\ No newline at end of file diff --git a/es/chapter_06/goal.txt b/es/chapter_06/goal.txt index 04c92a5..f82e818 100644 --- a/es/chapter_06/goal.txt +++ b/es/chapter_06/goal.txt @@ -1 +1 @@ -

En este capítulo nos dedicamos al transporte aéreo, construiremos un pequeño aeropuerto para transportar pasajeros a una ciudad muy lejana.

{scr}

{txtst_01}Paso A - El primer Aeropuerto
{step_01}

{txtst_02}Paso B - El Avión está a punto de despegar
{step_02}

{txtst_03}Paso C - Línea de Autobuses del Aeropuerto parte I
{step_03}

{txtst_04}Paso D - Línea de Autobuses del Aeropuerto parte II
{step_04}

\ No newline at end of file +

En este capítulo nos dedicamos al transporte aéreo, construiremos un pequeño aeropuerto para transportar pasajeros a una ciudad muy lejana.

{scr}

{txtst_01}Paso A - El primer Aeropuerto
{step_01}

{txtst_02}Paso B - El Avión está a punto de despegar
{step_02}

{txtst_03}Paso C - Línea de Autobuses del Aeropuerto parte I
{step_03}

{txtst_04}Paso D - Línea de Autobuses del Aeropuerto parte II
{step_04}

\ No newline at end of file diff --git a/es/chapter_06/goal_step_01.txt b/es/chapter_06/goal_step_01.txt index 6f24b16..2f847e4 100644 --- a/es/chapter_06/goal_step_01.txt +++ b/es/chapter_06/goal_step_01.txt @@ -1 +1 @@ -

El servicio público necesita de tu ayuda para conectar la ciudad {cit1} con la ciudad {cit2} por vía aérea.

Aeropuerto en construción


Pasos:
1- Construye la {w1name} entre {c1_a} y {c1_b}.
2- Construye la {w2name} entre {c2_a} y {c2_b}.
3- Construye la parada aérea en el tramo de pista: {st1}.
4- Construye una Terminal de Pasajeros en: {st2}.
5- Construye el Hangar o Depósito Aereo (Construye un tramo de pista primero): {dep1}.
6- Haz pública la parada aerea en: {st1}.

Se avanza al siguiete paso, cuando todo esté en su lugar.

\ No newline at end of file +

El servicio público necesita de tu ayuda para conectar la ciudad {cit1} con la ciudad {cit2} por vía aérea.

Aeropuerto en construción


Pasos:
1- Construye la {w1name} entre {c1_a} y {c1_b}.
2- Construye la {w2name} entre {c2_a} y {c2_b}.
3- Construye la parada aérea en el tramo de pista: {st1}.
4- Construye una Terminal de Pasajeros en: {st2}.
5- Construye el Hangar o Depósito Aereo (Construye un tramo de pista primero): {dep1}.
6- Haz pública la parada aerea en: {st1}.

Se avanza al siguiete paso, cuando todo esté en su lugar.

\ No newline at end of file diff --git a/es/chapter_06/goal_step_02.txt b/es/chapter_06/goal_step_02.txt index 7eaf232..113a86e 100644 --- a/es/chapter_06/goal_step_02.txt +++ b/es/chapter_06/goal_step_02.txt @@ -1 +1 @@ -

El servicio público necesita de tu ayuda para conectar la ciudad {cit1} con la ciudad {cit2} por vía aérea.

Pulsa sobre el Hangar {dep1} y compra una aeronave de nombre '{plane}' y configura la ruta de la siguiente manera:

[1] Seleciona la Parada Aérea {sch1} y configure la parada de la siguiente forma:
--> [a] Configura Carga mínima al {load}%
--> [b] Configura Salir después de a {wait}
[2] Selecciona la Parada Aérea {sch2} y presiona Arrancar.

Se avanza al siguiete paso, cuando el Avión salga del hangar.

\ No newline at end of file +

El servicio público necesita de tu ayuda para conectar la ciudad {cit1} con la ciudad {cit2} por vía aérea.

Pulsa sobre el Hangar {dep1} y compra una aeronave de nombre '{plane}' y configura la ruta de la siguiente manera:

[1] Seleciona todas las paradas en orden:
{stx}

[2] Tras añadir las paradas, selecciona la parada {stnam} de la lista y configura la parada de la siguiente forma:
--> [a] Configura Carga mínima al {load}%
--> [b] Configura Salir después de a {wait}
[3] Usa el botón [Copiar vehículo] para conseguir los {cnr} autobuses necesarios.
[4] Ahora pulsa el botón [Arrancar] para que todos los vehículos dejen el depósito.

Se avanza al siguiete paso, cuando el Avión salga del hangar.

\ No newline at end of file diff --git a/es/chapter_06/goal_step_03.txt b/es/chapter_06/goal_step_03.txt index e849cdb..98779e0 100644 --- a/es/chapter_06/goal_step_03.txt +++ b/es/chapter_06/goal_step_03.txt @@ -1 +1 @@ -

Conectando la ciudad {cit1} con el Aeropuerto {sch1} usando {cnr} autobuses.

Pulsa sobre el Depósito de Carretera {dep2}, selecciona un bus {bus1} y presiona [Itinerario]

[1] Seleciona todas las paradas en orden:
{stx}

[2] Tras añadir las paradas, selecciona la parada {stnam} de la lista y configura la parada de la siguiente forma:
--> [a] Configura Carga mínima al {load}%
--> [b] Configura Salir después de a {wait}
[3] Usa el botón [Copiar vehículo] para conseguir los {cnr} autobuses necesarios.
[4] Ahora pulsa el botón [Arrancar] para que todos los vehículos dejen el depósito.

Se avanza al siguiete paso, cuando todos los autobuses dejen el depósito.

\ No newline at end of file +

Conectando la ciudad {cit1} con el Aeropuerto {sch1} usando {cnr} autobuses.

Pulsa sobre el Depósito de Carretera {dep2}, selecciona un bus {bus1} y presiona [Itinerario]

[1] Seleciona todas las paradas en orden:
{stx}

[2] Tras añadir las paradas, selecciona la parada {stnam} de la lista y configura la parada de la siguiente forma:
--> [a] Configura Carga mínima al {load}%
--> [b] Configura Salir después de a {wait}
[3] Usa el botón [Copiar vehículo] para conseguir los {cnr} autobuses necesarios.
[4] Ahora pulsa el botón [Arrancar] para que todos los vehículos dejen el depósito.

Se avanza al siguiete paso, cuando todos los autobuses dejen el depósito.

\ No newline at end of file diff --git a/es/chapter_06/goal_step_04.txt b/es/chapter_06/goal_step_04.txt index 86e47ea..5fc9b25 100644 --- a/es/chapter_06/goal_step_04.txt +++ b/es/chapter_06/goal_step_04.txt @@ -1 +1 @@ -

Conectando la ciudad {cit1} con el Aeropuerto {sch2} usando {cnr} autobuses.

El Depósito de Carretera

Ve a la ubicación {cit2}, localiza la posición {dep3}, y construye un depósito de carretera ahí.

Los Autobuses

Pulsa sobre el Depósito de Carretera {dep3}, selecciona un autobús {bus2} y presiona [Itinerario]

[1] Seleciona todas las paradas en orden:
{stx}

[2] Tras añadir las paradas, selecciona la parada {stnam} de la lista y configura la parada de la siguiente forma:
--> [a] Configura Carga mínima al {load}%
--> [b] Configura Salir después de a {wait}
[3] Usa el botón [Copiar vehículo] para conseguir los {cnr} autobuses necesarios.
[4] Ahora pulsa el botón [Arrancar] para que todos los vehículos dejen el depósito.

Se avanza al siguiente capítulo, cuando todos los autobuses dejen el depósito.

\ No newline at end of file +

Conectando la ciudad {cit1} con el Aeropuerto {sch2} usando {cnr} autobuses.

El Depósito de Carretera

Ve a la ubicación {cit2}, localiza la posición {dep3}, y construye un depósito de carretera ahí.

Los Autobuses

Pulsa sobre el Depósito de Carretera {dep3}, selecciona un autobús {bus2} y presiona [Itinerario]

[1] Seleciona todas las paradas en orden:
{stx}

[2] Tras añadir las paradas, selecciona la parada {stnam} de la lista y configura la parada de la siguiente forma:
--> [a] Configura Carga mínima al {load}%
--> [b] Configura Salir después de a {wait}
[3] Usa el botón [Copiar vehículo] para conseguir los {cnr} autobuses necesarios.
[4] Ahora pulsa el botón [Arrancar] para que todos los vehículos dejen el depósito.

Se avanza al siguiente capítulo, cuando todos los autobuses dejen el depósito.

\ No newline at end of file diff --git a/es/chapter_07/goal.txt b/es/chapter_07/goal.txt index c02c71f..4234968 100644 --- a/es/chapter_07/goal.txt +++ b/es/chapter_07/goal.txt @@ -1 +1 @@ -

{txtst_01}Paso A - Los autobuses de la ciudad I
{step_01}

{txtst_02}Paso B - Los autobuses de la ciudad II
{step_02}

{txtst_03}Paso C - Los autobuses de la ciudad III
{step_03}

{txtst_04}Paso D - Los autobuses de la ciudad IV
{step_04}

{txtst_05}Paso E - Fin del Escenario
{step_05}

\ No newline at end of file +

{txtst_01}Paso A - Los autobuses de la ciudad I
{step_01}

{txtst_02}Paso B - Los autobuses de la ciudad II
{step_02}

{txtst_03}Paso C - Los autobuses de la ciudad III
{step_03}

{txtst_04}Paso D - Los autobuses de la ciudad IV
{step_04}

\ No newline at end of file diff --git a/es/chapter_07/goal_step_01.txt b/es/chapter_07/goal_step_01.txt deleted file mode 100644 index 3691cd0..0000000 --- a/es/chapter_07/goal_step_01.txt +++ /dev/null @@ -1 +0,0 @@ -

La ciudad {city} necesita diseñar una red de autobuses que permita mover pasajeros hacia la estacion de tren: {name}.

[1] Coloca una parada de autobús en la posición {stop}.
[2] Haz pública la parada en {stop}.
[3] Ahora eres libre de construir una red de autobuses en la ciudad {city}.
[4] Asegúrate de que todos los autobuses estén conectados a la estación: {name}.

Se avanza al siguiete paso, cuando se transporten más de {load} pasajeros hacia {name} en un mes.

Se han trasportado este mes: {get_load}/{load}

\ No newline at end of file diff --git a/es/chapter_07/goal_step_01x04.txt b/es/chapter_07/goal_step_01x04.txt new file mode 100644 index 0000000..ec1d41e --- /dev/null +++ b/es/chapter_07/goal_step_01x04.txt @@ -0,0 +1 @@ +

La ciudad de {city} necesita mantener una red de autobuses que permita a los pasajeros llegar a la estación de tren de {name}.

Construye tantas paradas de autobús en la ciudad como necesites para cubrir la ciudad. Asegúrese de que haya una parada de autobús conectada a la estación {name} para que se puedan contar los pasajeros.

Para pasar al siguiente paso, transporte más de {load} pasajeros en un mes.

Este mes se promocionaron los siguientes: {get_load}/{load}

\ No newline at end of file diff --git a/es/chapter_07/goal_step_02.txt b/es/chapter_07/goal_step_02.txt deleted file mode 100644 index d4b76ac..0000000 --- a/es/chapter_07/goal_step_02.txt +++ /dev/null @@ -1 +0,0 @@ -

La ciudad {city} necesita diseñar una red de autobuses que permita mover pasajeros hacia la estacion de tren: {name}.

[1] Coloca una parada de autobús en la posición {stop}.
[2] Haz pública la parada en {stop}.
[3] Ahora eres libre de construir una red de autobuses en la ciudad {city}.
[4] Asegúrate de que todos los autobuses estén conectados a la estación: {name}.

Se avanza al siguiete paso, cuando se transporten más de {load} pasajeros hacia {name} en un mes.

Se han trasportado este mes: {get_load}/{load}

\ No newline at end of file diff --git a/es/chapter_07/goal_step_03.txt b/es/chapter_07/goal_step_03.txt deleted file mode 100644 index 3691cd0..0000000 --- a/es/chapter_07/goal_step_03.txt +++ /dev/null @@ -1 +0,0 @@ -

La ciudad {city} necesita diseñar una red de autobuses que permita mover pasajeros hacia la estacion de tren: {name}.

[1] Coloca una parada de autobús en la posición {stop}.
[2] Haz pública la parada en {stop}.
[3] Ahora eres libre de construir una red de autobuses en la ciudad {city}.
[4] Asegúrate de que todos los autobuses estén conectados a la estación: {name}.

Se avanza al siguiete paso, cuando se transporten más de {load} pasajeros hacia {name} en un mes.

Se han trasportado este mes: {get_load}/{load}

\ No newline at end of file diff --git a/es/chapter_07/goal_step_04.txt b/es/chapter_07/goal_step_04.txt deleted file mode 100644 index 3691cd0..0000000 --- a/es/chapter_07/goal_step_04.txt +++ /dev/null @@ -1 +0,0 @@ -

La ciudad {city} necesita diseñar una red de autobuses que permita mover pasajeros hacia la estacion de tren: {name}.

[1] Coloca una parada de autobús en la posición {stop}.
[2] Haz pública la parada en {stop}.
[3] Ahora eres libre de construir una red de autobuses en la ciudad {city}.
[4] Asegúrate de que todos los autobuses estén conectados a la estación: {name}.

Se avanza al siguiete paso, cuando se transporten más de {load} pasajeros hacia {name} en un mes.

Se han trasportado este mes: {get_load}/{load}

\ No newline at end of file diff --git a/es/finished.txt b/es/finished.txt index fadc296..550e9c5 100644 --- a/es/finished.txt +++ b/es/finished.txt @@ -1 +1 @@ -

Hasta aquí llega el Escenario, muchas gracias por jugar el mítico Simutrans.

Puedes seguirnos aqui: https://www.facebook.com/Simutrans
Cualquier duda estamos para ayudar en el foro: https://forum.simutrans.com/

Créditos a toda la comunidad de Simutrans y en especial a:
Dwachs
Prissi
ny911
HaydenRead
Tjoeker
gauthier
Andarix
Roboron

Saludos!! @Yona-TYT.

\ No newline at end of file +{title}

Hasta aquí llega el Escenario, muchas gracias por jugar el mítico Simutrans.

Puedes seguirnos aqui: https://www.facebook.com/Simutrans
Cualquier duda estamos para ayudar en el foro: https://forum.simutrans.com/

Créditos a toda la comunidad de Simutrans y en especial a:
Dwachs
Prissi
ny911
HaydenRead
Tjoeker
gauthier
Andarix
Roboron

Saludos!! @Yona-TYT.

\ No newline at end of file diff --git a/es/info.txt b/es/info.txt index 3478eef..6bc17d8 100644 --- a/es/info.txt +++ b/es/info.txt @@ -1 +1 @@ -

Simutrans Tutorial


En este tutorial, se explican los primeros pasos en la creación de su imperio de transporte en Simutrans. Se centra en las acciones necesarias alrededor de las cadenas de transporte en Simutrans.

El tutorial se compone de varios Capítulos, cada uno con un número de Pasos incluidos en orden para completar el capitulo.

Los asuntos económicos sólo están cubiertos brevemente en el Tutorial

{list_of_chapters}

Puedes obtener más ayuda pulsando la tecla "F1" en lo que respecta a las diversas herramientas, funciones, y la lógica de Simutrans.

{first_link}

Nota: En algunos casos puede haber hasta 15 segundos de retraso desde que realizas una acción hasta que el Tutorial se actualiza al siguiente paso.


{pakset_info} \ No newline at end of file +

Simutrans Tutorial


En este tutorial, se explican los primeros pasos en la creación de su imperio de transporte en Simutrans. Se centra en las acciones necesarias alrededor de las cadenas de transporte en Simutrans.

Abrir ventana {dialog}

Si esta ventana está cerrada, se puede volver a abrir utilizando este botón en el menú principal.

El tutorial se compone de varios Capítulos, cada uno con un número de Pasos incluidos en orden para completar el capitulo.

Los asuntos económicos sólo están cubiertos brevemente en el Tutorial

{list_of_chapters}

Puedes obtener más ayuda pulsando la tecla "F1" en lo que respecta a las diversas herramientas, funciones, y la lógica de Simutrans.

{first_link}

Nota: En algunos casos puede haber hasta 15 segundos de retraso desde que realizas una acción hasta que el Tutorial se actualiza al siguiente paso.


{pakset_info} \ No newline at end of file diff --git a/es/info/info_pak128.txt b/es/info/info_pak128.txt index 74baf1e..837f6cb 100644 --- a/es/info/info_pak128.txt +++ b/es/info/info_pak128.txt @@ -1 +1 @@ -

Descripción pak128

\ No newline at end of file +

Descripción pak128

\ No newline at end of file diff --git a/es/info/info_pak64.txt b/es/info/info_pak64.txt index cab8c0a..9d10808 100644 --- a/es/info/info_pak64.txt +++ b/es/info/info_pak64.txt @@ -1 +1 @@ -

Descripción pak64

\ No newline at end of file +

Descripción pak64

\ No newline at end of file diff --git a/es/info/info_pak64perman.txt b/es/info/info_pak64perman.txt index 2d2e0a6..26a3a13 100644 --- a/es/info/info_pak64perman.txt +++ b/es/info/info_pak64perman.txt @@ -1 +1 @@ -

Descripción pak64.german

\ No newline at end of file +

Descripción pak64.german

pak64.german es un conjunto de gráficos que solo usa una altura.

Tampoco hay bonificación de velocidad en pak64.german. Pero esto sigue siendo importante porque no se permite que las estaciones estén abarrotadas. Si las estaciones se saturan, los volúmenes de transporte colapsan.
Si se utiliza la carga mínima, tenga cuidado de no llenar excesivamente ninguna estación.

El maglev y el S-/U-Bahn sólo deberían utilizarse cuando haya un número muy elevado de pasajeros.

\ No newline at end of file diff --git a/es/result.txt b/es/result.txt index 29583e6..8ed3aff 100644 --- a/es/result.txt +++ b/es/result.txt @@ -1 +1 @@ -

El capítulo se ha completado al {ratio_chapter}%.

\ No newline at end of file +

El capítulo se ha completado al {ratio_chapter}%.

\ No newline at end of file diff --git a/es/rule.txt b/es/rule.txt index 764efbd..5a90951 100644 --- a/es/rule.txt +++ b/es/rule.txt @@ -1 +1 @@ -

No se muestran todas las herramientas. Tan sólo las acciones necesarias para el paso actual están disponibles.

· Describir normas.
· Dar consejos.
· Instrucciones sobre problemas conocidos.

\ No newline at end of file +

No se muestran todas las herramientas. Tan sólo las acciones necesarias para el paso actual están disponibles.

· Describir normas.
· Dar consejos.
· Instrucciones sobre problemas conocidos.

\ No newline at end of file diff --git a/info_files/img-tools.ods b/info_files/img-tools.ods new file mode 100644 index 0000000..95aa6be Binary files /dev/null and b/info_files/img-tools.ods differ diff --git a/info_files/img-tools/scenario.nut b/info_files/img-tools/scenario.nut new file mode 100644 index 0000000..6bc0609 --- /dev/null +++ b/info_files/img-tools/scenario.nut @@ -0,0 +1,61 @@ + +map.file = "" + +scenario.short_description = "" +scenario.author = "" +scenario.version = "0.1" +map_siz <- world.get_size() + +function get_rule_text(pl) +{ + return ttext("") +} + +function get_goal_text(pl) +{ + return ttextfile("") +} + +function get_result_text(pl) +{ + local text = ttext("") + + return text.tostring() +} + + +function start() +{ + //my_compass() +} + + +function is_scenario_completed(pl) +{ + + return 0 +} + +function get_info_text(pl) +{ + + + local tx = "" + local siz = 101 + for(local j=0; j g"+j+" d"+j+" s"+j+" t"+j+"
" + } + return tx + +} + + +function my_tile(coord) +{ + return square_x(coord.x,coord.y).get_ground_tile() + //return square_x(coord.x,coord.y).get_tile_at_height(coord.z) +} + + + diff --git a/info_files/tool_id_list.ods b/info_files/tool_id_list.ods index 9845a3b..c990506 100644 Binary files a/info_files/tool_id_list.ods and b/info_files/tool_id_list.ods differ diff --git a/scenario.nut b/scenario.nut index 55ef7ea..0cd1cbb 100644 --- a/scenario.nut +++ b/scenario.nut @@ -1,30 +1,55 @@ -/* - * Tutorial Scenario - * - * - * Can NOT be used in network game ! - */ +/** + * @file scenario.nut + * @brief Tutorial Scenario + * + * Can NOT be used in network game ! + * + */ const nut_path = "class/" // path to folder with *.nut files -include("set_data") // include set data -include(nut_path+"class_basic_data") // include class for object data -translate_objects_list <- {} // translate list -translate_objects() // add objects to translate list - -const version = 2001 +const version = 2007 scenario_name <- "Tutorial Scenario" scenario.short_description = scenario_name scenario.author = "Yona-TYT & Andarix" scenario.version = (version / 1000) + "." + ((version % 1000) / 100) + "." + ((version % 100) / 10) + (version % 10) scenario.translation <- ttext("Translator") -resul_version <- {pak= false , st = false} +include("set_data") // include set data + switch (pak_name) { + case "pak64": + include(nut_path+"class_basic_coords_p64") // include coords def pak64 + break + case "pak64.german": + include(nut_path+"class_basic_coords_p64g") // include coords def pak64german + break + case "pak128": + include(nut_path+"class_basic_coords_p128") // include coords def pak128 + break + } + +chapter <- null // used later for class +chapter_max <- 7 // amount of chapter +select_option <- { x = 0, y = 0, z = 1 } // place of station to control name +select_option_halt <- null // placeholder for halt_x +tutorial <- {} // placeholder for all chapter CLASS persistent.version <- version // stores version of script persistent.select <- null // stores user selection persistent.chapter <- 1 // stores chapter number persistent.step <- 1 // stores step number of chapter +// set for check automatic jump steps +persistent.ch_max_steps <- 1 // stores chapter max steps +persistent.ch_max_sub_steps <- 0 // stores chapter max sub steps +persistent.ch_sub_step <- 0 // stores actual chapter sub steps + +include(nut_path+"class_basic_gui") // include class for tools disabled/enabled +include(nut_path+"class_basic_data") // include class for object data +include(nut_path+"class_basic_chapter") // include class for basic chapter structure +translate_objects_list <- {} // translate list +translate_objects() // add objects to translate list -persistent.status <- {chapter=1, step=1} // save step y chapter +resul_version <- {pak = false , st = false} + +persistent.status <- {chapter = 1, step = 1} // save step y chapter script_test <- true @@ -45,26 +70,22 @@ ignore_save <- [{id = -1, ig = true}] //Marca convoys ingnorados persistent.ignore_save <- [] -//-------------Guarda el estado del script------------------------ -persistent.pot <- [0,0,0,0,0,0,0,0,0,0,0] - -persistent.glsw <- [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] -pglsw <- [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] - -pot0 <- 0 -pot1 <- 0 -pot2 <- 0 -pot3 <- 0 -pot4 <- 0 -pot5 <- 0 -pot6 <- 0 -pot7 <- 0 -pot8 <- 0 -pot9 <- 0 -pot10 <- 0 -glsw <- [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] - -//---------------------Contador global de vehiculos---------------------------- +//-------------Save the script state------------------------ +persistent.pot <- [] +persistent.pot.resize(11, 0) + +persistent.glsw <- [] +persistent.glsw.resize(20, 0) +glsw <- [] +glsw.resize(20, 0) + +pglsw <- [] +pglsw.resize(20, 0) + +pot <- [] +pot.resize(11, 0) + +//---------------------Global vehicle counter---------------------------- persistent.gcov_nr <- 0 gcov_nr <- 0 persistent.gcov_id <- 1 @@ -73,7 +94,6 @@ persistent.gall_cov <- 0 gall_cov <-0 persistent.current_cov <- 0 current_cov <- 0 -cov_sw <- true correct_cov <- true //---------------------------------------------------------------- @@ -82,14 +102,11 @@ gui_delay <- true //delay for open win fail_num <- 10 //numr for the count of try fail_count <- 1 //if tool fail more of fail_num try - //Schedule activate active_sch_check <- false - simu_version <- "124.2.3" - current_st <- "0" - -include(nut_path+"class_basic_gui") // include class for tools disabled/enabled +simu_version <- "124.3" +current_st <- "0" // table containing all system_types all_systemtypes <- [st_flat, st_elevated, st_runway, st_tram] @@ -97,14 +114,13 @@ all_systemtypes <- [st_flat, st_elevated, st_runway, st_tram] // Complemento para obtener tiempo de espera tick_wait <- 16 -chapter <- null // used later for class -chapter_max <- 7 // amount of chapter -select_option <- { x = 0, y = 0, z = 1 } // place of station to control name -select_option_halt <- null // placeholder for halt_x -tutorial <- {} // placeholder for all chapter CLASS - - -//returns pakset name (lower case) +/** + * returns pakset name (lower case) + * + * @param name mixed case + * + * @return name lower case + */ function get_set_name(name) { local s = name.find(" ") @@ -113,6 +129,9 @@ function get_set_name(name) return name } +/** + * Check version and pakset name + */ function string_analyzer() { local result = {pak= false , st = false} @@ -278,9 +297,10 @@ function get_integral(tx) { //Check version and pakset name resul_version = string_analyzer() - include(nut_path+"class_basic_convoys") // include class for detect eliminated convoys - include(nut_path+"class_basic_chapter") // include class for basic chapter structure - include(nut_path+"class_basic_coords") // include class for + include(nut_path+"class_basic_convoys") // include class for detect eliminated convoys + include(nut_path+"class_messages") // include def messages texts + include(nut_path+"astar") // .. route search for way building etc + } for (local i = 0; i <= chapter_max; i++) // include amount of chapter classes @@ -307,6 +327,7 @@ function script_text() if(scr_jump) // already jumping return null + pending_call = true // indicate that we want to skip to next step return null } @@ -330,13 +351,18 @@ function scenario_percentage(percentage) function load_chapter(number,pl) { rules.clear() - general_disabled_tools(pl) + // chapter 7 no tool rules + if ( number < 7 ) { + general_disabled_tools(pl) + } else { + rules.gui_needs_update() + } if (!resul_version.pak || !resul_version.st){ number = 0 chapter = tutorial["chapter_"+(number < 10 ? "0":"")+number](pl) chapter.chap_nr = number } - else{ + else if ( persistent.chapter <= chapter_max ) { chapter = tutorial["chapter_"+(number < 10 ? "0":"")+number](pl) if ( (number == persistent.chapter) && (chapter.startcash > 0) ) // set cash money here player_x(0).book_cash( (chapter.startcash - player_x(0).get_cash()[0]) * 100) @@ -344,18 +370,23 @@ function load_chapter(number,pl) chapter.chap_nr = persistent.chapter //persistent.step = persistent.status.step } + } function load_conv_ch(number, step, pl) { - rules.clear() + rules.clear() + if ( number < 7 ) { general_disabled_tools(pl) - if (!resul_version.pak || !resul_version.st){ + } else { + rules.gui_needs_update() + } + if (!resul_version.pak || !resul_version.st) { number = 0 chapter = tutorial["chapter_"+(number < 10 ? "0":"")+number](pl) chapter.chap_nr = number } - else{ + else { chapter = tutorial["chapter_"+(number < 10 ? "0":"")+number](pl) if ( (number == persistent.chapter) && (chapter.startcash > 0) ) // set cash money here @@ -378,18 +409,25 @@ function set_city_names() } -/* - * test functions generating the GUI strings - * These must return fast and must not alter the map! +/** + * test functions generating the GUI strings + * These must return fast and must not alter the map! + * + * @param pl = player_x + * + * @return */ function get_info_text(pl) { local info = ttextfile("info.txt") + info.dialog = translate("Scenario information") + local help = "" local i = 0 //foreach (chap in tutorial) - for (i=1;i<=chapter_max;i++) - help+= ""+translate("Chapter")+" "+(i)+" - "+translate(tutorial["chapter_"+(i<10?"0":"")+i].chapter_name)+"
" + for ( i=1; i<=chapter_max; i++ ) + help += ""+translate("Chapter")+" "+(i)+" - "+translate(tutorial["chapter_"+(i<10?"0":"")+i].chapter_name)+"
" + info.list_of_chapters = help info.first_link = ""+(chapter.chap_nr <= 1 ? translate("Let's start!"):translate("Let's go on!") )+" >>" @@ -407,14 +445,19 @@ function get_rule_text(pl) function get_goal_text(pl) { + if( persistent.chapter == tutorial.len() && chapter.is_chapter_completed(pl) >= 100 ) { + return "

" + translate("Tutorial Scenario complete.") + "

" + } return chapter.give_title() + chapter.get_goal_text( pl, my_chapter() ) } function get_result_text(pl) { // finished ... - if(persistent.chapter>7) { + if( persistent.chapter == tutorial.len() && chapter.is_chapter_completed(pl) >= 100 ) { + //return ttextfile("finished.txt") local text = ttextfile("finished.txt") + text.title = "

" + translate("Tutorial Scenario complete.") + "

" return text } @@ -503,16 +546,69 @@ function labels_text_debug() /** - * This function check whether finished or not - * Is runs in a step, so it can alter the map - * @return 100 or more, the scenario will be "win" and the scenario_info window - * show the result tab + * calculate percentage chapter complete + * + * @param ch_steps = count chapter steps + * @param step = actual chapter step + * @param sup_steps = count sub steps in a chapter step + * @param sub_step = actual sub step in a chapter step + * + * no sub steps in chapter step, then set sub_steps and sub_step to 0 + * + * This function is called during a step() and can alter the map + * + * @return + */ +function chapter_percentage(ch_steps, ch_step, sub_steps, sub_step) +{ + local percentage_step = 100 / ch_steps + + local percentage = percentage_step * ch_step + + local percentage_sub_step = 0 + if ( sub_steps > 0 && sub_step > 0) { + percentage_sub_step = (percentage_step / sub_steps ) * sub_step + percentage += percentage_sub_step + } + + if ( ch_step <= ch_steps ) { + percentage -= percentage_step + } + + //gui.add_message("ch_steps "+ch_steps+" ch_step "+ch_step+" ch_steps "+sub_steps+" sub_step "+sub_step) + + // tutorial finish + if ( tutorial.len() == persistent.chapter && ch_steps == ch_step && sub_steps == sub_step ) { + percentage = 100 + } + + return percentage +} + +/** + * This function check whether finished or not + * Is runs in a step, so it can alter the map + * + * @param pl = player_x + * + * @return 100 or more, the scenario will be "win" and the scenario_info window + * show the result tab */ function is_scenario_completed(pl) { // finished ... - if(persistent.chapter > chapter_max) { - return 100 + if( persistent.chapter > chapter_max ) { + local text = ttext("Chapter {number} - {cname} complete.") + text.number = chapter_max + text.cname = translate(""+chapter.chapter_name+"") + gui.add_message( text.tostring() ) + + rules.clear() + rules.gui_needs_update() + scr_jump = true + text = translate("Tutorial Scenario complete.") + gui.add_message( text.tostring() ) + return 100 } //-------Debug ==================================== @@ -572,25 +668,51 @@ function is_scenario_completed(pl) chapter.step = 1 else chapter.step = persistent.step + chapter.start_chapter() return 1 } chapter.step = persistent.step - if (pending_call) { - // since we cannot alter the map in a sync_step - pending_call = false - scr_jump = true // we are during a jump ... - chapter.script_text() - scr_jump = false + local percentage = chapter.is_chapter_completed(pl) + + // check for automatic step + if ( pending_call ) { + //gui.add_message("check automaric jump : percentage " + percentage) + //gui.add_message(" : chapter.step " + chapter.step) + //gui.add_message(" : persistent.ch_max_sub_steps " + persistent.ch_max_sub_steps) + //gui.add_message(" : persistent.ch_sub_step " + persistent.ch_sub_step) + + local percentage_step = chapter_percentage(persistent.ch_max_steps, chapter.step, persistent.ch_max_sub_steps, persistent.ch_sub_step) + //gui.add_message(" : percentage_step " + percentage_step) + + local jump_step = false + if ( chapter.step == 1 && percentage >= 0 ) { + jump_step = true + } else if ( percentage >= 100 ) { + jump_step = true + } else if ( percentage == percentage_step ) { + jump_step = true + } + + if ( jump_step ){ + + // since we cannot alter the map in a sync_step + pending_call = false + scr_jump = true // we are during a jump ... + chapter.script_text() + scr_jump = false + + } + + } - local percentage = chapter.is_chapter_completed(pl) gl_percentage = percentage persistent.gl_percentage = gl_percentage - if (percentage >= 100){ // give message , be sure to have 100% or more + if ( percentage >= 100 ) { // give message , be sure to have 100% or more local text = ttext("Chapter {number} - {cname} complete, next Chapter {nextcname} start here: ({coord}).") text.number = persistent.chapter text.cname = translate(""+chapter.chapter_name+"") @@ -598,14 +720,6 @@ function is_scenario_completed(pl) persistent.chapter++ persistent.status.chapter++ - // finished ... - if(persistent.chapter > chapter_max) { - rules.clear() - rules.gui_needs_update() - scr_jump = true - return 100 - } - load_chapter(persistent.chapter, pl) chapter.chap_nr = persistent.chapter percentage = chapter.is_chapter_completed(pl) @@ -614,13 +728,9 @@ function is_scenario_completed(pl) text.nextcname = translate(""+chapter.chapter_name+"") text.coord = chapter.chapter_coord.tostring() chapter.start_chapter() //Para iniciar variables en los capitulos - if (persistent.chapter >1) gui.add_message(text.tostring()) - } - percentage = scenario_percentage(percentage) - if ( percentage >= 100 ) { // scenario complete - local text = translate("Tutorial Scenario complete.") - gui.add_message( text.tostring() ) + if (persistent.chapter > 1 && persistent.chapter < chapter_max ) gui.add_message(text.tostring()) } + return percentage } @@ -634,7 +744,7 @@ function is_work_allowed_here(pl, tool_id, name, pos, tool) if(scr_jump){ return null } - local result = translate("Action not allowed") + local result = get_message(2) //translate("Action not allowed") if (correct_cov){ local result = chapter.is_work_allowed_here(pl, tool_id, name, pos, tool) return fail_count_message(result, tool_id, tool) @@ -727,6 +837,7 @@ function jump_to_link_executed(pos) //-------------------------------------------------------- datasave <- {cov = cov_save} + class data_save { // Convoys function convoys_save() {return datasave.cov;} @@ -772,16 +883,9 @@ function resume_game() sigcoord = persistent.sigcoord ignore_save = persistent.ignore_save - pot0=persistent.pot[0] - pot1=persistent.pot[1] - pot2=persistent.pot[2] - pot3=persistent.pot[3] - pot4=persistent.pot[4] - pot5=persistent.pot[5] - pot6=persistent.pot[6] - pot7=persistent.pot[7] - pot8=persistent.pot[8] - pot9=persistent.pot[9] + // copy persistent.pot[] to pot[] + pot.clear() + pot.extend(persistent.pot) gl_percentage = persistent.gl_percentage diff --git a/set_data.nut b/set_data.nut index 8dd0137..7bca9fc 100644 --- a/set_data.nut +++ b/set_data.nut @@ -1,6 +1,8 @@ -/* - * define set data - */ +/** + * @file set_data.nut + * @brief define set data + * + */ // pak64 pak_name <- "pak64" // pak name diff --git a/text_download.sh b/text_download.sh new file mode 100644 index 0000000..fdf6843 --- /dev/null +++ b/text_download.sh @@ -0,0 +1,2 @@ +wget -q --delete-after https://simutrans-germany.com/translator_page/scenarios/scenario_5/download.php +wget -O texts.zip https://simutrans-germany.com/translator_page/scenarios/scenario_5/data/language_pack-Scenario+Tutorial+multipak.zip