Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Flyff > Flyff Private Server
You last visited: Today at 16:58

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Jobauswahl bei Char-erstellung

Discussion on Jobauswahl bei Char-erstellung within the Flyff Private Server forum part of the Flyff category.

Closed Thread
 
Old   #1
 
elite*gold: 0
Join Date: Mar 2013
Posts: 226
Received Thanks: 97
Jobauswahl bei Char-erstellung

Hi,
Ich habe die Jobauswahl bei der Char-erstellung eingebaut, und es funktioniert auch alles... Nun will ich, dass die Charaktere nicht nackt sind bei der Char-erstellung, sondern Rüstung haben. Ich habe die Rüstung für den Blade und Knight in der jobItem.inc eingetragen. Allerdings wird mir überall die Knightrüssi angezeigt.... Ich muss nun also einen Weg finden, dass meine Rüstung auch bei der Auswahl der verschiedenen Klassen neu geladen wird...
Ich habe die Funktion CMover::UpdateParts erweitert von
Code:
static void		UpdateParts( int nSex,              int nSkinSet, int nFace,[...]
auf
Code:
static void		UpdateParts( int nSex, int nJob, int nSkinSet, int nFace, [...]
und natürlich dementsprechend im Source alles angepasst, aber es hat sich dennoch nichts getan... Ich denke das müsste man so einbauen, wie wenn man das Geschlecht ändert, dass das neu geladen wird, aber ich verstehe den Code noch nicht so gut, dass ich die stelle lokalisieren kann... es muss irgendwo in der WndTitle.cpp sein

würde mich freuen wenn mir jemand helfen könnte

€: Ich denke, dass es daran liegt, dass der Job erst gesendet wird, wenn der charakter erstellt wird, und ich erfrage den Job ja noch während der erstellung, und er zeigt mir immer nur Knight-Equip wegen:
Code:
#ifdef __JOB_CREATE_CHAR
	[COLOR="Red"]m_Player.m_byJob = JOB_KNIGHT;[/COLOR]
	CWndComboBox* pWndJobBox = ( CWndComboBox* )GetDlgItem( WIDC_COMBOBOX1 );
	pWndJobBox->AddString("Knight");//Edit by yannickmama
	pWndJobBox->AddString("Blade");
	pWndJobBox->AddString("Jester");
	pWndJobBox->AddString("Ranger");
	pWndJobBox->AddString("Ringmaster");
	pWndJobBox->AddString("Billposter");
	pWndJobBox->AddString("Psykeeper");
	pWndJobBox->AddString("Elementor");
	pWndJobBox->AddWndStyle( EBS_READONLY );
	pWndJobBox->SetCurSel( 0 );
#endif //__JOB_CREATE_CHAR
Wenn ich das nämlich mit JOB_BLADE ersetze, habe ich immer Blade-EQ

Ich sehe gerade, dass das hier erst abgesendet wird, wenn OK gedrückt wird:
Code:
#ifdef __JOB_CREATE_CHAR
				CWndComboBox* pWndJobBox = ( CWndComboBox* )GetDlgItem( WIDC_COMBOBOX1 );
				assert( pWndJobBox );

				if( pWndJobBox->GetCurSel() == -1 )
				{
					g_WndMng.OpenMessageBox( "Bitte wählen Sie einen Job" );
				return TRUE;
				}

				switch( pWndJobBox->GetCurSel() )
				{
				case 0:
				m_Player.m_byJob = JOB_KNIGHT;
				break;
				case 1:
				m_Player.m_byJob = JOB_BLADE;
				break;
				case 2:
				m_Player.m_byJob = JOB_JESTER;
				break;
				case 3:
				m_Player.m_byJob = JOB_RANGER;
				break;
				case 4:
				m_Player.m_byJob = JOB_RINGMASTER;
				break;
				case 5:
				m_Player.m_byJob = JOB_BILLPOSTER;
				break;
				case 6:
				m_Player.m_byJob = JOB_PSYCHIKEEPER;
				break;
				case 7:
				m_Player.m_byJob = JOB_ELEMENTOR;
				break;
				default:
				m_Player.m_byJob = JOB_KNIGHT;
				break;
				}
#endif //__JOB_CREATE_CHAR
Ich brauche also eine Methode, wie er das sofort aktualisiert...

habe das nun probiert so zu lösen:
Code:
#ifdef __JOB_CREATE_CHAR
		case WIDC_COMBOBOX1:
			{
				
				CWndComboBox* pWndJobBox = ( CWndComboBox* )GetDlgItem( WIDC_COMBOBOX1 );
				assert( pWndJobBox );

				if( pWndJobBox->GetCurSel() == -1 )
				{
					g_WndMng.OpenMessageBox( "Bitte wählen Sie einen Job" );
				return TRUE;
				}

				switch( pWndJobBox->GetCurSel() )
				{
				case 0:
				m_Player.m_byJob = JOB_KNIGHT;
				break;
				case 1:
				m_Player.m_byJob = JOB_BLADE;
				break;
				case 2:
				m_Player.m_byJob = JOB_JESTER;
				break;
				case 3:
				m_Player.m_byJob = JOB_RANGER;
				break;
				case 4:
				m_Player.m_byJob = JOB_RINGMASTER;
				break;
				case 5:
				m_Player.m_byJob = JOB_BILLPOSTER;
				break;
				case 6:
				m_Player.m_byJob = JOB_PSYCHIKEEPER;
				break;
				case 7:
				m_Player.m_byJob = JOB_ELEMENTOR;
				break;
				default:
				m_Player.m_byJob = JOB_KNIGHT;
				break;
				}

			}
#endif //__JOB_CREATE_CHAR
hat aber leider nicht geklappt
.S0ulSeller is offline  
Old 08/12/2014, 14:50   #2
 
Mognakor's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 598
Received Thanks: 465
UpdateParts zu erweitern war unnötig.

So sieht das bei mir im code aus:
Code:
BOOL CWndCreateChar::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
{
	if(message == WNM_SELCHANGE )
	{
		switch(nID)
		{
		case 10000:
			return FALSE;
		case WIDC_COMBOBOX1:
			{
				CWndComboBox* pWndJobBox = ( CWndComboBox* )GetDlgItem( WIDC_COMBOBOX1 );
				assert( pWndJobBox );
				switch( pWndJobBox->GetCurSel() )
				{
					case 0:	m_Player.m_byJob = JOB_MERCENARY;	break;
					case 1: m_Player.m_byJob = JOB_ACROBAT;		break;
					case 2: m_Player.m_byJob = JOB_ASSIST;		break;
					case 3: m_Player.m_byJob = JOB_MAGICIAN;	break;
					case 4: m_Player.m_byJob = JOB_KNIGHT;		break;
					default: m_Player.m_byJob = JOB_KNIGHT;		break;
				}

				for( int i = 0; i < MAX_BEGINEQUIP; i++ )
				{
					DWORD dwEquip = prj.m_jobItem[ m_Player.m_byJob ].adwMale[ i ][ m_Player.m_bySex ];
					if( dwEquip != NULL_ID )
					{
						ItemProp* pItemProp = prj.GetItemProp( dwEquip );
						m_Player.m_aEquipInfo[pItemProp->dwParts].dwId = dwEquip;
					}
				}
				CMover::UpdateParts( m_Player.m_bySex, 0, m_Player.m_bySkinSet, m_Player.m_byHairMesh, m_Player.m_byHeadMesh, m_Player.m_aEquipInfo, m_pModel, NULL );
			}break;
		}
	}

	else if( message == WNM_CLICKED )
	{
		switch(nID)
		{
		case 10000:
			return FALSE;
		case WIDC_MALE: // male
			SetSex( SEX_MALE );
			break;
		case WIDC_FEMALE: // female
			SetSex( SEX_FEMALE );
			break;
		case WIDC_HAIRSTYLE_LEFT: // hair
			m_Player.m_byHairMesh--;
			if( m_Player.m_byHairMesh < 0 )
				m_Player.m_byHairMesh = MAX_BASE_HAIR - 1;
			CMover::UpdateParts( m_Player.m_bySex, m_Player.m_bySkinSet, m_Player.m_byFace, m_Player.m_byHairMesh, m_Player.m_byHeadMesh, m_Player.m_aEquipInfo, m_pModel, NULL );
			break;
		case WIDC_HAIRSTYLE_RIGHT: // hair
			m_Player.m_byHairMesh++;
			if( m_Player.m_byHairMesh >= MAX_BASE_HAIR )
				m_Player.m_byHairMesh = 0;
			CMover::UpdateParts( m_Player.m_bySex, m_Player.m_bySkinSet, m_Player.m_byFace, m_Player.m_byHairMesh, m_Player.m_byHeadMesh, m_Player.m_aEquipInfo, m_pModel, NULL );
			break;
		case WIDC_FACE_LEFT: // head
			m_Player.m_byHeadMesh--;
			if( m_Player.m_byHeadMesh < 0 )
				m_Player.m_byHeadMesh = MAX_DEFAULT_HEAD - 1;
			CMover::UpdateParts( m_Player.m_bySex, m_Player.m_bySkinSet, m_Player.m_byFace, m_Player.m_byHairMesh, m_Player.m_byHeadMesh, m_Player.m_aEquipInfo, m_pModel, NULL );
			break;
		case WIDC_FACE_RIGHT: // head
			m_Player.m_byHeadMesh++;

			if( m_Player.m_byHeadMesh >= MAX_DEFAULT_HEAD )
				m_Player.m_byHeadMesh = 0;
			CMover::UpdateParts( m_Player.m_bySex, m_Player.m_bySkinSet, m_Player.m_byFace, m_Player.m_byHairMesh, m_Player.m_byHeadMesh, m_Player.m_aEquipInfo, m_pModel, NULL );
			break;

		case WIDC_CANCEL: // Cancel 
			{
				Destroy();
				g_WndMng.ObjectExecutor( SHORTCUT_APPLET, APP_SELECT_CHAR );
				CWndSelectChar* pWndSelectChar 
					= (CWndSelectChar*)g_WndMng.GetWndBase( APP_SELECT_CHAR );
				if( pWndSelectChar )
					pWndSelectChar->UpdateCharacter();
				break;
			}
		case WIDC_OK: // Create
			{
#ifdef _NEW_CHAR_CREATE
				CWndComboBox* pWndJobBox = ( CWndComboBox* )GetDlgItem( WIDC_COMBOBOX1 );
				assert( pWndJobBox );

				if( pWndJobBox->GetCurSel() == -1 )
				{
					g_WndMng.OpenMessageBox( "Bitte wählen Sie einen Job" );
					return TRUE;
				}
#endif //_NEW_CHAR_CREATE

				CWndEdit* pEdit = (CWndEdit*)GetDlgItem( WIDC_NAME );
				CString string = pEdit->m_string;
				
				DWORD dwError = IsValidPlayerName( string );
				if( dwError > 0 )
				{
					g_WndMng.OpenMessageBox( prj.GetText(dwError) );
					pEdit->SetFocus();
					return TRUE;
				}

				if( prj.IsInvalidName( string )
#ifdef __RULE_0615
					|| prj.IsAllowedLetter( string ) == FALSE
#endif	// __RULE_0615
					)
				{
					g_WndMng.OpenMessageBox( prj.GetText(TID_DIAG_0020) );	// "»ç¿ëÇÒ¼ö ¾ø´Â À̸§ÀÔ´Ï´Ù"
					return TRUE;
				}

#if __VER >= 15 // __2ND_PASSWORD_SYSTEM
				CWndEdit* pWnd2ndPassword = ( CWndEdit* )GetDlgItem( WIDC_EDIT_2ND_PASSWORD );
				assert( pWnd2ndPassword );
				CWndEdit* pWnd2ndPasswordConfirm = ( CWndEdit* )GetDlgItem( WIDC_EDIT_2ND_PASSWORD_CONFIRM );
				assert( pWnd2ndPasswordConfirm );
				if( strcmp( pWnd2ndPassword->GetString(), _T( "" ) ) == 0 )
				{
					g_WndMng.OpenMessageBox( prj.GetText( TID_2ND_PASSWORD_INPUT_ERROR01 ) );	// 2Â÷ ºñ¹Ð¹øÈ£¸¦ ÀÔ·ÂÇÏ¿© ÁֽʽÿÀ.
					return TRUE;
				}
				if( static_cast< int >( strlen( pWnd2ndPassword->GetString() ) ) < MAX_2ND_PASSWORD_NUMBER )
				{
					CString strError = _T( "" );
					strError.Format( prj.GetText( TID_2ND_PASSWORD_INPUT_ERROR02 ), MAX_2ND_PASSWORD_NUMBER );
					g_WndMng.OpenMessageBox( strError );	// 2Â÷ ºñ¹Ð¹øÈ£´Â ¼ýÀÚ %dÀÚ¸®·Î¸¸ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.
					return TRUE;
				}
				if( strcmp( pWnd2ndPassword->GetString(), _T( "0000" ) ) == 0 )
				{
					g_WndMng.OpenMessageBox( prj.GetText( TID_2ND_PASSWORD_INPUT_ERROR03 ) );	// ÀÔ·ÂÇϽŠºñ¹Ð¹øÈ£´Â 2Â÷ ºñ¹Ð¹øÈ£·Î »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
					return TRUE;
				}
				if( strcmp( pWnd2ndPasswordConfirm->GetString(), _T( "" ) ) == 0 )
				{
					g_WndMng.OpenMessageBox( prj.GetText( TID_2ND_PASSWORD_INPUT_ERROR04 ) );	// 2Â÷ ºñ¹Ð¹øÈ£ È®ÀÎÀ» ÀÔ·ÂÇÏ¿© ÁֽʽÿÀ.
					return TRUE;
				}
				if( strcmp( pWnd2ndPassword->GetString(), pWnd2ndPasswordConfirm->GetString() ) != 0 )
				{
					g_WndMng.OpenMessageBox( prj.GetText( TID_2ND_PASSWORD_INPUT_ERROR05 ) );	// 2Â÷ ºñ¹Ð¹øÈ£ È®ÀÎÀÌ 2Â÷ ºñ¹Ð¹øÈ£¿Í ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù.
					return TRUE;
				}
#endif // __2ND_PASSWORD_SYSTEM

//				_tcscpy( m_Player.m_szName, string );
				
				CWndButton*	pButton	= (CWndButton*)GetDlgItem( WIDC_OK );
				pButton->EnableWindow( FALSE );
				pButton	= (CWndButton*)GetDlgItem( WIDC_CANCEL );
				pButton->EnableWindow( FALSE );
				DWORD dwHairColor = 0xffffffff;
				
				if( m_Player.m_bySex == SEX_MALE )
				{
					dwHairColor = D3DCOLOR_ARGB( 255, nMaleHairColor[m_Player.m_byHairMesh][0],
													nMaleHairColor[m_Player.m_byHairMesh][1],
													nMaleHairColor[m_Player.m_byHairMesh][2] );
				}
				else
				{
					dwHairColor = D3DCOLOR_ARGB( 255, nFeMaleHairColor[m_Player.m_byHairMesh][0],
													nFeMaleHairColor[m_Player.m_byHairMesh][1],
													nFeMaleHairColor[m_Player.m_byHairMesh][2] );
				}

#if __VER >= 15 // __2ND_PASSWORD_SYSTEM
				g_dpLoginClient.SendCreatePlayer( (BYTE)( m_Player.m_uSlot ), string, m_Player.m_byFace, m_Player.m_byCostume, m_Player.m_bySkinSet, m_Player.m_byHairMesh, dwHairColor, m_Player.m_bySex, m_Player.m_byJob, m_Player.m_byHeadMesh, atoi( pWnd2ndPassword->GetString() ) );
#else // __2ND_PASSWORD_SYSTEM
				g_dpLoginClient.SendCreatePlayer( (BYTE)( m_Player.m_uSlot ), string, m_Player.m_byFace, m_Player.m_byCostume, m_Player.m_bySkinSet, m_Player.m_byHairMesh, dwHairColor, m_Player.m_bySex, m_Player.m_byJob, m_Player.m_byHeadMesh );
#endif // __2ND_PASSWORD_SYSTEM
			}
			break;
		case 10002: // Accept
			{
			g_WndMng.OpenCustomBox( NULL, new CWndConnectingBox );
			g_Neuz.m_dwTempMessage = 1;
			g_Neuz.m_timerConnect.Set( 1 );
			}
			break;
		}
	}
	return CWndNeuz::OnChildNotify( message, nID, pLResult );
}
Mognakor is offline  
Thanks
1 User
Closed Thread


Similar Threads Similar Threads
[Frage] Jobauswahl bei Char create
01/11/2012 - Flyff Private Server - 1 Replies
Könnte mir jemand erklären was genau damit gemeint ist? ich wollte kein extra thread aufmachen aber selbst wenn man einige leute höflich frägt sind die nicht in der Lage einem zu antworten. Daher hoff ich, dass mir die Community helfen kann. Bei mir ist das Problem, dass ich selbst wenn ich Mercenary angewählt hab trotzdem als Vagrant spawne. greetz
emu server char erstellung ?
11/06/2011 - Last Chaos Private Server - 6 Replies
moin moin wollt mal fragen wie ich auf mein emu nen char erstellen kann damit ich mich einlogen kann
Einschränkung bei Char.erstellung
04/09/2010 - Metin2 Private Server - 5 Replies
Hallo, gibt es eine Möglichkeit bei Char Erstellung, das bei dem Namen nur Zahlen und Buchstaben verwendet werden können. Also keine chinesischen Zeichen oder sonst was. Und als zweites wie kann man den /pk code aussschalten, das man denn nicht mehr benutzen kann. Bei Banword funktioniert es nicht, bzw die Tabelle wird nicht hergenommen, gibt es eine andere Möglichkeit es auszuschalten oder wie kann man die Banword liste zum laufen bringen? Vielen Danke schonmal für die Hilfe.
Problemm bei neu erstellung der Char
03/22/2010 - Flyff Private Server - 7 Replies
Also ich kann auf meinem pserver kein neun char erstellen stützt flyff imemr ab aber wenn ich andere DataSub's nehme dann geht flyff ncith mal an. Finde in google und hier nicht wirklich was oder welche version von flyff soll ich nehm und ka. wollte nur zum bischen testen ein pserver machn aber läuft garnicht :( hilfe wäre nett
[LongJu3] Char-Löschung / Einlogg-Bug / Char-Erstellung
03/13/2010 - Metin2 Private Server - 4 Replies
Hey Com., ich habe ein Problem auf dem P-Server 'LongJu3'. 1.Problem Ich will einen Char löschen, habe aber nicht den Lösch-Code. Woher soll ich ihn entnehmen ? 2.Problem Ich habe einen Char auf Server 3, wenn ich mich einlogge sehe ich kurz den Marktplatz, dann wird das Bild wieder schwarz und ich werde gekickt. 3.Problem



All times are GMT +2. The time now is 16:58.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.