2016-03-31 24 views
0

我一直在改装这个游戏叫做“Outlast”,它基于虚幻引擎3.5一段时间了,而且我遇到了一个更多C++相关的问题,因为虚幻脚本基于C++ :虚幻脚本代码改变奇怪的问题

我打电话的游戏,需要一个字符串和布尔现有的功能,这是一个功能:

event StartNewGameAtCheckpoint(string CheckpointStr, bool bSaveToDisk){ 
local OLCheckpoint CheckCP, startCP; 
local OLHero Hero; 
local OLGame CurrentGame; 
local OLEngine Engine; 


// End:0x33 
if(CheckpointStr == "KillHero") >>> this if is new code that I added myself 
{ 
    NumBatteries = 86; 
    NotifyDifficultyChanged(); 
    return; 
} ... more irrelevant code comes after this > } 

我打电话这里功能(2种可能):

Method A: 
class'OLGFxMoviePlayer'.static.GetOLPC().StartNewGameAtCheckpoint("KillHero", false); 
Method B: 
Outer.GetOLPC().StartNewGameAtCheckpoint("KillHero", false); 

我在这里有一个奇怪的问题,“KillHero”字符串由于某种原因(两种方法)没有将其设置为该函数,因此if语句将失败,因为“CheckpointStr”不是“KillHero”at所有!

对于任何人想知道GetOLPC是从哪里来的,它是让当前的PlayerController和功能是这样的:

function OLPlayerController GetOLPC(){ 
return OLPlayerController(GetPC()); 
//return ReturnValue; 
} 

并通过此功能,您可以访问其持有类“OLPlayerController” “StartNewGameAtCheckpoint”

我知道这是如果因为如果我把numbatteries和notifydifficultychanged以外的,如果它工作正常。

应该在技术上的工作作为别处游戏是这样做的:

Outer.consolecommand("camera freecam"); 

也使用内部的字符串,但能正常工作。

有谁知道错在哪里?

谢谢

+0

我不知道UnrealScript,但在C++,在这种情况下使用'=='运算符是不正确的。你需要像下面这样的东西:'if(!strcmp(CheckpointStr,“Kill Hero”))' – TriskalJM

+0

@TriskalJM由于'CheckpointStr'被定义为'string'(如果我们可以假设'std :: string'正在谈论C++),'operator =='会按预期工作(因为'std :: string'已经以各种方式重载了它们),并且你的建议甚至不会编译。它是C++,而不是C. –

+0

@AlgirdasPreidžius公平点。 – TriskalJM

回答

0

好吧......我现在真的很笨,哈哈!由于我是十六进制修改游戏我需要使用7A这是“EqualEqual_StringString”,但我使用FE是“EqualEqual_NameName”这是非常欺骗的代表“==”xD