您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ BEGINPACKET函数代码示例

51自学网 2021-06-01 19:49:19
  C++
这篇教程C++ BEGINPACKET函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中BEGINPACKET函数的典型用法代码示例。如果您正苦于以下问题:C++ BEGINPACKET函数的具体用法?C++ BEGINPACKET怎么用?C++ BEGINPACKET使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了BEGINPACKET函数的23个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: GetClanByID

// Send Clan informationbool CCharServer::SendClanInfo (CCharClient* thisclient){    if( thisclient->clanid > 0 )    {        CClans *thisclan = GetClanByID(thisclient->clanid);        if(thisclan!=NULL)        {            BEGINPACKET( pak, 0x7e0);            ADDBYTE    ( pak, 0x33);//0x33 you have invited to clan            ADDWORD    ( pak, thisclan->id);// clan id            ADDBYTE    ( pak, 0x00);//            ADDBYTE    ( pak, 0x00);            ADDWORD    ( pak, thisclan->back);//Clan Background            ADDWORD    ( pak, thisclan->logo);//Clan logo            ADDBYTE    ( pak, thisclan->grade);//Clan grade            ADDBYTE    ( pak, thisclient->clan_rank);// Clan rank (0 = red rokie / 6 = master)            ADDDWORD    ( pak, thisclan->cp);//Clan Points            ADDDWORD   ( pak, 0x00000064);            ADDDWORD   ( pak, 0x00000000); //Clan found            ADDDWORD   ( pak, 0x00000000);            ADDBYTE    ( pak, 0x01);            for(int i=34;i<156;i++)                ADDBYTE ( pak, 0x00);            ADDWORD    ( pak, 0x0000);            ADDBYTE    ( pak, 0x00);            ADDSTRING  ( pak, thisclan->name);//Clan Name                        ADDBYTE    ( pak, 0x00);                        ADDSTRING  ( pak, thisclan->slogan);//Clan slogan            ADDBYTE    ( pak, 0x00);            ADDSTRING  ( pak, thisclan->news);//Clan news            ADDBYTE    ( pak, 0x00);            thisclient->SendPacket(&pak);	                        //Put the player online in clan            for(UINT i=0;i<thisclan->ClanMembers.size();i++)        	{		                CClanMembers*	ClanMember = thisclan->ClanMembers.at( i );;                CCharClient* otherclient = GetClientByID( ClanMember->id );                if(otherclient!=NULL)                    ChangeClanStatus (thisclient, otherclient, thisclient->channel);//send channel here        	}                              }    }         return true;}
开发者ID:L3nn0x,项目名称:osirosenew,代码行数:46,


示例2: BEGINPACKET

bool CMap::DeleteDrop( CDrop* drop ){    BEGINPACKET( pak, 0x794 );	ADDWORD    ( pak, drop->clientid );	GServer->SendToVisible( &pak, drop );    GServer->ClearClientID( drop->clientid );    for(UINT j=0;j<DropsList.size();j++)    {        if(drop==DropsList.at(j))        {            DropsList.erase( DropsList.begin()+j );            delete drop;            return true;        }    }    delete drop;    return false;}
开发者ID:karlseven,项目名称:ROED,代码行数:18,


示例3: BEGINPACKET

// Send Server encryptionbool CLoginServer::pakEncryptionRequest( CLoginClient* thisclient, CPacket* P ){	BEGINPACKET( pak, 0x7ff );	ADDWORD    ( pak, 0xaf02 );	ADDWORD    ( pak, 0xbd46 );	ADDWORD    ( pak, 0x0009 );	ADDWORD    ( pak, 0x0012 );	ADDBYTE    ( pak, 0x0000 );	ADDDWORD   ( pak, 0xcdcdcdcd );	ADDDWORD   ( pak, 0xcdcdcdcd );	ADDDWORD   ( pak, 0xcdcdcdcd );	ADDDWORD   ( pak, 0xcdcdcdcd );	ADDWORD    ( pak, 0xcdcd );	ADDBYTE    ( pak, 0xd3 );	thisclient->SendPacket( &pak );	Log(MSG_DEBUG, "Sent a 0x7ff packet to client");    return true;}
开发者ID:boermansjo,项目名称:KTRose_Server,代码行数:19,


示例4: BEGINPACKET

// Change player status in clan ((channel) = online/ 0xff = offline)bool CCharServer::ChangeClanStatus (CCharClient* thisclient, CCharClient* otherclient, int channel){     if (thisclient->charid !=otherclient->charid)     {        BEGINPACKET( pak, 0x7e0 );        ADDBYTE    ( pak, 0x73 );//Change player status        ADDBYTE    ( pak, 0x00 );        ADDBYTE    ( pak, channel );//CANAL        ADDWORD    ( pak, 0x0000 );        ADDWORD    ( pak, 0x0000 );        ADDWORD    ( pak, thisclient->level );        ADDWORD    ( pak, thisclient->job );        ADDSTRING  ( pak, thisclient->charname );        ADDBYTE    ( pak, 0x00 );        otherclient->SendPacket(&pak);     }     return true;}
开发者ID:L3nn0x,项目名称:osirosenew,代码行数:19,


