The following warnings occurred:
Warning [2] Use of undefined constant SAPI_NAME - assumed 'SAPI_NAME' (this will throw an Error in a future version of PHP) - Line: 3388 - File: inc/functions.php PHP 7.4.33-nmm6 (Linux)
File Line Function
/inc/functions.php 3388 errorHandler->error
/showthread.php 116 build_archive_link
Warning [2] Use of undefined constant IN_ARCHIVE - assumed 'IN_ARCHIVE' (this will throw an Error in a future version of PHP) - Line: 3331 - File: inc/functions.php PHP 7.4.33-nmm6 (Linux)
File Line Function
/inc/functions.php 3331 errorHandler->error
/inc/functions.php 3324 build_forum_breadcrumb
/showthread.php 195 build_forum_breadcrumb
Warning [2] Use of undefined constant IN_ARCHIVE - assumed 'IN_ARCHIVE' (this will throw an Error in a future version of PHP) - Line: 3331 - File: inc/functions.php PHP 7.4.33-nmm6 (Linux)
File Line Function
/inc/functions.php 3331 errorHandler->error
/showthread.php 195 build_forum_breadcrumb






Post Reply 
 
Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
checking set armor
Author Message
kn4tseb
Master
**

Posts: 392
Likes Given: 45
Likes Received: 10 in 10 posts
Joined: May 2014
Reputation: 0



Post: #1
checking set armor
Hey mates, i need some help with this, i havent been abled to find a match variable for what im trying to do....

when equipping an armor i'd like to check if it matches with a set of that armor.... tags might be used... its a bit late and cant figure a good way to do that... this is what came to my head in last few moments, hope you can help me to improve it...


Code:
ON=@Equip
local.leatherarmor = i_leather_leggings, i_leather_cap, i_leather_gloves, i_leather_gorget, i_leather_tunic, i_leather_sleeves
args=4,6,7,10,13,19 // layers used by leather armor
for 0 5
if strmatch(*i_leather_*,<src.findlayer.<argv[<dlocal._for>]>.baseid>
local.args .=, <src.findlayer.<argv[<dlocal._for>]>.baseid>
endif
endfor
args=<streat <local.args>>
local.armormatch1=<eval <argv0>+<argv1>+<argv2>+<argv3>+<argv4>+<argv5>>
args=<local.leatherarmor>
local.armormatch2=<eval <argv0>+<argv1>+<argv2>+<argv3>+<argv4>+<argv5>>
if <local.armormatch1> == <local.armormatch2>
serv.log <local.armormatch1> <local.armormatch2>
endif
ENDIF

Thx in advance
(This post was last modified: 08-07-2014 03:09 PM by kn4tseb.)
08-07-2014 03:03 PM
Find all posts by this user Like Post Quote this message in a reply
XuN
Sphere Developer
*****

Posts: 852
Likes Given: 102
Likes Received: 156 in 119 posts
Joined: Jul 2013
Reputation: 30



Post: #2
RE: checking set armor
Here you have another idea: Keep the code in 2 typedefs, one generic typedef for every armor set controlling the @equip/unequip and setting tags to do it faster ... no for loops, strmatch, etc... at the cost of a little little memory for the tags, and another set specific typedef, giving to it the custom behaviour for each set.
Code:
[itemdef bla]
...
tag.armor_set=leather
tag.armor_set_amt=5
...
events=t_armor_set
events=t_set_leater

[typedef t_armor_set]
ON=@Equip
src.tag0.set_<tag.armor_set> += 1
if ( <src.tag.set_<tag.armor_set>> == <tag.armor_set_amt> )
  trigger @EquipSet //this will run a custom @EquipSet on the item
endif

ON=@UnEquip
src.tag0.set_<tag.armor_set> -= 1
if ( <src.tag.set_<tag.armor_set>> <= 0 )
trigger @UnEquipSet
src.tag.set_<tag.armor_set>
endif


[typedef t_set_leater]
ON=@EquipSet
src.say i'm da powerfull leather wearer!!!!

ON=@UnEquipSet
src.say I'm undressing myself!!! Ladies c'mon!!!
08-07-2014 05:19 PM
Find all posts by this user Like Post Quote this message in a reply
[+] 2 users Like XuN's post
XuN
Sphere Developer
*****

Posts: 852
Likes Given: 102
Likes Received: 156 in 119 posts
Joined: Jul 2013
Reputation: 30



Post: #3
RE: checking set armor
Well, I don't know what do you want it for... but you got some ideas Smile

However, if you are planning to do it this way I suggest you storing the set id in a local and then using that local in every check and tag... is fastest to check a local than 3 STR* functions, performance will thank you Smile

Code:
if !(<IsPlayer>)
return 0 // skipping code for npcs
endif
local.SetID=<strtolower <strarg <subsection>><streat <subsection>>>
src.tag0.<local.SetID> -= 1 // using -= is already substracting one unit instead of writing again this -> <eval <src.tag0.<strtolower <strarg <subsection>><streat <subsection>>>>-1>
if ( <src.tag0.<local.setid>> < 6 ) // <--- are you sure this should be elif? if so ... it will only fire in !players
  src.tag0.fullsetbonus = 0
endif
if ( <src.tag0.<local.setid>> <= 0 )// same here.
  src.tag0.<local.setid>>
ENDIF
(This post was last modified: 08-08-2014 08:49 AM by XuN.)
08-08-2014 08:49 AM
Find all posts by this user Like Post Quote this message in a reply
Post Reply 


Forum Jump:


User(s) browsing this thread: 2 Guest(s)