-
Posts
116 -
Joined
-
Last visited
-
Days Won
2
Content Type
Profiles
Articles
Custom items
Forums
Store
Events
Everything posted by Veralynn
-
WS has retarded ygg capacity and high hp. The damage isn't the real issue, the issue is they can out ygg ANY other class AND have super high DPS. It's not balanced.
-
What GRF are FRO's Custom sprites located in? Trying to make an animated signature ;o
-
There are 4 islands on the edges of the map that you can't reach, once you kill enough MvPs in the center of the map they all spawn out there and it leaves the dungeon completely empty. Solution 1: Change the map. Solution 2: Make the card key a pass that teleports you on use. Solution 3: Place in npc in the map that will warp you to the islands. MvP room has been "empty" for who knows how long now. Don't know why no one has reported it yet.
-
Removing pneuma makes them too underpowered compared to snipers and stalkers when it comes to survivability. Just make Thor reduce max hp.
-
The issue is twofold. 1: It makes them severely overpowered in comparison to other classes in pvp. 2: It gives almost 0 benefit to the class during WoE. The point is to balance classes, not repeatedly buff/nerf them forever.
-
That's because you're a fashionable kind of guy ;o
-
I've played WS and Thor is pretty overpowered, less hp would balance it. No need to nerf their valkyrie, however they're oriental needs a buff.
-
That's the same thing I was looking forward to all this time xD. Making a wiki team would be nice, it needs a lot of work as it is, nothing in the guide section works. There's a "hidden" list of all the edited cards on the server (excluding the ones in the recent update).
-
Found an example array: Index: src/map/atcommand.c =================================================================== --- src/map/atcommand.c (revision 14109) +++ src/map/atcommand.c (working copy) @@ -6074,35 +6074,84 @@ } /*========================================== - * @autolootitem + * @autolootitem [modified version by Rad] + * modified to enable players autoloot 5 + * different items. Uses array. Counter checks added :p + * Sorry if it is too lousy for you :p *------------------------------------------*/ int atcommand_autolootitem(const int fd, struct map_session_data* sd, const char* command, const char* message) { struct item_data *item_data = NULL; + int i, slot=0; + char item_name[100]; - if (!message || !*message) { - if (sd->state.autolootid) { - sd->state.autolootid = 0; + memset(item_name, '\0', sizeof(item_name)); + + if (!message || !*message || ( + sscanf(message, "\"%99[^\"]\" %d", item_name, &slot) < 1 && + sscanf(message, "%99s %d", item_name, &slot) < 1 + + )) { + + if (sd->state.autolootactive) { + sd->state.autolootactive = 0; clif_displaymessage(fd, "Autolootitem have been turned OFF."); - } else - clif_displaymessage(fd, "Please, enter Item name or its ID (usage: @autolootitem <item_name_or_ID>)."); + } + else + clif_displaymessage(fd, "Please, enter Item name or its ID (usage: @alootid <item_name_or_ID> [<slot>])."); + clif_displaymessage(fd, "...to see autoloot list, @alootid list"); + return -1; + } + if(strcmp(item_name,"list")==0) + { + clif_displaymessage(fd, "Autoloot items:"); + for(i=0; i < 5; i++){ + if(sd->state.autolootid <= 500) + sprintf(atcmd_output, "Slot %d: %s",i+1,">>> Free autoloot slot <<<"); + else{ + item_data = itemdb_search(sd->state.autolootid); + sprintf(atcmd_output, "Slot %d: '%s'",i+1,item_data->name); + } + clif_displaymessage(fd, atcmd_output); + } + return 0; + } + + else if ((item_data = itemdb_searchname(item_name)) == NULL && + (item_data = itemdb_exists(atoi(item_name))) == NULL) + { + clif_displaymessage(fd, msg_txt(19)); // Invalid item ID or name. return -1; } + + if(slot<1 || slot>5) slot = 1; // check + slot = slot - 1; + + if (slot < 0 || slot >4){ //counter check + clif_displaymessage(fd, "Slot # can only be 1~5"); + return -1; + } - if ((item_data = itemdb_exists(atoi(message))) == NULL) - item_data = itemdb_searchname(message); - if (!item_data) { // No items founds in the DB with Id or Name clif_displaymessage(fd, "Item not found."); return -1; } + + for(i=0; i < 5; i++){ //to prevent duplicate entry + if(item_data->nameid == sd->state.autolootid){ + sprintf(atcmd_output, "'%s' is already auto-looted in Slot %d.",item_data->name, i+1); + clif_displaymessage(fd, atcmd_output); + return -1; + } + } - sd->state.autolootid = item_data->nameid; // Autoloot Activated + sd->state.autolootid[slot] = item_data->nameid; // Autoloot Activated + sd->state.autolootactive = 1; - sprintf(atcmd_output, "Autolooting Item: '%s'/'%s' {%d}", - item_data->name, item_data->jname, item_data->nameid); + sprintf(atcmd_output, "Autolooting Item: '%s'/'%s' {%d} , Stored in slot %d", + item_data->name, item_data->jname, item_data->nameid,slot+1); clif_displaymessage(fd, atcmd_output); return 0; Index: src/map/mob.c =================================================================== --- src/map/mob.c (revision 14109) +++ src/map/mob.c (working copy) @@ -1719,7 +1719,7 @@ if( sd == NULL ) sd = map_charid2sd(dlist->third_charid); if( sd - && (drop_rate <= sd->state.autoloot || ditem->item_data.nameid == sd->state.autolootid) + && (drop_rate <= sd->state.autoloot || mob_processdrop( sd, ditem->item_data.nameid )) && (battle_config.idle_no_autoloot == 0 || DIFF_TICK(last_tick, sd->idletime) < battle_config.idle_no_autoloot) && (battle_config.homunculus_autoloot?1:!flag) #ifdef AUTOLOOT_DISTANCE @@ -1738,6 +1738,17 @@ dlist->item = ditem; } +int mob_processdrop(struct map_session_data * sd, int nameid) +{ + int i; + for(i=0; i < 5; i++) + { + if(nameid == sd->state.autolootid) + return 1; + } + return 0; +} + int mob_timer_delete(int tid, unsigned int tick, int id, intptr data) { struct block_list* bl = map_id2bl(id); Index: src/map/mob.h =================================================================== --- src/map/mob.h (revision 14109) +++ src/map/mob.h (working copy) @@ -230,6 +230,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type); void mob_revive(struct mob_data *md, unsigned int hp); void mob_heal(struct mob_data *md,unsigned int heal); +int mob_processdrop(struct map_session_data * sd, int nameid); #define mob_stop_walking(md, type) unit_stop_walking(&(md)->bl, type) #define mob_stop_attack(md) unit_stop_attack(&(md)->bl) Index: src/map/pc.h =================================================================== --- src/map/pc.h (revision 14109) +++ src/map/pc.h (working copy) @@ -122,7 +122,8 @@ unsigned ignoreAll : 1; unsigned debug_remove_map : 1; // temporary state to track double remove_map's [FlavioJS] unsigned short autoloot; - unsigned short autolootid; // [Zephyrus] + unsigned short autolootid[5]; // [Zephyrus] + unsigned short autolootactive; unsigned noks : 3; // [Zeph Kill Steal Protection] bool changemap; short pmap; // Previous map on Map Change This gives 5 "autoloot slots" so the command is @alootid <itemid> <slot 1-5> not sure if it would have to be modified as I'm not experienced. There it is though, credits to BrianL from eathena, he wrote the array, and has kept it updated as recently as february.
-
Because we all have access to the server files.
-
It's already been stated that source-editing will still be looked at as long as it doesn't require large amounts of effort, and I'm 100% sure there are plenty of guides on several reputable sites that would give the information to get this done in no time at all. I honestly don't see a negative side of adding this and don't know why it wasn't implemented years ago. It should be a standard feature on all private servers with autolooting enabled.
-
Hell yeah. tq<3
-
Why isn't this a "viable option"? o_o other servers have been doing it for years (poorly managed servers at that). I don't understand what part of it isn't viable.
-
Awesome guide Edu, I might make a prof just to test this out ^^
-
What I'm suggesting is that we enable multiple autolooting on specific drops. Such as looting only Yggdrasil Berries, Witherless Roses, and Evil Horns when killing Baphomet Jr. in prt_maze03. A few examples: @ali1 first item to loot @ali2 second @ali3 third or @ali item1; item2; item3 @ali item1, item2, item3 Benefits: Makes it easier to farm BoS/Witherless Roses while farming seeds/yggs/c speeds. Makes it easier to complete quests that have multiple items from one monster. Makes pve in general easier, no need to @autoloot for an mvps quest item + card ( annoying adds get in the way most of the time). I've played a few servers in the past (years ago) that had this implemented so it shouldn't be too hard. Issues: Would make questing easier? That's the only thing I can see it having an impact on (not sure if it's a negative impact or a positive one?) Give me some feedback, and vote in the poll! :D
-
Pretty much need donation gear to run GS.
-
Good luck everyone!
-
Can we get more people working on the wiki? It still has a lot of old stuff that needs to be added, plus all these new updates. I'd volunteer of course. Anyone else interested?
-
Only issue with the whole elite system I see atm is that knight sets are far easier to come by, and give you a 2 slotted helm. Reduce the quest items required to craft an elite set to balance it out. The first quest is extremely easy. Second one is a bit tedious for a mediocre reward (depending on your class).
-
I was trying to get you back on topic but you're just flaming now.
-
Can't you just stockpile the items ahead of time? O_o
Footer title
This content can be configured within your theme settings in your ACP. You can add any HTML including images, paragraphs and lists.
Footer title
This content can be configured within your theme settings in your ACP. You can add any HTML including images, paragraphs and lists.
Footer title
This content can be configured within your theme settings in your ACP. You can add any HTML including images, paragraphs and lists.