Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » sekundenzähler in win32dll

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
24.12.2004, 10:07 Uhr
~NightHawk
Gast


allein schon das subjekt hört sich mörderisch an! und erst recht der source:

C++:
VOID EXPORT OnDraw(CGameDC* pDC, LPCRECT lpScreenRect)
{if (set)
{char c;
do{long sek = 0, init;int n;
   time(&init);
   while(true)
    { long lok;
      time(&lok);
if(lok > sek)
        {sek=lok;long f;
f=(3 - (sek - init));
char g[100];
sprintf(g,"%c",f);//*hier hab ich nur verschieden rumprobiert, obs an dem liegt, ich hätte auch gleich g=.. nehmen können, das is übrigens nicht das problem*/
pDC->TextOut(g, 400, 400);}    
if(sek >= init + n) break;
if(kbhit()) if((c=getch()) == 27) break;
}
if(c != 27)
{pDC->SetFont(D2FONT_THIN);
pDC->SetTextColor(2);
pDC->TextOut("abgelaufen", 300, 300);
server->GamePrintInfo("abgelaufen");
}}while(c!=27);
}

das ganze hab ich aus nem kleinen template herausgenommen und ganz schön viel verändert! nun... mein problem ist, dass sobald wenn ich "set" true mache, das game crasht!
in der console lauft das template prächtig, aba ich wills ja im game zum laufen bringen!
hättet ihr ne andere idee, wie ich das machen könnte oder seht ihr hier irgendwelche fehler warum das game crashen könnte?(übrigens keine compilierungs errors)

frohes fest an alle!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.12.2004, 10:27 Uhr
Oliver
S2-Pixelgeneral


Wo stürzt es denn genau ab, hast du es mal debuggt?


C++:
sprintf(g,"%d",f); // %d nicht %c



PS: Codeeinrückung und sinnvollere Variablennamen erhöhen die Lesbarkeit eines Codes unheimlich
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.12.2004, 11:53 Uhr
~nighthawk
Gast


hm.. schade, das war leider nicht das problem!
ich befürchte eher es liegt an dem zeugs hier:

C++:
if(sek >= init + n) break;
if(kbhit()) if((c=getch()) == 27) break;
}
if(c != 27)
{pDC->SetFont(D2FONT_THIN);
pDC->SetTextColor(2);
pDC->TextOut("abgelaufen", 300, 300);
server->GamePrintInfo("abgelaufen");
}}while(c!=27);
}

weil das ganze für die konsole bestimmt ist und nicht für ne dll...

es stürtz ab sobald ich den command ausführe der das set(s.o.) true macht.

hmm.. ne andere frage:
wie kann ich ganz einfach nachdem set true ist, 30 sekunden warten und einen command ausführen? ohne sleep oder so!
scheinbar funkts ja mit der methode und den vielen schleifen nit!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.12.2004, 12:28 Uhr
Oliver
S2-Pixelgeneral


Und bei welcher Anweisung stürzt es genau ab, deswegen solltes du es ja debuggen.


Zitat:

wie kann ich ganz einfach nachdem set true ist, 30 sekunden warten und einen command ausführen? ohne sleep oder so!
scheinbar funkts ja mit der methode und den vielen schleifen nit!



Meinst du damit, du willst die Zeit messen, ohne dass das ganze Programm stehen bleibt? Dann musst du halt einfach in deiner Gameloop prüfen, ob 30 Sekunden zwischen den letzten Aufruf dazwischen liegen.

Meinst du sowas?


C++:
unsigned init=timeGetTime();

while(1)
{
    if(timeGetTime()-init>=30000)
        cout<< "abgelaufen";
}


--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.12.2004, 12:59 Uhr
~nighthawk
Gast


jo, des wollt ich eigentlich damit erreichen!!
ezt sieht das ganze so aus:

C++:
BOOL PRIVATE OnGameCommandSet(char** argv, int argc)
{
unsigned init=timeGetTime();
while(1)
{
if(timeGetTime()-init>=5000)
server->GamePrintInfo("abgelaufen");
}return TRUE;}


aba nun hab ich compiler errors:

Code:
  Creating library Debug/th.lib and object Debug/th.exp
th.obj : error LNK2001: unresolved external symbol __imp__timeGetTime@0
Debug/th.dll : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.


scheinbar muss ich was im linker umstellen?
gruß, hawk
&frohes fest
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.12.2004, 13:10 Uhr
Oliver
S2-Pixelgeneral


Linke die winmm.lib dazu.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
24.12.2004, 13:22 Uhr
~nighthawk
Gast


erst ma danke für deine schnelle hilfe!
aber leider gehts immer noch nicht!(gamecrash, compilen geht!)
ich glaub das problem liegt bei dem while, oder jeglicher schleife die ich ziehe..
bzw meinen 383mb ram
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: