Lookchange

07/21/2013 11:15 Wanetrain#16
Quote:
Originally Posted by Velmore View Post
Was haben bitte Texte in der DefineNeuz zu suchen?

Die TID_MMI Sachen gehören in die DefineText.h
Is ja nich so als könnte man es reinpacken wo man möchte, ne?

Item ID's hab ich uch schon (übersich halber) in die defineWorld.h geschrieben, men jungchen.

Also wenn ich dass richtig verstehe, dass soll also dass "Model Change" von V19 sein? richtig? nadan legen wir mal los mit "Kritisieren", und zwar bei dem unteren Slot wo dass ergebniss angezeigt wird gibt es auch noch ein Tooltip, dann: wer braucht sowas? ich finde dass verwirrt nur andere.
07/21/2013 12:09 Velmore#17
Quote:
Originally Posted by Wanetrain View Post
Is ja nich so als könnte man es reinpacken wo man möchte, ne?

Item ID's hab ich uch schon (übersich halber) in die defineWorld.h geschrieben, men jungchen.
Joar aber ich denke nicht das Killian so ne Plan hat. Dann sollte er es in der DefineText.h definieren.
07/21/2013 14:50 WurstbrotQT#18
Code:
BOOL CWndLookChange::SetItem(CItemElem *pItem)
{
	if( !pItem )
		return FALSE;
	CItemElem **ppItemTarget = NULL;
	int nMsg = IsValidItem(pItem);
	if( m_pItemDest )
	{
		if( pItem->m_dwItemId == m_pItemDest->m_dwItemId )
			return FALSE;
		if( nMsg == -1 )
		{

			if( pItem->GetProp()->dwItemKind3 == m_pItemDest->GetProp()->dwItemKind3 
				&& (m_pItemDest->GetProp()->dwItemSex == pItem->GetProp()->dwItemSex 
					|| pItem->GetProp()->dwItemSex == SEX_SEXLESS)
				)
			{
				ppItemTarget = &m_pItemSource;
				m_pStart->EnableWindow();
			}else
				nMsg = TID_MMI_LOOKCHANGE07;
		}
	}else{
		if( nMsg == -1 )
		{
			ppItemTarget = &m_pItemDest;
			if( m_pItemSource )
			{
				m_pItemSource->SetExtra(0);
				m_pItemSource = NULL;
			}
		}
	}
	if( ppItemTarget )
	{
		if( *ppItemTarget )
			(*ppItemTarget)->SetExtra(0);
		*ppItemTarget = pItem;
		(*ppItemTarget)->SetExtra(1);
	}
	if( nMsg != -1 )
	{
		g_WndMng.PutDefinedString(nMsg);
		return FALSE;
	}
	return TRUE;

}
Hier der Teil wo ich etwas auskommentiert habe.

Code:
void CWndLookChange::OnMouseWndSurface(CPoint point)
{
	if( m_pRectDest->PtInRect(point) && m_pItemDest )
	{
		PUT_TOOL_TIP(*m_pRectDest,point,m_pItemDest);
	}else if( m_pRectSource->PtInRect(point) && m_pItemSource )
	{
		PUT_TOOL_TIP(*m_pRectSource,point,m_pItemSource);
	}else if( m_pRectResult->PtInRect(point) )
	{
		CItemElem itemElem = *m_pItemDest;
		itemElem.SetLook(m_pItemSource->m_dwItemId);
		PUT_TOOL_TIP(*m_pRectResult,point,&itemElem);
	}
	CWndNeuz::OnMouseWndSurface(point);
}
Das is der Tooltip, ka obs aufm Offi auch so ist, sieht aber logisch aus.

Das System ist auf V19 Resourcen ausgelegt, weil es ja auch ein V19 System ist, also sollte klar sein, dass das Item und die jeweiligen Texte definiert sind.

Quote:
Originally Posted by Wanetrain View Post
dann: wer braucht sowas? ich finde dass verwirrt nur andere.
Das ist ein billiger Abklatsch vom moggen von wow, ich finds recht cool weil man da, wenn einem das Bloody Model besser als das seiner momentanen Waffe gefällt, das Model übertragen kann, klingt eig logisch, oder?

