Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Old v15 source + Source addons

Junior Spellweaver
Joined
Mar 15, 2009
Messages
151
Reaction score
51
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:
Joined
Oct 2, 2010
Messages
95
Reaction score
10
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!
 
Experienced Elementalist
Joined
Dec 13, 2009
Messages
292
Reaction score
101
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?
 
Junior Spellweaver
Joined
Mar 15, 2009
Messages
151
Reaction score
51
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:
Experienced Elementalist
Joined
Dec 13, 2009
Messages
292
Reaction score
101
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..
 
i sell platypus
Member
Joined
Jun 26, 2009
Messages
2,640
Reaction score
1,326
Re: Official Source: aroundkillcrit/aroundpk/aroundpkcrit

Looks like you know a few fixie stuff, I'd suggest making a development thread :x.
 
Joined
Sep 23, 2008
Messages
90
Reaction score
37
Re: Official Source: aroundkillcrit/aroundpk/aroundpkcrit

the /dis command works good, i don't know why dev's disabled it
 
Junior Spellweaver
Joined
Mar 15, 2009
Messages
151
Reaction score
51
Re: Official Source: aroundkillcrit/aroundpk/aroundpkcrit

Looks like you know a few fixie stuff, I'd suggest making a development thread :x.

I just know how to use Ctrl-F. :p

EDIT: Working on a Command List window. (with explanation of GM commands etc.)
 
Last edited:
Initiate Mage
Joined
Aug 26, 2008
Messages
80
Reaction score
4
Re: Official Source: aroundkillcrit/aroundpk/aroundpkcrit

Hmmm... Development on offi sources started? Good job, manneke.
 
Joined
Oct 1, 2010
Messages
68
Reaction score
12
Re: Official Source: aroundkillcrit/aroundpk/aroundpkcrit

Nowai u ppl figured out how to add commands... Now go make a new pk system plox
 
i sell platypus
Member
Joined
Jun 26, 2009
Messages
2,640
Reaction score
1,326
Re: Official Source: aroundkillcrit/aroundpk/aroundpkcrit

Its not hard to create new functions. I just thought that when you've been working on the source for abit you learn alot of new functions, blablabla DEVELOPMENT ALIVE...
 
Joined
Oct 1, 2010
Messages
68
Reaction score
12
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.
 
Junior Spellweaver
Joined
Oct 17, 2008
Messages
107
Reaction score
10
Re: Official Source: aroundkillcrit/aroundpk/aroundpkcrit

Nice Guide might use this.
 
Joined
Jun 17, 2009
Messages
2,726
Reaction score
340
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.


 
Joined
Jun 17, 2009
Messages
2,726
Reaction score
340
Change your window's title - Source

Welcome to my second tutorial , I don't quite know C++ so I'm just looking through the source for some stuff.

Open Neuz.cpp and search for m_strWindowTitle = _T and you will see something like

Code:
m_strWindowTitle  = _T( "FlyFF" );

change it to your sole desires.
 
i sell platypus
Member
Joined
Jun 26, 2009
Messages
2,640
Reaction score
1,326
Re: Change your window's title - Source

Isn't it kinda obvious, if you gotta do small tuts like theese, make ONE compile with em all.
 
Junior Spellweaver
Joined
Mar 15, 2010
Messages
151
Reaction score
77
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.
 
Joined
Apr 30, 2009
Messages
82
Reaction score
6
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
Top