Jump to content

Mumbles

Retired Staff
  • Content Count

    618
  • Joined

  • Last visited

  • Days Won

    15

Posts posted by Mumbles


  1. I personally love Hercules' HPM and libconfig-style format for the item databases. The mob database is a work-in-progress for a similar format, so I'm looking forward to that too. I prefer it over rAthena particularly because of my ability to stay up-to-date with the latest revisions by syncing with the Git repo - and most source changes I need can be hooked with HPM. Additionally, Hercules is less memory-intensive; you can run it on a Raspberry Pi if you really wanted to. In comparison, a clean Hercules uses up about 35-75 MB RAM, while rAthena uses 350+ MB RAM.

     

    These are just a few things that I really like about Hercules, but I suppose it's just a matter of preference, I guess. We don't have as much official content (to my knowledge), but the content we do have is accurate and up-to-date.


  2. If you know what you're doing™, check out Ubiquity Hosting. I've been with them for the past month now, and they've got great customer service, good deals, and (so far) 100% uptime; you get what you pay for. If it seems a bit out of your budget, BuyVM is a preferable alternative. I wouldn't recommend any of those RO-VPS deals; most of them are unreliable, like the one that disappeared without a word to its customers. You're much better off choosing an established host over some small start-up.


  3. Will you be able to "follow" or add someone as a contact? Presumably so, being a social network and all, will you be able to see what server(s) your contacts play on? This could actually be a pretty cool idea, but I am wary of the security of a site that stores game account information.


  4. Oh thanks! is there a way to use @main message? Like

     

    @main hi everyone, how are ya doing?!

     

    (:

     

     

    Unfortunately, I do not know of a way to manipulate channel chat or PM chat (as the channel is PM'd in order to speak in it).


  5.  

    -	script	at_main	-1,{	OnInit:		bindatcmd "main", strnpcinfo(3) +"::OnCommand", 0, 2;		end;					OnCommand:		if (.@atcmd_parameters$[0] == "on") {			if (!@main) {				atcommand "@join #main";				message strcharinfo(0), "You are now in #main chat.";				@main = 1;			} else {				message strcharinfo(0), "You are already in #main chat.";			}		} else if (.@atcmd_parameters$[0] == "off") {			if (@main) {				atcommand "@channel leave #main";				message strcharinfo(0), "You are no longer in #main chat.";				@main = 0;			} else {				message strcharinfo(0), "You are not in #main chat.";			}		} else {			message strcharinfo(0), "Invalid parameters.";			message strcharinfo(0), .@atcmd_command$ +" failed.";		}				end;}

  6. If you just want a permanent option in the command @main (from my script), replace all instances of the variable @main with main. Did that make sense? ;o

     


     

    I thought you were aiming to inject the command @main into your existing script, which could be done by modifying your settings a little (I think?):

     

    OnInit:	setarray .atname$, "- @autoloot", "- @noask", "- @noks", "- @showexp", "- @main";	setarray .atcommand$, "autoloot", "noask ", "noks", "showexp", "main";	.total = 5;	end;

     

    If that's the case, then disregard the first part of this post.


  7. The way your script is written, there is no proper way to seamlessly inject those specific commands into your script. You'll have to use a less "dynamic" way of enabling/disabling commands to include a toggle in the same script, or create a custom toggle with "on/off" parameters and use it in your script.

     

    With this example, you can @main on and @main off (and include the new command in your script!):

     

    -	script	at_main	-1,{	OnInit:		bindatcmd "main", strnpcinfo(3) +"::OnCommand", 0, 2;		end;					OnCommand:		if (.@atcmd_parameters$[0] == "on") {			if (!@main) {				atcommand "@join #main";				message strcharinfo(0), "You are now in #main chat.";				@main = 1;			} else {				message strcharinfo(0), "You are already in #main chat.";			}		} else if (.@atcmd_parameters$[0] == "off") {			if (@main) {				atcommand "@channel leave #main";				message strcharinfo(0), "You are no longer in #main chat.";				@main = 0;			} else {				message strcharinfo(0), "You are not in #main chat.";			}		} else {			message strcharinfo(0), "Invalid parameters.";			message strcharinfo(0), .@atcmd_command$ +" failed.";		}				end;}

  8. Just an additional note for users who are using off-loaded MySQL databases:

     

    Make sure the account you're logging into the MySQL database with has permission to connect to it remotely. For example, granting permission to 'user'@'localhost' does not immediately grant permission to 'user'@'123.45.67.89'. This can be appropriated by granting permission to 'user'@'%' or 'user'@'<static remote address>'.


  9. I hope you realise we aren't bothered by any affiliation with (or the mention of) *Athena or other emulators. Suggestions are welcome, and I personally appreciate this one; something I've always looked forward to seeing was an eventual merge or centralisation of item data into the item_db.conf file.

     

    +1, all the way. Thanks for bringing it to our attention, Cydh. :^)


  10. not possible to check on run time without src edit, btw why not just don't make GMs unable to edit those?

     

    Actually, it is possible to check on run; you just have to get creative. d:

     

     

    -	script	modstats	-1,{		OnInit:		.at_lvl = 40;		// Atcommand level		.ch_lvl = 80;		// Charcommand level		.max_param = 99;	// Max parameter allowed				// Command names		setarray .command$[0], "str", "agi", "vit", "dex", "int", "luk";				// Stats		setarray .stats[0], bStr, bAgi, bVit, bDex, bInt, bLuk;					// Bind commands		for (.@i = 0; .@i < getarraysize(.command$); .@i++) {			bindatcmd .command$[.@i], strnpcinfo(3) +"::OnCommand", .at_lvl, .ch_lvl;		}				end;					// Syntax: checkparam(<param>, <stat name>)	function checkparam {		// Loop through all parameters		for (.@i = 0; .@i < getarraysize(.command$); .@i++) {			// Check if max parameter has been reached			if (getarg(1) == .command$[.@i] && getarg(0) - readparam(.stats[.@i]) <= .max_param) {				return true;			}		}				return false;	}			OnCommand:		// Save invoking GM name		.@gm_name$ = strcharinfo(0);				// Charcommand issued		if (.@atcmd_numparameters == 2 && checkparam(atoi(.atcmd_parameters$[1]), replacestr(.@atcmd_command$, "@", ""))) {			attachrid getcharid(3, .atcmd_parameters$[0]);			atcommand .@atcmd_command$ +" "+ atoi(.atcmd_parameters$[1]);					// Atcommand issued		} else if (.@atcmd_numparameters == 1 && atoi(.atcmd_parameters$[0]) <= .max_param) {			atcommand .@atcmd_command$ +" "+ atoi(.atcmd_parameters$[0]);					// Invalid parameters		} else {			message .@gm_name$, "Invalid parameters (syntax: "+ .@atcmd_command$ +" <0 - "+ .max_param +">";			message .@gm_name$, .@atcmd_command$ +" failed.";		}				end;} 

     

     

     

    Although you should probably disable the charcommand privilege if it's an issue, honestly.

     

     

    Disclaimer: Untested.


  11.  

     

     

     

    Revised.

     

     

    -    script    verifystats    -1,{    OnPCLoginEvent:        // Check and verify all stats        for (.@i = bStr; .@i <= bLuk; .@i++)        {            // Add and count stat points            .@StatCount += readparam(.@i);                        // Count max stat parameters            if (readparam(.@i) == .MaxStat)                .@MaxStatCount++;                        // Verify stats            if (readparam(.@i) > .MaxStat || .@MaxStatCount >= .ParamCount && .@StatCount > .MaxCount)            {                // Reset status points                ResetStatus;                                // Reset skill points (if enabled)                if (.SkillReset)                    ResetSkill;                                    // Display error message                message strcharinfo(0), "Verification System : Your stats have been reset.";            }        }            end;            OnInit:        // Configuration        .MaxStat = 99;        // Max stat parameter        .ParamCount = 2;    // Max stat parameter count        .MaxCount = 210;    // Max stat count (ex: 99 + 99 + 9 + 1 + 1 + 1)        .SkillReset = 0;    // Reset skills? (0 = off, 1 = on)            end;    }

    how can i set only one notification only?

    image.jpg

     

     

     

    Here's a revised version (again) to fix the multiple messages:

    -    script    verifystats    -1,{    OnPCLoginEvent:        // Check and verify all stats        for (.@i = bStr; .@i <= bLuk; .@i++) {            // Add and count stat points            .@StatCount += readparam(.@i);                        // Count max stat parameters            if (readparam(.@i) == .MaxStat) {                .@MaxStatCount++;			}                        // Verify stats            if (readparam(.@i) > .MaxStat || .@MaxStatCount >= .ParamCount && .@StatCount > .MaxCount) {                // Reset status points                ResetStatus;                                // Reset skill points (if enabled)                if (.SkillReset) {                    ResetSkill;										// Display error message					message strcharinfo(0), "Verification System : Your stats have been reset.";				}            }        }            end;            OnInit:        // Configuration        .MaxStat = 99;        // Max stat parameter        .ParamCount = 2;    // Max stat parameter count        .MaxCount = 210;    // Max stat count (ex: 99 + 99 + 9 + 1 + 1 + 1)        .SkillReset = 0;    // Reset skills? (0 = off, 1 = on)            end;    }

    Disclaimer: Untested.

     

     

     

     

     

     

    Revised.

     

     

    -    script    verifystats    -1,{    OnPCLoginEvent:        // Check and verify all stats        for (.@i = bStr; .@i <= bLuk; .@i++)        {            // Add and count stat points            .@StatCount += readparam(.@i);                        // Count max stat parameters            if (readparam(.@i) == .MaxStat)                .@MaxStatCount++;                        // Verify stats            if (readparam(.@i) > .MaxStat || .@MaxStatCount >= .ParamCount && .@StatCount > .MaxCount)            {                // Reset status points                ResetStatus;                                // Reset skill points (if enabled)                if (.SkillReset)                    ResetSkill;                                    // Display error message                message strcharinfo(0), "Verification System : Your stats have been reset.";            }        }            end;            OnInit:        // Configuration        .MaxStat = 99;        // Max stat parameter        .ParamCount = 2;    // Max stat parameter count        .MaxCount = 210;    // Max stat count (ex: 99 + 99 + 9 + 1 + 1 + 1)        .SkillReset = 0;    // Reset skills? (0 = off, 1 = on)            end;    }

    i want to use it but can you add/change it alittle bit like , it will only detect when character is abnormal stats not every time they reconnect and if they where detected they will get DC within 3 secs.. and GM accounts are not affected on this script..

     

    Thanks

     

     

     

    Add this code at line 4 for the GM bypass:

    if (getgmlevel()) {	end;}

     

    Add this code at line 28 for the timer and kick:

    for (.@i = 0; .@i < 3; .@i++) {	message strcharinfo(0), "You will be disconnected in "+ (3 - .@i) +" seconds.";	sleep2 1000;}atcommand "@kick "+ strcharinfo(0);

  12. Here's the Script...

     

     

    can we change monsters here and replace sm other monsters instead of porings?

     

    Yeah! Take a look at this on the end of the script:

     

    		// Normal mob IDs		setarray .normal[0],	1002,	1031,	1113,	1242,	1613,	1784,								1388,	1582,	1120,	1062,	1090,	1096;				// Normal mob amounts		setarray .n_mobs[0],	 300,	 300,	 300,	 300,	 300,	 300,								  10,	  40,	  40,	 300,	  40,	  40;				// Prized mob IDs		setarray .prized[0],	1002,	1031,	1113,	1242,	1613,	1784,								1582,	1120,	1062,	1096;							// Prized mob amounts					setarray .p_mobs[0],	   3,	   2,	   3,	   3,	   3,	   3,								   1,	   1,	   3,	   1;
     

    You can add or remove monsters IDs and amount of monsters (priced or not) that will be summoned by the event.

     

    @jaBote & :

    Thanks for the responses guys! The link has been updated in the first post. c:


  13.  

    why use OnPCLoginEvent / OnPCLogoutEvent ?

    update item_db_re setscript = 'if ( readparam(bStr) >= 90 ) { bonus bAllStats,1; bonus bMaxHPrate,1; bonus bMaxSPrate,1; bonus bStr, getrefine(); }',equip_script = 'if ( readparam(bStr) >= 90 ) { ModExp = ModDrop = 110; }',unequip_script = 'if ( readparam(bStr) >= 90 ) { ModExp = ModDrop = 100; }'where id = 1201;

     

    Interesting shorthand. o.o

     

    I added the login/logout events because Ind said it's an account-wide modifications, even though the parameter appears to be character-based; the modification would (in theory) linger for other characters on the account, even if the item is not equipped.

     

     

     

     

    [21:01:41] <Luciano> its not a script command its a param like set zeny
    [21:01:46] <Luciano> set BaseExp,value;
    [21:02:11] <Luciano> ops
    [21:02:12] <Luciano> ModExp 125 1
    [21:02:13] <Luciano> ModDrop 126 1
    [21:02:13] <Luciano> ModDeath 127 1
    [21:02:20] <Luciano> ModExp, ModDrop
    [21:02:24] <Luciano> e.g.
    [21:02:27] <Luciano> set ModExp,150;
    [21:02:30] <Mumbles> interesting
    [21:02:34] <Luciano> account gets +50% erxp
    [21:02:40] <Mumbles> account or char?
    [21:03:16] <Luciano> account
    [21:03:24] <Luciano> there isnt a built in char exp mod

     

     

×
×
  • Create New...

Important Information

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