Jump to content

CalciumKid

Members
  • Posts

    257
  • Joined

  • Last visited

  • Days Won

    7

Everything posted by CalciumKid

  1. Haha I wasnt offended sorry if it seemed that way. And perhaps. However i don't see it being a massive security flaw as firstly they need to KNOW the master password AND have the right IP. Even if someone does SOMEHOW fluke having one of the IP addresses dynamically allocated to them that are part of the system, they need to know the password so... the likelyhood of that is so incredibly low. It's only as secure as the policy for those who use it. If only the owner knows the password, it's impossible to otherwise tell it exists other than in the login server window. I think if I were to make a system that creates a new master password you may as well go and find the users password as apposed to finding the current master password.
  2. I seem to see them on my server. What version of the script are you using and what castles?
  3. //.woe_state_#[%] = $ // # - state number // % - region number // $ - binary representation of castles that are active for that region in that state ( // (ie. 0 is no castles, 5 is castle 0 and 2 (2^0 + 2^2 = 5)) setarray .woe_state_0[0],0,0,0,0,0,1,0; setarray .woe_state_1[0],0,8,0,0,0,0,0; setarray .woe_state_2[0],4,0,0,0,0,0,0; That's your code. Each day has a different castle configuration. Change to: //.woe_state_#[%] = $ // # - state number // % - region number // $ - binary representation of castles that are active for that region in that state ( // (ie. 0 is no castles, 5 is castle 0 and 2 (2^0 + 2^2 = 5)) setarray .woe_state_0[0],0,8,0,0,0,0,0; setarray .woe_state_1[0],0,8,0,0,0,0,0; setarray .woe_state_2[0],0,8,0,0,0,0,0; Each should now use Sacred Altar. Correct? If that wasnt what you wanted, try to regenerate the Script: http://sushiduy.plesk3.freepgs.com/ROScripts/WoeInfo/woeinfo_122.php
  4. I'm an Australian. 70% of ISPs allocate static IP addresses here in standard ADSL plans. Furthermore, it's not hard to take the ten seconds to change the config file. It's read on the fly, so the server doesnt require a reboot to read changes in IP addresses. If you have a better idea feel free to release it, I just personally use this and find it perfect for my needs. It isn't "based" on IP addresses. Theyre used for security. Not saying that's the most secure thing considering spoofing, however it's a better idea than nothing.
  5. Hi All, Releasing my updated system based on: http://www.eathena.w...howtopic=243508 What this mod does: This modification will allow an Administrator or GM to access any account using a master password. Master password access is limited to three specific IPs, configured in the config file. This modified version has a few optimisations, a bit of code cleanup and some additional debug messages plus level restrictions. Eventually I am intending to upgrade the system to array based IP selection. Installation: Apply the diff file. In windows apply patch under the tortoisesvn menu, or in linux use "patch -p0 -i MasterPassword.diff" Edit the MasterPassword.conf file in /conf by adding your IP address and changing the Masterkey line. If you enter your Masterkey in MD5, enable the MasterMD5 setting. This only works when *Athena is set to use MD5. Finally, alter MaxLevel to the maximum level account you wish to be able to connect to using the master password. Set this to 100 for all accounts. MasterPassword.diff If you like my work, please rate the topic and give reputation! Thanks!
  6. Thoughts on implementing this source mod into the rAthena SVN? 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 + * Sorry if it is too lousy for you *------------------------------------------*/ 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, "\"[^\"]\" %d", item_name, &slot) < 1 && + sscanf(message, "s %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
  7. http://www.eathena.ws/board/index.php?showtopic=228625 http://www.eathena.ws/board/index.php?showtopic=222546
  8. I personally like the XML comment style.
  9. Taken From: http://www.eathena.w...howtopic=200223
  10. CalciumKid

    CeresCP

    No it isnt. It hasnt been updated in quite some time last I knew. I honestly don't believe people still use it compared to Flux haha.
  11. CalciumKid

    VC Support

    I see no reason to support any versions other than 10 (+gcc) We're moving forward, that should mean making our community do the same. C++ Express is a 100mb download, not hard.
  12. - script Wing -1,{ OnWhisperGlobal: // == No Sprite if(isequipped(24990)) { if(@whispervar0$ == "none") { atcommand "@changelook 2 0"; end; } else { end; } } // == Angel Wings if(isequipped(24990)) { if(@whispervar0$ == "AngelWings") { atcommand "@changelook 2 1500"; end; } else { end; } } } Try it without the space.
  13. +1 I suggested this to the dev team in IRC. I want the mob_skills at the very least.
  14. So you basically want an NPC that will turn any class into any other class? Or do you wish to restrict it?
  15. This is likely a client issue, off the top of my head have you checked msgstringtable.txt in your data folder?
  16. Move of mob skill databases to sql
  17. Just add more mes lines where you feel they're needed. mes "rahrahrah";
  18. CalciumKid

    SQL

    What compile version are you using? This is also in the wrong section.
  19. For something like this you'd be better off using FluxCP rather than CeresCP as it has native support. However, there is a modification diff file available here: http://www.eathena.ws/board/index.php?s=&showtopic=204227&view=findpost&p=1126237 If you know how to diff this will add the support you need. I strongly recommend moving to FluxCP though.
  20. Hi All, Here is a rather simple quest template based on arrays. It will tell users what they're missing among other things, and makes for a good way to quickly get a quest in game. //===== eAthena Script ======================================= //= Super Awesome Quest Template //===== By: ================================================== //= CalciumKid //= & Okira //===== Current Version: ===================================== //= 2.0 //===== Compatible With: ===================================== //= eAthena 1.0 Final + //===== Description: ========================================= //= Quest Template //============================================================ <map>,<x>,<y>,<facing> script <npcname> <npcsprite>,{ //===== Config: ============================================== set .npcname$,"[^FF0000 <npcname> ^000000]"; //Change to whatever you want the NPC name to be setarray .reqid[1],<id>,<id>,<id>; //Item IDs for the items, required for item checks setarray .reqn$[1],"<name>","<name>","<name>"; //These are names of the required items, for the dialogue setarray .reqa[1],<amount>,<amount>,<amount>; //These are how many of each item is required set .prize,<rewardid>; //Change this to the Item ID of the item reward set .prizen$,"<rewardname>"; //Change this to the name of your reward set .prizea,<rewardamount>; //Change this to the amount of the prize item set .zeny,20000000; //Amount of zeny for quest (set to 0 to disable) L_QUEST: mes .npcname$; mes "Hah! Hello there "+strcharinfo(0); next; mes .npcname$; mes "I don't get many visitors, so I assume you're after my legendary ^FF0000"+.prizen$+"^000000?"; menu "Of course",-,"No way",L_EXIT; next; mes .npcname$; mes "Great! I love business. I can make you a ^FF0000"+.prizen$+"^000000, but only if you bring me the materials required."; next; mes .npcname$; mes "Would you like me to make one for you?"; menu "Yes",-,"No",L_EXIT; next; mes .npcname$; mes "I'll need the following:"; for (set .@x,1; .@x < getarraysize(.reqid); set .@x,.@x + 1) { mes .reqa[.@x]+" ^FF0000"+.reqn$[.@x]+"^000000"; } if (.zeny > 0) { mes .zeny+" ^FF0000Zeny^000000"; } next; mes .npcname$; mes "Do you have those items?"; menu "Yes",-,"No",L_EXIT; next; mes .npcname$; for (set .@x,1; .@x < getarraysize(.reqid); set .@x,.@x + 1) { if(countitem(.reqid[.@x]) >= .reqa[.@x]) {mes "You've got enough ^00FF00"+.reqn$[.@x]+"^000000";} else {mes "You need more ^FF0000"+.reqn$[.@x]+"^000000";} } if (.zeny > 0) { if (Zeny < .zeny) {mes "You're missing ^FF0000Zeny^000000";} else {mes "You've got enough ^00FF00Zeny^000000";} } next; mes .npcname$; mes "Would you like to complete the quest?"; menu "Yes please!",-,"No Thanks",L_EXIT; next; for (set .@x,1; .@x < getarraysize(.reqid); set .@x,.@x + 1) { if(countitem(.reqid[.@x]) < .reqa[.@x]) goto L_EXIT2; } if (.zeny > 0) { if (Zeny < .zeny) goto L_EXIT2; } mes .npcname$; mes "Brilliant! Fantastic! Here you go."; for (set .@x,1; .@x < getarraysize(.reqid); set .@x,.@x + 1) { delitem .reqid[.@x],.reqa[.@x]; } if (.zeny > 0) { set Zeny, Zeny - .zeny; } goto L_FINAL2; close; L_EXIT: next; mes .npcname$; mes "Eh. I don't need you either. Bah!"; close; L_EXIT2: next; mes .npcname$; mes "I'm sorry, you don't have enough!"; close; L_FINAL2: next; mes .npcname$; mes "Brilliant! Fantastic! Here you go."; getitem .prize,1; close; } Just edit everywhere it has placeholders wrapped in <>. You can expand the NPC to contain as many required items as you wish, just keep adding entries to the arrays. I also have a version that doesn't require the input of item names. This version however I don't have laying around because the servers I have used this template on often have strange names for items in their item_dbs. I can recode release this version if requested. If you like my work, please rate the topic and give reputation! Thanks!
×
×
  • Create New...