사이트 로그인
2016.04.27 16:10
attack.c 를 열어봅시다~
void game_char_attack(SOCKET s)
{
int per, Xrate;
double dam1 = 1; double dam2 = 1; double dam3 = 0;
unsigned int calc;
struct object_data *object;
struct object_mob_data *data;
struct game_session_data *gsd;
struct account_item_data *aid;
gsd = session[s]->session_data;
//printf("설마 에러원인이 뭐냐\n : attack");
if(gsd->account->state == 1) {
game_message(s, 3, "귀신은 할 수 없습니다");
return;
}
if(gsd->last_attack + 750 < GetTickCount()) {
gsd->last_attack = GetTickCount();
game_char_side(s);
aid = gsd->account->equip[0];
per = rand()%100;
Xrate = 1;
if(object = game_front_mob(&(gsd->account->point), gsd->side)){
data = object->data;
if(gsd->side == object->side){ Xrate *= 2; }
}
if(game_skill_exist(s, skill_name("더블어택")) || game_skill_exist(s, skill_name("양의신권"))){
dam1 = 2;
}
if(game_skill_exist(s, skill_name("트리플어택"))){
dam2 = 1.5;
}
if(game_skill_exist(s, skill_name("메가어택"))){
dam3 = 1;
}
game_char_action(s, (aid)?aid->item->motion:1, ATTACK_SPEED);
if(object){
if(aid){
char buf[256]={0, };
if(per < aid->item->damage_per){
game_mob_damaged(s, object, 255, game_pc_calc_damage(gsd->dam, aid->item->min_damage2, aid->item->max_damage2, data->ac, Xrate)*(dam1*dam2+dam3));
}else{
game_mob_damaged(s, object, 0, game_pc_calc_damage(gsd->dam, aid->item->min_damage1, aid->item->max_damage1, data->ac, Xrate)*(dam1*dam2+dam3));
}
}else{
}
}
game_sound(s, 1, 0);
}
}
해당 함수 확인하시고 자신의 소스에 맞게 수정해주세요 ~~
키야 고맙따리 고맙따