Thread Rating:
- 0 Votes - 0 Average
- 1
- 2
- 3
- 4
- 5
Eval & Expressions
|
Author |
Message |
Pestilence
Apprentice
Posts: 16
Likes Given: 3
Likes Received: 0 in 0 posts
Joined: Oct 2013
Reputation: 0
|
Eval & Expressions
Hey All. :)
Version: 08-01-2015 nightly linux debug
As permanently checking changelog. And people in irc says "every line is evaluated"
Can somebody confirm this ridiculous behaviour:
Code:
[function f_learn]
local.x 1
local.y 10
local.x += 1
local.y -= 5
sysmessage "<dlocal.x> <dlocal.y>" // Returns: "2 5"
local.x 1
local.y 10
local.x+=1
local.y-=5
sysmessage "<dlocal.x> <dlocal.y>" // Returns "1 10"
local.x 1
local.y 10
sysmessage <dlocal.x>+<dlocal.y> // Returns "1+10"
local.x 1
local.y 10
sysmessage <dlocal.x> + <dlocal.y> // Returns "1 + 10"
Just paste it in your sphere and run .f_learn
Looks like trusting and NOT using "eval" in expressions is totally biggest fault for scripting :D
IMHO:
Example #4 shouldn't work because there are spaces...
Example #3 SHOULD work because there are NO spaces and NO quotes
But most killing thing... #2 & #1... now I'm totally unsure can i really use "newgold -= 5000" or "newgold-=5000"
Update:
Code:
[function f_learn]
gold 1000
sysmessage "1000 -> <gold>" // 1000 -> 1000 (works)
gold += 1000
sysmessage "2000 -> <gold>" // 2000 -> 2000 (works)
gold+=1000
sysmessage "3000 -> <gold>" // 3000 -> 1000 (broken)
gold -= 1000
sysmessage "2000 -> <gold>" // 2000 -> 0 (works)
gold-=1000
sysmessage "1000 -> <gold>" // 1000 -> 1000 (broken)
(This post was last modified: 01-08-2015 02:35 PM by Pestilence.)
|
|
01-08-2015 02:12 PM |
|
|
eberk
Apprentice
Posts: 2
Likes Given: 0
Likes Received: 2 in 1 posts
Joined: Aug 2014
Reputation: 0
|
RE: Eval & Expressions
local.x+=XXXX without space to equal symbol ( = ) i think sphere read it like "YYYY=XXXX" means YYYY for 'local.x+' and XXXX is value, so in your example can u check (for example #2)
Code:
local.x 1
local.y 10
local.x+=1
local.y-=5
sysmessage "<dlocal.x> <dlocal.y> <dlocal.x+> <dlocal.y->" //Now it should Returns "1 10 1 5"
and sysmessage command (#3,#4) i think it want string value so actually you have to do it like
Code:
local.x 1
local.y 10
local.temp = <dlocal.x>+<dlocal.y>
sysmessage <dlocal.temp>
or as you discuss u have to use "eval" experession before sysmessage command reads for string. like; <eval <dlocal.x>+<dlocal.y>>
|
|
01-08-2015 07:15 PM |
|
|
Extreme
Grandmaster Poster
Posts: 1,141
Likes Given: 217
Likes Received: 90 in 77 posts
Joined: May 2012
Reputation: 20
SphereCommunity
|
|
01-09-2015 11:41 AM |
|
The following 1 user Likes Extreme's post:1 user Likes Extreme's post
Pestilence (01-11-2015)
|
User(s) browsing this thread: 1 Guest(s)