Jump to content
  • 0

(Hercules SVN) Custom Maintown Go 0 Adden


Sasuke Uchiha

Question


  • Group:  Members
  • Topic Count:  9
  • Topics Per Day:  0.00
  • Content Count:  114
  • Reputation:   8
  • Joined:  09/16/14
  • Last Seen:  

Hercules wiki looks different than at atcommand.c

 

can anyone me help?

 

thanks!

/*==========================================
 * @go [city_number or city_name] - Updated by Harbin
 *------------------------------------------*/
ACMD(go) {
    int town = INT_MAX; // Initialized to INT_MAX instead of -1 to avoid conflicts with those who map [-3:-1] to @memo locations.
    char map_name[MAP_NAME_LENGTH];

    const struct {
        char map[MAP_NAME_LENGTH];
        int x, y;
        int min_match; ///< Minimum string length to match
    } data[] = {
        { MAP_PRONTERA,    156, 191, 3 }, //  0 = Prontera
        { MAP_MORROC,      156,  93, 4 }, //  1 = Morroc
        { MAP_GEFFEN,      119,  59, 3 }, //  2 = Geffen
        { MAP_PAYON,       162, 233, 3 }, //  3 = Payon
        { MAP_ALBERTA,     192, 147, 3 }, //  4 = Alberta
#ifdef RENEWAL
        { MAP_IZLUDE,      128, 146, 3 }, //  5 = Izlude (Renewal)
#else
        { MAP_IZLUDE,      128, 114, 3 }, //  5 = Izlude
#endif
        { MAP_ALDEBARAN,   140, 131, 3 }, //  6 = Aldebaran
        { MAP_LUTIE,       147, 134, 3 }, //  7 = Lutie
        { MAP_COMODO,      209, 143, 3 }, //  8 = Comodo
        { MAP_YUNO,        157,  51, 3 }, //  9 = Juno
        { MAP_AMATSU,      198,  84, 3 }, // 10 = Amatsu
        { MAP_GONRYUN,     160, 120, 3 }, // 11 = Kunlun
        { MAP_UMBALA,       89, 157, 3 }, // 12 = Umbala
        { MAP_NIFLHEIM,     21, 153, 3 }, // 13 = Niflheim
        { MAP_LOUYANG,     217,  40, 3 }, // 14 = Luoyang
        { MAP_NOVICE,       53, 111, 3 }, // 15 = Training Grounds
        { MAP_JAIL,         23,  61, 3 }, // 16 = Prison
        { MAP_JAWAII,      249, 127, 3 }, // 17 = Jawaii
        { MAP_AYOTHAYA,    151, 117, 3 }, // 18 = Ayothaya
        { MAP_EINBROCH,     64, 200, 5 }, // 19 = Einbroch
        { MAP_LIGHTHALZEN, 158,  92, 3 }, // 20 = Lighthalzen
        { MAP_EINBECH,      70,  95, 5 }, // 21 = Einbech
        { MAP_HUGEL,        96, 145, 3 }, // 22 = Hugel
        { MAP_RACHEL,      130, 110, 3 }, // 23 = Rachel
        { MAP_VEINS,       216, 123, 3 }, // 24 = Veins
        { MAP_MOSCOVIA,    223, 184, 3 }, // 25 = Moscovia
        { MAP_MIDCAMP,     180, 240, 3 }, // 26 = Midgard Camp
        { MAP_MANUK,       282, 138, 3 }, // 27 = Manuk
        { MAP_SPLENDIDE,   197, 176, 3 }, // 28 = Splendide
        { MAP_BRASILIS,    182, 239, 3 }, // 29 = Brasilis
        { MAP_DICASTES,    198, 187, 3 }, // 30 = El Dicastes
        { MAP_MORA,         44, 151, 4 }, // 31 = Mora
        { MAP_DEWATA,      200, 180, 3 }, // 32 = Dewata
        { MAP_MALANGDO,    140, 114, 5 }, // 33 = Malangdo Island
        { MAP_MALAYA,      242, 211, 5 }, // 34 = Malaya Port
        { MAP_ECLAGE,      110,  39, 3 }, // 35 = Eclage
    };

    memset(map_name, '\0', sizeof(map_name));
    memset(atcmd_output, '\0', sizeof(atcmd_output));

    if (!message || !*message || sscanf(message, "%11s", map_name) < 1) {
        // no value matched so send the list of locations
        const char* text;

        // attempt to find the text help string
        text = atcommand_help_string( info );

        clif->message(fd, msg_fd(fd,38)); // Invalid location number, or name.

        if( text ) {// send the text to the client
            clif->messageln( fd, text );
        }

        return false;
    }

    // Numeric entry
    if (ISDIGIT(*message) || (message[0] == '-' && ISDIGIT(message[1]))) {
        town = atoi(message);
    }

    if (town < 0 || town >= ARRAYLENGTH(data)) {
        int i;
        map_name[MAP_NAME_LENGTH-1] = '\0';

        // Match maps on the list
        for (i = 0; i < ARRAYLENGTH(data); i++) {
            if (strncmpi(map_name, data[i].map, data[i].min_match) == 0) {
                town = i;
                break;
            }
        }
    }

    if (town < 0 || town >= ARRAYLENGTH(data)) {
        // Alternate spellings
        if (strncmpi(map_name, "morroc", 4) == 0) { // Correct town name for 'morocc'
            town = 1;
        } else if (strncmpi(map_name, "lutie", 3) == 0) { // Correct town name for 'xmas'
            town = 7;
        } else if (strncmpi(map_name, "juno", 3) == 0) { // Correct town name for 'yuno'
            town = 9;
        } else if (strncmpi(map_name, "kunlun", 3) == 0) { // Original town name for 'gonryun'
            town = 11;
        } else if (strncmpi(map_name, "luoyang", 3) == 0) { // Original town name for 'louyang'
            town = 14;
        } else if (strncmpi(map_name, "startpoint", 3) == 0 // Easy to remember alternatives to 'new_1-1'
                || strncmpi(map_name, "beginning", 3) == 0) {
            town = 15;
        } else if (strncmpi(map_name, "prison", 3) == 0 // Easy to remember alternatives to 'sec_pri'
                || strncmpi(map_name, "jail", 3) == 0) {
            town = 16;
        } else if (strncmpi(map_name, "rael", 3) == 0) { // Original town name for 'rachel'
            town = 23;
        }
    }

    if (town >= 0 && town < ARRAYLENGTH(data)) {
        int16 m = map->mapname2mapid(data[town].map);
        if (m >= 0 && map->list[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
            clif->message(fd, msg_fd(fd,247));
            return false;
        }
        if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
            clif->message(fd, msg_fd(fd,248));
            return false;
        }
        if (pc->setpos(sd, mapindex->name2id(data[town].map), data[town].x, data[town].y, CLR_TELEPORT) == 0) {
            clif->message(fd, msg_fd(fd,0)); // Warped.
        } else {
            clif->message(fd, msg_fd(fd,1)); // Map not found.
            return false;
        }
    } else {
        clif->message(fd, msg_fd(fd,38)); // Invalid location number or name.
        return false;
    }

    return true;
Edited by Sasuke Uchiha
Link to comment
Share on other sites

2 answers to this question

Recommended Posts


  • Group:  Members
  • Topic Count:  6
  • Topics Per Day:  0.00
  • Content Count:  69
  • Reputation:   3
  • Joined:  09/04/14
  • Last Seen:  

If you change this you'll need to add your custom map on the map_index.h too.

 

Replace:

        { MAP_PRONTERA,    156, 191, 3 }, //  0 = Prontera

with this:

        { MAP_MAINTOWN,    181, 76, 3 }, //  0 = Maintown

And after:

        { MAP_ECLAGE,      110,  39, 3 }, // 35 = Eclage

add this:

        { MAP_PRONTERA,    156, 191, 3 }, //  36 = Prontera

The lines:

        if (strncmpi(map_name, "morroc", 4) == 0) { // Correct town name for 'morocc'
            town = 1;
        }

are only need if your map have more than one name.

Example: @go maintown, @go main, @go home and @go 0. But you'll doesn't need this.

 

Best regards,

Garkor

Edited by Garkor
  • Upvote 1
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  9
  • Topics Per Day:  0.00
  • Content Count:  114
  • Reputation:   8
  • Joined:  09/16/14
  • Last Seen:  

So simple? xD thanks for it^^

 

Best Regards,

Sasuke

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...