Jump to content

Cydh

Developer
  • Posts

    2285
  • Joined

  • Last visited

  • Days Won

    77

Posts posted by Cydh

  1. 2 hours ago, AnnieRuru said:

    *itemlink(<item_id>{,<refine>,<card0>,<card1>,<card2>,<card3>});

    compare with getitem2
    *getitem2(<item id>, <amount>, <identify>, <refine>, <attribute>, <card1>, <card2>, <card3>, <card4>{, <account ID>})

    what happen to the <identify> and <attribute> field ?

     

    EDIT: ->

    Testing ...
    1. if the item is not identify ... I can't even get the shift-click to work ..
    2. if the item is broken, shift-click it will display non-broken item ....

    hmm ....
    I think these guys have thought it out ...

    nvm, disregard this post

    amount and atribut is not needed by ITEML. we never talk about ITEML here, but you can found the info here

    • Love 1
  2. Script command: itemlink to generate <ITEML>


    To simple generate <ITEML> string by using itemlink. <ITEML> is string that auto-parsed by client that support item link feature, when user SHIFT+Click the item or equipment.

    Quote

    *itemlink(<item_id>{,<refine>,<card0>,<card1>,<card2>,<card3>});
    *itemlink2(<item_id>,<refine>,<card0>,<card1>,<card2>,<card3>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>);

    Generate <ITEML> string for an item and can be used for npctalk, message,
    dispbottom, and broadcast commands. The result is clickable-item name just
    like from SHIFT+Click from player's inventory/cart/equipment window. In mes
    command is still usable but the item name is not clickable.

    Examples:

        npctalk "Knife [3] : "+itemlink(1202)+"";
        npctalk "+16 Knife [3] : "+itemlink(1202,16)+"";
        npctalk "+13 BXB Bapho+VR+EA2+EA1 : "+itemlink(18110,13,4147,4407,4833,4832)+"";
        setarray .@opt_ids[0],RDMOPT_VAR_ATKPERCENT,RDMOPT_VAR_ATKPERCENT,RDMOPT_VAR_ATTMPOWER,0,0;
        setarray .@opt_values[0],3,5,20,0,0;
        setarray .@opt_params[0],0,0,0,0,0;
        npctalk "+13 BXB Bapho+VR+EA2+EA1 + 3 Options : "+itemlink2(18110,13,4147,4407,4833,4832,.@opt_ids,.@opt_values,.@opt_params)+"";


    For RandomIDArray, RandomValueArray, and RandomParamArray only works if
    client (& server is complied) with supporter Item Random Options feature is
    PACKETVER >= 20150225. But using itemlink2, all command parameters must be
    specified if PACKETVER is not supported, use dummy arrays to avoid errors!

     

    Credits:

    • These people from OpenKore: lututui, exaxia, and jchcc

     

    • Upvote 3
    • Love 2
    • MVP 2
    • Like 1
  3. The idea was from my old mod "to open other's storage" but somehow it's gone with corrupted git dir. And this mod is about a shared storage system that in simple example somehow like guild storage that players can access 'the same storage' as long as the player has same guild id. So, players that registered to shared storage id, can access the same storage.

    Shared Type

    • None: Specified by your own script
    • Guild: Example 3 guilds have 1 shared storage
    • Account: Example you have 2 accounts and want a storage to easily move the items
    • Characters: Example for married chars & adopted child has shared storage

    Permissions

    Based on my-now-as-rathena's premium-storage, each players maybe have different permission (read-only, put, get) even the storage_id is same. But the permission/access mode can be overwrote by using script command to open the shared storage.

    FluxCP Add-On

    Added FluxCP Add-on to manage the shared storage entries which are stored in SQL.

    Spoiler

    shared-storage-4.thumb.png.b3fca40ba0d0823d7a58db1221ab63fe.png

    shared-storage-3.png.700209ff3e20d590370512e25e128242.png

    Limitation

    Multi-map servers dupe..... shouldn't be happen anymore (need further test xd), I added a flag to mark if the storage is opened in inter-server which in for guild storage, players can access same guild storage in same time.

    • Upvote 2
    • Love 3
  4. only some hints, you can do the rest

    setarray .tickets[0],5,6235,
                    6,6234,
                    7,6233,
                    8,6232;
    
    .@pos = EQI_HEAD_TOP;
    .@ref = getequiprefinerycnt(.@pos);
    
    disable_items();
    //add some var to store equip data for F_IsEquipRefineHack
    
    for (.@i = 0; .@i < getarraysize(.tickets); .@i+=2) {
        if (.@ref == .tickets[.@i] && countitem(.tickets[.@i+1]) > 0) {
            callsub(OnRefine,.@pos,.tickets[.@i+1]);
            break;
        }
    }
    end;
    
    OnRefine:
        // callfunc F_IsEquipRefineHack, ....
        delitem(getarg(1),1);
        successrefitem(getarg(0),1);
    end;
    
×
×
  • Create New...