[Switch] Billposter [Source]

07/31/2011 01:32 ~Product~#1
Hallo,

ich weiß ich habe zwar etwas released, aber das ist in meinen augen die schwerere Version die ich nicht nochmal anwenden will da ich meinen source neu aufsetzen musste. Ich hab paar foren durchgeschaut und habe gesehen das es ein fix für psykeeper switch gibt. Eigentlich müsste es ja auch klappen wenn man es einfach so kopiert und dann den skill des Bps also Asalraalaikum einsetz

hier der Code :

Quote:
if( nSkill == SI_BIL_PST_ASALRAALAIKUM )
{
float fPercent = (float)GetManaPointPercent();

if (fPercent > 100.0f) {
fPercent = 100.0f;
}
else if (fPercent < 10.0f) {
fPercent = 10.0f;
}

factor = factor * 1.5f * (fPercent / 100.0f);
}

oder wie könnte man die MP rate des bps wie beim psy immer auf 100% belassen ohne mehr als 100% zu haben ?
07/31/2011 02:14 19Dani92#2
wie ich dich verstehe willst du dass asal keine mp entzieht dann ändere den skill per resource so dass er keine mp verbraucht..
07/31/2011 02:15 Sedrika#3
Du hast das ganze ja nur mit dem Asal skill ersetzt, warum machst du nicht in die if abfrage if ( .... || nSkill == SI_BIL_PST_ASALRAALAIKUM ) ?
07/31/2011 02:25 ~Product~#4
ich möchte das nun so haben
das es einfach genau so wirkt wie der psy skill das egal wie man switcht
immer 100% mp bleibt und nie 101% werden kann deswegen hab ich ja einfach das vom psy mal mit asal ersetzt aber das klappt nicht wirklich ingame deswegen wundere ich mich ja^^
07/31/2011 02:48 Sedrika#5
Der Asal dmg wird ja in der AttackArbiter.cpp berechnet, sie dich da mal am besten um.
07/31/2011 02:58 .Crasy#6
Quote:
int CAttackArbiter::PostAsalraalaikum()
{
int nAddDmg = 0;

LPSKILL pSkill = m_pAttacker->GetSkill( SI_BIL_PST_ASALRAALAIKUM );
DWORD dwSkillLevel =
#ifdef __SKILL0517
m_pAttacker->GetSkillLevel( pSkill );
#else // __SKILL0517
pSkill ? pSkill->dwLevel : 0;
#endif // __SKILL0517

#if __VER >= 12 // __MONSTER_SKILL
if( m_pAttacker->IsNPC() )
dwSkillLevel = CMonsterSkill::GetInstance()->GetMonsterSkillLevel( m_pAttacker, SI_BIL_PST_ASALRAALAIKUM );
#endif // __MONSTERSKILL

switch( dwSkillLevel )
{
case 1: nAddDmg = 20; break;
case 2: nAddDmg = 30; break;
case 3: nAddDmg = 40; break;
case 4: nAddDmg = 50; break;
case 5: nAddDmg = 60; break;
case 6: nAddDmg = 70; break;
case 7: nAddDmg = 80; break;
case 8: nAddDmg = 90; break;
case 9: nAddDmg = 100; break;
case 10: nAddDmg = 150; break;
}

int nMP = m_pAttacker->GetManaPoint(); // ÀÏ´Ü ¹Þ¾Æ³õ°í
if( m_pAttacker->IsPlayer() && m_pAttacker->IsSMMode( SM_MAINTAIN_MP ) == FALSE ) // MP À¯·á¾ÆÀÌÅÛ ¸Ô¾úÀ»¶§´Â MP´â¸é ¾ÈµÈ´Ù.
m_pAttacker->SetPointParam( DST_MP, 0 ); // 0À¸·Î ¸¸µë.
return ( ( ( m_pAttacker->GetStr() / 10 ) * dwSkillLevel ) * ( 5 + nMP / 10 ) + nAddDmg );
}
Habs mal Rot makiert, man könnte es evtl. auf einen Bestimmten wert setzen mmh mal schaun ;D
07/31/2011 03:13 Sedrika#7
Ich bin mir nicht ganz sicher, aber das könnte so funktionieren:
Code:
if( m_pAttacker->GetManaPoint() > m_pAttacker->GetMaxManaPoint() )
        m_pAttacker->SetManaPoint( m_pAttacker->GetMaxManaPoint() );
pack das dann mal vor dem hier:
Code:
int nMP = m_pAttacker->GetManaPoint();
Das es so aussieht:
Code:
    if( m_pAttacker->GetManaPoint() > m_pAttacker->GetMaxManaPoint() )
        m_pAttacker->SetManaPoint( m_pAttacker->GetMaxManaPoint() );

    int nMP = m_pAttacker->GetManaPoint();
Damit sollte, wenn ich mich richtig errinere der Mana wert auf 100% gesetzt werden, wenn er über dem Max wert ist.
07/31/2011 03:23 ~Product~#8
crasy deine methode hab ich schon probiert jedoch asalen switcher trotzdem ins unmögliche xD

danke sedrika werde es gleich morgen testen und dir bescheid geben

wow nice hat geklappt danke dir sedrika <3
07/31/2011 03:44 .Crasy#9
Was is bei mir meine Methode? das is die Source, ich würde an dem teil wo Rot is ansetzen das wars :o

is Fast das selbe wie Sedrika hat, nMP wird auch beim return erwartet :D
07/31/2011 03:46 ~Product~#10
Danke

jedoch funktioniert Sedrikas methode / Variante auch fehlerfrei

bedanke mich bei beiden


mfg. und gute nacht :)