Jump to content

Aleos

Development Manager
  • Posts

    732
  • Joined

  • Days Won

    73

Posts posted by Aleos

  1. That is another good way.

    Here's my patch. I used some of your stuff from the validation process to parse the dates. Everything should have been covered. I haven't gotten to test it yet but I don't think I have any typos. :) If I do tell me and I'll redo the patch!

    Edit: Added missing alter table script for cp_createlog table.

    cp_birthdatechange.sql

    cp_createlog.sql

    birthdate_rA.diff

    birthdate_eA.patch

  2. Right, it only is a concern when someone is going to modify their account. I didn't read your whole post to see what you added exactly, but since you didn't add a Change Birth Date feature it wouldn't be a concern. I actually just finished my modification (haven't gotten to test it yet). I'll have to go back and split it from my source to produce a patch file.

    And yes, from my first post, it will pose a problem for those servers that don't use email verification on account creation. :)

  3. I think this needs a bit more security. Being email was the way to delete characters from the server, now that birthdate is, I think an email should be sent to the user before the birthdate is change to confirm the changes.

    Although most server owners let users re-use email addresses or may not even verify if the emails are real (through email verification) so this might not be as good. Also Flux is setup to where if the email of the account is changed it's sent to the new email address to confirm rather than the old email address to confirm the new email address (I had to change this, it drove me insane). Again, leads to my points above which makes it still insecure if people were to take over accounts. I've been writing my own recently to account for these things since I have email validation on.

    Good job none the less. :)

  4. I think 2009 and up support name changes via the client? All you have to do is make a NPC and have it use an update query.

    Example:

    query_sql "UPDATE `char` SET `rename` = `rename` + 1 WHERE `char_id` = "+ getcharid(0) +"";

    As long as the value is more than 0 the rename button will show up in the character selection screen.

  5. It is possible. You just define the Lure ID in the pet_db to be whatever ID you want. As for the item script, I haven't actually tried it with using the pet script function (i.e.: pet 1002; would catch a Poring) to list multiple pet IDs (i.e.: pet 1001; pet 1002; pet 1003;). If that doesn't work you can just make the script of the item to use the Sage's Abra skill (i.e.: itemskill "SA_TAMINGMONSTER",1;).

  6. So my source base is 3CeAM. I've merged rAthena to it for the renewal bits of source here and there. The issue I'm having right now is with skill casting. Since the source I'm using is all renewal, I don't have any config flags or the REMODE settings. I merged the skill_castfix() and skill_castfix_sc() functions as well as their calls in the unit.c which is different form 3CeAM.

    The skill_cast_db doesn't need to be changed since it all uses the same information anyways even though it's structured a bit differently. Now the issue that I'm running into is that when I use any skills that have cast time, they all average at about 1~2 seconds no matter the stats (INT and DEX since they are the only two stats that affect cast rate) I'm at (1 or 120). This issue had come up before but was fixed in eA a while ago for 64-bit Linux systems.

    I'm at a standstill here and am wondering what I am completely missing. If someone has any insight as to where I should look I would appreciate it!

  7. The reason is because the item delay database is for usable items rather than etc items.

    You'll have to hard code a delay for the item. Adjust the the clif_parse_AutoRevive() function to be like this:

    void clif_parse_AutoRevive(int fd, struct map_session_data *sd)
    {
    int item_position = pc_search_inventory(sd, 7621);
    
    if (item_position < 0)
    	return;
    
    if (sd->sc.data[sC_HELLPOWER]) //Cannot res while under the effect of SC_HELLPOWER.
    	return;
    
    if (!status_revive(&sd->bl, 100, 100))
    	return;
    
    if (DIFF_TICK(gettick(), pc_getglobalreg(sd,"TOKEN_OF_SIEGFRIED")) < 3600000)
    	return;
    
    pc_setglobalreg(sd,"TOKEN_OF_SIEGFRIED",gettick());
    clif_skill_nodamage(&sd->bl,&sd->bl,ALL_RESURRECTION,4,1);
    pc_delitem(sd, item_position, 1, 0, 1);
    }

    That stores a normal variable to each player who uses the item. (Same as using "set TOKEN_OF_SIEGFRIED,<current time in milliseconds>;" if you used it as a NPC).

    • Love 1
  8. clif_skill_poseffect is what causes the skill name to be "shouted" above the head of the player. Since you commented it out that's why it doesn't show anymore. I guess you could cheat the system:

    if ( sd )
    {
     char temp[25];
     snprintf(temp, sizeof(temp), "Snap !!");
     clif_message(&sd->bl,temp);
    }

    Although that would show up in the chat window as a message.

  9. You have one extra '}' that's above "case 4:".

    case 2:
    mes "[Mount Rentals]";
    mes "I see. Then have a great day.";
    close;
    }
    }
    }
    case 4:
    if( (Class == Job_Mechanic || Class == Job_Mechanic_T) && checkriding() == 0 )
    {
    setriding;
    close;
    }
    

    Should be:

    case 2:
    mes "[Mount Rentals]";
    mes "I see. Then have a great day.";
    close;
    }
    }
    case 4:
    if( (Class == Job_Mechanic || Class == Job_Mechanic_T) && checkriding() == 0 )
    {
    setriding;
    close;
    }
    

    That's just a straight look at it and counting the brackets. Not sure.

    PS: If you tabbed in your stuff it would make it easier to read and find these errors!

  10. Just copy the monster you want to duplicate from mob_db, paste it into the mob_db2 (So at least you seperate your customs from the official stuff). Change the monster ID to an unused ID (3000 is a good starting point). Keep in mind reaching 4000 will cause a conflict with job sprites, but hitting 1000 mobs might be hard. /hmm

    Then after you do that simply go to the mob_avail and add the new monster ID (i.e. 3000) and tag it with the monster ID of the sprite you want it to show as. For example:

    3000,1002 // Mob will look like Scorpion
    3000,1046 // Mob will look like Doppelganger

    Hope that helps. /lv

  11. The LUA file 'skillinfolist' needs to have this:

    [sKID.ALL_BUYING_STORE] = {
    	"ALL_BUYING_STORE";
    	SkillName = "Open Buying Store",
    	MaxLv = 2,
    },

    To my knowledge, this is what was causing people to crash before when they were missing it.

    • Upvote 1
  12. src/map/pc.c

    	// pvp
    // disable certain pvp functions on pk_mode [Valaris]
    if( map[sd->bl.m].flag.pvp && !battle_config.pk_mode && !map[sd->bl.m].flag.pvp_nocalcrank )
    {
    	sd->pvp_point -= 5;
    	sd->pvp_lost++;
    	if( src && src->type == BL_PC )
    	{
    		struct map_session_data *ssd = (struct map_session_data *)src;
    		ssd->pvp_point++;
    		ssd->pvp_won++;
    	}
    //   	 if( sd->pvp_point < 0 )
    //   	 {
    //	   	 add_timer(tick+1000, pc_respawn_timer,sd->bl.id,0);
    //	   	 return 1|8;
    //   	 }
    }

    You're going to want to comment that out and it will stop people from warping out when they die.

    • Upvote 1
×
×
  • Create New...