So, I know the command @Go is for Cities only, right? But I would like to give a better experience to my future players by making the moc_para01 map (eden group map for quests and etc) accessible via the @go command.
I was looking in the seach topics for any tutorial/guidance/old topics about creating custom maps, @go, turn a fild into a city, but i couldn't find my answer. Since i'm not creating a new map, just want to use the existing one as a city or in better words turn it as a destination available for @go command. Is it possible?
I dont know if any of the steps i done was necessary, but I am trying my best to learn more, here is what i done:
In the src\map\Atcommand.cpp file, I have inserted a line for the map and i did choose the number 745 for index after looking the db\map_index.txt and calculating which would be the map index.
/*==========================================
* @go [city_number or city_name] - Updated by Harbin
*------------------------------------------*/
ACMD_FUNC(go){int i;int town;char map_name[MAP_NAME_LENGTH];conststruct{charmap[MAP_NAME_LENGTH];int x, y;} data[]={{ MAP_PRONTERA,156,191},// 0=Prontera{ MAP_MORROC,156,93},// 1=Morroc{ MAP_GEFFEN,119,59},// 2=Geffen{ MAP_PAYON,162,233},// 3=Payon{ MAP_ALBERTA,192,147},// 4=Alberta#ifdef RENEWAL
{ MAP_IZLUDE,128,146},// 5=Izlude (Renewal)#else{ MAP_IZLUDE,128,114},// 5=Izlude#endif{ MAP_ALDEBARAN,140,131},// 6=Al de Baran{ MAP_LUTIE,147,134},// 7=Lutie{ MAP_COMODO,209,143},// 8=Comodo{ MAP_YUNO,157,51},// 9=Yuno{ MAP_AMATSU,198,84},// 10=Amatsu{ MAP_GONRYUN,160,120},// 11=Gonryun{ MAP_UMBALA,89,157},// 12=Umbala{ MAP_NIFLHEIM,21,153},// 13=Niflheim{ MAP_LOUYANG,217,40},// 14=Louyang#ifdef RENEWAL
{ MAP_NOVICE,18,26},// 15=Training Grounds (Renewal)#else{ MAP_NOVICE,53,111},// 15=Training Grounds#endif{ MAP_JAIL,23,61},// 16=Prison{ MAP_JAWAII,249,127},// 17=Jawaii{ MAP_AYOTHAYA,151,117},// 18=Ayothaya{ MAP_EINBROCH,64,200},// 19=Einbroch{ MAP_LIGHTHALZEN,158,92},// 20=Lighthalzen{ MAP_EINBECH,70,95},// 21=Einbech{ MAP_HUGEL,96,145},// 22=Hugel{ MAP_RACHEL,130,110},// 23=Rachel{ MAP_VEINS,216,123},// 24=Veins{ MAP_MOSCOVIA,223,184},// 25=Moscovia{ MAP_MIDCAMP,180,240},// 26=Midgard Camp{ MAP_MANUK,282,138},// 27=Manuk{ MAP_SPLENDIDE,201,147},// 28=Splendide{ MAP_BRASILIS,182,239},// 29=Brasilis{ MAP_DICASTES,198,187},// 30=El Dicastes{ MAP_MORA,44,151},// 31=Mora{ MAP_DEWATA,200,180},// 32=Dewata{ MAP_MALANGDO,140,114},// 33=Malangdo Island{ MAP_MALAYA,242,211},// 34=Malaya Port{ MAP_ECLAGE,110,39},// 35=Eclage{ MAP_LASAGNA,193,182},// 36=Lasagna{ MAP_MOC_PARA01,31,14},// 745=Eden};
nullpo_retr(-1, sd);if( map_getmapflag(sd->bl.m, MF_NOGO)&&!pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)){
clif_displaymessage(sd->fd,msg_txt(sd,995));// You cannot use @go on this map.return0;}
memset(map_name,'\0',sizeof(map_name));
memset(atcmd_output,'\0',sizeof(atcmd_output));// get the number
town = atoi(message);if(!message ||!*message || sscanf(message,"%11s", map_name)<1|| town <0|| town >= ARRAYLENGTH(data)){// no value matched so send the list of locationsconstchar* text;// attempt to find the text help string
text = atcommand_help_string( command );
clif_displaymessage(fd, msg_txt(sd,38));// Invalid location number, or name.if( text ){// send the text to the client
clif_displaymessage( fd, text );}return-1;}// get possible name of the city
map_name[MAP_NAME_LENGTH-1]='\0';for(i =0; map_name[i]; i++)
map_name[i]= TOLOWER(map_name[i]);// try to identify the map nameif(strncmp(map_name,"prontera",3)==0){
town =0;}elseif(strncmp(map_name,"morocc",4)==0||
strncmp(map_name,"morroc",4)==0){
town =1;}elseif(strncmp(map_name,"geffen",3)==0){
town =2;}elseif(strncmp(map_name,"payon",3)==0){
town =3;}elseif(strncmp(map_name,"alberta",3)==0){
town =4;}elseif(strncmp(map_name,"izlude",3)==0){
town =5;}elseif(strncmp(map_name,"aldebaran",3)==0){
town =6;}elseif(strncmp(map_name,"lutie",3)==0||
strcmp(map_name,"christmas")==0||
strncmp(map_name,"xmas",3)==0||
strncmp(map_name,"x-mas",3)==0){
town =7;}elseif(strncmp(map_name,"comodo",3)==0){
town =8;}elseif(strncmp(map_name,"juno",3)==0||
strncmp(map_name,"yuno",3)==0){
town =9;}elseif(strncmp(map_name,"amatsu",3)==0){
town =10;}elseif(strncmp(map_name,"kunlun",3)==0||
strncmp(map_name,"gonryun",3)==0){
town =11;}elseif(strncmp(map_name,"umbala",3)==0){
town =12;}elseif(strncmp(map_name,"niflheim",3)==0){
town =13;}elseif(strncmp(map_name,"louyang",3)==0){
town =14;}elseif(strncmp(map_name,"new_1-1",3)==0||
strncmp(map_name,"startpoint",3)==0||
strncmp(map_name,"beginning",3)==0){
town =15;}elseif(strncmp(map_name,"sec_pri",3)==0||
strncmp(map_name,"prison",3)==0||
strncmp(map_name,"jail",3)==0){
town =16;}elseif(strncmp(map_name,"jawaii",3)==0){
town =17;}elseif(strncmp(map_name,"ayothaya",3)==0){
town =18;}elseif(strncmp(map_name,"einbroch",5)==0){
town =19;}elseif(strncmp(map_name,"lighthalzen",3)==0){
town =20;}elseif(strncmp(map_name,"einbech",5)==0){
town =21;}elseif(strncmp(map_name,"hugel",3)==0){
town =22;}elseif(strncmp(map_name,"rachel",3)==0){
town =23;}elseif(strncmp(map_name,"veins",3)==0){
town =24;}elseif(strncmp(map_name,"moscovia",3)==0){
town =25;}elseif(strncmp(map_name,"mid_camp",3)==0){
town =26;}elseif(strncmp(map_name,"manuk",3)==0){
town =27;}elseif(strncmp(map_name,"splendide",3)==0){
town =28;}elseif(strncmp(map_name,"brasilis",3)==0){
town =29;}elseif(strncmp(map_name,"dicastes01",3)==0){
town =30;}elseif(strcmp(map_name,"mora")==0){
town =31;}elseif(strncmp(map_name,"dewata",3)==0){
town =32;}elseif(strncmp(map_name,"malangdo",5)==0){
town =33;}elseif(strncmp(map_name,"malaya",5)==0){
town =34;}elseif(strncmp(map_name,"eclage",3)==0){
town =35;}elseif(strncmp(map_name,"lasagna",2)==0){
town =36;}elseif(strncmp(map_name,"eden",2)==0){
town =745;}if(town >=0&& town < ARRAYLENGTH(data)){int16 m = map_mapname2mapid(data[town].map);if(m >=0&& map_getmapflag(m, MF_NOWARPTO)&&!pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)){
clif_displaymessage(fd, msg_txt(sd,247));// You are not authorized to warp to this map.return-1;}if(sd->bl.m >=0&& map_getmapflag(sd->bl.m, MF_NOWARP)&&!pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)){
clif_displaymessage(fd, msg_txt(sd,248));// You are not authorized to warp from your current map.return-1;}if(pc_setpos(sd, mapindex_name2id(data[town].map), data[town].x, data[town].y, CLR_TELEPORT)== SETPOS_OK){
clif_displaymessage(fd, msg_txt(sd,0));// Warped.}else{
clif_displaymessage(fd, msg_txt(sd,1));// Map not found.return-1;}}else{// if you arrive here, you have an error in town variable when reading of names
clif_displaymessage(fd, msg_txt(sd,38));// Invalid location number or name.return-1;}return0;}
In src\common\mapindex.hpp file, I have inserted a line for the map too.
// Copyright (c) rAthena Dev Teams - Licensed under GNU GPL// For more information, see LICENCE in the main folder#ifndef MAPINDEX_HPP
#define MAPINDEX_HPP
#include"../common/mmo.hpp"#define MAX_MAPINDEX 2000//Some definitions for the mayor city maps.#define MAP_PRONTERA "prontera"#define MAP_GEFFEN "geffen"#define MAP_MORROC "morocc"#define MAP_ALBERTA "alberta"#define MAP_PAYON "payon"#define MAP_IZLUDE "izlude"#define MAP_ALDEBARAN "aldebaran"#define MAP_LUTIE "xmas"#define MAP_COMODO "comodo"#define MAP_YUNO "yuno"#define MAP_AMATSU "amatsu"#define MAP_GONRYUN "gonryun"#define MAP_UMBALA "umbala"#define MAP_NIFLHEIM "niflheim"#define MAP_LOUYANG "louyang"#define MAP_JAWAII "jawaii"#define MAP_AYOTHAYA "ayothaya"#define MAP_EINBROCH "einbroch"#define MAP_LIGHTHALZEN "lighthalzen"#define MAP_EINBECH "einbech"#define MAP_HUGEL "hugel"#define MAP_RACHEL "rachel"#define MAP_VEINS "veins"#define MAP_JAIL "sec_pri"#ifdef RENEWAL
#define MAP_NOVICE "iz_int"#else#define MAP_NOVICE "new_1-1"#endif#define MAP_MOSCOVIA "moscovia"#define MAP_MIDCAMP "mid_camp"#define MAP_MANUK "manuk"#define MAP_SPLENDIDE "splendide"#define MAP_BRASILIS "brasilis"#define MAP_DICASTES "dicastes01"#define MAP_MORA "mora"#define MAP_DEWATA "dewata"#define MAP_MALANGDO "malangdo"#define MAP_MALAYA "malaya"#define MAP_ECLAGE "eclage"#define MAP_ECLAGE_IN "ecl_in01"#define MAP_LASAGNA "lasagna"#define MAP_MOC_PARA01 "eden"constchar* mapindex_getmapname(constchar* string,char* output);constchar* mapindex_getmapname_ext(constchar* string,char* output);unsignedshort mapindex_name2idx(constchar* name,constchar*func);#define mapindex_name2id(mapname) mapindex_name2idx((mapname), __FUNCTION__)constchar* mapindex_idx2name(unsignedshort id,constchar*func);#define mapindex_id2name(mapindex) mapindex_idx2name((mapindex), __FUNCTION__)int mapindex_addmap(int index,constchar* name);int mapindex_removemap(int index);void mapindex_check_mapdefault(constchar*mapname);void mapindex_init(void);void mapindex_final(void);#endif/* MAPINDEX_HPP */
In npc\re\mapflag\town.txt file I have insert a line for the map
//===== rAthena Script =======================================
//= Mapflag: Town.
//===== By: ==================================================
//= Epoque
//===== Current Version: =====================================
//= 1.1
//===== Compatible With: =====================================
//= rAthena Project
//===== Description: =========================================
//= Designates a map as a town, granting mailbox access.
//===== Additional Comments: =================================
//= 1.0 Renewal split. [Euphy]
//= 1.1 Added Izlude duplicates. [Euphy]
//============================================================
brasilis mapflag town
dewata mapflag town
dicastes01 mapflag town
eclage mapflag town
izlude_a mapflag town
izlude_b mapflag town
izlude_c mapflag town
izlude_d mapflag town
malangdo mapflag town
malaya mapflag town
mora mapflag town
lasagna mapflag town
moc_para01 mapflag town
When I type @go, it doesnt shows Eden as a destination
When I try to teleport there with @go 754 the server returns: "Go failed" with the destination list
When I try @go Eden it returns Go Failed, Map not found...
Thank you all in advance for anyhelp, I still looking for an answer by myself too.
Greetings!
Edited by drakulya How can i mark this as solved? Sorry? >.<
Question
drakulya
Hello everybody!
I hope you're doing very well!
So, I know the command @Go is for Cities only, right? But I would like to give a better experience to my future players by making the moc_para01 map (eden group map for quests and etc) accessible via the @go command.
I was looking in the seach topics for any tutorial/guidance/old topics about creating custom maps, @go, turn a fild into a city, but i couldn't find my answer. Since i'm not creating a new map, just want to use the existing one as a city or in better words turn it as a destination available for @go command. Is it possible?
I dont know if any of the steps i done was necessary, but I am trying my best to learn more, here is what i done:
In the src\map\Atcommand.cpp file, I have inserted a line for the map and i did choose the number 745 for index after looking the db\map_index.txt and calculating which would be the map index.
In src\common\mapindex.hpp file, I have inserted a line for the map too.
In npc\re\mapflag\town.txt file I have insert a line for the map
When I type @go, it doesnt shows Eden as a destination
When I try to teleport there with @go 754 the server returns: "Go failed" with the destination list
When I try @go Eden it returns Go Failed, Map not found...
Thank you all in advance for anyhelp, I still looking for an answer by myself too.
Greetings!
Edited by drakulyaHow can i mark this as solved? Sorry? >.<
Link to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.