[HELP]Source und Spec_Item.txt

08/20/2011 14:47 Shjin#1
Hallo Com,

ich suche eine Lsung, um die V17 Files zu nutzen, mit meinen alten Source.
Nun gibt es jedoch die Spec_Item.txt, die anders aufgebaut ist.
Versuche nun schon ca. 5 Stunden hin und her.

Hatte die SUFU und Google bereits genutzt. Hatte dann auch alles gemacht wie es da stand, ohne Erfolg. Habe auch selbstverstndlich auch schon andere Methoden versucht. Aber auch ohne Erfolg.

Ich hoffe, mir kann hier wer helfen.

Bitte unterlasst Posts wie z.B :
- "Wenn du es nicht kannst, lass es gleich sein!"
- "Finde es selber herraus."
- "Ich kann es dir machen, was zahlste?..."
- ...

Danke.
08/20/2011 15:05 Achileus#2
Finde es heraus wenn nicht was zahlst?

nein Spa villeicht hilft das hier

[Only registered and activated users can see links. Click Here To Register...]
08/20/2011 15:21 Shjin#3
Quote:
Originally Posted by Achileus View Post
Finde es heraus wenn nicht was zahlst?

nein Spa villeicht hilft das hier

[Only registered and activated users can see links. Click Here To Register...]
erstmal Danke. :)

Jedoch habe ich das nun mal getestet..

Quote:
Originally Posted by Sedrika View Post
f(strcmp((char*)lpszFileName, "Spec_Item.txt") == 0)
{
prop.nMinLimitLevel = scanner.GetNumber();
prop.nMaxLimitLevel = scanner.GetNumber();
prop.nItemGroup = scanner.GetNumber();
prop.nUseLimitGroup = scanner.GetNumber();
prop.nMaxDuplication = scanner.GetNumber();
prop.nEffectValue = scanner.GetNumber();
prop.nTargetMinEnchant = scanner.GetNumber();
prop.nTargetMaxEnchant = scanner.GetNumber();
prop.bResetBind = scanner.GetNumber();
prop.nBindCondition = scanner.GetNumber();
prop.nResetBindCondition = scanner.GetNumber();
prop.dwHitActiveSkillId = scanner.GetNumber();
prop.dwHitActiveSkillLv = scanner.GetNumber();
prop.dwHitActiveSkillProb = scanner.GetNumber();
prop.dwHitActiveSkillTarget = scanner.GetNumber();
prop.dwDamageActiveSkillId = scanner.GetNumber();
prop.dwDamageActiveSkillLv = scanner.GetNumber();
prop.dwDamageActiveSkillProb = scanner.GetNumber();
prop.dwDamageActiveSkillTarget = scanner.GetNumber();
prop.dwEquipActiveSkillId = scanner.GetNumber();
prop.dwEquipActiveSkillLv = scanner.GetNumber();
prop.dwSmelting = scanner.GetNumber();
prop.dwAttsmelting = scanner.GetNumber();
prop.dwGemsmelting = scanner.GetNumber();
prop.dwPierce = scanner.GetNumber();
prop.dwUprouse = scanner.GetNumber();
prop.bAbsoluteTime = scanner.GetNumber();
}
hatte diesen Code in die ProjectCmn.cpp eingefgt, wo ich dachte das er dahin gehrt, und Errors bekommen..

Wenn mir einer da noch genauer helfen knnte, wre es super :D Bin schon am Verzweifeln.^^
08/20/2011 16:02 Achileus#4
Habs auch grad gehmacht bei mir funzt einwandrei.
08/20/2011 16:07 Shjin#5
Quote:
Originally Posted by Achileus View Post
Habs auch grad gehmacht bei mir funzt einwandrei.
Wo hast du das genau eingetragen, knntest du mir das evtl verraten? :D
08/20/2011 16:20 Achileus#6
ja ich verrate es dir das gehmeinis xD

ProjectCmn.cpp

propitem.txt suchen dann wird das kommen
if(strcmp((char*)lpszFileName, "propitem.txt") == 0)

dann da drunter was auskommentiertes aber das muss weg das es am ende dann so aussieht


Code:
if(strcmp((char*)lpszFileName, "Spec_Item.txt") == 0)
{
prop.nMinLimitLevel = scanner.GetNumber();
prop.nMaxLimitLevel = scanner.GetNumber();
prop.nItemGroup = scanner.GetNumber();
prop.nUseLimitGroup = scanner.GetNumber();
prop.nMaxDuplication = scanner.GetNumber();
prop.nEffectValue = scanner.GetNumber();
prop.nTargetMinEnchant = scanner.GetNumber();
prop.nTargetMaxEnchant = scanner.GetNumber();
prop.bResetBind = scanner.GetNumber();
prop.nBindCondition = scanner.GetNumber();
prop.nResetBindCondition = scanner.GetNumber();
prop.dwHitActiveSkillId = scanner.GetNumber();
prop.dwHitActiveSkillLv = scanner.GetNumber();
prop.dwHitActiveSkillProb = scanner.GetNumber();
prop.dwHitActiveSkillTarget = scanner.GetNumber();
prop.dwDamageActiveSkillId = scanner.GetNumber();
prop.dwDamageActiveSkillLv = scanner.GetNumber();
prop.dwDamageActiveSkillProb = scanner.GetNumber();
prop.dwDamageActiveSkillTarget = scanner.GetNumber();
prop.dwEquipActiveSkillId = scanner.GetNumber();
prop.dwEquipActiveSkillLv = scanner.GetNumber();
prop.dwSmelting = scanner.GetNumber();
prop.dwAttsmelting = scanner.GetNumber();
prop.dwGemsmelting = scanner.GetNumber();
prop.dwPierce = scanner.GetNumber();
prop.dwUprouse = scanner.GetNumber();
prop.bAbsoluteTime = scanner.GetNumber();
}
08/20/2011 19:16 Shjin#7
Quote:
Originally Posted by Achileus View Post
ja ich verrate es dir das gehmeinis xD

