|
You last visited: Today at 05:02
Advertisement
Lookchange
Discussion on Lookchange within the Flyff PServer Guides & Releases forum part of the Flyff Private Server category.
07/21/2013, 11:15
|
#16
|
elite*gold: 0
Join Date: Apr 2013
Posts: 511
Received Thanks: 431
|
Quote:
Originally Posted by Velmore
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
|
#17
|
elite*gold: 10
Join Date: Feb 2011
Posts: 1,760
Received Thanks: 501
|
Quote:
Originally Posted by Wanetrain
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
|
#18
|
elite*gold: 0
Join Date: Jun 2013
Posts: 166
Received Thanks: 259
|
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
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
|
#19
|
elite*gold: 4
Join Date: Mar 2010
Posts: 3,148
Received Thanks: 1,535
|
Es gibt noch 2 Dinge in der neuen Spec_Item von v19 für Modelchange, wegen offi like halten.
|
|
|
07/21/2013, 15:46
|
#20
|
elite*gold: 0
Join Date: Jan 2013
Posts: 22,407
Received Thanks: 8,238
|
Code:
Source\_Interface\WndField.cpp(2277): error C2065: 'pWndBase' : undeclared identifier
Source\_Interface\WndField.cpp(2278): error C3861: 'pWndBase': identifier not found, even with argument-dependent lookup
Source\_Interface\WndField.cpp(2279): error C2227: left of '->Destroy' must point to class/struct/union
type is ''unknown-type''
Source\_Interface\WndField.cpp(2279): error C3861: 'pWndBase': identifier not found, even with argument-dependent lookup
Source\_Interface\WndField.cpp(3271): error C3861: 'pWndBase': identifier not found, even with argument-dependent lookup
Source\_Interface\WndField.cpp(3273): error C2065: 'pFocusItem' : undeclared identifier
Source\_Interface\WndField.cpp(3273): error C2227: left of '->GetExtra' must point to class/struct/union
type is ''unknown-type''
Source\_Interface\WndField.cpp(3273): error C2227: left of '->m_nItemNum' must point to class/struct/union
type is ''unknown-type''
Source\_Interface\WndField.cpp(3273): error C3861: 'pFocusItem': identifier not found, even with argument-dependent lookup
Source\_Interface\WndField.cpp(3275): error C2227: left of '->SetItem' must point to class/struct/union
type is ''unknown-type''
Source\_Interface\WndField.cpp(3275): error C3861: 'pFocusItem': identifier not found, even with argument-dependent lookup
Source\_Interface\WndField.cpp(3275): error C3861: 'pWndBase': identifier not found, even with argument-dependent lookup
:/
|
|
|
07/21/2013, 17:40
|
#21
|
elite*gold: 7
Join Date: Oct 2007
Posts: 431
Received Thanks: 253
|
Danke! Soweit so gut. Nun habe ich jedoch 2 neue:
PHP Code:
WorldServer fatal error LNK1120: 1 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@Z) referenced in function "public: __thiscall CDPSrvr::CDPSrvr(void)" (??0CDPSrvr@@QAE@XZ)
User.h:
PHP Code:
#ifdef __GUILD_HOUSE_MIDDLE public: void AddGuildHouseTenderMainWnd( map<OBJID, char*>& mapGHList ); void AddGuildHouseTenderInfoWnd( OBJID objGHId, int nTenderMinPenya, __int64 nTenderPenya, vector<DWORD>& vecGuildId ); void AddGuildHouseTenderResult( OBJID objGHId, BOOL bResult ); #endif // __GUILD_HOUSE_MIDDLE
#ifdef __LOOKCHANGE public: void AddLookChange( DWORD dwID, DWORD dwLook ); #endif
#ifdef __COLOSSEUM public: void SendColosseumEnter(); void SendColosseumStart( int nTime ); void SendColosseumReady1( int nTime, BYTE nStage ); void SendColosseumReady2( int nTime ); void SendColosseumEndMatch( BOOL bWin, int nTime ); #endif //__COLOSSEUM
DpSrvr.cpp
PHP Code:
#ifdef __GUILD_HOUSE_MIDDLE ON_MSG( PACKETTYPE_GUILDHOUSE_TENDER_MAINWND, OnGuildHouseTenderMainWnd ); ON_MSG( PACKETTYPE_GUILDHOUSE_TENDER_INFOWND, OnGuildHouseTenderInfoWnd ); ON_MSG( PACKETTYPE_GUILDHOUSE_TENDER_JOIN, OnGuildHouseTenderJoin ); #endif // __GUILD_HOUSE_MIDDLE
#ifdef __LOOKCHANGE ON_MSG( PACKETTYPE_LOOKCHANGE, OnLookChange ); #endif
#ifdef __COLOSSEUM ON_MSG( PACKETTYPE_COLOSSEUM, OnColosseum ); #endif // __COLOSSEUM
|
|
|
07/21/2013, 18:31
|
#22
|
elite*gold: 0
Join Date: Feb 2013
Posts: 160
Received Thanks: 151
|
Quote:
Originally Posted by xXXKillianXXx
Danke! Soweit so gut. Nun habe ich jedoch 2 neue:
PHP Code:
WorldServer fatal error LNK1120: 1 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@Z) referenced in function "public: __thiscall CDPSrvr::CDPSrvr(void)" (??0CDPSrvr@@QAE@XZ)
User.h:
PHP Code:
#ifdef __GUILD_HOUSE_MIDDLE
public:
void AddGuildHouseTenderMainWnd( map<OBJID, char*>& mapGHList );
void AddGuildHouseTenderInfoWnd( OBJID objGHId, int nTenderMinPenya, __int64 nTenderPenya, vector<DWORD>& vecGuildId );
void AddGuildHouseTenderResult( OBJID objGHId, BOOL bResult );
#endif // __GUILD_HOUSE_MIDDLE
#ifdef __LOOKCHANGE
public:
void AddLookChange( DWORD dwID, DWORD dwLook );
#endif
#ifdef __COLOSSEUM
public:
void SendColosseumEnter();
void SendColosseumStart( int nTime );
void SendColosseumReady1( int nTime, BYTE nStage );
void SendColosseumReady2( int nTime );
void SendColosseumEndMatch( BOOL bWin, int nTime );
#endif //__COLOSSEUM
DpSrvr.cpp
PHP Code:
#ifdef __GUILD_HOUSE_MIDDLE
ON_MSG( PACKETTYPE_GUILDHOUSE_TENDER_MAINWND, OnGuildHouseTenderMainWnd );
ON_MSG( PACKETTYPE_GUILDHOUSE_TENDER_INFOWND, OnGuildHouseTenderInfoWnd );
ON_MSG( PACKETTYPE_GUILDHOUSE_TENDER_JOIN, OnGuildHouseTenderJoin );
#endif // __GUILD_HOUSE_MIDDLE
#ifdef __LOOKCHANGE
ON_MSG( PACKETTYPE_LOOKCHANGE, OnLookChange );
#endif
#ifdef __COLOSSEUM
ON_MSG( PACKETTYPE_COLOSSEUM, OnColosseum );
#endif // __COLOSSEUM
|
DPSrvr.cpp Eintrag vergessen.
|
|
|
07/21/2013, 18:53
|
#23
|
elite*gold: 7
Join Date: Oct 2007
Posts: 431
Received Thanks: 253
|
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
|
#24
|
elite*gold: 0
Join Date: Mar 2008
Posts: 665
Received Thanks: 230
|
The armor appear invisible in your login screen?
|
|
|
07/21/2013, 20:14
|
#25
|
elite*gold: 7
Join Date: Oct 2007
Posts: 431
Received Thanks: 253
|
Quote:
Originally Posted by alfredico
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 ****** Flyff Files
Greetings,
Killian
|
|
|
07/22/2013, 07:48
|
#26
|
elite*gold: 0
Join Date: Jun 2013
Posts: 166
Received Thanks: 259
|
Quote:
Originally Posted by alfredico
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
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
|
#27
|
elite*gold: 7
Join Date: Oct 2007
Posts: 431
Received Thanks: 253
|
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
{
AddMenu( MMI_BEAUTYSHOP_SKIN );
AddMenu( MMI_LOOKCHANGE );
SetImage
(
IDS_CHARACTER_INC_000628
);
}
SetName
(
IDS_CHARACTER_INC_000629
);
}
Er findet MMI_LOOKCHANGE aber nicht.
PHP Code:
2013/ 7/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_DELETE( pLook );
pLook = new CWndLookChange();
pLook->Initialize();
}
break;
#endif
|
|
|
07/23/2013, 02:26
|
#28
|
elite*gold: 51
Join Date: Sep 2012
Posts: 1,141
Received Thanks: 575
|
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
|
#29
|
elite*gold: 7
Join Date: Oct 2007
Posts: 431
Received Thanks: 253
|
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
|
#30
|
elite*gold: 0
Join Date: Oct 2012
Posts: 26
Received Thanks: 12
|
Dann Poste doch mal deine Einträge, dann kann dir bestimmt jemand besser Helfen.
|
|
|
All times are GMT +1. The time now is 05:03.
|
|