Atvainojos par dubultpostu.. Radās neliela problēma kuru īsti nezinu kā novērst tāpēc nodomāju ka kāds no jums zinās kā ko tādu atrisināt..
Visu itkā sataisiju...vismaz pa daļām tagad meiģinu visu smuki sastiķēt kopā ar klasēm.. lai nevalda tāds bardaks kā iepriekš..
entie bitu pārveidotāji untt..
Lieta tāda ka RakNet izmanto case funkciju priekš sūtijumiem .. un man paku rakstītājs/lasītājs atrodas citā failā.. lai varētu pēc nepieciešamības izmantot viņus ...
//dPacket * Paka0 = new dPacket(); problēma tajā visā ir tāda ,ka Send funkcijām jāatrodas tur pat kur write un
Ziņu id.. priekš rakstīšanas nebija problēmu jo Ziņu ID (jeb GameMessageIDs) ir viegli definēt..
Code: Select all
void dPacket::write( float value, float min, float max, float precision,int GameMessageIDs)
//.....
//......
bsOut.Write((RakNet::MessageID)GameMessageIDs);
bsOut.Write(value); //(char*)buffer,BBC
peer->Send(&bsOut,HIGH_PRIORITY,RELIABLE_ORDERED,0,packet->systemAddress,false);
Bet nolasīšanai ir jaizmanto case..
kā lai es tagad sadalu
case uz abām pusēm..?
jo main failā izmantoju visu struktūru..
Code: Select all
while (1)
{
for (packet=peer->Receive(); packet; peer->DeallocatePacket(packet), packet=peer->Receive())
{
switch (packet->data[0])
{
case ID_REMOTE_DISCONNECTION_NOTIFICATION:
printf("Another client has disconnected.\n");
break;
case ID_REMOTE_CONNECTION_LOST:
printf("Another client has lost the connection.\n");
break;
case ID_REMOTE_NEW_INCOMING_CONNECTION:
printf("Another client has connected.\n");
break;
case ID_CONNECTION_REQUEST_ACCEPTED:
printf("Our connection request has been accepted.\n");
break;
//un tā tālak..
un iekš dPacket::read
Code: Select all
float dPacket::read(float min, float max, float precision,int GameMessageIDs)
//...........
switch(packet->data[0])
{
case GameMessageIDs:
{
int bitcnt = (Log2((max - min) / precision))+1;
//....
int tmp;
bsIn.Read(tmp);
bufPos=0;
printf("----------------------------------------------\n");
printf("Dati -> Iesutne\nBBC = -- \nTMP = %i \nBitcnt = %i \n",tmp,bitcnt);
return min + tmp * precision;
}
break;
default:
printf("Message with identifier %i has arrived.\n", packet->data[0]);
break;
kā jau minēju visam smuki jāatrodas iekš case un kopā ja tas tā nav tad funkcijas nestrādā..
ja vēlāk iekš maina kur man ir nepieciešams .. rakstīt lasīt pakas ievietoju kodu ārpus case tas nestrādā
ja iekš.. + vajadzīgās sadaļas tad viņš rāda erroru... (vismz kko lidzigu tam ) -
1 #IND00
Man nav īsti nojausmas kā lai šo vietu sataisa/apiet..
+Veidoju dubultpostu jo domāju ka labojot veco neviens to neizlasīs..