ProjectCmn.cpp

propitem.txt suchen dann wird das kommen
if(strcmp((char*)lpszFileName, "propitem.txt") == 0)

dann da drunter was auskommentiertes aber das muss weg das es am ende dann so aussieht


Code:
if(strcmp((char*)lpszFileName, "Spec_Item.txt") == 0)
{
prop.nMinLimitLevel = scanner.GetNumber();
prop.nMaxLimitLevel = scanner.GetNumber();
prop.nItemGroup = scanner.GetNumber();
prop.nUseLimitGroup = scanner.GetNumber();
prop.nMaxDuplication = scanner.GetNumber();
prop.nEffectValue = scanner.GetNumber();
prop.nTargetMinEnchant = scanner.GetNumber();
prop.nTargetMaxEnchant = scanner.GetNumber();
prop.bResetBind = scanner.GetNumber();
prop.nBindCondition = scanner.GetNumber();
prop.nResetBindCondition = scanner.GetNumber();
prop.dwHitActiveSkillId = scanner.GetNumber();
prop.dwHitActiveSkillLv = scanner.GetNumber();
prop.dwHitActiveSkillProb = scanner.GetNumber();
prop.dwHitActiveSkillTarget = scanner.GetNumber();
prop.dwDamageActiveSkillId = scanner.GetNumber();
prop.dwDamageActiveSkillLv = scanner.GetNumber();
prop.dwDamageActiveSkillProb = scanner.GetNumber();
prop.dwDamageActiveSkillTarget = scanner.GetNumber();
prop.dwEquipActiveSkillId = scanner.GetNumber();
prop.dwEquipActiveSkillLv = scanner.GetNumber();
prop.dwSmelting = scanner.GetNumber();
prop.dwAttsmelting = scanner.GetNumber();
prop.dwGemsmelting = scanner.GetNumber();
prop.dwPierce = scanner.GetNumber();
prop.dwUprouse = scanner.GetNumber();
prop.bAbsoluteTime = scanner.GetNumber();
}
Code:
if(strcmp((char*)lpszFileName, "propitem.txt") == 0)
das finde ich nicht bei mir. gibt es nicht^^
08/20/2011 20:34 Achileus#8
Quote:
Originally Posted by Shjin View Post
Code:
if(strcmp((char*)lpszFileName, "propitem.txt") == 0)
das finde ich nicht bei mir. gibt es nicht^^
oh vertan in ProjectCmn.h

Zeile:492
08/20/2011 21:06 Shjin#9
Quote:
Originally Posted by Achileus View Post
oh vertan in ProjectCmn.h

Zeile:492
muss ich wieder, widersprechen.. :D


Das ist meine ProjectCmn.h - Datei. Ich weine gleich, haha ;D
08/20/2011 21:10 Achileus#10
Ich auch villeicht gibt es mehre ProjectCmn.h bei mir ist es so und ist

in Solution:World ^^
08/20/2011 21:38 Shjin#11
Quote:
Originally Posted by Achileus View Post
Ich auch villeicht gibt es mehre ProjectCmn.h bei mir ist es so und ist

in Solution:World ^^
Ich habe nur eine.. in _Common.
Kannst du mir mal eben deine Hochladen? :0
08/20/2011 22:01 Achileus#12
ProjectCmn.cpp wtf das war grad .h omg

#include "stdafx.h"
#include "lang.h"
#ifdef __LANG_1013
#include "langman.h"
#endif // __LANG_1013

#if !( defined(__DBSERVER) || defined(__VPW) )
#include "project.h"
#endif // __DBSERVER

CString GetLangFileName( int nLang, int nType )
{
char* file[] =
{ "Filter", "InvalidName", "Notice", "GuildCombatTEXT_1", "GuildCombatTEXT_2", "GuildCombatTEXT_3", "GuildCombatTEXT_4", "GuildCombatTEXT_5", "GuildCombatTEXT_6"
#ifdef __RULE_0615
,"Letter"
#endif // __RULE_0615
#if __VER >= 11 // __GUILD_COMBAT_1TO1
,"GuildCombat1to1_TEXT1", "GuildCombat1to1_TEXT2", "GuildCombat1to1_TEXT3", "GuildCombat1to1_TEXT4", "GuildCombat1to1_TEXT5"
#endif //__GUILD_COMBAT_1TO1
#ifdef __VENDOR_1106
, "Letter1"
#endif // __VENDOR_1106
};

CString fileName = file[nType];

#ifdef __LANG_1013
fileName = fileName + CLangMan::GetInstance()->GetLangData( nLang )->szFileName;
#else // __LANG_1013
switch( nLang )
{
case LANG_KOR:
fileName = fileName+"_KOR.inc";
break;
case LANG_ENG:
fileName = fileName+"_ENG.inc";
break;
case LANG_JAP:
fileName = fileName+"_JAP.inc";
break;
case LANG_CHI:
fileName = fileName+"_CHI.inc";
break;
case LANG_THA:
fileName = fileName+"_THA.inc";
break;
case LANG_TWN:
case LANG_HK:
fileName = fileName+"_TWN.inc";
break;
case LANG_VTN:
fileName = fileName+"_VTN.inc";
break;
case LANG_RUS:
fileName = fileName+"_RUS.inc";
break;
default:
Error( "%s File Error = %d", file[nType], nLang );
break;
}
#endif // __LANG_1013

return fileName;
}

