Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 11/07/23 in all areas

  1. Since Auction Feature has been removed long time ago, I re-created another way to bring back Auction with an Alternative Method. Using Vending System albeit with some limitation. Known Limitation: - You can't purchase the item that auctioned on vending if you has not engough zeny (Client Limitation), to work around this create item to be used as placement of currency equivalent to the real currency, in example if you want to use Zeny as currency of the payment method, by default maximum zeny is capped to by defined in MAX_ZENY (usually 2 Billion), but how if the auctioner want to by pass that limit? this is where curency placement come to play. - Only one item should be auctioned at once, Auctioning multiple item can be done but because UI / Display limitation info about auctioned item can't be verbose enough to be known / understood at glance if each item has different currency.
    1 point
  2. Hi. If you don't want to use the items, change the function to a regular NPC. Example: function script SL_Scroll { To: prontera,164,200,4 script Soul Scroll 112,{ For the zeny change: mes "[Soul Scroll]"; mes "You need 3.000z to continue."; next; if (Zeny < 3000) { mes "[Soul Scroll]"; mes "You don't have enough zeny."; close; } Zeny -= 3000;
    1 point
  3. Hi, In the following line there's a missing .(dot) in the variable name: .@menulist[@j] = .@idd; To: .@menulist[.@j] = .@idd; In this part you wrote the same select command line twice: for (.@i = 0; .@i < getarraysize(.@menulist); ++.@i) { .@menu$ = .@menu$ + getitemname(.@menulist[.@i]); .@menu$ = .@menu$ + ":"; .@part = .@menulist[select(.@menu$)]; } .@part = .@menulist[select(.@menu$)]; Remove the first one, and add -1 in the second. Like this: for (.@i = 0; .@i < getarraysize(.@menulist); ++.@i) { .@menu$ = .@menu$ + getitemname(.@menulist[.@i]); .@menu$ = .@menu$ + ":"; } .@part = .@menulist[select(.@menu$) - 1];
    1 point
  4. No problem, that's an easy one to fix, though I'll also explain what's happening. In rathena, a block_list, or bl, represents an entity in the world, like a player, a pet, or an enemy. Since this type of variable can represent many different types of entities, the information available about them is very general. You can determine what map they are on and what their position is, but you can't, say, check their equipment because many types of entities don't have equipment. As such, something that is frequently done is to check the type of entity, then perform something called a "cast" to convert it to a more specific variable type so we can get more information out of it. When you see session_data, or sd, that specifically represents a player, so it's a specific type of bl. The code "if (sd)" basically checks to see if the entity in question is a player, which is relevant to this logic because we only want players to get the new pathfinding logic. However, to run this statement we first have to declare sd. In the version of rathena I have, this was declared at the top of the method, but they moved it further down in the method in the newest version, and it's now below the if statement where we were looking for it, which causes that error. This is no problem though, we can easily move it back to the top without impacting anything. First, find and cut this line from later in unit_walktoxy: TBL_PC *sd = BL_CAST(BL_PC, bl); Then paste it under this line: unit_data* ud = unit_bl2ud(bl); It should now work, but we might also want to make one more tiny change just for consistency with their code. Where we have this: if (sd && !(flag & 1)) { Let's instead make it this: if (sd != nullptr && !(flag & 1)) { I'm fairly certain this makes no difference, it's probably just a stylistic choice, but we might as well keep the codebase clean.
    1 point
  5. - script Freeitem FAKE_NPC,{ OnInit: .min_lvl = 70; .required_map$ = "izlude"; .item_id = 501; .amount = 1; .item_name = getitemname(.item_id); end; OnClock0000: addrid(0); getmapxy(.@current_map$, .@x, .@y); if(BaseLevel < .min_lvl || .@current_map$ != .required_map$) end; getitem(.item_id, .amount); message(strcharinfo(0), "ท่านได้ของรางวัลเป็น " + .@item_name$ + "."); }
    1 point
  6. Update on this: item will be separated into it own item category type only listed item type can be auctioned fixed overflow in vending unique id the current one almost follow the old auction system completely with limitation of vending item entry is only MAX_VENDING (default 12) if the vending is full, the next one will be in queue, if any item in vending expired or has been buyout the next item will enter vending list. more fine details has been added ... Settings // Item minimum sell price .auction_minimumprice = 1; // Item maximum sell price .auction_maximumprice = 500000000; // Item minimum duration .auction_minhour = 1; // Auctioned Item maximum duration .auction_maxhour = 12; // Fee per hour. Default is 12000 .auction_feeperhour = 12000; // Item with bound can be auctioned? // Default is false .auction_item_bound_allow = false; // Currency with bound can be used for auction? // Default is false .auction_currency_bound_allow = false; /* * AddCurrencyExchange(<item id>,<value>,<variable>,<variable display name>,<variable limit>); */ function AddCurrencyExchange; AddCurrencyExchange(673, 1000000, "Zeny", "Zeny", MAX_ZENY); AddCurrencyExchange(675, 10000000, "Zeny", "Zeny", MAX_ZENY); AddCurrencyExchange(671, 100000000, "Zeny", "Zeny", MAX_ZENY); AddCurrencyExchange(677, 500000000, "Zeny", "Zeny", MAX_ZENY); AddCurrencyExchange(7227, 100, "#CASHPOINTS", "Cash Point", MAX_CASHPOINT); /* * AddAuctionHouse(<npc name>,<item type>{,<item location>{,...}}); * * For <npc name>: * please use display name with out hidden or unique name. * if you have hidden or uniqe name it would appear weird on purchase list on vending auction npc. * For <item location>: * When has locations set it before the other of the same <item type> * so when there is <item location> filter it would go to the one without filter. * or fail if other has filter too but the <item location> is not listed. */ function AddAuctionHouse; // When has locations set it before the other AddAuctionHouse( "Auction Costume", IT_ARMOR, EQP_COSTUME_HEAD_TOP, EQP_COSTUME_HEAD_MID, EQP_COSTUME_HEAD_LOW, EQP_COSTUME_GARMENT ); // When no locations set, all item with this type goes in here. AddAuctionHouse("Auction Card", IT_CARD); AddAuctionHouse("Auction Armor", IT_ARMOR); AddAuctionHouse("Auction Weapon", IT_WEAPON); AddAuctionHouse("Auction Shadow", IT_SHADOWGEAR);
    1 point
  7. Version 1.0.0

    1701 downloads

    I'm releasing this mall map for free! Feel free to message for support add me in skype: keough_99
    Free
    1 point
×
×
  • Create New...