Ja chcialbym zebys mi zaserwowal kompa np teamviewerem, moge pare chwil na rozkmine poswiecic. Ale to juz zalezy od Ciebie.
A tymczasem, juz za pare chwil bedziemy nadganiac stracony czas - paczka na wczoraj.
Tutaj pragne podziekowac koledze @EU07-001 za pomoc w szukaniu bugow - takich osob przydaloby sie wiecej. Ale co poradzisz, nic nie poradzisz ;)
http://eu07.es/EXETEST/EU07-070116-1.rarW zasadzie chyba tylko config.txt nie musicie sobie nadpisywac.
Dodano: 08 Stycznia 2016, 17:57:41
Za 4 podejściem odpalilo ale pasazery nie wsiadają.
A miales exe z wsiadajacymi pasazerami :D? Bo dopiero teraz wlasnie je opublikowalem :) ...
Czyj to problem? -> http://eu07.es/serwerdomu/1993857202/
Dodano: 08 Stycznia 2016, 18:28:14
A tymczasem cos dla lubiacych analizowac, moze cos ciekawego wymysla...
// **********************************************************************************************************
// 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;
}