Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Discussion: Server layers system #1209

Open
Tolokio opened this issue Feb 6, 2024 · 3 comments
Open

Discussion: Server layers system #1209

Tolokio opened this issue Feb 6, 2024 · 3 comments

Comments

@Tolokio
Copy link
Contributor

Tolokio commented Feb 6, 2024

There are some times where I need to store items somewhere. In thoose cases I need to create a container and put it on the map. Or I can create an account with a player that store all that stuff on his bank. But this may cause many errors, as the container can be removed and mess all the script.

How do u see to create a server's layer or something like that? So we could use that as general storage container.

//Example:
[typedef ei_never_lose_this_item]
on=@destroy
cont=<serv.storage1>
return 1

//Another example (for the stable system problems where pets are removed if StableMaster is killed.)
//this script would get pets into <serv.storage1> and get pets back once a new stableMaster Spawn.

[chardef stable_master]

on=@death
serv.newitem i_backpack
ref1 <new.uid>
FORCONT <FINDLAYER.29.UID>
     local.pets ++
     cont=<ref1.uid>
endfor
if (<local.pets>)
    ref1.cont=<serv.storage1>
    ref5=<spawnItem>
    ref5.tag.PetsAtContainer=<ref1.uid>
else
    ref1.remove
endif

on=@create
if <spawnItem>
     ref1=<spawnitem>
     ref2=<ref1.tag.PetsAtContainer>
     ref3=<uid>
     if <ref2.isvalid>
          forcont <ref2.uid>
               cont=<ref3.findlayer.29.uid>
          endfor
          ref2.remove //remove container as it is no longer needed.
          ref1.tag.PetsAtContainer  //remove tag as it is no longer needed.
     endif
endif
@Jhobean
Copy link
Contributor

Jhobean commented Feb 6, 2024

I thonk how layer are designed must be on a char. I dont think its possible to place a layer on server itself.

@Tolokio
Copy link
Contributor Author

Tolokio commented Feb 6, 2024

Dosnt have to be a layer's system, just some kind of storage's system. Maybe I shouldnt use the word "layer". But the idea comes from layer system.

<serv.storage1> not <serv.findlayer.1>

@canerksk
Copy link
Contributor

canerksk commented Feb 25, 2024

Instead, would more than one bank account work for one account/character?

The serv.findlayer.1 function can be a bit complicated. More possible alternative methods can be considered.

The first alternative solution that comes to my mind is;

like src.house.0.uid / src.houses.count etc.

There could be a property like src.bank.0.uid/src.banks to have multiple storages for a character and add a multi like

There may be virtual banks that can be added or removed as SRC.ADDBANK / SRC.DELBANK <uid>/<id>.

