Jump to content

Garr

Members
  • Content Count

    482
  • Joined

  • Last visited

  • Days Won

    8

Posts posted by Garr


  1. 20120410 uses txt files still, so this will be in idnum2itemdesctable.txt

     

    Since you had other customs added already, I'd assume you know what you're doing. Just try to check for usual things: you didn't forget last "#", you typed item id right (I had that before with mob avail, switched 2 digits in mob_avail and was WTF why it doesn't work ._.'). Also, what's the ID of that item? Maybe it clashes with some existing item description already?


  2. Stop with the panic, what exactly is wrong with that chart?

     

    You do realize that after character hits 98->99 for base exp or 69->70 for job exp his exp is nulled out, like on every level up? That's exactly the case there. If character continues to play AFTER he reached 99 he STILL gets exp, but it's just not shown ingame. As you can see, maximum base exp a 99 trans character can reach is 343.210.000, and 213.852.071 for job exp. Iirc SNs can reach more job exp, but I'm not actually sure on their limit (It's because they have 99 jobs unlike 70 on trans/extended and 50 1st/2nd).

     

    Did you all think character just stops getting exp after hitting 99? ._.


  3. Why not just use

    select( (((eaclass() & EAJ_BASEMASK) == EAJ_MAGE)?"":"SP Rec") + ":" + .skill_set$[2] )

    Anyway, that ":" there for a reason. If you'd be using the code presented by you, you'll essentially be getting 2 different menus with 2 different choice options, which would make it hard to place into logic. This way, empty option will not be presented inside NPC choice window, but it'll still take up place. So in short, without that ":" when you choose "Napalm Beat" you can get either option 2 or 3, with this you'll always get 3.


  4. Not working how? You can't warp to map? You crash when you enter map? It tells you there's no such map?

    Can I see that "something" that you added already?

     

    Also, iirc rAthena doesn't have null/player/guild variants added to instance source, only party >.<


  5. I didn't say that number you get from eaclass and class are same. I said job number/job id/class are one and the same. It's pretty much what you know as Job_* constants. 0 for Novice, 1 for  Swordsman and so on.

     

    On par with that exists eaclass system, which you can read about in the document I told about above.

     

    Those are 2 different systems.

     

    My comment above was aimed towards you changing "job number" into "class" :P


  6. What about resnametable inside client? I thought you could copy already existing maps that way.

    <EDIT>Oh, without any additions to database... My bad >.< </EDIT>

    Iirc you only need to add the name inside map_index.txt and add few lines inside resnametable for client.

    Like bossnia_01 ~ bossnia_04 maps all use gef_dun03 map.

    bossnia_01.gnd#gef_dun03.gnd#bossnia_01.gat#gef_dun03.gat#bossnia_01.rsw#gef_dun03.rsw#À¯ÀúÀÎÅÍÆäÀ̽ºmapbossnia_01.bmp#À¯ÀúÀÎÅÍÆäÀ̽ºmapgef_dun03.bmp#bossnia_02.gnd#gef_dun03.gnd#bossnia_02.gat#gef_dun03.gat#bossnia_02.rsw#gef_dun03.rsw#À¯ÀúÀÎÅÍÆäÀ̽ºmapbossnia_02.bmp#À¯ÀúÀÎÅÍÆäÀ̽ºmapgef_dun03.bmp#bossnia_03.gnd#gef_dun03.gnd#bossnia_03.gat#gef_dun03.gat#bossnia_03.rsw#gef_dun03.rsw#À¯ÀúÀÎÅÍÆäÀ̽ºmapbossnia_03.bmp#À¯ÀúÀÎÅÍÆäÀ̽ºmapgef_dun03.bmp#bossnia_04.gnd#gef_dun03.gnd#bossnia_04.gat#gef_dun03.gat#bossnia_04.rsw#gef_dun03.rsw#À¯ÀúÀÎÅÍÆäÀ̽ºmapbossnia_04.bmp#À¯ÀúÀÎÅÍÆäÀ̽ºmapgef_dun03.bmp#

  7. Actually, no, there is a part inside warp command (pc_setpos in pc.c) that revives the person it's warping when dead.

     

    My wild guess would be that there's some other label that triggers before, and it might be falling through to this one. In short, you might've forgotten to end/close piece of code above this part?


  8. You don't need to edit dispell, just edit db/sc_config.txt:

    // Status Change configuration database//// Structure of Database:// SC_NAME, flag//// flag    1  - SC cannot be removed by death.//         2  - SC cannot be saved.//         4  - SC cannot be reset by dispell.//         8  - SC cannot be reset by clearance.//         16 - SC considered as buff and be removed by Hermode and etc.//         32 - SC considered as debuff and be removed by Gospel and etc.//         64 - SC cannot be reset when MADO Gear is taken off.//        128 - SC cannot be reset by 'sc_end SC_ALL' and status change clear.//Example://SC_ENDURE, 21 //SC_ENDURE: cannot be removed by death and dispell and cosidered as buff. (16 + 4 + 1 = 21)

  9. When they register you can stash their variables into an array, I usually get both aid and cid just incase, and to check if player changed chars and *somehow* got back.

     

    Once they die you delete player from the array you created, or a copy of it if you want to keep it for some reason (like you know your players won't bail out of event and want to keep array), or if they die you delete them from copy of array, and if they log out you delete them from both arrays.

     

    Another way is to use this awesome command and get player aids from within the area, and check them for being with GM commands, first one within the area that doesn't have (or has very low) GM level is the one we seek.

     

    Hmm. I also have one weird idea, it might work, but I'm not really sure on few moments. I'll check it out and get back on that.


  10. The other way around.

    By the coords you gave me ( I assume that x,y coords for lower left corner of green area is 46,46, upper right 53,53. For orange area 36,36 and 63,63 respectively)

    getareausers( "map",36,36,63,63) - getareausers( "map",46,46,53,53)

    As in you deduce GMs (green area, 2nd getareausers) from all the players inside orange area + green area (1st getareausers).

    In getareausers I prefer lower left and upper right corners (not sure if it can be the other way, never really tried), so I use the command like this:

    getareausers( "mapname", lower left corner x, lower left corner y, upper right corner x, upper right corner y)

    Just so you can check that both x and y are increasing and you're actually getting the right area :P

     

    To check for dead players you'd want to trigger an event:

    OnPCDieEvent:This special label triggers when a player dies. The variable 'killerrid' is set to the ID of the killer.

    Just don't forget to limit it only to the players you want it triggered on, since it'll trigger FOR EVERY DEATH EVER.

    Usually limits include checking if the person is on the right map, has needed variables on him (or some global event variabe is set), and I'd exclude GMs from this as well even if they fall under both previous conditions.


  11. For the black walls you should probably use setwall, or alter the map in browedit if you'll be using it only for the event.

     

    About counting players just use getareausers (rectangle around orange area) - getareausers (rectangle around green area).

     

    If you want a full script you'd need to provide more info, like rectangle corners coords, map that the event will run on and so on and so forth.


  12. Just a question, why did you have to modify it to get charIDs when most commands work with accIDs, including *attachrid and *rid2name? You can just go through the accID array, attaching the players to script, and do checkvending() without any extra options on it.

     

    Speaking of which that's why you're getting an error. For rid2name you need to provide accID, not charID.


  13. I just want to ask... why? Why did you have to use an endless timer?

    OnPCLoginEvent:OnPCLogoutEvent:OnPCBaseLvUpEvent:OnPCJobLvUpEvent:It's pretty obvious when these four special labels will be invoked.
    -	script	LevelUpGifts	-1,{end;OnPCLoginEvent: // To give prizes to people who already obtained the levels before script was implemented and are already 99.	.@flag = 1;OnPCBaseLvUpEvent:	if( BaseLevel >= 60 && !(LevelUpPrize&1) ) {		// Insert giving items to level 60 here;		LevelUpPrize |= 1;		if( BaseLevel == 60 )			announce strcharinfo(PC_NAME) + " reached level 60, congratulations!",bc_all|bc_npc|bc_blue;	}	if( BaseLevel >= 70 && !(LevelUpPrize&2) ) {		// Insert giving items to level 70 here;		LevelUpPrize |= 2;		if( BaseLevel == 70 )			announce strcharinfo(PC_NAME) + " reached level 70, way to go!",bc_all|bc_npc|bc_blue;	}	if( BaseLevel >= 80 && !(LevelUpPrize&4) ) {		// Insert giving items to level 80 here;		LevelUpPrize |= 4;		if( BaseLevel == 80 )			announce strcharinfo(PC_NAME) + " reached level 80, hafway to the top!",bc_all|bc_npc|bc_blue;	}	if( BaseLevel >= 90 && !(LevelUpPrize&8) ) {		// Insert giving items to level 90 here;		LevelUpPrize |= 8;		if( BaseLevel == 90 )			announce strcharinfo(PC_NAME) + " reached level 90, you're almost there!",bc_all|bc_npc|bc_blue;	}	if( BaseLevel >= 99 && !(LevelUpPrize&16) ) {		// Insert giving items to level 99 here;		LevelUpPrize |= 16;		if( BaseLevel == 99 && !.@flag ) // Just so players that already got 99'd wouldn't get an announce on login.		// They reached it way long ago 			announce strcharinfo(PC_NAME) + " reached level 99, congratulations!",bc_all|bc_npc|bc_blue;	}end;}

    Something like this and checks would run only on leveling up and logging in, instead of running this check on every player every 0.1second >.<

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.