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 838 times, submitted by Mysterious.