Old v15 source + Source addons

Official Source: aroundkillcrit/aroundpk/aroundpkcrit

What this is:
The title should say it all.

What you need:
1. Brain.exe
2. Source Files + VS2003
3. Understanding of the IDE and the basics of C++
4. A GM character that can use GM commands

How to do it:
1. Add this under the "TextCmd_AroundKill" function in FuncTextCmd.cpp:
Code:
BOOL TextCmd_AroundKillCritical( CScanner & scanner )
{
#ifdef __WORLDSERVER
    CUser* pUser = (CUser*)scanner.dwValue;
    if( pUser->GetWeaponItem() == NULL )
        return TRUE;

    CWorld* pWorld    = pUser->GetWorld();
    if( pWorld )
        pUser->SendDamageAround( AF_CRITICAL2, (CMover*)pUser, OBJTYPE_MONSTER, 1, 3, 0.0, 2.0f );
#endif // __WORLDSERVER
    return TRUE;
}

BOOL TextCmd_AroundPK( CScanner & scanner )
{
#ifdef __WORLDSERVER
    CUser* pUser = (CUser*)scanner.dwValue;
    if( pUser->GetWeaponItem() == NULL )
        return TRUE;

    CWorld* pWorld    = pUser->GetWorld();
    if( pWorld )
        pUser->SendDamageAround( AF_MAGICSKILL, (CMover*)pUser, OBJTYPE_PLAYER, 1, 3, 0.0, 1.0f );
#endif // __WORLDSERVER
    return TRUE;
}

BOOL TextCmd_AroundPKCritical( CScanner & scanner )
{
#ifdef __WORLDSERVER
    CUser* pUser = (CUser*)scanner.dwValue;
    if( pUser->GetWeaponItem() == NULL )
        return TRUE;

    CWorld* pWorld    = pUser->GetWorld();
    if( pWorld )
        pUser->SendDamageAround( AF_CRITICAL2, (CMover*)pUser, OBJTYPE_PLAYER, 1, 3, 0.0, 2.0f );
#endif // __WORLDSERVER
    return TRUE;
}

2. And this under the line that begins with "ON_TEXTCMDFUNC( TextCmd_AroundKill, ", in FuncTextCmd.cpp:

Code:
    ON_TEXTCMDFUNC( TextCmd_AroundKillCritical,       "aroundkillcrit",     "akc",            "盔秦",           "秦",      TCM_SERVER, AUTH_GAMEMASTER3   , "绢扼款靛俊 乐绰 阁胶磐" )
    ON_TEXTCMDFUNC( TextCmd_AroundPK,               "aroundpk",           "apk",            "盔力",           "力",      TCM_SERVER, AUTH_GAMEMASTER3   , "绢扼款靛俊 乐绰" )
    ON_TEXTCMDFUNC( TextCmd_AroundPKCritical,       "aroundpkcrit",       "apkc",           "盔利",           "利",      TCM_SERVER, AUTH_GAMEMASTER3   , "绢扼款靛俊" )

3. And replace the if/else statement in MoverSkill.cpp that checks "nDmgType == AF_MAGICSKILL" with this:

Code:
	if( nDmgType == AF_MAGICSKILL )
	{
		pProp = prj.GetSkillProp( nAttackID );		// UseSkill俊辑 荤侩茄 胶懦狼 橇肺欺萍 波晨
		if( pProp == NULL )
		{
			Error( "CMover::SendDamageAround : %s. 胶懦(%d)狼 橇肺欺萍啊 诀促.", m_szName, nAttackID );
			return;	// property not found
		}
	} else
	{
		pProp = prj.GetItemProp( nAttackID );		// 酒捞袍 橇肺欺萍波晨
		if( pProp == NULL )
		{
			//Error( "CMover::SendDamageAround : %s. 酒捞袍(%d)狼 橇肺欺萍啊 诀促.", m_szName, nAttackID );
			//Error( "CMover::SendDamageAround : Property not found on item.", m_szName, nAttackID );
			pProp = prj.GetSkillProp( nAttackID );
			//return;	// property not found
		}
	}

4. Build solution.
 
Last edited:
Re: Official Source: aroundkillcrit/aroundpk/aroundpkcrit

nice guide ^_^.
you know how to change the /dis /nodis to work as a command and no when you do in game example: /dis 912 its not work and say No Command!
 
Re: Official Source: aroundkillcrit/aroundpk/aroundpkcrit

Not really a useful command, but still it would be nice indeed to use it!
Simple & easy to do. What does it need to be more?
 
Re: Official Source: aroundkillcrit/aroundpk/aroundpkcrit

nice guide ^_^.
you know how to change the /dis /nodis to work as a command and no when you do in game example: /dis 912 its not work and say No Command!

You have to be AUTH_ADMINISTRATOR to disguise.
Edit: Oops, I was wrong. Dunno why but they have this:
Code:
		#ifdef __CLIENT
			if( scanner.Token == "disguise" || scanner.Token == "dis" || scanner.Token == "函脚" || scanner.Token == "函" ||
				scanner.Token == "noDisguise" || scanner.Token == "nodis" || scanner.Token == "函脚秦力" || scanner.Token == "函秦" )
			{
				g_WndMng.PutString( "Not Command!" );
				return TRUE;
			}				
		#endif // __CLIENT

I would just try removing the if statement.
 
Last edited:
Re: Official Source: aroundkillcrit/aroundpk/aroundpkcrit

