2016-03-31 13 views
0
I ve ben gerçek dışı komut dosyası olarak ilgili daha fazla C++ C dayanmaktadır olan bir sorun yaşıyorum bir süredir gerçek dışı motoru 3.5 dayanmaktadır "Outlast" denilen bu oyunu modding oldum

++ :Unreal Senaryo kodu modding garip bir konu

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 > } 

I (2 yolu mümkün) burada o fonksiyonu çağırıyorum:

Ben bir dize ve bir boolean gerektirir oyunda varolan işlevini çağırıyorum

, bu o fonksiyondur

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

Bu noktada yaşıyorum garip bir sorun var, "KillHero" dizesi nedense bu işleve gitme şansını değildir (her iki yöntem) bu yüzden "CheckpointStr" nde "KillHero" değildir çünkü eğer deyimi başarısız olur herşey! GetOLPC nereden geldiğini merak herkes için

, geçerli playercontroller elde etmektir ve bu fonksiyon şöyle:

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

Ve bu işlev sayesinde sen tutan sınıfın "OLPlayerController" erişebilir

"StartNewGameAtCheckpoint"

Ben biliyorum ben numbatteries yerleştirmek ve iyi çalışıyor eğer dışında notifydifficultychanged çünkü eğer varsa. Ayrıca içinde bir dize kullanır

Outer.consolecommand("camera freecam"); 

ama bu iyi çalışıyor:

Teknik olarak oyun bunu yapıyor olarak başka bir yerde çalışması gerekir.

kimse neyin yanlış olduğunu biliyor mu?

Teşekkür

+0

'u temsil etmiyor, ama UnrealScript'i bilmiyorum C++, '==' operatörünü kullanarak bu durumda yanlış olur. Aşağıdaki gibi bir şey istersiniz: 'if (! Strcmp (CheckpointStr," Kill Hero ")) – TriskalJM

+0

@TriskalJM' CheckpointStr' 'string' olarak tanımlandığından (eğer varsayalım - std :: string' varsa beklendiği gibi, 'operatör ==' çalışır) C++ bahsediyoruz ('beri std :: string' çeşitli yollarla) onları aşırı yüklenmiş ve Öneriniz bile derlemek olmaz. C++ değil, C. –

+0

@ AlgirdasPreidžius fuar noktası. – TriskalJM

cevap

0

Eh ... Şu anda haha ​​gerçekten aptal hissediyorum! Oyunda hex modelleme yaptığımdan beri "EqualEqual_StringString" olan 7A'yı kullanmam gerekiyordu ama "EqualEqual_NameName" olan FE'yi kullanmıştım, her ikisi de "==" xD