BOOL CProject::LoadJobItem( LPCTSTR lpszFileName )
{
CScript script;
if( script.Load( lpszFileName ) == FALSE )
return FALSE;
script.GetToken();
int nJob, nSex, i, j, nItem;
memset( m_jobItem, 0xff, sizeof( m_jobItem ) );
while( script.tok != FINISHED )
{
if( script.Token == _T( "job" ) )
{
nJob = script.GetNumber();
script.GetToken(); // {
script.GetToken(); // sex
j = 0;
while( script.Token != _T( "}" ) )
{
if( script.Token == _T( "sex" ) )
{
nSex = script.GetNumber();
script.GetToken(); // {
i = 0; nItem = script.GetNumber();
while( script.Token != _T( "}" ) )
{
m_jobItem[ nJob ].adwMale[ i ][ nSex ] = nItem;
nItem = script.GetNumber();
i++;
}
}
if( script.Token == _T( "item" ) )
{
m_jobItem[ nJob ].beginItem[ j ].dwItemType = script.GetNumber();
m_jobItem[ nJob ].beginItem[ j ].dwItemId = script.GetNumber();
m_jobItem[ nJob ].beginItem[ j ].dwNum = script.GetNumber();
j++;
}
script.GetToken();
}
}
script.GetToken();
}
return TRUE;
}

BOOL CProject::LoadPropMover( LPCTSTR lpszFileName )
{
CScript scanner;
if( scanner.Load( lpszFileName, FALSE ) == FALSE )
{
#ifdef __CLIENT
MessageBox( g_Neuz.GetSafeHwnd(), "Ƽ б : Mover", "", MB_OK );
ADDERRORMSG( "Ƽ б : Mover" );
#endif //__CLIENT
return FALSE;
}

std::set<int> checker;

TCHAR szLastName[256];
int i = 0;
memset( szLastName, 0, sizeof(szLastName) );
int old;
while( 1 )
{
old = i;
i = scanner.GetNumber(); // id
if( scanner.tok == FINISHED )
break;

if( i == 0 )
continue;

if( i<0 || i>=MAX_PROPMOVER ) // üũ
{
Error( "too many mover property or invalid id:%d FILE:%s\n", i, lpszFileName );
return FALSE;
}

if( !checker.insert( i ).second ) // idߺüũ
{
Error( "Last read:%s, ID:%d is duplicated. ÷ з ̷ *. FILE:%s\n", szLastName, i, lpszFileName );
return FALSE;
}

MoverProp* pProperty = &m_pPropMover[i];
pProperty->dwID = i;

scanner.GetToken();
_tcscpy( szLastName, scanner.token );
_tcscpy( pProperty->szName, scanner.token );

#if !( defined(__DBSERVER) || defined(__VPW) )
m_mapMVI.insert( map<string, DWORD>::value_type( pProperty->szName, pProperty->dwID ) );
#endif // __DBSERVER

pProperty->dwAI = scanner.GetNumber();
pProperty->dwStr = scanner.GetNumber();
pProperty->dwSta = scanner.GetNumber();
pProperty->dwDex = scanner.GetNumber();
pProperty->dwInt = scanner.GetNumber();
pProperty->dwHR = scanner.GetNumber();
pProperty->dwER = scanner.GetNumber();
pProperty->dwRace = scanner.GetNumber();
pProperty->dwBelligerence = scanner.GetNumber();
pProperty->dwGender = scanner.GetNumber();
pProperty->dwLevel = scanner.GetNumber();
pProperty->dwFlightLevel = scanner.GetNumber();
pProperty->dwSize = scanner.GetNumber();
pProperty->dwClass = scanner.GetNumber();
pProperty->bIfParts = scanner.GetNumber();

if( pProperty->bIfParts == NULL_ID )
Error( "LoadPropMover : bIfParts -1 ȵȴ. %s \r\n÷ зȰų ŷ ߸ ", pProperty->szName );

pProperty->nChaotic = scanner.GetNumber();
#ifdef __S1108_BACK_END_SYSTEM
pProperty->dwUseable = scanner.GetNumber();
#else // __S1108_BACK_END_SYSTEM
pProperty->dwDefExtent = scanner.GetNumber();
#endif // __S1108_BACK_END_SYSTEM
pProperty->dwActionRadius = scanner.GetNumber();
pProperty->dwAtkMin = scanner.GetNumber();
pProperty->dwAtkMax = scanner.GetNumber();
pProperty->dwAtk1 = scanner.GetNumber();
pProperty->dwAtk2 = scanner.GetNumber();
pProperty->dwAtk3 = scanner.GetNumber();
pProperty->dwAtk4 = scanner.GetNumber();
#if __VER >= 9 //__AI_0509
pProperty->fFrame = scanner.GetFloat(); // -1̸ ġ . 1.0 ⺻
if( abs( -1.0F - pProperty->fFrame ) < 0.000001F )
pProperty->fFrame = 1.0F;
pProperty->dwOrthograde = scanner.GetNumber();
#else // __AI_0509
pProperty->dwVerticalRate = scanner.GetNumber();
pProperty->dwDiagonalRate = scanner.GetNumber();
#endif // __AI_0509
pProperty->dwThrustRate = scanner.GetNumber();

pProperty->dwChestRate = scanner.GetNumber();
pProperty->dwHeadRate = scanner.GetNumber();
pProperty->dwArmRate = scanner.GetNumber();
pProperty->dwLegRate = scanner.GetNumber();

pProperty->dwAttackSpeed = scanner.GetNumber();
pProperty->dwReAttackDelay = scanner.GetNumber();
pProperty->dwAddHp = scanner.GetNumber();
pProperty->dwAddMp = scanner.GetNumber();
pProperty->dwNaturalArmor = scanner.GetNumber();
pProperty->nAbrasion = scanner.GetNumber();
pProperty->nHardness = scanner.GetNumber();
pProperty->dwAdjAtkDelay = scanner.GetNumber();

pProperty->eElementType = static_cast<SAI79::ePropType>(scanner.GetNumber()) ; // Ÿ԰ enum Ÿ Ʋ* Ÿ ȯ .
pProperty->wElementAtk = static_cast<short>(scanner.GetNumber()); // Ÿ԰ short Ÿ Ʋ* Ÿ ȯ .

pProperty->dwHideLevel = scanner.GetNumber();
if( pProperty->dwAI == AII_PET)
pProperty->fSpeed = (scanner.GetFloat() * 1.85f);
else
pProperty->fSpeed = scanner.GetFloat();
pProperty->dwShelter = scanner.GetNumber();
pProperty->dwFlying = scanner.GetNumber();
pProperty->dwJumpIng = scanner.GetNumber();
pProperty->dwAirJump = scanner.GetNumber();
pProperty->bTaming = scanner.GetNumber();
pProperty->dwResisMgic = scanner.GetNumber();

pProperty->nResistElecricity = (int)(scanner.GetFloat() * 100.0f);
pProperty->nResistFire = (int)(scanner.GetFloat() * 100.0f);
pProperty->nResistWind = (int)(scanner.GetFloat() * 100.0f);
pProperty->nResistWater = (int)(scanner.GetFloat() * 100.0f);
pProperty->nResistEarth = (int)(scanner.GetFloat() * 100.0f);

pProperty->dwCash = scanner.GetNumber();
pProperty->dwSourceMaterial = scanner.GetNumber();
pProperty->dwMaterialAmount = scanner.GetNumber();
pProperty->dwCohesion = scanner.GetNumber();
pProperty->dwHoldingTime = scanner.GetNumber();
pProperty->dwCorrectionValue = scanner.GetNumber();
pProperty->nExpValue = scanner.GetExpInteger();
pProperty->nFxpValue = scanner.GetNumber();
pProperty->nBodyState = scanner.GetNumber();
pProperty->dwAddAbility = scanner.GetNumber();
pProperty->bKillable = scanner.GetNumber();

pProperty->dwVirtItem[0] = scanner.GetNumber();
pProperty->dwVirtItem[1] = scanner.GetNumber();
pProperty->dwVirtItem[2] = scanner.GetNumber();
pProperty->bVirtType[0] = scanner.GetNumber();
pProperty->bVirtType[1] = scanner.GetNumber();
pProperty->bVirtType[2] = scanner.GetNumber();

pProperty->dwSndAtk1 = scanner.GetNumber();
pProperty->dwSndAtk2 = scanner.GetNumber();

pProperty->dwSndDie1 = scanner.GetNumber();
pProperty->dwSndDie2 = scanner.GetNumber();

pProperty->dwSndDmg1 = scanner.GetNumber();
pProperty->dwSndDmg2 = scanner.GetNumber();
pProperty->dwSndDmg3 = scanner.GetNumber();

pProperty->dwSndIdle1 = scanner.GetNumber();
pProperty->dwSndIdle2 = scanner.GetNumber();


scanner.GetToken();

#ifdef __S1108_BACK_END_SYSTEM
pProperty->m_fHitPoint_Rate = 1.0f;
pProperty->m_fAttackPower_Rate = 1.0f;
pProperty->m_fDefence_Rate = 1.0f;
pProperty->m_fExp_Rate = 1.0f;
pProperty->m_fItemDrop_Rate = 1.0f;
pProperty->m_fPenya_Rate = 1.0f;
pProperty->m_bRate = FALSE;
#endif // __S1108_BACK_END_SYSTEM
}

if( checker.size() > 0 )
m_nMoverPropSize = *(checker.rbegin()) + 1;

/*
#ifdef __INTERNALSERVER
{
int nIndex = 20; // MI_AIBATT1
MoverProp* pProperty = &m_pPropMover[ nIndex ];
pProperty->dwAI = AII_VER2_TYPE0;
}
#endif
*/

return TRUE;
}