@OT: Die Datei heißt defineText.h, weil da die TIDs, die Text IDs gespeichert werden, warum sollte man die in der defineWorld.h speichern?^^
07/21/2013 15:44 Jopsi332#19
Es gibt noch 2 Dinge in der neuen Spec_Item von v19 für Modelchange, wegen offi like halten.
07/21/2013 15:46 Deadline.#20
:/
07/21/2013 17:40 Rodopushin#21
Danke! Soweit so gut. Nun habe ich jedoch 2 neue:

PHP Code:
WorldServer fatal error LNK11201 unresolved externals
WorldServer error LNK2019
unresolved external symbol "private: void __thiscall CDPSrvr::OnLookChange(class CAr &,unsigned long,unsigned long,unsigned char *,unsigned long)" (?OnLookChange@CDPSrvr@@AAEXAAVCAr@@KKPAEK@Zreferenced in function "public: __thiscall CDPSrvr::CDPSrvr(void)" (??0CDPSrvr@@QAE@XZ
User.h:
PHP Code:
#ifdef __GUILD_HOUSE_MIDDLE
public:
    
void    AddGuildHouseTenderMainWndmap<OBJIDchar*>& mapGHList );
    
void    AddGuildHouseTenderInfoWndOBJID objGHIdint nTenderMinPenya__int64 nTenderPenyavector<DWORD>& vecGuildId );
    
void    AddGuildHouseTenderResultOBJID objGHIdBOOL bResult );
#endif // __GUILD_HOUSE_MIDDLE

#ifdef __LOOKCHANGE
public:
    
void    AddLookChangeDWORD dwIDDWORD dwLook );
#endif

#ifdef    __COLOSSEUM
public:
    
void    SendColosseumEnter();
    
void    SendColosseumStartint nTime );
    
void    SendColosseumReady1int nTimeBYTE nStage );
    
void    SendColosseumReady2int nTime );
    
void    SendColosseumEndMatchBOOL bWinint nTime );
#endif //__COLOSSEUM 

DpSrvr.cpp
PHP Code:
#ifdef __GUILD_HOUSE_MIDDLE
    
ON_MSGPACKETTYPE_GUILDHOUSE_TENDER_MAINWNDOnGuildHouseTenderMainWnd );
    
ON_MSGPACKETTYPE_GUILDHOUSE_TENDER_INFOWNDOnGuildHouseTenderInfoWnd );
    
ON_MSGPACKETTYPE_GUILDHOUSE_TENDER_JOINOnGuildHouseTenderJoin );
#endif // __GUILD_HOUSE_MIDDLE

#ifdef __LOOKCHANGE
    
ON_MSGPACKETTYPE_LOOKCHANGEOnLookChange );
#endif

#ifdef    __COLOSSEUM
    
ON_MSGPACKETTYPE_COLOSSEUMOnColosseum );
#endif // __COLOSSEUM 
07/21/2013 18:31 i33zGames#22
Quote:
Originally Posted by xXXKillianXXx View Post
Danke! Soweit so gut. Nun habe ich jedoch 2 neue:

PHP Code:
WorldServer fatal error LNK11201 unresolved externals
WorldServer error LNK2019
unresolved external symbol "private: void __thiscall CDPSrvr::OnLookChange(class CAr &,unsigned long,unsigned long,unsigned char *,unsigned long)" (?OnLookChange@CDPSrvr@@AAEXAAVCAr@@KKPAEK@Zreferenced in function "public: __thiscall CDPSrvr::CDPSrvr(void)" (??0CDPSrvr@@QAE@XZ
User.h:
PHP Code:
#ifdef __GUILD_HOUSE_MIDDLE
public:
    
void    AddGuildHouseTenderMainWndmap<OBJIDchar*>& mapGHList );
    
void    AddGuildHouseTenderInfoWndOBJID objGHIdint nTenderMinPenya__int64 nTenderPenyavector<DWORD>& vecGuildId );
    
