MarcusH

Membro
  • Total de itens

    8
  • Registro em

  • Última visita

Reputação

0 Iniciante

4 Seguidores

Sobre MarcusH

Informa??o do Perfil

  • Sexo:
    Homem
  1. NPC E MACROS

    Teoricamente voc? poderia pegar os diffs da BG do eamod e coloca-los aqui no brA, porem com essa base do emulador no Hercules acho dif?cil, pois a s?culos o Zephyrus diz que est? trabalhando no diff para o hercules e at? agora nada.
  2. Creio que ainda n?o est? funcionando pois fiz o download agora e consegui ligar sem precisar importar tais arquivos.
  3. sim a final o autor disponibilizou. a minha rev est? cheia de bugs ent?o n?o aconselho. Index: conf/battle/brathena.conf =================================================================== --- conf/battle/brathena.conf (revision 2591) +++ conf/battle/brathena.conf (working copy) @@ -138,4 +138,28 @@ official_rates: 0 // Exibir mensagem de remo??o do mapa efetuada pelo MapCache ? (Nota 2) -msg_maps_removed: 0 \ No newline at end of file +msg_maps_removed: 0 + +//----------------------------------------------------------------------- +// Sleep System [Shiraz] +//----------------------------------------------------------------------- + +// Mapas em que o sistema estar? ativo. Suporta at? 500 mapas. +// Ex: "payon", x0, y0, x1, y1 +// Coordenadas setadas como -1 ativar? o sistema em todo o mapa. +sleep_maps = ( + "prontera", -1, -1, -1, -1, + "payon", 125, 150, 102, 131 +) + +// De quantos em quantos minutos o jogador pontuar?. +sleep_minutes: 1 + +// Pontos por minuto. +sleep_points: 1 + +// Permitir pontuar com chat? (Nota 2) +sleep_in_chat: 0 + +// Permitir pontuar com com?rcio? (Nota 2) +sleep_in_vend: 0 \ No newline at end of file Index: src/common/conf.c =================================================================== --- src/common/conf.c (revision 2591) +++ src/common/conf.c (working copy) @@ -126,26 +126,45 @@ // Leitura de configura??es exclusivas do brAthena. (void) { + config_t s_configbrA, *configbrA; + const config_setting_t *arr; const char *tmpchar; - int tmpint; - config_t configbrA; + int tmpint, len, i; + configbrA = &s_configbrA; + memset(&bra_config, 0, sizeof(bra_config)); - config_init(&configbrA); + config_init(configbrA); - if(!config_read_file(&configbrA, "conf/battle/brathena.conf")) { - ShowError("read_brathena_config erro: %s:%d - %s\n", config_error_file(&configbrA), config_error_line(&configbrA), config_error_text(&configbrA)); - config_destroy(&configbrA); - } + if(!config_read_file(configbrA, "conf/battle/brathena.conf")) { + ShowError("read_brathena_config erro: %s:%d - %s\n", config_error_file(configbrA), config_error_line(configbrA), config_error_text(configbrA)); + config_destroy(configbrA); + } - if(config_lookup_int(&configbrA, "max_rename_char", &tmpint)) bra_config.max_rename_char = tmpint; - if(config_lookup_string(&configbrA, "lang_file", &tmpchar)) strncpy(bra_config.lang_file, tmpchar, sizeof(bra_config.lang_file)); - if(config_lookup_int(&configbrA, "enable_system_vip", &tmpint)) bra_config.enable_system_vip = tmpint; - if(config_lookup_int(&configbrA, "level_vip", &tmpint)) bra_config.level_vip = tmpint; - if(config_lookup_int(&configbrA, "extra_exp_vip", &tmpint)) bra_config.extra_exp_vip = tmpint; - if(config_lookup_int(&configbrA, "penalty_exp_vip", &tmpint)) bra_config.penalty_exp_vip = tmpint; - if(config_lookup_int(&configbrA, "msg_maps_removed", &tmpint)) bra_config.msg_maps_removed = tmpint; - if(config_lookup_int(&configbrA, "show_message_exp", &tmpint)) bra_config.show_message_exp = tmpint; - - config_destroy(&configbrA); + if(config_lookup_int(configbrA, "max_rename_char", &tmpint)) bra_config.max_rename_char = tmpint; + if(config_lookup_string(configbrA, "lang_file", &tmpchar)) strncpy(bra_config.lang_file, tmpchar, sizeof(bra_config.lang_file)); + if(config_lookup_int(configbrA, "enable_system_vip", &tmpint)) bra_config.enable_system_vip = tmpint; + if(config_lookup_int(configbrA, "level_vip", &tmpint)) bra_config.level_vip = tmpint; + if(config_lookup_int(configbrA, "extra_exp_vip", &tmpint)) bra_config.extra_exp_vip = tmpint; + if(config_lookup_int(configbrA, "penalty_exp_vip", &tmpint)) bra_config.penalty_exp_vip = tmpint; + if(config_lookup_int(configbrA, "msg_maps_removed", &tmpint)) bra_config.msg_maps_removed = tmpint; + if(config_lookup_int(configbrA, "show_message_exp", &tmpint)) bra_config.show_message_exp = tmpint; + + if(config_lookup_int(configbrA, "sleep_minutes", &tmpint)) bra_config.sleep_minutes = tmpint; + if(config_lookup_int(configbrA, "sleep_points", &tmpint)) bra_config.sleep_points = tmpint; + if(config_lookup_int(configbrA, "sleep_in_chat", &tmpint)) bra_config.sleep_in_chat = tmpint; + if(config_lookup_int(configbrA, "sleep_in_vend", &tmpint)) bra_config.sleep_in_vend = tmpint; + + arr = config_lookup(configbrA, "sleep_maps"); + len = config_setting_length(arr) / 5; + + for(i = 0; i < len; i++) { + strncpy(bra_config.sleep_maps[i].name, config_setting_get_string_elem(arr, i*5), sizeof((*bra_config.sleep_maps).name)); + bra_config.sleep_maps[i].x1 = config_setting_get_int_elem(arr, i*5+1); + bra_config.sleep_maps[i].y1 = config_setting_get_int_elem(arr, i*5+2); + bra_config.sleep_maps[i].x2 = config_setting_get_int_elem(arr, i*5+3); + bra_config.sleep_maps[i].y2 = config_setting_get_int_elem(arr, i*5+4); + } + + config_destroy(configbrA); } \ No newline at end of file Index: src/common/showmsg.h =================================================================== --- src/common/showmsg.h (revision 2591) +++ src/common/showmsg.h (working copy) @@ -113,8 +113,20 @@ char lang_file[128]; + // Sleep System [Shiraz] + int sleep_minutes; + int sleep_in_chat; + int sleep_in_vend; + int sleep_points; + + struct { + char name[64]; + int x1, y1, x2, y2; + } sleep_maps[500]; + } bra_config; + extern void ClearScreen(void); extern void ShowMessage(const char *, ...); extern void ShowStatus(const char *, ...); Index: src/map/clif.c =================================================================== --- src/map/clif.c (revision 2591) +++ src/map/clif.c (working copy) @@ -10313,6 +10313,7 @@ pc_setsit(sd); skill_sit(sd,1); clif_sitting(&sd->bl); + sd->sleep_timer = add_timer(gettick()+60000*bra_config.sleep_minutes,pc_sleep_timer,sd->bl.id,0); break; case 0x03: // standup if(!pc_issit(sd)) { @@ -10327,6 +10328,9 @@ pc_setstand(sd); skill_sit(sd,0); clif_standing(&sd->bl); + if(sd->sleep_timer != INVALID_TIMER) + delete_timer(sd->sleep_timer, pc_sleep_timer); + sd->sleep_timer = INVALID_TIMER; break; } } Index: src/map/map.c =================================================================== --- src/map/map.c (revision 2591) +++ src/map/map.c (working copy) @@ -2435,6 +2435,8 @@ return (cell.maelstrom); case CELL_CHKICEWALL: return (cell.icewall); + case CELL_CHKSLEEP: + return (cell.sleep); // special checks case CELL_CHKPASS: @@ -2496,6 +2498,7 @@ case CELL_NOCHAT: map[m].cell[j].nochat = flag; break; case CELL_MAELSTROM: map[m].cell[j].maelstrom = flag; break; case CELL_ICEWALL: map[m].cell[j].icewall = flag; break; + case CELL_SLEEP: map[m].cell[j].sleep = flag; break; default: ShowWarning("map_setcell: invalid cell type '%d'\n", (int)cell); break; @@ -5395,6 +5398,29 @@ return true; } + +void do_init_sleepcell(void) +{ + int16 m, x1, y1, x2, y2; + int i, x, y; + + for(i = 0; i < ARRAYLENGTH(bra_config.sleep_maps); i++) { + if(!strlen(bra_config.sleep_maps[i].name) || (m = map_mapname2mapid(bra_config.sleep_maps[i].name)) == -1) + continue; + x1 = bra_config.sleep_maps[i].x1; + y1 = bra_config.sleep_maps[i].y1; + x2 = bra_config.sleep_maps[i].x2; + y2 = bra_config.sleep_maps[i].y2; + + if(x1 > x2) swap(x1,x2); + if(y1 > y2) swap(y1,y2); + + for(y = y1; y <= y2; ++y) + for(x = x1; x <= x2; ++x) + map[m].setcell(m, x, y, CELL_SLEEP, 1); + } +} + int do_init(int argc, char *argv[]) { int i; @@ -5583,6 +5609,8 @@ do_init_vending(); npc_event_do_oninit(); // Init npcs (OnInit) + + do_init_sleepcell(); if(console) { //##TODO invoke a CONSOLE_START plugin event Index: src/map/map.h =================================================================== --- src/map/map.h (revision 2591) +++ src/map/map.h (working copy) @@ -457,6 +457,8 @@ CELL_NOCHAT, CELL_MAELSTROM, CELL_ICEWALL, + + CELL_SLEEP, } cell_t; @@ -481,6 +483,8 @@ CELL_CHKNOCHAT, CELL_CHKMAELSTROM, CELL_CHKICEWALL, + + CELL_CHKSLEEP, } cell_chk; @@ -500,7 +504,8 @@ novending : 1, nochat : 1, maelstrom : 1, - icewall : 1; + icewall : 1, + sleep : 1; #ifdef CELL_NOSTACK unsigned char cell_bl; //Holds amount of bls in this cell. Index: src/map/pc.c =================================================================== --- src/map/pc.c (revision 2591) +++ src/map/pc.c (working copy) @@ -1049,6 +1049,7 @@ sd->fontcolor_tid = INVALID_TIMER; sd->vip_timer = INVALID_TIMER; sd->expiration_tid = INVALID_TIMER; + sd->sleep_timer = INVALID_TIMER; /** * For the Secure NPC Timeout option (check config/Secure.h) [RR] **/ @@ -5025,6 +5026,11 @@ sd->md->bl.y = sd->md->ud.to_y = y; sd->md->ud.dir = sd->ud.dir; } + + if(sd && sd->sleep_timer != INVALID_TIMER) { + delete_timer(sd->sleep_timer, pc_sleep_timer); + sd->sleep_timer = INVALID_TIMER; + } return 0; } @@ -9272,6 +9278,63 @@ } /*========================================== + * Sleep System [Shiraz] + *------------------------------------------*/ + +int pc_sleep_timer_mapxy(struct map_session_data *sd) +{ + int i, ret = 0; + int16 m; + + for(i = 0; i < ARRAYLENGTH(bra_config.sleep_maps); i++) { + if(!strlen(bra_config.sleep_maps[i].name)) + continue; + if(strcmp(map[sd->bl.m].name, bra_config.sleep_maps[i].name) || (m = map_mapname2mapid(bra_config.sleep_maps[i].name)) == -1) + continue; + if((bra_config.sleep_maps[i].x1 == -1 + && bra_config.sleep_maps[i].x2 == -1 + && bra_config.sleep_maps[i].y1 == -1 + && bra_config.sleep_maps[i].y2 == -1) + || map_getcell(m, sd->bl.x, sd->bl.y, CELL_CHKSLEEP)) { + ret = 1; + break; + } + } + + return ret; +} + +int pc_sleep_timer_sub(struct map_session_data *sd) +{ + if(!pc_sleep_timer_mapxy(sd) + || sd->state.vending && !bra_config.sleep_in_vend + || sd->state.buyingstore && !bra_config.sleep_in_vend + || sd->chatID && !bra_config.sleep_in_chat + || sd->sleep_timer == INVALID_TIMER + || pc_isdead(sd)) + return 1; + + return 0; +} + +int pc_sleep_timer(int tid, int64 tick, int id, intptr_t data) +{ + struct map_session_data *sd; + char buf[128]; + + if((sd = (struct map_session_data *)map_id2sd(id)) == NULL || sd->bl.type != BL_PC || pc_sleep_timer_sub(sd)) + return 1; + + pc_setaccountreg(sd, "#sleep_points", pc_readaccountreg(sd, "#sleep_points")+bra_config.sleep_points); + sd->sleep_timer = add_timer(gettick()+60000*bra_config.sleep_minutes,pc_sleep_timer,sd->bl.id,0); + + snprintf(buf, sizeof(buf), "Voc? recebeu %d Ponto(s) de Sono.", bra_config.sleep_points); + clif_specialeffect(&sd->bl, 579, 0); + clif_displaymessage(sd->fd, buf); + return 0; +} + +/*========================================== * Checking if sd is married * Return: * partner_id = yes Index: src/map/pc.h =================================================================== --- src/map/pc.h (revision 2591) +++ src/map/pc.h (working copy) @@ -570,6 +570,7 @@ int delunit_prevline; int vip_timer; + int sleep_timer; }; struct eri *pc_sc_display_ers; @@ -1007,6 +1008,8 @@ int add_time_vip(struct map_session_data *sd, int type[4]); void show_time_vip(struct map_session_data *sd); +int pc_sleep_timer(int tid, int64 tick, int id, intptr_t data); // Sleep System [Shiraz] + #if defined(RENEWAL_DROP) || defined(RENEWAL_EXP) int pc_level_penalty_mod(int diff, unsigned char race, unsigned short mode, int type); #endif
  4. Eu tenho esse patch porem ele n?o est? funcional com as versoes atuais do brathena. eu j? pedi para atualizarem porem at? agora nada.
  5. Ser? que o autor ou algu?m que conhe?a de DEV pode atualizar o patch para as vers?es atuais do emualdor ? J? tenho implementado no meu servidor porem nao queria atualizar o emulador e trocar tirar tal patch
  6. DATABASE

    j? dei uma pesquisada e n?o encontrei solu??o. nesse script aqui abaixo ele tira o cast tanto da azura quando de zen. gostaria que tirasse apenas da azura bonus2 bAddRace,RC_DemiHuman,95; bonus2 bIgnoreDefRate,RC_DemiHuman,20; bonus bUnbreakableWeapon,0; if(getrefine()>5) { bonus2 bAddRace,RC_DemiHuman,pow(((getrefine()>14)?14:getrefine())-4,2); bonus2 bIgnoreDefRate,RC_DemiHuman,5; } if(getrefine()>8) { bonus2 bVariableCastrate,"MO_EXTREMITYFIST",-100; bonus4 bautospellonskill,"MO_EXPLOSIONSPIRITS","CH_SOULCOLLECT",1,1000; bonus bFixedCastrate,-100; }
  7. J? ? um come?o, agrade?o o apoio, qualquer coisa volto aqui pra encher mais o saco kkkk'
  8. o fod# ? transferir mais de 500 accs 100 chars e sabe-se l? quantos itens.
  9. Eu j? tenho um servidor feito com uma svn do brA que n?o me lembro qual, mas quando eu tento usar as contas desse servidor no novo emulador n?o carrega os chars, a unica coisa que carrega s?o as accs mas elas est?o sem nada limpas. Como fazer para esse novo emulador pegar as antigas contas com os chars?
  10. CONFIGURA??O

    Cara quanto a woe esse emulador ? todo doido, comigo tamb?m estava igual, pra vc ter ideia eu percebi que poderia ser erro no mapflag eu retirei todos os mapflags para ver e consegui ficar dentro do castelo, e depois fui colocando de um por um pra ver qual estava acontecendo isso e advinh, depois que coloquei todos continuei conseguindo teleportar pra l?, e o pior ? que esse n?o ? o unico erro, quando vc liga a woe o emperium n?o aparece. outra coisa ? que parece que nao liga o pvp quando come?a a guerra.. enfim..
  11. NPC E MACROS

    Boa noite, a torre sem fim t? com um problema, quando chega ao andar 45 mesmo ap?s matar todos os mobs o portal n?o aparece. Grato desde j? pela ajuda que irei ter.
  12. CONFIGURA??O

    ningu?m?
  13. CONFIGURA??O

    Bom galera estou quebrando muito a cabe?a com isso mas vamo l?, 1? o castelo n?o foi conquistado ainda, e n?o tem nenhum monstro dentro do castelo, era para estar cheio de monstros/mvp se n?o me engano. 2? Quando uma pessoa quebra o emperium, que outra pessoa de outro cl? tenta quebrar, ele nem se quer consegue atacar o emperium.
  14. ERRO

    n?o ? baby n?o, qualquer castelo est? asim