BOOL CProject::LoadPropItem( LPCTSTR lpszFileName, CFixedArray< ItemProp >* apObjProp )
{
CScript scanner;
if( scanner.Load( lpszFileName, FALSE ) == FALSE )
{
#ifdef __CLIENT
MessageBox( g_Neuz.GetSafeHwnd(), "LoadPropItem", "flyff", MB_OK );
ADDERRORMSG( "LoadPropItem file open error" );
#endif //__CLIENT
return FALSE;
}

ItemProp prop;
ZeroMemory( &prop, sizeof(prop) );

int nVer = scanner.GetNumber(); // version
while( scanner.tok != FINISHED )
{
DWORD dwID = scanner.GetNumber(); // IID_
if( dwID <= 0 )
{
Error( "%s ID:%d last_read(ID:%d name:%s)", lpszFileName, dwID, prop.dwID, prop.szName);
return FALSE;
}

//#ifdef __CLIENT
prop.nVer = nVer;
//#endif // __CLIENT
prop.dwID = dwID;
scanner.GetToken();
// _tcscpy( prop.szName, scanner.token );
scanner.Token.TrimRight();
_tcscpy( prop.szName, (LPCSTR)scanner.Token );

prop.dwNum = scanner.GetNumber();
prop.dwPackMax = scanner.GetNumber();
prop.dwItemKind1 = scanner.GetNumber();
prop.dwItemKind2 = scanner.GetNumber();
prop.dwItemKind3 = scanner.GetNumber();
prop.dwItemJob = scanner.GetNumber();
prop.bPermanence = scanner.GetNumber();
prop.dwUseable = scanner.GetNumber();
prop.dwItemSex = scanner.GetNumber();
prop.dwCost = scanner.GetNumber();
prop.dwEndurance = scanner.GetNumber();
prop.nAbrasion = scanner.GetNumber();
prop.nMaxRepair = scanner.GetNumber();
prop.dwHanded = scanner.GetNumber();
prop.dwFlag = scanner.GetNumber();
prop.dwParts = scanner.GetNumber();
prop.dwPartsub = scanner.GetNumber();
prop.bPartsFile = scanner.GetNumber();
prop.dwExclusive = scanner.GetNumber();
prop.dwBasePartsIgnore = scanner.GetNumber();
prop.dwItemLV = scanner.GetNumber();
prop.dwItemRare = scanner.GetNumber();
prop.dwShopAble = scanner.GetNumber();
prop.nLog = scanner.GetNumber();
prop.bCharged = scanner.GetNumber();
prop.bCharged = ( prop.bCharged != 1? 0: 1 );
prop.dwLinkKindBullet = scanner.GetNumber();
prop.dwLinkKind = scanner.GetNumber();
prop.dwAbilityMin = scanner.GetNumber();
prop.dwAbilityMax = scanner.GetNumber();
prop.eItemType = static_cast<SAI79::ePropType>(scanner.GetNumber()) ;
prop.wItemEatk = static_cast<short>(scanner.GetNumber());
prop.dwParry = scanner.GetNumber();
prop.dwblockRating = scanner.GetNumber();
prop.nAddSkillMin = scanner.GetNumber();
prop.nAddSkillMax = scanner.GetNumber();
prop.dwAtkStyle = scanner.GetNumber();
prop.dwWeaponType = scanner.GetNumber();
prop.dwItemAtkOrder1 = scanner.GetNumber();
prop.dwItemAtkOrder2 = scanner.GetNumber();
prop.dwItemAtkOrder3 = scanner.GetNumber();
prop.dwItemAtkOrder4 = scanner.GetNumber();
prop.tmContinuousPain = scanner.GetNumber();
prop.nShellQuantity = scanner.GetNumber();
prop.dwRecoil = scanner.GetNumber();
prop.dwLoadingTime = scanner.GetNumber();
prop.nAdjHitRate = scanner.GetNumber();
prop.fAttackSpeed = scanner.GetFloat();
prop.dwDmgShift = scanner.GetNumber();
prop.dwAttackRange = scanner.GetNumber();
prop.nProbability = scanner.GetNumber();
prop.dwDestParam[0] = scanner.GetNumber();
prop.dwDestParam[1] = scanner.GetNumber();
#ifdef __PROP_0827
prop.dwDestParam[2] = scanner.GetNumber();
#endif // __PROP_0827
prop.nAdjParamVal[0] = scanner.GetNumber();
prop.nAdjParamVal[1] = scanner.GetNumber();
#ifdef __PROP_0827
prop.nAdjParamVal[2] = scanner.GetNumber();
#endif // __PROP_0827
prop.dwChgParamVal[0] = scanner.GetNumber();
prop.dwChgParamVal[1] = scanner.GetNumber();
#ifdef __PROP_0827
prop.dwChgParamVal[2] = scanner.GetNumber();
#endif // __PROP_0827
prop.nDestData1[0] = scanner.GetNumber();
prop.nDestData1[1] = scanner.GetNumber();
prop.nDestData1[2] = scanner.GetNumber();
prop.dwActiveSkill = scanner.GetNumber();
prop.dwActiveSkillLv = scanner.GetNumber();
prop.dwActiveSkillRate = scanner.GetNumber();
prop.dwReqMp = scanner.GetNumber();
prop.dwReqFp = scanner.GetNumber();
prop.dwReqDisLV = scanner.GetNumber();
prop.dwReSkill1 = scanner.GetNumber();
prop.dwReSkillLevel1 = scanner.GetNumber();
prop.dwReSkill2 = scanner.GetNumber();
prop.dwReSkillLevel2 = scanner.GetNumber();
prop.dwSkillReadyType = scanner.GetNumber();
prop.dwSkillReady = scanner.GetNumber();
prop._dwSkillRange = scanner.GetNumber();
prop.dwSfxElemental = scanner.GetNumber();
prop.dwSfxObj = scanner.GetNumber();
prop.dwSfxObj2 = scanner.GetNumber();
prop.dwSfxObj3 = scanner.GetNumber();
prop.dwSfxObj4 = scanner.GetNumber();
prop.dwSfxObj5 = scanner.GetNumber();
prop.dwUseMotion = scanner.GetNumber();
prop.dwCircleTime = scanner.GetNumber();
prop.dwSkillTime = scanner.GetNumber();
prop.dwExeTarget = scanner.GetNumber();
prop.dwUseChance = scanner.GetNumber();
prop.dwSpellRegion = scanner.GetNumber();
prop.dwSpellType = scanner.GetNumber();
prop.dwReferStat1 = scanner.GetNumber();
prop.dwReferStat2 = scanner.GetNumber();
prop.dwReferTarget1 = scanner.GetNumber();
prop.dwReferTarget2 = scanner.GetNumber();
prop.dwReferValue1 = scanner.GetNumber();
prop.dwReferValue2 = scanner.GetNumber();
prop.dwSkillType = scanner.GetNumber();
prop.nItemResistElecricity = (int)(scanner.GetFloat() * 100.0f);
prop.nItemResistFire = (int)(scanner.GetFloat() * 100.0f);
prop.nItemResistWind = (int)(scanner.GetFloat() * 100.0f);
prop.nItemResistWater = (int)(scanner.GetFloat() * 100.0f);
prop.nItemResistEarth = (int)(scanner.GetFloat() * 100.0f);
prop.nEvildoing = scanner.GetNumber();
prop.dwExpertLV = scanner.GetNumber();
prop.dwExpertMax = scanner.GetNumber();
prop.dwSubDefine = scanner.GetNumber();
prop.dwExp = scanner.GetNumber();
prop.dwComboStyle = scanner.GetNumber();
prop.fFlightSpeed = scanner.GetFloat();
prop.fFlightLRAngle = scanner.GetFloat();
prop.fFlightTBAngle = scanner.GetFloat();
prop.dwFlightLimit = scanner.GetNumber();
prop.dwFFuelReMax = scanner.GetNumber();
prop.dwAFuelReMax = scanner.GetNumber();
prop.dwFuelRe = scanner.GetNumber();
prop.dwLimitLevel1 = scanner.GetNumber();
prop.nReflect = scanner.GetNumber();
prop.dwSndAttack1 = scanner.GetNumber();
prop.dwSndAttack2 = scanner.GetNumber();

// szIcon
scanner.GetToken();
scanner.GetToken();
#ifdef __CLIENT
_tcsncpy( prop.szIcon, scanner.token, sizeof(prop.szIcon)-1 );
prop.szCommand[sizeof(prop.szIcon)-1] = 0;
#endif

#ifdef __VERIFY_0201
_tcsncpy( prop.szIcon, scanner.token, sizeof(prop.szIcon)-1 );
prop.szCommand[sizeof(prop.szIcon)-1] = 0;
#endif // __VERIFY_0201

scanner.GetToken();

// dwQuestId
prop.dwQuestId = scanner.GetNumber( );

// szTextFileName
scanner.GetToken();
scanner.GetToken();
_tcscpy( prop.szTextFileName, scanner.token );
scanner.GetToken();

// szCommand
scanner.GetToken();
#ifdef __CLIENT
_tcsncpy( prop.szCommand, scanner.token, sizeof(prop.szCommand)-1 );
prop.szCommand[sizeof(prop.szCommand)-1] = 0;
#endif // __CLIENT
if(strcmp((char*)lpszFileName, "Spec_Item.txt") == 0)
{
prop.nMinLimitLevel = scanner.GetNumber();
prop.nMaxLimitLevel = scanner.GetNumber();
prop.nItemGroup = scanner.GetNumber();
prop.nUseLimitGroup = scanner.GetNumber();
prop.nMaxDuplication = scanner.GetNumber();
prop.nEffectValue = scanner.GetNumber();
prop.nTargetMinEnchant = scanner.GetNumber();
prop.nTargetMaxEnchant = scanner.GetNumber();
prop.bResetBind = scanner.GetNumber();
prop.nBindCondition = scanner.GetNumber();
prop.nResetBindCondition = scanner.GetNumber();
prop.dwHitActiveSkillId = scanner.GetNumber();
prop.dwHitActiveSkillLv = scanner.GetNumber();
prop.dwHitActiveSkillProb = scanner.GetNumber();
prop.dwHitActiveSkillTarget = scanner.GetNumber();
prop.dwDamageActiveSkillId = scanner.GetNumber();
prop.dwDamageActiveSkillLv = scanner.GetNumber();
prop.dwDamageActiveSkillProb = scanner.GetNumber();
prop.dwDamageActiveSkillTarget = scanner.GetNumber();
prop.dwEquipActiveSkillId = scanner.GetNumber();
prop.dwEquipActiveSkillLv = scanner.GetNumber();
prop.dwSmelting = scanner.GetNumber();
prop.dwAttsmelting = scanner.GetNumber();
prop.dwGemsmelting = scanner.GetNumber();
prop.dwPierce = scanner.GetNumber();
prop.dwUprouse = scanner.GetNumber();
prop.bAbsoluteTime = scanner.GetNumber();
}
if(strcmp((char*)lpszFileName, "propSkill.txt") == 0 || strcmp((char*)lpszFileName, "propTroupeSkill.txt") == 0)
{
prop.dwBuffTickType = scanner.GetNumber();
}/*
else
{
Error("Column Error: %s", lpszFileName);
}*/

#ifdef __WORLDSERVER
#ifdef __INTERNALSERVER
prop.nLog = -1; // ߼ ̰ .
#endif
if( g_eLocal.GetState( EVE_SCHOOL ) )
{
prop.dwShopAble = 1;
if( prop.dwItemRare == (DWORD)-1 )
prop.dwItemRare = prop.dwItemLV;
}
#endif // __WORLDSERVER

if( ::GetLanguage() == LANG_THA )
{
if( prop.dwLimitLevel1 > 0 && prop.dwLimitLevel1 <= 5 )
prop.dwLimitLevel1 = 1;
else if( prop.dwLimitLevel1 > 5 && prop.dwLimitLevel1 <= 15 )
prop.dwLimitLevel1 = 5;
else if( prop.dwLimitLevel1 > 15 && prop.dwLimitLevel1 <= 30 )
prop.dwLimitLevel1 = 15;
else if( prop.dwLimitLevel1 > 30 && prop.dwLimitLevel1 <= 45 )
prop.dwLimitLevel1 = 30;
else if( prop.dwLimitLevel1 > 45 && prop.dwLimitLevel1 < 60 )
prop.dwLimitLevel1 = 45;
}

if( nVer <= __VER )
{
// TRACE( "PropItem = %d, %s\n", prop.dwID, prop.szName );
m_mapII.insert( map<string, DWORD>::value_type( prop.szName, prop.dwID ) );
#if __VER >= 9 // __ULTIMATE
#ifdef __CLIENT
if( prop.IsUltimate() )
{
CString strName = prop.szName;
int nFind = strName.Find( "@", 0 );
if( nFind > -1 )
{
strName.Delete( nFind - 1, 2 );
lstrcpy( prop.szName, (LPCTSTR)strName );
}
}
#endif // __CLIENT
#endif // __ULTIMATE
apObjProp->SetAtGrow( prop.dwID, &prop);
}

nVer = scanner.GetNumber(); // version;
}
apObjProp->Optimize();
return TRUE;
}

