Ahoj.. mam malinký problémek .) potřebuju udělat nějakou funkci, která po mnou nastaveném čase provede to co chci..
4example:
SendMotd() je moje funkce ktera v sobe obsahuje volani ktery precte z txt souboru stringy a posle je do chatu.. takneco:
LTBOOL MultiplayerMgr::SendMotd()
{
{
char szMsg[128];
sprintf(szMsg,"%s",getmsg("MOTDLine1"));
HMESSAGEWRITE hMessage = g_pLTServer->StartMessage(NULL, MID_MPMGR_MESSAGE);
hMessage->WriteDWord(-1);
hMessage->WriteString(szMsg);
g_pLTServer->EndMessage(hMessage);
}
{
char szMsg[128];
sprintf(szMsg,"%s",getmsg("MOTDLine2"));
HMESSAGEWRITE hMessage = g_pLTServer->StartMessage(NULL, MID_MPMGR_MESSAGE);
hMessage->WriteDWord(-1);
hMessage->WriteString(szMsg);
g_pLTServer->EndMessage(hMessage);
}
{
char szMsg[128];
sprintf(szMsg,"%s",getmsg("MOTDLine3"));
HMESSAGEWRITE hMessage = g_pLTServer->StartMessage(NULL, MID_MPMGR_MESSAGE);
hMessage->WriteDWord(-1);
hMessage->WriteString(szMsg);
g_pLTServer->EndMessage(hMessage);
}
{
char szMsg[128];
sprintf(szMsg,"%s",getmsg("MOTDLine4"));
HMESSAGEWRITE hMessage = g_pLTServer->StartMessage(NULL, MID_MPMGR_MESSAGE);
hMessage->WriteDWord(-1);
hMessage->WriteString(szMsg);
g_pLTServer->EndMessage(hMessage);
}
{
char szMsg[128];
sprintf(szMsg,"%s",getmsg("MOTDLine5"));
HMESSAGEWRITE hMessage = g_pLTServer->StartMessage(NULL, MID_MPMGR_MESSAGE);
hMessage->WriteDWord(-1);
hMessage->WriteString(szMsg);
g_pLTServer->EndMessage(hMessage);
}
return LTFALSE;
}
a já potřebuju udělat odpočítávání který jakmile by došlo na nulu zavolalo SendMotd(); nic jinyho.. a zacalo znovu odpocitavat od zacatku.. nic vic nic min.. neumite to nekdo? ja jsem se nikdy nezabival touhle interakci uvnitr toho programu, a zadny rozumny navod na jednoduchy odpocitavani v c++ jsem proste nenasel..
protste potrebuju abych mel funkci treba counter();
a v ni aby bylo
FILE *configFile=fopen("Rommie_Settings.TXT","rt");
char szBuffer[512];
char *currentStart;
LastMessage=0.0f;
bFileExist=false;
if(configFile==NULL)
return;
//seek to the options section section
while (fgets(szBuffer, 512, configFile) != NULL)
{
if(strstr(szBuffer,"[Motd]"))
{
while (fgets(szBuffer, 512, configFile) != NULL)
{
if(strstr(szBuffer,"messagefrequency"))
{
MOTDfrequency=(atoi(szBuffer+17))*60;
break;
}
}
}
to vypocita podle toho co je vlozeny v configu jak casto to ma tu motd poslat.. kdyz do configu napisu messagefrequency=5 spocita si to 5*60sekund a bude to posilat jednou za pet minut.
jenze ten samotny timer mi dela problem.. ta aplikace uz v sobe ma "meric casu" pouziva se k odpocitavani kol, respawnu a takovyle blbosti a ta je napriklad:
m_ClientData[nIndex].m_fPickupMsgTime = (LTFLOAT)g_myRommieServer.GetTime() + 5.0f;
znamena ze se klientovy ma zobrazovat jeste pet sekund po sebrani nejaky treba lekarnicky jeji ikona, poradi prosim nekdo jak pomoci tohodle casovace udelat odpocitavani? (staci mi i kdyz tak bude natvrdo nastaveno 5 minut, nemusi to byt nastavitelne v configu...
pokud nekdo vite a muzete poradit pls pisnete na ICQ 196-924-548 fakt je to dost akutni :(
diky
Fórum › C / C++
Odpočítávání.. (C++ VS6 sp5)
1) nevyskakuj si kdyz se nevi tak se proste nevi. fora jako hamachi,firefox taky nekolik dni stoji zz jednoho duvodu: useri chteji jen brat ne davat
2) pokud jo nutne touzite po odpovedi zkuste vzdy nahodit dotaz na vice for, treba : sem a forum.builder.cz
To Ivo:
Mno, nikdo neodpovedel patrne proto, ze je to dost nepresne formulovane. Vyplivl si na nas mnoho kodu.To, co tu lidi potrebujou vedet je, taky na jakem OS to bezi. Jestli Windows, tak tam muzes pouzivat timer - muzes jich mit v aplikaci kolik chces(kazdy timer ma sve ID), a odchytavat zpravu WM_TIMER. Takze to zkus zformulovat jeste jednou - hlavne ten OS.
To Jura:
Je to postavene pro OS Windows , jedná se o server-side aplikaci k jedný hře (soubor OBJECT.LTO - binarka neco jako normalni widlacky DLL), já bohužel ty timery neovládám, jsem v tom docela ztracenej :(
proste potrebuju aby to porad dokola odpocitavalo 5 minut a pokazdy kdyz to odpocita na nulu tak to zavola SendMotd(); a zacne to odpocitavat od zacatku.
kdyz mi poradis budu moc moc moc rad.
4all omlouvam se ale je to prome docela dulezite, a je lepsi videt tady vasi odpoved proste NEVIM nez kdyz se nikdo nenamaha se sem neco napsat a ani se nepokousi nejak poradit.
jj takhle to je v pohode ale pls priste zadny vyskakovani typu dik za nic
pokud jde tedy o ten timer tak tady je mala ukazka:
pod hlavicky:
#define _TimerClock 1
//kdekoliv v kodu:
SetTimer(hDlg, _TimerClock, 1000, NULL);//vytvoreni odpoctu po 1s
case WM_TIMER:
//kod timeru - zde si volejte vasi fci
break;
//pri vypnuti programu ?
//nezapomenme ukoncit odpocet !
KillTimer(hDlg,_TimerClock);
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Odpočítávání — založil Bunny-sh
Odpočítávání — založil Tomik
Odpočítávání + Gauge — založil Navara
Odpočítávání do data — založil Miky
Odpočítávání pomocí Labelu ve WPF — založil hejnallukas
Moderátoři diskuze