-
1 vote
Feature Request — Native Transactional Temporary Character Profile / Event Isolation API
Hello,
I would like to request a native API for temporary character profiles designed for events such as Battle Royale, survival arenas, class trials, ranked PvP and temporary progression modes.
The objective is to temporarily place a player into an isolated profile without modifying or risking the original character inventory, equipment, buffs, skills or attributes.
Current Lua functions allow item access, deletion, insertion, stat changes and individual buff removal, but they are not sufficient to safely recreate the original state after an event. A full Lua-side solution may cause item serial issues, loss of advanced options, duplicate items, incorrect durability, socket/Harmony problems and incomplete buff restoration.
Requested API:
local sessionId, result = PlayerEvent.BeginTemporaryProfile(oPlayer, { EventKey = "BATTLE_ROYALE", Snapshot = { Stats = true, Level = true, MasterLevel = true, MasterSkillTree = true, LifeManaShieldAG = true, Equipment = true, MainInventory = true, ExtendedInventory = true, MuunInventory = true, PentagramInventory = true, Buffs = true, Skills = true, CashShopEffects = true, ItemEffects = true, }, TemporaryProfile = { BaseStats = { Strength = 100, Dexterity = 100, Vitality = 100, Energy = 100, Command = 100, }, Level = 1, LevelUpPoints = 0, InventoryMode = "EMPTY_EVENT_INVENTORY", SkillMode = "WHITELIST", AllowedSkills = {}, BuffMode = "SUPPRESS", OriginalBuffTimePolicy = "ELAPSE", }, Restrictions = { BlockTrade = true, BlockWarehouse = true, BlockPersonalShop = true, BlockChaosMachine = true, BlockInventoryMove = true, BlockItemUse = true, BlockItemRepair = true, BlockTeleport = true, BlockNormalItemPickup = true, }, Recovery = { PersistSnapshotBeforeApply = true, RestoreBeforeCharacterSaveOnDisconnect = true, RestorePendingSessionOnLogin = true, RestorePendingSessionsOnServerStart = true, }, }) local result = PlayerEvent.EndTemporaryProfile( oPlayer, sessionId, "EVENT_FINISHED" )
The native implementation should use an internal opaque snapshot. Lua should not be required to manually serialize and rebuild actual items.
The snapshot must preserve the exact original item state, including:
Original inventory slot and equipped position Unique item serial Item level and durability Skill, luck, additional option and excellent options Ancient/set options Harmony option type and value Socket options and bonus socket option 380 option, period item data, pet data, elemental/pentagram/errtel data Muun inventory and related items Any other internal item fields required for a bit-perfect restoration Buff restoration should preserve: Buff identifier Remaining duration Effect types and values Buff source / caster Cash Shop and item-generated effects Configurable time policy: ELAPSE, PAUSE or REMOVE
The API should also provide an isolated Event Inventory:
EventInventory.Clear(oPlayer, sessionId) EventInventory.AddItem(oPlayer, sessionId, itemInfo) EventInventory.TransferRewards(oPlayer, sessionId, { Destination = "GREMORY_OR_MAIN_INVENTORY" }) This is necessary so event rewards and temporary equipment do not mix with the player’s original inventory.
Required safety guarantees:
BeginTemporaryProfile must be atomic. EndTemporaryProfile must be idempotent. No original item may be deleted or recreated through Lua. The original profile must be restored after event finish, disconnect, server restart or unexpected crash. The GameServer must prevent item movement, trade, warehouse, chaos machine and similar actions while the temporary profile is active.
The system must prevent duplicate rewards and duplicate profile restoration.
Recovery should be automatically processed on player login and GameServer startup.
The API should provide clear result/error codes and server logs for create, restore, recovery and failure cases.
This feature would allow secure development of Battle Royale, survival arenas and temporary PvP modes without risking player items or permanent character data.
Thank you.
-
2 votes
Config to allow DL pets usage with fenrir+guardian mounts
Requesting a config addition to allow DL dark horse usage with fenrir+guardian mounts
-
1 vote
Ingame Player communication plugin
Add an object system in game that would trigger a popup window with an option to add custom text.
Example: Players click an object(Notice board) outside town, pop up comes up with a text about what area is this, what items drop in here etc, any relatable information(This is all customisable).
This can also be used as a good way to interact with players and guide them without them leaving the game. ( I just started paying, click on a notice board and it guides me to level up 50 levels and then I get xyz item reward etc, or that don't go west of the map because big monster will eat you etc.).
These objects can also be used as a part of the world. Click on a stone pop up window comes on and there's an info about specific event or some hidden extras. This opens for more potential custom content.
-
0 votes
Ambience Bundle/Plugin idea(Weather effects)
Hi!
Would be great if we had an option to change/add weather effects, fog colours and swimming on/off per map!
Effects such as: rain, snow, heavy snow, sandstorm, leaf fall, water/bubbles etc.
Fog colours similar to glow.bmd where we could change colours of the fog per map and perhaps distance when zoomed out with the 3D cam to hide the pop in distance?
This would help for more customs to be made and create more freshness to the game.
-
0 votes
Configurable Global Cap System for Item Options
Idea:
Currently, item options stack based on equipped gear. I would like to propose a new "Total Cap" system as an optional feature. This would allow server administrators to define a global maximum limit (via configuration files) for specific item option IDs.
Example Use Case: For instance, an administrator could set a global cap of 25% for Automatic HP Recovery (ID 53). Once defined, the server would enforce this limit regardless of the total amount provided by the equipped items. The same logic could be applied to Damage Reflect Increase (ID 24) and other options, providing more flexibility in configuring specific server environments.
Implementation Goal: A configuration file where we can assign: OptionID -> MaxValue.
This addition would grant administrators greater control over balancing their server progression, offering an efficient way to fine-tune mechanics without needing custom source adjustments.
-
3 votes
/post messages nightmare
Hi, can you please add some kind of GM command that removes the /post/gpost messages by specific player? I really dont like anyone coming in my server saying whatever they want and me as an admin being helpless not being able to delete that message even if ban them, the message remains. Its very unfair as there are tons of troll players or even troll admins who join other servers just to create chaos in the chat..
-
3 votes
Add FailPenalty into Trade BOT
Hello,
I would like to suggest add FailPenalty mode into CraftItem section of Trade BOT
// FailPenalty: In case of failure, different kind of penalties may be applied: // ~ -1: No penalty // ~ 0: Destroy item // ~ 1-15: Reduce item level by random number up to defined value Thanks
-
2 votes
Lua API (onItemGetInventory) new callback
Same as "function onItemGet" (Called when: Player picks up item from ground)
function onItemGetInventory (Called when: Player receives an item from the box directly to the inventory)
Or just add this functionality to the onItemGet callback
Thanks!
-
4 votes
Ability to define where items will be created using the Lua API.
Hello developers, through this I would like to request the addition of a way to define where the item will be created, for example:
EventInventory GremoryCase CashShop Inventory Ground Currently, there is nothing that allows us to define where the item will be created, such as: https://github.com/srv-config/Configs-Preview/wiki/Item-Structures
-
2 votes
Add a configuration file setting to control the maximum limit for PLUS
I would like to request the addition of a configuration setting to control the maximum limit for "PLUS" operations (currently capped at 99). I believe it would be beneficial to have the ability to customize this maximum value. Please implement this setting; thank you very much.
-
4 votes
UserOptionTable (LuaApi)
UserGetOptionTable(aIndex)
aIndex = User index.
Return the option table from the chosen user.
Table elements: AddDamage, AddPhysiDamage, AddMagicDamage, AddCurseDamage, AddDefense, AddElementalDamage, AddElementalDefense, AddSpeed, AddMaxHP, AddMaxMP, AddMaxBP, AddMaxSD, AddHPRecoveryRate, AddMPRecoveryRate, AddBPRecoveryRate, AddSDRecoveryRate, AddDamageReduction, AddDamageDecrease, AddDamageReflect, AddCriticalDamage, AddExcellentDamage, AddCriticalDamageRate, AddExcellentDamageRate, AddIgnoreDefenseRate, AddDoubleDamageRate, AddTripleDamageRate, AddFullDamageReflectRate, AddDefensiveFullHPRestoreRate, AddDefensiveFullSDRestoreRate, AddOffensiveFullHPRestoreRate, AddOffensiveFullSDRestoreRate, MulDamage, MulPhysiDamage, MulMagicDamage, MulCurseDamage, MulDefense, MulElementalDamage, MulElementalDefense, MulMaxHP, MulMaxMP, MulMaxBP, MulMaxSD
UserSetOptionTable(aIndex)
aIndex = User index.
aValue = Option table.
example:
local UserOption = UserGetOptionTable(aIndex) UserOption.AddDefense = 10 UserOption.AddElementalDamage = 25 UserSetOptionTable(aIndex, UserOption)
-
5 votes
Add a callback to retrieve the character's login.
Hello developers, through this message I'm requesting a callback to retrieve the character login. Currently, all callbacks are used for oPlayer. Some customizations, especially those that apply bonuses to wcoin, goblinpoint, VIP balance, or any other type of interaction that requires the character login, are being cached, but depending on the context, this isn't the best practice.
Therefore, I would like to request a callback that can retrieve the account login more easily, as well as the wcoin and goblinpoint balance, something like:
onAccountPlayer(oPlayer oTarget)
Retrieves the character login
onAccountAmount(oPlayer oCoins)
Retrieves the account/character login and coin balance
onAccountVipType(oPlayer oTypeVip)
Retrieves the player's actual VIP type
-
6 votes
Add callback for attack target
I'm creating an event where infection is implemented in PLAYER_KILL mode, not by hit, because currently LuaAPI doesn't expose a reliable attack/hit callback to trigger character infection upon receiving an attack.
Therefore, I'm requesting a callback that captures the moment of the attack on the target (oPlayer), as currently we only have the death callback.
The idea would be a callback that intercepts the target's first hits.
onPlayerAttackHit(oPlayer, target)
-
6 votes
Add LuaAPI callbacks for offTrade
Through this letter, I request the inclusion of new callbacks for handling the off-trade system.
offTradeCommand(coinType, value)
-
6 votes
Lua API (Guild)
I would like to suggest adding a few extra functions.
1) Function Guild.AddMember - Gives the ability to add a member to the guild.
2) Function Guild.DelMember - Gives the ability to remove a member from the guild.
3) Function Guild.AlianceCreation - Create an alliance between 2 guilds
4) Function Guild.AlianceDestroy - Destroy an alliance between 2 guilds
Any other function which can be usefull in terms of guild? 🙂
-
7 votes
Add callback for PvP Damage Map Reduction
Hello, would it be possible to implement a PvP damage reduction system that varies according to map?
It would be interesting to create a customized system, allowing for organization and addition same damage reduction functions as in the ARKA and Castle Siege events.
Like:
onTotalDamageClass()
onTotalDamageMap()
-
6 votes
LuaAPI (party)
I would like to suggest add 2 extra function.
1) Function Party.DelMember - Gives the ability to delete a member from the party.
2) Function Party.ChangePartyLeader - Gives ability to change party leader
-
4 votes
Add callback for currency handling
Hello developers, I noticed that the documentation only mentions Player.SetMoney and Player.SetRuud.
I would like to request the inclusion of the same functionality for CashShop coins, so we don't need to work with caching or queries using onDS... Something like:
GetWcoins(oPlayer, oValue) GetGoblinPoints(oPlayer, oValue) Customizations that will have payment fees, such as new commands.
I used the onDS dataserver callback... But that wouldn't be the best practice.
-
4 votes
Request improvement for LuaAPI
Hello developers, currently we only have 3 options to manipulate monsters in their respective spawns.
I recently contacted you via ticket, asking about the possibility of selling a plugin, and you informed me that it would be possible to do it with LuaAPI. However, currently it is not possible because the 3 methods available for use after the monsters spawn are not able to make the monster follow the Object (Player).
Therefore, through this request, I would like to include:
Move.MoveMonster Monster.SetTarget AI.SetFollowTarget The return should simply follow the (Player Object) when the player approaches its field of view.
Unfortunately, it is not possible to use Move.warp, Move.Gate, and the others.
-
3 votes
Adding onOpenPersonalnventory API
Hi IGCN Team,
Would it be possible to add a Lua API hook that fires when a player opens the inventory window?
Currently the onItemRepair hook is triggered after the repair is processed, so the durability we read is already the post-repair value.
If we could receive an event when the inventory window opens, we could cache the item state (durability, options, money, ruud... etc.) beforehand and determine more reliably whether an item was already at maximum durability and can be attracted much more valuable things from this API.
-
6 votes
Important callbacks missing on the LuaAPI
Please add on the LuaAPI:
The idea is to have a more practical way to control these issues, because when trying to work with spawns, unfortunately there is no simple way to determine safe areas, or areas where PvP is free or has restrictions.
These are simple things, but they make a big difference, especially in large PvP events.
onCharacterSafeZone(oPlayer, oMap, oMapX, oMapY) { return safe zone maps } onCharacterPvPAllowed(oPlayer, oMap, oMapX, oMapY) { return pvp area without alertpvp } onCharacterPvPBlocked(oPlayer, oMap, oMapX, oMapY){ return pvp area with alertpvp }
-
6 votes
Change custom UI size for some custom UI for better displayed
@drakelv @Wizzy
Hello developers, through this message I would like to request a change in the size of some new UIs. I believe that standardizing the size would make the new UIs more harmonious.
Example:
The rankings UI -> could have the same size as the Daily Rewards plugin UI. The bank jewels UI -> could also have the same size as the Daily Rewards plugin UI. Eventtimer -> Could have a dedicated UI with all server events and all possible custom invasions, or a file for adding them. A dedicated UI for the system could provide us with a new feature directly within the game: Real-time countdown. The "F1" UI -> Could be wider and have its buttons positioned in grid mode; it would be more elegant, allowing for larger and relatively more aesthetically pleasing buttons. -
2 votes
Add new tag AllowAllMapsHuntPoint
@drakelv
Hello, I would like to request that the developers add a tag dedicated to activating all maps in the HuntPoint system. Currently, we have to add the desired maps separated by commas, and unfortunately, the complete map list is too extensive to add all the maps one by one.
It would be more practical to have a tag that enables the system on all maps with just a boolean value.
AllowAllMaps="1" 1 for all maps and 0 for loading the list according to the tag definition: HuntPointMaps=""
-
8 votes
Extend ItemBag system
Hello,
I would like to suggest IGCN dev can let us allow use IsHex="0 or 1" / Hex="FFFF" in DropSection. This will let us have a freedom what option can be out come from each class and etc....
<DropSection DisplayName="Section 1" UseMode="-1"> <DropAllow DW="1" DK="1" ELF="1" MG="1" DL="1" SU="1" RF="1" GL="1" RW="1" SLA="1" GC="1" LW="1" LM="1" IK="1" AC="1" CR="1" PlayerMinLevel="1" PlayerMaxLevel="MAX" PlayerMinReset="0" PlayerMaxReset="MAX" MapNumber="-1" DisplayName="DropAllow"> <Drop Rate="5000" Count="1" Type="0"> <!--Jewel of Bless--> <!-- <Item Cat="14" Index="13" IsHex="1" Hex="FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" /> --> </Drop> </DropAllow> </DropSection>
-
3 votes
allow normallevel +masterlevel(mj) parameters in scripts/skills luas
if possible, please allow normallevel +masterlevel + majesticlevel parameters in scripts/skills luas so we can configurate spell formulas per level.
its very useful for weak physical classes that do not grow as the mages so instead of modifying bunch of things to get abnormal behaviors we could just give them power per level
the difference between 1200 and 1750+ is huge and mages get out of control