BOOL CProject::LoadText( LPCTSTR lpszFileName )
{
tagColorText colorText, *pColorText;

CScript scanner;
if( scanner.Load( lpszFileName ) == FALSE )
return FALSE;

CStringArray strArray;
CDWordArray colorArray;
DWORD dwId = scanner.GetNumber();

do {
DWORD dwColor = scanner.GetNumber(); // color
scanner.GetToken();
if( *scanner.token == '{' )
{

scanner.GetToken();
CString str = scanner.token;
str.Replace( "\"", "" );
// if( str.IsEmpty() )
// str = "Empty";
#ifdef _DEBUG
if( strArray.GetSize() > (int)( dwId ) )
if( strArray.GetAt( dwId ).IsEmpty() == FALSE )
Error( "CProject::LoadText : ̵ %d - %s", dwId, str );
#endif // _DEBUG
strArray.SetAtGrow( dwId, str );
colorArray.SetAtGrow( dwId, dwColor );
scanner.GetToken(); // }
}
dwId = scanner.GetNumber(); // next
} while( scanner.tok != FINISHED );

for( int i = 0; i < strArray.GetSize(); i++ )
{
if( strArray.GetAt( i ).IsEmpty() == FALSE )
{
m_colorText.SetAtGrow( i, &colorText );

pColorText = m_colorText.GetAt( i );
pColorText->dwColor = colorArray.GetAt( i );
pColorText->lpszData = strdup( strArray.GetAt( i ) ) ;
}
}
m_colorText.Optimize();
return TRUE;
}