示例5: BEGINPACKET

// do buff skillbool CCharacter::BuffSkill( CCharacter* Target, CSkills* skill ){    Position->destiny = Position->current;    //if(Battle->castTime == 0)    //{        BEGINPACKET( pak, 0x7bb );        ADDWORD    ( pak, clientid );        GServer->SendToVisible( &pak, (CCharacter*)this );    //    Battle->castTime = clock();    //    return true;    //}    //else    //{    //    clock_t etime = clock() - Battle->castTime;    //    if(etime < SKILL_DELAY)    //        return true;    //}    //Battle->castTime = 0;    //Log(MSG_DEBUG,"applied buff skill %i",skill->id);    UseBuffSkill( Target, skill );    Stats->MP -= (skill->mp - (skill->mp * Stats->MPReduction / 100));    if(Stats->MP < 0) Stats->MP = 0;    GServer->DoSkillScript( this, skill ); //summons a monster. Why do we do this for all skills?    if(!IsMonster())    {        ClearBattle( Battle ); // clear battle for players when they use buff skills        //Battle->bufftarget = 0;        //Battle->skilltarget = 0;        //Battle->skillid = 0;        //Battle->atktype = NORMAL_ATTACK;    }    else //Monsters need to be reset to normal attack and clear skill attacks.    {        //Battle->atktarget = Battle->target;        //Battle->bufftarget = 0;        //Battle->skilltarget = 0;        //Battle->skillid = 0;        //Battle->atktype = NORMAL_ATTACK;        //StartAction(Target, NORMAL_ATTACK);    }    Battle->lastAtkTime = clock( );    Battle->iscasting = 1;    return true;}
开发者ID:osROSE,项目名称:osprose,代码行数:45,


示例6: GETDWORD

// Do player identificationbool CCharServer::pakDoIdentify( CCharClient* thisclient, CPacket* P ){	if (thisclient->isLoggedIn) return false;		MYSQL_RES *result;	MYSQL_ROW row;	thisclient->userid = GETDWORD((*P), 0x00);	memcpy( thisclient->password, &P->Buffer[4], 32 );	result = DB->QStore("SELECT username,lastsvr,accesslevel,platinum FROM accounts WHERE id=%i AND password='%s'", thisclient->userid, thisclient->password);	if(result==NULL) return false;	if (mysql_num_rows( result ) != 1)     {		Log( MSG_HACK, "Someone tried to connect to char server with an invalid account" );		DB->QFree( );		return false;	}    else    {		row = mysql_fetch_row(result);		strncpy(thisclient->username, row[0],16);		thisclient->channel = atoi(row[1]);		thisclient->accesslevel = atoi(row[2]);		thisclient->platinum = atoi(row[3]);		DB->QFree( );	}	Log( MSG_INFO,"User '%s'(#%i) logged in", thisclient->username, thisclient->userid );	BEGINPACKET( pak, 0x070c );	ADDBYTE    ( pak, 0 );	ADDDWORD   ( pak, 0x87654321);	ADDDWORD   ( pak, 0x00000000 );	thisclient->SendPacket( &pak );	result = DB->QStore( "SELECT online FROM accounts WHERE username='%s'", thisclient->username );    if(result==NULL) return false;	    row = mysql_fetch_row(result);    bool online = atoi(row[0]);    DB->QFree( );        if(online)        return false;    if(!DB->QExecute( "UPDATE accounts SET online=1 WHERE username='%s'", thisclient->username ))        return false;	thisclient->isLoggedIn = true;    return true;}
开发者ID:osROSE,项目名称:osrose,代码行数:45,


示例7: AddMonster

// convert a npc to other [not working]CMonster* CMap::ConverToMonster( CNPC* npc, UINT newmontype ){    CMonster* monster = AddMonster( newmontype, npc->pos, 0, NULL, NULL, 0, true );    if(monster==NULL) // invalid montype        return NULL;    GServer->ClearClientID( monster->clientid );    monster->clientid = npc->clientid;    for(UINT i=0;i<NPCList.size();i++)    {        if(NPCList.at(i)==npc)            NPCList.erase( NPCList.begin()+i );    }    delete npc;    BEGINPACKET( pak, 0x774 );    ADDWORD    ( pak, npc->clientid );    ADDWORD    ( pak, newmontype );    GServer->SendToVisible( &pak, monster );    return monster;}
开发者ID:karlseven,项目名称:ROED,代码行数:20,


示例8: ClearBattle

