//$n Bałtyk
[...]
incfile MODULE baltyk/baltyk_trakcja.scm end
incfile MODULE baltyk/lampy_nocne.scm 3 end
incfile MODULE baltyk/eventy.ctr end
incfile MODULE baltyk/baltyk_posers.scm end
incfile MODULE baltyk/drogi_ra.scm end
incfile MODULE baltyk/baltyk_ctl/przejazdy_ctl.scm end
incfile MODULE baltyk/baltyk_pozostale.scm end
incfile MODULE baltyk/baltyk_teren.scm end
incfile MODULE baltyk/baltyk_torowisko.scm end
incfile MODULE baltyk/baltyk_torowisko.scm end
FirstInit
Starting MaSzyna rail vehicle simulator.
Online documentation and additional files on http://eu07.pl
Authors: Marcin_EU, McZapkie, ABu, Winger, Tolaris, nbmx_EU, OLO_EU, Bart, Quark-t, ShaXbee, Oli_EU, youBy, KURS90, Ra, hunter and others
Renderer: GeForce 8600 GT/PCIe/SSE2
Vendor: NVIDIA Corporation
OpenGL Version: 3.3.0
Supported extensions:
GL_ARB_arrays_of_arrays
GL_ARB_base_instance
GL_ARB_blend_func_extended
GL_ARB_clear_buffer_object
GL_ARB_color_buffer_float
GL_ARB_compatibility
GL_ARB_compressed_texture_pixel_storage
GL_ARB_conservative_depth
GL_ARB_copy_buffer
GL_ARB_copy_image
GL_ARB_debug_output
GL_ARB_depth_buffer_float
GL_ARB_depth_clamp
GL_ARB_depth_texture
GL_ARB_draw_buffers
GL_ARB_draw_elements_base_vertex
GL_ARB_draw_instanced
GL_ARB_enhanced_layouts
GL_ARB_ES2_compatibility
GL_ARB_ES3_compatibility
GL_ARB_explicit_attrib_location
GL_ARB_explicit_uniform_location
GL_ARB_fragment_coord_conventions
GL_ARB_fragment_layer_viewport
GL_ARB_fragment_program
GL_ARB_fragment_program_shadow
GL_ARB_fragment_shader
GL_ARB_framebuffer_no_attachments
GL_ARB_framebuffer_object
GL_ARB_framebuffer_sRGB
GL_ARB_geometry_shader4
GL_ARB_get_program_binary
GL_ARB_half_float_pixel
GL_ARB_half_float_vertex
GL_ARB_imaging
GL_ARB_instanced_arrays
GL_ARB_internalformat_query
GL_ARB_internalformat_query2
GL_ARB_invalidate_subdata
GL_ARB_map_buffer_alignment
GL_ARB_map_buffer_range
GL_ARB_multi_bind
GL_ARB_multisample
GL_ARB_multitexture
GL_ARB_occlusion_query
GL_ARB_occlusion_query2
GL_ARB_pixel_buffer_object
GL_ARB_point_parameters
GL_ARB_point_sprite
GL_ARB_program_interface_query
GL_ARB_provoking_vertex
GL_ARB_robust_buffer_access_behavior
GL_ARB_robustness
GL_ARB_sampler_objects
GL_ARB_seamless_cube_map
GL_ARB_separate_shader_objects
GL_ARB_shader_bit_encoding
GL_ARB_shader_objects
GL_ARB_shader_texture_lod
GL_ARB_shading_language_100
GL_ARB_shading_language_420pack
GL_ARB_shading_language_include
GL_ARB_shading_language_packing
GL_ARB_shadow
GL_ARB_stencil_texturing
GL_ARB_sync
GL_ARB_texture_border_clamp
GL_ARB_texture_buffer_object
GL_ARB_texture_buffer_range
GL_ARB_texture_compression
GL_ARB_texture_compression_rgtc
GL_ARB_texture_cube_map
GL_ARB_texture_env_add
GL_ARB_texture_env_combine
GL_ARB_texture_env_crossbar
GL_ARB_texture_env_dot3
GL_ARB_texture_float
GL_ARB_texture_mirror_clamp_to_edge
GL_ARB_texture_mirrored_repeat
GL_ARB_texture_multisample
GL_ARB_texture_non_power_of_two
GL_ARB_texture_query_levels
GL_ARB_texture_rectangle
GL_ARB_texture_rg
GL_ARB_texture_rgb10_a2ui
GL_ARB_texture_stencil8
GL_ARB_texture_storage
GL_ARB_texture_storage_multisample
GL_ARB_texture_swizzle
GL_ARB_texture_view
GL_ARB_timer_query
GL_ARB_transpose_matrix
GL_ARB_uniform_buffer_object
GL_ARB_vertex_array_bgra
GL_ARB_vertex_array_object
GL_ARB_vertex_attrib_binding
GL_ARB_vertex_buffer_object
GL_ARB_vertex_program
GL_ARB_vertex_shader
GL_ARB_vertex_type_10f_11f_11f_rev
GL_ARB_vertex_type_2_10_10_10_rev
GL_ARB_viewport_array
GL_ARB_window_pos
GL_ATI_draw_buffers
GL_ATI_texture_float
GL_ATI_texture_mirror_once
GL_S3_s3tc
GL_EXT_texture_env_add
GL_EXT_abgr
GL_EXT_bgra
GL_EXT_bindable_uniform
GL_EXT_blend_color
GL_EXT_blend_equation_separate
GL_EXT_blend_func_separate
GL_EXT_blend_minmax
GL_EXT_blend_subtract
GL_EXT_compiled_vertex_array
GL_EXT_Cg_shader
GL_EXT_depth_bounds_test
GL_EXT_direct_state_access
GL_EXT_draw_buffers2
GL_EXT_draw_instanced
GL_EXT_draw_range_elements
GL_EXT_fog_coord
GL_EXT_framebuffer_blit
GL_EXT_framebuffer_multisample
GL_EXTX_framebuffer_mixed_formats
GL_EXT_framebuffer_multisample_blit_scaled
GL_EXT_framebuffer_object
GL_EXT_framebuffer_sRGB
GL_EXT_geometry_shader4
GL_EXT_gpu_program_parameters
GL_EXT_gpu_shader4
GL_EXT_multi_draw_arrays
GL_EXT_packed_depth_stencil
GL_EXT_packed_float
GL_EXT_packed_pixels
GL_EXT_pixel_buffer_object
GL_EXT_point_parameters
GL_EXT_provoking_vertex
GL_EXT_rescale_normal
GL_EXT_secondary_color
GL_EXT_separate_shader_objects
GL_EXT_separate_specular_color
GL_EXT_shader_integer_mix
GL_EXT_shadow_funcs
GL_EXT_stencil_two_side
GL_EXT_stencil_wrap
GL_EXT_texture3D
GL_EXT_texture_array
GL_EXT_texture_buffer_object
GL_EXT_texture_compression_dxt1
GL_EXT_texture_compression_latc
GL_EXT_texture_compression_rgtc
GL_EXT_texture_compression_s3tc
GL_EXT_texture_cube_map
GL_EXT_texture_edge_clamp
GL_EXT_texture_env_combine
GL_EXT_texture_env_dot3
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_integer
GL_EXT_texture_lod
GL_EXT_texture_lod_bias
GL_EXT_texture_mirror_clamp
GL_EXT_texture_object
GL_EXT_texture_shared_exponent
GL_EXT_texture_sRGB
GL_EXT_texture_sRGB_decode
GL_EXT_texture_storage
GL_EXT_texture_swizzle
GL_EXT_timer_query
GL_EXT_vertex_array
GL_EXT_vertex_array_bgra
GL_EXT_import_sync_object
GL_IBM_rasterpos_clip
GL_IBM_texture_mirrored_repeat
GL_KHR_debug
GL_KTX_buffer_region
GL_NV_blend_square
GL_NV_conditional_render
GL_NV_copy_depth_to_color
GL_NV_copy_image
GL_NV_depth_buffer_float
GL_NV_depth_clamp
GL_NV_ES1_1_compatibility
GL_NV_explicit_multisample
GL_NV_fence
GL_NV_float_buffer
GL_NV_fog_distance
GL_NV_fragment_program
GL_NV_fragment_program_option
GL_NV_fragment_program2
GL_NV_framebuffer_multisample_coverage
GL_NV_geometry_shader4
GL_NV_gpu_program4
GL_NV_half_float
GL_NV_light_max_exponent
GL_NV_multisample_coverage
GL_NV_multisample_filter_hint
GL_NV_occlusion_query
GL_NV_packed_depth_stencil
GL_NV_parameter_buffer_object
GL_NV_parameter_buffer_object2
GL_NV_path_rendering
GL_NV_pixel_data_range
GL_NV_point_sprite
GL_NV_primitive_restart
GL_NV_register_combiners
GL_NV_register_combiners2
GL_NV_shader_buffer_load
GL_NV_texgen_reflection
GL_NV_texture_barrier
GL_NV_texture_compression_vtc
GL_NV_texture_env_combine4
GL_NV_texture_expand_normal
GL_NV_texture_multisample
GL_NV_texture_rectangle
GL_NV_texture_shader
GL_NV_texture_shader2
GL_NV_texture_shader3
GL_NV_transform_feedback
GL_NV_vertex_array_range
GL_NV_vertex_array_range2
GL_NV_vertex_buffer_unified_memory
GL_NV_vertex_program
GL_NV_vertex_program1_1
GL_NV_vertex_program2
GL_NV_vertex_program2_option
GL_NV_vertex_program3
GL_NVX_conditional_render
GL_NVX_gpu_memory_info
GL_SGIS_generate_mipmap
GL_SGIS_texture_lod
GL_SGIX_depth_texture
GL_SGIX_shadow
GL_SUN_slice_accum
GL_WIN_swap_hint
WGL_EXT_swap_control
------------------------------
EXTENSIONS: 238
Mozna by na cos innego scroll wykorzystac. Jakies propozycje?No najbardziej PRO by było zrobić na nim nastawnik albo hamulec (np. przełączane jakimś shift'em czy innym ctrl'em).
Ktos pokusil się już przejechać jakiś konkretny scenariusz na tym exeku?Ja spróbowałem misje l053_całkowo-służba-tlk, ale dojechałem tylko do Rudawy. Do tego momentu, symulacja działała prawidłowo. Jedyne co mi się rzuciło w oczy, to brak smug po załączeniu oświetlenia.
Zmiany ktore zamierzam wprowadzac to glownie ulepszanie grafiki 2d jak i 3d, wprowadzanie roznych sytuacji ruchowych :) zauwazalnych w rzeczywistosci podczas prowadzenia pojazdu - czyli rozwijanie mozliwosci otoczenia oraz infrastruktury tej dalzszej jak kolejowa , wprowadzanie roznych udogodnien dla devsow i przystosowywanie exe w celu pozniejszego, ulatwienia stworzenia edytora 3d.To ja już się majster pogubiłem - rozwijasz 'starego' symka czy robisz przekład tysiąclecia i przepisujesz na C++? :)
Splash screena mozna wylaczyc w config.txt (splashscrn :0)Czy takie skracanie na siłę kluczy w pliku konfiguracyjnym ma jakieś konkretne uzasadnienie? Jak nie to proponowałbym jednak dodać to brakujące "ee" ;)
jakies sczegoly? :D
Wy macie Win 8.x?Wy macie WIN7 64bit
No a w data masz loaderconf.txt ?ha ha ha
No w koncu raczyl wypakowac wszystko z apdejta a nie samo exe. A pozniej ze nie dziala ;dSadzilem ze to szybka podmianka EXE, a tu taki znok. No powiem tak, wrazenia okej, FPS nawet niewiem bo gram w GTA5 na max detalach, ogolnie nie bylo zadnych wysypow, wszystko dzialalo poprawnie, hamulce okej. Grafika jak grafika przydaloby sie rozmazywanie textur, no ale generalnie mam smaki na zrobienie scn :)
Zrobie Ci pseudo rozmazywanie ekranu, moze byc?Jesli bedzie chodz takie jak w Quake2 to bedzie juz bardzo dobrze!
Muri: z dwóch powodow tak wymyslilem - takie zbocznie programistyczne, cos jak skracanie nazw zmiennych bez uzywania samoglosek to raz a po drugie jest rowno i czytelniej, a domyslec sie mozna.No to powinno być "splshscrn" :P . A tak na serio - też tak miałem, ale po pewnym czasie doszedłem do wniosku, że w sumie po co? Jakbyś to pisał na jakiś mikrokontroler gdzie każdy bajt pamięci ma znaczenie - to można się zastanawiać. Ale tutaj? Bez przesady. Nic to nie daje, a tylko zmniejsza czytelność.
Grafika jak grafika przydaloby sie rozmazywanie textur, no ale generalnie mam smaki na zrobienie scn :)W opcjach karty graficznej nie możesz zrobić wymuszenia rozmazywania? W załączniku po i przed włączeniu różnych opcji 'ulepszających' grafikę. ;)
D:\pctga\models\miejskie
Missed file: e/bank_bph_leszno.t3d
Domyślne filtrowanie tekstury można zmienić z eu07.ini. Cesky, które zdjęcie jest przed a które po? Bo na prawym niebo mi zepsuło. :(To po prawej jest na domyślnych ustawieniach (pod kontrolą aplikacji), a po lewej ma wymuszone wygładzanie krawędzi itp. z ustawień NVidii.
ile znakow obcielo? A dobra widze :D, ale lepiej jak dasz caly log.Po co robiłeś autowysyłanie na serwer w takim razie? :D
Zauważyłem, że przy pomniejszaniu i powiększaniu przesuwają się napisy zegara, rozkładu i informacji o pojeździe.
jaki masz numerek loga (user pid)?4174725880
AI ma problemy z hamowaniem na stacjach (patrz screen w załączniku). Chyba w twoim *exe brak jest poprawek do AI od @Ra i @gfirlejczyk.Ten byk ma często problemy w tym miejscu, podejrzewam, że daje w nagłe, bo ma semafor Vmax=100, a potem zaraz widzi S1 (krótki odcinek pomiędzy semaforem drogowskazowym a wyjazdowym) toteż będzie wariował. Exe chyba nie ma nic do rzeczy.
//$i td2.jpg
//Przygotowanie scenerii do testowania wsiadania pasazerow do okreslonego pociagu i wysiadania w miejscu docelowym
sky cgskj_sunset083.t3d endsky
atmo 0 0 0 1000 2000 0.173 0.173 0.173 endatmo
light 1600 1200 600 0.322 0.322 0.322 0.863 0.753 0.494 0.949 0.804 0.467 endlight
incfile MODULE scn_td2/tracks.inc end
incfile MODULE scn_td2/switches.inc end
incfile MODULE scn_td2/trwires.inc end
incfile MODULE scn_td2/terrain.inc end
incfile MODULE scn_td2/insceneobj.inc end
incfile;POSERS;posers/cman0004-st.inc;none00;842.995;1.4022;2081.06;-22.6724;;end
incfile;POSERS;posers/cman0004-st.inc;none01;832.301;1.4022;2082.83;0.0;;end
incfile;POSERS;posers/cman0004-st.inc;none02;832.301;1.4022;2085.7;40.7088;;end
incfile;POSERS;posers/cman0004-st.inc;none03;807.439;1.4022;2095.38;-22.6724;;end
incfile;POSERS;posers/cman0004-st.inc;none04;3.94594;1.29938;741.431;0.0;LCE87224;wejsciowo;end
incfile;POSERS;posers/cman0004-st.inc;none05;3.57975;1.29938;739.02;-33.4864;LCE89224;cel_maly;end
incfile;POSERS;posers/cman0004-st.inc;none06;3.51947;1.29938;745.143;-33.4864;LCE87224;wejsciowo;end
incfile;POSERS;posers/cman0004-st.inc;none07;3.76979;1.29938;743.895;-62.1838;LCE89224;cel_wielki;end
FirstInit
trainset LCE87224 start 0.0 0.0
//$o Tor doświadczalny.
node -1 0 EP07-424 dynamic pkp\303e_v1 303e-ep-tv-424-hist 303e-ep-tv 0.0 headdriver 3 0 enddynamic
node -1 0 BDNU_160_1 dynamic pkp\1xxa_v1 bdnu_160_1 1xxa 0.0 nobody 3 0 enddynamic
node -1 0 505126-08109-8 dynamic pkp\bdhpumn_v2 505126-08109-8 bdhpumn 0.0 nobody 3 0 enddynamic
node -1 0 505126-08109-8 dynamic pkp\bdhpumn_v2 505126-08109-8 bdhpumn 0.0 nobody 0 0 enddynamic
endtrainset
Kolejne EXE. Tym razem nic nowego nie dochodzi, bynajmniej nic co da sie zobaczyc.http://bynajmniej.pl/bynajmniej-to-nie-przynajmniej/
U mnie dla odmiany wysyp po odpaleniu :)
U mnie dla odmiany wysyp po odpaleniu :)
Nastepnie wypadaloby obmyslec format zapisywania tych danych w pliku.
Doors: OpenCtrl=DriverCtrl CloseCtrl=DriverCtrl OpenSpeed=0.5 CloseSpeed=0.20 DoorMaxShiftL=0.9 DoorMaxShiftR=0.9 DoorOpenMethod=Plug DoorClosureWarning=yes DoorBlocked=Yes DoorMaxShiftPlug=0.043
Czyli typ animacji "Plug" i dodatkowy parametr "DoorMaxShiftPlug". Dokonywana jest translacja o tą wartość po osi X+ a potem translacja po Z+ o "DoorMaxShift". Obie z tą samą prędkością.
BohunIC, dawaj podsypke a nie marudzisz :).Chcesz tylko jedna?
Hehe, wlasnie sie tak zastanawialem czemu podsypki sa biale po zrobieniu na szybko przejscia z kanalem alpha.Pisalem o tym wczoraj na czacie, bo spotkalo mnie to samo. Wszystko co ma ponad 1MB w TGA niestety wyswietla sie jako biale. Zrob konwersje do JPG zmniejszysz rozmiar, a potem konwersje do TGA i bedzie pieknie.
No i sprawa powrotu do zapisanego widoku z kabiny. Kiedyś prawym klawiszem myszy się wracało, a teraz jest on nieaktywny. Jakaś nowa metoda?Trzeba wcisnąć "środek" kółka w myszy.
U mnie, na ostatnim .exe, td2 jak wspomniałem wcześniej uruchamia się bez żadnych problemów tylko skład jest od początku w ruchu. Nie zaglądałem do pliku .scn ale jak podejrzewam to jest celowy zabieg.U mnie jest podobnie. A co do składu by nie był w ruchu wystarczy jemu zzerować jego prędkość początkową. W tym przypadku ma podaną 50. Otwierasz plik td2.scn i szukasz wpisu tego składu. W transecie
trainset LCE87224 start 6.0 50.0
na :trainset LCE87224 start 6.0 0.0
i posłusznie będzie stał :).
// *****************************************************************************
// Wolane z ground.cpp w TGroundNode::RenderDL()
// *****************************************************************************
int Global::findpassengerdynamic(vector3 PPos, AnsiString asName, AnsiString REL, AnsiString DST, TGroundNode *GN)
{
AnsiString drel, ddst, dnam;
vector3 dpnt;
for (int l = 0; l<255-1; l++) // Jedziemy po tablicy entrypointow...
{
drel = QGlobal::PEP[l].dyntrainnumber;
ddst = QGlobal::PEP[l].dyndestination;
dpnt = QGlobal::PEP[l].point;
dnam = QGlobal::PEP[l].dynname;
float fSquareDist = SquareMagnitude(dpnt - vector3(PPos)); // porownywanie pozycji aktualnego posera z pozycjami wszystkich pojazdow
// Wyszukuje drzwi po drugiej stronie wqagonu prawdopodobnie dlatego, ze akurat ostatnii widziany wpis na liscie tego najblizszego mu
// wagonu byl drzwiami po drugiej stronie
// Powinno byc wyliczenie dystansow do wszystkich drzwi i wybraine najkrotszego?
if ((!GN->bINTRAIN) && (fSquareDist < 200)) // Jezeli odleglosc pasazera do pojadu mniejsza niz 300...
{
if (REL == drel) // Gdy relacja pasazera zgadza sie z numerem pociagu...
{
WriteLog("POSER " + asName + ": " + REL + ", " + DST + ", train: " + drel + " wagon: " + dnam);
GN->bINTRAIN = false; // Wlazi do pociagu
glEnable(GL_LINE_SMOOTH);
glLineWidth(2.02);
glColor3ub(150,10,10);
glBegin(GL_LINES);
glVertex3f(dpnt.x, dpnt.y+0.2, dpnt.z);
glVertex3f(PPos.x, PPos.y+0.2, PPos.z);
glEnd();
return 0;
}
}
}
return 0;
}
Chyba czas nagrac film :)Byłbym wdzięczny :)
wszyscy sie zaladowali do lokomtywy ;dCoś jak passenger_define=mikol.
internet ok, sending log.txt...
FTP: creating directory error. Code:
Wyslano Plik.
shotdir: [SCR\]
aparams: [(null)]
appvers: 15 4 1171 474
appdate: 20160105 221928
release: 20160105 221928, 15.4.1171.474
rundate: 20160107 201813
deskdim: 1280x800
userpid: 1927897964
sysvers: 6.1.7601
sysname: Windows 7
servpak: Service Pack 1
if (Global::iTextMode == VK_F8)
{
OutText01 = "";
OutText02 = "";
OutText03 = "";
OutText04 = "";
OutText05 = "";
OutText06 = "";
OutText07 = "";
OutText08 = "";
OutText09 = "";
OutText10 = "";
OutText11 = "";
OutText12 = "";
Global::iViewMode = VK_F8;
OutText01 = "FPS: ";
OutText01 += FloatToStrF(GetFPS(), ffFixed, 6, 2);
if (Global::iSlowMotion)
OutText01 += " (slowmotion " + AnsiString(Global::iSlowMotion) + ")";
OutText01 += ", sectors: ";
OutText01 += AnsiString(Ground.iRendered);
OutText02 = "STATION NAME: " + Controlled->asStation;
OutText03 = "TRACK NUMBER: " + Controlled->asTrackNum;
New timetable for ep09-035: none
sky_dynamic_stratus.t3d
init
MODEL: 999
Loading - text model: models\sky_dynamic_stratus.t3d
Loading - texture: textures\sky\moon.dds
Loading - texture: textures\sky\stratus.dds
Loading - texture: textures\sky\sun.dds
submodels: 4
FACES=1922
Saving E3D binary model.
atmo 0.6 0.722 0.757 1000 3000 0.745 0.714 0.655 endatmo
light 1000 3000 -4000 0.627 0.627 0.627 0.941 0.941 0.941 0.42 0.443 0.4 endlight
Za 4 podejściem odpalilo ale pasazery nie wsiadają.
// **********************************************************************************************************
// Wolane z ground.cpp w TGroundNode::RenderDL()
// **********************************************************************************************************
int Global::findpassengerdynamic(vector3 PPos, AnsiString asName, AnsiString Prel, AnsiString DST, TGroundNode *GN)
{
AnsiString Drel, Ddst, Dnam;
vector3 dpnt, vstart, vend, dnorm;
TDynamicObject *DO;
TGroundNode *pdyn;
float elapsed = 0.003f;
float distance = 0;
float distance2 = 0;
float walkdelay = 0;
for (int l = 0; l<255-1; l++) // Jedziemy po tablicy entrypointow...
{
Drel = QGlobal::PEP[l].dyntrainnumber;
Ddst = QGlobal::PEP[l].dyndestination;
dpnt = QGlobal::PEP[l].point;
Dnam = QGlobal::PEP[l].dynname;
float fSquareDist = SquareMagnitude(dpnt - vector3(PPos)); // porownywanie pozycji aktualnego posera z pozycjami wszystkich drzwi skladu
if ((!GN->bINTRAIN) && (fSquareDist < 6000)) // Jezeli odleglosc pasazera do pojadu mniejsza niz 60 metrow?
{
if (Prel == Drel) // Gdy relacja pasazera zgadza sie z numerem pociagu...
{
// Sortowanie punktow wejsciowych aby najblizszy pasazerowi byl na pierwszym miejscu listy
for (int j = 0; j < 255 - 1; j++)
{
QGlobal::array[j].num1 = SquareMagnitude(QGlobal::PEP[j].point - GN->pCenter);
QGlobal::array[j].num2 = QGlobal::PEP[j].point;
}
a::sort_by = 1;
std::sort(QGlobal::array, QGlobal::array + 255); // sortowanie po odleglosci pomiedzy pasazerem a punktem wejscia
pdyn = Global::pGround->DynamicFindAny(Dnam); // znajdz wskaznik na pojazd znajac nazwe z tablicy entrypointow
if (!GN->bINTRAIN && pdyn != NULL) DO = pdyn->DynamicObject;
if (DO->MoverParameters->Vel < 3.0) GN->fPassengerCDelay += 0.004; // Gdy sklad hamuje, juz moga zaczyanc myslec o podchodzeniu, niektorym to ciezko idzie ;)
if (GN->fPassengerCDelay >= GN->fPassengerDDelay) // Gdy juz pomyslal (czas myslenia jest randomowy), zaczyna isc do drzwi
{
dpnt = QGlobal::array[0].num2; // pierwszy item zawsze jest najmniejsza wartoscia (najblizsze drzwi)
distance = SquareMagnitude(dpnt - vector3(PPos)); // dystans do przebycia
vector3 direction = Normalize(dpnt - vector3(PPos));
GN->pCenter += (direction * GN->fPassengerSpeed) * elapsed; // aktualizacja pozycji
distance2 = SquareMagnitude(dpnt - GN->pCenter); // dystans pomiedzy pasazerem a drzwiami
}
// Wejscie pasazera do wagonu
if (DO->MoverParameters->Vel < 0.1) // ...GDY PREDKOSC MNIEJSZA OD 0.5km/h
if ((distance2 > 0) && (distance2 < 0.3)) // jezeli dystans pomiedzy pasazerem a drzwiami wiekszy od 0 i mniejszy niz 10cm...
{
if (!GN->bINTRAIN && pdyn != NULL) // JEZELI JESCZE NIE W POJEZDZIE TO...
{
{
DO->MoverParameters->Mass += 80; // zwiekszenie masy wagonu o 80kg (random cos nie dziala) //getRandomMinMax( 60.0f, 100.0f ); // Zwiekszyc wage wagonu o wage pasazera
GN->bINTRAIN = true; // Wlazi do pociagu
}
}
Global::pWorld->Controlled->GetConsist_f(1, Global::pWorld->Controlled); // odswiezenie danych na liscie skladu
}
//glEnable(GL_LINE_SMOOTH);
//glLineWidth(1.62);
//glColor3ub(150,10,10);
//glBegin(GL_LINES);
//glVertex3f(dpnt.x, dpnt.y+0.2, dpnt.z);
//glVertex3f(PPos.x, PPos.y+0.2, PPos.z);
//glEnd();
//WriteLog("POSER " + asName + ": " + REL + ", " + DST + ", train: " + drel + " wagon: " + dnam);
}
// Global::pWorld->Controlled->GetConsist_f(1, Global::pWorld->Controlled);
}
}
return 0;
}
Winy szukałbym w mało elastycznym parserze Rainsteda[...]
Ale na co tak? Uzasadnij, a nie ze wolalbym i zadowolony.1. Zmienna mass to masa pojazdu próżnego.
Lauching program from EXE file
READING FILE SYSTEM...
varname: texpath, TEXTURES\\, OK
varname: mdlpath, MODELS\\, OK
varname: scnpath, SCENERY\\, OK
varname: scrpath, SCR\\, OK
varname: sndpath, SOUNDS\\, OK
FILESYS OK.
READING CONFIG FILE... (G:\MaSzyna_15_04\\config.txt)
CONFIG FILE OK.
Registering model file extensions e3d/t3d...
environment informations:
appfile: [G:\MaSzyna_15_04\EU07-090116-1.exe]
apppath: [G:\MaSzyna_15_04\]
shotdir: [SCR\]
aparams: [(null)]
appvers: 15 4 1171 474
appdate: 20160109 193407
release: 20160109 193407, 15.4.1171.474
rundate: 20160109 203504
deskdim: 1024x700
userpid: 1927897964
sysvers: 6.1.7601
sysname: Windows 7
servpak: Service Pack 1
Reading eu07.ini...
Creating Console...
Parsing command line...
.
GLEW Init...
World Init...
LOADING LOADER FONTS...
LOADING LOADER CONFIG...
LOADING LOADER TEXTURES...
G:\MaSzyna_15_04\data\briefs\td2.scn-ep07-424.txt
Loading - texture: data\briefs\briefbackg.tga
Loading - texture: data\menu\menu_xfont.bmp
Loading - texture: data\lbacks\lbackgdef.jpg
Loading - texture: data\menu\menu_point.bmp
Loading - texture: data\gfx\ismouse.bmp
Loading station base...
Retrieving station info from cel_maly.txt
[@station info file ###################################################################][@station info file ###################################################################]
[name][cel_maly]
[info][jakis opis stacji]
[type][js]
[subtype][p]
[platforms][1]
[platformedges][1]
[tracksnum][1]
[{][{]
TAB=0
[track-1][track-1]
[len][250]
[number][1]
[platformav][l]
[electrified][1]
[}][}]
Retrieving station info from wejsciowo.txt
[@station info file ###################################################################][@station info file ###################################################################]
[name][wejsciowo]
[info][jakis opis stacji]
[type][js]
[subtype][p]
[platforms][1]
[platformedges][2]
[tracksnum][4]
[{][{]
TAB=0
[track-1][track-1]
[len][550]
[number][1]
[platformav][l]
[platformlen][450]
[electrified][1]
[}][}]
[{][{]
TAB=1
[track-2][track-2]
[len][750]
[number][2]
[platformav][r]
[platformlen][450]
[electrified][1]
[}][}]
[{][{]
TAB=2
[track-3][track-3]
[len][500]
[number][3]
[platformav][brak]
[platformlen][0]
[electrified][0]
[}][}]
[{][{]
TAB=3
[track-4][track-4]
[len][400]
[number][3a]
[platformav][brak]
[platformlen][0]
[electrified][0]
[}][}]
Retrieving station info from wyjsciowo.txt
[@station info file ###################################################################][@station info file ###################################################################]
[name][wyjsciowo]
[info][jakis opis stacji]
[type][js]
[subtype][p]
[platforms][1]
[platformedges][1]
[tracksnum][1]
[track-1][track-1]
[len][850]
[number][1]
[platformav][l]
Dość szybko padło. Uruchamiane przez dwuklik na pliku oraz Rainsted. Ekran wczytywania nawet się nie załadował ;dFILE OK!
Lauching EXE from model file double click (out of habitat)...
C:\Users\kononowicz24\Downloads\priv-druty (1)\sn_slup.t3d
SCENERY= modelpreview.scn
READING FILE SYSTEM...
varname: texpath, TEXTURES\\, OK
varname: mdlpath, MODELS\\, OK
varname: scnpath, SCENERY\\, OK
varname: scrpath, SCR\\, OK
varname: sndpath, SOUNDS\\, OK
FILESYS OK.
READING CONFIG FILE... (G:\MaSzyna_15_04\\config.txt)
CONFIG FILE OK.
Registering model file extensions e3d/t3d...
environment informations:
appfile: [G:\MaSzyna_15_04\EU07-090116-2.exe]
apppath: [G:\MaSzyna_15_04\]
shotdir: [G:\MaSzyna_15_04\SCR\]
aparams: [-vm temp.t3d]
Po umieszczeniu w /models wszystko jest poprawnie, po umieszczeniu w katalogu głównym nic nie wczytuje (Missed file: temp.t3d). Userpid 1927897964, log z 100116-001923.
void Global::LoadIniFile(AnsiString asFileName)
{
WriteLog("LoadIniFile() - 1");
int i;
for (i = 0; i < 10; ++i)
{ // zerowanie pozycji kamer
pFreeCameraInit[i] = vector3(0, 0, 0); // współrzędne w scenerii
pFreeCameraInitAngle[i] = vector3(0, 0, 0); // kąty obrotu w radianach
}
WriteLog("LoadIniFile() - 2");
TFileStream *fs;
fs = new TFileStream(Trim(QGlobal::asAPPDIR + asFileName), fmOpenRead | fmShareCompat);
if (!fs)
return;
WriteLog("LoadIniFile() - 3");
AnsiString str = "";
int size = fs->Size;
str.SetLength(size);
fs->Read(str.c_str(), size);
// str+="";
delete fs;
WriteLog("LoadIniFile() - 4");
TQueryParserComp *Parser;
Parser = new TQueryParserComp(NULL);
Parser->TextToParse = str;
// Parser->LoadStringToParse(asFile);
Parser->First();
ConfigParse(Parser);
delete Parser; // Ra: tego jak zwykle nie było wcześniej :]
WriteLog("LoadIniFile() - 5");
};
Pozakladalem pulapki, za chwile bedzie patch
Rzecz kolejna, nie wiem czy była obecna we wcześniejszych exe. Otóż po wczytaniu scenerii symek każe wcisnąć spację aby uruchomić symulację. Gdy zamiast niej wciśniemy klawisze wychodzenia z programu (F10 i obecnie LALT) zostanie wyświetlony monit z pytaniem o wyjście z programu. Gdy wybierzemy "N" symulacja zostanie "puszczona w ruch", choć na ekranie ciągle będzie widoczny ekran wczytywania z prośbą o wciśnięcie spacji.
Ps. U mnie wózki ciągle obecne ;)
To że pasażerowie nie wsiadają to jest oczywiste bo nie ma wagonów do tego przystosowanych i jest tylko to na td2, a co do pantografów to zaraz sprawdzę. W którym miejscu połamałeś? I na jakim scenariuszu?
P.S: Co włącza tak praktycznie SHift+Ctrl+n, bo poza lekką kaszką to nie ma różnicy.
userpid: 1219702939
sysvers: 6.2.9200
sysname: Windows 8
servpak: No Service Pack Installed
Ciekawostka jest taka, że odpaliłem na windows10 a mimo to, w logu mam win8. Wszystko dla TD2 odbyło się poprawnie. Potwierdzam też, że przestało działać sterowanie zoomem za pomocą kółka myszy.
Raczej nie bo ostatnie testy robię bez pulpitu na gołym laptoku. Może jeszcze zobaczę czy ustawienie informacji zwrotnych ma jakikolwiek wpływ. "Problem" w tym, że na razie wszystko działa ;)
Zarejestrowałem nowy:Kod: [Zaznacz]userpid: 1219702939
Ciekawostka jest taka, że odpaliłem na windows10 a mimo to, w logu mam win8. Wszystko dla TD2 odbyło się poprawnie. Potwierdzam też, że przestało działać sterowanie zoomem za pomocą kółka myszy.
sysvers: 6.2.9200
sysname: Windows 8
servpak: No Service Pack Installed
No to troche dziwne, ze wszystko dziala ;dMoże rzeczywiście trzeba było się wyspać ;)
Inna rzecz, że opowieści z jazdy (i film), które znam, wskazują na to, że obecnie część lokomotyw nie trzyma parametrów fabrycznych.
No ja słyszałem i widziałem, że przy napięciu w sieci 3kV można ostatni bocznik włączyć przy 65–70 km/h… Odpowiada to dodatkowej rezystancji w obwodzie głównym ok. 0,5–0,8 Ω.
SPOSOB POSTEPOWANIA Z KAZDYM NOWYM EXE WYPAKOWANYM Z APDEJTU: #############################################################################Nie uruchamia się nic, ani z Rainsteda ani dwuklik na EXE ani podgląd E3D.
1. usuwamy start, ewentualnie kopiujemy sobie gdzies do folderu <-------???
2. zawsze najpierw uruchamiamy bezposrednio exe nowowypakowane aby wygenerowalo nowe skrypty .reg dla skojarzenia modeli z aplikacja
3. dodajemy pliki .reg do rejestru klikajac na nie dwukrotnie i potwierdzajac komunikat
4. mozna juz odpalac exe
dowolna wybrana metoda
env_sky001 :1
env_sky002 :1
env_clouds :1
env_rain :1
env_sun :1
env_moon :1
env_snow :1
...
Przy okazji > czy te opcje już dzialaja?
...
Czy u Was siódemka też dostała rozrząd z ET22 i ma trzy pozycje bezoporowe, na których można bocznikować (załączniki 1, 2, 3 - sprawdzone dwa razy, log z 20:34 i 21:08)?Tak, powstal system przypisywania niezaleznej fizyki dla kazdego pojazdu, w ten sposob bedzie mozna preparowac pojazdy tej samej serii o roznych parametrach eksploatacyjnych (zuzycie, uszkodzenia, itp). W katalogu dynstats masz plik EP07-424.fiz z wrzucona dizyka od ET22 :)
Druga sprawa, to jeśli skład zatrzyma się w całości kawałek za peronem, pasażerowie wsiadając do pociągu przez ostatnie drzwi lewitują po drodze (załącznik 4).To wszystko bedzie trzeba ulepszyc, przemyslec co i jak. Na te chwile ludki wykrywaja pojazdy z 60m. Trzeba by je ustawiac nie blizej jak 60m
Natomiast próba uruchomienia td2 z Rainsted wygląda tak, że od razu pojawia się komunikat o przygotowywaniu kabiny do sterowania i nic dalej się nie dzieje. Po wciśnięciu spacji na ułamek sekundy wyskakuje komunikat "Player train not exist!" i uruchamia się sceneria z samym niebem. Log z tego w załączniku, bo nie wysłało na serwer. Mój User PID to 976472020.
Semafory porównałem, mam screeny jak ktoś chce. Nie załączam ich, ponieważ też nie dopatrzyłem się różnic w świeceniu.
Aureole zauwazylem tylko na powtarzaczu swiatlo pulsujące. Moim zdaniem za szybko pulsuje. A co do koloru, wole ten po prawej, bardziej soczysty. Jednak pomysl bardzo fajny.
textures: 1.tga 2.tga 3.tga 4.tga
item-001: item01.t3d
item-002: item02.t3d
item-003: item03.t3d
item-004: item04.t3d
item-005: item05.t3d
item-006: item06.t3d
item-007: item07.t3d
item-008: item08.t3d
Shift+LPM i Shift+PPM, to teraz zoom.Jak tak to potwierdzam... działa :) W sumie dla mnie działając z pulpitem to te wszystkie bajery są nie potrzebne. Zbliżenie na stałe ustawiam tak, żeby tylko widok z szyby był i najchętniej to usunąłbym haslera z ekranu. Dźwięki też niektóre wyłączam mając realistyczne. Wieć z mojego punktu widzenia fajnie byłoby, gdyby niektóre elementy wystroju wnętrza kabiny nie były jego integralną częścią i żeby je można było wyłączać i mieć czysty widok na okno.
Na plus. Podobają mi się nowe (choć pewnie pojawiły się we wcześniejszych exe) ekrany ładowania modelviewera. Fajny jest także ekran z pytaniem o wyjście z programu. Zoom po wywaleniu z rolki myszy działa o wiele lepiej, choć moim zdaniem zmiana FOV mogłaby działać jeszcze ciut szybciej. Coś nie mogę zaobserwować w akcji nowych semaforów, ale będę cierpliwie szukać :)Zoom pod rolka byl niepraktyczny, tam mozna cos innego np. z propozycji @nbmx'a dac. Mozna dac w konfigu ustawianie predkosci regulacji FoV. Na razie tylko sygnaly 'pulsujace' sie zmienily :).
A teraz uwagi. Nowe panele informacyjne zajmują naprawdę mnóstwo miejsca na ekranie. A gdyby tak wywalić z tych paneli czarne, półprzeźroczyste tła? W przypadku krótkich komunikatów nie mielibyśmy 1/4 ekranu zajętej czarnym, pustym panelem. Widzę, że pod LPM+4 pojawiło się to, co wcześniej siedziało pod klawiszem F1. Myślę, że te informacje powinny być prezentowane w osobnym panelu- zegar plus bardzo skrócony rozkład jazdy są chyba w dość częstym użyciu, może więc warto zrobić je tak, by były dość "dyskretne" na ekranie. Idąc dalej, czy aby na pewno potrzebujemy dwóch paneli, które w gruncie rzeczy można by połączyć w jeden? Mówię tutaj o informacjach nt aktywnej lokomotywy i najbliższego pojazdu. Ewentualnie może niektóre z tych informacji prezentować tylko w trybie debugowania?Przezroczystosc tla jest w konfigu, od nastepnej wersji powinno dzialac prawidlowo. Po przeniesieniu na nowy system wyswietlania wszystkich paneli informacyjnych, bedzie sie myslec o jakiejs praktycznej orgainzacji tego.
I jeszcze jedna rzecz. Odpaliłem przykładowy scenariusz "linia61_tl-1" na exe 160116-1 i mam problem ze świecącą roślinnością. To samo jest na 150116-1, z kolei 120116 nie wywołuje tego błędu.
Ja za to wolę nocne scenerie bo zwykle tylko w nocy mam czas pojeździćJa niestety mam problem z oczami, stąd też nie za bardzo te nocne scenerie są dla mnie. Gdyby było jakieś rozsądne oświetlenie, to nocny klimat potrafiłbym zaakceptować. Klawiszologia, trzeba się będzie przestawić, ale... w końcu miał być rozwój. Z tym, że umożliwienie samodzielnej konfiguracji może (nie mus) przynieść zalew pytań, od tych to im nie działa. Odpala się bezpośrednio i przez rainsted.
ReplacableSkin =
Global::asCurrentTexturePath + ReplacableSkin; // skory tez z dynamic/...
if ((i = ReplacableSkin.Pos("|")) > 0) // replacable dzielone
{
iMultiTex = -1;
ReplacableSkinID[-iMultiTex] = TTexturesManager::GetTextureID(
NULL, NULL, ReplacableSkin.SubString(1, i - 1).c_str(),
Global::iDynamicFiltering);
ReplacableSkin.Delete(1, i); // usunięcie razem z pionową kreską
ReplacableSkin = Global::asCurrentTexturePath +
ReplacableSkin; // odtworzenie początku ścieżki
// sprawdzić, ile jest i ustawić iMultiTex na liczbę podanych tekstur
if (!ReplacableSkin.IsEmpty())
{ // próba wycięcia drugiej nazwy
iMultiTex = -2; // skoro zostało coś po kresce, to są co najmniej dwie
if ((i = ReplacableSkin.Pos("|")) == 0) // gdy nie ma już kreski
ReplacableSkinID[-iMultiTex] = TTexturesManager::GetTextureID(
NULL, NULL, ReplacableSkin.SubString(1, i - 1).c_str(),
Global::iDynamicFiltering);
else
{ // jak jest kreska, to wczytać drugą i próbować trzecią
ReplacableSkinID[-iMultiTex] = TTexturesManager::GetTextureID(
NULL, NULL, ReplacableSkin.SubString(1, i - 1).c_str(),
Global::iDynamicFiltering);
ReplacableSkin.Delete(1, i); // usunięcie razem z pionową kreską
ReplacableSkin = Global::asCurrentTexturePath +
ReplacableSkin; // odtworzenie początku ścieżki
if (!ReplacableSkin.IsEmpty())
{ // próba wycięcia trzeciej nazwy
iMultiTex =
-3; // skoro zostało coś po kresce, to są co najmniej trzy
if ((i = ReplacableSkin.Pos("|")) == 0) // gdy nie ma już kreski
ReplacableSkinID[-iMultiTex] = TTexturesManager::GetTextureID(
NULL, NULL, ReplacableSkin.SubString(1, i - 1).c_str(),
Global::iDynamicFiltering);
else
{ // jak jest kreska, to wczytać trzecią i próbować czwartą
ReplacableSkinID[-iMultiTex] = TTexturesManager::GetTextureID(
NULL, NULL, ReplacableSkin.SubString(1, i - 1).c_str(),
Global::iDynamicFiltering);
ReplacableSkin.Delete(1, i); // usunięcie razem z pionową kreską
ReplacableSkin = Global::asCurrentTexturePath +
ReplacableSkin; // odtworzenie początku ścieżki
if (!ReplacableSkin.IsEmpty())
{ // próba wycięcia trzeciej nazwy
iMultiTex = -4; // skoro zostało coś po kresce, to są co
// najmniej cztery
ReplacableSkinID[-iMultiTex] =
TTexturesManager::GetTextureID(
NULL, NULL,
ReplacableSkin.SubString(1, i - 1).c_str(),
Global::iDynamicFiltering);
// więcej na razie nie zadziała, a u tak trzeba to do modeli
// przenieść
}
}
}
}
}
}
if (iMultiTex > 0)
{ // jeśli model ma 4 tekstury
ReplacableSkinID[1] = TTexturesManager::GetTextureID(
NULL, NULL, (ReplacableSkin + ",1").c_str(), Global::iDynamicFiltering);
if (ReplacableSkinID[1])
{ // pierwsza z zestawu znaleziona
ReplacableSkinID[2] = TTexturesManager::GetTextureID(
NULL, NULL, (ReplacableSkin + ",2").c_str(), Global::iDynamicFiltering);
if (ReplacableSkinID[2])
{
iMultiTex = 2; // już są dwie
ReplacableSkinID[3] = TTexturesManager::GetTextureID(
NULL, NULL, (ReplacableSkin + ",3").c_str(),
Global::iDynamicFiltering);
if (ReplacableSkinID[3])
{
iMultiTex = 3; // a teraz nawet trzy
ReplacableSkinID[4] = TTexturesManager::GetTextureID(
NULL, NULL, (ReplacableSkin + ",4").c_str(),
Global::iDynamicFiltering);
if (ReplacableSkinID[4])
iMultiTex = 4; // jak są cztery, to blokujemy podmianę tekstury
// rozkładem
}
}
}
else
{ // zestaw nie zadziałał, próbujemy normanie
iMultiTex = 0;
ReplacableSkinID[1] = TTexturesManager::GetTextureID(
NULL, NULL, ReplacableSkin.c_str(), Global::iDynamicFiltering);
}
}
ReplacableSkin =
Global::asCurrentTexturePath + ReplacableSkin; // skory tez z dynamic/...
if ((i = ReplacableSkin.Pos("|")) > 0) // replacable dzielone
{
iMultiTex = -1;
ReplacableSkinID[-iMultiTex] = TTexturesManager::GetTextureID(
NULL, NULL, ReplacableSkin.SubString(1, i - 1).c_str(),
Global::iDynamicFiltering);
ReplacableSkin.Delete(1, i); // usunięcie razem z pionową kreską
ReplacableSkin = Global::asCurrentTexturePath +
ReplacableSkin; // odtworzenie początku ścieżki
// sprawdzić, ile jest i ustawić iMultiTex na liczbę podanych tekstur
if (!ReplacableSkin.IsEmpty())
{ // próba wycięcia drugiej nazwy
iMultiTex = -2; // skoro zostało coś po kresce, to są co najmniej dwie
if ((i = ReplacableSkin.Pos("|")) == 0) // gdy nie ma już kreski
ReplacableSkinID[-iMultiTex] = TTexturesManager::GetTextureID(
NULL, NULL, ReplacableSkin.SubString(1, i - 1).c_str(),
Global::iDynamicFiltering);
else
{ // jak jest kreska, to wczytać drugą i próbować trzecią
ReplacableSkinID[-iMultiTex] = TTexturesManager::GetTextureID(
NULL, NULL, ReplacableSkin.SubString(1, i - 1).c_str(),
Global::iDynamicFiltering);
ReplacableSkin.Delete(1, i); // usunięcie razem z pionową kreską
ReplacableSkin = Global::asCurrentTexturePath +
ReplacableSkin; // odtworzenie początku ścieżki
if (!ReplacableSkin.IsEmpty())
{ // próba wycięcia trzeciej nazwy
iMultiTex =
-3; // skoro zostało coś po kresce, to są co najmniej trzy
if ((i = ReplacableSkin.Pos("|")) == 0) // gdy nie ma już kreski
ReplacableSkinID[-iMultiTex] = TTexturesManager::GetTextureID(
NULL, NULL, ReplacableSkin.SubString(1, i - 1).c_str(),
Global::iDynamicFiltering);
else
{ // jak jest kreska, to wczytać trzecią i próbować czwartą
ReplacableSkinID[-iMultiTex] = TTexturesManager::GetTextureID(
NULL, NULL, ReplacableSkin.SubString(1, i - 1).c_str(),
Global::iDynamicFiltering);
ReplacableSkin.Delete(1, i); // usunięcie razem z pionową kreską
ReplacableSkin = Global::asCurrentTexturePath +
ReplacableSkin; // odtworzenie początku ścieżki
if (!ReplacableSkin.IsEmpty())
{ // próba wycięcia trzeciej nazwy
iMultiTex = -4; // skoro zostało coś po kresce, to są co
// najmniej cztery
ReplacableSkinID[-iMultiTex] =
TTexturesManager::GetTextureID(
NULL, NULL,
ReplacableSkin.SubString(1, i - 1).c_str(),
Global::iDynamicFiltering);
// więcej na razie nie zadziała, a u tak trzeba to do modeli
// przenieść
}
}
}
}
}
}
if (iMultiTex > 0)
{ // jeśli model ma 4 tekstury
ReplacableSkinID[1] = TTexturesManager::GetTextureID(
NULL, NULL, (ReplacableSkin + ",1").c_str(), Global::iDynamicFiltering);
if (ReplacableSkinID[1])
{ // pierwsza z zestawu znaleziona
ReplacableSkinID[2] = TTexturesManager::GetTextureID(
NULL, NULL, (ReplacableSkin + ",2").c_str(), Global::iDynamicFiltering);
if (ReplacableSkinID[2])
{
iMultiTex = 2; // już są dwie
ReplacableSkinID[3] = TTexturesManager::GetTextureID(
NULL, NULL, (ReplacableSkin + ",3").c_str(),
Global::iDynamicFiltering);
if (ReplacableSkinID[3])
{
iMultiTex = 3; // a teraz nawet trzy
ReplacableSkinID[4] = TTexturesManager::GetTextureID(
NULL, NULL, (ReplacableSkin + ",4").c_str(),
Global::iDynamicFiltering);
if (ReplacableSkinID[4])
iMultiTex = 4; // jak są cztery, to blokujemy podmianę tekstury
// rozkładem
}
}
}
else
{ // zestaw nie zadziałał, próbujemy normanie
iMultiTex = 0;
ReplacableSkinID[1] = TTexturesManager::GetTextureID(
NULL, NULL, ReplacableSkin.c_str(), Global::iDynamicFiltering);
}
}
else
ReplacableSkinID[1] = TTexturesManager::GetTextureID(
NULL, NULL, ReplacableSkin.c_str(), Global::iDynamicFiltering);
if (TTexturesManager::GetAlpha(ReplacableSkinID[1]))
iAlpha = 0x31310031; // tekstura -1 z kanałem alfa - nie renderować w cyklu
// nieprzezroczystych
else
iAlpha = 0x30300030; // wszystkie tekstury nieprzezroczyste - nie renderować w
// cyklu przezroczystych
if (ReplacableSkinID[2])
if (TTexturesManager::GetAlpha(ReplacableSkinID[2]))
iAlpha |= 0x02020002; // tekstura -2 z kanałem alfa - nie renderować w cyklu
// nieprzezroczystych
if (ReplacableSkinID[3])
if (TTexturesManager::GetAlpha(ReplacableSkinID[3]))
iAlpha |= 0x04040004; // tekstura -3 z kanałem alfa - nie renderować w cyklu
// nieprzezroczystych
if (ReplacableSkinID[4])
if (TTexturesManager::GetAlpha(ReplacableSkinID[4]))
iAlpha |= 0x08080008; // tekstura -4 z kanałem alfa - nie renderować w cyklu
// nieprzezroczystych
}
A tymczasem stworzylem event setfog...Mgła po zmianie eventem będzie płynnie się zmieniać, czy też nagle zmieni swoje parametry?
EVENT LAUNCHED: klonowo_zwr16_0 by eu07-515
EVENT LAUNCHED: klonowo_zwr16_vmax by eu07-515
type: TrackVel
vel: -1.000000
EVENT LAUNCHED: klonowo_m2-s10 by eu07-515
Multiple passed
EVENT ADDED TO QUEUE: klonowo_m2_sem_ligh10 by eu07-515
EVENT ADDED TO QUEUE: klonowo_m2_sem_info_v40 by eu07-515
EVENT ADDED TO QUEUE: klonowo_m2_sem_distinfo_vmax by eu07-515
EVENT LAUNCHED: klonowo_m2_sem_ligh10 by eu07-515
EVENT LAUNCHED: klonowo_m2_sem_distinfo_vmax by eu07-515
Type: UpdateValues - SetVelocity 0 -1
Scenariusz z EP09.Z tym, że taki kwiatek w kilku miejscach był, jak w załączniku: pasy świetlne semaforów mrugają poświatą, czego załącznik do końca nie oddaje.Ja natomiast zauważyłem, że to samo występuje na scenerii Bałtyk. Każdy semafor z komorą pasa świetlnego w ten sposób świeci.
if (!FEX(QGlobal::asAPPDIR + D->asBaseDir + textur[4] +".tga")) textur[4] = "nowhere";
Złapie gdy tabliczka będzie w dds? Tu był jakiś wyjątek i tekstura miała być nieodwrócona niezależnie od formatu. Nie wiem dlaczego.Nie zauważyłem edycji.Kod: [Zaznacz]if (!FEX(QGlobal::asAPPDIR + D->asBaseDir + textur[4] +".tga")) textur[4] = "nowhere";
Działa na skład wagonowy, gdzie tylko pierwszy pojazd ma headdriver i nie ma ukrotnienia między pojazdami?
Loading - texture: textures\dynamic\pkp\en57-2000_v1\en57-2000_rb.
Failed
Missed texture: textures\dynamic\pkp\en57-2000_v1\en57-2000_rb.
Loading - dynsets J:\EU1504pacz\dynstates\en57-2000rb.madd
Loading - texture: dynamic\pkp\en57-2000_v1\nowhere.dds
New timetable for en57-2000ra: ex7424
Loading - texture: dynamic\pkp\en57-2000_v1\Wloclaw.tga
node;-1;0;BILLBOARD;model;25.0;-0.1;938.0;24.8;ip/billboards/03.t3d;qqq./textures/annuncio2.tga;;endmodel node;-1;0;BILLBOARD;model;-25.0;-0.1;938.0;-24.8;ip/billboards/03.t3d;qqq./textures/annuncio3.tga;;endmodel node;-1;0;BILLBOARD;model;6.7;1.9;923.0;0.1;ip/billboards/reklam_300.t3d;qqq./textures/3in1-01.tga;;endmodel |
EU07 i EN57 odpala się na p3 ale EN57 nie ma tekstury tylko tabliczki. Przy EU07 bilboardy widoczne i środkowy się animuje (2 z 3 reklam normalne, trzecia jakaś sieczka). F11 działą i niczego nie wywala... jak widać ;)Widać, nie widać, u Ciebie nie wywala, ale u mnie tak. Robię zrzut ekranu który się zapisał, a maszynę wywaliło do windy. O braku tekstury zewnętrznej pisałem kilka postów wcześniej. Powtórzę, siódemka na tej samej SCN wczytuje się poprawnie, a kibel nie. Aby wczytać kibla zaremowałem modele bilbordów, później pozbawiłem ich tekstur. To pomogło na wczytanie, ale nie rozwiązało sprawy.
trainset none tor_st1_2 0 0
node -1 0 EN57-2040 dynamic PKP\EN57-2000_V1 EN57-2040_RA 6BA 0 nobody 55 0 enddynamic
node -1 0 EN57-2040 dynamic PKP\EN57-2000_V1 EN57-2040_S 6BS 0 nobody 55 0 enddynamic
node -1 0 EN57-2040 dynamic PKP\EN57-2000_V1 EN57-2040_RB 6BB 0 nobody 3 0 enddynamic
endtrainset
Jest mała zmiana. TD z rainsteda wysypuje się kawałek dalej.
// ************************************************************************************************
// Alternatywny parser plikow konfiguracyjnych
// ************************************************************************************************
void Global::ConfigParseQ(AnsiString filename)
{
TStringList *slINI;
slINI = new TStringList();
//char szINIFILE[200];
AnsiString line;
AnsiString test, key, p01, p02, p03, p04, p05, p06, debuglog, skyen, defaultext;
int calprtI, caliP1, caliP2, caliP3, caliP4, maxtexsize;
int calprtO, caloP1, caloP2, caloP3, caloP4;
int pos1, pos2, pos3;
bool calprtOok, calprtIok, i;
// sprintf(szINIFILE,"%s%s", QGlobal::asAPPDIR , "eu07.ini");
// WriteLog("READING CONFIG FILE... (" + AnsiString(szINIFILE) + ")");
char *strings[30];
char Policystr[4096] = "the|string|to|split";
char delims[] = " ";
slINI->LoadFromFile(QGlobal::asAPPDIR + "eu07.ini");
// std::ifstream FileINI("eu07.ini");
WriteLog("Config parsing...");
//if(FileINI)
// {
// while(std::getline(FileINI,line))
// {
for (int l = 0; l<slINI->Count-1; l++)
{
line = slINI->Strings[l];
pos1 = pos2 = pos3 = 0;
pos1 = line.Pos("//");
pos2 = line.Pos(":");
pos3 = line.Pos("//");
test = line.SubString(1, pos1-1);
strcpy(Policystr, test.c_str());
i = 0;
strings[i] = strtok( Policystr, delims );
while( strings[i] != NULL )
{
printf("%d '%s'\n", i, strings[i]);
strings[++i] = strtok( NULL, delims );
}
if (pos1 > 4) // gdy nie ma komentarza przed kluczem, troche prowizorycznie
{
WriteLog(test + ": " + strings[0] + "-> [" + Trim(strings[1]) + "][" + Trim(strings[2]) + "]");
key = LowerCase(Trim(strings[0]));
p01 = LowerCase(Trim(strings[1]));
p02 = LowerCase(Trim(strings[2]));
p03 = LowerCase(Trim(strings[3]));
p04 = LowerCase(Trim(strings[4]));
p05 = LowerCase(Trim(strings[5]));
p06 = LowerCase(Trim(strings[6]));
if (key == "sceneryfile") strcpy(szSceneryFile, p01.c_str());
if (key == "humanctrlvehicle") asHumanCtrlVehicle = p01;
if (key == "width") iWindowWidth = p01.ToIntDef(800);
if (key == "height") iWindowHeight = p01.ToIntDef(600);
if (key == "fullscreen") bFullScreen = YNToBool(p01);
if (key == "bpp") iBpp = p01.ToIntDef(32);
if (key == "debugmode") DebugModeFlag = YNToBool(p01);
if (key == "soundenabled") bSoundEnabled = YNToBool(p01);
if (key == "physicslog") WriteLogFlag = YNToBool(p01);
if (key == "debuglog") debuglog = p01;
if (key == "wireframe") bWireFrame = YNToBool(p01);
if (key == "physicsdeactivation") PhysicActivationFlag = YNToBool(p01);
if (key == "adjustscreenfreq") bAdjustScreenFreq = YNToBool(p01);
if (key == "enabletraction") bEnableTraction = YNToBool(p01);
if (key == "loadtraction") bLoadTraction = YNToBool(p01);
if (key == "livetraction") bLiveTraction = YNToBool(p01);
if (key == "managenodes") bManageNodes = YNToBool(p01);
if (key == "friction") fFriction = p01.ToDouble();
if (key == "skyenabled") skyen = p01;
if (key == "brakestep") fBrakeStep = p01.ToDouble();
if (key == "mousescale") {fMouseXScale = p01.ToDouble(); fMouseYScale = p02.ToDouble();}
if (key == "defaultext") defaultext = p01;
if (key == "maxtexturesize") maxtexsize = p01.ToIntDef(16384);
if (key == "defaultfiltering") iDefaultFiltering = p01.ToIntDef(-1);
if (key == "ballastfiltering") iBallastFiltering = p01.ToIntDef(-1);
if (key == "railprofiltering") iRailProFiltering = p01.ToIntDef(-1);
if (key == "dynamicfiltering") iDynamicFiltering = YNToBool(p01);
if (key == "newaircouplers") bnewAirCouplers = YNToBool(p01);
if (key == "usevbo") bUseVBO = YNToBool(p01);
if (key == "feedbackmode") iFeedbackMode = p01.ToIntDef(1);
if (key == "feedbackport") iFeedbackPort = p01.ToIntDef(0);
if (key == "smoothtraction") bSmoothTraction = YNToBool(p01);
if (key == "timespeed") fTimeSpeed = p01.ToIntDef(1);
if (key == "multisampling") iMultisampling = p01.ToIntDef(2); // domyślnie 2
if (key == "glufont") bGlutFont = YNToBool(p01);
if (key == "lang") asLang = p01;
if (key == "decompressdds") bDecompressDDS = YNToBool(p01);
if (key == "freefly") { bFreeFly = YNToBool(p01);pFreeCameraInit[0].x = p02.ToDouble(); pFreeCameraInit[0].y = p03.ToDouble(); pFreeCameraInit[0].z = p04.ToDouble();}
if (key == "convertmodels") iConvertModels = p01.ToIntDef(7);
if (key == "inactivepause") bInactivePause = YNToBool(p01);
if (key == "modifytga") iModifyTGA = p01.ToIntDef(0);
if (key == "hideconsole") Global::bHideConsole = YNToBool(p01);
if (key == "rollfix") bRollFix = YNToBool(p01);
if (key == "fpsaverage") fFpsAverage = p01.ToDouble();
if (key == "fpsdeviation") fFpsDeviation = p01.ToDouble();
if (key == "fpsradiusmax") fFpsRadiusMax = p01.ToDouble();
if (key == "joinduplicatedevents") bJoinEvents = YNToBool(p01);
if (key == "hiddenevents") iHiddenEvents = p01.ToIntDef(0);
if (key == "opengl") fOpenGL = p01.ToDouble();
if (key == "latitude") fLatitudeDeg = p01.ToDouble();
if (key == "heightbase") fDistanceFactor = p01.ToInt();
if (key == "doubleambient") bDoubleAmbient = YNToBool(p01);
if (key == "slowmotion") iSlowMotionMask = p01.ToIntDef(-1);
if (key == "calibratein") { calprtI = p01.ToIntDef(-1); caliP1 = p02.ToDouble(); caliP2 = p03.ToDouble(); caliP3 = p04.ToDouble(); caliP4 = p05.ToDouble(); calprtIok = true;}
if (key == "calibrateout"){ calprtO = p01.ToIntDef(-1); caloP1 = p02.ToDouble(); caloP2 = p03.ToDouble(); caloP3 = p04.ToDouble(); caloP4 = p05.ToDouble(); calprtOok = true;}
}
}
// }
// na koniec trochę zależności
if (defaultext == "tga") szDefaultExt = szTexturesTGA; // domyślnie od TGA
if (debuglog == "yes") iWriteLogEnabled = 3;
if (debuglog == "no") iWriteLogEnabled = 0;
else iWriteLogEnabled = 3;
if (skyen == "yes") asSky = "1";
else asSky = "0";
if (maxtexsize <= 64) iMaxTextureSize = 64;
else
if (maxtexsize <= 128) iMaxTextureSize = 128;
else
if (maxtexsize <= 256) iMaxTextureSize = 256;
else
if (maxtexsize <= 512) iMaxTextureSize = 512;
else
if (maxtexsize <= 1024) iMaxTextureSize = 1024;
else
if (maxtexsize <= 2048) iMaxTextureSize = 2048;
else
if (maxtexsize <= 4096) iMaxTextureSize = 4096;
else
if (maxtexsize <= 8192) iMaxTextureSize = 8192;
else
iMaxTextureSize = 16384;
if (!bLoadTraction) // wczytywanie drutów i słupów
{ // tutaj wyłączenie, bo mogą nie być zdefiniowane w INI
bEnableTraction = false; // false = pantograf się nie połamie
bLiveTraction = false; // false = pantografy zawsze zbierają 95% MaxVoltage
}
// if (fMoveLight>0) bDoubleAmbient=false; //wtedy tylko jedno światło ruchome
// if (fOpenGL<1.3) iMultisampling=0; //można by z góry wyłączyć, ale nie mamy jeszcze fOpenGL
if (iMultisampling)
{ // antyaliasing całoekranowy wyłącza rozmywanie drutów
bSmoothTraction = false;
}
if (iMultiplayer > 0)
{
bInactivePause = false; // okno "w tle" nie może pauzować, jeśli włączona komunikacja
// pauzowanie jest zablokowane dla (iMultiplayer&2)>0, więc iMultiplayer=1 da się zapauzować
// (tryb instruktora)
}
fFpsMin = fFpsAverage -
fFpsDeviation; // dolna granica FPS, przy której promień scenerii będzie zmniejszany
fFpsMax = fFpsAverage +
fFpsDeviation; // górna granica FPS, przy której promień scenerii będzie zwiększany
if (iPause)
iTextMode = VK_F1; // jak pauza, to pokazać zegar
if (calprtIok && calprtOok)
{
if ((calprtI < 0) || (calprtI > 5)) calprtI = 5; // na ostatni, bo i tak trzeba pominąć wartości
fCalibrateIn[calprtI][0] = caliP1; // wyraz wolny
fCalibrateIn[calprtI][1] = caliP2; // mnożnik
fCalibrateIn[calprtI][2] = caliP3; // mnożnik dla kwadratu
fCalibrateIn[calprtI][3] = caliP4; // mnożnik dla sześcianu
if ((calprtO < 0) || (calprtO > 6)) calprtO = 6; // na ostatni, bo i tak trzeba pominąć wartości
fCalibrateOut[calprtO][0] = caloP1; // wyraz wolny
fCalibrateOut[calprtO][1] = caloP2; // mnożnik liniowy
fCalibrateOut[calprtO][2] = caloP3; // mnożnik dla kwadratu
fCalibrateOut[calprtO][3] = caloP4; // mnożnik dla sześcianu
}
{ // to poniżej wykonywane tylko raz, jedynie po wczytaniu eu07.ini
Console::ModeSet(iFeedbackMode, iFeedbackPort); // tryb pracy konsoli sterowniczej
iFpsRadiusMax = 0.000025 * fFpsRadiusMax * fFpsRadiusMax; // maksymalny promień renderowania 3000.0 -> 225
if (iFpsRadiusMax > 400)
iFpsRadiusMax = 400;
if (fDistanceFactor > 1.0)
{ // dla 1.0 specjalny tryb bez przeliczania
fDistanceFactor = iWindowHeight / fDistanceFactor; // fDistanceFactor>1.0 dla rozdzielczości większych niż bazowa
fDistanceFactor *= (iMultisampling + 1.0) * fDistanceFactor; // do kwadratu, bo większość odległości to ich kwadraty
}
}
WriteLog("INI FILE OK.");
WriteLog("");
// FileINI.close();
}
environment informations:
appfile: [D:\MaSzyna\EU07-180116-1.exe]
apppath: [D:\MaSzyna\]
shotdir: [D:\MaSzyna\SCR\]
aparams: [-s $.scn -v ET22-768]
appvers: 15 4 1171 474
appdate: 20160117 253232
release: 20160117 253232, 15.4.1171.474
rundate: 20160122 075640
deskdim: 1280x1024
userpid: 2933246009
sysvers: 6.1.7601
sysname: Windows 7
servpak: Service Pack 1
klayout: 415(Polish)
Reading eu07.ini...
LoadIniFile() - 1
LoadIniFile() - 2
LoadIniFile() - 3
LoadIniFile() - 4
Config parsing...
Panie kolego, wydanie 200116 prosze sciagnac, na pewno bedzie dzialac. Hmm... znaczy sie to chyba dnia 21 zostalo naprawione, ja juz ine ogarniam d;trainset none none 0 0
node -1 0 EP09-025 dynamic PKP\EP09_V1 104E-025 104E_3 -1 headdriver 3 0 enddynamic
endtrainset
Skoro o panelach mowa, to może czas na jakąś małą dyskusję na temat tego, ile tych paneli ma być, jak mają być rozplanowane i co na nich ma się znaleźć?No chyba wiesz jak to teraz wyglada, wiec czekam na propozycje.
Z innych rzeczy, które rzuciły mi się w oczy. Nowy starter zawsze wskakiwał mi na ekran tuż po załadowaniu scenerii i pierwszym użyciu LPM. Niby nic denerwującego- po kolejnym użyciu LPM znikał sobie w tle- ale jednak coś.
Ctrl+F4 ciągle nie działa, jak powinno. Podobnie jest z paskiem postępu wczytywania scenerii. Myślę Q, że powinieneś trochę zwolnić tempo wprowadzania nowości i wypolerować na błysk to, co już dodałeś :)
Ps. Śniło mi się, że na td2 pojawiły się podkłady, tory i inne cuda tworzone kiedyś przez bodajże Jeżyka i Toleina.
Śniło mi się... No dobra, zapatrzyłem się na konkurencję (TD2) ;)
Ale co sie dzieje, jaki starter?Patrz załącznik, screenshot bardzo "pro", ani Printscreen ani F11 ani już nawet FRAPS nie były w stanie tego uchwycić :) A więc takie okienko wskakuje na ekran przy pierwszym użyciu LPM tuż po załadowaniu scenerii.
Przeciez zwolnilem, chyba juz z tydzien czasu walcze z tym 'config parsing...'Racja, zwracam honor :)
willove, będziesz programował czy tylko robisz makiety?Będę chciał to ożywić, jednak z moimi umiejętnościami taki sterter będzie gotowy, jak MaSzyna będzie do kupienia w empiku ;)
światła oświetlające realnie drogę
lusterka odbijające to co jest z tyłu
dodanie zjawisk atmosferycznych (opad deszczu, śniegu) itd.Był gdzieś jeszcze filmik gdzie jako krople deszczu lub śniegu były generowane trójkąciki - Autor: queuedEU
Na pierwszym filmie to nie sa swiatla lokomotywy. Zapewne trudniej doczepic takie zrodlo swiatla do obiektu ruchomego, stad jeszcze tego nie ma. Pewnie caly silnik graficzny do przepisania.Dlatego wolałbym, aby Q skupił się na przepisaniu kodu. :)
(http://dropbox.eu07.es/pmppw/ROZNE/20160126-104145.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160126-104110.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160126-104021.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160126-103945.jpg) |
(http://dropbox.eu07.es/pmppw/ROZNE/20160125-181443.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160125-181353.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160125-181254.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160126-232835.jpg) |
(http://dropbox.eu07.es/pmppw/ROZNE/20160127-143907.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160127-144454.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160127-144255.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160127-144147.jpg) |
(http://dropbox.eu07.es/pmppw/ROZNE/20160127-154001.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160127-154336.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160127-154232.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160127-154107.jpg) |
(http://dropbox.eu07.es/pmppw/ROZNE/20160127-154024.jpg) |
Jedna w sumie pierdyłka, ale na przyszłość w sumie by się przydało: zaimplementować powtarzanie ruchu po łuku a nie cały obrót. Wycieraczki by się w końcu przydało uruchomić a i parę innych rzeczy by na tym też zyskało :)Wycieraczki mają gotową animację od lat. Tylko muszą być częścią kabiny/lowpoli, bo nie ma wyprowadzenia animacji do modelu zewnętrznego.
(http://dropbox.eu07.es/pmppw/ROZNE/20160127-213253.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160127-213206.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160127-213143.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160127-213047.jpg) |
(http://dropbox.eu07.es/pmppw/ROZNE/20160127-212911.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160127-212800.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160127-212734.jpg) |
Musisz usunac caly katalog stations, poniewaz niektore z plikow tam, maja stare formatowanie. Wypakuj na nowo ten katalog z wydania 22 czy 24.Pomogło, dzięki.
(http://dropbox.eu07.es/pmppw/ROZNE/20160128-192527.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160128-205310.jpg) |
while (s < fLength)
{
float lastS;
// step=SquareMagnitude(Global::GetCameraPosition()+pos);
i += iQualityFactor; // kolejny punkt łamanej
s += step; // końcowa pozycja segmentu [m]
m1 = m2;
jmm1 = jmm2; // stara pozycja
m2 = s / fLength;
jmm2 = 1.0 - m2; // nowa pozycja
lastS = s;
if (s > fLength - 0.5) // Ra: -0.5 żeby nie robiło cieniasa na końcu
{ // gdy przekroczyliśmy koniec - stąd dziury w torach...
step -= (s - fLength); // jeszcze do wyliczenia mapowania potrzebny
s = fLength;
i = iSegCount; // 20/5 ma dawać 4
m2 = 1.0;
jmm2 = 0.0;
}
while (tv1 < 0.0)
tv1 += 1.0; // przestawienie mapowania
tv2 = tv1 - step / fTextureLength; // mapowanie na końcu segmentu
t = fTsBuffer[i]; // szybsze od GetTFromS(s);
pos2 = FastGetPoint(t);
dir = FastGetDirection(t, fOffset); // nowy wektor kierunku
// parallel2 = CrossProduct(dir,vector3(0,1,0)); //wektor poprzeczny
parallel2 = Normalize(vector3(-dir.z, 0.0, dir.x)); // wektor poprzeczny
// Tutaj renderowanie podkladow?
if (!bTieAdded)
{
float r1 = RadToDeg(fRoll1);
float r2 = RadToDeg(fRoll2);
float angle = GetAngleOfLineBetweenTwoPoints(pos1, pos2);
float troll = r2;
if (pos1.z > 0) troll = -troll;
if ( r2 < 0.1) troll = 0.0f;
// CZY TUTAJ POWINNO BYC ZROBIONE TWORZENIE PODKLADOW JAKO TGroundNode, POZWOLILOBY TO NA
// USTAWIENIE MAXDISTANCE
//--draw_railtiex(pos1.x, pos1.y-0.37, pos1.z, angle, troll, false);
AnsiString asRailJointModel;
AnsiString NN = "tie-" + IntToStr(QGlobal::iRENDEREDTIES);
tiefile = "podklad-hd-1l.t3d";
//tiefile = "podklad-ps93-1h.t3d";
tiefile = "none";
//if (TRK->asTieModelL == "none") tiefile = "podklad-hd-1l.t3d";
asRailJointModel = "lacznikszyn-1.t3d";
if ((lastS >= fLength-0.5))
Global::pGround->AddGroundNodeQ("J"+NN+FloatToStr(pos1.z), "jnt", "none", asRailJointModel, "none", 110, 0, pos2.x, pos2.y-0.14, pos2.z, -angle, troll);
if (TRK->asTieModelL != "none") tiefile = TRK->asTieModelL;
// if (lastS != (fLength))
if ((lastS < fLength-0.2) && (lastS > 0.4))
if (tiefile != "none") Global::pGround->AddGroundNodeQ(NN, "tie", "none", tiefile, "none", 110, 0, pos1.x, pos1.y-0.37, pos1.z, -angle, troll);
//if ((lastS <= 0.75))
//if (tiefile != "none") Global::pGround->AddGroundNodeQ("f"+NN, "tie", "none", tiefile, "none", 110, 0, pos1.x, pos1.y-0.37, pos1.z+0.20, -angle, troll);
if (tiefile != "none") QGlobal::iRENDEREDTIES++;
}
pos1 = pos2;
parallel1 = parallel2;
tv1 = tv2;
}
(http://dropbox.eu07.es/pmppw/ROZNE/20160129-123328.jpg) |
Widze to jako automatyczne wstawiane gotowego modelu podrozjezdnicy dla konkretnego rozjazdu, wymagaloby to stworzenia takich modeli. Podsypke pod rozjazdem, o ile nie ma zadnych przeciwwskazan mozna rysowac programowo.O to by wiele uprościło, bo teraz trzeba robić osobny model dla każdego przekroju podsypki. Miałem też problemy z przenikaniem płaszczyzny podsypki i podrozjezdnic co wymuszało wycinanie dziur na podkłady. Zbędna robota i komplikowanie siatki.
(http://dropbox.eu07.es/pmppw/ROZNE/20160129-153008.jpg) |
(http://dropbox.eu07.es/pmppw/ROZNE/20160129-213944.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160129-214119.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160130-140250.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160130-144400.jpg) |
(http://q.lisek.org.pl/dropbox/20160130-221639.jpg) | (http://q.lisek.org.pl/dropbox/20160130-234315.jpg) | (http://q.lisek.org.pl/dropbox/20160130-230220.jpg) | (http://q.lisek.org.pl/dropbox/20160130-234242.jpg) |
(http://q.lisek.org.pl/dropbox/20160131-201740.jpg) | (http://q.lisek.org.pl/dropbox/20160131-201615.jpg) | (http://q.lisek.org.pl/dropbox/20160131-201419.jpg) |
(http://dropbox.eu07.es/pmppw/ROZNE/20160203-231555.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160203-231445.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160203-231424.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160203-225453.jpg) |
(http://dropbox.eu07.es/pmppw/ROZNE/20160203-224346.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160203-224002.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160203-223502.jpg) |
Igor, popraw literówkę. Odpalając LPM+7 jest napisane "INDYWIDUALNY ROSKŁAD JAZDY". Zmień S na Z.
Mam tak zarówno przy zaznaczeniu VBO, jak i bez.Wyglada na to ze nie odznaczyles 'Zapis pliku trymczasowego' w Rainstedzie.
Jak pierwszy raz słyszysz takie określenie? A rozkład, który się nam wyświetla to jest jaki rozkład, jak nie indywidualny?Igor, popraw literówkę. Odpalając LPM+7 jest napisane "INDYWIDUALNY ROSKŁAD JAZDY". Zmień S na Z.
Indywidualny powiadasz? Pierwsze slysze takie okreslenie.
(http://dropbox.eu07.es/pmppw/ROZNE/20160207-162545.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160207-033634.jpg) | (http://dropbox.eu07.es/pmppw/ROZNE/20160207-033412.jpg) |
(http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=test) | (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160207-033412) | (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160131-201419) |
Wagony z drzwiami przesuwnymi posiadamy i animują się, przy czym trudno wyczuć o jaką modyfikację lokomotyw masz na myśli.Chodzi mi o konieczność dodania wpisu przypisującego przyciskom ",", "." funkcję otwierania/zamykania drzwi. Gdy wagony są podłączone do EN57 gdzie jest ta czynność jest przypisana do tych przycisków to nie ma problemu z otwarciem w nich drzwi. Lokomotywy nie mają takiej funkcji przypisanej do tych przycisków. W niektórych tymi przyciskami włącza się wyświetlacze i nie mogą tym samym służyć do obsługi drzwi w wagonach.
Jak postulowałem to z rok, dwa lata temu to zjechano mnie że to mało realistyczne, bo przecież mechanik nie steruje drzwiami z lokomotywy - a przecież to byłoby najbardziej praktyczne rozwiązanie na chwile obecną.Wagony z drzwiami przesuwnymi posiadamy i animują się, przy czym trudno wyczuć o jaką modyfikację lokomotyw masz na myśli.Chodzi mi o konieczność dodania wpisu przypisującego przyciskom ",", "." funkcję otwierania/zamykania drzwi. Gdy wagony są podłączone do EN57 gdzie jest ta czynność jest przypisana do tych przycisków to nie ma problemu z otwarciem w nich drzwi. Lokomotywy nie mają takiej funkcji przypisanej do tych przycisków. W niektórych tymi przyciskami włącza się wyświetlacze i nie mogą tym samym służyć do obsługi drzwi w wagonach.
No przeciez pasazerowie beda se otwierac drzwi a pozniej ewentualnie gdy nie pozamykaja za soba to zamykacz sie przejdzie wzdluz skladu ;).Przy odskokowo-przesuwnych powyżej 5km/h powinny się automatycznie zamknąć chyba, że ktoś zdejmie blokadę kwadratem. ;)
Umieszczając na Forum materiały graficzne służące za poglądowe, skorzystaj z funkcji Załącz lub naszego Uploadu.
Obowiązuje wówczas limit 250 KiB na plik. W uzasadnionych przypadkach dopuszczalne jest umieszczanie grafik w treści wiadomości
(np. wątki o charakterze poradników). Wówczas grafiki nie mogą mieć wymiarów większych niż 640 × 480 pikseli i wagi większej niż 120 KiB, jednakże mogą stanowić odnośniki do grafik znacznie większych. Jeżeli masz problem z przystosowaniem obrazków do podanych wymogów, zajrzyj do Poradnika. Nieakceptowalne jest pozostawianie "białych połaci" przy zewnętrznych krawędziach obrazka.
W takim przypadku obraz powinien zostać przycięty. Obrazy takie, mimo spełniania limitu wagowego, będą usuwane.
Grafiki zostały usunięte, ponieważ użytkownicy zgłaszali rozjeżdżanie się posta.
Benek
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/qlauncher10.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=qlauncher10) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/qlauncher11.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=qlauncher11) |
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160217-160743.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160217-160743) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160217-160720.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160217-160720) |
Okej teraz pytanie do Was... Czy bardzo Wam przeszkadza to ze grtafiki sie rozjezdzaja?A czy mnie one przeszkadzały? Zobacz swoje wszystkie wiadomości, w zasadzie większość z nich łamie Regulamin i już wcześniej się one rozjeżdżały, a ja je ignorowałem. Masz niewiele niebieskich wpisów. Gdy użytkownicy, którzy są dłużej od Ciebie na forum i zrobili po prostu więcej niż Ty (mam na myśli oficjalną twórczość), zaczęli zgłaszać że im się posty nie mieszczą na szerokość monitora, to postanowiłem zareagować - zwłaszcza że u mnie występowało to samo. Co więcej, wysłałem Ci PW, żeby załatwić sprawę po cichu, nie edytując Twojego posta. Miałem nie reagować? No niestety, taka jest rola moderatora i pewnie mało kto wie że zgłaszałem administratorom, by zmienić Regulamin skoro jest tyle skarg. Oczywiście nikt nie widzi drugiej strony, zawsze ludzie łapali się na populizmy.
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160217-160743.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160217-160743) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160217-160720.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160217-160720) |
Natomiast działania nadgorliwych moderatorów mogą zirytować i skutecznie zniechęcić nie jednego zdolnego dewelopera do jakiegokolwiek (w końcu dobrowolnego) wkładu w rozwój maszyny.Mam wątpliwości, czy przeczytałeś moją wiadomość ze zrozumieniem. Jest Regulamin, który albo przestrzega każdy, albo nikt - wtedy Regulamin można w ogóle zlikwidować i się nim nie przejmować. Przeglądałeś kiedyś wiadomości ze starszych lat podczas poszukiwania interesującego Cię zagadnienia? Bo ja tak, zwłaszcza wtedy gdy próbowałem się czegoś nauczyć. I okazywało się często, że wystawiona grafika na zewnętrznym serwerze już dawno zniknęła, a obrazowała istotę problemu. Zauważ, że jeśli zostanie zmieniony Regulamin, to ja nie będę protestował, tylko się dostosuję, zwłaszcza że sam to już proponowałem. Każdy z Was ma prawo założenia tematu, przedyskutowania tego problemu i napisania do administratorów forum co o tym sądzi. Jak zrobicie to grupowo, to na pewno to miało większe znaczenie niż wiadomości PW pojedynczych osób.
A teraz to chyba nie działa...Działa na telefonie (trzech na androidzie) i także tablecie (też android). Na PC jest bardzo dobrze. Morał, bo taki musi być: Zawsze można wypracować coś fajnego dla wszystkich, warunek, to nie obrażanie na siebie tylko rzeczowa dyskusja i zrozumienie argumentów.
Dodano: 20 Lutego 2016, 07:47:05
…za to na komputerze jest świetnie! :)
Jest konfilkt, to go rozwiazujmy jednym postanowieniem zadanym w poprzednim moim poscie. W jedna lub w druga strone.Odpowiadam, tak samo. Tak samo jak wtedy kiedy Benek mnie krytykował. Robi tą samą robotę jak umie najlepiej, tak jak ja umiałem i jak Ty Mariusz, też byłeś Moderatorem.
ps. Ciekaw jestem, jakby to forum wygladalo, gdyby krytykanci Benka, modami byli.
Jak weźmiecie w banku kredyt, to spróbujcie się zbuntować i przestać go spłacać. Jest umowa i macie się dostosować. Tutaj jest dokładnie tak samo, przy czym macie prawo głosu i możecie przekonać drugą stronę, by zmienić warunki umowy.Z bankami to bywa tak ze zwijaja sie w najmniej przewidzianym momencie, a klienci zostaja pozbawieni dostepu do swoich kont.
Taki ze w moim przypadku tlumaczenie ze cos zniknie po jakims czasie jest niezasadne - standardowa linia obrony moderacji gdy nie ma innych argumentow.Jeśli zapewnisz to, że inni użytkownicy będą uploadować grafiki na inne serwery, z których nigdy grafiki nie zostaną usunięte, to ok. Ale czy Ty się będziesz tym przejmował? Nie. Możesz też poprosić administratorów o zmianę Regulaminu, zamiast robić tutaj offtopic. Zrozum że ja się nie czepiałem, dopóki użytkownicy nie zaczęli zgłaszać, że im to przeszkadza. Nie jesteś tutaj sam, więc uszanuj zdanie innych. Nie moje, innych. W logach moderacyjnych nadal widać te zgłoszenia, także jest dowód tego, że ja sobie tego nie wymyśliłem.
A moze ma to na celu ubic w zalazku jakikolwiek przejaw innowacji wprowadzanych w wyswietlaniu obrazkow pogladowych?Wstawienie linków w tagi img do grafik na zewnętrznych serwerach, to bardziej przejaw lenistwa niż innowacji. W dodatku wstawienie tych grafik w szablon tabeli, która powoduje przekroczenie domyślnej szerokości wiadomości - przez co pojawia się poziomy suwak dla niektórych rozdzielczości monitorów, to już szczyt bezguścia. Innowacyjne to byłoby napisanie skryptu w PHP czy innym języku, który analizowałby wysyłaną wiadomość i po znalezieniu znacznika img, ściągał ją na serwer eu07.pl (jeśliby byłaby na innym serwerze), odpowiednio zmniejszał jej wagę (przez konwersję) i umieszczał jako załącznik.
Jeśli zapewnisz to, że inni użytkownicy będą uploadować grafiki na inne serwery, z których nigdy grafiki nie zostaną usunięte, to ok. Ale czy Ty się będziesz tym przejmował? Nie. Możesz też poprosić administratorów o zmianę Regulaminu, zamiast robić tutaj offtopic. Zrozum że ja się nie czepiałem, dopóki użytkownicy nie zaczęli zgłaszać, że im to przeszkadza. Nie jesteś tutaj sam, więc uszanuj zdanie innych. Nie moje, innych. W logach moderacyjnych nadal widać te zgłoszenia, także jest dowód tego, że ja sobie tego nie wymyśliłem.
Wstawienie linków w tagi img do grafik na zewnętrznych serwerach, to bardziej przejaw lenistwa niż innowacji. W dodatku wstawienie tych grafik w szablon tabeli, która powoduje przekroczenie domyślnej szerokości wiadomości - przez co pojawia się poziomy suwak dla niektórych rozdzielczości monitorów, to już szczyt bezguścia. Innowacyjne to byłoby napisanie skryptu w PHP czy innym języku, który analizowałby wysyłaną wiadomość i po znalezieniu znacznika img, ściągał ją na serwer eu07.pl (jeśliby byłaby na innym serwerze), odpowiednio zmniejszał jej wagę (przez konwersję) i umieszczał jako załącznik.
odpowiednio zmniejszał jej wagę (przez konwersję)Czyli psuł jakość, zmniejszając do absurdalnego, jak podejrzewam miałeś na myśli, 250KiB. Mamy 2016 rok.
Czyli psuł jakość, zmniejszając do absurdalnego, jak podejrzewam miałeś na myśli, 250KiB. Mamy 2016 rok.Ja tego nie ustaliłem, czytaj ze zrozumieniem. Ja jestem od tego, by sprawdzać czy użytkownik przestrzega Regulaminu. Dla mnie może być limit 5GB na obrazek. Chcesz by limit był większy, pisz do administratorów, to jedyna droga.
Nadal nie rozumiesz ze moj przypadek jest wyjatkowy i jedyny w swoim rodzaju. Dlaczego wszyscy mieliby podazac ta droga?Sęk w tym, że nie jesteś wyjątkowy. Każdy jest tutaj równy.
Z tego co wiem, to od poranka tego pieknego dnia problem juz nie istnieje, wiec po co dalej ciagniesz, pasprzatasz po sobie? :-)Masz złe informacje. Jeśli użytkownicy będą zgłaszać Twoje wiadomości, a one nie będą zgodne z Regulaminem, to będziesz nadal poprawiany.
A teraz? ;)No co, zamiast rozjeżdżającego się posta mamy po prostu obrazek w nowym oknie. Czyż nie o to chodziło? Gra i trąbi. Howgh.
Okej teraz pytanie do Was... Czy bardzo Wam przeszkadza to ze grtafiki sie rozjezdzaja?
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160301-154147.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160301-154147) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160301-154451.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160301-154451) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160301-154324.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160301-154324) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160301-154242.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160301-154242) |
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160301-154123.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160301-154123) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160301-152900.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160301-152900) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160301-145911.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160301-145911) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160301-022956.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160301-022956) |
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160229-174151.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160229-174151) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160229-173426.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160229-173426) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160301-022939.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160301-022939) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160301-022817.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160301-022817) |
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/qlauncher03.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=qlauncher03) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/qlauncher04.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=qlauncher04) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/qlauncher01.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=qlauncher01) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/qlauncher02.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=qlauncher02) |
Hmmm> Igor kawał dobrej roboty. Więc skoro mamy śnieg to może być i deszcz. A z tym wiąże seię przerabianie modeli tak aby wycieraczki uruchomić. W większości taboru są zespawane z pudłem lub detalami. Kiedyś coś takiego było w symku (działająca wycieraczka).
Żeby wycieraczki miały sens, to należałoby zbierać wodę na szybie. Przy wyłączonych wycieraczkach i padającym deszczu, widzialność powinna się pogarszać:Czy to jest możliwe do wykonania?
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160302-133321.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160302-133321) |
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160302-191304.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160302-191304) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160302-190115.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160302-190115) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160302-190052.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160302-190052) |
Czyli jestes robotem przeszukujacym xd.
UWAGA! Mateu robi porzadki wiosenne na serwerze, tak wiec przez jakis czas beda problemy techniczne :)Dlatego mi strona nie działa... ;)
function StrToEnumTest(aStr:String):TEnumTest;
begin
result := TEnumTest(GetEnumValue(TypeInfo(TEnumTest),aStr));
end;
i odwrotnosc...
s := GetEnumName(TypeInfo(TIncType), integer(inctype)) ;
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160303-213610.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160303-213610) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160303-213506.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160303-213506) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160303-213401.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160303-213401) |
Jak dla mnie we wpisie ini podajesz typ jako string (zgodnie z tym co napisałeś) a w parserze próbujesz odczytać int. Czegoś nie rozumiem?Na moje to typ jest podany jako liczba w zakresie 1-4. Parser wywiedziony jest z std::basic_stringstream i jako taki przeprowadza automatyczna konwersje takiego "tekstu" do podstawowych typow numerycznych (w tym wypadku int) poprzez operator>> Podobnie jak robi to z reszta parametrow.
parser.getTokens(7);Tu jest chyba blad -- parser pobiera 7 parametrow, ale przekazuje dalej 6. Potem odczytuje 3 ale probuje przekazac 4. Problem w tym ze getTokens() kasuje poprzednia zawartosc bufora, wiec snow_color dostanie zawartosc snow_tex itd, a snow_blend nie dostanie nic.
parser >> QGlobal::snow_area >> QGlobal::snow_size >> QGlobal::snow_srcf >> QGlobal::snow_srct >> QGlobal::snow_sraf >> QGlobal::snow_srat;
parser.getTokens(3);
parser >> QGlobal::snow_color >> QGlobal::snow_tex >> QGlobal::snow_light >> QGlobal::snow_blend;
if ... else if ... else if ...
zrobilbym nawet we wpisie podawanie nazwy typu wyliczeniowego, ale w c++ konwersja typow na string i odwrotnie nie jest userfriendly.Oj tam oj tam, technika poszla do przodu:
W pascalu to jest jedna linijka kodu, przyklady dla c++ sa na internetach ale jest to przerost formy nad trescia.
std::unordered_map<std::string, int> values = { { "triangle", 1 }, { "polygon", 2 }, { "line", 3 }, { "point", 4 } };
auto lookup = values.find( "polygon" );
auto value = lookup == values.end() ? 0 : lookup->second; // zamiast 0 mozna podac wartosc default
To jest zgodne z C99? Bo mnie sie wydaje, ze to moze byc C++11...Auto jest c++11 ale to tylko moje lenistwo, zawsze mozna podac typ recznie. Inicjalizacja listy, nie jestem pewien; VS2012 chyba tego nie przelknie, 2013 kompiluje bez problemu (podobnie z reszta jak auto) i jest darmowa wersja Express z MS, wiec to tez raczej nie tragedia..?
MaSZyne sie kompiluje na Borland C++ Builder 5.02 z 2001r :-)No to faktycznie, kamieni kupa. Tak sie zastanawiam, jesli te kawalki w Pascalu tak wszystko blokuja, to moze sprobowac automatycznej konwersji na poczatek i potem to ewentualnie doszlifowac? Jakies narzedzia sa: http://www.garret.ru/lang.html i dokumentacja na http://www.garret.ru/ptoc/Readme.htm chociaz nie wiem na ile skuteczne.
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160310-044420.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160310-044420) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160309-153403.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160309-153403) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160309-153107.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160309-153107) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160309-103604.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160309-103604) |
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160311-051417.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160311-051417) |
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160312-125211.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160312-125211) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160312-125108.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160312-125108) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160312-124927.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160312-124927) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160312-124916.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160312-124916) |
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160312-124027.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160312-124027) |
ROZPORZĄDZENIE MINISTRA INFRASTRUKTURY
z dnia 25 czerwca 2003 r.
w sprawie sposobu zgłaszania oraz oznakowania przeszkód lotniczych
Załącznik nr 2
PODSTAWOWE CHARAKTERYSTYKI ŚWIATEŁ PRZESZKODOWYCH
... od jakiej wysokosci obiekt powinien byc oswietlany?Nie wiem czy jest to regulowane konkretnymi wytycznymi, ale na drodze podejścia do lądowania, oznaczone są koło mnie nawet 10 piętrowe budynki mieszkalne.
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160313-091602.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160313-091602) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160313-091524.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160313-091524) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160313-090106.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160313-090106) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160313-090041.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160313-090041) |
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160313-085720.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160313-085720) |
Nie moja wina ze jest bezksiezycowa zimowa noc i w dodatku pada snieg ;pChodziło mi na przykład o płonącą beczkę czy kolorową fontannę.
No ale wlasnie, wiekszosc exampli ktore mam bazuje na bibliotekach opengl, ktore nie sa dostepne dla borlandowskiego srodowiska, a nawet jesli sa to w starszych wersjach gdzie brakuje niektorych funkcji.Biblioteki sa z reguly tylko wrapperem do tworzenia/obslugi okien, ladowania danych itp, wiec nie sa tak naprawde konieczne. Chyba duzo wiekszy problem to brak obslugi shaderow w kodzie EU. Gdyby byla to kupe rzeczy moglbys zrobic w 10 minut metoda google/skopiuj/wklej. A tak to trzeba sie bawic w szukanie kodu sprzed 10+ lat. Tutaj jest cos co moze dzialac: http://www.paulsprojects.net/opengl/shadowmap/shadowmap.html (z naciskiem na 'moze')
EU07.EXE 15.4.1171.474
Missed texture: textures\textures\none01.
Missed texture: textures\textures\none02.
Missed texture: textures\textures\none03.
Missed texture: textures\textures\none04.
Missed texture: textures\textures\none05.
Missed texture: textures\textures\none06.
Missed texture: textures\textures\none07.
Missed texture: textures\textures\UN.
Missed texture: textures\textures\none10.
Missed texture: textures\textures\none11.
Missed texture: textures\textures\UN01.
Missed texture: textures\textures\UN02.
Missed texture: textures\textures\UN03.
Missed texture: textures\textures\UN04.
Missed texture: textures\textures\UN05.
Missed texture: textures\textures\UN06.
Missed texture: textures\textures\UN07.
Missed texture: textures\textures\UN08.
Missed texture: textures\textures\UN09.
Missed texture: textures\1435mm\switches\undefined.
Missed texture: textures\1435mm\sleepers\none.
Missed texture: textures\ip\tracks\ps93-1.
Duplicated model: billboard
Duplicated model: billboard
Missed event: zwr02- in multiple keyctrl09
Missed event: zwr02+ in multiple keyctrl08
Missed event: zwr02+ in multiple keyctrl07
Missed event: zwr02+ in multiple keyctrl06
Missed event: zwr02+ in multiple keyctrl05
Missed event: zwr02+ in multiple keyctrl04
Missed event: zwr02+ in multiple keyctrl03
Missed event: zwr01- in multiple keyctrl02
Missed event: zwr01+ in multiple keyctrl01
Missed texture: textures\dynamic\pkp\303e_v1\nowhere.
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160316-135534.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160316-135534) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160316-135357.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160316-135357) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160316-135317.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160316-135317) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160316-135142.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160316-135142) |
|
Missed texture: textures\1435mm\switches\undefined.
Missed texture: textures\1435mm\sleepers\none.
Regulamin obowiązki 11b i do tego zbędne spacje. Poprawiłem.W ogole to od jutra bedziemy przenosic fizyke z pascala na c++.<Odetchnięcie z ulgą> - z resztą chyba nie ja jeden.
Jakies pytania, sprzeciwy, sugestie?
No w koncu dzialaja kominy w eu07, 15 lat... d;Ale wydaje mi się, że tworzysz dym w jednym punkcie co czasem powoduje, że tekstury spalin wystają przed komin, może lepie zrobić aby najpierw pionowo wychodziły z komina, a potem po łuku?
https://youtu.be/Ve8a62xIsIc&feature=youtu.be
Kto chetny do rozpisania fizyki emisji spalin? Na poczatek proponowalbym odpalanie silnika.
A tutaj dokumentacja mozliwosci emitera: http://eu07.es/index.php?a=exe16&el=0033#gohere
Jedynie wzglednie realne zachowanie sie emisji zadecyduje o tym czy generowanie spalin przez pojady bedzie wlaczone w pozniejszych wydaniach.
Zgadza sie, trzeba bedzie troche te fizyke przerobic, bo nie do tego byla stworzona i mimo ze ma ponad 50 parametrow to raczej nie da sie ustawic wypchniecia 'czastek' na pewna wysokosc, ale jescze pokombinuje.To co jest powinno w zasadzie wystarczyc -- czastki wedruja "w gore" zgodnie ze zdefiniowanym parametrem, a dodatkowo powinny byc (ewentualnie) popychane zgodnie z kierunkiem wiatru podanym w scenerii, a nie w emiterze. W przypadku dymu z lokomotywy itp "luk" bierze sie z tego, ze czastka po wyemitowaniu nie podaza dalej za zrodlem ale "wisi" w powietrzu podczas gdy lokomotywa leci dalej do przodu.
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160325-185616.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160325-185616) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160325-185837.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160325-185837) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160325-185739.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160325-185739) |
(http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160403-233801.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160403-233801) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160403-233744.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160403-233744) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160408-161922.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160408-161922) | (http://dropbox.eu07.es/pmppw/ROZNE/thumbs/20160408-170238.jpg) (http://dropbox.eu07.es/pmppw/ROZNE/iv.php?i=20160408-170238) |
+---------------------------------------------------------+
| Poruszanie sie po scenerii |
+---------------------------------------------------------+
<<B>F4 - Wyjscie oraz powrót do lokomotywy
<<B>HOME - Zmiana pomieszczen pociagu w przod / w strone
<<B>END - Zmiana pomieszczen pociagu w glab / w strone tylnej kabiny
<<B>INSERT - Sprzeganie skladu (1 wcisniecie - sprzeg mechaniczny, 2 wcisniecie - przewod glowny, 3 wcisniecie - przewod pomocniczy)
<<B>DELETE - Rozprzeganie skladu
<<B>SHIFT+] | ] - W zaleznosci od lokomotywy otwarcie | zamkniecie drzwi
<<B>SHIFT+[ | [ - W zaleznosci od lokomotywy otwarcie | zamkniecie okna
+---------------------------------------------------------+
| Uruchamianie lokomotywy EU07 oraz EP07: |
+---------------------------------------------------------+
Kazda opcje mozemywlaczyc uzywajac "SHIFT+klawisz" oraz wylaczyc wciskajac sam "klawisz"
SHIFT+J - Wlaczenie Baterii, nastepuje wlaczenie "Czuwaka"
D / R - zmiana kierunku jazdy Przod / Tyl
SPACJA - Wylaczenie czuwaka (migajacych lampek oraz buczka)
SHIFT+P / SHIFT+O - podniesienie przedniego / tylniego pantografu (poczekaj az woltomierz WN pokaze okolo 3400 V)
W przypadku braku cisnienia (cisnieniomierz "zbiornika glownego") do podniesienia pantografow nalezy:
Wejsc do przedzialu maszynowego [SHIFT+END]
Odlaczyc zbiornik pantografow od zbiornika glownego [Ctrl+V]
Zalaczyc sprezarke pomocnicza [Przytrzymujemy Shift+V]
Wracamy do kabiny [SHIFT+HOME]
Podnosimy pantografy [SHIFT+O/P]
Zalaczamy wylacznik szybki, przetwornice, sprezarke, gdy cisnienie na cisnieniomierzu zbiornika glownego bedzie wieksze niz 0.4 atm:
Wchodzimy do przedzialu maszynowego [SHIFT+END]
Ponownie laczymy pantografy ze zbiornikiem glownym [SHIFT+CTRL+V]
<<R>SHIFT+M - zalaczenie wylacznika szybkiego (nalezy przytrzymac az zapali sie kontrolka "wylacznik szybki")
<<Y>SHIFT+X - zalaczenie przetwornicy
<<R>SHIFT+C - zalaczenie sprezarki (nalezy odczekac chwile od wlaczenia przetwornicy, inaczej zadziala przekaźnik nadmiarowy)
+---------------------------------------------------------+
| Jazda lokomotywa EU07 i EP07 |
+---------------------------------------------------------+
<<G>+ - - zwiekszanie oraz zmniejszanie mocy (zmiana pozycji nastawnika)
<<G> Najpierw nalezy przestawic nastawnik na pozycje "1" oraz poczekac na zgaszenie sie lampki "styczniki liniowe wyl"
<<G> lokomotywa EU07 i EP07 posiada 43 pozycje nastawnika, 41 oporowych na ktorych nie nalezy za dlugo jechac,
<<G> oraz 2 bezoporowe (pozycja 28 i 43 oznaczona literami S i R, na nich mozna jechac caly czas)
<<G> Gdy jedziemy na pozycjach oporowych pali sie kontrolka "Jazda na oporach roz."
<<G> Gdy w cylindrach hamulcowych jest wiecej niz 0.2 atm zasilanie silnikow jest odciete
<<G>
<<G>/ \ - zwiekszanie | zmniejszanie bocznikowania
<<G> Bocznikowanie to zwiekszanie predkosci obrotowej silnikow, "bocznikowac" mozna tylko na pozycjach bezoporowych oznaczonych na nastawniku literami "S" oraz "R"
<<G>
<<G>a - niski ton syreny lokomotywy
<<G>SHIFT+A - wysoki ton syreny lokomotywy "Gwizdek"
<<G>
<<G>ENTER - Likwidowanie poslizgu (gdy zapali sie lampka "Poslizg")
<<G>S - Zalaczenie piasecznic (stosowane podczas poslizgu oraz hamowania)
<<G>
<<G>SHIFT+F - Tryb wysokiego rozruchu (przekaźnik nadmiarowy ustawiony na 750 A)
<<G>
<<G>SHIFT+H - Zalaczenie ogrzewania
<<G>
<<G>W przypadku uszkodzenia silnikow:
<<G> Wchodzimy do przedzialu maszynowego [SHIFT+END]
<<G> Wciskamy [Shift+E]
+---------------------------------------------------------+
| Hamowanie kranem hamulca FV4a |
+---------------------------------------------------------+
NUM. - Popelnienie, sposob odhamowania uzywanego w dlugich skladach towarowych ("Fala", wzrost cisnienia w przewodzie glownym)
NUM4 - "Jazda", sklad powoli odhamowuje
NUM2, NUM5, NUM8 - pozycje hamowania zasadniczego (obnizanie cisnienie przewodu glownego)
NUM0 - pozycja hamowania naglego (awaryjnego)
NUM3, NUM7 - pozwala plynnie poruszac sie miedzy pozycjami; NUM3 - kran kreci sie w strone maszynisty zmniejszajac cisnienie; NUM9 - kran kreci sie od maszynisty zwiekszajac
cisnienie
[CTRL+NUM5] - pozycja "odciecie" gdy zmieniamy kabiny lub jedziemy w trakcji ukrotnionej
NUM1 | NUM7 - Hamowanie | Odhamowanie hamulca lokomotywy
NUM6 - Odluźniacz
[CTRL+NUM1] - Zahamowanie hamulcem recznym
[CTRL+NUM7] - Odhamowanie hamulca recznego
+---------------------------------------------------------+
| Zabezpieczenia lokomotyw EU07 i EP07 |
+---------------------------------------------------------+
Czuwak oraz SHP
Urzadzenie w postaci "buczka" i migajacych lampek
zalaczajace sie podczas jazdy co 60 sekund oraz
przed semaforami, nalezy je "skasowac", inaczej
nastapi hamowanie awaryjne
SPACJA - Skasowanie czuwaka
SPACJA [przytrzymanie] - Test czuwaka
Przekaźnik nadmiarowy
Podczas jazdy lokomotywa nie nalezy przekraczac 600 A
na kazdy amperomierz (750 A podczas wysokiego rozruchu)
inaczej nastapi wylaczenie silnikow, wtedy nalezy ustawic
nastawnik na '0' oraz odblokowac przekaźnik
N - Odblokowanie przekaźnika
Przekaźnik nadmiarowy ogrzewania i przetwornic
Zadziala w przypadku przeciazenia przetwornicy lub ogrzewania
Czesto po zadzialaniu tego przekaźnika nalezy wlaczyc wylacznik szybki
CTRL+N - Odblokowanie przekaźnika
Zabezpieczenie zanikowo-napieciowe
Gdy napiecie w sieci spadnie do okolo 2200 volt zadziala wylacznik szybki,
gdy napiecie ponownie sie pojawi nalezy wlaczyc wylacznik
SHIFT+M - Zalaczenie wylacznika szybkiego
+---------------------------------------------------------+
| Oswietlenie |
+---------------------------------------------------------+
[CTRL+SHIFT+;] - zalaczenie oswietlenia kabiny
[SHIFT+;] - zalaczenie podswietlenia wskaźnikow i manomentrow
SHIFT+I|SHIFT+U|SHIFT+Y - Wlaczanie swiatla bialego Prawego|Gornego|Lewego
I|Y - Wlaczanie swiatla czerwonego Prawego/Lewego