SphereCommunity
HELP WITH LOOPS WITH MULTIPLE VARIABLES - Printable Version

+- SphereCommunity (https://forum.spherecommunity.net)
+-- Forum: Sphere 0.56d (/Forum-Sphere-0-56d)
+--- Forum: Script Help (/Forum-Script-Help)
+--- Thread: HELP WITH LOOPS WITH MULTIPLE VARIABLES (/Thread-HELP-WITH-LOOPS-WITH-MULTIPLE-VARIABLES)



HELP WITH LOOPS WITH MULTIPLE VARIABLES - kn4tseb - 08-12-2014 06:23 AM

OK guys, ive been trying to make this work for hours but i just cant..

here's mosly what i need

Code:
OBJ=<ARGO.UID>
ARGS=<OBJ.SKILLMAKE>     /// lets SUPPOSE THAT ARGS ARE 100.0 BLACKSMITHING,40.0 ARMSLORE,60.0 CARPENTRY
WHILE !(<isempty <ARGV[<LOCAL._WHILE>]>>)
LOCAL.SKILLMAKE=<<STREAT <ARGV[<LOCAL._WHILE>]>>>  // THIS IS UID'S SKILL
LOCAL.SKILLREQ=<STRARG <ARGV[<LOCAL._WHILE>]>> // AND THIS IS THE SKILL REQUIRED IN ARGS (100,40,60) on this example
IF (<dLOCAL.SKILLMAKE> >= <EVAL <dLOCAL.SKILLREQ>+200>)
serv.log hello
ENDIF
ENWHILE

IN CASE ONE REQUIREMENT IS MET I WILL ONLY GET 1 HELLO CONSOLE MESSAGE
IN CASE ALL REQUIREMENTS ARE MET I WILL GET 3 HELLO CONSOLE MESSAGES
what i want is to only get one message if ALL REQUIREMENTS ARE MET.

The thing is that if two or more skills are required to do something
how do i check that all requirements are met.

ON this specific case nomatter if nth requirements return false, it only needs 1 to succeed to continue the script and thats what i dont want to..

i want it only to succeed if all requirements are met, on this case skill levels.


RE: HELP WITH LOOPS WITH MULTIPLE VARIABLES - darksun84 - 08-12-2014 06:58 AM

Why don't use canskillmake Tongue ?
Code:
if (<canskillmake <args>>)  //args contains the itemdef of the item
serv.log ok you can make <serv.itemdef.<args>.name>
else
serv.log ko you can't make <serv.itemdef.<args>.name>
endif



RE: HELP WITH LOOPS WITH MULTIPLE VARIABLES - kn4tseb - 08-12-2014 07:30 AM

i might try it ^^
let you know how it goes
THANKS

WELL IM NOT SO SURE HOW IT WORKS BUT I THINK IT WONT WORK FOR ME...

for example, in case i need 100 skill1 and 20 skill2 to make something.. how do i make a loop that checks both skills with player doing the action and returns true only if both requirements are met?


RE: HELP WITH LOOPS WITH MULTIPLE VARIABLES - XuN - 08-12-2014 07:34 AM

http://forum.spherecommunity.net/Thread-BREAK-CONTINUE?pid=17637#pid17637 !!!!!!!!!! break!!!!


Code:
OBJ=<ARGO.UID>
ARGS=<OBJ.SKILLMAKE>     /// lets SUPPOSE THAT ARGS ARE 100.0 BLACKSMITHING,40.0 ARMSLORE,60.0 CARPENTRY
WHILE !(<isempty <ARGV[<LOCAL._WHILE>]>>)
LOCAL.SKILLMAKE=<<STREAT <ARGV[<LOCAL._WHILE>]>>>  // THIS IS UID'S SKILL
LOCAL.SKILLREQ=<STRARG <ARGV[<LOCAL._WHILE>]>> // AND THIS IS THE SKILL REQUIRED IN ARGS (100,40,60) on this example
IF !(<dLOCAL.SKILLMAKE> >= <EVAL <dLOCAL.SKILLREQ>+200>)
break // this req was not meet, we don't need any more checks
ENDIF
local.check ++
ENWHILE
if (<local.check> == <argv> ) // You will only have as much local.check as <argv> count if all requirements were OK.
serv.log hello
endif



RE: HELP WITH LOOPS WITH MULTIPLE VARIABLES - kn4tseb - 08-12-2014 08:19 AM

how would it be if i have 5 checks:

Code:
IF (<dLOCAL.SKILLMAKE> >= <EVAL <dLOCAL.SKILLREQ>+200>)
serv.log 1
ELIF (<dLOCAL.SKILLMAKE> >= <dLOCAL.SKILLREQ> && (<dLOCAL.SKILLMAKE> < <EVAL <dLOCAL.SKILLREQ>+200>)
serv.log 2
ELIF (<dLOCAL.SKILLMAKE> >= <dLOCAL.SKILLREQ>)
serv.log 3
ELIF (<dLOCAL.SKILLMAKE> < <dLOCAL.SKILLREQ>) && (<dLOCAL.SKILLMAKE> >= <EVAL <dLOCAL.SKILLREQ>-200>)
serv.log 4
ELIF (<dLOCAL.SKILLMAKE> < <dLOCAL.SKILLREQ>)
serv.log 5
ELSE
serv.log 6
BREAK
ENDIF

asumming that i have 2 argvs


RE: HELP WITH LOOPS WITH MULTIPLE VARIABLES - darksun84 - 08-12-2014 08:37 AM

(08-12-2014 07:30 AM)kn4tseb Wrote:  i might try it ^^
let you know how it goes
THANKS

WELL IM NOT SO SURE HOW IT WORKS BUT I THINK IT WONT WORK FOR ME...

for example, in case i need 100 skill1 and 20 skill2 to make something.. how do i make a loop that checks both skills with player doing the action and returns true only if both requirements are met?

canmakeskill does that without using loop,

Added CANMAKESKILL to test ONLY for the ability to make an item skillwise (it ONLY
tests the SKILLMAKE line), not resources.


RE: HELP WITH LOOPS WITH MULTIPLE VARIABLES - kn4tseb - 08-12-2014 09:26 AM

@DARKSUN, but what would be the itemdef number of a custom item?


RE: HELP WITH LOOPS WITH MULTIPLE VARIABLES - darksun84 - 08-12-2014 09:36 AM

You pass the item definition (itemdef) to canskillmake

[ITEMDEF i_wand_test] //this one
Id = i_wand
Type = t_weapon_bow
Skillmake = blacksmithing 100.0, armslore 40.0, tinkering 60.0
TDATA3=
TDATA4=i_fireball

ON=@Create
Hitpoints = 100

So

canskillmake i_wand_test


RE: HELP WITH LOOPS WITH MULTIPLE VARIABLES - kn4tseb - 08-12-2014 09:46 AM

serv.log <canskillmake i_leather_cap>
Can't resolve <canskillmake i_leather_cap>

I will modify the checks for now because would be needed so many of them if more than one skill is needed >.<