// Move a mob (random place)void CMonster::Move( ){    Position->destiny  = GServer->RandInCircle( Position->source, 10 );//    Position->lastMoveTime = clock();    ClearBattle( Battle );    BEGINPACKET( pak, 0x797 );	ADDWORD    ( pak, clientid );	ADDWORD    ( pak, 0x0000 );//???	ADDWORD    ( pak, Stats->Move_Speed ); //speed	ADDFLOAT   ( pak, Position->destiny.x*100 );	ADDFLOAT   ( pak, Position->destiny.y*100 );	ADDWORD    ( pak, 0xcdcd );	//ADDBYTE    ( pak, 0x01 );	ADDBYTE	   ( pak, thisnpc->stance );    //AIP	GServer->SendToVisible(&pak, this);    if(Position->Map==8)        Log(MSG_INFO,"Move (%.2f;%.2f) to (%.2f;%.2f)",Position->current.x,Position->current.y,Position->destiny.x,Position->destiny.y);}
开发者ID:TheDgtl,项目名称:osrose,代码行数:20,


示例9: BEGINPACKET

// Move a mob (specified point)void CMonster::MoveTo( fPoint nPos, bool randcircle ){    if(randcircle) Position->destiny  = GServer->RandInCircle( nPos, 5 );    else Position->destiny  = nPos;//    Position->lastMoveTime = clock();    BEGINPACKET( pak, 0x797 );	ADDWORD    ( pak, clientid );	ADDWORD    ( pak, 0x0000 ); // ???	ADDWORD    ( pak, Stats->Move_Speed );	ADDFLOAT   ( pak, Position->destiny.x*100 );	ADDFLOAT   ( pak, Position->destiny.y*100 );	ADDWORD    ( pak, 0xcdcd );	//ADDBYTE    ( pak, 0x01 );	ADDBYTE    ( pak, thisnpc->stance); //AIP	GServer->SendToVisible(&pak, this );    if(Position->Map==8)        Log(MSG_INFO,"MoveTo (%.2f;%.2f) to (%.2f;%.2f)",Position->current.x,Position->current.y,Position->destiny.x,Position->destiny.y);}
开发者ID:TheDgtl,项目名称:osrose,代码行数:20,


示例10: GETDWORD

// Send server IPbool CLoginServer::pakGetIP( CLoginClient* thisclient, CPacket* P ){	if (!thisclient->isLoggedIn) return false;	;	MYSQL_ROW row;	DWORD servernum = GETDWORD( (*P), 0 );	BYTE channelnum = GETBYTE( (*P), 4 );	BEGINPACKET( pak, 0x70a );	if(!DB->QExecute( "UPDATE accounts SET lastsvr=%i,lastip='%s',lasttime=UNIX_TIMESTAMP( NOW() ) WHERE id=%i", channelnum, inet_ntoa( thisclient->clientinfo.sin_addr ), thisclient->userid))	   return false;	MYSQL_RES *result = DB->QStore( "SELECT host,port,lanip,lansubmask FROM channels WHERE id=%i and type=1", servernum );    if(result==NULL) return false;	if(mysql_num_rows(result)!=1)	{        Log(MSG_WARNING, "Player selected a invalid channel or channel offline" );        DB->QFree( );        return true;    }	row = mysql_fetch_row(result);	ADDBYTE( pak, 0 );	ADDDWORD( pak, thisclient->userid );	ADDDWORD( pak, 0x87654321 );	if(strcmp(thisclient->ClientSubNet, row[3])==0)//Lan	{        ADDSTRING( pak, row[2] );    } else if(strcmp( thisclient->ClientSubNet ,"127.0.0")==0) { //localhost        ADDSTRING( pak, "127.0.0.1" );    } else {  // Other        ADDSTRING( pak, row[0] );    }	ADDBYTE( pak, 0 );	ADDWORD( pak, atoi(row[1]) );	DB->QFree( );	thisclient->SendPacket ( &pak );    return true;}
开发者ID:randybatiquin,项目名称:freerose,代码行数:42,


示例11: BEGINPACKET

