Sanasol Опубликовано 21 августа, 2011 Жалоба Поделиться Опубликовано 21 августа, 2011 Синтакс:<mapname> mapflag droprate <rate>Настройка:drops.conf// Enable the droprate mapflag? (Note 1) droprate_mapflag: 1Примеры:Дроп монстров убиваемых в Пронтере будет урезан в половину.т.е. Poring дропает Empty Bottle с шансом 100% (@mi). Если его вызвать в Пронтере шанс будет 50% prontera mapflag droprate 50Дроп монстров убиваемых в Геффене будет удвоен.т.е. Fabre дпроает Clover с шансом 10% (@mi). Если его вызвать в Геффене шанс будет 20% geffen mapflag droprate 200СкачатьдиффIndex: conf/battle/drops.conf===================================================================--- conf/battle/drops.conf (revision 14935)+++ conf/battle/drops.conf (working copy)@@ -146,3 +146,6 @@ // 333 = show announces for 3.33% or lower drop chance items // 10000 = show announces for all items rare_drop_announce: 0++// Enable the droprate mapflag? (Note 1)+droprate_mapflag: 1\ No newline at end of fileIndex: src/map/atcommand.c===================================================================--- src/map/atcommand.c (revision 14935)+++ src/map/atcommand.c (working copy)@@ -4433,6 +4433,8 @@ strcat(atcmd_output, "PartyLock | "); if (map[m_id].flag.guildlock) strcat(atcmd_output, "GuildLock | ");+ if (map[m_id].droprate)+ strcat(atcmd_output, "DropRate | "); clif_displaymessage(fd, atcmd_output); switch (list) {Index: src/map/battle.c===================================================================--- src/map/battle.c (revision 14935)+++ src/map/battle.c (working copy)@@ -4014,6 +4014,7 @@ { "display_party_name", &battle_config.display_party_name, 0, 0, 1, }, { "cashshop_show_points", &battle_config.cashshop_show_points, 0, 0, 1, }, { "mail_show_status", &battle_config.mail_show_status, 0, 0, 2, },+ { "droprate_mapflag", &battle_config.droprate_mapflag, 0, 0, 1, }, // BattleGround Settings { "bg_update_interval", &battle_config.bg_update_interval, 1000, 100, INT_MAX, }, { "bg_short_attack_damage_rate", &battle_config.bg_short_damage_rate, 80, 0, INT_MAX, },Index: src/map/battle.h===================================================================--- src/map/battle.h (revision 14935)+++ src/map/battle.h (working copy)@@ -487,6 +487,7 @@ int display_party_name; int cashshop_show_points; int mail_show_status;+ int droprate_mapflag; // [Xantara] // [BattleGround Settings] int bg_update_interval;Index: src/map/map.h===================================================================--- src/map/map.h (revision 14935)+++ src/map/map.h (working copy)@@ -506,6 +506,7 @@ int jexp; // map experience multiplicator int bexp; // map experience multiplicator int nocommand; //Blocks @/# commands for non-gms. [Skotlex]+ int droprate; // [Xantara] // Instance Variables int instance_id; int instance_src_map;Index: src/map/mob.c===================================================================--- src/map/mob.c (revision 14935)+++ src/map/mob.c (working copy)@@ -2227,9 +2227,13 @@ if (sd && sd->sc.data[SC_ITEMBOOST]) // now rig the drop rate to never be over 90% unless it is originally >90%. drop_rate = max(drop_rate,cap_value((int)(0.5+drop_rate*(sd->sc.data[SC_ITEMBOOST]->val1)/100.),0,9000));+ // Drops affected by the mapflag droprate [Xantara]+ if(map[m].droprate && battle_config.droprate_mapflag)+ drop_rate = (int)( (drop_rate * map[m].droprate) / 100. );+ // attempt to drop the item if (rand() % 10000 >= drop_rate)- continue;+ continue; ditem = mob_setdropitem(md->db->dropitem[i].nameid, 1);@@ -2354,6 +2358,11 @@ temp = md->db->mvpitem[i].p; if(temp <= 0 && !battle_config.drop_rate0item) temp = 1;++ // Drops affected by the mapflag droprate [Xantara]+ if(map[m].droprate && battle_config.droprate_mapflag)+ temp = (int)( (temp * map[m].droprate) / 100. );+ if(temp <= rand()%10000+1) //if ==0, then it doesn't drop continue;Index: src/map/npc.c===================================================================--- src/map/npc.c (revision 14935)+++ src/map/npc.c (working copy)@@ -3117,6 +3117,15 @@ map[m].flag.partylock=state; else if (!strcmpi(w3,"guildlock")) map[m].flag.guildlock=state;+ else if (!strcmpi(w3,"droprate")) {+ if (state) {+ if (sscanf(w4, "%d", &state) == 1)+ map[m].droprate = state;+ else+ map[m].droprate = 100;+ } else+ map[m].droprate = 100;+ } else ShowError("npc_parse_mapflag: unrecognized mapflag '%s' (file '%s', line '%d').\n", w3, filepath, strline(buffer,start-buffer));Index: src/map/script.c===================================================================--- src/map/script.c (revision 14935)+++ src/map/script.c (working copy)@@ -348,7 +348,8 @@ MF_ALLOWKS, MF_MONSTER_NOTELEPORT, MF_PVP_NOCALCRANK, //50- MF_BATTLEGROUND+ MF_BATTLEGROUND,+ MF_DROPRATE }; const char* script_op2name(int op) 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения