Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 01/21/12 in all areas

  1. As of r15503 (20 Jan 2011), TXT save engine (aka "rAthena TXT") has been removed from rAthena. The only supported save engine from now on is SQL (aka "rAthena SQL"). For quick and easy setup of local rAthena test environment, there is rAsql available in SVN repository. For details visit Using rAsql article on rA Wiki. Please do not confuse TXT save engine (accounts, characters, inventory etc) with TXT database folder. Support for *.txt based database files (mob_db, item_db, skill_db etc) is still there.
    2 points
  2. Hi guys i made this simple modification to stop corruption in my server... This little snippet would allow you to stop GMs from abusing @monster command.. it will announce the Monster name, Amount and also the location with the GM name so its very easy to know if it was for an Purpose or just for abuse.... /*========================================== * *------------------------------------------*/ ACMD_FUNC(monster) { char name[NAME_LENGTH]; char monster[NAME_LENGTH]; int mob_id; int number = 0; int count; int i, k, range; short mx, my; nullpo_retr(-1, sd); memset(name, '0', sizeof(name)); memset(monster, '0', sizeof(monster)); memset(atcmd_output, '0', sizeof(atcmd_output)); if (!message || !*message) { clif_displaymessage(fd, msg_txt(80)); // Give the display name or monster name/id please. return -1; } if (sscanf(message, ""%23[^"]" %23s %d", name, monster, &number) > 1 || sscanf(message, "%23s "%23[^"]" %d", monster, name, &number) > 1) { //All data can be left as it is. } else if ((count=sscanf(message, "%23s %d %23s", monster, &number, name)) > 1) { //Here, it is possible name was not given and we are using monster for it. if (count < 3) //Blank mob's name. name[0] = '0'; } else if (sscanf(message, "%23s %23s %d", name, monster, &number) > 1) { //All data can be left as it is. } else if (sscanf(message, "%23s", monster) > 0) { //As before, name may be already filled. name[0] = '0'; } else { clif_displaymessage(fd, msg_txt(80)); // Give a display name and monster name/id please. return -1; } if ((mob_id = mobdb_searchname(monster)) == 0) // check name first (to avoid possible name begining by a number) mob_id = mobdb_checkid(atoi(monster)); if (mob_id == 0) { clif_displaymessage(fd, msg_txt(40)); // Invalid monster ID or name. return -1; } if (mob_id == MOBID_EMPERIUM) { clif_displaymessage(fd, msg_txt(83)); // Monster 'Emperium' cannot be spawned. return -1; } if (number <= 0) number = 1; if (strlen(name) < 1) strcpy(name, "--ja--"); // If value of atcommand_spawn_quantity_limit directive is greater than or equal to 1 and quantity of monsters is greater than value of the directive if (battle_config.atc_spawn_quantity_limit && number > battle_config.atc_spawn_quantity_limit) number = battle_config.atc_spawn_quantity_limit; if (battle_config.etc_log) ShowInfo("%s monster='%s' name='%s' id=%d count=%d (%d,%d)n", command, monster, name, mob_id, number, sd->bl.x, sd->bl.y); count = 0; range = (int)sqrt((float)number) +2; // calculation of an odd number (+ 4 area around) for (i = 0; i < number; i++) { map_search_freecell(&sd->bl, 0, &mx, &my, range, range, 0); k = mob_once_spawn(sd, sd->bl.m, mx, my, name, mob_id, 1, ""); count += (k != 0) ? 1 : 0; } if (count != 0) if (number == count){ if(pc_isGM(sd)==99){ // Checks if the GM level is below 99 Announcement is made [Vengeance] clif_displaymessage(fd, msg_txt(39)); // All monster summoned! } else { sprintf(atcmd_output, "%s summoned %d %s in %s,%d,%d", sd->status.name,number, monster, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y); intif_broadcast(atcmd_output, strlen(atcmd_output) + 1, 0); clif_displaymessage(fd, msg_txt(39)); // All monster summoned! } } else { sprintf(atcmd_output, "%s summoned %d %s in %s,%d,%d", sd->status.name,number, monster, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y); intif_broadcast(atcmd_output, strlen(atcmd_output) + 1, 0); sprintf(atcmd_output, msg_txt(240), count); // %d monster(s) summoned! clif_displaymessage(fd, atcmd_output); } else { clif_displaymessage(fd, msg_txt(40)); // Invalid monster ID or name. return -1; } return 0; } // small monster spawning [Valaris] ACMD_FUNC(monstersmall) { char name[NAME_LENGTH] = ""; char monster[NAME_LENGTH] = ""; int mob_id = 0; int number = 0; int x = 0; int y = 0; int count; int i; nullpo_retr(-1, sd); if (!message || !*message) { clif_displaymessage(fd, "Give a monster name/id please."); return -1; } if (sscanf(message, ""%23[^"]" %23s %d %d %d", name, monster, &number, &x, &y) < 2 && sscanf(message, "%23s "%23[^"]" %d %d %d", monster, name, &number, &x, &y) < 2 && sscanf(message, "%23s %d %23s %d %d", monster, &number, name, &x, &y) < 1) { clif_displaymessage(fd, "Give a monster name/id please."); return -1; } // If monster identifier/name argument is a name if ((mob_id = mobdb_searchname(monster)) == 0) // check name first (to avoid possible name begining by a number) mob_id = atoi(monster); if (mob_id == 0) { clif_displaymessage(fd, msg_txt(40)); return -1; } if (mob_id == MOBID_EMPERIUM) { clif_displaymessage(fd, msg_txt(83)); // Cannot spawn emperium return -1; } if (mobdb_checkid(mob_id) == 0) { clif_displaymessage(fd, "Invalid monster ID"); // Invalid Monster ID. return -1; } if (number <= 0) number = 1; if (strlen(name) < 1) strcpy(name, "--ja--"); // If value of atcommand_spawn_quantity_limit directive is greater than or equal to 1 and quantity of monsters is greater than value of the directive if (battle_config.atc_spawn_quantity_limit >= 1 && number > battle_config.atc_spawn_quantity_limit) number = battle_config.atc_spawn_quantity_limit; count = 0; for (i = 0; i < number; i++) { int mx, my; if (x <= 0) mx = sd->bl.x + (rand() % 11 - 5); else mx = x; if (y <= 0) my = sd->bl.y + (rand() % 11 - 5); else my = y; count += (mob_once_spawn(sd, sd->bl.m, mx, my, name, mob_id, 1, "2") != 0) ? 1 : 0; } if (count != 0) { if(pc_isGM(sd)==99){// Checks if the GM level is below 99 Announcement is made [Vengeance] clif_displaymessage(fd, msg_txt(39)); // All monster summoned! } else{ sprintf(atcmd_output, "%s summoned %d small %s in %s,%d,%d", sd->status.name, number, monster, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y); intif_broadcast(atcmd_output, strlen(atcmd_output) + 1, 0); clif_displaymessage(fd, msg_txt(39)); // Monster Summoned!! } } else clif_displaymessage(fd, msg_txt(40)); // Invalid Monster ID. return 0; } // big monster spawning [Valaris] ACMD_FUNC(monsterbig) { char name[NAME_LENGTH] = ""; char monster[NAME_LENGTH] = ""; int mob_id = 0; int number = 0; int x = 0; int y = 0; int count; int i; nullpo_retr(-1, sd); if (!message || !*message) { clif_displaymessage(fd, "Give a monster name/id please."); return -1; } if (sscanf(message, ""%23[^"]" %23s %d %d %d", name, monster, &number, &x, &y) < 2 && sscanf(message, "%23s "%23[^"]" %d %d %d", monster, name, &number, &x, &y) < 2 && sscanf(message, "%23s %d %23s %d %d", monster, &number, name, &x, &y) < 1) { clif_displaymessage(fd, "Give a monster name/id please."); return -1; } // If monster identifier/name argument is a name if ((mob_id = mobdb_searchname(monster)) == 0) // check name first (to avoid possible name begining by a number) mob_id = atoi(monster); if (mob_id == 0) { clif_displaymessage(fd, msg_txt(40)); return -1; } if (mob_id == MOBID_EMPERIUM) { clif_displaymessage(fd, msg_txt(83)); // Cannot spawn emperium return -1; } if (mobdb_checkid(mob_id) == 0) { clif_displaymessage(fd, "Invalid monster ID"); // Invalid Monster ID. return -1; } if (number <= 0) number = 1; if (strlen(name) < 1) strcpy(name, "--ja--"); // If value of atcommand_spawn_quantity_limit directive is greater than or equal to 1 and quantity of monsters is greater than value of the directive if (battle_config.atc_spawn_quantity_limit >= 1 && number > battle_config.atc_spawn_quantity_limit) number = battle_config.atc_spawn_quantity_limit; count = 0; for (i = 0; i < number; i++) { int mx, my; if (x <= 0) mx = sd->bl.x + (rand() % 11 - 5); else mx = x; if (y <= 0) my = sd->bl.y + (rand() % 11 - 5); else my = y; count += (mob_once_spawn(sd, sd->bl.m, mx, my, name, mob_id, 1, "4") != 0) ? 1 : 0; } if (count != 0) { if(pc_isGM(sd)==99){// Checks if the GM level is below 99 Announcement is made [Vengeance] clif_displaymessage(fd, msg_txt(39)); // All monster summoned! } else{ sprintf(atcmd_output, "%s summoned %d big %s in %s,%d,%d", sd->status.name, number, monster, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y); intif_broadcast(atcmd_output, strlen(atcmd_output) + 1, 0); clif_displaymessage(fd, msg_txt(39)); // Monster Summoned!! } } else clif_displaymessage(fd, msg_txt(40)); // Invalid Monster ID. return 0; } Just copy paste this Snippet. Download from here
    1 point
  3. Hi. I'm back into mapping. I know, it has been a long time since the lastest "map from scratch" work I did. But anyway, I'm back and ready to show you this one that enters into a new category that I will offer in my Map Services topic that I have to update. I will call this as "Map Ports" What is that? well, as its name, this is about porting maps from popular 3d games (actually games supported: Warcraft, League of Legends, World of Warcraft and Starcraft 2) into RO. This work is more about working with 3d models, modify them (if it is necessary since some models crashes and need to be re-edited to import them succesffuly), extract them, and import them into RO, to use it in your map, at a quantity above of 80 - 90% of custom models to your map. But not only models. This one is about extracting also textures (of the terrain of that map), sounds (for ex. sounds of units, map ambienting). as also MP3 To improve the recreation of the map. Obviously there are limitations with this. I decided to make this into an apart category, since the work with models it is too much (sometimes, more than the map itself). Well enough, let's talk about the map itself now: Yeah, that is the Dota Map. My customer asked me to do the map exactly as I could... but the most important was: the walkways and terrain structure to look near as possible of the original one. Video of This map Watch it in HD 720p == Sorry dunno why my Fraps, did my video, more darker as it was!, it is not that dark == Map is about recreating the Dota All Stars Map. So I needed to extract models, (using 3ds Max and some plugins, since there isn't, or at least I don't now about a native export to 3ds) and import them into RO. Map in Nightmode, but nightmode colors based in "nightmode" of warcraft 3 pass of time I extracted some textures of the "ashenvale" forest from warcraft. So I used them for custom bushes, trees, leaves, stones, etc. I extracted .WAVS files from warcraft data, to add them as custom sounds. So when you reach for ex: a Ziggurat of warcraft, you will hear screams just as in warcraft game Map preservers very close the same walkway of dota all stars. I used warcraft map editor and a free template to port each walkway of my map. As also a lot of pictures for reference to do it well First comparison The first and most important comparison, is the sky view of the map. For me it is really near as the original. I know, it coulda be better... but at first I was working with an "old" dota version, so... anyway, here it is: Night elfs base Just a view of this base. Let me tell you that all the models are "facing" south, just as in warcraft, because my customer requested it. He will disable camera rotation into his map, so that is the reason: Example of Model imported This is a custom model. Look at the bushes on its base, they have custom textures that I extracted from warcraft 3 Ashenvale data Another ex. of Model Here a Moonwell. Also with same bushes. Night elf, hero area Just the place where Night elf heroes spawn Example of Terrain Walkway Just to show how the walkways are in the nelf side. Some low level terrain elevations, and woods (woods with texture extracted from warcraft dota map trees. Undead base overview Those green lights are to simulate the "plage" gas that sorrounds the undeads base Ex. of model Just a Ziggurat. Btw, this one could be more bigger, but, ziggurats are small in warcraft 3 really. Undead Side, walkway Just an overview of this walkway. to compare trees, terrain etc. Ex. of custom model again There the lich king glacier. That was tricky since the model was only available from the "cinematic" data. It was a huge one btw, I had to edit the polygons of it to be usable inside RO... sorry about the "lich" sleketon that is inside of it, I couldn't import it, so I used a random skeleton. Hero undead base Just the place where heroes spawns. There is a graveyard, a blood fountain of power, and a tomb of relics Some models of the undead base Just another example That's all. I hope you like it, also, please check the video to hear the sound effects I added. Regarding Map requests, In short... I'm full! I have to do 2 christmas editions, and 3 maps from scratch still (one in the way, 2 pendings for some guys that reserved an slot the past 2 weeks) Bye bye and thx in advance for taking your time by posting here in my topic.
    1 point
  4. Hello everyone. Im here today to release a batch of decompiled Lua files made from the latest Lub's in the client's official grf's. The files you see here were decompiled and adjusted to work with the latest RO clients while in a decompiled form. This allow's private server dev's to add many different types of custom content to their clients without the need of hexing a client. These files are completely brand new and dont use any data from any past decompiled files (Except emotionlist.lub). Reason is because as old as the last release is (March 2011) it was hard to find a starting point. Not only that, past releases are missing some needed data like job checks for skill requirements, types, missing other data....etc. It was best to start from scratch so I could make some fully up-to-date and reliable files. The files here were made with the latest lub's from around December of 2011. However, due to issues with December clients I made and tested them while using a 2011-11-22aRagexeRE client. No function changes were made during the month of December. With the release of these files I hope to help the community move a big step forward to getting full support for the latest clients possiable. Rytech's Decompiled Lua's Release For 2011-11-22 client. = How To Use = Place the "lua files" folder in your RO/data/ directory. They will work in data folders and GRF's. Be sure to have the "Load Lua Before Lub" diff diffed into your client. = Notes = Skill names in the skillinfolist.lua are still in Korean as I didnt bother taking the time to replace the names with english ones....yet. All 3rd job skill descripts in the skilldescript.lua are copied from the sakray iRO client and are mostly up-to-date with the info for the 2011 balances from kRO. The stateiconinfo.lua is from iRO's sakray client and is up-to-date with skill info. However, iRO skill names are used in here and will need to be replaced with kRO skill names in the future. Finally, I will not bother decompileing any function files since its pointless. Their's no possiable ways in customize with editing them and is best to keep true to the original coding in them for the client date. If for some reason one does need to be decompiled then I will do it. Other then that, have fun and enjoy the release. =Final Notes The development and release of these files is a big step in my plan for getting full support completed for newer clients. So many users out there are still using clients from around Feb....March....around there due to lack of newer lua support. Its time to start moving up to the newer stuff. So much has changed since then and now their's many new custom things that can be added. Im really looking forward to the future. =D ----------------------------------------------------------------------------- Below are 2 downloads. The 1st one is the original release and is mainly for development purposes. The 2nd one (V2) is a re-release that includes a few updated files and makes installing a lot easier, as well as allowing the use of the "Load Lua Before Lub" diff. Rytech's Decompiled Lua Release 2011-11-22.rar Rytech's Decompiled Lua Release 2011-11-22 V2.rar
    1 point
  5. this skin make lag, no recommended to play WoE
    1 point
  6. Haha, your closed your RO Website! Nice. If you want to submit your report, go to http://americancensorship.org/ !!
    1 point
  7. Arcenciel is right, it's in the client. And with client we're refering to the executable that opens your game.
    1 point
  8. Not at all that's an antivirus...
    1 point
  9. Added Game Master Event Starter Script. Made Public due to a server using it as a "this server-only" script.
    1 point
  10. It might be due to some sprites errors in character class. This website contains a pack with revisited class sprites : http://kamishisteamwork.fr.nf/ (bottom of the page, download section)
    1 point
  11. You might want to fix the mod_db.sql, it is missing the monsters from 2245 and onwards, these are in the txt version however. I, however, prefer to use SQL DBs, please add these for the future people downloading and preferring sql databases <3
    1 point
  12. r15486's latest renewal mob database for SQL: mob_db_re.sql (table renamed to work with mob_db) I was planning to commit it as a mob_db_re table file but I don't think we have that database yet. So, I decided to post it here. (ie. this is an unofficial version)
    1 point
×
×
  • Create New...