|
You last visited: Today at 10:37
Advertisement
[HELP]Source und Spec_Item.txt
Discussion on [HELP]Source und Spec_Item.txt within the Flyff Private Server forum part of the Flyff category.
08/20/2011, 14:47
|
#1
|
elite*gold: 0
Join Date: Feb 2010
Posts: 111
Received Thanks: 23
|
[HELP]Source und Spec_Item.txt
Hallo Com,
ich suche eine Lösung, 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 selbstverständlich 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
|
#2
|
elite*gold: 74
Join Date: Apr 2009
Posts: 5,908
Received Thanks: 2,386
|
Finde es heraus wenn nicht was zahlst?
nein Spaß villeicht hilft das hier
|
|
|
08/20/2011, 15:21
|
#3
|
elite*gold: 0
Join Date: Feb 2010
Posts: 111
Received Thanks: 23
|
Quote:
Originally Posted by Achileus
Finde es heraus wenn nicht was zahlst?
nein Spaß villeicht hilft das hier

|
erstmal Danke.
Jedoch habe ich das nun mal getestet..
Quote:
Originally Posted by Sedrika
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 eingefügt, wo ich dachte das er dahin gehört, und Errors bekommen..
Wenn mir einer da noch genauer helfen könnte, wäre es super  Bin schon am Verzweifeln.^^
|
|
|
08/20/2011, 16:02
|
#4
|
elite*gold: 74
Join Date: Apr 2009
Posts: 5,908
Received Thanks: 2,386
|
Habs auch grad gehmacht bei mir funzt einwandrei.
|
|
|
08/20/2011, 16:07
|
#5
|
elite*gold: 0
Join Date: Feb 2010
Posts: 111
Received Thanks: 23
|
Quote:
Originally Posted by Achileus
Habs auch grad gehmacht bei mir funzt einwandrei.
|
Wo hast du das genau eingetragen, könntest du mir das evtl verraten?
|
|
|
08/20/2011, 16:20
|
#6
|
elite*gold: 74
Join Date: Apr 2009
Posts: 5,908
Received Thanks: 2,386
|
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
|
#7
|
elite*gold: 0
Join Date: Feb 2010
Posts: 111
Received Thanks: 23
|
Quote:
Originally Posted by Achileus
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
|
#8
|
elite*gold: 74
Join Date: Apr 2009
Posts: 5,908
Received Thanks: 2,386
|
Quote:
Originally Posted by Shjin
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
|
#9
|
elite*gold: 0
Join Date: Feb 2010
Posts: 111
Received Thanks: 23
|
Quote:
Originally Posted by Achileus
oh vertan in ProjectCmn.h
Zeile:492
|
muss ich wieder, widersprechen..
#ifndef __PROJECTCMN_H__
#define __PROJECTCMN_H__
#define MAX_OBJARRAY 8
#define MAX_QUICKSLOT 21
#define MAX_EQUIPMENT 18
#define MAX_INVENTORY 42 // 60 //42 - //42 ist Offi
#define MAX_GUILDBANK 42
#define MAX_BANK 42
#define MAX_REPAIR 16
#define MAX_TRADE 25
#define MAX_VENDITEM 30
#define MAX_REPAIRINGITEM 25
#define MAX_VENDORNAME 48
#define MAX_STUFF ( MAX_INVENTORY + MAX_QUICKSLOT )
#define MAX_EXPLPPOINT 41
#define MAX_EXPSKILL 21
#define MAX_EXPCHARACTER 200
#define MAX_FXPCHARACTER 200
#define MAX_CHARACTER_LIST 3
#define MAX_VENDOR_INVENTORY 100
#define MAX_VENDOR_INVENTORY_TAB 4
#define MAX_QUEST 100
#define MAX_COMPLETE_QUEST 300
#if __VER >= 15 // __IMPROVE_QUEST_INTERFACE
#define MAX_CHECKED_QUEST 5
#endif // __IMPROVE_QUEST_INTERFACE
#define MAX_PARTYLEVEL 10
#define MAX_ADDEXPPARTY 16
#define MAX_RENEWEVENT 8000
#define MAX_REALITEM 8 // À̺¥Æ® »óǰ ¾ÆÀÌÅÛ
#define MAX_EVENTREALITEM 4096
#define MAX_EXPJOBLEVEL 90
#define ITEM_KIND_MAX 100
const int MAX_PROPMOVER = 2000; // MoverProp¹è¿*ÀÇ ÃÖ´ë°¹¼ö
#define MAX_HONOR_TITLE 150 // ´ÞÀΟÀÌÆ² Á¦ÇÑ
#if __VER >= 8 // __S8_VENDOR_REVISION
#define MAX_VENDOR_REVISION 20
#endif //__S8_VENDOR_REVISION
#define dwDestParam1 dwDestParam[0]
#define dwDestParam2 dwDestParam[1]
#define nAdjParamVal1 nAdjParamVal[0]
#define nAdjParamVal2 nAdjParamVal[1]
#define dwChgParamVal1 dwChgParamVal[0]
#define dwChgParamVal2 dwChgParamVal[1]
#ifdef __PROP_0827
#define dwDestParam3 dwDestParam[2]
#define nAdjParamVal3 nAdjParamVal[2]
#define dwChgParamVal3 dwChgParamVal[2]
#endif // __PROP_0827
#if __VER >= 9
#include "defineitemkind.h"
#endif //
struct tagColorText
{
DWORD dwColor;
TCHAR * lpszData;
};
struct ObjProp
{
DWORD dwID; // º¯¼ö¸í
TCHAR szName[64]; // Çѱ۸íĪ
DWORD dwType;
DWORD dwAI; // AIInterface
DWORD dwHP;
ObjProp()
{
*szName = '\0';
dwID = dwType = dwAI = dwHP = 0;
}
};
struct CtrlProp : ObjProp
{
DWORD dwCtrlKind1;
DWORD dwCtrlKind2;
DWORD dwCtrlKind3;
DWORD dwSfxCtrl;
DWORD dwSndDamage;
CtrlProp() : ObjProp()
{
dwCtrlKind1 = dwCtrlKind2 = dwCtrlKind3 = dwSfxCtrl = dwSndDamage = 0;
}
#if __VER >= 15 // __GUILD_HOUSE
BOOL IsGuildHousingObj( ) { return CK1_GUILD_HOUSE == dwCtrlKind1; } //±æµå ÇÏ¿ì¡ Àü¿ë ¿ÀºêÁ§Æ® Àΰ¡?
BOOL IsHousingObj( ) { return CK1_HOUSING == dwCtrlKind1; } //°³ÀÎ ÇÏ¿ì¡ Àü¿ë ¿ÀºêÁ§Æ®
#endif // __GUILD_HOUSE
};
struct AddSkillProp
{
DWORD dwID; // º¯¼ö¸í
DWORD dwName; // ¸íĪ
DWORD dwSkillLvl; // ½ºÅ³·¹º§
DWORD dwAbilityMin; // ÃÖ¼Ò´É·Â
DWORD dwAbilityMax; // ÃÖ´ë´É·Â
DWORD dwAttackSpeed; // °ø°Ý¼Óµµ
DWORD dwDmgShift; // Ÿ°Ý½Ã ¹Ýµ¿
DWORD nProbability; // ¹ßµ¿ È®·ü
DWORD dwTaunt; // Ÿ¿îÆ®
DWORD dwDestParam[2]; // Àû¿ë´ë»ó1
DWORD nAdjParamVal[2]; // Àû¿ë°ª1;
DWORD dwChgParamVal[2]; //Àû¿ëº¯È*°ª1
int nDestData1[3]; // Àû¿ëµ¥ÀÌŸ3°³, DestParam[0]¿¡ ÇØ´ç.
DWORD dwActiveSkill; // ¹ßµ¿ ¸¶¹ý
DWORD dwActiveSkillRate; // ¹ßµ¿ ¸¶¹ý È®·ü.
#if __VER >= 9 // __SKILL_0706
DWORD dwActiveSkillRatePVP; // ´ëÀÎ ¹ßµ¿ ¸¶¹ý È®·ü.
#endif // __SKILL_0706
int nReqMp; //ÇÊ¿äMP
int nReqFp; //ÇÊ¿äFP
#if __VER >= 9 // __SKILL_0706
DWORD dwCooldown; // Äð´Ù¿î
DWORD dwCastingTime; //±â¼ú Áغñ½Ã°£
#else // __SKILL_0706
DWORD dwSkillReady; //±â¼ú Áغñ½Ã°£
#endif // __SKILL_0706
DWORD dwSkillRange; // ±â¼ú ½ÃÀü°Å¸®
DWORD dwCircleTime; //À¯Áö½Ã°£
DWORD dwPainTime; // Áö¼Ó ÇÇÇØ½Ã°£
DWORD dwSkillTime; //Áö¼Ó½Ã°£
int nSkillCount; // ¹ß»çü ¹ß»ç °³¼ö. °³´ç°ø°Ý·Â = ÃѰø°Ý·Â / nSkillCount;
DWORD dwSkillExp; //½ºÅ³ °æÇèÄ¡
DWORD dwExp; //ÇöÀç°æÇèÄ¡
DWORD dwComboSkillTime; //ÄÞº¸½ºÅ³Å¸ÀÓ
#if __VER >= 9 // __SKILL_0706
DWORD dwAbilityMinPVP; // ÃÖ¼Ò´É·Â(´ëÀÎ)
DWORD dwAbilityMaxPVP; // ÃÖ´ë´É·Â(´ëÀÎ)
DWORD nProbabilityPVP; // ¹ßµ¿ È®·ü(´ëÀÎ)
#endif // __SKILL_0706
AddSkillProp()
{
dwID = dwName = 0;
nProbability = 0;
dwSkillLvl = dwAbilityMin = dwAbilityMax = dwAttackSpeed = dwDmgShift = dwTaunt = 0;
dwDestParam[0] = dwDestParam[1] = nAdjParamVal[0] = nAdjParamVal[1] = dwChgParamVal[0] = dwChgParamVal[1] = 0;
nReqMp = nReqFp = 0;
dwActiveSkillRate = 0;
#if __VER >= 9 // __SKILL_0706
dwCastingTime = 0;
dwAbilityMinPVP = 0;
dwAbilityMaxPVP = 0;
dwCooldown = 0;
nProbabilityPVP = 0;
dwActiveSkillRatePVP = 0;
#else // __SKILL_0706
dwSkillReady = 0;
#endif // __SKILL_0706
dwCircleTime = dwSkillTime = dwExp = dwComboSkillTime = 0;
}
};
struct PartySkillProp
{
DWORD dwID; // º¯¼ö¸í
DWORD dwName; // ¸íĪ
DWORD dwSkillLvl; // ½ºÅ³·¹º§
DWORD dwAbilityMin; // ÃÖ¼Ò´É·Â
DWORD dwAtkAbilityMax; // ÃÖ´ë´É·Â
DWORD dwAttackSpeed; // °ø°Ý¼Óµµ
DWORD dwDmgShift; // Ÿ°Ý½Ã ¹Ýµ¿
DWORD dwGroggy; // ±×·ÎŰ
DWORD dwTaunt; // Ÿ¿îÆ®
DWORD dwDestParam[2]; // Àû¿ë´ë»ó1
DWORD nAdjParamVal[2]; // Àû¿ë°ª1;
DWORD dwChgParamVal[2]; //Àû¿ëº¯È*°ª1
DWORD dwReqMp; //ÇÊ¿äMP
DWORD dwReqFp; //ÇÊ¿äFP
DWORD dwSkillReady; //±â¼ú Áغñ½Ã°£
DWORD dwCircleTime; //À¯Áö½Ã°£
DWORD dwSkillTime; //Áö¼Ó½Ã°£
DWORD dwExp; //ÇöÀç°æÇèÄ¡
DWORD dwComboSkillTime; //ÄÞº¸½ºÅ³Å¸ÀÓ
PartySkillProp()
{
dwID = dwName = 0;
dwSkillLvl = dwAbilityMin = dwAtkAbilityMax = dwAttackSpeed = dwDmgShift = dwGroggy = dwTaunt = 0;
dwDestParam[0] = dwDestParam[1] = nAdjParamVal[0] = nAdjParamVal[1] = dwChgParamVal[0] = dwChgParamVal[1] = 0;
dwReqMp = dwReqFp = dwSkillReady = 0;
dwCircleTime = dwSkillTime = dwExp = dwComboSkillTime = 0;
}
};
enum
{
FILE_FILTER = 0,
FILE_INVALID = 1,
FILE_NOTICE = 2,
FILE_GUILDCOMBAT_TEXT_1 = 3,
FILE_GUILDCOMBAT_TEXT_2 = 4,
FILE_GUILDCOMBAT_TEXT_3 = 5,
FILE_GUILDCOMBAT_TEXT_4 = 6,
FILE_GUILDCOMBAT_TEXT_5 = 7,
FILE_GUILDCOMBAT_TEXT_6 = 8
#ifdef __RULE_0615
,FILE_ALLOWED_LETTER = 9
#endif // __RULE_0615
#if __VER >= 11 // __GUILD_COMBAT_1TO1
,
FILE_GUILDCOMBAT_1TO1_TEXT_1 = 10,
FILE_GUILDCOMBAT_1TO1_TEXT_2 = 11,
FILE_GUILDCOMBAT_1TO1_TEXT_3 = 12,
FILE_GUILDCOMBAT_1TO1_TEXT_4 = 13,
FILE_GUILDCOMBAT_1TO1_TEXT_5 = 14
#endif //__GUILD_COMBAT_1TO1
#ifdef __VENDOR_1106
,FILE_ALLOWED_LETTER2 = 15
#endif // __VENDOR_1106
};
// Item Property Type
enum IP_TYPE
{
IP_FLAG_NONE = 0x00, // Ç÷¡±× ¾øÀ½
IP_FLAG_BINDS = 0x01, // 1 - ±Í¼Ó ¾ÆÀÌÅÛ
IP_FLAG_UNDESTRUCTABLE = 0x02 // 2 - »èÁ¦ ºÒ°¡ ¾ÆÀÌÅÛ
#if __VER >= 14 // __EQUIP_BIND
,IP_FLAG_EQUIP_BIND = 0x04
#endif // __EQUIP_BIND
// 0x04
};
struct ItemProp : CtrlProp
{
DWORD dwMotion; // µ¿ÀÛ
DWORD dwNum; // ±âº»»ý¼º°³¼ö
DWORD dwPackMax; // ÃÖ´ëÈħ°³¼ö
DWORD dwItemKind1; // 1Â÷¾ÆÀÌÅÛÁ¾·ù
DWORD dwItemKind2; // 2Â÷¾ÆÀÌÅÛÁ¾·ù
DWORD dwItemKind3; // 3Â÷¾ÆÀÌÅÛÁ¾·ù
DWORD dwItemJob; // ¾ÆÀÌÅÛÁ÷¾÷¼Ò¼Ó
BOOL bPermanence; // ¼ÒºñºÒ°¡
DWORD dwUseable; // »ç¿ë½ÃÁ¡
DWORD dwItemSex; // »ç¿ë¼ºº°
DWORD dwCost; // °¡°Ý
DWORD dwEndurance; // ³»±¸·Â
int nLog; // ·Î±×
int nAbrasion; // ¸¶¸ðÀ²
int nMaxRepair; // ¼ö¸®È½¼ö
DWORD dwHanded; // Àâ´ÂÇü½Ä
DWORD dwFlag; // ´Ù¸ñÀû Ç÷¡±×
DWORD dwParts; // ÀåÂøÀ§Ä¡
DWORD dwPartsub; // ÀåÂøÀ§Ä¡
DWORD bPartsFile; // ÆÄÃ÷ÆÄÀÏ »ç¿ë¿©ºÎ
DWORD dwExclusive; // Á¦°ÅµÉÀ§Ä¡
DWORD dwBasePartsIgnore;
DWORD dwItemLV; // ¾ÆÀÌÅÛ·¹º§
DWORD dwItemRare; // Èñ±Í¼º
DWORD dwShopAble;
int nShellQuantity; // ÃÖ´ëÀåÀü°³¼ö - IK°¡ äÁýµµ±¸À϶§´Â ÃÖ´ë äÁý·®ÀÌ µÈ´Ù.(»èÁ¦ ¿¹Á¤)
DWORD dwActiveSkillLv; // ¹ßµ¿ ¸¶¹ý ·¹º§
DWORD dwFuelRe; // ÆÑ´ç¿¬·áÃæÀü·®
DWORD dwAFuelReMax; // °¡¼Ó¿¬·áÃæÀü·®
DWORD dwSpellType; // ¸¶¹ý¼Ó¼º
DWORD dwLinkKindBullet; // ÇÊ¿ä ¼Ò¸ðÀåºñ ¾ÆÀÌÅÛ
DWORD dwLinkKind; // ÇÊ¿ä ¾ÆÀÌÅÛÁ¾·ù
DWORD dwAbilityMin; // ÃÖ¼Ò´É·ÂÄ¡ - °ø°Ý·Â, ¹æ¾î·Â, ¼º´É ±âŸµîµî
DWORD dwAbilityMax; // ÃÖ´ë´É·ÂÄ¡ - °ø°Ý·Â, ¹æ¾î·Â, ¼º´É ±âŸµîµî
BOOL bCharged;
SAI79::ePropType eItemType;
short wItemEatk; // ¼Ó¼º µ¥¹ÌÁö( À§ ¼Ó¼º ŸÀÔÀ¸·Î °ø°Ý·ÂÀ» ¼³Á¤ÇÑ´Ù. )
DWORD dwParry; // ȸÇÇÀ²
DWORD dwblockRating; // ºí·° ¼öÄ¡
int nAddSkillMin; // ÃÖ¼Ò Ãß°¡ ½ºÅ³
int nAddSkillMax; // ÃÖ´ë Ãß°¡ ½ºÅ³.
DWORD dwAtkStyle; // °ø°Ý ½ºÅ¸ÀÏ
DWORD dwWeaponType; // ¹«±âÁ¾·ù
DWORD dwItemAtkOrder1; // ¾ÆÀÌÅÛ1Â÷°ø°Ý¼ø¼*
DWORD dwItemAtkOrder2; // ¾ÆÀÌÅÛ2Â÷°ø°Ý¼ø¼*
DWORD dwItemAtkOrder3; // ¾ÆÀÌÅÛ3Â÷°ø°Ý¼ø¼*
DWORD dwItemAtkOrder4; // ¾ÆÀÌÅÛ4Â÷°ø°Ý¼ø¼*
DWORD tmContinuousPain; // Áö¼Ó ÇÇÇØ
DWORD dwRecoil; // ¹Ýµ¿
DWORD dwLoadingTime; // ÀåÀü½Ã°£ - IK°¡ äÁýµµ±¸À϶§´Â äÁý¼Óµµ(´É·Â)ÀÌ µÈ´Ù.
LONG nAdjHitRate; // Ãß°¡°ø°Ý¼º°ø·ü
FLOAT fAttackSpeed; // °ø°Ý¼Óµµ
DWORD dwDmgShift; // Ÿ°Ý½Ã ¹Ýµ¿
DWORD dwAttackRange; // °ø°Ý¹üÀ§
int nProbability; // Àû¿ëÈ®·ü
#ifndef __PROP_0827
DWORD dwDestParam[2]; // Àû¿ë´ë»ó1
LONG nAdjParamVal[2]; // Àû¿ë°ª1
DWORD dwChgParamVal[2]; // Àû¿ëº¯È*°ª1
#else // __PROP_0827
DWORD dwDestParam[3]; // Àû¿ë´ë»ó1
LONG nAdjParamVal[3]; // Àû¿ë°ª1
DWORD dwChgParamVal[3]; // Àû¿ëº¯È*°ª1
#endif // __PROP_0827
int nDestData1[3]; // Àû¿ëµ¥ÀÌŸ°ª 3°³, destParam1¿¡¸¸ ÇØ´çµÊ.
DWORD dwActiveSkill; // ¹ßµ¿ ¸¶¹ý
DWORD dwActiveSkillRate; // ¹ßµ¿ ¸¶¹ý È®·ü.
DWORD dwReqMp; // ÇÊ¿äMP
DWORD dwReqFp; // ÇÊ¿äFP
DWORD dwReqDisLV;
DWORD dwReSkill1;
DWORD dwReSkillLevel1;
DWORD dwReSkill2;
DWORD dwReSkillLevel2;
DWORD dwSkillReadyType;
DWORD dwSkillReady; // ±â¼ú Áغñ½Ã°£
DWORD _dwSkillRange; // ±â¼ú ½ÃÀü°Å¸®
DWORD dwSfxElemental;
DWORD dwSfxObj; // »ý¼ºÇÒ È¿°ú ¿ÀºêÁ§Æ®
DWORD dwSfxObj2; // »ý¼ºÇÒ È¿°ú ¿ÀºêÁ§Æ®
DWORD dwSfxObj3; // ¹ßµ¿È¿°ú, Ÿ°Ù
DWORD dwSfxObj4; // Áö¼ÓµÇ´Â È¿°ú ÀÌÆåÆ®.
DWORD dwSfxObj5; // ¹ßµ¿È¿°ú, ½ÃÀüÀÚ
DWORD dwUseMotion; // »ç¿ë ¸ð¼Ç
DWORD dwCircleTime; // À¯Áö½Ã°£
DWORD dwSkillTime; // Áö¼Ó½Ã°£
DWORD dwExeTarget;
DWORD dwUseChance;
DWORD dwSpellRegion; // ¸¶¹ý ¹üÀ§
DWORD dwReferStat1;
DWORD dwReferStat2;
DWORD dwReferTarget1;
DWORD dwReferTarget2;
DWORD dwReferValue1;
DWORD dwReferValue2;
DWORD dwSkillType; // ±â¼ú¼Ó¼º
int nItemResistElecricity;
int nItemResistDark;
int nItemResistFire;
int nItemResistWind;
int nItemResistWater;
int nItemResistEarth;
LONG nEvildoing; // ¾ÇÇà
DWORD dwExpertLV;
DWORD dwExpertMax; // ÃÖ´ë¼÷·Ã·¹º§
DWORD dwSubDefine;
DWORD dwExp; // ÇöÀç°æÇèÄ¡
DWORD dwComboStyle;
FLOAT fFlightSpeed; // ºñÇàÃßÁø·Â(¼Óµµ)
FLOAT fFlightLRAngle; // Á¿ì ÅÏ °¢µµ.
FLOAT fFlightTBAngle; // »óÇÏ ÅÏ °¢µµ.
DWORD dwFlightLimit; // ºñÇàÁ¦ÇÑ·¹º§
DWORD dwFFuelReMax; // ºñÇ࿬·áÃæÀü·®
DWORD dwLimitLevel1; // Á¦ÇÑ·¹º§1
int nReflect; // ¸®Ç÷º¼Ç ¿É¼Ç.
DWORD dwSndAttack1; // È¿°úÀ½ : °ø°Ý 1
DWORD dwSndAttack2; // È¿°úÀ½ : °ø°Ý 2
DWORD dwQuestId;
TCHAR szTextFileName[64]; // item¿¡ GM command¿¡ ³Ö´Â °Í¿¡ »ç¿ë
#ifdef __CLIENT
TCHAR szIcon[64]; // ddsÆÄÀÏ À̸§
TCHAR szCommand[256]; // ¼³¸í¹®
#endif
int nVer;
#ifdef __VERIFY_0201
TCHAR szIcon[64];
TCHAR szCommand[256]; // ¼³¸í¹®
#endif // __VERIFY_0201
DWORD GetCoolTime() { return dwSkillReady; }
#if __VER >= 9 // __ULTIMATE
BOOL IsUltimate( void )
{
return(
(
dwItemKind2 == IK2_WEAPON_DIRECT
|| dwItemKind2 == IK2_WEAPON_MAGIC
)
&& dwReferStat1 == WEAPON_ULTIMATE
);
}
#endif //
#if __VER >= 15 // __PETVIS
BOOL IsVisPet() { return (dwItemKind3 == IK3_PET) && (dwReferStat1 == PET_VIS); }
BOOL IsVis() { return (dwItemKind3 == IK3_VIS ); }
#ifdef __CLIENT
BOOL IsVisKey() { return (II_SYS_SYS_VIS_KEY01 == dwID ); }
BOOL IsPickupToBuff( ) { return ( II_SYS_SYS_SCR_PET_MAGIC == dwID ); }
#endif //__CLIENT
#endif // __PETVIS
};
// Á÷¾÷¿¡ µû¸¥ factor ENUM
enum JOB_PROP_TYPE
{
JOB_PROP_SWD,
JOB_PROP_AXE,
JOB_PROP_STAFF,
JOB_PROP_STICK,
JOB_PROP_KNUCKLE,
JOB_PROP_WAND,
JOB_PROP_BLOCKING,
JOB_PROP_YOYO,
JOB_PROP_CRITICAL,
};
// Á÷¾÷¿¡ µû¸¥ ÇÁ·ÎÆÛƼ ( propJob.inc¿¡¼* ÀоîµéÀÓ )
struct JobProp
{
float fAttackSpeed; //°ø¼Ó
float fFactorMaxHP; //ÃÖ´ë HP °è»ê¿¡ »ç¿ëµÇ´Â factor
float fFactorMaxMP; //ÃÖ´ë MP °è»ê¿¡ »ç¿ëµÇ´Â factor
float fFactorMaxFP; //ÃÖ´ë FP °è»ê¿¡ »ç¿ëµÇ´Â factor
float fFactorDef; //¹°¸® ¹æ¾î·Â °è»ê¿¡ »ç¿ëµÇ´Â factor
float fFactorHPRecovery; //HPȸº¹ factor
float fFactorMPRecovery; //MPȸº¹ factor
float fFactorFPRecovery; //FPȸº¹ factor
float fMeleeSWD; //WT_MELEE_SWDÀÇ ATK factor
float fMeleeAXE; //WT_MELEE_AXEÀÇ ATK factor
float fMeleeSTAFF; //WT_MELEE_STAFFÀÇ ATK factor
float fMeleeSTICK; //WT_MELEE_STICKÀÇ ATK factor
float fMeleeKNUCKLE; //WT_MELEE_KNUCKLEÀÇ ATK factor
float fMagicWAND; //WT_MAGIC_WANDÀÇ ATK factor
float fBlocking; //ºí·ÏÅ· factor
float fMeleeYOYO; //¿ä¿äÀÇ ATK factor
float fCritical; //Å©¸®Æ¼Äà ó¸®
};
typedef struct tagRANDOM_ITEM
{
BYTE m_lpQuestFlagArray[ITEM_KIND_MAX / 8 + 1];
void SetItemKind( int nItemKind,BOOL bBool );
BOOL IsItemKind( int nItemKind );
BYTE m_nTotalNum; // ¹ß»ý ¾ÆÀÌÅÛ °¹¼ö
BYTE m_nUniqueMax; // À¯´ÏÅ© ¾ÆÀÌÅÛ ÃÖ´ë
BYTE m_nUniqueMin; // À¯´ÏÅ© ¾ÆÀÌÅÛ ÃÖ¼Ò
WORD m_nGoldMax; // °ñµå ¸Æ½º
WORD m_nAmmoMax; // ÃÑ¾Ë ¸Æ½º
WORD m_nDartMax; // ǥ⠸ƽº
WORD m_nGoldMin; // °ñµå ¸Æ½º
WORD m_nAmmoMin; // ÃÑ¾Ë ¸Æ½º
WORD m_nDartMin; // ǥ⠸ƽº
tagRANDOM_ITEM()
{
m_nTotalNum = 0;
m_nUniqueMax = 0;
m_nUniqueMin = 0;
m_nGoldMax = 0;
m_nAmmoMax = 0;
m_nDartMax = 0;
m_nGoldMin = 0;
m_nAmmoMin = 0;
m_nDartMin = 0;
}
}
RANDOM_ITEM,* LPRANDOM_ITEM;
/*----------------------------------------------------------------------------------------------------*/
enum DROPTYPE
{
DROPTYPE_NORMAL,
DROPTYPE_SEED,
};
typedef struct tagDROPITEM
{
DROPTYPE dtType;
DWORD dwIndex;
DWORD dwProbability;
DWORD dwLevel;
DWORD dwNumber;
DWORD dwNumber2; // Min, MaxÁß Max·Î ¾¸.
}
DROPITEM, *LPDROPITEM;
typedef struct tagDROPKIND
{
DWORD dwIK3;
short nMinUniq;
short nMaxUniq;
}
DROPKIND, *LPDROPKIND;
typedef struct tagQUESTITEM
{
DWORD dwQuest;
DWORD dwState;
DWORD dwIndex;
DWORD dwProbability;
DWORD dwNumber;
}
QUESTITEM, *PQUESTITEM;
typedef struct tagEVENTITEM
{
DWORD dwIndex;
DWORD dwPrabability;
}
EVENTITEM, *PEVENTITEM;
#define MAX_QUESTITEM 16
#define MAX_DROPKIND 80
class CDropItemGenerator
{
private:
vector<DROPITEM> m_dropItems;
public:
DWORD m_dwMax;
public:
// Contructions
CDropItemGenerator() { m_dwMax = 0; }
virtual ~CDropItemGenerator() { Clear(); }
// Operations
void AddTail( CONST DROPITEM & rDropItem, const char* s );
void Clear( void ) { m_dropItems.clear(); }
DWORD GetSize( void ) { return m_dropItems.size(); }
DROPITEM* GetAt( int nIndex, BOOL bUniqueMode, float fProbability = 0.0f );
};
class CDropKindGenerator
{
private:
int m_nSize;
DROPKIND m_aDropKind[MAX_DROPKIND];
public:
// Contructions
CDropKindGenerator()
{ m_nSize = 0; }
virtual ~CDropKindGenerator() {}
// Operations
void AddTail( const DROPKIND & rDropKind ); // memcpy
int GetSize( void ) { return m_nSize; }
LPDROPKIND GetAt( int nIndex );
};
class CQuestItemGenerator
{
private:
u_long m_uSize;
QUESTITEM m_pQuestItem[MAX_QUESTITEM];
public:
CQuestItemGenerator()
{ m_uSize = 0; }
~CQuestItemGenerator() {}
void AddTail( const QUESTITEM & rQuestItem );
u_long GetSize( void ) { return m_uSize; }
QUESTITEM* GetAt( int nIndex );
};
#if __VER >= 14 // __INSTANCE_DUNGEON
struct MonsterTransform
{
float fHPRate;
DWORD dwMonsterId;
MonsterTransform() : fHPRate( 0.0f ), dwMonsterId( NULL_ID ) {}
};
#endif // __INSTANCE_DUNGEON
/*----------------------------------------------------------------------------------------------------*/
struct MoverProp : CtrlProp
{
DWORD dwStr; // Èû,
DWORD dwSta; // ü·Â,
DWORD dwDex; // ¹Îø,
DWORD dwInt; // Áö´É,
DWORD dwHR;
DWORD dwER;
DWORD dwRace; // Á¾Á·,
DWORD dwBelligerence; // È£Àü¼º,
DWORD dwGender; // ¼ºº°,
DWORD dwLevel; // ·¹º§,
DWORD dwFlightLevel; // ºñÇà·¹º§
DWORD dwSize; // Å©±â,
DWORD dwClass;
BOOL bIfParts; // ÆÄÃ÷³Ä?
int nChaotic; // ³ª»Û³ð ¸¶À̳ʽº/ ÁÁÀº³Ñ Ç÷¯½º
#ifdef __S1108_BACK_END_SYSTEM
DWORD dwUseable; // ¹æ¾î ij¸¯¼ö,
#else // __S1108_BACK_END_SYSTEM
DWORD dwDefExtent; // ¹æ¾î ij¸¯¼ö,
#endif // __S1108_BACK_END_SYSTEM
DWORD dwActionRadius; // ÀüÅõÇൿ¹ø°æ,
DWORD dwAtkMin; // ÃÖ¼ÒŸ°ÝÄ¡,
DWORD dwAtkMax; // Ãִ런ÝÄ¡,
DWORD dwAtk1;
DWORD dwAtk2;
DWORD dwAtk3;
DWORD dwAtk4; // dwHorizontalRate°¡ À̰ɷΠ¹Ù²ñ.
#if __VER >= 9 //__AI_0509
FLOAT fFrame; // À̵¿ ½Ã ÇÁ·¹ÀÓ °¡ÁßÄ¡
DWORD dwOrthograde;
#else // __AI_0509
DWORD dwVerticalRate; // ¼¼·ÎºñÀ²,
DWORD dwDiagonalRate; // »ç¼±ºñÀ²,
#endif // __AI_0509
DWORD dwThrustRate; // Â±âºñÀ²,
DWORD dwChestRate;
DWORD dwHeadRate;
DWORD dwArmRate;
DWORD dwLegRate;
DWORD dwAttackSpeed; // °ø°Ý¼Óµµ,
DWORD dwReAttackDelay;
DWORD dwAddHp; // ,
DWORD dwAddMp; // ,
DWORD dwNaturalArmor; // ÀÚ¿¬¹æ¾î·Â
int nAbrasion; // ¸¶¸ðµµ
int nHardness; // °æµµ
DWORD dwAdjAtkDelay; // Ãß°¡°ø°Ý¼ÓµµÀúÇÏ,
SAI79::ePropType eElementType;
short wElementAtk; // ¼Ó¼º µ¥¹ÌÁö( À§ ¼Ó¼º ŸÀÔÀ¸·Î °ø°Ý·ÂÀ» ¼³Á¤ÇÑ´Ù. )
DWORD dwHideLevel; // ·¹º§ ¾Èº¸À̴³ÑÀ̳Ä..
FLOAT fSpeed; // À̵¿¼Óµµ,
DWORD dwShelter; // °ÅÁÖÁö¿ª,
DWORD dwFlying; // ºñÇàÀ¯¹«,
DWORD dwJumpIng; // ³ôÀ̶ٱâ
DWORD dwAirJump; // ¸Ö¸®¶Ù±â
DWORD bTaming; // Á¶·ÃÀ¯¹«
DWORD dwResisMgic; //¸¶¹ýÀúÇ×
int nResistElecricity;
int nResistDark;
int nResistFire;
int nResistWind;
int nResistWater;
int nResistEarth;
DWORD dwCash; // Á¦°ø±Ý¾×
DWORD dwSourceMaterial; // Á¦°øÀç·á
DWORD dwMaterialAmount; // Àç·á¾ç
DWORD dwCohesion; // Àç·áÀÀÁýµµ
DWORD dwHoldingTime; // ½ÃüÀ¯Áö½Ã°£
DWORD dwCorrectionValue; // ¾ÆÀÌÅÛ»ý¼ºº¸Á¤°ª
EXPINTEGER nExpValue;
int nFxpValue; // ºñÇà°æÇèÄ¡.
DWORD nBodyState; // ¸ö»óÅÂ,
DWORD dwAddAbility; // Ãß°¡´É·Â,
DWORD bKillable; // Á×À½À¯¹«,
DWORD dwVirtItem[3];
DWORD bVirtType[3];
DWORD dwSndAtk1 ;
DWORD dwSndAtk2 ;
DWORD dwSndDie1 ;
DWORD dwSndDie2 ;
DWORD dwSndDmg1 ;
DWORD dwSndDmg2 ;
DWORD dwSndDmg3 ;
DWORD dwSndIdle1 ;
DWORD dwSndIdle2 ;
short m_nEvasionHP;
short m_nEvasionSec;
short m_nRunawayHP ; // HP°¡ 10 ÀÌÇÏ¸é µµÁÖ
short m_nCallHelperMax ; // ÃÑ °¹¼ö
short m_nCallHP ; // µµ¿ò¿äûÇϱâ À§ÇÑ HP
short m_nCallHelperIdx [ 5 ]; // µµ¿ò¿äûÇϱâ Id
short m_nCallHelperNum [ 5 ]; // µµ¿ò¿äûÇϱâ Id
short m_bCallHelperParty[ 5 ]; // µµ¿ò¿äûÇϱâ Id
short m_dwAttackMoveDelay;
short m_dwRunawayDelay;
short m_bPartyAttack;
short m_nHelperNum;
#if !defined(__CORESERVER)
int m_nScanJob; // Ÿ°ÙÀ» °Ë»öÇÒ¶§ ƯÁ¤ Á÷¾÷À¸·Î °Ë»öÇϴ°¡. 0 À̸é ALL
// °ø°ÝÁ¶°ÇµéÀº ºñ½ºÆ®¿¡¼* ¼±°øÀ¸·Î ÁöÁ¤µÇ¾î ÀÖÀ»¶§ ¾ê±â´Ù.
int m_nHPCond; // Ÿ°ÙÀÌ hp% ÀÌÇÏÀ϶§ °ø°ÝÀ» ÇÔ.
int m_nLvCond; // Ÿ°Ù°ú ·¹º§ºñ±³ÇÏ¿© ³·À¸¸é °ø°ÝÀ» ÇÔ.
int m_nRecvCondMe; // ȸº¹ Á¶°Ç. ³»hp°¡ ¸î%ÀÌÇÏ·Î ¶³¾îÁ³À»¶§?
int m_nRecvCondHow; // ȸº¹ÇÒ¶§ ȸº¹ÇÒ ¾ç %´ÜÀ§
int m_nRecvCondMP; // ȸº¹ÇÒ¶§ MP¼Ò¸ð·® %´ÜÀ§
BYTE m_bMeleeAttack; // ±ÙÁ¢ °ø°Ý AI°¡ Àִ°¡?
BYTE m_bRecvCondWho; // ´©±¸¸¦ Ä¡·áÇÒ²¨³Ä. 0:ÁöÁ¤¾ÈµÊ 1:´Ù¸¥³ð 2:³ª 3:¸ðµÎ.
BYTE m_bRecvCond; // Ä¡·áÇϳÄ? 0:Ä¡·á¾ÈÇÔ 1:ÀüÅõÁß¿¡¸¸ Ä¡·áÇÔ 2:ÀüÅõ/ºñÀüÅõ ¸ðµÎ Ä¡·á
BYTE m_bHelpWho; // µµ¿ò¿äû½Ã - 0:ºÎ¸£Áö¾ÊÀ½ 1:¾Æ¹«³ª 2:°°ÀºÁ¾Á·¸¸.
BYTE m_bRangeAttack[ MAX_JOB ]; // °¢ Á÷¾÷º° ¿ø°Å¸® °ø°Ý °Å¸®.
int m_nSummProb; // ¼Òȯ È®·ü : 0ÀÌ¸é ¼Òȯ´É·Â ¾øÀ½.
int m_nSummNum; // Çѹø¿¡ ¸î¸¶¸®³ª ¼ÒȯÇϳÄ.
int m_nSummID; // ¾î¶² ¸ó½ºÅÍ?
int m_nHelpRangeMul; // µµ¿ò¿äû °Å¸®. ½Ã¾ßÀÇ ¹è¼ö
DWORD m_tmUnitHelp; // ÇïÇÁ ŸÀ̸Ó.
int m_nBerserkHP; // ¹ö¼*Ä¿°¡ µÇ±â À§ÇÑ HP%
float m_fBerserkDmgMul; // ¹ö¼*Ä¿°¡ µÇ¾úÀ»¶§ µ¥¹ÌÁö ¹è¼ö.
int m_nLoot; // ·çÆÃ¸÷Àΰ¡.
int m_nLootProb; // ·çÆÃ È®·ü
DWORD m_dwScanQuestId;
DWORD m_dwScanItemIdx;
int m_nScanChao; // Ä«¿À, ºñÄ«¿À °Ë»ö
#endif // !__CORESERVER
#ifdef __S1108_BACK_END_SYSTEM
float m_fHitPoint_Rate; // ¸ó½ºÅÍ ÃÖ´ë HP·ü // dwAddHp * m_nHitPoint_Rate
float m_fAttackPower_Rate; // ¸ó½ºÅÍ ÃÖ´ë °ø°Ý·ü // dwAtkMin * m_nAttackPower_Rate
float m_fDefence_Rate; // ¸ó½ºÅÍ ÃÖ´ë ¹æ¾î·ü // dwAddHp * m_nDefence_Rate
float m_fExp_Rate; // ¸ó½ºÅÍ ÃÖ´ë °æÇèÄ¡·ü // dwAddHp * m_nExp_Rate
float m_fItemDrop_Rate; // ¸ó½ºÅÍ ÃÖ´ë ¾ÆÀÌÅÛ µå·Ó·ü // dwAddHp * m_nItemDrop_Rate
float m_fPenya_Rate; // ¸ó½ºÅÍ ÃÖ´ë Æä³Ä·ü // dwAddHp * m_nPenya_Rate
BOOL m_bRate;
#endif // __S1108_BACK_END_SYSTEM
short m_nAttackItemNear;
short m_nAttackItemFar;
short m_nAttackItem1;
short m_nAttackItem2;
short m_nAttackItem3;
short m_nAttackItem4;
short m_nAttackItemSec;
short m_nMagicReflection;
short m_nImmortality;
BOOL m_bBlow;
short m_nChangeTargetRand;
short m_nAttackFirstRange;
RANDOM_ITEM m_randomItem ;
CDropItemGenerator m_DropItemGenerator;
CQuestItemGenerator m_QuestItemGenerator;
CDropKindGenerator m_DropKindGenerator;
#if __VER >= 14 // __INSTANCE_DUNGEON
MonsterTransform m_MonsterTransform;
#endif // __INSTANCE_DUNGEON
MoverProp()
{
dwStr = dwSta = dwDex = dwInt = dwHR = dwER = dwRace = dwBelligerence =dwGender
= dwLevel = dwFlightLevel = dwSize = dwClass = bIfParts = nChaotic
#ifdef __S1108_BACK_END_SYSTEM
= dwUseable
#else // __S1108_BACK_END_SYSTEM
= dwDefExtent
#endif // __S1108_BACK_END_SYSTEM
= dwActionRadius = dwAtkMin = dwAtkMax = dwAtk1 = dwAtk2 = dwAtk3 = dwAtk4 = 0;
#if __VER >= 9 //__AI_0509
fFrame = 1.0F;
dwOrthograde = 0;
#else // __AI_0509
dwVerticalRate = dwDiagonalRate = 0;
#endif // __AI_0509
dwThrustRate = 0;
dwChestRate = 0;
dwHeadRate = 0;
dwArmRate = 0;
dwLegRate = 0;
dwAttackSpeed = 0;
dwReAttackDelay = 0;
dwAddHp = 0;
dwAddMp = 0;
dwNaturalArmor = 0;
nAbrasion = 0;
nHardness = 0;
dwAdjAtkDelay = 0;
dwHideLevel = 0;
eElementType = SAI79::NO_PROP;
wElementAtk = 0;
fSpeed = 0.0F;
dwShelter = 0;
dwFlying = 0;
dwJumpIng = 0;
dwAirJump = 0;
bTaming = 0;
dwResisMgic = 0;
nResistElecricity = 0;
nResistDark = 0;
nResistFire = 0;
nResistWind = 0;
nResistWater = 0;
nResistEarth = 0;
dwCash = 0;
dwSourceMaterial = 0;
dwMaterialAmount = 0;
dwCohesion = 0;
dwHoldingTime = 0;
dwCorrectionValue = 0;
nExpValue = 0;
nFxpValue = 0;
nBodyState = 0;
dwAddAbility = 0;
bKillable = 0;
memset( dwVirtItem, 0, sizeof(dwVirtItem) );
memset( bVirtType, 0, sizeof(bVirtType) );
dwSndAtk1 = 0;
dwSndAtk2 = 0;
dwSndDie1 = 0;
dwSndDie2 = 0;
dwSndDmg1 = 0;
dwSndDmg2 = 0;
dwSndDmg3 = 0;
dwSndIdle1 = 0;
dwSndIdle2 = 0;
m_nEvasionHP = 0;
m_nEvasionSec = 0;
m_nRunawayHP = 0;
m_nCallHelperMax = 0;
m_nCallHP = 0;
memset( m_nCallHelperIdx, 0, sizeof(m_nCallHelperIdx) );
memset( m_nCallHelperNum, 0, sizeof(m_nCallHelperNum) );
memset( m_bCallHelperParty, 0, sizeof(m_bCallHelperParty) );
m_dwAttackMoveDelay = 0;
m_dwRunawayDelay = 0;
m_bPartyAttack = 0;
m_nHelperNum = 0;
#if !defined(__CORESERVER)
m_nScanJob = 0;
m_nHPCond = 0;
m_nLvCond = 0;
m_nRecvCondMe = 0;
m_nRecvCondHow = 0;
m_nRecvCondMP = 0;
m_bMeleeAttack = 0;
m_bRecvCondWho = 0;
m_bRecvCond = 0;
m_bHelpWho = 0;
memset( m_bRangeAttack, 0, sizeof(m_bRangeAttack) );
m_nSummProb = 0;
m_nSummNum = 0;
m_nSummID = 0;
m_nHelpRangeMul = 0;
m_tmUnitHelp = 0;
m_nBerserkHP = 0;
m_fBerserkDmgMul = 0;
m_nLoot = 0;
m_nLootProb = 0;
m_dwScanQuestId = 0;
m_dwScanItemIdx = 0;
m_nScanChao = 0;
#endif // !__CORESERVER
#ifdef __S1108_BACK_END_SYSTEM
m_fHitPoint_Rate =
m_fAttackPower_Rate =
m_fDefence_Rate =
m_fExp_Rate =
m_fItemDrop_Rate =
m_fPenya_Rate = 0.0F;
m_bRate =
#endif // __S1108_BACK_END_SYSTEM
m_nAttackItemNear =
m_nAttackItemFar =
m_nAttackItem1 =
m_nAttackItem2 =
m_nAttackItem3 =
m_nAttackItem4 =
m_nAttackItemSec =
m_nMagicReflection =
m_nImmortality =
m_bBlow =
m_nChangeTargetRand =
m_nAttackFirstRange = 0;
}
};
typedef struct tagBeginItem
{
DWORD dwItemType;
DWORD dwItemId;
DWORD dwNum;
}
BEGINITEM, *LPBEGINITEM;
#define MAX_BEGINEQUIP 10
#define MAX_BEGINITEM 42 //20
#define MAX_JOBITEM 10
typedef struct tagJOBITEM
{
DWORD adwMale[ MAX_BEGINEQUIP ][ 2 ];
BEGINITEM beginItem[ MAX_BEGINITEM ];
} JOBITEM,* LPJOBITEM;
#define MAX_BEGINPOS 16
typedef struct tagBEGINPOSARR
{
u_long uSize;
D3DXVECTOR3 avPos[MAX_BEGINPOS];
}
BEGINPOSARR, *LPBEGINPOSARR;
#define TASKBAR_TOP 0
#define TASKBAR_BOTTOM 1
#define TASKBAR_LEFT 2
#define TASKBAR_RIGHT 3
// short cut
#define MAX_SLOT_APPLET 18
#define MAX_SLOT_ITEM 9
#define MAX_SLOT_QUEUE 5
#if __VER >= 11 // __CSC_VER11_5
#define MAX_SLOT_ITEM_COUNT 8
#else
#define MAX_SLOT_ITEM_COUNT 4
#endif //__CSC_VER11_5
#define SHORTCUT_NONE 0
#define SHORTCUT_ETC 1
#define SHORTCUT_APPLET 2
#define SHORTCUT_MOTION 3
#define SHORTCUT_SCRIPT 4
#define SHORTCUT_ITEM 5
//#define SHORTCUT_CARD 5
//#define SHORTCUT_JACKBOX 6
#define SHORTCUT_SKILL 6
#define SHORTCUT_OBJECT 7
#define SHORTCUT_CHAT 8
#define SHORTCUT_SKILLFUN 9
#define SHORTCUT_EMOTICON 10
#define SHORTCUT_LORDSKILL 11
#if defined ( __CLIENT )
class CWndBase;
#endif // __CLIENT
typedef struct tagSHORTCUT
{
#if defined ( __CLIENT )
CWndBase* m_pFromWnd ;
CTexture* m_pTexture ;
#if __VER >= 8 // __JEFF_VER_8
DWORD m_dwItemId;
#endif // __JEFF_VER_8
#endif // __CLIENT
DWORD m_dwShortcut ;
DWORD m_dwId ;
DWORD m_dwType ;
DWORD m_dwIndex ;
DWORD m_dwUserId ;
DWORD m_dwData ;
TCHAR m_szString[MAX_SHORTCUT_STRING]; // SHORTCUT_CHATÀÏ °æ¿ì ÀúÀå.
BOOL IsEmpty() { return m_dwShortcut == SHORTCUT_NONE; }
void Empty() { m_dwShortcut = SHORTCUT_NONE; }
} SHORTCUT,* LPSHORTCUT;
typedef struct tagEXPPARTY
{
DWORD Exp;
DWORD Point;
}
EXPPARTY, *LPEXPPARTY;
typedef struct tagRENEWEVENT
{
int nLevel;
DWORD dwItemId;
TCHAR strItemName[64];
float fPercent;
}
RENEWEVENT, *LPRENEWEVENT;
typedef struct tagRENEWEVENTITEM
{
#ifdef __S0517
CTime EndTime;
#else // __S0517
TCHAR strTime[32];
#endif // __S0517
int nLevel;
int nRealitem[ MAX_REALITEM ];
int nRealitemCount[ MAX_REALITEM ];
int nSendRealitemCount[ MAX_REALITEM ];
int nPercent[ MAX_REALITEM ];
int nNextIndex;
}
RENEWEVENTITEM, *LPRENEWEVENTITEM;
typedef struct tagExpCharacter
{
EXPINTEGER nExp1;
EXPINTEGER nExp2;
DWORD dwLPPoint;
EXPINTEGER nLimitExp;
}
EXPCHARACTER, *LPEXPCHARACTER;
#endif // __PROJECTCMN_H__
Das ist meine ProjectCmn.h - Datei. Ich weine gleich, haha ;D
|
|
|
08/20/2011, 21:10
|
#10
|
elite*gold: 74
Join Date: Apr 2009
Posts: 5,908
Received Thanks: 2,386
|
Ich auch villeicht gibt es mehre ProjectCmn.h bei mir ist es so und ist
in Solution:World ^^
|
|
|
08/20/2011, 21:38
|
#11
|
elite*gold: 0
Join Date: Feb 2010
Posts: 111
Received Thanks: 23
|
Quote:
Originally Posted by Achileus
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
|
#12
|
elite*gold: 74
Join Date: Apr 2009
Posts: 5,908
Received Thanks: 2,386
|
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
|
#13
|
elite*gold: 2
Join Date: Jul 2009
Posts: 1,447
Received Thanks: 923
|
Es wurden bei V18 wieder neue hinzugefügt, wenn ich fragen darf: welche Spec_Item.txt hast du in deinen Resource daten?
|
|
|
08/21/2011, 14:18
|
#14
|
elite*gold: 0
Join Date: Feb 2010
Posts: 111
Received Thanks: 23
|
Quote:
Originally Posted by .Crasy
Es wurden bei V18 wieder neue hinzugefügt, 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
|
#15
|
elite*gold: 23
Join Date: Jun 2008
Posts: 949
Received Thanks: 376
|
Hast du in der Projectcmn.h auch die neuen Parameter geaddet?
|
|
|
 |
