Achoriham Posted November 25, 2011 Report Posted November 25, 2011 Hi, I tried to look it up in the docs, but I do not find it specifically mentioned if the event.offset(0x5646, "UB", 2, "xxx") syntax can be used for Lua or not. I mean checking a specific bit in this case. The debugger doesn't give me an error if I use the format above. Is it allowed? Is the syntax right for the first bit in this case? thanks Achoriham
Pete Dowson Posted November 25, 2011 Report Posted November 25, 2011 I tried to look it up in the docs, but I do not find it specifically mentioned if the event.offset(0x5646, "UB", 2, "xxx") syntax can be used for Lua or not. All the permissable syntax formats are documented, so you must assume that anything not included is ... not included. I can't very well list every possible syntax which is not implemented, now, can I? ;-) . I mean checking a specific bit in this case. The debugger doesn't give me an error if I use the format above Debugger? That doesn't do any syntax checking, it is only a line execution tracing facility. The above syntax should give an error when the event occurs saying it cannot locate the function denoted by "2". The excess parameter "xxx" would be ignored. Lua in general doesn't care how many parameters you give, it just passes them on and lets the receiver use them if it wants to. Is it allowed? Is the syntax right for the first bit in this case? No and no. First bit from least significant end is bit 0 which has a value of 1 in masks. Number 2 is twice 1 so it's the next bit up, bit 1. Bit numbers and values are simply related by powers of 2, so 2^N is the value of bit N. Same as in decimal, decimal digit 2 is worth 10^2 or 100 (count 1 as bit 0, 10 as bit 1, etc). Please see the FAQ thread on bits and numbers. Anyway, to do what you want to do you have to use event.offset(0x5646, "UB", "xxx") then in function xxx(offs, val) test your bit using if logic.And(val, mask) ~= 0 then ... end where mask is your bit value, 1 for bit 0 or whatever. If you just want to know when it changes oldval = -1function xxx(off, val) newval = logic.And(val, mask) if newval ~= oldval then ... oldval = newval endend[/CODE]RegardsPete
Achoriham Posted November 25, 2011 Author Report Posted November 25, 2011 Hi Pete, Now it makes perfect sense. I truly appreciate your help! best regards Achoriham
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now