Jump to content

jaBote

Community Contributors
  • Content Count

    2037
  • Joined

  • Last visited

  • Days Won

    43

Posts posted by jaBote


  1. Yeah, the rates were multiplied: if you were in a 10x server the extra exp would be as in a 100x server. This is why I always ask you to test in your side. I've already fixed this: you get your bonus exp with a 1% relative error at most now, given by not having more than two decimals provided by the server.

    More info:

    • [*]This script will NOT work properly in Renewal. It works indeed, but extra exp will be calculated on the 100% exp given by the mob. [*]I'll re-release this when I fix the equiprobability issue. [*]What I've tested is only the extra experience given by a mob, not anything else. So testing on your home server is still a must do on your behalf.

    ___________________________________________________


    I've finished my script again. As always this hasn't been tested but I've fully reviewed the code and don't find any flaws on it, so I highly reccomend to test it before using in production server.

    This time I won't provide the source in a code box since it destroys my indentation and that makes me angry, so here you go:

     

    Sadly, it has some mistakes, download next version in my next post please.
    mapmobtest.txt

    And please, share it back when you're done if you plan to add mobs and maps. This way I can release it.
    Thanks!


  2. At the moment, valid file extensions are the following:

    Allowed: aiff, bmp, css, diff, doc, gif, gz, hqx, htm,html, ico, jpeg, jpg, mov, mp3, mpg, patch, pdf, php, png, ppt, ps, psd,ram, rtf, swf, tar, tiff, txt, viv, wav, wmv, xml, zip

    Which cover most common file types that can be used on a computer, independently of its OS. I agree rar extension should be added to the list since it's quite popular, but you could have packed them all in a zip or a tar file, which are usually more preferred for file sharing than rar.

     

    Thanks for your upload!


  3. I've noticed you don't have latest version of Euphy's WoE Controller. I suggest you to get it if you can, since chances are that error is fixed. Rest of the post may be wrong since I have a different version than yours:

     

    The content in this Spoiler was useless for solving the issue.

     

    It can be an issue from your "OnPCLoadMapEvent": label:

    OnPCLoadMapEvent:    if (!compare(strcharinfo(3),"g_cas")) end;    sleep2 1000;    message strcharinfo(0), getcastlename(strcharinfo(3))+" is inactive during this WOE session.";    sleep2 5000;    if (compare(strcharinfo(3),"g_cas")) warp "SavePoint",0,0;    end;

    On your script it's made to always tell user the castle is inactive and warp them back, be it active or not. If you replace your "OnPCLoadMapEvent:" in your script for this, it may work (or may not, remember we haven't the same version since you can update your script):

    OnPCLoadMapEvent:	if (!compare(strcharinfo(3),"g_cas")) end;	if (((.AutoKick && .Active[0]) || (.NoOwner && !getcastledata(strcharinfo(3),1))) && !(.Active[0]&(1<<getd("."+strcharinfo(3))))) {		if (getcharid(2) && getcastledata(strcharinfo(3),1) == getcharid(2)) end;		sleep2 1000;		message strcharinfo(0), getcastlename(strcharinfo(3))+" is currently inactive.";		sleep2 5000;		if (compare(strcharinfo(3),"g_cas")) warp "SavePoint",0,0;	}	end;

     

    If this doesn't fix your problem, revert my changes. Then it may have been caused because you have incorrectly setted the sessions. so try to check it again and look if you can enter in any other castle.

     

     

     

    Again, I highly reccomend you get the last version of it since it'll be easier bot to get support and to solve issues.

     

    Edit: Prettified a bit since I solved the issue with 2 possibilities and only one of them was valid. Outside the spoiler is the valid one.


  4. Tried to quite you Capuche, but quitted because IP.Board doesn't want to quote you today. Sorry.

     

    Didn't think about that equiprobability issue (thanks!), but that part OK as it's now because you can give the maps a some preference among others. Equiprobability will be assured as long as the arrays are evenly filled, and when you have an amount of maps the change of probability from one array to another is almost negligible.

     

    The reason I use base_exp_rate and quest_exp_rate (and should have used job_exp_rate for job exp calculation, I forgot to do that, sorry) is simple:

    Whenever you get exp from an NPC via getexp it'll get multiplied by quest_exp_rate and the result of that operation will be the exp the client will get. Since this behavior isn't desirable in this case (we want to give the user the exp of the mob multiplied by a factor, without quest_exp_rate messing around there) that's why I divide by it. This way, at getexp, user would get:

    exp*quest_exp_rate*base_exp_rate/quest_exp_rate

    Which cancels quest_exp_rates and so it leaves the exp*base_exp_rate.

     

    What I don't know is if getmonsterinfo($@specialmob,3) returns an exp value already modified by the rates of server. In that case my exp calculation is wrong as it'd be multiplied twice by base_exp_rate. Right now it's seeming wrong for me, even though I considered it right, before posting the script. I'll just have to test this calculation whenever I have time (or would be very grateful if someone checks this for me).


  5. This needs more info because of some facts:

    • You want the script to change rates depending only on online users? You also need to delay the check and change of the experience rates. You also make this check every login/logout, but you shouldn't broadcast it because there'd be so many announces.
    • What fashion you want exp rates to change: Arithmetic (A + BX)? Geometric (A + X^B)? Is there a cap?
    • You know idle and autotrade users will count towards this amount? There's no simple way to take them out of this count of online users, but it can still be made

    I've thought of other points but don't remember right now. Try to be more descriptive on those requests and anticipate any questions you could get ;) .


  6. I'd like to congratulate whoever started the rumor, even I believed it for a while. xP

     

    rAthena will be back up and running in a few days, and yes, we did indeed have backups.

     

    Well, nobody in rAthena ever said I'm still alive (to my knowledge), so I'm glad to know about you and rAthena project in general and it's comeback!


  7. Yes, I like your idea, but remember it can't be done on OSs without a GUI. Map, login and char server are made in command-line interface because of that.

     

    Anyways, maybe we could make an executable for Windows and Linux OSs with GUI, that launch both servers. I'd +1 that idea, even if I won't make use of it.


  8. I don't know if this is exactly what you mean, but you have the following script commands for compounding whatever card you fancy in whatever equipment you want:

    getitem2 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>};getitem2 "<item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>};

    its usage is pretty obvious, but in the documentation you have whatever you want to know about this, just check doc/script commands.txt

     

    Hope I helped. If that wasn't what you want, please explain yourself a bit further.


  9. I've edited the reply in which I show you the main NPC.

     

    Please tell me when you test it any bug you find, but there shouldn't be any (that one was provoked because I was in a hurry) or if it works OK.


  10. Try to comment same lines I've commented here, in skill.c:

     

    		case RG_BACKSTAP:			{				uint8 dir = map_calc_dir(src, bl->x, bl->y), t_dir = unit_getdir(bl);				if ((!check_distance_bl(src, bl, 0) && !map_check_dir(dir, t_dir)) || bl->type == BL_SKILL) {					status_change_end(src, SC_HIDING, INVALID_TIMER);					skill->attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag);					// dir = dir < 4 ? dir+4 : dir-4; // change direction [Celest]					// unit_setdir(bl,dir);				}				else if (sd)					clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);			}			break;

    This won't make Back Stab spammable because you'd need to hide again for doing it again. Comment the status_change_end line if you want not to unhide and make it spammable while hidden (I wouldn't reccomend that).


  11. Here it is. I haven't tested it but it seems I haven't made any mistakes. Try it out by yourself before using it on an actual server and tell me any problem it has, in case it does.

    trinity_in,166,143,2	script	Armor Craftsman	58,{	disable_items;	mes "[Armor Craftsman]";	mes "I've been studying ways to improve armor to increase its real capacity.";	next;	mes "[Armor Craftsman]";	mes "Enchant is an amazing ability blowing a mysterious power hidden in a space of armor.";	next;	mes "[Armor Craftsman]";	mes "One minute, please, I will check your items.";	next;	if (!getequipisequiped(EQI_ARMOR)){		mes "[Armor Craftsman]";		mes "Hey, you don't have any equipped armor!";		mes "Come back when you've equipped the armor you want to be enchanted.";		close;	}	set .@armadura, getequipid(EQI_ARMOR);	set .@refine, getequiprefinerycnt(EQI_ARMOR);	set .@carta, getequipcardid(EQI_ARMOR,0);	set .@runa, getequipcardid(EQI_ARMOR,3);	if (countitem(.@armadura) > 1){	mes "[Armor Craftsman]";	mes "Hey! you've more than armor of the kind you want to enchant!";	mes "Please, come back with only one of its kind so I don't mess enchanting the wrong one. He, he!";	close;		}	mes "[Armor Craftsman]";	mes "I will now check if you have some rune to enchant your armor.";	mes " ";	mes "One minute, please.";	set .@menu$,"";	set .@j,0;	for (set .@i,0; .@i < getarraysize(.runas); set .@i,.@i+1) {		if (countitem(.runas[.@i])) {			set .@j,.@j+1;			set .@menu$, .@menu$+getitemname(.runas[.@i])+":";			set .@runalista[.@j],.runas[.@i];		}		sleep2 1;	}	next;	mes "[Armor Craftsman]";	if (!.@j) {		mes "You must bring me some rune power to do the spell.";		close;	} else {		mes "What kind of enchantment you want to this armor?";		next;		set .@runaesc,select(.@menu$+"Nothing.");		if (.@runaesc > .@j) {			mes "[Armor Craftsman]";			mes "Please come back when you have some interest in enchanting your armor.";			close;		} else {			mes "[Armor Craftsman]";			if (.@runa)				mes "(a) "+getequipname(EQI_ARMOR)+" already has a charming "+getitemname(.@runa)+", if you enchant this item with "+getitemname(.@runalista[.@runaesc])+" that consume and ancient enchantment will be missed.";			else				mes "This spell will cost A "+getitemname(.@runalista[.@runaesc])+".";			next;			if(select("Hmm .. Let me think about it.: Go ahead.") == 1) {				mes "[Armor Craftsman]";				mes "Well, I can not blame him. My cost is not of the lower, but I need to pay for my studies and efforts, right?";				mes "Have a nice day.";				close;			} else {				mes "[Armor Craftsman]";				mes "So, an adventurer willing to increase its power, huh?";				mes "Well, let the enchantment";				pcblockmove getcharid(3),1;				close2;				delitem .@runalista[.@runaesc],1;				unequip EQI_ARMOR;				delitem .@armadura,1;				specialeffect 873;				specialeffect 865;				sleep2 6000;				specialeffect 44;				sleep2 1000;				getitem2 .@armadura,1,1,.@refine,0,.@carta,0,0,.@runalista[.@runaesc];				pcblockmove getcharid(3),0;				end;			}		}	}			OnInit:	setarray .runas[0],26000,26027,26037,26038,26039;	end;}

    Enjoy it!


  12. Let's see if I understood this correctly: You want us to drop the .armaduras array so that any equipped armor can be enchanted, and the only armors you can enchant are the current ones you have equipped, right?

     

    In that case I think I can cut off some of the code for a matter of efficiency. For example if you check your equipped armor, there's no need of checking if it's broken. Just comment so that I make sure that's what you want and I'll start this.


  13. A mí me comentó Judas a través de IRC que fue justo en el cliente de 2012-04-10 cuando se empezó a utilizar System/ItemInfo.lub. De todas formas, por las dudas y dado que el inicio de este sistema es difuso, yo utilizaría aunque fuese el cliente inmediatamente anterior con la guía que está en la Wiki para añadir items custom, que para esos clientes sí parece estar correcta.

     

    ¡Un saludo!


  14. ¡Por cierto! De esto hace unos pocos días, pero debía comentar que aunque me hayan promocionado a Global Moderator, esto no implica que esta comunidad haya quedado huérfana. A pesar de que mi título no me dé expresamente poderes de moderación en este foro (puede leerse en la entrada de la Wiki sobre los cargos en Hercules, aunque está en inglés), he pedido expresamente seguir liderando esta comunidad (que era mi idea inicial), así que no hace falta asustarse.

     

    ¡Un saludo!

×
×
  • Create New...

Important Information

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