You have to be AUTH_ADMINISTRATOR to disguise.
Edit: Oops, I was wrong. Dunno why but they have this:
Code:
		#ifdef __CLIENT
			if( scanner.Token == "disguise" || scanner.Token == "dis" || scanner.Token == "函脚" || scanner.Token == "函" ||
				scanner.Token == "noDisguise" || scanner.Token == "nodis" || scanner.Token == "函脚秦力" || scanner.Token == "函秦" )
			{
				g_WndMng.PutString( "Not Command!" );
				return TRUE;
			}				
		#endif // __CLIENT

Yea, i've noticed that too. It's probably an unfinished command or something like that..
 
Re: Official Source: aroundkillcrit/aroundpk/aroundpkcrit

the /dis command works good, i don't know why dev's disabled it
 
Re: Official Source: aroundkillcrit/aroundpk/aroundpkcrit

Hmmm... Development on offi sources started? Good job, manneke.
 
Re: Official Source: aroundkillcrit/aroundpk/aroundpkcrit

Nowai u ppl figured out how to add commands... Now go make a new pk system plox
 
Re: Official Source: aroundkillcrit/aroundpk/aroundpkcrit

Bleh, I hope you all figure out one big flaw thanks to the source. If someone fixes it wihout causing additional overhead ill be suprised :D.
 
Change your Neuz's MD5 salt - Source

Hello and welcome to my first tutorial. I will be teaching you how to edit your MD5 Salt for your neuz source.


  • First , Go to Flyff V15 Source , then find the folder neuz. Then you will come across some neuz files.
  • Open the Neuz.cpp and search for : void CNeuzApp::HashMD5
Then you will come across something like this.

Code:
void CNeuzApp::HashMD5( char* szResult, LPCTSTR szPWD )
{
    char szBuffer[256];
    char* szKey = "";

#ifdef __INTERNALSERVER
    switch( LANG_KOR )
#else // __INTERNALSERVER
    switch( ::GetLanguage() )
#endif // __INTERNALSERVER
    {
    case LANG_JAP:    
        szKey = "chanho_park";
        break;
    case LANG_TWN:    
        szKey = "omg";
        break;
    case LANG_HK:
        szKey    = "tpgk";
        break;
    case LANG_ENG:
        szKey = "kikugalanet";
        break;
    case LANG_KOR:    
        szKey = "@FLYFF";
        break;
    case LANG_GER:
        szKey    = "gjgusdbfjq";
        break;
    case LANG_SPA:
        szKey    = "rlawnsgud";
        break;
    case LANG_POR:
        //szKey    = "rlawnsgud";
        szKey    = "kikugalanet";    //chipi_090520 05/22ºÎÅÍ ¾ÏȣȭŰ º¯°æ
        break;
    case LANG_FRE:
        szKey    = "gjgusdbfjq";
        break;
    case LANG_VTN:
        szKey    = "dlrjsdn";
        break;
    case LANG_RUS:
        szKey    = "rlaansrms";
        break;
    }

    sprintf( szBuffer, "%s%s", szKey, szPWD );
    md5( szResult, szBuffer );
}

You now can see the salts for the neuz according to language and it's set default at Korean. So do your thing.


 
Re: Change your window's title - Source

I was especially tickled when i saw his ttle under his name saying ''sucka at C++'' then he does a basic edit :P Sucka sounds a bit like slang for someone who is good at somethin idk xD

unless it was a typo and he really meant "Sucks at C++" :D
Still, I lolled.
 
Source code Edits

Unlimited Buff Time​

Just edit SkillInfluence.h

#ifndef __SKILLINFLUENCE_H__
#define __SKILLINFLUENCE_H__

#define BUFF_ITEM 0
#define BUFF_SKILL 1
#define BUFF_PET 2
#define BUFF_ITEM2 3
#define BUFF_EQUIP 4 // ÀåÂø·ù ¾ÆÀÌÅÛ¿¡ ƯÁ¤ DST(DST_GIFTBOX)¿¡ ´ëÇØ ¹öÇÁ ¾ÆÀÌÄܸ¸ Ãâ·Â
#define BUFF_NULL_ID (WORD)0xFFFF
#define MAX_SKILLINFLUENCE 64
#define MAX_SKILLBUFF_COUNT 14 //to number you like


in client nuez. maybe you need to edit WndField.cpp to exacly show the buff icons.
Just edit the x y values.

void CWndBuffStatus::SetBuffIconInfo()
{
BUFFICON_INFO buffinfo;
int x = 0;
int y = 0;
int i;
CRect rect;
rect = GetWindowRect(TRUE);

if(!m_pBuffIconInfo.empty())
m_pBuffIconInfo.clear();

if(m_BuffIconViewOpt == 0)
{
for(i=0; i<MAX_SKILLBUFF_COUNT; i++)
{
buffinfo.pt = CPoint( x, y );
m_pBuffIconInfo.push_back(buffinfo);
x += 34;
if(i == 6)
{
x = 0;
y = 34;
}
}
//widht 238, heigth = 68
rect.bottom = 68 + rect.top;
rect.right = 238 + rect.left;
}
else if(m_BuffIconViewOpt == 1)
{
for(i=0; i<MAX_SKILLBUFF_COUNT; i++)
{
buffinfo.pt = CPoint( x, y );
m_pBuffIconInfo.push_back(buffinfo);
y += 34;
if(i == 6)
{
y = 0;
x = 34;
}
}
//widht 54, heigth = 238
rect.bottom = 238 + rect.top;
rect.right = 68 + rect.left;
}
SetWndRect(rect);
AdjustWndBase();
}
 
Last edited by a moderator:
Back