CString CProject::GetLangScript( CScript& script )
{
CString string;
script.GetToken();
string = script.Token;
script.GetToken(); // )
script.GetToken(); // ;
if( string.IsEmpty() )
string = " ";
return string;
}

void CProject::LoadStrings()
{
char* lpszFiles[] = {
"character.txt.txt",
"character-etc.txt.txt",
"character-school.txt.txt",
"etc.txt.txt",
"propCtrl.txt.txt",
"propItem.txt.txt",
"propItemEtc.txt.txt",
"propKarma.txt.txt",
"propMotion.txt.txt",
"propMover.txt.txt",
"propQuest.txt.txt",
"propQuest-DungeonandPK.txt.txt",
"propQuest-RequestBox2.txt.txt",
"propQuest-RequestBox.txt.txt",
"propQuest-Scenario.txt.txt",
"propSkill.txt.txt",
"propTroupeSkill.txt.txt",
"resData.txt.txt",
"textClient.txt.txt",
"textEmotion.txt.txt",
"world.txt.txt",
"Client\\treeHelp.txt.txt",
"Client\\tip.txt.txt",
"Client\\PatchClient.txt.txt",
"Client\\InstantHelp.txt.txt",
"Client\\help.txt.txt",
"Client\\Guide.txt.txt",
#if __VER >= 12 // __MOD_TUTORIAL
"Client\\tutorial.txt.txt",
#endif
// "Client\\GameGuard.txt.txt",
"Client\\faq.txt.txt",
"World\\WdVolcane\\WdVolcane.txt.txt",
"World\\WdMadrigal\\wdMadrigal.txt.txt",
"World\\WdKebaras\\WdKebaras.txt.txt",
"World\\WdGuildWar\\WdGuildWar.txt.txt",
"World\\WdEvent01\\WdEvent01.txt.txt",
"World\\DuMuscle\\DuMuscle.txt.txt",
"World\\DuKrr\\DuKrr.txt.txt",
"World\\DuFlMas\\DuFlMas.txt.txt",
"World\\DuDaDk\\DuDaDk.txt.txt",
"World\\DuBear\\DuBear.txt.txt",
"World\\DuSaTemple\\DuSaTemple.txt.txt",
"World\\DuSaTempleBoss\\DuSaTempleBoss.txt.txt "
#if __VER >= 9 // __JEFF_9
,"World\\WdVolcane\\WdVolcane.txt.txt"
,"World\\WdVolcaneRed\\WdVolcaneRed.txt.txt"
,"World\\WdVolcaneYellow\\WdVolcaneYellow.txt.t xt"
#endif // __JEFF_9
#ifdef __JEFF_11_4
,"World\\WdArena\\WdArena.txt.txt"
#endif // __JEFF_11_4
#if __VER >= 12 // __LORD
,"lordskill.txt.txt"
#endif // __LORD
#if __VER >= 12 // __SECRET_ROOM
,"World\\WdHeaven01\\wdheaven01.txt.txt"
,"World\\WdHeaven02\\wdheaven02.txt.txt"
,"World\\WdHeaven03\\wdheaven03.txt.txt"
,"World\\WdHeaven04\\wdheaven04.txt.txt"
,"World\\WdHeaven05\\wdheaven05.txt.txt"
,"World\\WdHeaven06\\wdheaven06.txt.txt"
,"World\\WdHeaven06_1\\wdheaven06_1.txt.txt"
#endif // __SECRET_ROOM
#if __VER >= 13 // __HONORABLE_TITLE
, "honorList.txt.txt"
#endif // __HONORABLE_TITLE
#ifdef __AZRIA_1023
, "World\\WdCisland\\WdCisland.txt.txt"
#endif // __AZRIA_1023
#if __VER >= 14 // __INSTANCE_DUNGEON
, "World\\DuOminous\\duominous.txt.txt"
, "World\\DuOminous_1\\duominous_1.txt.txt"
#endif // __INSTANCE_DUNGEON
#if __VER >= 15 // __GUILD_HOUSE
, "World\\WdGuildhousesmall\\WdGuildhousesmall.txt.t xt" // Ͽ콺
, "World\\WdGuildhousemiddle\\WdGuildhousemiddle.txt .txt" // Ͽ콺
, "World\\WdGuildhouselarge\\WdGuildhouselarge.txt.t xt" // Ͽ콺
, "World\\DuDreadfulCave\\DuDreadfulCave.txt.txt " // ߰ δ(巡Ǯ ̺)
, "World\\DuRustia\\DuRustia.txt.txt" // ߰ δ(Ƽ Ϲ)
, "World\\DuRustia_1\\DuRustia_1.txt.txt" // ߰ δ(Ƽ )
#endif // __GUILD_HOUSE
#ifdef __IMPROVE_MAP_SYSTEM
, "propMapComboBoxData.txt.txt"
#endif // __IMPROVE_MAP_SYSTEM
};

int n = sizeof(lpszFiles) / sizeof(lpszFiles[0]);
for( int i=0; i<n; ++i )
{
CScript s;
if( s.Load( lpszFiles[i] ) == TRUE )
s.LoadString();
}

LoadText( "textClient.inc" );
}