void CPlayer::UpdateInventory( unsigned int slot1, unsigned int slot2 ){    if(slot1 == 0xffff && slot2 == 0xffff) return;              //neither slot is valid    BEGINPACKET( pak, 0x718 );    if(slot1 != 0xffff && slot2 != 0xffff) {ADDBYTE( pak, 2 );} //both slots are valid    else {ADDBYTE( pak, 1 );}                                   //one of the slots is valid    if(slot1 != 0xffff)    {        ADDBYTE    ( pak, slot1);        ADDWORD    ( pak, GServer->BuildItemHead( items[slot1] ) );        ADDDWORD   ( pak, GServer->BuildItemData( items[slot1] ) );    }    if(slot2 != 0xffff)    {        ADDBYTE    ( pak, slot2 );        ADDWORD    ( pak, GServer->BuildItemHead( items[slot2] ) );        ADDDWORD   ( pak, GServer->BuildItemData( items[slot2] ) );    }    client->SendPacket( &pak );    }
开发者ID:osROSE,项目名称:osprose,代码行数:22,


示例12: BEGINPACKET

// convert a monster to otherCMonster* CMap::ConverToMonster( CMonster* monster, UINT newmontype, bool heal ){    CNPCData* thisnpc = GServer->GetNPCDataByID( newmontype );    if(thisnpc==NULL)// invalid type        return NULL;    monster->montype = newmontype;    monster->thisnpc = thisnpc;    monster->SetStats( );    if(heal)        monster->Stats->HP = monster->GetMaxHP();    if(monster->owner==0)    {        monster->MonsterDrop->mobdrop = GServer->GetDropData( monster->thisnpc->dropid );        monster->MonsterDrop->mapdrop = GServer->GetDropData( id );    }    BEGINPACKET( pak, 0x774 );    ADDWORD    ( pak, monster->clientid );    ADDWORD    ( pak, newmontype );    GServer->SendToVisible( &pak, monster );    monster->OnSpawn( false );    return monster;}
开发者ID:RavenX8,项目名称:osirose,代码行数:23,


示例13: BEGINPACKET

// NPC Announce to the serverbool CWorldServer::NPCAnnounce( char* msg, char* npc, int mapid){    //LMA: We only announce in the NPC's map    //Log(MSG_INFO,"%s announces: %s",npc,msg);    BEGINPACKET( pak, 0x702 );    ADDSTRING( pak, npc );	ADDSTRING( pak, "> " );	ADDSTRING( pak, msg);	ADDBYTE( pak, 0x00);	if(mapid!=0)	{	    SendToMap  ( &pak, mapid );	}	else	{	    SendToAll( &pak );	}	return true;}
开发者ID:TheDgtl,项目名称:osrose,代码行数:23,


示例14: clock

// HP/MP Regeneration Functionbool CPlayer::Regeneration(){    if (Stats->MaxHP == Stats->HP && Stats->MaxMP == Stats->MP)    {       lastRegenTime = 0;       return true;    }    bool is_first_regen = false;    if (lastRegenTime == 0)    {       is_first_regen = true;    }    clock_t etime = clock() - lastRegenTime;    if( etime >= 8 * CLOCKS_PER_SEC && Stats->HP > 0 )    {        //Log(MSG_INFO,"Regeneration function. Character %i HP on entry %i", clientid, Stats->HP);        unsigned int hpamount = GetHPRegenAmount( );        unsigned int mpamount = GetMPRegenAmount( );        Stats->HP += hpamount;        Stats->MP += mpamount;        if( Stats->HP > Stats->MaxHP)            Stats->HP = Stats->MaxHP;        if( Stats->MP > Stats->MaxMP )            Stats->MP = Stats->MaxMP;        BEGINPACKET( pak, 0x7ec );	    ADDWORD( pak, Stats->HP);	    ADDWORD( pak, Stats->MP );	    client->SendPacket( &pak );        if (Stats->MaxHP == Stats->HP && Stats->MaxMP == Stats->MP)           lastRegenTime = 0;        else            lastRegenTime = clock();        //Log(MSG_INFO,"Regeneration function. Character %i HP on exit %i clock time %i", clientid, Stats->HP, lastRegenTime);    }    return true;}
开发者ID:osROSE,项目名称:osprose,代码行数:40,


示例15: BEGINPACKET

void CPlayer::UpdateInventory( unsigned int slot1, unsigned int slot2 ){    if(slot1==0xffff && slot2==0xffff) return;    BEGINPACKET( pak, 0x718 );    if(slot2!=0xffff && slot2!=0xffff) {ADDBYTE( pak, 2 );}    else {ADDBYTE( pak, 1 );}    if(slot1!=0xffff)    {        ADDBYTE    ( pak, slot1);        ADDWORD   ( pak, GServer->BuildItemHead( items[slot1] ) );        ADDDWORD   ( pak, GServer->BuildItemData( items[slot1] ) );    }    if(slot2!=0xffff)    {        ADDBYTE    ( pak, slot2 );        ADDWORD   ( pak, GServer->BuildItemHead( items[slot2] ) );        ADDDWORD   ( pak, GServer->BuildItemData( items[slot2] ) );    }    client->SendPacket( &pak );}
开发者ID:L3nn0x,项目名称:osirosenew,代码行数:22,


示例16: BEGINPACKET

// Delete a monsterbool CMap::DeleteMonster( CMonster* monster, bool clearobject, UINT i ){    if(monster==NULL) return false;    GServer->ClearClientID( monster->clientid );    if(monster->Position->respawn!=0)    {        CSpawnArea* thisspawn = GServer->GetSpawnArea( monster->Position->respawn, monster->Position->Map );        if(thisspawn!=NULL)            thisspawn->amon--;    }    if(clearobject)    {        BEGINPACKET( pak, 0x799 );        ADDWORD    ( pak, monster->clientid );        ADDWORD    ( pak, monster->clientid );        ADDDWORD   ( pak, monster->Stats->HP );        ADDDWORD   ( pak, 16 );        GServer->SendToVisible( &pak, monster );    }    if(i!=0)    {        MonsterList.erase( MonsterList.begin()+i );        delete monster;        return true;    }    for(UINT i=0; i<MonsterList.size(); i++)    {        CMonster* othermon = MonsterList.at(i);        if(othermon==monster)        {            MonsterList.erase( MonsterList.begin()+i );            delete monster;            return true;        }    }    delete monster;    return false;}
开发者ID:osROSE,项目名称:osrose,代码行数:39,


示例17: BEGINPACKET

// convert a monster to otherCMonster* CMap::ConverToMonster( CMonster* monster, UINT newmontype, bool heal ){    CNPCData* thisnpc = GServer->GetNPCDataByID( newmontype );    if(thisnpc == NULL)// invalid type        return NULL;    int spawnid = monster->Status->spawnid;    monster->montype = newmontype;    monster->thisnpc = thisnpc;    monster->SetStats( );    if(heal)        monster->Stats->HP = monster->Stats->MaxHP;    if(monster->owner == 0)    {        monster->MonsterDrop->mobdrop = GServer->GetDropData( monster->thisnpc->dropid );        monster->MonsterDrop->mapdrop = GServer->GetDropData( id );    }    BEGINPACKET( pak, 0x774 );    ADDWORD    ( pak, monster->clientid );    ADDWORD    ( pak, newmontype );    GServer->SendToVisible( &pak, monster );    monster->OnSpawn( false );    monster->Status->spawnid = spawnid; //make sure the monster retains the original spawnid. Don't see why it should be lost though.    return monster;}
开发者ID:karlseven,项目名称:ROED,代码行数:25,


示例18: Log

// Return to char select bool CCharServer::pakWSCharSelect ( CCharClient* thisclient, CPacket* P ){	if(!thisclient->isLoggedIn) return false;    	Log( MSG_INFO, "World server requested char select" );	DWORD userid = GETDWORD( (*P), 0 );	CCharClient* otherclient = GetClientByUserID( userid );	if(otherclient==NULL)	{        Log(MSG_WARNING, "Invalid userid: %i", userid );	    return true;    }	BEGINPACKET( pak, 0x71c );	ADDBYTE    ( pak, 0x00 );	otherclient->SendPacket( &pak );     Log( MSG_INFO, "Client returning to char select" );    RESETPACKET( pak, 0x505 );    ADDDWORD( pak, thisclient->userid );    cryptPacket( (char*)&pak, NULL );    CChanels* thischannel = GetChannelByID( thisclient->channel );    if(thischannel!=NULL)        send( thischannel->sock, (char*)&pak, pak.Size, 0 );  	            	return true;}
开发者ID:osROSE,项目名称:osrose,代码行数:25,


示例19: clock

//.........这里部分代码省略.........    */    //End debug.    //Load our Server Info    LoadQuestSTB();    //hidden    // LoadDropsData( );    // new drops routine load    LoadPYDropsData( );    LoadSkillBookDropsData( );    // end of new drops data    //LoadChestData( ); //LMA: loaded now by STB in LoadBreakChestBlueList.    // PY custom events start    LoadCustomTeleGate( );    LoadCustomEvents( );    // PY custom events end    LoadNPCData( );    LoadQuestItemData( );    LoadTeleGateData( );    LoadRespawnData( );    LoadMobGroups( );    LoadMobGroupsSpecial( );    //LMA: Special spawns (Halloween for example).    LoadNPCs( );    LoadNPCsSpecial( );  //Special NPC load    LoadMonsters( );    LoadUpgrade( );    LoadLTB();  //LMA: Loading LTB for AIP.    LoadQuestData( );    LoadAipData();  //LMA: loading AIP.    CleanConnectedList( );    Log(MSG_INFO, "Database Loaded                      " );    pthread_create( &WorldThread[WORLD_THREAD], &at, WorldProcess, NULL);    pthread_create( &WorldThread[VISUALITY_THREAD], &at, VisibilityProcess, NULL);    pthread_create( &MapThread[0], &at, MapProcess, NULL);    Log (MSG_INFO, "osRose Revision %s", Config.osRoseVer );    Log( MSG_INFO, "Process Loaded. WorldDelay %i | MapDelay %i | VisualDelay %i",Config.WorldDelay,Config.MapDelay,Config.VisualDelay);    DB->QExecute( "DELETE FROM channels WHERE id=%u and type=%i", Config.ServerID, Config.ServerType );    if(!DB->QExecute("INSERT INTO channels (id,type,name,host,port,lanip,lansubmask,connected,maxconnections,owner) VALUES (%i,%i,'%s','%s',%u,'%s','%s',0,%i,%i)",            Config.ServerID, Config.ServerType, Config.ServerName, Config.WorldIP, Config.WorldPort, Config.LanIP, Config.LanSubnet, Config.MaxConnections, Config.ParentID))    {        Log(MSG_WARNING, "Error accessing to database, the other server will not connect to WorldServer" );    }	MYSQL_ROW row;    bool pflag = false;    //Get IP and Port from Charserver    MYSQL_RES *result = DB->QStore( "SELECT host,port,lanip FROM channels WHERE id=%u and type=1", Config.ParentID );    if(result==NULL) return false;	if (mysql_num_rows( result ) == 1)	{    	row = mysql_fetch_row( result );    	switch(Config.Connection)    	{            case 0://wanip               	Config.CharIP = row[0];            break;            case 1://lanip               	Config.CharIP = row[2];            break;            default://localhost               	Config.CharIP = "127.0.0.1";            break;        }    	Config.CharPort =  atoi(row[1]);        pflag = true;    }    DB->QFree( );    if(pflag)    {        Log(  MSG_INFO, "Initialized Charserver connection" );    	// Connect To LoginServer    	csock = socket( AF_INET, SOCK_STREAM, 0 );    	if (csock == INVALID_SOCKET)        {            Log( MSG_WARNING, "Could not access login server" );        }    	struct sockaddr_in ain;    	ain.sin_family		= AF_INET;       	ain.sin_addr.s_addr	= inet_addr( Config.CharIP );    	ain.sin_port = htons( Config.CharPort );    	if ( connect( csock, (SOCKADDR*) &ain, sizeof(ain) ) == SOCKET_ERROR )    		Log( MSG_WARNING, "Could not access charserver" );    	BEGINPACKET( pak, 0x500 );        ADDDWORD   ( pak, Config.CharPass );        ADDDWORD   ( pak, Config.ServerID );        ADDWORD    ( pak, Config.WorldPort );    	cryptPacket( (char*)&pak, NULL );    	send( csock, (char*)&pak, pak.Size, 0 );    }	float loadtime = (float)( clock() - timer ) / CLOCKS_PER_SEC;	Log(  MSG_INFO, "Server took %.4f seconds to load", loadtime );	return true;}
开发者ID:TheDgtl,项目名称:osrose,代码行数:101,


示例20: BEGINPACKET

// This cleans up our clients mess :Pvoid CWorldServer::OnClientDisconnect( CClientSocket* thisclient ){    if(thisclient->player==NULL) return;	CPlayer* player = (CPlayer*)thisclient->player;	if(!player->Session->isLoggedIn) return;    if(!player->Saved)    {    	player->savedata();        player->Session->isLoggedIn = false;        //send packet to change messenger status (offline)    	BEGINPACKET( pak, 0x7e1 );    	ADDBYTE    ( pak, 0xfa );    	ADDWORD    ( pak, player->CharInfo->charid );    	ADDBYTE    ( pak, 0x00 );    	cryptPacket( (char*)&pak, NULL );    	send( csock, (char*)&pak, pak.Size, 0 );    }    if ( player->Fairy )    {        FairyList.at(player->FairyListIndex)->assigned = false;        FairyList.at(player->FairyListIndex)->LastTime = clock();        FairyList.at(player->FairyListIndex)->ListIndex = 0;        FairyList.at(player->FairyListIndex)->WaitTime = Config.FairyWait * (rand()% GetFairyRange(1)+ GetFairyRange(0));        player->Fairy = false;        player->FairyListIndex = 0;        DoFairyStuff(player, 0);        // recalculate FairyMax        Config.FairyMax = (int)ceil((float)ClientList.size() / 50.0); //(1 fairy more every 50 player)    }    if(player->Party->party!=NULL)    {        CParty* party = player->Party->party;        BEGINPACKET( pak, 0x7d2 );        ADDWORD    ( pak, 0xff00 );        ADDDWORD   ( pak, player->CharInfo->charid );        bool pflag = false;        party->RemovePlayer( player );        if(party->Members.size()>1)        {            for(UINT i=0;i<party->Members.size();i++)            {                CPlayer* othermember = party->Members.at(i);                if(!pflag)                {                    ADDDWORD( pak, othermember->CharInfo->charid );                    if(player->Party->IsMaster)                        othermember->Party->IsMaster = true;                    pflag = true;                }                othermember->client->SendPacket( &pak );            }        }        else        {            for(UINT i=0;i<party->Members.size();i++)            {                CPlayer* othermember = party->Members.at(i);                BEGINPACKET( pak, 0x7d1 );                ADDBYTE    ( pak, 0x05 );                ADDWORD    ( pak, 0x0000 );                ADDWORD    ( pak, 0x0000 );                othermember->client->SendPacket( &pak );                othermember->Party->party = NULL;                othermember->Party->IsMaster = true;            }            RemoveParty( party );            delete party;            party = NULL;        }    }    DB->QExecute("UPDATE accounts SET online=false where id=%u", player->Session->userid );}
开发者ID:TheDgtl,项目名称:osrose,代码行数:73,


示例21: BEGINPACKET

// Spawn a monster//LMA: added handling of skill summons.void CMonster::SpawnMonster( CPlayer* player, CMonster* thismon ){    BEGINPACKET( pak, 0x792 );													//struct tag_ADD_CHAR	ADDWORD    ( pak, clientid );	ADDFLOAT   ( pak, Position->current.x*100 );	ADDFLOAT   ( pak, Position->current.y*100 );						//current X and Y position	if((thismon->bonushp > 0 || thismon->bonusmp > 0) && (thismon->skillid > 0))	//What is this? It seems to be sending this in place of destination if the monster is not able to move. Bonfires and so on	{    	ADDFLOAT   ( pak, 0xcdcdcdcd );    	ADDFLOAT   ( pak, 0xcdcdcdcd );    }    else    {     	ADDFLOAT   ( pak, Position->destiny.x*100 );					//Destination position. This should always follow current position    	ADDFLOAT   ( pak, Position->destiny.y*100 );    }	// next 2 WORDS are m_wCommand and m_wTargetOBJ	if(IsDead( ))	{	   ADDWORD    ( pak, 0x0003 );	   ADDWORD    ( pak, 0x0000 );    }	else if(IsOnBattle( ))	{       //LMA: for supportive summons (lucky ghost...)       if(Battle->bufftarget == Battle->target)       {    	   ADDWORD    ( pak, 0x0002 );    	   ADDWORD    ( pak, 0x0000 );       }       else       {    	   ADDWORD    ( pak, 0x0002 );    	   ADDWORD    ( pak, Battle->target );       }    }	else if(IsMoving( ))	{	   ADDWORD    ( pak, 0x0001 );	   ADDWORD    ( pak, 0x0000 );    }    else    {    	ADDWORD    ( pak, 0x0000 );    	ADDWORD    ( pak, 0x0000 );    }	ADDBYTE		( pak, thisnpc->stance );    ADDWORD   ( pak, Stats->HP );	ADDWORD	  ( pak, 0x0000 );	// now Team Number	if(thismon->owner != player->clientid)    {        CMap* map = GServer->MapList.Index[Position->Map];        //LMA: adding team...        if (thismon->team!=0)        {            ADDWORD( pak,thismon->team);        }        else        {            if(IsSummon( ) && map->allowpvp!=0)            {                //Hostil                ADDWORD( pak, 0x0064 );            }            else if (IsSummon( ) && map->allowpvp==0)            {                //Friendly                ADDWORD ( pak, 0x0000 );            }            else            {                //Hostil                ADDWORD( pak, 0x0064 );            }        }    }    else    {        //Friendly        ADDWORD( pak, 0x0000 );    }	ADDWORD ( pak, 0x0000 );	//and finally DWORD StatusFlag    ADDDWORD( pak, GServer->BuildBuffs( this ) );			//struct gsv_MOB_CHAR	ADDWORD   ( pak, montype );	ADDWORD   ( pak, 0x0000 );	ADDWORD	  ( pak, thismon->Stats->Level );	ADDWORD   ( pak, thismon->Stats->Size );	player->client->SendPacket( &pak );//.........这里部分代码省略.........
开发者ID:PurpleYouko,项目名称:KTRose_Server,代码行数:101,


示例22: BEGINPACKET

// Spawn a monster//LMA: added handling of skill summons.void CMonster::SpawnMonster( CPlayer* player, CMonster* thismon ){    BEGINPACKET( pak, 0x792 );	ADDWORD    ( pak, clientid );	ADDFLOAT   ( pak, Position->current.x*100 );	ADDFLOAT   ( pak, Position->current.y*100 );	ADDDWORD   ( pak, 0xcdcdcdcd );	ADDDWORD   ( pak, 0xcdcdcdcd );	if(IsDead( ))	{	   ADDWORD    ( pak, 0x0003 );	   ADDWORD    ( pak, 0x0000 );    }	else if(IsOnBattle( ))	{       //LMA: for supportive summons (lucky ghost...)       if(Battle->bufftarget==Battle->target)       {    	   ADDWORD    ( pak, 0x0002 );    	   ADDWORD    ( pak, 0x0000 );       }       else       {    	   ADDWORD    ( pak, 0x0002 );    	   ADDWORD    ( pak, Battle->target );       }    } else if(IsMoving( ))	{	   ADDWORD    ( pak, 0x0001 );	   ADDWORD    ( pak, 0x0000 );    } else {    	ADDWORD    ( pak, 0x0000 );    	ADDWORD    ( pak, 0x0000 );    }    if(IsSummon( ) )    {        ADDBYTE    ( pak, 0x01 );    } else {        ADDBYTE    ( pak, 0x00 );    }    ADDWORD(pak, 0x0000);    if(Stats->HP > MAXHPMOB)    {        Stats->HP = (long long) MAXHPMOB;    }    ADDDWORD   ( pak, Stats->HP );	if(thismon->owner != player->clientid)    {        CMap* map = GServer->MapList.Index[Position->Map];        if (thismon->team!=0)        {            ADDDWORD( pak,thismon->team);        }        else        {            if(IsSummon( ) && map->allowpvp!=0)            {                //Hostil                ADDDWORD( pak, 0x00000064 );            }            else if (IsSummon( ) && map->allowpvp==0)            {                //Friendly                ADDDWORD ( pak, 2 );            }            else            {                //Hostil                ADDDWORD( pak, 0x00000064 );            }        }    } else {        //Friendly        ADDDWORD( pak, 2 );    }    ADDDWORD( pak, GServer->BuildBuffs( this ) );	ADDDWORD   ( pak, montype );	if(IsSummon( ))    {        ADDWORD( pak, owner );        if (thismon->skillid>0)        {           ADDWORD( pak, thismon->skillid ); //id del skill (si es summon de skill)        }        else        {           ADDWORD( pak, 0x0000 ); //id del skill (si es summon de skill)        }    }	player->client->SendPacket( &pak );//.........这里部分代码省略.........
开发者ID:karlseven,项目名称:ROED,代码行数:101,


示例23: GETBYTE

// Party Actions [invite/leave/kick]bool CWorldServer::pakPartyActions( CPlayer* thisclient, CPacket* P ){    unsigned int action = GETBYTE((*P),0);    CMap* map = MapList.Index[thisclient->Position->Map];    switch(action)    {        case 0x00://Invita a new party        case 0x01://invite a existent party        {            UINT clientid = GETWORD((*P),1);            if(thisclient->Party->party!=NULL)            {                //LMA: Refreshing Capacity if needed                thisclient->Party->party->RefreshMax();                if(thisclient->Party->party->Members.size()>=thisclient->Party->party->Capacity)                {                    SendSysMsg( thisclient, "Party is full" );                    return true;                }            }            CPlayer* otherclient = map->GetPlayerInMap( clientid );// have to be in same map            if(otherclient==NULL)            {                BEGINPACKET( pak, 0x7d1 );                ADDBYTE    ( pak, 0x00 );//No encontro el ID                ADDWORD    ( pak, clientid );                ADDBYTE    ( pak, 0x00 );                thisclient->client->SendPacket( &pak );                return true;            }            if(otherclient->Party->party!=NULL)            {                BEGINPACKET( pak, 0x7d1 );                ADDBYTE    ( pak, 0x01 );//No puede ser solicitado (ya tiene party)                ADDWORD    ( pak, clientid );                ADDBYTE    ( pak, 0x00 );                thisclient->client->SendPacket( &pak );                return true;            }            if(abs(otherclient->Stats->Level-thisclient->Stats->Level)>(Config.Partygap+1))            {                BEGINPACKET( pak, 0x7d1 );                ADDBYTE    ( pak, 0x07 );//Level inapropiado                ADDWORD    ( pak, clientid );                ADDBYTE    ( pak, 0x00 );                thisclient->client->SendPacket( &pak );                return true;            }            BEGINPACKET( pak, 0x7d0 );            ADDBYTE    ( pak, action );            ADDWORD    ( pak, thisclient->clientid );            ADDBYTE    ( pak, 0x00 );            otherclient->client->SendPacket( &pak );        }        break;        case 0x02://Leave Party        {            if(thisclient->Party->party==NULL)                return true;            CParty* party = thisclient->Party->party;            BEGINPACKET( pak, 0x7d2 );            ADDWORD    ( pak, 0xff00 );            ADDDWORD   ( pak, thisclient->CharInfo->charid );            bool pflag = false;            if(!party->RemovePlayer( thisclient )) //if this player is not in this party                return true;            if(party->Members.size()>1)            {                for(UINT i=0;i<party->Members.size();i++)                {                    CPlayer* thismember = party->Members.at(i);                    if(!pflag)                    {                        ADDDWORD( pak, thismember->CharInfo->charid );                        if(thisclient->Party->IsMaster)                            thismember->Party->IsMaster = true;                        pflag = true;                    }                    thismember->client->SendPacket( &pak );                }            }            else            {                for(UINT i=0;i<party->Members.size();i++)                {                    CPlayer* thismember = party->Members.at(i);                    BEGINPACKET( pak, 0x7d1 );                    ADDBYTE    ( pak, 0x05 );                    ADDWORD    ( pak, 0x0000 );                    ADDWORD    ( pak, 0x0000 );                    thismember->client->SendPacket( &pak );                    thismember->Party->party = NULL;                    thismember->Party->IsMaster = true;                }                RemoveParty( party );                delete party;            }        }        break;//.........这里部分代码省略.........
开发者ID:TheDgtl,项目名称:osrose-droprev,代码行数:101,



注:本文中的BEGINPACKET函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ BEGIN_BATCH_NO_AUTOSTATE函数代码示例
C++ BEFS_SB函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。