diff options
author | Happy <markaizer@gmail.com> | 2014-08-21 04:50:46 +0800 |
---|---|---|
committer | Happy <markaizer@gmail.com> | 2014-08-21 04:50:46 +0800 |
commit | f52e1007fe08c67003c0bc4c78231904dd3fd5cc (patch) | |
tree | 99907d827264e501774e58ab4630e41fa7103c02 /src/map/duel.c | |
parent | 2410110dece79b4598c12f1c953219f1d0d1904a (diff) | |
parent | 769b1d05aa5cfa8cddfe7d21b35d5c5e4da3bbd6 (diff) | |
download | hercules-f52e1007fe08c67003c0bc4c78231904dd3fd5cc.tar.gz hercules-f52e1007fe08c67003c0bc4c78231904dd3fd5cc.tar.bz2 hercules-f52e1007fe08c67003c0bc4c78231904dd3fd5cc.tar.xz hercules-f52e1007fe08c67003c0bc4c78231904dd3fd5cc.zip |
Merge pull request #1 from HerculesWS/master
Update from original
Diffstat (limited to 'src/map/duel.c')
-rw-r--r-- | src/map/duel.c | 137 |
1 files changed, 76 insertions, 61 deletions
diff --git a/src/map/duel.c b/src/map/duel.c index 9a8b6d12b..4e4eeef1f 100644 --- a/src/map/duel.c +++ b/src/map/duel.c @@ -2,45 +2,42 @@ // See the LICENSE file // Portions Copyright (c) Athena Dev Teams -#include "../common/cbasetypes.h" +#define HERCULES_CORE -#include "atcommand.h" // msg_txt -#include "clif.h" #include "duel.h" -#include "pc.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> -struct duel duel_list[MAX_DUEL]; -int duel_count = 0; +#include "atcommand.h" // msg_txt +#include "clif.h" +#include "pc.h" +#include "../common/cbasetypes.h" /*========================================== * Duel organizing functions [LuzZza] *------------------------------------------*/ -void duel_savetime(struct map_session_data* sd) -{ - time_t timer; +void duel_savetime(struct map_session_data* sd) { + time_t clock; struct tm *t; - time(&timer); - t = localtime(&timer); + time(&clock); + t = localtime(&clock); - pc_setglobalreg(sd, "PC_LAST_DUEL_TIME", t->tm_mday*24*60 + t->tm_hour*60 + t->tm_min); + pc_setglobalreg(sd, script->add_str("PC_LAST_DUEL_TIME"), t->tm_mday*24*60 + t->tm_hour*60 + t->tm_min); } -int duel_checktime(struct map_session_data* sd) -{ +int duel_checktime(struct map_session_data* sd) { int diff; - time_t timer; + time_t clock; struct tm *t; - time(&timer); - t = localtime(&timer); + time(&clock); + t = localtime(&clock); - diff = t->tm_mday*24*60 + t->tm_hour*60 + t->tm_min - pc_readglobalreg(sd, "PC_LAST_DUEL_TIME"); + diff = t->tm_mday*24*60 + t->tm_hour*60 + t->tm_min - pc_readglobalreg(sd, script->add_str("PC_LAST_DUEL_TIME") ); return !(diff >= 0 && diff < battle_config.duel_time_interval); } @@ -53,55 +50,52 @@ static int duel_showinfo_sub(struct map_session_data* sd, va_list va) if (sd->duel_group != ssd->duel_group) return 0; sprintf(output, " %d. %s", ++(*p), sd->status.name); - clif->disp_onlyself(ssd, output, strlen(output)); + clif_disp_onlyself(ssd, output, strlen(output)); return 1; } -void duel_showinfo(const unsigned int did, struct map_session_data* sd) -{ +void duel_showinfo(const unsigned int did, struct map_session_data* sd) { int p=0; char output[256]; - if(duel_list[did].max_players_limit > 0) + if(duel->list[did].max_players_limit > 0) sprintf(output, msg_txt(370), //" -- Duels: %d/%d, Members: %d/%d, Max players: %d --" - did, duel_count, - duel_list[did].members_count, - duel_list[did].members_count + duel_list[did].invites_count, - duel_list[did].max_players_limit); + did, duel->count, + duel->list[did].members_count, + duel->list[did].members_count + duel->list[did].invites_count, + duel->list[did].max_players_limit); else sprintf(output, msg_txt(371), //" -- Duels: %d/%d, Members: %d/%d --" - did, duel_count, - duel_list[did].members_count, - duel_list[did].members_count + duel_list[did].invites_count); + did, duel->count, + duel->list[did].members_count, + duel->list[did].members_count + duel->list[did].invites_count); - clif->disp_onlyself(sd, output, strlen(output)); - iMap->map_foreachpc(duel_showinfo_sub, sd, &p); + clif_disp_onlyself(sd, output, strlen(output)); + map->foreachpc(duel_showinfo_sub, sd, &p); } -int duel_create(struct map_session_data* sd, const unsigned int maxpl) -{ +int duel_create(struct map_session_data* sd, const unsigned int maxpl) { int i=1; char output[256]; - while(duel_list[i].members_count > 0 && i < MAX_DUEL) i++; + while(duel->list[i].members_count > 0 && i < MAX_DUEL) i++; if(i == MAX_DUEL) return 0; - duel_count++; + duel->count++; sd->duel_group = i; - duel_list[i].members_count++; - duel_list[i].invites_count = 0; - duel_list[i].max_players_limit = maxpl; + duel->list[i].members_count++; + duel->list[i].invites_count = 0; + duel->list[i].max_players_limit = maxpl; strcpy(output, msg_txt(372)); // " -- Duel has been created (@invite/@leave) --" - clif->disp_onlyself(sd, output, strlen(output)); + clif_disp_onlyself(sd, output, strlen(output)); clif->map_property(sd, MAPPROPERTY_FREEPVPZONE); clif->maptypeproperty2(&sd->bl,SELF); return i; } -void duel_invite(const unsigned int did, struct map_session_data* sd, struct map_session_data* target_sd) -{ +void duel_invite(const unsigned int did, struct map_session_data* sd, struct map_session_data* target_sd) { char output[256]; // " -- Player %s invites %s to duel --" @@ -109,11 +103,11 @@ void duel_invite(const unsigned int did, struct map_session_data* sd, struct map clif->disp_message(&sd->bl, output, strlen(output), DUEL_WOS); target_sd->duel_invite = did; - duel_list[did].invites_count++; + duel->list[did].invites_count++; // "Blue -- Player %s invites you to PVP duel (@accept/@reject) --" sprintf(output, msg_txt(374), sd->status.name); - clif->broadcast((struct block_list *)target_sd, output, strlen(output)+1, 0x10, SELF); + clif->broadcast((struct block_list *)target_sd, output, strlen(output)+1, BC_BLUE, SELF); } static int duel_leave_sub(struct map_session_data* sd, va_list va) @@ -124,19 +118,18 @@ static int duel_leave_sub(struct map_session_data* sd, va_list va) return 0; } -void duel_leave(const unsigned int did, struct map_session_data* sd) -{ +void duel_leave(const unsigned int did, struct map_session_data* sd) { char output[256]; // " <- Player %s has left duel --" sprintf(output, msg_txt(375), sd->status.name); clif->disp_message(&sd->bl, output, strlen(output), DUEL_WOS); - duel_list[did].members_count--; + duel->list[did].members_count--; - if(duel_list[did].members_count == 0) { - iMap->map_foreachpc(duel_leave_sub, did); - duel_count--; + if(duel->list[did].members_count == 0) { + map->foreachpc(duel_leave_sub, did); + duel->count--; } sd->duel_group = 0; @@ -145,13 +138,12 @@ void duel_leave(const unsigned int did, struct map_session_data* sd) clif->maptypeproperty2(&sd->bl,SELF); } -void duel_accept(const unsigned int did, struct map_session_data* sd) -{ +void duel_accept(const unsigned int did, struct map_session_data* sd) { char output[256]; - duel_list[did].members_count++; + duel->list[did].members_count++; sd->duel_group = sd->duel_invite; - duel_list[did].invites_count--; + duel->list[did].invites_count--; sd->duel_invite = 0; // " -> Player %s has accepted duel --" @@ -162,23 +154,46 @@ void duel_accept(const unsigned int did, struct map_session_data* sd) clif->maptypeproperty2(&sd->bl,SELF); } -void duel_reject(const unsigned int did, struct map_session_data* sd) -{ +void duel_reject(const unsigned int did, struct map_session_data* sd) { char output[256]; // " -- Player %s has rejected duel --" sprintf(output, msg_txt(377), sd->status.name); clif->disp_message(&sd->bl, output, strlen(output), DUEL_WOS); - duel_list[did].invites_count--; + duel->list[did].invites_count--; sd->duel_invite = 0; } -void do_final_duel(void) -{ +void do_final_duel(void) { } -void do_init_duel(void) -{ - memset(&duel_list[0], 0, sizeof(duel_list)); +void do_init_duel(bool minimal) { + if (minimal) + return; + + memset(&duel->list[0], 0, sizeof(duel->list)); +} + +/*===================================== +* Default Functions : duel.h +* Generated by HerculesInterfaceMaker +* created by Susu +*-------------------------------------*/ +void duel_defaults(void) { + duel = &duel_s; + /* vars */ + duel->count = 0; + /* funcs */ + //Duel functions // [LuzZza] + duel->create = duel_create; + duel->invite = duel_invite; + duel->accept = duel_accept; + duel->reject = duel_reject; + duel->leave = duel_leave; + duel->showinfo = duel_showinfo; + duel->checktime = duel_checktime; + + duel->init = do_init_duel; + duel->final = do_final_duel; } |