📄 op_chr_status.cpp
字号:
*/
/////////////////////////////////////////////////////////////////////////////////////
// if( cn == 0 || cn == 1 || cn >= 10000 ) return;
/////////////////////////////////////////////////////////////////////////////////////cn
packet.h.header.type = CMD_CHAR_INFO_BASIC;
{
packet.u.char_info_basic.kind = kind;
packet.u.char_info_basic.data = data;
}
packet.h.header.size = sizeof( t_char_info_basic );
QueuePacket( connections, cn, &packet, 1);
}
InitPartyMemberServerToServer( CHARLIST *ch ) // 捞抚父 叼厚俊 历厘窍绊 捞抚父 波郴柯促.
{
for( int i=0; i<6; i++ )
{
strcpy( ch->party[i].Name, ch->party_str[i] );
}
for( i=0; i<3; i++ )
{
strcpy( ch->relation[i].Name, ch->relation_str[i] );
}
for( i=0; i<6; i++ )
{
strcpy( ch->employment[i].Name, ch->employment_str[i] );
}
return 1;
}
EndsetPartyMenberForUpdate( CHARLIST *ch )
{
for( int i=0; i<6; i++ )
{
strcpy( ch->party_str[i] ,ch->party[i].Name );
}
for( i=0; i<3; i++ )
{
strcpy( ch->relation_str[i], ch->relation[i].Name );
}
for( i=0; i<6; i++ )
{
strcpy( ch->employment_str[i], ch->employment[i].Name );
}
return 1;
}
//######################## login server 侩 ##########################
void SendItemIndex( t_connection c[], int cn ) // 硅款 酒捞袍 焊郴林扁
{
CHARLIST *ch = &c[cn].chrlst;
t_packet packet;
packet.h.header.type = CMD_ITEM_INDEX;
{
memcpy( packet.u.kein.server_item_index.item, ch->Item, c[cn].chrlst.ItemMax * sizeof( short int ) );
}
packet.h.header.size = sizeof(k_server_item_index);
QueuePacket(c, cn, &packet, 1);
}
void SendDiesease( t_connection c[], int cn ) // diesease 焊郴林扁
{
CHARLIST *ch = &c[cn].chrlst;
t_packet packet;
packet.h.header.type = CMD_SEND_CHAR_DISEASE;
{
for( int i=0; i<6; i++ )
{
packet.u.kein.server_disease.disease[i] = ch->disease[i];
}
}
packet.h.header.size = sizeof(k_server_disease);
QueuePacket(c, cn, &packet, 1);
}
void SendEmployment( t_connection c[], int cn ) // employment 焊郴林扁 //1229
{
return;
/*
CHARLIST *ch = &c[cn].chrlst;
int Level, Face, Str, Class, Gender;
t_packet packet;
int ret;
memset( &packet, 0, sizeof( t_packet ) );
packet.h.header.type = CMD_EMPLOYMENT;
{
for( int i=0; i<6; i++ )
{
if( ch->employment[i][0] ) ret = GetPartyChar_SQL( ch->employment[i], &Level, &Face, &Str, &Class, &Gender );
if( ret == 1 )
{
packet.u.kein.server_party.Level[i] = Level;
packet.u.kein.server_party.Gender[i]= Gender;
packet.u.kein.server_party.Face[i] = Face;
packet.u.kein.server_party.Str[i] = Str;
packet.u.kein.server_party.Class[i] = Class;
memcpy( packet.u.kein.server_party.name[i], ch->employment[i], sizeof( char ) *31 );
}
}
}
packet.h.header.size = sizeof(k_server_party );
QueuePacket(c, cn, &packet, 1);
*/
}
void SendRelation( t_connection c[], int cn ) // 荤力 包拌焊郴林扁 //1229
{
return;
/*
CHARLIST *ch = &c[cn].chrlst;
int Level, Face, Str, Class, Gender;
t_packet packet;
int ret;
memset( &packet, 0, sizeof( t_packet ) );
packet.h.header.type = CMD_RELATION;
{
for( int i=0; i<3; i++ )
{
if( ch->relation[i][0] ) ret = GetPartyChar_SQL( ch->relation[i], &Level, &Face, &Str, &Class, &Gender );
if( ret == 1 )
{
packet.u.kein.server_relation.Level[i] = Level;
packet.u.kein.server_relation.Gender[i] = Gender;
packet.u.kein.server_relation.Face[i] = Face;
packet.u.kein.server_relation.Str[i] = Str;
packet.u.kein.server_relation.Class[i] = Class;
memcpy( packet.u.kein.server_relation.name[i], ch->relation[i], sizeof( char ) *31 );
}
}
}
packet.h.header.size = sizeof(k_server_relation);
QueuePacket(c, cn, &packet, 1);
*/
}
void SendParty( t_connection c[], int cn ) // 颇萍盔 焊郴林扁 //0213 YGI
{
CHARLIST *ch = &c[cn].chrlst;
t_packet packet;
memset( &packet, 0, sizeof( t_packet ) );
packet.h.header.type = CMD_PARTY;
{
for( int i=0; i<6; i++ )
{
if( ch->party[i].On )
{
packet.u.kein.server_party.Level[i] = ch->party[i].Level;
packet.u.kein.server_party.Gender[i]= ch->party[i].Gender;
packet.u.kein.server_party.Face[i] = ch->party[i].Face;
packet.u.kein.server_party.Str[i] = ch->party[i].Str;
packet.u.kein.server_party.Class[i] = ch->party[i].Class;
memcpy( packet.u.kein.server_party.name[i], ch->party[i].Name, sizeof( char ) *31 );
}
}
}
packet.h.header.size = sizeof(k_server_party );
QueuePacket(c, cn, &packet, 1);
}
/// 0212 YGI
int SetMySkill( CHARLIST *ch ) // 老窜 扁夯利栏肺 舅酒具窍绰 胶懦 悸
{
int i;
switch( ch->Class )
{
case WARRIOR : for( i=0; i<MAX_SKILLMAIN;i++ )
if( SkillTbl[i].Class_Warrior == 1 )
ch->Skill[i] = 1;
break;
case THIEF : for( i=0; i<MAX_SKILLMAIN;i++ )
if( SkillTbl[i].Class_Thief == 1 )
ch->Skill[i] = 1;
break;
case ARCHER : for( i=0; i<MAX_SKILLMAIN;i++ )
if( SkillTbl[i].Class_Archery == 1 )
ch->Skill[i] = 1;
break;
case WIZARD : for( i=0; i<MAX_SKILLMAIN;i++ )
if( SkillTbl[i].Class_Wizard == 1 )
ch->Skill[i] = 1;
break;
case PRIEST : for( i=0; i<MAX_SKILLMAIN;i++ )
if( SkillTbl[i].Class_Priest == 1 )
ch->Skill[i] = 1;
break;
}
switch( ch->Job )
{
case J_FAMER : for( i=0; i<MAX_SKILLMAIN;i++ ) if( SkillTbl[i].Select_Farmer == 1 ) ch->Skill[i] = 1; break;
case J_MINNER : for( i=0; i<MAX_SKILLMAIN;i++ ) if( SkillTbl[i].Select_miner == 1 ) ch->Skill[i] = 1; break;
case J_FISHER : for( i=0; i<MAX_SKILLMAIN;i++ ) if( SkillTbl[i].Select_fisher == 1 ) ch->Skill[i] = 1; break;
case J_LUMBERJACK : for( i=0; i<MAX_SKILLMAIN;i++ ) if( SkillTbl[i].Select_Lumberjack == 1 ) ch->Skill[i] = 1; break;
case J_BUTCHER : for( i=0; i<MAX_SKILLMAIN;i++ ) if( SkillTbl[i].Select_Butcher == 1 ) ch->Skill[i] = 1; break;
case J_HERB_DIGGER : for( i=0; i<MAX_SKILLMAIN;i++ ) if( SkillTbl[i].Select_Herbdigger == 1 ) ch->Skill[i] = 1; break;
case J_HERDSMAN : for( i=0; i<MAX_SKILLMAIN;i++ ) if( SkillTbl[i].Select_herdman == 1 ) ch->Skill[i] = 1; break;
case J_CARPENTER : for( i=0; i<MAX_SKILLMAIN;i++ ) if( SkillTbl[i].Select_Carpenter == 1 ) ch->Skill[i] = 1; break;
case J_BLACKSMITH : for( i=0; i<MAX_SKILLMAIN;i++ ) if( SkillTbl[i].Select_Blacksmith == 1 ) ch->Skill[i] = 1; break;
case J_COOKER : for( i=0; i<MAX_SKILLMAIN;i++ ) if( SkillTbl[i].Select_Cooking == 1 ) ch->Skill[i] = 1; break;
case J_TAILOR : for( i=0; i<MAX_SKILLMAIN;i++ ) if( SkillTbl[i].Select_Tailoring == 1 ) ch->Skill[i] = 1; break;
case J_BOWCRAFT : for( i=0; i<MAX_SKILLMAIN;i++ ) if( SkillTbl[i].Select_Bowcraft_Fletcher == 1 ) ch->Skill[i] = 1; break;
case J_ALCHEMIST : for( i=0; i<MAX_SKILLMAIN;i++ ) if( SkillTbl[i].Select_Alchemy == 1 ) ch->Skill[i] = 1; break;
case J_CANDLEMAKER : for( i=0; i<MAX_SKILLMAIN;i++ ) if( SkillTbl[i].Select_Candlemaker == 1 ) ch->Skill[i] = 1; break;
case J_MERCHANT : for( i=0; i<MAX_SKILLMAIN;i++ ) if( SkillTbl[i].Select_Merchant == 1 ) ch->Skill[i] = 1; break;
}
return 1;
}
// 0213 YGI
//int SendPartyInforForGameserver( short int server_id, char para, t_connection c[], short int cn )
int SendPartyInforForGameserver( short int server_id, char para, char *name, t_connection c[], short int cn )
{
t_packet packet;
int Level, Face, Str, Class, Gender;
int ret = 0;
memset( &packet, 0, sizeof( t_packet ) );
packet.h.header.type = CMD_PARTY_ACCESS;
{
if( name ) ret = GetPartyChar_SQL( name, &Level, &Face, &Str, &Class, &Gender );
if( ret == 1 )
{
packet.u.kein.server_server_party_info.Server_id= server_id;
packet.u.kein.server_server_party_info.ct = para;
packet.u.kein.server_server_party_info.Level = Level;
packet.u.kein.server_server_party_info.Gender = Gender;
packet.u.kein.server_server_party_info.Face = Face;
packet.u.kein.server_server_party_info.Str = Str;
packet.u.kein.server_server_party_info.Class = Class;
}
else return 0;
}
packet.h.header.size = sizeof( k_server_server_party_info );
QueuePacket(c, cn, &packet, 1);
return 1;
}
// 0218 YGI
extern void SendOhMyParty( char *my_name, char *party_name ); // 0620 YGI
int SendPartyInfoOfOtherCharToGameserver( char *other_name, char *my_name, short int server_id, t_connection c[], short int cn )
{
char you_party[6][31];
get_BinaryData_Party( (UCHAR **)you_party, other_name );
for( int j=0; j<6; j++ )
{
if( !strcmp( my_name, you_party[j] ) )
break;
}
int ret = 0;
if( j == 6 ) ret = 0;
else ret = 1;
if( ret )
{
t_packet packet;
memset( &packet, 0, sizeof( t_packet ) );
packet.h.header.type = CMD_REQ_PARTY_TOGETHER;
{
packet.u.kein.rep_party_together.server_id = server_id;
strcpy( packet.u.kein.rep_party_together.party_name, other_name);
}
packet.h.header.size = sizeof( k_rep_party_together );
QueuePacket(c, cn, &packet, 1);
SendOhMyParty( my_name, other_name ); // 0620 YGI
}
return 1;
}
// 0224 YGI
void SendCreateAbility( short int cn )
{
CHARLIST *ch = &connections[cn].chrlst;
if( !ch ) return;
t_packet p;
p.h.header.type = CMD_CREATE_ABILITY;
{
/*
for( int i=STR; i<= LUCK; i++ )
{
plus[i] = rand() % 4;
}
p.u.kein.start_create_ability.str = plus[STR];
p.u.kein.start_create_ability.dex = plus[DEX];
p.u.kein.start_create_ability.con = plus[CON];
p.u.kein.start_create_ability.wis = plus[WIS];
p.u.kein.start_create_ability.inte = plus[INT];
p.u.kein.start_create_ability.cha = plus[CHA];
p.u.kein.start_create_ability.movp = plus[MOVP];
p.u.kein.start_create_ability.endu = plus[ENDU];
p.u.kein.start_create_ability.mor = plus[MOR];
p.u.kein.start_create_ability.wsps = plus[WSPS];
p.u.kein.start_create_ability.luck = plus[LUCK];
*/
}
p.h.header.size = 0 ;
QueuePacket(connections, cn, &p, 1);
}
// 0410
int GetDiceAbility( int DiceNumber ) // 促捞胶 倒府扁
{
int dice_count, dice_max;
dice_count = DiceNumber / 1000;
dice_max = DiceNumber % 1000;
int ret = 0;
for( int i=0; i<dice_count ; i++ )
{
ret += rand()%dice_max + 1;
}
return ret;
}
// 0410 YGI
void SendThrowDice( char type, short int cn )
{
if( type < 0 || type > 5 ) return;
CHARLIST *ch = &connections[cn].chrlst;
if( !ch ) return;
ch->Class = type;
int nAbility[LUCK+1] = {0,};
int num_to_rate[2] = { 1003, 1002 };
int class_ability[5][5] = {
{ STR, CON },
{ DEX, MOVP},
{ DEX, CON },
{ INT, WSPS},
{ WIS, WSPS}
};
for( int i=0; i<2; i++ )
{
int ability = GetDiceAbility( num_to_rate[i] );
nAbility[ class_ability[ch->Class][i] ] = ability;
}
t_packet p = {0,};
p.h.header.type = CMD_THROW_DICE;
{
p.u.kein.start_throw_dice.ability1 = nAbility[ class_ability[ch->Class][0] ];
p.u.kein.start_throw_dice.ability2 = nAbility[ class_ability[ch->Class][1] ];
}
p.h.header.size = sizeof( k_start_throw_dice );
QueuePacket(connections, cn, &p, 1);
int basic_ability[5][11] =
{
{ 50, 10, 30, 10, 10, 10, 10, 10, 10, 10, 10 },
{ 10, 40, 20, 10, 10, 10, 20, 10, 10, 10, 20 },
{ 10, 50, 20, 10, 10, 10, 20, 10, 10, 10, 10 },
{ 10, 10, 15, 10, 40, 10, 10, 20, 10, 25, 10 },
{ 10, 10, 20, 35, 10, 10, 10, 20, 10, 25, 10 },
};
ch->Str = basic_ability[type][STR]; // 0229 YGI
ch->Con = basic_ability[type][CON];
ch->Dex = basic_ability[type][DEX];
ch->Wis = basic_ability[type][WIS];
ch->Int = basic_ability[type][INT];
ch->MoveP = basic_ability[type][MOVP];
ch->Char = basic_ability[type][CHA];
ch->Endu = basic_ability[type][ENDU];
ch->Moral = basic_ability[type][MOR];
ch->Luck = basic_ability[type][LUCK];
ch->wsps = basic_ability[type][WSPS];
ch->Str += nAbility[STR]; // 0229 YGI
ch->Con += nAbility[CON];
ch->Dex += nAbility[DEX];
ch->Wis += nAbility[WIS];
ch->Int += nAbility[INT];
ch->MoveP += nAbility[MOVP];
ch->Char += nAbility[CHA];
ch->Endu += nAbility[ENDU];
ch->Moral += nAbility[MOR];
ch->Luck += nAbility[LUCK];
ch->wsps += nAbility[WSPS];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -