ThinkTank
January 19th, 2014, 19:15
Bit of a strange one this time.
I have a common diceroll script attached to a basicnumber.
<basicnumber name="phy_score" source="stats.phy.score">
<anchored>
<to>statframe</to>
<position>insidetopleft</position>
<offset>75,30</offset>
<size>
<width>32</width>
<height>20</height>
</size>
</anchored>
<script>
local rollwidget;
function onInit()
rollwidget = addBitmapWidget("indicator_dice");
if rollwidget then
rollwidget.setPosition("insidetopright", -5, 2);
rollwidget.setSize(15,15);
rollwidget.setColor("AAFFFFFF");
end
end
function action(draginfo)
local rActor = ActorManager.getActor("pc", window.getDatabaseNode());
ActionAbility.performRoll(draginfo, rActor, getValue());
return true;
end
function onDragStart(button, x, y, draginfo)
return action(draginfo);
end
function onDoubleClick(x,y)
return action();
end
</script>
</basicnumber>
When used, it returns. Script Error: [string "scripts/manager_actor.lua"]:443: attempt to compare string with number
Digging into it:
-- GET ABILITY VALUE
local nStatScore = getAbilityScore(rActor, sStat);
print(rActor)
print(sStat)
print(sAbility)
if nStatScore < 0 then
return 0;
end
Returned
Script Notice:
Script Notice: 4
Script Notice: 4
Script Notice:
Script Notice: level
Script Notice: halflevel
Script Error: [string "scripts/manager_actor.lua"]:443: attempt to compare string with number
And on the same sheet:
function getActor(sActorType, varActor)
print(sActorType)
print(varActor)
-- GET ACTOR NODE
local nodeActor = nil;
if type(varActor) == "string" then
if varActor ~= "" then
nodeActor = DB.findNode(varActor);
end
elseif type(varActor) == "databasenode" then
nodeActor = varActor;
end
if not nodeActor then
return nil;
end
Returned
Script Notice: pc
Script Notice:
Script Error: [string "scripts/manager_actor.lua"]:443: attempt to compare string with number
I can see a string is being read instead of a number somewhere down the line, but Im not sure how. Any ideas?
I have a common diceroll script attached to a basicnumber.
<basicnumber name="phy_score" source="stats.phy.score">
<anchored>
<to>statframe</to>
<position>insidetopleft</position>
<offset>75,30</offset>
<size>
<width>32</width>
<height>20</height>
</size>
</anchored>
<script>
local rollwidget;
function onInit()
rollwidget = addBitmapWidget("indicator_dice");
if rollwidget then
rollwidget.setPosition("insidetopright", -5, 2);
rollwidget.setSize(15,15);
rollwidget.setColor("AAFFFFFF");
end
end
function action(draginfo)
local rActor = ActorManager.getActor("pc", window.getDatabaseNode());
ActionAbility.performRoll(draginfo, rActor, getValue());
return true;
end
function onDragStart(button, x, y, draginfo)
return action(draginfo);
end
function onDoubleClick(x,y)
return action();
end
</script>
</basicnumber>
When used, it returns. Script Error: [string "scripts/manager_actor.lua"]:443: attempt to compare string with number
Digging into it:
-- GET ABILITY VALUE
local nStatScore = getAbilityScore(rActor, sStat);
print(rActor)
print(sStat)
print(sAbility)
if nStatScore < 0 then
return 0;
end
Returned
Script Notice:
Script Notice: 4
Script Notice: 4
Script Notice:
Script Notice: level
Script Notice: halflevel
Script Error: [string "scripts/manager_actor.lua"]:443: attempt to compare string with number
And on the same sheet:
function getActor(sActorType, varActor)
print(sActorType)
print(varActor)
-- GET ACTOR NODE
local nodeActor = nil;
if type(varActor) == "string" then
if varActor ~= "" then
nodeActor = DB.findNode(varActor);
end
elseif type(varActor) == "databasenode" then
nodeActor = varActor;
end
if not nodeActor then
return nil;
end
Returned
Script Notice: pc
Script Notice:
Script Error: [string "scripts/manager_actor.lua"]:443: attempt to compare string with number
I can see a string is being read instead of a number somewhere down the line, but Im not sure how. Any ideas?