|
Similar Threads
|
[Source-Frage] Spec_item.txt im Source adden?
07/20/2011 - Flyff Private Server - 18 Replies
Heyho Leute,
kurze Frage,
wie kann ich die Spec_item.txt im Source eintragen?
Ich würd gern meine Files auf V17 Dflyff stand aufbauen und mit v16 kam ja schon die Spec_item.txt anstatt der propitem.txt
Und einige neue sachen wie sZComment oder so.
Wäre echt nett wenn wer helfen könnte.
|
[WTS] Steam ACC - Counter Strike Source, Day of Defeat: Source und Half-Life 2: Death
12/12/2010 - Counter-Strike Trading - 1 Replies
Delete.
|
[Biete]COD6 Modern Warfare 2 Steam Accounts + CS:Source + DoD:Source
04/17/2010 - Steam Trading - 9 Replies
Hallo,
ich biete hier einen Call of Duty 6 - Modern Warfare (UNCUT + RETAIL) Steam Account an.
1. STEAM-Account Call Of Duty 6 - Modern Warfare 2 + Cunter-Strike: Source + Day Of Defeat: Source
SOLD!
http://img199.imageshack.us/img199/7035/steamaccou nt1.png
Des weiteren biete ich hier noch einen orignalen Uncut Modern Warfare 2 Steam Account mit VAC Bann an, welcher jedoch im Single Player problemlos zu spielen ist.
|
[Release]How To Make Tq Source Work + Working Source + Server ByBass + Commands
12/08/2008 - CO2 PServer Guides & Releases - 15 Replies
1: How To Make The Server Work
In fact, before other people did not just let ACC now with hi EACC Columbia landing on the settlement of the issue, and the rest is our own how to improve the content of those interested can improve the next. MY MY set and the same. INI MAP INI files and MAP with the client-to-date coverage of the account. server.dat ! And then as long as the client will be able to modify server.dat!
127.0.0.1 192.168.0.1 192.168.1.1 IP。 Please do generally use...
|
All times are GMT +1. The time now is 10:38.
|
|