viewing paste Unknown #6568 | Diff

Posted on the
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
diff --git a/conf/messages.conf b/conf/messages.conf
index 21e24e9..465a1f1 100644
--- a/conf/messages.conf
+++ b/conf/messages.conf
@@ -1507,5 +1507,9 @@
 
 1476: You are already mounting something else
 
+// No Cash Shop
+1477: NoCashShop
+1478: You can't open a Cash Shop in this map
+
 //Custom translations
 import: conf/import/msg_conf.txt
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 950961b..4c6f61e 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -3913,6 +3913,8 @@ static void atcommand_raise_sub(struct map_session_data* sd) {
                strcat(atcmd_output, msg_txt(1083)); // NoTrade |
        if (map[m_id].flag.novending)
                strcat(atcmd_output, msg_txt(1084)); // NoVending |
+       if (map[m_id].flag.nocashshop)
+               strcat(atcmd_output, msg_txt(1477)); // NoCashShop |
        if (map[m_id].flag.nodrop)
                strcat(atcmd_output, msg_txt(1085)); // NoDrop |
        if (map[m_id].flag.noskill)
@@ -7573,9 +7575,9 @@ static int atcommand_mutearea_sub(struct block_list *bl,va_list ap)
                checkflag(fog);                                 checkflag(fireworks);                   checkflag(sakura);              checkflag(leaves);
                checkflag(nobaseexp);
                checkflag(nojobexp);                    checkflag(nomobloot);                   checkflag(nomvploot);   checkflag(nightenabled);
-               checkflag(nodrop);                              checkflag(novending);   checkflag(loadevent);
+               checkflag(nodrop);                              checkflag(novending);                   checkflag(loadevent);
                checkflag(nochat);                              checkflag(partylock);                   checkflag(guildlock);   checkflag(src4instance);
-               checkflag(notomb);
+               checkflag(notomb);                              checkflag(nocashshop);
                clif->message(sd->fd," ");
                clif->message(sd->fd,msg_txt(1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On)
                clif->message(sd->fd,msg_txt(1313)); // Type "@mapflag available" to list the available mapflags.
@@ -7612,7 +7614,7 @@ static int atcommand_mutearea_sub(struct block_list *bl,va_list ap)
        setflag(nojobexp);                      setflag(nomobloot);                     setflag(nomvploot);                     setflag(nightenabled);
        setflag(nodrop);                        setflag(novending);                     setflag(loadevent);
        setflag(nochat);                        setflag(partylock);                     setflag(guildlock);                     setflag(src4instance);
-       setflag(notomb);
+       setflag(notomb);                        setflag(nocashshop);
       
        clif->message(sd->fd,msg_txt(1314)); // Invalid flag name or flag.
        clif->message(sd->fd,msg_txt(1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On)
@@ -7624,7 +7626,7 @@ static int atcommand_mutearea_sub(struct block_list *bl,va_list ap)
        clif->message(sd->fd,"nozenypenalty, notrade, noskill, nowarp, nowarpto, noicewall, snow, clouds, clouds2,");
        clif->message(sd->fd,"fog, fireworks, sakura, leaves, nobaseexp, nojobexp, nomobloot,");
        clif->message(sd->fd,"nomvploot, nightenabled, nodrop, novending, loadevent, nochat, partylock,");
-       clif->message(sd->fd,"guildlock, src4instance, notomb");
+       clif->message(sd->fd,"guildlock, src4instance, notomb, nocashshop");
       
 #undef checkflag
 #undef setflag
diff --git a/src/map/map.h b/src/map/map.h
index ec59215..cb58927 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -606,6 +606,7 @@ struct map_data {
                unsigned chsysnolocalaj : 1;
                unsigned noknockback : 1;
                unsigned notomb : 1;
+               unsigned nocashshop : 1;
        } flag;
        struct point save;
        struct npc_data *npc[MAX_NPC_PER_MAP];
diff --git a/src/map/npc.c b/src/map/npc.c
index 673c4f7..1c645c8 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -3357,6 +3357,8 @@ const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, const char
                map[m].flag.reset=state;
        else if (!strcmpi(w3,"notomb"))
                map[m].flag.notomb=state;
+       else if (!strcmpi(w3,"nocashshop"))
+               map[m].flag.nocashshop=state;
        else if (!strcmpi(w3,"adjust_unit_duration")) {
                int skill_id, k;
                char skill_name[MAP_ZONE_MAPFLAG_LENGTH], modifier[MAP_ZONE_MAPFLAG_LENGTH];
diff --git a/src/map/pc.c b/src/map/pc.c
index 84cfe7e..62ec82a 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -4837,6 +4837,11 @@ int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y
                        clif->message (sd->fd, msg_txt(276)); // "You can't open a shop on this map"
                        vending->close(sd);
                }
+               // Make sure opening a Cash Shop is allowed here
+               if (sd->state.cashshop && map[m].flag.nocashshop) {
+                       clif->message (sd->fd, msg_txt(1478)); // "You can't open a Cash Shop in this map"
+                       cashshop->close(sd);
+               }
               
                if( hChSys.local && map[sd->bl.m].channel && idb_exists(map[sd->bl.m].channel->users, sd->status.char_id) ) {
                        clif->chsys_left(map[sd->bl.m].channel,sd);
 
Viewed 332 times, submitted by Mysterious.