void CProject::LoadDefines()
{
char* lpszDefines[] = {
"define.h",
"defineNeuz.h",
"defineQuest.h",
"defineJob.h",
"defineItem.h",
"defineWorld.h",
"defineItemkind.h",
"lang.h",
"defineObj.h",
"defineAttribute.h",
"defineSkill.h",
"defineText.h",
"defineSound.h",
"resdata.h",
"WndStyle.h"
#if __VER >= 12 // __LORD
, "definelordskill.h"
#endif // __LORD
#if __VER >= 13 // __HONORABLE_TITLE
, "defineHonor.h"
#endif // __HONORABLE_TITLE
#ifdef __IMPROVE_MAP_SYSTEM
, "ContinentDef.h"
, "defineMapComboBoxData.h"
#endif // __IMPROVE_MAP_SYSTEM
};
int n, i;

n = sizeof(lpszDefines) / sizeof(lpszDefines[0]);
for( i=0; i<n; ++i )
{
CScript script;
if( script.Load( lpszDefines[i] ) == TRUE )
script.PreScan();
}
}

void CProject::LoadPreFiles()
{
#ifdef __SECURITY_0628
#ifdef __CLIENT
CResFile::LoadAuthFile();
#endif // __CLIENT
#endif // __SECURITY_0628

LoadDefines();
LoadStrings();

#ifdef __LANG_1013
CLangMan::GetInstance()->Load( "propLang.txt" );
#endif // __LANG_1013
}


#ifdef __RULE_0615
BOOL CProject::LoadInvalidName( void )
{
CScanner s;
TCHAR szName[64];

CString strFilter;
strFilter = GetLangFileName( ::GetLanguage(), FILE_INVALID );

if( s.Load( strFilter ) )
{
s.GetToken();
while( s.tok != FINISHED )
{
strcpy( szName, s.Token );
strlwr( szName );

m_sInvalidNames.insert( (LPCSTR)szName );
s.GetToken();
}
return TRUE;
}
return FALSE;
}

BOOL CProject::IsInvalidName( LPCSTR szName )
{
TCHAR pszName[ 64 ];
strcpy( pszName, szName );
strlwr( pszName );
// string str = pszName;
CString str = pszName;
for( set<string>::iterator i = m_sInvalidNames.begin(); i != m_sInvalidNames.end(); ++i )
{
string strstr = *i;

// if( str.find( *i, 0 ) != -1 )
if( str.Find( (*i).c_str(), 0 ) != -1 )
return TRUE;
}
return FALSE;
}

#ifdef __VENDOR_1106
BOOL CProject::LoadAllowedLetter( BOOL bVendor )
#else // __VENDOR_1106
BOOL CProject::LoadAllowedLetter( void )
#endif // __VENDOR_1106
{
CScanner s;
CString strFile;

#ifdef __VENDOR_1106
set<char>* ptr = NULL;
if( bVendor )
{
ptr = &m_sAllowedLetter2;
strFile = GetLangFileName( ::GetLanguage(), FILE_ALLOWED_LETTER2 );
}
else
{
ptr = &m_sAllowedLetter;
strFile = GetLangFileName( ::GetLanguage(), FILE_ALLOWED_LETTER );
}
#else // __VENDOR_1106
strFile = GetLangFileName( ::GetLanguage(), FILE_ALLOWED_LETTER );
set<char>* ptr = &m_sAllowedLetter;
#endif // __VENDOR_1106
if( s.Load( strFile ) )
{
s.GetToken();
while( s.tok != FINISHED )
{
if( s.Token.GetLength() )
ptr->insert( s.Token.GetAt( 0 ) );
s.GetToken();
}
return TRUE;
}
return FALSE;
}

BOOL CProject::IsAllowedLetter( LPCSTR szName, BOOL bVendor )
{
#ifdef __VENDOR_1106
set<char>* ptr = NULL;
if( bVendor )
ptr = &m_sAllowedLetter2;
else
ptr = &m_sAllowedLetter;
#else // __VENDOR_1106
set<char>* ptr = &m_sAllowedLetter;
#endif // __VENDOR_1106

if( !ptr->size() ) // Ģ
return TRUE;

int nLen = lstrlen( szName );
for( int i = 0; i < nLen; i++ )
{
char chLetter = szName[i];
set<char>::iterator it = ptr->find( chLetter );
if( it == ptr->end() )
{
#ifndef __VENDOR_1106
if( bVendor && ( chLetter == ' ' || chLetter == '+' ) )
continue;
#endif // __VENDOR_1106
return FALSE;
}
}
return TRUE;
}

void CProject::Formalize( LPSTR szName )
{
int nLen = lstrlen( szName );
if( nLen == 0 )
return;

DWORD dwLanguage = ::GetLanguage();
switch( dwLanguage )
{
// case LANG_ENG:
case LANG_GER:
case LANG_FRE:
{
// if( ::GetLanguage() == LANG_ENG && ::GetSubLanguage() == LANG_SUB_PHP )
// break;
_strlwr( szName ); // ҹڷ
char szBuffer[2];
szBuffer[0] = szName[0];
szBuffer[1] = '\0';
_strupr( szBuffer );
szName[0] = szBuffer[0];
break;
}
default:
{
break;
}
}
}
#endif // __RULE_0615
08/21/2011 13:55 .Crasy#13
Es wurden bei V18 wieder neue hinzugefgt, wenn ich fragen darf: welche Spec_Item.txt hast du in deinen Resource daten?
08/21/2011 14:18 Shjin#14
Quote:
Originally Posted by .Crasy View Post
Es wurden bei V18 wieder neue hinzugefgt, wenn ich fragen darf: welche Spec_Item.txt hast du in deinen Resource daten?
habe in meinen Files die Spec_Item.txt von Etioom drinne.
08/21/2011 14:30 dennisdra#15
Hast du in der Projectcmn.h auch die neuen Parameter geaddet?