|
You last visited: Today at 06:32
Advertisement
Mops Reden lassen?
Discussion on Mops Reden lassen? within the Flyff Private Server forum part of the Flyff category.
06/23/2011, 00:18
|
#1
|
elite*gold: 0
Join Date: Feb 2010
Posts: 876
Received Thanks: 470
|
Mops Reden lassen?
Tag zusamm wollte mal Fragen ob es möglich ist Mops Reden zulassen so wie man sie angreift?
Und wonach muss ich schaun?
Thx schonmal
|
|
|
06/23/2011, 01:05
|
#2
|
elite*gold: 0
Join Date: Aug 2008
Posts: 201
Received Thanks: 128
|
Quote:
Originally Posted by Pixelfehler
Tag zusamm wollte mal Fragen ob es möglich ist Mops Reden zulassen so wie man sie angreift?
Und wonach muss ich schaun?
Thx schonmal 
|
In der Funktion StateRage( const AIMSG & msg ). Klasse hängt von der AI des Monsters ab. Schätze mal in deinem Fall wäre das CAIMonster.
|
|
|
06/23/2011, 01:17
|
#3
|
elite*gold: 0
Join Date: Feb 2010
Posts: 876
Received Thanks: 470
|
Hier kann das sein?
BOOL CAIPet::StateRage( const AIMSG & msg )
{
CMover* pMover = GetMover();
CWorld* pWorld = GetWorld();
if( IsInvalidObj(pMover) ) return FALSE;
BeginAIHandler( )
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_INIT )
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_INIT_TARGETCLEAR ) // Ÿ°ÙÀ» Ŭ¸®¾îÇÏ°í ´ë±â¸ðµå·Î µ¹¾Æ°¨.
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_PROCESS )
MoveProcessRage( msg );
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_DAMAGE )
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_COLLISION )
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_DIE )
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_DSTDIE )
SendAIMsg( AIMSG_SETSTATE, STATE_IDLE );
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_BEGINMOVE )
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_ARRIVAL )
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_EXIT )
// SendAIMsg( AIMSG_SETPROCESS, FALSE );
EndAIHandler( )
|
|
|
06/23/2011, 03:57
|
#4
|
elite*gold: 2
Join Date: Jul 2009
Posts: 1,447
Received Thanks: 923
|
Da geht AIMSG_IDLE .. also net Fehlen sondern sollte dran stehn, dann kanst neue Adden wenn du IDLE findest (IDLE = Stunned)
|
|
|
06/23/2011, 04:56
|
#5
|
elite*gold: 0
Join Date: Aug 2008
Posts: 201
Received Thanks: 128
|
Quote:
Originally Posted by .Crasy
Da geht AIMSG_IDLE .. also net Fehlen sondern sollte dran stehn, dann kanst neue Adden wenn du IDLE findest (IDLE = Stunned)
|
Wie manche Leute immer wieder aufs neue beweisen das sie keine Ahnung haben. Awesome.
Warum zur Hölle soll es eine AIMSG_IDLE geben? Eine AIMSG ist kein State.
Und nein, Idle heißt nicht stunned. ( Wie kommt man auf so einen Scheiss, srsly. )
Quote:
Originally Posted by Pixelfehler
Hier kann das sein?
BOOL CAIPet::StateRage( const AIMSG & msg )
{
CMover* pMover = GetMover();
CWorld* pWorld = GetWorld();
if( IsInvalidObj(pMover) ) return FALSE;
BeginAIHandler( )
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_INIT )
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_INIT_TARGETCLEAR ) // Ÿ°ÙÀ» Ŭ¸®¾îÇÏ°í ´ë±â¸ðµå·Î µ¹¾Æ°¨.
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_PROCESS )
MoveProcessRage( msg );
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_DAMAGE )
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_COLLISION )
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_DIE )
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_DSTDIE )
SendAIMsg( AIMSG_SETSTATE, STATE_IDLE );
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_BEGINMOVE )
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_ARRIVAL )
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_EXIT )
// SendAIMsg( AIMSG_SETPROCESS, FALSE );
EndAIHandler( )
|
Die Klasse heißt CAIPet. Gehört also zu CS Pets.
Such hiernach : BOOL CAIMonster::StateRage( const AIMSG & msg )
Unter OnMessage( AIMSG_DAMAGE ) kannst du das Monster dann "sprechen" lassen.
|
|
|
06/23/2011, 13:49
|
#6
|
elite*gold: 0
Join Date: Feb 2010
Posts: 876
Received Thanks: 470
|
Jop und wo Definiere ich danach den Text?
Hier bin ich aber Richtig ?
BOOL CAIMonster::StateRage( const AIMSG & msg )
{
CMover* pMover = GetMover();
CWorld* pWorld = GetWorld();
MoverProp *pProp = pMover->GetProp();
if( IsInvalidObj(pMover) ) return FALSE;
DWORD dwAIState = pMover->m_dwAIInterfaceState;
BeginAIHandler( )
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_INIT )
if( msg.dwParam2 != NULL_ID )
{
CMover* pTarget = prj.GetMover( msg.dwParam2 );
if( IsValidObj( pTarget ) )
SetTarget( msg.dwParam2, pTarget->m_idparty );
}
m_tmAttack = TIMEGETTIME + s_tmAttack;
m_tmAttackDelay = TIMEGETTIME; // °ø°Ý µô·¹À̸¦ ÃʱâÈ*. ±×·¸Áö ¾ÊÀ¸¸é óÀ½ °ø°ÝÀÌ µô·¹ÀÌ ¸Ô°í µé¾î°£´Ù.
SetStop( 0 ); // 0À¸·Î ¼¼ÆÃÇϸé Á¤Áö »óŰ¡ ¹Ù·Î ³¡³ª°Ô µÇ¾î °ø°ÝÀÌ °¡´ÉÇÏ°Ô µÈ´Ù.
// Á¤Áö »óÅ¿¡¼*´Â Á¤Áö »óŸ¦ ÀÏÁ¤ ½Ã°£µ¿¾È À¯ÁöÇØÁÖ¾î¾ßÇϴµ¥, ±×·¸°Ô µÇ¸é °ø°ÝÀ» ¸øÇÒ ¼ö ÀÖ´Ù.
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_INIT_TARGETCLEAR ) // Ÿ°ÙÀ» Ŭ¸®¾îÇÏ°í ´ë±â¸ðµå·Î µ¹¾Æ°¨.
#if __VER >= 9 //__AI_0509
CMover* pTarget = ScanTargetNext( pMover, /*pProp->m_nAttackFirstRange*/ 15, m_dwIdTarget, m_uParty );
if( pTarget )
{
SendAIMsg( AIMSG_SETSTATE, STATE_RAGE, pTarget->GetId() );
return TRUE;
}
else
{
SetTarget( NULL_ID, 0 );
SendAIMsg( AIMSG_SETSTATE, dwAIState );
}
#else // __AI_0509
SetTarget( NULL_ID, 0 );
SendAIMsg( AIMSG_SETSTATE, dwAIState );
#endif // __AI_0509
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_PROCESS )
MoveProcessRage( msg );
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_DAMAGE )
if( IsMove() && m_bGoTarget == FALSE )
{
if( xRandom( 2 ) == 0 ) // 1/2È®·ü·Î °ø°ÝÀÚ¸¦ ¶§¸².
{
// °ø°ÝÀÚ¿¡°Ô ¸ñÇ¥¸¦ ¼³Á¤
MoveToDst( msg.dwParam1 );
}
m_bGoTarget = TRUE;
}
MoverProp* pMoverProp = pMover->GetProp();
int nHPPercent = pMover->GetHitPointPercent( 100 );
// µµÁÖ HP ÆÛ¼¾Æ®º¸´Ù ÇöÀç HPÆÛ¼¾Æ®°¡ ÀÛÀ» °æ¿ì µµ¸Á°¡ÀÚ.
if( nHPPercent < pMoverProp->m_nRunawayHP )
{
// µµÁÖ ¸ðµå·Î ¼¼ÆÃ
SendAIMsg( AIMSG_SETSTATE, STATE_RUNAWAY );
g_UserMng.AddDlgEmoticon( pMover, DLGEMOT_EVADE );
}
// Call HP ÆÛ¼¾Æ®º¸´Ù ÇöÀç HPÆÛ¼¾Æ®°¡ ÀÛÀ» °æ¿ì µ¿·á¸¦ ºÎ¸£ÀÚ.
if( pMoverProp->m_bHelpWho ) // ÇïÇÁAI°¡ ÀÖÀ»°æ¿ì.
{
if( TIMEGETTIME - m_tmHelp > pMoverProp->m_tmUnitHelp ) // ÃÖÃÊ m_tmHelp´Â 0À̹ǷΠÇïÇÁ¸¦ ÇÑ´Ù.
{
if( m_bCallHelper == FALSE )
{
CallHelper( pMoverProp );
g_UserMng.AddDlgEmoticon( pMover, DLGEMOT_HELPER );
m_tmHelp = TIMEGETTIME;
if( pMoverProp->m_tmUnitHelp == 0 ) // 0À̸é Çѹø¸¸ ºÎ¸£°í ¾ÈºÎ¸§.
m_bCallHelper = TRUE;
}
}
}
else
m_bCallHelper = FALSE;
#if __VER >= 9 //__AI_0509
m_vPosDamage = pMover->GetPos();
#endif // __AI_0509
|
|
|
06/23/2011, 18:24
|
#7
|
elite*gold: 0
Join Date: Aug 2010
Posts: 501
Received Thanks: 178
|
und haste es geschafft?
|
|
|
06/23/2011, 18:31
|
#8
|
elite*gold: 0
Join Date: Feb 2010
Posts: 876
Received Thanks: 470
|
Naja ich geh mal davon aus das ich
aus:
OnMessage( AIMSG_PROCESS )
MoveProcessRage( msg );
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_DAMAGE )
if( IsMove() && m_bGoTarget == FALSE )
das machen muss:
OnMessage( AIMSG_PROCESS )
MoveProcessRage( msg );
///////////////////////////////////////////////////////////////////////////////////////////////////
OnMessage( AIMSG_DAMAGE )
MoveProcessRage( msg );
///////////////////////////////////////////////////////////////////////////////////////////////////(Bei dem Roten den Text)?
if( IsMove() && m_bGoTarget == FALSE )
Kann mir wer helfen ob das so gehen könnte bzw ob ich da richtig liege?
|
|
|
06/23/2011, 19:49
|
#9
|
elite*gold: 0
Join Date: Aug 2008
Posts: 201
Received Thanks: 128
|
Try this:
Code:
#define MAX_MONSTER_TEXT 4
...
OnMessage( AIMSG_DAMAGE )
[COLOR="Red"]
char* szMonsterText[MAX_MONSTER_TEXT] = { "Aua!", "Das wirst du bereuen!", "Dich hau ich zu Brei!", "Uargh..." };
if( xRandom(10000) <= 500 )
{
CString strChatText = szMonsterText[xRandom(0, MAX_MONSTER_TEXT)];
g_UserMng.AddChat( pMover, strChatText );
}
[/COLOR]
if( IsMove() && m_bGoTarget == FALSE )
{
if( xRandom( 2 ) == 0 ) // 1/2È®·ü·Î °ø°ÝÀÚ¸¦ ¶§¸².
{
// °ø°ÝÀÚ¿¡°Ô ¸ñÇ¥¸¦ ¼³Á¤
MoveToDst( msg.dwParam1 );
...
|
|
|
06/23/2011, 20:01
|
#10
|
elite*gold: 0
Join Date: Feb 2010
Posts: 876
Received Thanks: 470
|
Ich test es mal und werde berichten ob ich es hinbekommen hab
|
|
|
06/23/2011, 20:24
|
#11
|
elite*gold: 0
Join Date: Feb 2010
Posts: 876
Received Thanks: 470
|
/Edit hab das was du geschrieben hast in der AiMonster.cpp
eingefügt nur sagen die mops beim angriff nix..
Konnte ohne Errors Builden...
/Edit Sry wegen Doppelpost
|
|
|
06/23/2011, 20:41
|
#12
|
elite*gold: 0
Join Date: Aug 2008
Posts: 201
Received Thanks: 128
|
Quote:
Originally Posted by Pixelfehler
/Edit hab das was du geschrieben hast in der AiMonster.cpp
eingefügt nur sagen die mops beim angriff nix..
Konnte ohne Errors Builden...
/Edit Sry wegen Doppelpost 
|
Die Chance das nen Monster ne Chat Message ausgibt beträgt 5%. Hau halt mehrmals drauf. Klappt bei mir wunderbar.
|
|
|
06/23/2011, 21:18
|
#13
|
elite*gold: 0
Join Date: Feb 2010
Posts: 876
Received Thanks: 470
|
Weisst du wie man die Chance höher macht?
|
|
|
06/23/2011, 21:34
|
#14
|
elite*gold: 122
Join Date: Mar 2008
Posts: 796
Received Thanks: 475
|
Parameter erhöhen:
if( xRandom(10000) <= 500 )
Greetz
|
|
|
06/23/2011, 21:40
|
#15
|
elite*gold: 0
Join Date: Feb 2010
Posts: 876
Received Thanks: 470
|
Okay Danke erst mal an die mir geholfen haben 
Okay noch eine kleine Frage 
Ist es auch Möglich es einzustellen das wenn ich zb Mop X angreiffe Mop X
in der umgebung zb sagt (Wir werden angegriffen Leute!!) xD?
|
|
|
 |
|
Similar Threads
|
[HowTo]Mobs reden lassen
08/20/2011 - Metin2 PServer Guides & Strategies - 30 Replies
Da ich es für mich allein für zu viel Arbeit halte sämtlichen Mobbs das sprechen beizubringen habe ich mich dazu entschlossen euch ein Tutorial zu machen mit dem jeder seinen Clienten so modifizieren kann das die Mobs sprechen. Und das per Sound nicht per Text. Es wird nichts verändert oder gelöscht nur hinzugefügt!
Dieses Tutorial ist notwendig um zu wissen wie man .epk Dateien entpackt und wieder zurück packt.
Dazu brauchen wir noch ein kostenloses Soundbearbeitungsprogramm.
hierzu...
|
Mobs länger reden lassen
06/05/2011 - Metin2 Private Server - 1 Replies
hallo ich wollte mal fragen wo man das ändern kann das der Text von mobs, npcs und spieler länger über deren Köpfen stehen bleibt?:confused:
Hab's mit sufu versucht, habe aber nichts gefunden!
Also hoffe auf antwort:) mfg TwoPlayer
|
Will mit dir reden :D
01/29/2011 - Main - 1 Replies
Knnaste das für mich machen ?
|
Problem mit neuen Zombie Mops und Troll mops
09/27/2010 - Metin2 Private Server - 2 Replies
hallo com
ich habe ein problem mit den neuen mops habe
das ausprobiert:
http://www.elitepvpers.com/forum/metin2-pserver-gu ides-strategies/428724-howto-neue-monster-implenti eren.html
und dass:
http://www.elitepvpers.com/forum/metin2-pserver-gu ides-strategies/477416-neue-mobs-im-sql-format-npc list.html
bei dem habe ich alles so gemacht wie im readme.txt steht.
jetzt zu mein problem :
ich kann mich in den mops verwandeln also z.B. /poly 2598 das ist der zombie_god glaub ich
|
All times are GMT +1. The time now is 06:32.
|
|