Integer übertragen?(WndField -> Mover)

06/24/2012 11:23 Crystal-Craft#1
hey leute ich arbeite an meinem glow change system un zwar

habe ich das fenster schon dort ist ein integer der "fuckingnolife" (name ist egal) heißt

dessen wert soll von der WndField.cpp zur Mover.cpp CMover::CreateAbilityOption_SetItemSFX( int nAbilityOption ) übertragen werden.

Nur wie soll man das anstellen und hier mal dies ausschnitte

WndField.cpp
Code:
BOOL CWndGlow::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
{
	int fuckingnolife;
    switch (nID)
    {
    case WIDC_BUTTON_GLOW1:// Glow 1
        { 
			fuckingnolife = 1; // Setzten des ersten glows
            Destroy();
            break;
        }
}
Mover.cpp
Code:
switch( nAbilityOption )
	{
	case 3: dwSfx = XI_GEN_ITEM_SETITEM03; break;
	case 4: dwSfx = XI_GEN_ITEM_SETITEM04; break;
	case 5: dwSfx = XI_GEN_ITEM_SETITEM05; break;
	case 6: dwSfx = XI_GEN_ITEM_SETITEM06; break;
	case 7: dwSfx = XI_GEN_ITEM_SETITEM07; break;
	case 8: dwSfx = XI_GEN_ITEM_SETITEM08; break;
	case 9: dwSfx = XI_GEN_ITEM_SETITEM09; break;
	case 10: //case 10 or +10 set
{
	//int fuckingnolife;
switch(fuckingnolife)
{
case 1: dwSfx = SAUSENSTRGLOW; break;
default: dwSfx = XI_GEN_ITEM_SETITEM10; break; 
}
wie ihr seht soll auf den button klick der wert von dem int auf 1 gesetzt werden und beim set anziehen halt der int geswitch werden und dementsprechend der glow gesetzt werden. Nur irgednwie muss ich dne wert ja zur mover.cpp bekommen. Nur wie?

oder gibt es eine komplett ander methode?

mfg
06/24/2012 11:44 lolix3#2
Ich bin nun auch nicht so der C++'ler aber versuch deine Variable mal in der WndField.h zu deklarieren und in der Mover.cpp Datei, die WndField.h zu inkludieren.
Damit solltest du Zugriff auf die Variable via beider Datein haben.

Greetz
06/24/2012 13:57 Unleashed!#3
Wie wärs einfach damit:
WndField.cpp
Code:
m_gPlayer->DeineVariable = 1337;
Ich weiß nicht mehr genau, wie es hieß, sowas ähnliches wie m_gPlayer auf jedenfall, musste mal suchen ;D
06/24/2012 18:47 Aspectus#4
Leg ne Variable in Mover.h an, dann hast du mit g_pPlayer auch Zugriff drauf.
06/25/2012 07:12 Jopsi332#5
Wenn dus gescheit machen willst
Machn neues packet wo du die variable an den ws übergibst. Ne neue variable in mover.h dann.im buttonteil
Code:
 g_pPlayer->deinevariable = 1;
g_DPlay.deinpacket(1);
Dann serialiezierat du das ganze.damit alle clients die info haben.und dann in db oder hwoption abspeichern
06/25/2012 12:38 Crystal-Craft#6
ok doch wie genau lege ich ein neues packet an? und wie speicher ich "das ganze" in der hwoption ab? sry bin noch nicht sooo vertraut mit der source ^^
06/25/2012 12:42 Jopsi332#7
Msghdr.h,dpclient.cpp 'dpclient.h,dpsrvr.cpp,dpsrvr.h,hwoption.cpp,hwopt ion.h
06/25/2012 19:27 Crystal-Craft#8
msghdr dpclient dpsrvr habe ich jetzt fertig nur was soll jetzt in der dpsrvr rein bei case 1(button gedrückt)?

weil in der dpsrvr ist ja nur pUser verfügbar.

dpsrvr
Code:
void CDPSrvr::OnSendGlowChange( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long )//Glow Change Zeug
{ 
    CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser ); 
         
    if( IsValidObj( pUser ) ) 
        { 
        BYTE nID; 
       

        ar >> nID; 

        switch( nID ) 
        { 
            case 1: 
            break; 
            
            default: return ; 
        } 

        
        } 
}
06/25/2012 20:06 Jopsi332#9
((CMover*)this)->deinevariable = 1;
06/25/2012 20:27 Crystal-Craft#10
ok danke ^^
nur irgendwie funkt das nicht

mover.cpp
Code:
switch( nAbilityOption )
	{
	case 3: dwSfx = XI_GEN_ITEM_SETITEM03; break;
	case 4: dwSfx = XI_GEN_ITEM_SETITEM04; break;
	case 5: dwSfx = XI_GEN_ITEM_SETITEM05; break;
	case 6: dwSfx = XI_GEN_ITEM_SETITEM06; break;
	case 7: dwSfx = XI_GEN_ITEM_SETITEM07; break;
	case 8: dwSfx = XI_GEN_ITEM_SETITEM08; break;
	case 9: dwSfx = XI_GEN_ITEM_SETITEM09; break;
	case 10: //case 10 or +10 set
		switch(choosenglow) {
	case 1: dwSfx = SAUSENSTRGLOW; break;
	default: dwSfx = XI_GEN_ITEM_SETITEM10; break;
		}
    break;
	}
DpSrvr.cpp
Code:
ON_MSG( PACKETTYPE_SENDGLOWCHANGE, OnSendGlowChange);
und

Code:
void CDPSrvr::OnSendGlowChange( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long )
{ 
    CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser ); 
         
    if( IsValidObj( pUser ) ) 
        { 
        BYTE nID;

        ar >> nID; 

        switch( nID ) 
        { 
            case 1: ((CMover*)this)->choosenglow = 1;
                
            break; 
            
            default: return ; 
        } 

        
        } 
}
WndField.cpp
Code:
case WIDC_BUTTON_GLOW1:// Glow 1
        { 
            g_DPlay.SendGlowChange( 1 );
            Destroy();
            break;
        }
MsgHdr
Code:
#define PACKETTYPE_SENDGLOWCHANGE                (DWORD)0x88100399
DPClient.cpp
Code:
void CDPClient::SendGlowChange( BYTE nID ) 
{ 
    BEFORESENDSOLE( ar, PACKETTYPE_SENDGLOWCHANGE, DPID_UNKNOWN ); 
    ar << nID; 
    SEND( ar, this, DPID_SERVERPLAYER ); 

}
DPClient.h
Code:
	public: 
    void SendGlowChange( BYTE nID );
Nur ingame wenn ich den button drücke und setteil neu aniehe ist es immernoch der normale glow , nur wieso?