Jump to content

Mumbles

Retired Staff
  • Content Count

    618
  • Joined

  • Last visited

  • Days Won

    15

Posts posted by Mumbles


  1.  

    I was able to find a global function that Euphy wrote titled F_Navi in their trunk.

     

     

    Paste this in a file somewhere, load it up, and your scripts that use this function should run without error:

    function    script    F_Navi    {    // Uncomment to disable the navigation system.    //set .@disabled,1;    // This function takes 0 ~ 3 parameters.    switch(getargcount()) {    case 0:    // Check if system is disabled.        return .@disabled;    case 1:    // Display information message, if enabled.        if (!.@disabled) {            next;            mes getarg(0);            mes "When you click on the ^B9062F[location name]^000000, you'll receive the most advanced ^B9062FNavigation^000000 services!";        }        return;    default:    // Display navigation link, if enabled; else set text color, if available.        if (!.@disabled)            return "<NAVI>[" + getarg(0) + "]<INFO>" + getarg(1) + ",0,000,0</INFO></NAVI>";        else if (getargcount() == 3)            return getarg(2)+getarg(0)+"^000000";        else            return getarg(0);    }}

     

     

     

    Note:

    Untested.


  2. O mesmo já se encontra assim, e mesmo assim não funciona.

     

    What about your client_hash settings in conf/login_server.conf?

     

     

    // Client MD5 hash check// If turned on, the login server will check if the client's hash matches// the value below, and will not connect tampered clients.// Note: see docmd5_hashcheck.txt for more details.client_hash_check: off// Client MD5 hashes// A player can login with a client hash at or below the account group_id.// Format: group_id, hashclient_hash: 0, 113e195e6c051bb1cfb12a644bb084c5client_hash: 99, cb1ea78023d337c38e8ba5124e2338ae

     

    If Harmony is no longer a part of your emulator, then the only thing that comes to mind is a MD5 hash mismatch with the emulator's default settings.

     

    Tradução em Português (via Google):

     

     

    E sobre as configurações client_hash em conf/login_server.conf?

     

     

    // Client MD5 hash check// If turned on, the login server will check if the client's hash matches// the value below, and will not connect tampered clients.// Note: see docmd5_hashcheck.txt for more details.client_hash_check: off// Client MD5 hashes// A player can login with a client hash at or below the account group_id.// Format: group_id, hashclient_hash: 0, 113e195e6c051bb1cfb12a644bb084c5client_hash: 99, cb1ea78023d337c38e8ba5124e2338ae

     

    Se a Harmony não é mais uma parte do seu emulador, então a única coisa que vem à mente é uma incompatibilidade de hash MD5 com as configurações padrão do emulador.


  3. Have you tested it? That method hasn't been working for me. It works for custom items we have in 2000-9999 id range, however non of the ids above 10k it seems to work with.

     

    If you've tested item ids in that range and it's working, then maybe I'm doing something wrong but it's only those upper ids that it's not working for.

     

    When I wrote my reply, I did not test it first. I went ahead and tested on a 2012-04-10 client and was unable to reproduce the issue.

     

     

    Tested on 2012-04-10 with custom gear Hercules Hat [1] (ID: 10001):

     

    rhjyb9.jpg


  4. You're looking in the wrong place. Server-side slots don't appear client-side if the client files have not been updated to display the slts. If the slot exists in the database, you'll have to edit itemslottcounttable.txt in your client's data folder or custom GRF.

     

    The format for this is:

    ItemID#Slots#

     

    If you wanted item IDs 10000-10012 to show their slots, you would add them to the file like this:

    10000#4#10001#3#10002#1#10003#2#10004#3#10005#4#10006#3#10007#2#10008#1#10009#2#10010#3#10011#4#10012#3#

  5. The server had Harmony protection, and likely uses their client checksum. This is an example of their checksum settings from conf/harmony_custom.conf:

     

     

    ////////////////////////////////////////////// CLIENT CHECKSUM /////////////////////////////////////////////// Harmony enforces the usage of unmodified client binaries.// However, you have to add your client checksum here to// allow only permitted exes. The checksum is a MD5 hash of// the exe.///// To get the checksum of your exe you can use this tool://   https://harmonize.it/customer/md5///// To reload this configuration while the server is running use @reloadharmony.////// GM level >= 0 requires this hashclient_checksum: 0, cd465a9c413648131b3cabe1dfd9e45d// GM level >= 20 requires this hash (level 0 hash works here, too)client_checksum: 20, cd465a9c413648131b3cabe1dfd9e45d// GM level 99 has no checksum limitationsclient_checksum: 99, off

     

    To circumvent this, you can either turn Harmony's checksum off:

     

    // GM level >= 0 requires this hashclient_checksum: 0, off// GM level >= 20 requires this hash (level 0 hash works here, too)client_checksum: 20, off// GM level 99 has no checksum limitationsclient_checksum: 99, off

     

    Alternatively, you can upload your current client to Harmony's MD5 calculator and use the MD5 hash given to you there.

     

    Disclaimer:

    Hercules does not directly support Harmony; the file referenced in this post is based purely on personal experience. Although the MD5 calculator is available by direct link, Harmony's files and services are solely intended for their customers.

     

     

    Tradução em Português (via Google):

     

     

    O servidor tinha proteção Harmony, e provavelmente usa sua soma cliente. Este é um exemplo de suas configurações de checksum de conf/harmony_custom.conf:

     

     

    ////////////////////////////////////////////// CLIENT CHECKSUM /////////////////////////////////////////////// Harmony enforces the usage of unmodified client binaries.// However, you have to add your client checksum here to// allow only permitted exes. The checksum is a MD5 hash of// the exe.///// To get the checksum of your exe you can use this tool://   https://harmonize.it/customer/md5///// To reload this configuration while the server is running use @reloadharmony.////// GM level >= 0 requires this hashclient_checksum: 0, cd465a9c413648131b3cabe1dfd9e45d// GM level >= 20 requires this hash (level 0 hash works here, too)client_checksum: 20, cd465a9c413648131b3cabe1dfd9e45d// GM level 99 has no checksum limitationsclient_checksum: 99, off

     

    Para contornar isso, você pode transformar verificação da Harmony off:

     

    // GM level >= 0 requires this hashclient_checksum: 0, off// GM level >= 20 requires this hash (level 0 hash works here, too)client_checksum: 20, off// GM level 99 has no checksum limitationsclient_checksum: 99, off

     

    Alternativamente, você pode carregar o seu cliente atual para calculadora MD5 da Harmony e usar o hash MD5 dado a você lá.

    Disclaimer:
    Hercules não suporta diretamente a Harmony, o arquivo referenciado neste post é baseado puramente na experiência pessoal. Embora a calculadora MD5 está disponível pelo link direto, arquivos e serviços de Harmony são exclusivamente destinados aos seus clientes.

     

     


  6. If it's of any interest to you, I was able to accomplish this without any source modifications.
     
    I created a script function and named it groupid2name. For the sake of keeping things relevant, I used group names and IDs in correspondence to those in conf/groups.conf.
     

    function	script	groupid2name	{	switch(getarg(0))	{		case 0:			return "Player";					case 1:			return "Super Player";					case 2:			return "Support";					case 3:			return "Script Manager";					case 4:			return "Event Manager";					case 10:			return "Law Enforcement";					case 99:			return "Admin";                default:                        return "Undefined Group";	}}

     
    This function can now be called upon from any script with groupid2name(<parameter>). Whisper anything to npc:test_gid2name to test this script.
     

    -    script    test_gid2name    -1,{    OnWhisperGlobal:        message strcharinfo(0), "Your group name is: "+ groupid2name(getgroupid());        end;}

     
    The only limitation to this is that you will have to manually adjust the group names yourself. Despite that, the strength in this is that it eliminates the need to make source and conf modifications; in a way, it allows for dynamic group name changes without needing to directly modify conf/groups.conf. Updating is a snap too, as it's simply a matter of overwriting the old function.
     
    Edits:
    Added extra line-spacing because I'm tedious like that. c:

    Added default label in the switch, in the event someone has an undefined group ID.


  7. if(!isequipped(4172,4257,4230,4272)) bonus3 bAutoSpell,"RG_INTIMIDATE",1,20;

    The expression reads: If the set (4172, 4257, 4230, and 4272) is NOT equipped...

     

    The ! operator (a "logical not") at the very beginning of the expression essentially reverses the check and does exactly what you said it does; the script runs when the set of items is not equipped. If you would like for your that bonus to be applied when the set is equipped, simply remove the ! from the beginning of the expression.


  8. oh thank you for the reply, but is it possible to incorporate that syntax inside the item script or maybe will use a function?

     

    Yes, it is possible; give it a try. If you need a more elaborate script to run, you might wanna use a callfunc after the expression is found true.


  9. Event: Hercules Invasion

    Description:
    A completely revamped and optimized variation of the widely popular Poring Invasion event. Configuration settings are dynamic and easily modifiable. Customizable parameters include normal monsters, "prized" monsters, each respective monster amounts, monster tiers, invasion map,NPC name, and server name. NPC can be triggered by staff using the command @invasion.

    Download:

    https://github.com/datmumbles/Scripts/raw/master/event/invasion.txt


  10. Thanks. I will try this out. :)

     

    Sure thing; be sure to adjust the success rates to your liking - the original request asked for particularly low rates. The .success array takes values in comparison to fractions (ex. 3, 4 is the same as 3 / 4 or 75%). Thanks for trying it out!


  11. If you want a second list, just make a new array for your list and name it .monster2 or something more clever. You'll probably want to make a .min2 and .max2, then copy the for loop with the new variables.

     

    If you wanted a zeny reward for all monsters in your database, just add this code without the for loop or if statement under the OnNPCKillEvent label:

                   .@mobzeny = rand(.min, .max);                Zeny += .@mobzeny;                                message strcharinfo(0), "You received "+ .@mobzeny +" for killing "+ getmonsterinfo(.monster[.@i], 0) +"!";

  12. is this .min = 1;    // Minimum

       .max = 100;    // Maximum??

    is that a percent or 1 to 100 z free ?

     

    That sets the range of a random number from 1 to 100 to be rewarded in zeny.


  13. In all truth, I know very little about how libconfig works, but it might be reading off as a double negative?

     

    For example, if Law Enforcement inherits a permission group that can't trade, GM Chief inherits that can_trade: false setting. Here, you set GM Chief and Co-Admin to also have can_trade: false while inheriting permissions from other groups that already can't trade. Since they inherit a lower group's permissions, why would you need to define it again?

     

    tl;dr:

    Try removing any duplicate can_trade: false from groups that inherit or have that same permission setting.


  14. Fill the array .monster with monster IDs that you would like to be affected by the zeny bonus; you can set the zeny range with .min and .max. If you load this script on a live server, whisper anything to npc:mobzeny to initialize the settings; you will have to do this every time you manually load the script into your server.

     

     

    -    script    mobzeny    -1,{    OnNPCKillEvent:        // Get zeny if monster killed is listed        for (.@i = 0; .@i < getarraysize(.monster); .@i++)        {            if(killedrid == .monster[.@i])            {                .@mobzeny = rand(.min, .max);                Zeny += .@mobzeny;                                message strcharinfo(0), "You received "+ .@mobzeny +" for killing "+ getmonsterinfo(.monster[.@i], 0) +"!";            }        }                end;        OnWhisperGlobal:        // Whisper anything to initialize settings        message strcharinfo(0), strnpcinfo(1) +" : 'OnInit' label has been intialized.";        OnInit:        // List of monster IDs        setarray .monster[0], 1001, 1002 , 1004, 1005;                // Set zeny range        .min = 1;        // Minimum        .max = 100;        // Maximum                end;        }
×
×
  • Create New...

Important Information

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