// Strength // Dexterity void load_general_entry( const Plib::Package* pkg, Clib::ConfigElem& elem ) { checka( elem, networkManager.uoclient_general.strength, "Strength" ); checka( elem, networkManager.uoclient_general.intelligence, "Intelligence" ); checka( elem, networkManager.uoclient_general.dexterity, "Dexterity" ); checkv( elem, networkManager.uoclient_general.hits, "Hits" ); checkv( elem, networkManager.uoclient_general.stamina, "Stamina" ); checkv( elem, networkManager.uoclient_general.mana, "Mana" ); //dave changed 3/15/03, support configurable max skillid networkManager.uoclient_general.maxskills = elem.remove_ushort( "MaxSkillID", SKILLID__HIGHEST ); std::string temp; if ( elem.remove_prop( "MethodScript", &temp ) ) { if ( !temp.empty() ) { ExportScript* shs = new ExportScript( pkg, temp ); if ( shs->Initialize() ) networkManager.uoclient_general.method_script = shs; else delete shs; } } }
//function calculates waiting time and q length float multitaskQ(Task * task0, Task * task1, float * wait0, float * wait1, float * qL) { float currentT = 0; int i = 0; int * arrt = malloc(sizeof(int)*MAX_LINE_LENGTH); Task * head0 = task0; Task * head1 = task1; while(task0 != NULL && task1 !=NULL) { if( task1->aritime <= currentT && task0->aritime > currentT )//group 1 has already arrived but not group 0 before previous job done { * wait1 += (currentT-task1->aritime); arrt[i++] = task1->aritime; task1->tlq = currentT; currentT += task1->stime; task1 = task1->next; } else if(task0->aritime <= currentT) // group 0 arrived before previous job done { * wait0 += (currentT-task0->aritime); arrt[i++] = task0->aritime; currentT += task0->stime; task0->tlq = currentT - task0->stime; task0 = task0->next; } else if( task1->aritime < task0->aritime)//group 1 arrived first in server's free time { arrt[i++]= task1->aritime; currentT = task1->aritime + task1->stime; task1->tlq = currentT - task1->stime; task1 = task1->next; } else if(task1->aritime >= task0->aritime)//group 0 arrived dirst in server's free time { arrt[i++] = task0->aritime; currentT = task0->aritime + task0->stime; task0->tlq = currentT - task0->stime; task0 = task0->next; } } while(task0 != NULL && task1 == NULL)//all of group1 have been served { if(task0->aritime <= currentT) { * wait0 += (currentT - task0->aritime); arrt[i++] = task0->aritime; currentT += task0->stime; task0->tlq = currentT - task0->stime; task0 = task0->next; } else { arrt[i++] = task0->aritime; currentT = task0->aritime + task0->stime; task0->tlq = currentT - task0->stime; task0 = task0->next; } } while(task1 != NULL && task0 == NULL)//all of group1 have been served { if( task1->aritime <= currentT) { *wait1 += (currentT - task1->aritime); arrt[i++] = task1->aritime; task1->tlq = currentT; currentT += task1->stime; task1 = task1->next; } else { arrt[i++] = task1->aritime; currentT = task1->aritime + task1->stime; task1->tlq = currentT - task1->stime; task1 = task1->next; } } i = checka(arrt,i); int j; for(j = 0; j < i; j++) { * qL += qLength(head0,head1,arrt,j); } free(arrt); return currentT; }