void    AddGuildHouseTenderResultOBJID objGHIdBOOL bResult );
#endif // __GUILD_HOUSE_MIDDLE

#ifdef __LOOKCHANGE
public:
    
void    AddLookChangeDWORD dwIDDWORD dwLook );
#endif

#ifdef    __COLOSSEUM
public:
    
void    SendColosseumEnter();
    
void    SendColosseumStartint nTime );
    
void    SendColosseumReady1int nTimeBYTE nStage );
    
void    SendColosseumReady2int nTime );
    
void    SendColosseumEndMatchBOOL bWinint nTime );
#endif //__COLOSSEUM 

DpSrvr.cpp
PHP Code:
#ifdef __GUILD_HOUSE_MIDDLE
    
ON_MSGPACKETTYPE_GUILDHOUSE_TENDER_MAINWNDOnGuildHouseTenderMainWnd );
    
ON_MSGPACKETTYPE_GUILDHOUSE_TENDER_INFOWNDOnGuildHouseTenderInfoWnd );
    
ON_MSGPACKETTYPE_GUILDHOUSE_TENDER_JOINOnGuildHouseTenderJoin );
#endif // __GUILD_HOUSE_MIDDLE

#ifdef __LOOKCHANGE
    
ON_MSGPACKETTYPE_LOOKCHANGEOnLookChange );
#endif

#ifdef    __COLOSSEUM
    
ON_MSGPACKETTYPE_COLOSSEUMOnColosseum );
#endif // __COLOSSEUM 


DPSrvr.cpp Eintrag vergessen.
07/21/2013 18:53 Rodopushin#23
Aiaiai ich blinder Fisch, habe tatsächlich einen Code vergessen, nun ist alles fehlerfrei abgelaufen. Danke nochmal an alle und auch an den TE, der sich trotzdem gemeldet hat, auch wenn er eigentlich keinen Support geben wollte.

Kompilieren fehlerfrei abgelaufen, nun komme ich nichtmehr in den World rein. Werde beim Certifier disconnectet.

Sun Jul 21 19:07:03 2013
0 - CERT_CONNECTED
Sun Jul 21 19:07:03 2013
2 - CERT_SRVR_LIST
Sun Jul 21 19:07:03 2013
4 - LOGIN_CONNECTED
Sun Jul 21 19:07:03 2013
8 - LOGIN_CACHE_ADDR
Sun Jul 21 19:07:03 2013
6 - LOGIN_PLAYER_LIST
Sun Jul 21 19:07:03 2013
15 - CERT_DISCONNECT
network error:64
Sun Jul 21 19:07:04 2013
9 - CACHE_CONNECTED
Sun Jul 21 19:07:05 2013
11 - LOGIN_REQ_PREJOIN
Sun Jul 21 19:07:05 2013
12 - LOGIN_ACK_PREJOIN
07/21/2013 20:06 alfredico#24
The armor appear invisible in your login screen?
07/21/2013 20:14 Rodopushin#25
Quote:
Originally Posted by alfredico View Post
The armor appear invisible in your login screen?
No, I compiled the servers and the Neuz.exe without errors.
Then I start Account - World server, create a new account and i don't can login to the worldserver. I don't make modelchange, (and i can't make modelchange, because i can't login^^).

The armor is normal.

Error:
2013/ 7/21 23:57:25
OnJoin(): Test1, 4

Edit:
Es liegt am WorldServer, folgende Dateien können die Ursache sein:
- DpSrvr.cpp
- DpSrvr.h
- User.cpp
- User.h

Zumindest kam ich wieder ins Spiel, als ich den World Server ausgetauscht habe.
Könnte es an den Files liegen, dass es nicht funktioniert? Ich verwende die Bloody Flyff Files

Greetings,
Killian
07/22/2013 07:48 WurstbrotQT#26
Quote:
Originally Posted by alfredico View Post
The armor appear invisible in your login screen?
This is caused by wrong/old database entries.
You could fix it by setting the Look to 0xFFFFFFFF when the Look you try to apply to the item is 0, because the GetIntPaFromStr returns 0 if the location is higher then the length of the given string.

