2015-04-02 107 views
0
___________________________________________ 
############################################################################################ 
FATAL ERROR in 
action number 4 
of Create Event 
for object eng_Global: 

DoSet :: Invalid comparison type 
at gml_Script_Data_Load (line 1) - ///Data_Load() 
############################################################################################ 
-------------------------------------------------------------------------------------------- 
stack frame is 
gml_Script_Data_Load (line 1) 
called from - gml_Object_eng_Global_CreateEvent_4 (line 60) - Data_Load(); 

我得到这个错误的注释,而不是实际的if语句,我不能没有注释掉Data_Load(),这是什么加载绕过这个用户的数据。游戏制作工作室:DoSet ::无效的比较类型

我最近更新到版本1.4.1567,也许这是这个版本的错误。

我应该声明“Connected”和“Guest”变量都是整数(布尔值),并且不会在代码中的任何点设置为字符串。

这里是Data_Load()脚本:

///Data_Load() 
if (Connected && !Guest) { 

ini_open(User_Name+"_NSD_Temp.ini"); 

// Base Statistics 
Level = ini_read_real("Statistics","Level",Level); 
Exp_Total = ini_read_real("Statistics","Experience_Total",Exp_Total); 
Exp = ini_read_real("Statistics","Experience",Exp); 
Exp_Left = ini_read_real("Statistics","Experience_Left",Exp_Left); 
Exp_Max = ceil(Level*5); 
Gold = ini_read_real("Statistics","Gold",Gold); 
Gold_Total = ini_read_real("Statistics","Gold_Total",Gold_Total); 
Karma = ini_read_real("Statistics","Karma",Karma); 
Karma_Total = ini_read_real("Statistics","Karma_Total",Karma_Total); 
Highscore = ini_read_real("Statistics","Highscore",Highscore); 

Weapons_Inv_Length = ini_read_real("Statistics","Weapons_Inv_Length",Weapons_Inv_Length); 
Stones_Inv_Length = ini_read_real("Statistics","Stones_Inv_Length",Stones_Inv_Length); 
Stone_Slots_Owned = ini_read_real("Statistics","Stones_Slots_Owned",Stones_Slots_Owned); 

// Game 
Ninja_Name = ini_read_string("Game","Ninja_Name",Ninja_Name); 
Ninja_Level = ini_read_real("Game","Ninja_Level",Ninja_Level); 
Ninja_Health = ini_read_real("Game","Ninja_Health",Ninja_Health); 
Ninja_Health_Max = ini_read_real("Game","Ninja_Health_Max",Ninja_Health_Max); 
Ninja_Health_Regen_Upgrade = ini_read_real("Game","Ninja_Health_Regen_Upgrade",Ninja_Health_Regen_Upgrade); 
Ninja_Health_Regen = Ninja_Health_Base*(Ninja_Health_Regen_Upgrade)/room_speed; 
Ninja_Weapon = ini_read_real("Game","Ninja_Weapon",Ninja_Weapon); 
Ninja_Colour = ini_read_real("Game","Ninja_Colour",Ninja_Colour); 
Ninja_Power = ini_read_real("Game","Ninja_Power",Ninja_Power); 
Ninja_Max_Speed = ini_read_real("Game","Ninja_Max_Speed",Ninja_Max_Speed); 
Ninja_Attack_Speed = ini_read_real("Game","Ninja_Attack_Speed",Ninja_Attack_Speed); 

// Weapons Inventory 
for (i=0; i<Weapons_Inv_Length; i++) { 
    Weapons_Inv[i,0] = i; 
    Weapons_Inv[i,1] = ini_read_real("Weapons Inventory","Inv_Slot_"+string(i),0); 
    Weapons[Weapons_Inv[i,1],5] = ini_read_real("Weapons Inventory","Inv_Slot_"+string(i)+"_Owned",Weapons[Weapons_Inv[i,1],5]); 
} 

// Stones Inventory 
for (i=0; i<Stones_Inv_Length; i++) { 
    Stones_Inv[i,0] = i; 
    Stones_Inv[i,1] = ini_read_real("Stones Inventory","Inv_Slot_"+string(i),0); 
    Stones[Stones_Inv[i,1],5] = ini_read_real("Stones Inventory","Inv_Slot_"+string(i)+"_Owned",Stones[Stones_Inv[i,1],5]); 
} 

// Equipped Stones 
for (i=0; i<Stone_Slots_Owned; i++) { 
    Stone_Slots[i,0] = i; 
    Stone_Slots[i,1] = ini_read_real("Stones Equipped","Slot_"+string(i),Stone_Slots[i,1]); 
} 

// Costume Colours 
for (i=0; i<array_height_2d(Colours); i++) { 
    Colours[i,5] = ini_read_real("Costume Colours",Colours[i,1],Colours[i,5]); 
} 

// Stats 
Stat_Clouds_Clicked = ini_read_real("Stats","Clouds_Clicked",Stat_Clouds_Clicked); 
Stat_Stars_Clicked = ini_read_real("Stats","Stars_Clicked",Stat_Stars_Clicked); 

// Options 
SoundFX = ini_read_real("Options","SoundFX",SoundFX); 

// Version 
Save_Version = ini_read_string("Version","Current",Save_Version); 

// Resets 
ForceResets = ini_read_string("External","Force_Resets",Force_Resets); 

ini_close(); 

if (ForceResets != Force_Resets) { 
    Data_Erase(); 
} 

Data_Submit(); 

} // If Connected & Not Guest 
+0

使用调试器查看错误在哪里。您也可以尝试在没有YYC的情况下运行它 - 错误消息可能会更改。 – Dmi7ry 2015-04-02 06:21:52

回答

0

通用的编译器总是奇怪的那些线路故障。它通常不会将空行计为实际行。

如果调整这个问题,那是引发错误代码的实际行是这样的:

if (ForceResets != Force_Resets) { 

也许它不喜欢你基本上是问“如果事情不等于本身“,这很难讲出来。该陈述总会被评估为错误,因此您应该删除它。

由于您没有对这些变量中的任何一个声明var,因此您正在操作调用此脚本的实例上的变量。如果在调用实例中有某种ForceResets脚本变量和ForceResets变量,那么这整个事情可能是一个命名问题。我也做这个假设,因为你叫:

ForceResets = ini_read_string("External","Force_Resets",Force_Resets); 

如果是第三个参数未在此脚本中任何声明。

总而言之,我会说你需要清理一下这个脚本。

专业提示:使用for(var i = 0; ...而不是for(i = 0 99%的时间。否则,您将使用它永远不会使用的变量i离开此实例。

+0

感谢您的信息和提示,我发现了一段时间的修复,记不起来是什么,我忘了在这里发布,但Force_Resets和ForceResets是两个不同的变量,一个是常量,另一个是保存在ini中的全局变量,用于比较。我确实认为我记得它一定是一个问题,而这个问题一直没有被正确设定,但是不要抱着我。 – SteTrezla 2015-05-18 01:48:20