|
You last visited: Today at 18:35
Advertisement
[Problem]Einfügen neuer Boni (Python)
Discussion on [Problem]Einfügen neuer Boni (Python) within the Metin2 Private Server forum part of the Metin2 category.
09/18/2015, 03:06
|
#1
|
elite*gold: 0
Join Date: Feb 2015
Posts: 249
Received Thanks: 55
|
[Problem]Einfügen neuer Boni (Python)
Hallo leutz,
hab mal wieder n kleines Problemchen.
Ich war dabei neue Bonis einzufügen nach diesem Tutorial:
Dass das nich alles gewesen sein kann war mir ja im vorraus schon klar, und hab jetzt manuell neue Boni eingefügt in die Datenbank, er ließt das ja nich aus oder?
Jedenfalls hab ich nun folgendes problem, welches nach erfolgreichem login auftritt:
Client schließt sich und hinterlässt syserr einträge dieser Art:
PHP Code:
0918 02:44:27917 :: networkModule.py(line:208) SetSelectCharacterPhase system.py(line:130) __pack_import system.py(line:110) _process_result introSelect.py(line:23) <module> system.py(line:130) __pack_import system.py(line:110) _process_result uiAffectShower.py(line:8) <module> system.py(line:130) __pack_import system.py(line:110) _process_result uiToolTip.py(line:314) <module> uiToolTip.py(line:368) ItemToolTip networkModule.SetSelectCharacterPhase - <type 'exceptions.AttributeError'>:'module' object has no attribute 'APPLY_ATTBONUS_SPIDER' 0918 02:44:27917 :: ============================================================================================================ 0918 02:44:27917 :: Abort!!!!
Irgentwo fehlt da was...
das ist in der Tooltip zeile 368:
PHP Code:
item.APPLY_ATTBONUS_SPIDER : localeInfo.TOOLTIP_APPLY_ATTBONUS_SPIDER,
irgentwas muss es sich doch damit auf sich haben das mit dem "item.APPLY"
Weil in ieiner Item datei hab ichs nich eingefügt, finde aber auch nix dergleichen
auch in der localeinfo hab ich schon übersetzungen eingefügt...
Wird immer lustiger mit den Metin files xD
Hoffe mir kann da jmd helfen! <3
MFG
|
|
|
09/18/2015, 06:57
|
#2
|
elite*gold: 90
Join Date: Apr 2010
Posts: 1,887
Received Thanks: 1,789
|
Hast du "APPLY_ATTBONUS_SPIDER" auch im Source der Binary deklariert?
Falls nicht: Öffne die ItemData.h, such nach "EApplyTypes" und trag es dort an der gleichen Stelle ein wie in der length.h.
Dann öffnest du die PythonItemModule.cpp und fügst ganz unten folgendes hinzu:
Code:
PyModule_AddIntConstant(poModule, "APPLY_ATTBONUS_SPIDER", CItemData::APPLY_ATTBONUS_SPIDER);
|
|
|
09/18/2015, 09:25
|
#3
|
elite*gold: 0
Join Date: Feb 2015
Posts: 249
Received Thanks: 55
|
Danke, jetzt kommt keine Fehlermeldung mehr. Ein problem hab ich jedoch... Irgentwie will dieser Boni nicht auf die Waffe rauf. (Und ja ich hab sie in der item_attr eingefügt, ihnen prob 20 gegeben und bei weapon ne 5 eingetragen). Muss man die noch irgentwo anders verknüpfen oder so? Bekomme keine Fehlermeldungen zu dem Boni...
|
|
|
09/18/2015, 10:01
|
#4
|
elite*gold: 90
Join Date: Apr 2010
Posts: 1,887
Received Thanks: 1,789
|
Hm in diesem Tutorial fehlt irgendwie mehr als die Hälfte. Öffne mal die char.h und such nach EPointTypes. Füg dort folgendes hinzu:
Code:
POINT_ATTBONUS_SPIDER
Dann öffne die constants.cpp und such nach const TApplyInfo aApplyInfo[MAX_APPLY_NUM]. Dort fügst du folgendes hinzu:
Code:
{ POINT_ATTBONUS_SPIDER, },
Dann such ebenfalls in der constants.cpp nach TValueName c_aApplyTypeNames[] und füg folgendes hinzu (achte darauf, dass es an derselben Position ist wie in der vorherigen Tabelle):
Code:
{ "ATTBONUS_SPIDER",APPLY_ATTBONUS_SPIDER },
Dann öffne die char.cpp und such nach "case APPLY_ATTBONUS_UNDEAD:" wo und füg darunter hinzu (prinzipiell ist es egal wo, da switch-case Anweisungen nicht in sortierter Reihenfolge arbeiten):
Code:
case APPLY_ATTBONUS_SPIDER:
Und zu guter Letzt öffne die ProtoReader.cpp vom db cache und such nach "string arApplyType[]". Füg da am Ende "ATTBONUS_SPIDER" hinzu.
|
|
|
09/18/2015, 11:03
|
#5
|
elite*gold: 0
Join Date: Feb 2015
Posts: 249
Received Thanks: 55
|
Irgentwie ist in meiner lenght.h nix mit POINT bonis... O.O
PHP Code:
#ifndef __INC_METIN_II_LENGTH_H__ #define __INC_METIN_II_LENGTH_H__
#define WORD_MAX 0xffff enum EMisc { SPAM_WAIT_SEC = 5, // The player can duplicate his message after 5 sec SPAM_CHAT_BAN_TIME = 60, // The player will receive 60 seconds chat ban, if he is saying a spamlist word SPAM_BAN_TIME = 3600, // The player will receive 1 hour ban, if he is saying a banlist word
MAX_HOST_LENGTH = 15, IP_ADDRESS_LENGTH = 15, LOGIN_MAX_LEN = 30, PASSWD_MAX_LEN = 16, PLAYER_PER_ACCOUNT = 4, ACCOUNT_STATUS_MAX_LEN = 8, CHARACTER_NAME_MAX_LEN = 24, SHOP_SIGN_MAX_LEN = 32, INVENTORY_MAX_NUM = 180, ABILITY_MAX_NUM = 50, EMPIRE_MAX_NUM = 4, BANWORD_MAX_LEN = 24, SMS_MAX_LEN = 80, MOBILE_MAX_LEN = 32, SOCIAL_ID_MAX_LEN = 18,
GUILD_NAME_MAX_LEN = 12,
SHOP_HOST_ITEM_MAX_NUM = 40, /* 호스트의 최대 아이템 개수 */ SHOP_GUEST_ITEM_MAX_NUM = 18, /* 게스트의 최대 아이템 개수 */
SHOP_PRICELIST_MAX_NUM = 40, ///< 개인상점 가격정보 리스트에서 유지할 가격정보의 최대 갯수
CHAT_MAX_LEN = 512,
QUICKSLOT_MAX_NUM = 36,
JOURNAL_MAX_NUM = 2,
QUERY_MAX_LEN = 8192,
FILE_MAX_LEN = 128,
PLAYER_EXP_TABLE_MAX = 120, PLAYER_MAX_LEVEL_CONST = 120,
GUILD_MAX_LEVEL = 20, MOB_MAX_LEVEL = 100,
ATTRIBUTE_MAX_VALUE = 20, CHARACTER_PATH_MAX_NUM = 64, SKILL_MAX_NUM = 255, SKILLBOOK_DELAY_MIN = 64800, SKILLBOOK_DELAY_MAX = 108000, SKILL_MAX_LEVEL = 40,
APPLY_NAME_MAX_LEN = 32, EVENT_FLAG_NAME_MAX_LEN = 32,
MOB_SKILL_MAX_NUM = 5,
POINT_MAX_NUM = 255, DRAGON_SOUL_BOX_SIZE = 32, DRAGON_SOUL_BOX_COLUMN_NUM = 8, DRAGON_SOUL_BOX_ROW_NUM = DRAGON_SOUL_BOX_SIZE / DRAGON_SOUL_BOX_COLUMN_NUM, DRAGON_SOUL_REFINE_GRID_SIZE = 15, MAX_AMOUNT_OF_MALL_BONUS = 20,
WEAR_MAX_NUM = 32,
//LIMIT_GOLD GOLD_MAX = 2000000000,
MAX_PASSPOD = 8 ,
//END_LIMIT_GOLD
OPENID_AUTHKEY_LEN = 32,
SHOP_TAB_NAME_MAX = 32, SHOP_TAB_COUNT_MAX = 3,
BELT_INVENTORY_SLOT_WIDTH = 4, BELT_INVENTORY_SLOT_HEIGHT= 4,
BELT_INVENTORY_SLOT_COUNT = BELT_INVENTORY_SLOT_WIDTH * BELT_INVENTORY_SLOT_HEIGHT,
/** **** 현재까지 할당 된 아이템 영역 정리 (DB상 Item Position) **** +------------------------------------------------------+ 0 | 캐릭터 기본 인벤토리 (45칸 * 2페이지) 90칸 | +------------------------------------------------------+ 90 = INVENTORY_MAX_NUM(90) | 캐릭터 장비 창 (착용중인 아이템) 32칸 | +------------------------------------------------------+ 122 = INVENTORY_MAX_NUM(90) + WEAR_MAX_NUM(32) | 용혼석 장비 창 (착용중인 용혼석) 12칸 | +------------------------------------------------------+ 134 = 122 + DS_SLOT_MAX(6) * DRAGON_SOUL_DECK_MAX_NUM(2) | 용혼석 장비 창 예약 (아직 미사용) 18칸 | +------------------------------------------------------+ 152 = 134 + DS_SLOT_MAX(6) * DRAGON_SOUL_DECK_RESERVED_MAX_NUM(3) | 벨트 인벤토리 (벨트 착용시에만 벨트 레벨에 따라 활성)| +------------------------------------------------------+ 168 = 152 + BELT_INVENTORY_SLOT_COUNT(16) = INVENTORY_AND_EQUIP_CELL_MAX | 미사용 | +------------------------------------------------------+ ?? */ };
enum EMatrixCard { MATRIX_CODE_MAX_LEN = 192, MATRIX_ANSWER_MAX_LEN = 8, };
enum EWearPositions { WEAR_BODY, // 0 WEAR_HEAD, // 1 WEAR_FOOTS, // 2 WEAR_WRIST, // 3 WEAR_WEAPON, // 4 WEAR_NECK, // 5 WEAR_EAR, // 6 WEAR_UNIQUE1, // 7 WEAR_UNIQUE2, // 8 WEAR_ARROW, // 9 WEAR_SHIELD, // 10 WEAR_ABILITY1, // 11 WEAR_ABILITY2, // 12 WEAR_ABILITY3, // 13 WEAR_ABILITY4, // 14 WEAR_ABILITY5, // 15 WEAR_ABILITY6, // 16 WEAR_ABILITY7, // 17 WEAR_ABILITY8, // 18 WEAR_COSTUME_BODY, // 19 WEAR_COSTUME_HAIR, // 20 WEAR_RING1, // 21 : 신규 반지슬롯1 (왼쪽) WEAR_RING2, // 22 : 신규 반지슬롯2 (오른쪽)
WEAR_BELT, // 23 : 신규 벨트슬롯
WEAR_MAX = 32 // };
enum EDragonSoulDeckType { DRAGON_SOUL_DECK_0, DRAGON_SOUL_DECK_1, DRAGON_SOUL_DECK_MAX_NUM = 2,
DRAGON_SOUL_DECK_RESERVED_MAX_NUM = 3, // NOTE: 중요! 아직 사용중이진 않지만, 3페이지 분량을 예약 해 둠. DS DECK을 늘릴 경우 반드시 그 수만큼 RESERVED에서 차감해야 함! };
enum ESex { SEX_MALE, SEX_FEMALE };
enum EDirection { DIR_NORTH, DIR_NORTHEAST, DIR_EAST, DIR_SOUTHEAST, DIR_SOUTH, DIR_SOUTHWEST, DIR_WEST, DIR_NORTHWEST, DIR_MAX_NUM };
#define ABILITY_MAX_LEVEL 10 /* 기술 최대 레벨 */
enum EAbilityDifficulty { DIFFICULTY_EASY, DIFFICULTY_NORMAL, DIFFICULTY_HARD, DIFFICULTY_VERY_HARD, DIFFICULTY_NUM_TYPES };
enum EAbilityCategory { CATEGORY_PHYSICAL, /* 신체적 어빌리티 */ CATEGORY_MENTAL, /* 정신적 어빌리티 */ CATEGORY_ATTRIBUTE, /* 능력 어빌리티 */ CATEGORY_NUM_TYPES };
enum EJobs { JOB_WARRIOR, JOB_ASSASSIN, JOB_SURA, JOB_SHAMAN, JOB_MAX_NUM };
enum ESkillGroups { SKILL_GROUP_MAX_NUM = 2, };
enum ERaceFlags { RACE_FLAG_ANIMAL = (1 << 0), RACE_FLAG_UNDEAD = (1 << 1), RACE_FLAG_DEVIL = (1 << 2), RACE_FLAG_HUMAN = (1 << 3), RACE_FLAG_ORC = (1 << 4), RACE_FLAG_MILGYO = (1 << 5), RACE_FLAG_INSECT = (1 << 6), RACE_FLAG_FIRE = (1 << 7), RACE_FLAG_ICE = (1 << 8), RACE_FLAG_DESERT = (1 << 9), RACE_FLAG_TREE = (1 << 10), RACE_FLAG_ATT_ELEC = (1 << 11), RACE_FLAG_ATT_FIRE = (1 << 12), RACE_FLAG_ATT_ICE = (1 << 13), RACE_FLAG_ATT_WIND = (1 << 14), RACE_FLAG_ATT_EARTH = (1 << 15), RACE_FLAG_ATT_DARK = (1 << 16), };
enum ELoads { LOAD_NONE, LOAD_LIGHT, LOAD_NORMAL, LOAD_HEAVY, LOAD_MASSIVE };
enum { QUICKSLOT_TYPE_NONE, QUICKSLOT_TYPE_ITEM, QUICKSLOT_TYPE_SKILL, QUICKSLOT_TYPE_COMMAND, QUICKSLOT_TYPE_MAX_NUM, };
enum EParts { PART_MAIN, PART_WEAPON, PART_HEAD, PART_HAIR,
PART_MAX_NUM, PART_WEAPON_SUB, };
enum EChatType { CHAT_TYPE_TALKING, /* 그냥 채팅 */ CHAT_TYPE_INFO, /* 정보 (아이템을 집었다, 경험치를 얻었다. 등) */ CHAT_TYPE_NOTICE, /* 공지사항 */ CHAT_TYPE_PARTY, /* 파티말 */ CHAT_TYPE_GUILD, /* 길드말 */ CHAT_TYPE_COMMAND, /* 일반 명령 */ CHAT_TYPE_SHOUT, /* 외치기 */ CHAT_TYPE_WHISPER, CHAT_TYPE_BIG_NOTICE, CHAT_TYPE_MONARCH_NOTICE, CHAT_TYPE_MAX_NUM };
enum EWhisperType { WHISPER_TYPE_NORMAL = 0, WHISPER_TYPE_NOT_EXIST = 1, WHISPER_TYPE_TARGET_BLOCKED = 2, WHISPER_TYPE_SENDER_BLOCKED = 3, WHISPER_TYPE_ERROR = 4, WHISPER_TYPE_GM = 5, WHISPER_TYPE_SYSTEM = 0xFF };
enum ECharacterPosition { POSITION_GENERAL, POSITION_BATTLE, POSITION_DYING, POSITION_SITTING_CHAIR, POSITION_SITTING_GROUND, POSITION_INTRO, POSITION_MAX_NUM };
enum EGMLevels { GM_PLAYER, GM_LOW_WIZARD, GM_WIZARD, GM_HIGH_WIZARD, GM_GOD, GM_IMPLEMENTOR };
enum EMobRank { MOB_RANK_PAWN, MOB_RANK_S_PAWN, MOB_RANK_KNIGHT, MOB_RANK_S_KNIGHT, MOB_RANK_BOSS, MOB_RANK_KING, MOB_RANK_MAX_NUM };
enum ECharType { CHAR_TYPE_MONSTER, CHAR_TYPE_NPC, CHAR_TYPE_STONE, CHAR_TYPE_WARP, CHAR_TYPE_DOOR, CHAR_TYPE_BUILDING, CHAR_TYPE_PC, CHAR_TYPE_POLYMORPH_PC, CHAR_TYPE_HORSE, CHAR_TYPE_GOTO };
enum EBattleType { BATTLE_TYPE_MELEE, BATTLE_TYPE_RANGE, BATTLE_TYPE_MAGIC, BATTLE_TYPE_SPECIAL, BATTLE_TYPE_POWER, BATTLE_TYPE_TANKER, BATTLE_TYPE_SUPER_POWER, BATTLE_TYPE_SUPER_TANKER, BATTLE_TYPE_MAX_NUM };
enum EApplyTypes { APPLY_NONE, // 0 APPLY_MAX_HP, // 1 APPLY_MAX_SP, // 2 APPLY_CON, // 3 APPLY_INT, // 4 APPLY_STR, // 5 APPLY_DEX, // 6 APPLY_ATT_SPEED, // 7 APPLY_MOV_SPEED, // 8 APPLY_CAST_SPEED, // 9 APPLY_HP_REGEN, // 10 APPLY_SP_REGEN, // 11 APPLY_POISON_PCT, // 12 APPLY_STUN_PCT, // 13 APPLY_SLOW_PCT, // 14 APPLY_CRITICAL_PCT, // 15 APPLY_PENETRATE_PCT, // 16 APPLY_ATTBONUS_HUMAN, // 17 APPLY_ATTBONUS_ANIMAL, // 18 APPLY_ATTBONUS_ORC, // 19 APPLY_ATTBONUS_MILGYO, // 20 APPLY_ATTBONUS_UNDEAD, // 21 APPLY_ATTBONUS_DEVIL, // 22 APPLY_STEAL_HP, // 23 APPLY_STEAL_SP, // 24 APPLY_MANA_BURN_PCT, // 25 APPLY_DAMAGE_SP_RECOVER, // 26 APPLY_BLOCK, // 27 APPLY_DODGE, // 28 APPLY_RESIST_SWORD, // 29 APPLY_RESIST_TWOHAND, // 30 APPLY_RESIST_DAGGER, // 31 APPLY_RESIST_BELL, // 32 APPLY_RESIST_FAN, // 33 APPLY_RESIST_BOW, // 34 APPLY_RESIST_FIRE, // 35 APPLY_RESIST_ELEC, // 36 APPLY_RESIST_MAGIC, // 37 APPLY_RESIST_WIND, // 38 APPLY_REFLECT_MELEE, // 39 APPLY_REFLECT_CURSE, // 40 APPLY_POISON_REDUCE, // 41 APPLY_KILL_SP_RECOVER, // 42 APPLY_EXP_DOUBLE_BONUS, // 43 APPLY_GOLD_DOUBLE_BONUS, // 44 APPLY_ITEM_DROP_BONUS, // 45 APPLY_POTION_BONUS, // 46 APPLY_KILL_HP_RECOVER, // 47 APPLY_IMMUNE_STUN, // 48 APPLY_IMMUNE_SLOW, // 49 APPLY_IMMUNE_FALL, // 50 APPLY_SKILL, // 51 APPLY_BOW_DISTANCE, // 52 APPLY_ATT_GRADE_BONUS, // 53 APPLY_DEF_GRADE_BONUS, // 54 APPLY_MAGIC_ATT_GRADE, // 55 APPLY_MAGIC_DEF_GRADE, // 56 APPLY_CURSE_PCT, // 57 APPLY_MAX_STAMINA, // 58 APPLY_ATTBONUS_WARRIOR, // 59 APPLY_ATTBONUS_ASSASSIN, // 60 APPLY_ATTBONUS_SURA, // 61 APPLY_ATTBONUS_SHAMAN, // 62 APPLY_ATTBONUS_MONSTER, // 63 APPLY_MALL_ATTBONUS, // 64 공격력 +x% APPLY_MALL_DEFBONUS, // 65 방어력 +x% APPLY_MALL_EXPBONUS, // 66 경험치 +x% APPLY_MALL_ITEMBONUS, // 67 아이템 드롭율 x/10배 APPLY_MALL_GOLDBONUS, // 68 돈 드롭율 x/10배 APPLY_MAX_HP_PCT, // 69 최대 생명력 +x% APPLY_MAX_SP_PCT, // 70 최대 정신력 +x% APPLY_SKILL_DAMAGE_BONUS, // 71 스킬 데미지 * (100+x)% APPLY_NORMAL_HIT_DAMAGE_BONUS, // 72 평타 데미지 * (100+x)% APPLY_SKILL_DEFEND_BONUS, // 73 스킬 데미지 방어 * (100-x)% APPLY_NORMAL_HIT_DEFEND_BONUS, // 74 평타 데미지 방어 * (100-x)% APPLY_PC_BANG_EXP_BONUS, // 75 PC방 아이템 EXP 보너스 APPLY_PC_BANG_DROP_BONUS, // 76 PC방 아이템 드롭율 보너스
APPLY_EXTRACT_HP_PCT, // 77 사용시 HP 소모
APPLY_RESIST_WARRIOR, // 78 무사에게 저항 APPLY_RESIST_ASSASSIN, // 79 자객에게 저항 APPLY_RESIST_SURA, // 80 수라에게 저항 APPLY_RESIST_SHAMAN, // 81 무당에게 저항 APPLY_ENERGY, // 82 기력 APPLY_DEF_GRADE, // 83 방어력. DEF_GRADE_BONUS는 클라에서 두배로 보여지는 의도된 버그(...)가 있다. APPLY_COSTUME_ATTR_BONUS, // 84 코스튬 아이템에 붙은 속성치 보너스 APPLY_MAGIC_ATTBONUS_PER, // 85 마법 공격력 +x% APPLY_MELEE_MAGIC_ATTBONUS_PER, // 86 마법 + 밀리 공격력 +x% APPLY_RESIST_ICE, // 87 냉기 저항 APPLY_RESIST_EARTH, // 88 대지 저항 APPLY_RESIST_DARK, // 89 어둠 저항
APPLY_ANTI_CRITICAL_PCT, //90 크리티컬 저항 APPLY_ANTI_PENETRATE_PCT, //91 관통타격 저항 APPLY_ATTBONUS_SPIDER, //95 APPLY_ATTBONUS_POISON_ANIMAL, //96
MAX_APPLY_NUM, // };
enum EOnClickEvents { ON_CLICK_NONE, ON_CLICK_SHOP, ON_CLICK_TALK, ON_CLICK_MAX_NUM };
enum EOnIdleEvents { ON_IDLE_NONE, ON_IDLE_GENERAL, ON_IDLE_MAX_NUM };
enum EWindows { RESERVED_WINDOW, INVENTORY, EQUIPMENT, SAFEBOX, MALL, DRAGON_SOUL_INVENTORY, BELT_INVENTORY, #ifdef __AUCTION__ AUCTION, #endif GROUND };
enum EMobSizes { MOBSIZE_RESERVED, MOBSIZE_SMALL, MOBSIZE_MEDIUM, MOBSIZE_BIG };
enum EAIFlags { AIFLAG_AGGRESSIVE = (1 << 0), AIFLAG_NOMOVE = (1 << 1), AIFLAG_COWARD = (1 << 2), AIFLAG_NOATTACKSHINSU = (1 << 3), AIFLAG_NOATTACKJINNO = (1 << 4), AIFLAG_NOATTACKCHUNJO = (1 << 5), AIFLAG_ATTACKMOB = (1 << 6 ), AIFLAG_BERSERK = (1 << 7), AIFLAG_STONESKIN = (1 << 8), AIFLAG_GODSPEED = (1 << 9), AIFLAG_DEATHBLOW = (1 << 10), AIFLAG_REVIVE = (1 << 11), };
enum EMobStatType { MOB_STATTYPE_POWER, MOB_STATTYPE_TANKER, MOB_STATTYPE_SUPER_POWER, MOB_STATTYPE_SUPER_TANKER, MOB_STATTYPE_RANGE, MOB_STATTYPE_MAGIC, MOB_STATTYPE_MAX_NUM };
enum EImmuneFlags { IMMUNE_STUN = (1 << 0), IMMUNE_SLOW = (1 << 1), IMMUNE_FALL = (1 << 2), IMMUNE_CURSE = (1 << 3), IMMUNE_POISON = (1 << 4), IMMUNE_TERROR = (1 << 5), IMMUNE_REFLECT = (1 << 6), };
enum EMobEnchants { MOB_ENCHANT_CURSE, MOB_ENCHANT_SLOW, MOB_ENCHANT_POISON, MOB_ENCHANT_STUN, MOB_ENCHANT_CRITICAL, MOB_ENCHANT_PENETRATE, MOB_ENCHANTS_MAX_NUM };
enum EMobResists { MOB_RESIST_SWORD, MOB_RESIST_TWOHAND, MOB_RESIST_DAGGER, MOB_RESIST_BELL, MOB_RESIST_FAN, MOB_RESIST_BOW, MOB_RESIST_FIRE, MOB_RESIST_ELECT, MOB_RESIST_MAGIC, MOB_RESIST_WIND, MOB_RESIST_POISON, MOB_RESISTS_MAX_NUM };
enum { SKILL_ATTR_TYPE_NORMAL = 1, SKILL_ATTR_TYPE_MELEE, SKILL_ATTR_TYPE_RANGE, SKILL_ATTR_TYPE_MAGIC /* SKILL_ATTR_TYPE_FIRE, SKILL_ATTR_TYPE_ICE, SKILL_ATTR_TYPE_ELEC, SKILL_ATTR_TYPE_DARK, */ };
enum { SKILL_NORMAL, SKILL_MASTER, SKILL_GRAND_MASTER, SKILL_PERFECT_MASTER, };
enum EGuildWarType { GUILD_WAR_TYPE_FIELD, GUILD_WAR_TYPE_BATTLE, GUILD_WAR_TYPE_FLAG, GUILD_WAR_TYPE_MAX_NUM };
enum EGuildWarState { GUILD_WAR_NONE, GUILD_WAR_SEND_DECLARE, GUILD_WAR_REFUSE, GUILD_WAR_RECV_DECLARE, GUILD_WAR_WAIT_START, GUILD_WAR_CANCEL, GUILD_WAR_ON_WAR, GUILD_WAR_END, GUILD_WAR_OVER, GUILD_WAR_RESERVE,
GUILD_WAR_DURATION = 30*60, // 1시간 GUILD_WAR_WIN_POINT = 1000, GUILD_WAR_LADDER_HALF_PENALTY_TIME = 12*60*60, };
enum EAttributeSet { ATTRIBUTE_SET_WEAPON, ATTRIBUTE_SET_BODY, ATTRIBUTE_SET_WRIST, ATTRIBUTE_SET_FOOTS, ATTRIBUTE_SET_NECK, ATTRIBUTE_SET_HEAD, ATTRIBUTE_SET_SHIELD, ATTRIBUTE_SET_EAR, ATTRIBUTE_SET_MAX_NUM };
enum EPrivType { PRIV_NONE, PRIV_ITEM_DROP, PRIV_GOLD_DROP, PRIV_GOLD10_DROP, PRIV_EXP_PCT, MAX_PRIV_NUM, };
enum EMoneyLogType { MONEY_LOG_RESERVED, MONEY_LOG_MONSTER, MONEY_LOG_SHOP, MONEY_LOG_REFINE, MONEY_LOG_QUEST, MONEY_LOG_GUILD, MONEY_LOG_MISC, MONEY_LOG_MONSTER_KILL, MONEY_LOG_DROP, MONEY_LOG_TYPE_MAX_NUM, };
enum EPremiumTypes { PREMIUM_EXP, // 경험치가 1.2배 PREMIUM_ITEM, // 아이템 드롭율이 2배 PREMIUM_SAFEBOX, // 창고가 1칸에서 3칸 PREMIUM_AUTOLOOT, // 돈 자동 줍기 PREMIUM_FISH_MIND, // 고급 물고기 낚일 확률 상승 PREMIUM_MARRIAGE_FAST, // 금실 증가 양을 빠르게합니다. PREMIUM_GOLD, // 돈 드롭율이 1.5배 PREMIUM_MAX_NUM = 9 };
enum SPECIAL_EFFECT { SE_NONE,
SE_HPUP_RED, SE_SPUP_BLUE, SE_SPEEDUP_GREEN, SE_DXUP_PURPLE, SE_CRITICAL, SE_PENETRATE, SE_BLOCK, SE_DODGE, SE_CHINA_FIREWORK, SE_SPIN_TOP, SE_SUCCESS, SE_FAIL, SE_FR_SUCCESS, SE_LEVELUP_ON_14_FOR_GERMANY, SE_LEVELUP_UNDER_15_FOR_GERMANY, SE_PERCENT_DAMAGE1, SE_PERCENT_DAMAGE2, SE_PERCENT_DAMAGE3,
SE_AUTO_HPUP, SE_AUTO_SPUP,
SE_EQUIP_RAMADAN_RING, // 라마단 초승달의 반지(71135) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님) SE_EQUIP_HALLOWEEN_CANDY, // 할로윈 사탕을 착용(-_-;)한 순간에 발동하는 이펙트 SE_EQUIP_HAPPINESS_RING, // 크리스마스 행복의 반지(71143) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님) SE_EQUIP_LOVE_PENDANT, // 발렌타인 사랑의 팬던트(71145) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님) } ;
enum ETeenFlags { TEENFLAG_NONE = 0, TEENFLAG_1HOUR, TEENFLAG_2HOUR, TEENFLAG_3HOUR, TEENFLAG_4HOUR, TEENFLAG_5HOUR, };
#include "item_length.h"
// inventory의 position을 나타내는 구조체 // int와의 암시적 형변환이 있는 이유는, // 인벤 관련된 모든 함수가 window_type은 받지 않고, cell 하나만 받았기 때문에,(기존에는 인벤이 하나 뿐이어서 inventory type이란게 필요없었기 때문에,) // 인벤 관련 모든 함수 호출부분을 수정하는 것이 난감하기 ‹š문이다.
enum EDragonSoulRefineWindowSize { DRAGON_SOUL_REFINE_GRID_MAX = 15, };
enum EMisc2 { DRAGON_SOUL_EQUIP_SLOT_START = INVENTORY_MAX_NUM + WEAR_MAX_NUM, DRAGON_SOUL_EQUIP_SLOT_END = DRAGON_SOUL_EQUIP_SLOT_START + (DS_SLOT_MAX * DRAGON_SOUL_DECK_MAX_NUM), DRAGON_SOUL_EQUIP_RESERVED_SLOT_END = DRAGON_SOUL_EQUIP_SLOT_END + (DS_SLOT_MAX * DRAGON_SOUL_DECK_RESERVED_MAX_NUM),
BELT_INVENTORY_SLOT_START = DRAGON_SOUL_EQUIP_RESERVED_SLOT_END, BELT_INVENTORY_SLOT_END = BELT_INVENTORY_SLOT_START + BELT_INVENTORY_SLOT_COUNT,
INVENTORY_AND_EQUIP_SLOT_MAX = BELT_INVENTORY_SLOT_END, };
#pragma pack(push, 1)
typedef struct SItemPos { BYTE window_type; WORD cell; SItemPos () { window_type = INVENTORY; cell = WORD_MAX; }
SItemPos (BYTE _window_type, WORD _cell) { window_type = _window_type; cell = _cell; }
bool IsValidItemPosition() const { switch (window_type) { case RESERVED_WINDOW: return false; case INVENTORY: case EQUIPMENT: case BELT_INVENTORY: return cell < INVENTORY_AND_EQUIP_SLOT_MAX; case DRAGON_SOUL_INVENTORY: return cell < (DRAGON_SOUL_INVENTORY_MAX_NUM); // 동적으로 크기가 정해지는 window는 valid 체크를 할 수가 없다. case SAFEBOX: case MALL: return false; default: return false; } return false; } bool IsEquipPosition() const { return ((INVENTORY == window_type || EQUIPMENT == window_type) && cell >= INVENTORY_MAX_NUM && cell < INVENTORY_MAX_NUM + WEAR_MAX_NUM) || IsDragonSoulEquipPosition(); }
bool IsDragonSoulEquipPosition() const { return (DRAGON_SOUL_EQUIP_SLOT_START <= cell) && (DRAGON_SOUL_EQUIP_SLOT_END > cell); }
bool IsBeltInventoryPosition() const { return (BELT_INVENTORY_SLOT_START <= cell) && (BELT_INVENTORY_SLOT_END > cell); }
bool IsDefaultInventoryPosition() const { return INVENTORY == window_type && cell < INVENTORY_MAX_NUM; }
bool operator==(const struct SItemPos& rhs) const { return (window_type == rhs.window_type) && (cell == rhs.cell); } bool operator<(const struct SItemPos& rhs) const { return (window_type < rhs.window_type) || ((window_type == rhs.window_type) && (cell < rhs.cell)); } } TItemPos;
const TItemPos NPOS (RESERVED_WINDOW, WORD_MAX);
typedef enum { SHOP_COIN_TYPE_GOLD, // DEFAULT VALUE SHOP_COIN_TYPE_SECONDARY_COIN, } EShopCoinType;
#pragma pack(pop)
#endif
|
|
|
09/18/2015, 11:16
|
#6
|
elite*gold: 90
Join Date: Apr 2010
Posts: 1,887
Received Thanks: 1,789
|
Hab mich verschrieben, meinte char.h.
|
|
|
09/18/2015, 11:20
|
#7
|
elite*gold: 0
Join Date: Feb 2015
Posts: 249
Received Thanks: 55
|
Dort hab ichs auch gerade gefunden ^^
Ne frage, wie wird denn das alles mit den ganzen attr "vnums" ausgewertet? Überall stehen andere zahlen (vnums) für die Bonis.. xD Irritiert mich (nicht nur) ein wenig!
MFG
Edit:Wenn es dieses "release" noch nich so komplett gab, könntest du es ja komplett öffentlich "releasen" oder? Würde sicher welche helfen bevor sie den schrott von dem anderen Typen lesen und sich denken das wars fast.
|
|
|
09/18/2015, 11:27
|
#8
|
elite*gold: 90
Join Date: Apr 2010
Posts: 1,887
Received Thanks: 1,789
|
Du brauchst eigentlich nur den Wert von APPLY_ATTBONUS_SPIDER das ist die "ID" von dem Boni (in der item_proto oder item Tabelle).
|
|
|
09/18/2015, 11:56
|
#9
|
elite*gold: 0
Join Date: Feb 2015
Posts: 249
Received Thanks: 55
|
Jetzt steht da son UNKNOWN wert.. seitdem ich versucht hab die Boni einzufügen (2 neue) kommt auch noch Immun gg Stürzen, was vorher nie war. Ist das jetzt weil sich die Boni iwie kreuzen oder so? :/
Manoman wenn man neuling in C++ ist dann is das schon kacke ^^
Edit:
Scheinbar hab ich das mit dem Unknown boni und dem stürzenboni behoben, jetzt ist wieder alles wie gehabt, nur halt ich kann die neuen Boni nicht einfügen. Sie kommen nicht in das Equip rein...
Hab ich vlt in der item_attr ein fehler drinne? Wie müsste ich das da einfügen? Ich bin völlig durcheinander.
|
|
|
|
Similar Threads
|
Problem bei neuer Item_proto einfügen (serverside)
10/07/2012 - Metin2 Private Server - 4 Replies
Hallo com,
ich habe das problem dass ich zwar eine item_proto.sql habe und diese auch eingefügt habe per execute SQL File. Aber wenn ich nun ein Reboot mache und mich versuche per client einzuloggen kommt nur noch "Fehler beim verbinden mit dem Server". Ich habe die 1678 Darro Files falls das in irgendeiner weiße hilft...^^
Also ich weiß dass es zu 100% an der item_proto liegt denn befor ich das geamcht habe ging noch alles einwandfrei... dann hab ich die Item_proto in Navicat gelöscht...
|
problem beim einfügen neuer mounts
10/06/2012 - Metin2 Private Server - 0 Replies
hi
ich habe in meinen server neue mounts eingefügt dafür die datein in der npc gepackt und dann beliebige zahlen genommen und in mob_proto npx list und mob_proto serverside eingefügt
nun muss ich glaub ich die npc.e** iwie so binden das die mounts sichtbar werden weil kann sie nicht sehr.
wie geht des? sitz hier seit 18uhr und komm nicht weiter
bitte helft
|
Problem beim einfügen neuer Rüssis
05/03/2011 - Metin2 Private Server - 29 Replies
Hey Com wollte gerade die Rüstungen von M2 Mester die letzten released wurden auf meinem Server einbauen hab soweit alles gemacht:
(Beispiel Schamanenrüstung)
1. Serverside entbugged
2. Clientside: PC.eix und .epk --> Rüstung eingefügt
3. Clientside: root.eix und .epk --> schaman_w.msm und _m.msm eingefügt
Naja soweit passt auch alles denk ich mal aber Ingame seh ich
die Rüstung jetzt irgendwie nicht aber beim wieder zusammenpacken
gab eine keinerlei Probleme.
|
[Problem] beim Einfügen neuer Rüstungen *important*
08/21/2010 - Metin2 Private Server - 6 Replies
Folgendes: Auf meinem Server möchte ich gerne, dass die Kingrüstungen von +0 bist +9 uppbar sind; dazu habe ich folgende Values in der item_proto (client- & serverside) eingetragen:
Krieger: 119710, 119711, 119712, 119713, ...
etc.
auch in der item_list wurden die neuen Values mit dem richtigen Iconpfad angegeben. Value 3 habe ich serverside, sowie clientside mit der Value 3 der normalen Hwang-Rüstung (die ich in diesem Falle als Hwang-Rüstung+9) verwende, abgeglichen.
Zum Problem:
Die...
|
All times are GMT +2. The time now is 18:35.
|
|