사이트 로그인
2016.04.27 16:11
core.c
extern void game_spell_timer(void *); //검색
extern void game_spell_timer2(void *);//추가
timer_add(game_spell_timer, 0, 1000, 0); //검색
timer_add(game_spell_timer2, 0, 1000, 0); //추가
script.c
spell.c
아래 함수를 추가합니다.
void game_spell_timer2(void *timer_data)
{
unsigned int i, count;
struct socket_data *sd;
struct game_session_data *gsd;
struct account_spell_data *asd;
for(i=0; i<SOCK_COUNT; i++){
if(sd = session[SOCK(i)]){
if(sd->auth && sd->type && (gsd = sd->session_data)) {
for(count=0; count<35; count++) {
if(asd = gsd->account->spell[count]) {
if(asd->delay && asd->flag) { game_spell_delayer(SOCK(i), asd->spell->image, asd->delay); }
if(asd->delay && !--asd->delay) {
if(asd->spell->script_final) { run_script(asd->spell->script_final, 0, gsd->session_id, 0); }
sprintf(buffer, "%s 끝", asd->spell->name);
game_message(SOCK(i), 3, buffer);
return;
}
}
}
}
}
}
}
스크립트상에서 spell_delay 함수를 사용했을 시 타 마법을 사용해도 개별적으로 딜레이가 돌아오는 내용입니다.
이 부분은 skill_timer에서 힌트를 얻었습니다