xwerswoodx added a commit to xwerswoodx/Source-X that referenced this issue Mar 24, 2024
Fixed: The wrong input of Kill trigger, to make it compatible with older sphere versions. (Issue: Sphereserver#1210)
Added: New Layer LAYER_STORAGE (80) to let scripters create their own storage system. (Issue: Sphereserver#1209)
- Only t_container and t_container_locked can be equipped to this layer.
@xwerswoodx xwerswoodx self-assigned this Mar 24, 2024
cbnolok pushed a commit that referenced this issue Apr 28, 2024
* Fix crafting (#1190)

* Added .editorconfig (#1188)

* Fix Issue #1191 CANMASK not being saved on server reboot (#1192)

* Fix target cancelling upon death (#1186)

* Feature/meditation fail movement (#1184)

* Fix herding dupe char (#1185)

* Editable DispID for chars  (#1178)

* Fix issue #1097 (CAN_O_NOSLEEP not working after server reboot) (#1198)

* Fixed: The issue that causes more1/2 not saved correctly for spellbook. (Issue: #1221)

* Fixed: Players automatically become criminal to everyone when attack someone. (Issue: #1213)

* Fixed: CallGuard not working correctly on the players that only criminal for target. (Issue: #1213)

* Fixed: The wrong input of Kill trigger, to make it compatible with older sphere versions. (Issue: #1210)

* Added: New Layer LAYER_STORAGE (80) to let scripters create their own storage system on chars. (Issue: #1209)
- Only t_container and t_container_locked can be equipped to this layer.

* Changed: Decay time removed from spawned items. (Issue: #1218)

* Added: New spellflag SPELLFLAG_FIELD_RANDOMDECAY to randomize field tile decay time, like old sphere versions. (Issue: #1169)

* Changed: SERV.LOG command changed to support console colors. (Issue: #1158)

* Added: Sphere.ini setting CanPetsDrinkPotion (true in default) to make pets drink potion when their owner drop it on it. (Issue: #1147)

* Fixed: Missing fCheckOnly checks block the taming skill. (Issue: #1219)

* Added: New trigger @drink added for characters. (Issue: #1162)

* Added: New trigger @AFKmode added for characters. (Issue: #1161)

* Added: New trigger @reveal added for characters. (Issue: #1157)

* Added: New triggers @ArrowQuest_Add and @ArrowQuest_Close added for characters. (Issue: #1116)

* Added: New function triggers f_onaccount_block and f_onaccount_unblock. (Issue: #1156)

* Added: New function trigger f_onserver_broadcast. (Issue: #1145)

* Added: Two new LOCAL variables ItemPoisonReductionChance and ItemPoisonReductionAmount to @hit trigger. (Issue: #1159)

* added: MAGICF_REACTIVEARMORTH (010000) MAGICF flag to Sphere.ini to let people decide if reactive armor should reflect two handed weapons.

* Fixed: Possible fix for accesses and bans not loading for multis. (Issue: #1223)

* Fixed: Possible fix for wrong damage calculation of slayer bonus damage. (Issue: #1179)

* Added: REGION_FLAG_HOUSE (0x0100) flag for houses. (Issue: #1154)

* @Murdermark Update
Added: ARGO object for @Murdermark trigger to get killed character.

* @RegionResource Fix
Fixed: ARGN1 (reap amount) doesn't updated depends on the amount left on bit. (Issue: #1224)
Added: ARGO to get bit uid under @ResourceGather and @RegionResourceGather triggers.

* Multi Invalid Region Fix
Fixed: Possible fix for the OnRegionTrigger getting called on invalid region while multi creating/removing.

* CAN Flags DWORD to UINT64
Changed: dword CAN flags changed with uint64 to increase limits.

* Fixed: Possible fix for chat debugs. (Issue: #1212) (Issue: https://discord.com/channels/354358315373035542/483721253773901824/1224030729906815077)

* Added Missing Data to sphere.ini

* t_crop update
Added: "MOREX" key to set amount of fruit given when the crop ripped.
Changed: Now @create trigger called when crop grow to let people to change MORE values in stages if needed.
Added: @ResourceTest trigger added for crops. (This trigger works seperately for every stage)
Added: @ResourceGather trigger added for crops. (This trigger works seperately for every stage)

* Fixed: Possible fix for invalid ResourceID warnings. (Issue: #1071)

* Fixed: Missing REGION reference for multis. (Issue: #1228)

* Elemental Engine Flags
Added: ElementalEngineFlags variable added to sphere.ini to let servers to filter elemental engine. (Issue: #1230)

* Custom Multi Count
Fixed: An issue that causes T_MULTI_CUSTOM keep multi count saved. (Issue: #1232)

* Fixed: Bonded pets cannot see their master while DeadCannotSeeLiving equals to 2. (Issue: #1225)

* Standard Guild Align Fix
Fixed: The issue that causes Guilds without align shown enemy to the players with a guild with align. (Issue: #1208)

* GMs Dress Players
Fixed: GMs cannot dress up players. (Issue: #901)

* GM unequip fix
Fixed: Wrong check block GMs to unequip item from players.

* Custom Hosing Fix
Fixed: An issue that causes a visual bug to remove all tiles while removing a tile in higher floors. (Issue: #345)

* Merged Jhobean's Pr
Merged Jhobean's EMOTEF_EAT PR and split EAT flag for npcs and players. (PR: #1207)

* @hit and @GetHit as Item Triggers
Added: Trigger @hit is added as an item trigger.
Added: Trigger @GetHit is added as an item trigger.

* Visual Range Update
Added: MAPVIEWRADAR, MAPVIEWSIZE and MAPVIEWSIZEMAX to sphere.ini that overrides default visual range values. (Issue: #1144)

* H keyword for Hexadecimal returns
Added: 'H' shortcut for variables to get the value as hexadecimal.

* raydienull's LAYER_STABLE PR merge
- Merged: raydienull's LAYER_STABLE build merged, but LAYER_AUCTION keep same as LAYER_STABLE added as a new layer. (PR: #1201)
- Fixed: raydienull's LAYER_STABLE follower triggers doesn't called while taking pet out of stable.
- Fixed: raydienull's LAYER_STABLE doesn't work with the new follower system.
- Removed: Unnecessary LINK == PLAYER checks as figurines will be stocked on the owned player.

* c_man_gm
- Fixed: Setting GMs dispid to c_man_gm in-game, prevents GMs to use in-game commands.

* NPC Hear Distance
- Changed: Default NPC hear range reverted back to the 14 from 4, as it was 14 in older versions, as there was no reason for changing it. (Issue: #1215)

* CCChampion Rework
- Fixed: Candles keep stuck while killing npcs. (Issue: #564)
- Fixed: LEVELMAX doesn't affect the max level of champion system, and keep spawn npcs for default max level.
- Changed: Spawn system changed and now it automatically calculate the percentage of spawns per level in descending order.
- Changed: Candle calculation is now depend on max level, instead of static 4 level.
- Added: SRC added in @start trigger. SRC is a reference of player that starts champion spawner.
- Added: @complete trigger that triggers when champion completed. (Issue: #477)
- Added: @DelRedCandle trigger that triggers while red candle removing.
- Added: @DelWhiteCandle trigger that triggers while white candle removing.
- Added: @Level trigger that triggers when champion level up.
- Added: @Stop trigger that triggers when champion stopped.

* T_MULTI_ADDON Fix
- Fixed: Script multis move 1 block north when their type set as t_multi_addon. (Issue: #1238)

* ADDCOMPONENT
- Fixed: ADDCOMPONENT command was added as ADDCOMP for houses.

* Reactivated Hardcoded Fishing Skill
- Changed: Re-activated 56b style hardcoded fishing system, as I don't know why it's deactivated as softcoded system too bad and broken.
	- Fishing skill in default script pack should updated.
	- Delay should set to 2.5-3.0
	- All softcoded system should removed.
	- If anyone want to code their own fishing system, they can use SKF_SCRIPTED.

* EF_DAMAGETOOLS Update
- Added: EF_DAMAGETOOLS flag implemented to the sphere.
	- Added LOCAL.ITEMDAMAGECHANCE to the @success trigger for skills to decide damage chance for tools. (Default: 25)
	- Added LOCAL.ITEMDAMAGEAMOUNT to the @success trigger for skills to decide damage amount. (Default: 1)
	- EF_DAMAGETOOLS only affects the skills with SKF_GATHER flag.

* m_ridFruitOverride CAN_I_SCRIPTEDMORE update

* SPELLFLAG_NOUNPARALYZE
- Fixed: SPELLFLAG_NOUNPARALYZE flag wasn't working as intended.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants