Jump to content

Haziel

Content Moderator
  • Posts

    639
  • Joined

  • Last visited

  • Days Won

    88

Posts posted by Haziel

  1. 1. I'm not sure, but, as far as I know, the website is only opnened once the link is clicked on a message box.
     

    2. The easiest way to do it is by Labels

    Labels
    ------
    
    Within executable script code, some lines can be labels:
    
    <label name>:
    
    Labels are points of reference in your script, which can be used to route 
    execution with 'goto', 'menu' and 'jump_zero' commands, invoked with 'doevent' 
    and 'donpcevent' commands and are otherwise essential. A label's name may not be 
    longer than 22 characters. (23rd is the ':'.) There is some confusion in the 
    source about whether it's 22, 23 or 24 all over the place, so keeping labels 
    under 22 characters could be wise. It may only contain alphanumeric characters 
    and underscore. In addition to labels you name yourself, there are also some 
    special labels which the script engine will start execution from if a special 
    event happens:
    
    OnClock<hour><minute>:
    OnMinute<minute>:
    OnHour<hour>:
    On<weekday><hour><minute>:
    OnDay<month><day>:
    
    This will execute when the server clock hits the specified date or time. Hours 
    and minutes are given in military time. ('0105' will mean 01:05 AM). Weekdays 
    are Sun,Mon,Tue,Wed,Thu,Fri,Sat. Months are 01 to 12, days are 01 to 31. 
    Remember the zero. 
    
    OnInit:
    OnInterIfInit:
    OnInterIfInitOnce:
    
    OnInit will execute every time the scripts loading is complete, including when 
    they are reloaded with @reloadscript command. OnInterIfInit will execute when 
    the map server connects to a char server, OnInterIfInitOnce will only execute 
    once and will not execute if the map server reconnects to the char server later.
    
    OnAgitStart:
    OnAgitEnd:
    OnAgitInit:
    OnAgitStart2:
    OnAgitEnd2:
    OnAgitInit2:
    
    OnAgitStart will run whenever the server shifts into WoE mode, whether it is 
    done with @agitstart GM command or with 'AgitStart' script command. OnAgitEnd 
    will do likewise for the end of WoE.
    
    OnAgitInit will run when data for all castles and all guilds that hold a castle 
    is received by map-server from the char-server after initial connect.
    
    No RID will be attached while any of the above mentioned labels are triggered, so 
    no character or account-based variables will be accessible, until you attach a 
    RID with 'attachrid' (see below).
    
    The above also applies to, the last three labels, the only difference is that
    these labels are used exclusively for WoE SE, and are called independently.
    
    OnInstanceInit:
    
    This label will be executed when an instance is created and initialized through
    the 'instance_create' command. It will run again if @reloadscript is used while
    an instance is in progress.
    
    OnTouch:
    
    This label will be executed if a trigger area is defined for the NPC object it's 
    in. If it isn't present, the execution will start from the beginning of the NPC 
    code. The RID of the triggering character object will be attached.
    
    OnTouch_:
    
    Similar to OnTouch, but will only run one instance. Another character is
    chosen once the triggering character leaves the area.
    
    OnTouchNPC:
    
    Similar to OnTouch, but will only trigger for monsters. For this case, by using
    'getattachedrid' will returns GID (ID that returned when use 'monster').
    
    OnPCLoginEvent:
    OnPCLogoutEvent:
    OnPCBaseLvUpEvent:
    OnPCJobLvUpEvent:
    
    It's pretty obvious when these four special labels will be invoked.
    
    OnPCDieEvent:
    
    This special label triggers when a player dies. The variable 'killerrid' is
    set to the ID of the killer.
    
    OnPCKillEvent:
    
    This special label triggers when a player kills another player. The variable
    'killedrid' is set to the ID of the player killed.
    
    OnNPCKillEvent:
    
    This special label triggers when a player kills a monster. The variable
    'killedrid' is set to the Class (mob ID) of the monster killed.
    
    OnPCLoadMapEvent:
    
    This special label triggers when a player steps in a map marked with the 
    'loadevent' mapflag and attaches its RID. The fact that this label requires a 
    mapflag for it to work is because, otherwise, it'd be server-wide and trigger
    every time a player would change maps. Imagine the server load with 1,000 players
    (oh the pain...)
    
    OnPCStatCalcEvent:
    
    This special label triggers when a player's stats are recalculated, such as when
    changing stats, equipment, or maps, as well as when logging in, leveling up, and
    mounting a job mount. This can be used to grant additional item bonuses to certain
    player groups, for instance.
    
    OnWhisperGlobal:
    
    This special label triggers when a player whispers the NPC, and will run with the
    player's RID attached. It can accept up to ten parameters, which will be stored
    into separate temporary character string variables @whispervar0$ to @whispervar9$.
    See 'doc/whisper_sys.txt' for further documentation.
    
    Only the special labels which are not associated with any script command are 
    listed here. There are other kinds of labels which may be triggered in a similar 
    manner, but they are described with their associated commands.
    
    On<label name>:
    
    These special labels are used with Mob scripts mostly, and script commands
    that requires you to point/link a command to a mob or another NPC, giving a label
    name to start from. The label name can be any of your liking, but must be
    
    Example:
    
    monster "prontera",123,42,"Poringz0rd",2341,23,"Master::OnThisMobDeath";
    
    amatsu,13,152,4	script	Master	767,{
    	mes "Hi there";
    	close;
    
    OnThisMobDeath:
    	announce "Hey, "+strcharinfo(0)+" just killed a Poringz0rd!",bc_blue|bc_all;
    	end;
    }
    
    Each time you kill one, that announce will appear in blue to everyone.
    
    "Global" labels
    
    There's a catch with labels and doevent. If you call a label (using doevent)
    and called label is in NPC that has trigger area, that label must end with
    "Global" to work globally (i.e. if RID is outside of the trigger area, which
    usually happens since otherwise there would be no point calling the label with
    doevent, because OnTouch would do the job). For further reference look for
    npc_event in npc.c.
    

    3. You may use the Cutin command to get that kind of result:

    *cutin "<filename>",<position>;
    
    This command will display a picture, usually an NPC illustration, also called
    cutin, for the currently attached client. The position parameter determines the
    placement of the illustration and takes following values:
    
        0 - bottom left corner 
        1 - bottom middle 
        2 - bottom right corner 
        3 - middle of screen in a movable window with an empty title bar 
        4 - middle of screen without the window header, but still movable 
    
    The picture is read from data\texture\유저인터페이스\illust, from both the GRF archive
    and data folder, and is required to be a bitmap. The file extension .bmp can be
    omitted. Magenta color (#ff00ff) is considered transparent. There is no limit
    placed on the size of the illustrations by the client, although loading of large
    pictures (about 700x700 and larger) causes the client to freeze shortly (lag).
    Typically the size is about 320x480. New illustrations can be added by just
    putting the new file into the location above.
    
    The client is able to display only one cutin at the same time and each new one
    will cause the old one to disappear. To delete the currently displayed
    illustration without displaying a new one, an empty file name and position 255
    must be used.
    
        // Displays the Comodo Kafra illustration in lower right corner.
        cutin "kafra_07",2;
    
        // Typical way to end a script, which displayed an illustration during a
        // dialog with a player.
        mes "See you.";
        close2;
        cutin "",255;
        end;
    
    • Upvote 1
  2. Lub decompilation is not made by a software, It's manual, made by the ones who have skills to do so.

    For your luck, you can get the Lua files according to your client date here.

    I don't want to be rude, but I see a lot of your topics which could be easily solved with a bit of search in the forums, try to search for your answer before opening a topic.
    I think you want to learn, and just ask for what you want in a million threads will teach you nothing.
     

    Good luck.

  3. With in-built tools, it's quite hardto do this, specifically the graphic part, which is client-side, and, if you don't know yet (consedering your other posts) is something really hard to modify freely.
    It's a source modification, far more complex than just a Script.

    You will need to look at the recent implemented Official VIP system and see how it expand the slots, then, store the actual unlocked slots in some kind of variable or SQL table.
    It's a long way to go and would require some time to be done.

  4. Navigation System is a client-side feature, and, as far as I know, only some strange src modification would allow you to integrate the act of click on map (or npc, or mob) to the 'unitwalk' script command.
    By the way, you can make a player walk using 'unitwalk/unitwalkto' commands, from a function or NPC.

    *unitwalk <GID>,<x>,<y>{,"<event label>"};
    *unitwalkto <GID>,<Target GID>{,"<event label>"};
    
    This command will tell a <GID> to walk to a position, defined either as a set of
    coordinates or another object. The command returns a 1 for success and 0 upon failure.
    
    If coordinates are passed, the <GID> will walk to the given x,y coordinates on the
    unit's current map. While there is no way to move across an entire map with 1 command
    use, this could be used in a loop to move long distances.
    
    If an object ID is passed, the initial <GID> will walk to the <Target GID> (similar to
    walking to attack). This is based on the distance from <GID> to <Target ID>. This command
    uses a hard walk check, so it will calculate a walk path with obstacles. Sending a bad
    target ID will result in an error.
    
    An optional Event Label can be passed as well which will execute when the <GID> has reached
    the given coordinates or <Target GID>.
    
    Examples:
    
    // Makes player walk to the coordinates (150,150).
    	unitwalk getcharid(3),150,150;
    
    // Performs a conditional check with the command and reports success or failure to the player.
    	if(unitwalk(getcharid(3),150,150))
    		dispbottom "Walking you there...";
    	else
    		dispbottom "That's too far away, man.";
    
    // Makes player walk to another character named "WalkToMe".
    	unitwalkto getcharid(3),getcharid(3,"WalkToMe");
    

    It may be possible to create a custom 'On' label which would cast a script after navigation system is used, but, again, it's a Source Modification.

  5. It's simple, if you're used to cardprefixnametable.txt (located into data.grf, client-side).
    Get the file and, at it's end, add the lines:

    4700#[STR + 01]#
    4701#[STR + 02]#
    4702#[STR + 03]#
    4703#[STR + 04]#
    4704#[STR + 05]#
    4705#[STR + 06]#
    4706#[STR + 07]#
    4707#[STR + 08]#
    4708#[STR + 09]#
    4709#[STR + 10]#
    4710#[INT + 01]#
    4711#[INT + 02]#
    4712#[INT + 03]#
    4713#[INT + 04]#
    4714#[INT + 05]#
    4715#[INT + 06]#
    4716#[INT + 07]#
    4717#[INT + 08]#
    4718#[INT + 09]#
    4719#[INT + 10]#
    4720#[DEX + 01]#
    4721#[DEX + 02]#
    4722#[DEX + 03]#
    4723#[DEX + 04]#
    4724#[DEX + 05]#
    4725#[DEX + 06]#
    4726#[DEX + 07]#
    4727#[DEX + 08]#
    4728#[DEX + 09]#
    4729#[DEX + 10]#
    4730#[AGI + 01]#
    4731#[AGI + 02]#
    4732#[AGI + 03]#
    4733#[AGI + 04]#
    4734#[AGI + 05]#
    4735#[AGI + 06]#
    4736#[AGI + 07]#
    4737#[AGI + 08]#
    4738#[AGI + 09]#
    4739#[AGI + 10]#
    4740#[VIT + 01]#
    4741#[VIT + 02]#
    4742#[VIT + 03]#
    4743#[VIT + 04]#
    4744#[VIT + 05]#
    4745#[VIT + 06]#
    4746#[VIT + 07]#
    4747#[VIT + 08]#
    4748#[VIT + 09]#
    4749#[VIT + 10]#
    4750#[LUK + 01]#
    4751#[LUK + 02]#
    4752#[LUK + 03]#
    4753#[LUK + 04]#
    4754#[LUK + 05]#
    4755#[LUK + 06]#
    4756#[LUK + 07]#
    4757#[LUK + 08]#
    4758#[LUK + 09]#
    4759#[LUK + 10]#
    

    The names may turn Green because usually, Runes doesn't cast Prefix names.
    And, if I recall correctly, it needs to be in langtype 0 or 1.

  6. I don't want to bother, but, if anyone can...
    Can anyone, please, direct me a way to get the Test Server Client?

    Or, at least the update files?
    I was about to reboot my Sprite and Graphics topic and this material would be nice to create some new customs.

    Nevermind, solved it.

  7. Is possible a Diff for setting the number of Hairstyles and Hair Palettes on Character Creation?

    Let me quote and bump this request.

    Anyone have any clue about how to change/cap this?

     

    (No, it's not a setting about available Hairstyles/Colors in the game, but in Character Creation)

  8. Well, actually this file is outdated and you was not able to find anymore because I decided to not redistribute them anymore, so, as soon as possible, I, please, require to the link to be removed.

    People who still uses it can keep it, but I don't want new Download links, anything else, drop me a PM.

    • Upvote 1
  9. "If it ain't broke, don't fix it."

    Agree.

    Forgive me is this sounds off topic but as a "product" rathena wasnt suppose to supply the "consumers" needs?

    And true. Seems this point is somewhat omitted... what a mistake.

    This recalls me those times when we had "stable and trunk" branches in eA. IMO separating Pre-RE on its own branch, is, a better -suitable- way of saying that you are gonna kill it.

    Guys these* are not the best times to do -radical changes- like the one you are discussing here (About Pre-RE. I'm not refering about GIT move). Remember that there is another emu option now that is preserving Pre-RE. The only difference for now, between each projects is: a strong community backing here, that you surely will put on the fence with this move.

    So I will say it simple. You want to take the risk and loose your "consumers", for a better "way of coding"?, then, sure do it =P. Not a good idea for me.

    That's what I'm talking about.

×
×
  • Create New...