Obj.h:
Code:
#ifdef __LOOKCHANGE
	void SetLook(DWORD dwId){ m_dwLookId = (dwId == 0 ? NULL_ID : dwId); }
	DWORD GetLook(){ return m_dwLookId; }
	bool IsChangedLook(){ return m_dwLookId != NULL_ID; }
#endif


Quote:
Originally Posted by xXXKillianXXx View Post
No, I compiled the servers and the Neuz.exe without errors.
Then I start Account - World server, create a new account and i don't can login to the worldserver. I don't make modelchange, (and i can't make modelchange, because i can't login^^).

The armor is normal.

Error:
2013/ 7/21 23:57:25
OnJoin(): Test1, 4

Edit:
Es liegt am WorldServer, folgende Dateien können die Ursache sein:
- DpSrvr.cpp
- DpSrvr.h
- User.cpp
- User.h

Zumindest kam ich wieder ins Spiel, als ich den World Server ausgetauscht habe.
Könnte es an den Files liegen, dass es nicht funktioniert? Ich verwende die Bloody Flyff Files

Greetings,
Killian
Irgendetwas läuft beim serialisieren des Movers schief. Das könnte daran liegen, dass du vergessen hast in einer der VersionCommon.h __LOOKCHANGE zu definieren.
Ich denke mal im DB-Server, weil sonst auch nichts mit dem normalen WS laufen würde.




EDIT:
Auf neusten Parameter in der Spec_Item.txt angepasst.

Die aktuelle Version steht nun auch zum Download bereit.

DPSrvr.cpp:
Code:
#ifdef __LOOKCHANGE
void CDPSrvr::OnLookChange(CAr &ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long)
{
	CUser *pUser = g_UserMng.GetUser(dpidCache, dpidUser);
	if( IsInvalidObj(pUser) )
		return;
	CItemElem *pDest, *pSrc;
	DWORD dwIdSrc, dwIdDest;
	ar >> dwIdSrc >> dwIdDest;

	pSrc = pUser->m_Inventory.GetAtId(dwIdSrc);
	pDest = pUser->m_Inventory.GetAtId(dwIdDest);

	if(!IsUsableItem(pSrc) || !IsUsableItem(pDest))
	{
		pUser->AddDefinedText(TID_MMI_LOOKCHANGE06);
		return;
	}
	if(pSrc->IsChangedLook() || pDest->IsChangedLook())
	{
		pUser->AddDefinedText(TID_MMI_LOOKCHANGE01);
		return;
	}
	if((!pSrc->GetProp() || !pDest->GetProp()) || pDest->GetProp()->dwItemKind3 != pSrc->GetProp()->dwItemKind3 )
	{
		pUser->AddDefinedText(TID_MMI_LOOKCHANGE07);
		return;
	}
	if(!pSrc->GetProp()->bIsLooksChangeMaterial || !pDest->GetProp()->bCanLooksChange)
	{
		pUser->AddDefinedText(TID_MMI_LOOKCHANGE08);
		return;
	}

	pDest->SetLook(pSrc->m_dwItemId);
	pUser->RemoveItem((BYTE)pSrc->m_dwObjId, 1);
	pUser->AddLookChange( pDest->m_dwObjId, pDest->GetLook() );
	pUser->AddDefinedText(TID_MMI_LOOKCHANGE04);
}
#endif

WndGold.cpp:
Code:
int CWndLookChange::IsValidItem(CItemElem *pItem)
{
	ItemProp *prop = pItem->GetProp();
	if( !prop )
		return TID_MMI_LOOKCHANGE01;
	if( pItem->IsChangedLook() )
		return TID_MMI_LOOKCHANGE01;
	return -1;
}
BOOL CWndLookChange::SetItem(CItemElem *pItem)
{
	if( !pItem )
		return FALSE;
	CItemElem **ppItemTarget = NULL;
	int nMsg = IsValidItem(pItem);
	if( m_pItemDest )
	{
		if( pItem->m_dwItemId == m_pItemDest->m_dwItemId )
			return FALSE;
		if( nMsg == -1 )
		{
			if( pItem->GetProp()->bIsLooksChangeMaterial )
			{
				if( pItem->GetProp()->dwItemKind3 == m_pItemDest->GetProp()->dwItemKind3 
					&& (m_pItemDest->GetProp()->dwItemSex == pItem->GetProp()->dwItemSex 
						|| pItem->GetProp()->dwItemSex == SEX_SEXLESS)
					)
				{
					ppItemTarget = &m_pItemSource;
					m_pStart->EnableWindow();
				}else
					nMsg = TID_MMI_LOOKCHANGE07;
			}else
				nMsg = TID_MMI_LOOKCHANGE08;
		}
	}else{
		if( nMsg == -1 )
		{
			if( pItem->GetProp()->bCanLooksChange )
			{
				ppItemTarget = &m_pItemDest;
				if( m_pItemSource )
				{
					m_pItemSource->SetExtra(0);
					m_pItemSource = NULL;
				}
			}else
				nMsg = TID_MMI_LOOKCHANGE;
		}
	}
	if( ppItemTarget )
	{
		if( *ppItemTarget )
			(*ppItemTarget)->SetExtra(0);
		*ppItemTarget = pItem;
		(*ppItemTarget)->SetExtra(1);
	}
	if( nMsg != -1 )
	{
		g_WndMng.PutDefinedString(nMsg);
		return FALSE;
	}
	return TRUE;

}
07/23/2013 01:13 Rodopushin#27
Ich habe nun die beiden Dateien ausgetauscht bzw. den Code ausgewechselt und nun komme ich auch in den World rein ohne Probleme.

Habe bei der character.inc folgendes hinzugefügt:
PHP Code:
MaFl_FaceOff
{
    
setting
    
{
        
AddMenuMMI_BEAUTYSHOP_SKIN );
        
AddMenuMMI_LOOKCHANGE ); 
                  
        
SetImage
        
(
        
IDS_CHARACTER_INC_000628
        
);
    }

    
SetName
    
(
    
IDS_CHARACTER_INC_000629
    
);

Er findet MMI_LOOKCHANGE aber nicht.

PHP Code:
20137/23   01:05:51   FileName character.inc(977) : MMI_LOOKCHANGE Not Found. : MMI_LOOKCHANGE ); 

                  

        
SetImage

        
(

        
IDS_CHARACTER_INC_00 


WndWorld.cpp:
PHP Code:
#ifdef __LOOKCHANGE
        
case MMI_LOOKCHANGE:
            {
                
CWndLookChange *pLook = (CWndLookChange*)g_WndMng.GetWndBase(APP_LOOKCHANGE);
                if( 
pLook )
                    
SAFE_DELETEpLook );
                
pLook = new CWndLookChange();
                
pLook->Initialize();
            }
            break;
#endif 
07/23/2013 02:26 TrøublêMakêr#28
Gehört in DefineNeuz.h (Resource). Beachte dass du die selbe nummer angeben musst wie in Source. Dann gehört in TID_MMI_MODELCHANGE in Definetext.h und Textclient.txt und Textclient.txt.txt Name setzen!
07/23/2013 03:15 Rodopushin#29
Habe Eintrag in defineneuz.h gemacht (MMI_LOOKCHANGE): Resource und Source, auf gleiche Nummer geachtet.

defineText.h habe ich TID_MMI_LOOKCHANGE ebenso Resource wie auch in der Source angegeben.

Bei der textClient.inc und textClient.txt habe ich ebenso alles überarbeitet wie du gesagt hast. Auch Resource & Source wieder

--------------------------------------------------------------

Nun wird bei mir ingame als Tab angezeigt "????????.????? ??????" etc.
Aber in der textClient.inc & textClient.txt.txt steht es drin.
Wenn ich draufklicke, passiert nix.

Eine textClient.txt besitze ich nicht.
07/23/2013 06:53 Blend™#30
Dann Poste doch mal deine Einträge, dann kann dir bestimmt jemand besser Helfen.