- Mesaj
- 113
- Çözümler
- 4
- Beğeni
- 7
- Puan
- 434
- Ticaret Puanı
- 0
31132 kodlu itemden örneğin 50 tane verince level atlamasını istiyorum 10 level 10 level verirse daha iyi olur max level 250 ama normal exp verirsede olur yapabilcek var mı?
buyur bu işini görecektir
quest level_up_quest begin
state start begin
when 20094.chat."Seviye Atlamak İstiyorum" begin
if pc.get_level() < 90 or pc.get_level() == 250 then
say("Maalesef, seviyen uygun değil.")
return
end
local itemkodu = 31132
say("10 seviye atlamak için gerekenler şu şekilde:")
say_item("x50 " ..item_name(itemkodu).. " ", itemkodu,"")
say("Seviye atlamak istiyor musun?")
say("")
local sec = select ( "Evet" , "Hayır " )
if sec == 1 then
if pc.count_item(itemkodu) >= 50 then
-- eşyayı sil...
exp olarak verdiriceksen ona gerek yok direkt level verdirebilirsin constants önemsiz yanibazı bilgileri bize sağlaman lazım
- seviye kaçtan başlayıp 250'ye kadar gidecek?
- srcden constants.cpp dosyasını konuya eklemeni istiyorum.
- npcden mi yapılacak yapılacaksa hani npc olacak kodunu söylemen lazım.
31132 kodlu itemden örneğin 50 tane verince level atlamasını istiyorum 10 level 10 level verirse daha iyi olur max level 250 ama normal exp verirsede olur yapabilcek var mı?
quest level_up_quest begin
state start begin
when 9003.chat."Seviye Atlamak İstiyorum" begin
if pc.count_item(25041) >= 50 then
local current_level = pc.get_level()
local current_exp = pc.get_exp()
local exp_to_next_level = pc.get_next_exp()
-- eşyayı sil
pc.remove_item(25041, 50)
-- exp hesap
local required_exp_for_next_level = exp_to_next_level - current_exp
local next_level_exp = pc.get_next_exp(current_level + 1)
local exp_to_give = required_exp_for_next_level + (next_level_exp / 2)
-- gerekli exp ver
pc.give_exp2(exp_to_give)
say("Tebrikler! 1 seviye atladınız.")
else
say("Maalesef, gerekli eşyadan 50 adet yok.")
say("Lütfen yeterli miktarda eşya toplayın.")
end
end
end
end
10'lu level istiyorexp olarak verdiriceksen ona gerek yok direkt level verdirebilirsin constants önemsiz yani
10 level verdirilmiyor mu?10'lu level istiyor
if pc.count_item(25041) >= 50 then
if pc.count_item(25041) >= 50 and pc.get_level() < 250 then
31132 kodlu itemden örneğin 50 tane verince level atlamasını istiyorum 10 level 10 level verirse daha iyi olur max level 250 ama normal exp verirsede olur yapabilcek var mı?
exp kullanman gerekiyor ya exp değerleri de seviye arttıkça değişiyor ondan10 level verdirilmiyor mu?
tabi aynı fonksiyonu 10 defa alt alta yazmak da çözüm gibi geldiexp kullanman gerekiyor ya exp değerleri de seviye arttıkça değişiyor ondan
90-250bazı bilgileri bize sağlaman lazım
- seviye kaçtan başlayıp 250'ye kadar gidecek?
- srcden constants.cpp dosyasını konuya eklemeni istiyorum.
- npcden mi yapılacak yapılacaksa hani npc olacak kodunu söylemen lazım.
#include "stdafx.h"
#include "char.h"
#include "../../common/CommonDefines.h"
TJobInitialPoints JobInitialPoints[JOB_MAX_NUM] =
/*
{
int st, ht, dx, iq;
int max_hp, max_sp;
int hp_per_ht, sp_per_iq;
int hp_per_lv_begin, hp_per_lv_end;
int sp_per_lv_begin, sp_per_lv_end;
int max_stamina;
int stamina_per_con;
int stamina_per_lv_begin, stamina_per_lv_end;
}
*/
{
{ 6, 4, 3, 3, 600, 200, 40, 20, 44, 44, 22, 22, 800, 5, 1, 3 }, // JOB_WARRIOR 16
{ 4, 3, 6, 3, 650, 200, 40, 20, 44, 44, 22, 22, 800, 5, 1, 3 }, // JOB_ASSASSIN 16
{ 5, 3, 3, 5, 650, 200, 40, 20, 44, 44, 22, 22, 800, 5, 1, 3 }, // JOB_SURA 16
{ 3, 4, 3, 6, 700, 200, 40, 20, 44, 44, 22, 22, 800, 5, 1, 3 }, // JOB_SHAMANa 16
#ifdef ENABLE_WOLFMAN_CHARACTER
{ 2, 6, 6, 2, 600, 200, 40, 20, 36, 44, 18, 22, 800, 5, 1, 3 },
#endif
};
const TMobRankStat MobRankStats[MOB_RANK_MAX_NUM] =
/*
{
int iGoldPercent;
}
*/
{
{ 20, }, // MOB_RANK_PAWN,
{ 20, }, // MOB_RANK_S_PAWN,
{ 25, }, // MOB_RANK_KNIGHT,
{ 30, }, // MOB_RANK_S_KNIGHT,
{ 50, }, // MOB_RANK_BOSS,
{ 100, } // MOB_RANK_KING,
};
TBattleTypeStat BattleTypeStats[BATTLE_TYPE_MAX_NUM] =
/*
{
int AttGradeBias;
int DefGradeBias;
int MagicAttGradeBias;
int MagicDefGradeBias;
}
*/
{
{ 0, 0, 0, -10 }, // BATTLE_TYPE_MELEE,
{ 10, -20, -10, -15 }, // BATTLE_TYPE_RANGE,
{ -5, -5, 10, 10 }, // BATTLE_TYPE_MAGIC,
{ 0, 0, 0, 0 }, // BATTLE_TYPE_SPECIAL,
{ 10, -10, 0, -15 }, // BATTLE_TYPE_POWER,
{ -10, 10, -10, 0 }, // BATTLE_TYPE_TANKER,
{ 20, -20, 0, -10 }, // BATTLE_TYPE_SUPER_POWER,
{ -20, 20, -10, 0 }, // BATTLE_TYPE_SUPER_TANKER,
};
const DWORD * exp_table = NULL;
const DWORD exp_table_common[PLAYER_MAX_LEVEL_CONST + 1] =
{
0, // 0
300,
800,
1500,
2500,
4300,
7200,
11000,
17000,
24000,
33000, // 10
43000,
58000,
76000,
100000,
130000,
169000,
219000,
283000,
365000,
472000, // 20
610000,
705000,
813000,
937000,
1077000,
1237000,
1418000,
1624000,
1857000,
2122000, // 30
2421000,
2761000,
3145000,
3580000,
4073000,
4632000,
5194000,
5717000,
6264000,
6837000, // 40
7600000,
8274000,
8990000,
9753000,
10560000,
11410000,
12320000,
13270000,
14280000,
15340000, // 50
16870000,
18960000,
19980000,
21420000,
22930000,
24530000,
26200000,
27960000,
29800000,
32780000, // 60
36060000,
39670000,
43640000,
48000000,
52800000,
58080000,
63890000,
70280000,
77310000,
85040000, // 70
93540000,
102900000,
113200000,
124500000,
137000000,
150700000,
165700000,
236990000,
260650000,
286780000, // 80
315380000,
346970000,
381680000,
419770000,
461760000,
508040000,
558740000,
614640000,
676130000,
743730000, // 90
1041222000,
1145344200,
1259878620,
1385866482,
1524453130,
1676898443,
1844588288,
2029047116,
2050000000,
2150000000u, // 100
2210000000u,
2250000000u,
2280000000u,
2310000000u,
2330000000u, // 105
2350000000u,
2370000000u,
2390000000u,
2400000000u,
2410000000u, // 110
2420000000u,
2430000000u,
2440000000u,
2450000000u,
2460000000u, // 115
2470000000u,
2480000000u,
2490000000u,
2490000000u,
2500000000u, // 120
// extra
2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u, // 130
2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u, // 140
2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u, // 150
2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u, // 160
2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u, // 170
2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u, // 180
2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u, // 190
2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u, // 200
2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u, // 210
2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u, // 220
2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u, // 230
2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u, // 240
2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u,2500000000u, // 250
};
const int * aiPercentByDeltaLev = NULL;
const int * aiPercentByDeltaLevForBoss = NULL;
const int aiPercentByDeltaLevForBoss_euckr[MAX_EXP_DELTA_OF_LEV] =
{
1, // -15 0
3, // -14 1
5, // -13 2
7, // -12 3
15, // -11 4
30, // -10 5
60, // -9 6
90, // -8 7
91, // -7 8
92, // -6 9
93, // -5 10
94, // -4 11
95, // -3 12
97, // -2 13
99, // -1 14
100, // 0 15
105, // 1 16
110, // 2 17
115, // 3 18
120, // 4 19
125, // 5 20
130, // 6 21
135, // 7 22
140, // 8 23
145, // 9 24
150, // 10 25
155, // 11 26
160, // 12 27
165, // 13 28
170, // 14 29
180 // 15 30
};
const int aiPercentByDeltaLev_euckr[MAX_EXP_DELTA_OF_LEV] =
{
1, // -15 0
5, // -14 1
10, // -13 2
20, // -12 3
30, // -11 4
50, // -10 5
70, // -9 6
80, // -8 7
85, // -7 8
90, // -6 9
92, // -5 10
94, // -4 11
96, // -3 12
98, // -2 13
100, // -1 14
100, // 0 15
105, // 1 16
110, // 2 17
115, // 3 18
120, // 4 19
125, // 5 20
130, // 6 21
135, // 7 22
140, // 8 23
145, // 9 24
150, // 10 25
155, // 11 26
160, // 12 27
165, // 13 28
170, // 14 29
180, // 15 30
};
const DWORD party_exp_distribute_table[PLAYER_EXP_TABLE_MAX + 1] =
{
0,
10, 10, 10, 10, 15, 15, 20, 25, 30, 40, // 1 - 10
50, 60, 80, 100, 120, 140, 160, 184, 210, 240, // 11 - 20
270, 300, 330, 360, 390, 420, 450, 480, 510, 550, // 21 - 30
600, 640, 700, 760, 820, 880, 940, 1000, 1100, 1180, // 31 - 40
1260, 1320, 1380, 1440, 1500, 1560, 1620, 1680, 1740, 1800, // 41 - 50
1860, 1920, 2000, 2100, 2200, 2300, 2450, 2600, 2750, 2900, // 51 - 60
3050, 3200, 3350, 3500, 3650, 3800, 3950, 4100, 4250, 4400, // 61 - 70
4600, 4800, 5000, 5200, 5400, 5600, 5800, 6000, 6200, 6400, // 71 - 80
6600, 6900, 7100, 7300, 7600, 7800, 8000, 8300, 8500, 8800, // 81 - 90
9000, 9000, 9000, 9000, 9000, 9000, 9000, 9000, 9000, 9000, // 91 - 100
10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, // 101 - 110
12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, 12000, // 111 - 120
// 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, // 130
// 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, // 140
// 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, // 150
// 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, // 160
// 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, // 170
// 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, // 180
// 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, // 190
// 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, // 200
// 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, // 210
// 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, // 220
// 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, // 230
// 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, // 240
// 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, 14000, // 250
};
Coord aArroundCoords[ARROUND_COORD_MAX_NUM] =
{
{ 0, 0 },
{ 0, 50 },
{ 35, 35 },
{ 50, -0 },
{ 35, -35 },
{ 0, -50 },
{ -35, -35 },
{ -50, 0 },
{ -35, 35 },
{ 0, 100 },
{ 71, 71 },
{ 100, -0 },
{ 71, -71 },
{ 0, -100 },
{ -71, -71 },
{ -100, 0 },
{ -71, 71 },
{ 0, 150 },
{ 106, 106 },
{ 150, -0 },
{ 106, -106 },
{ 0, -150 },
{ -106, -106 },
{ -150, 0 },
{ -106, 106 },
{ 0, 200 },
{ 141, 141 },
{ 200, -0 },
{ 141, -141 },
{ 0, -200 },
{ -141, -141 },
{ -200, 0 },
{ -141, 141 },
{ 0, 250 },
{ 177, 177 },
{ 250, -0 },
{ 177, -177 },
{ 0, -250 },
{ -177, -177 },
{ -250, 0 },
{ -177, 177 },
{ 0, 300 },
{ 212, 212 },
{ 300, -0 },
{ 212, -212 },
{ 0, -300 },
{ -212, -212 },
{ -300, 0 },
{ -212, 212 },
{ 0, 350 },
{ 247, 247 },
{ 350, -0 },
{ 247, -247 },
{ 0, -350 },
{ -247, -247 },
{ -350, 0 },
{ -247, 247 },
{ 0, 400 },
{ 283, 283 },
{ 400, -0 },
{ 283, -283 },
{ 0, -400 },
{ -283, -283 },
{ -400, 0 },
{ -283, 283 },
{ 0, 450 },
{ 318, 318 },
{ 450, -0 },
{ 318, -318 },
{ 0, -450 },
{ -318, -318 },
{ -450, 0 },
{ -318, 318 },
{ 0, 500 },
{ 354, 354 },
{ 500, -0 },
{ 354, -354 },
{ 0, -500 },
{ -354, -354 },
{ -500, 0 },
{ -354, 354 },
{ 0, 550 },
{ 389, 389 },
{ 550, -0 },
{ 389, -389 },
{ 0, -550 },
{ -389, -389 },
{ -550, 0 },
{ -389, 389 },
{ 0, 600 },
{ 424, 424 },
{ 600, -0 },
{ 424, -424 },
{ 0, -600 },
{ -424, -424 },
{ -600, 0 },
{ -424, 424 },
{ 0, 650 },
{ 460, 460 },
{ 650, -0 },
{ 460, -460 },
{ 0, -650 },
{ -460, -460 },
{ -650, 0 },
{ -460, 460 },
{ 0, 700 },
{ 495, 495 },
{ 700, -0 },
{ 495, -495 },
{ 0, -700 },
{ -495, -495 },
{ -700, 0 },
{ -495, 495 },
{ 0, 750 },
{ 530, 530 },
{ 750, -0 },
{ 530, -530 },
{ 0, -750 },
{ -530, -530 },
{ -750, 0 },
{ -530, 530 },
{ 0, 800 },
{ 566, 566 },
{ 800, -0 },
{ 566, -566 },
{ 0, -800 },
{ -566, -566 },
{ -800, 0 },
{ -566, 566 },
{ 0, 850 },
{ 601, 601 },
{ 850, -0 },
{ 601, -601 },
{ 0, -850 },
{ -601, -601 },
{ -850, 0 },
{ -601, 601 },
{ 0, 900 },
{ 636, 636 },
{ 900, -0 },
{ 636, -636 },
{ 0, -900 },
{ -636, -636 },
{ -900, 0 },
{ -636, 636 },
{ 0, 950 },
{ 672, 672 },
{ 950, -0 },
{ 672, -672 },
{ 0, -950 },
{ -672, -672 },
{ -950, 0 },
{ -672, 672 },
{ 0, 1000 },
{ 707, 707 },
{ 1000, -0 },
{ 707, -707 },
{ 0, -1000 },
{ -707, -707 },
{ -1000, 0 },
{ -707, 707 },
};
const DWORD guild_exp_table[GUILD_MAX_LEVEL+1] =
{
0,
15000UL,
45000UL,
90000UL,
160000UL,
235000UL,
325000UL,
430000UL,
550000UL,
685000UL,
835000UL,
1000000UL,
1500000UL,
2100000UL,
2800000UL,
3600000UL,
4500000UL,
6500000UL,
8000000UL,
10000000UL,
42000000UL
};
const DWORD guild_exp_table2[GUILD_MAX_LEVEL+1] =
{
0,
15000UL,
45000UL,
90000UL,
160000UL,
235000UL,
325000UL,
430000UL,
550000UL,
685000UL,
835000UL,
1000000UL,
1500000UL,
2100000UL,
2800000UL,
3600000UL,
4500000UL,
6500000UL,
8000000UL,
10000000UL,
42000000UL
};
const int aiMobEnchantApplyIdx[MOB_ENCHANTS_MAX_NUM] =
{
APPLY_CURSE_PCT,
APPLY_SLOW_PCT,
APPLY_POISON_PCT,
APPLY_STUN_PCT,
APPLY_CRITICAL_PCT,
APPLY_PENETRATE_PCT,
#if defined(ENABLE_WOLFMAN_CHARACTER) && !defined(USE_MOB_BLEEDING_AS_POISON)
APPLY_BLEEDING_PCT,
#endif
};
const int aiMobResistsApplyIdx[MOB_RESISTS_MAX_NUM] =
{
APPLY_RESIST_SWORD,
APPLY_RESIST_TWOHAND,
APPLY_RESIST_DAGGER,
APPLY_RESIST_BELL,
APPLY_RESIST_FAN,
APPLY_RESIST_BOW,
APPLY_RESIST_FIRE,
APPLY_RESIST_ELEC,
APPLY_RESIST_MAGIC,
APPLY_RESIST_WIND,
APPLY_POISON_REDUCE,
#if defined(ENABLE_WOLFMAN_CHARACTER) && !defined(USE_MOB_CLAW_AS_DAGGER)
APPLY_RESIST_CLAW,
#endif
#if defined(ENABLE_WOLFMAN_CHARACTER) && !defined(USE_MOB_BLEEDING_AS_POISON)
APPLY_BLEEDING_REDUCE,
#endif
};
const int aiSocketPercentByQty[5][4] =
{
{ 0, 0, 0, 0 },
{ 3, 0, 0, 0 },
{ 10, 1, 0, 0 },
{ 15, 10, 1, 0 },
{ 20, 15, 10, 1 }
};
const int aiWeaponSocketQty[WEAPON_NUM_TYPES] =
{
4, // WEAPON_SWORD,
4, // WEAPON_DAGGER,
4, // WEAPON_BOW,
4, // WEAPON_TWO_HANDED,
4, // WEAPON_BELL,
4, // WEAPON_FAN,
0, // WEAPON_ARROW,
0, // WEAPON_MOUNT_SPEAR
#ifdef ENABLE_WOLFMAN_CHARACTER
3, // WEAPON_CLAW
#endif
};
const int aiArmorSocketQty[ARMOR_NUM_TYPES] =
{
4, // ARMOR_BODY,
1, // ARMOR_HEAD,
1, // ARMOR_SHIELD,
0, // ARMOR_WRIST,
0, // ARMOR_FOOTS,
0 // ARMOR_ACCESSORY
};
#ifdef __AURA_SYSTEM__
int s_aiAuraRefineInfo[AURA_GRADE_MAX_NUM][AURA_REFINE_INFO_MAX] = {
// [ Grade | LevelMin | LevelMax | NeedEXP | EvolMaterial | EvolMaterialCount | EvolCost | EvolPCT ]
{1, 1, 49, 1000, 30617, 10, 5000000, 100},
{2, 50, 99, 2000, 31136, 10, 5000000, 100},
{3, 100, 149, 4000, 31137, 10, 5000000, 100},
{4, 150, 199, 8000, 31138, 10, 8000000, 100},
{5, 200, 249, 16000, 31138, 20, 10000000, 100},
{6, 250, 250, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0}
};
int* GetAuraRefineInfo(BYTE bLevel)
{
if (bLevel > 250)
return NULL;
for (int i = 0; i < AURA_GRADE_MAX_NUM; ++i)
{
if (bLevel >= s_aiAuraRefineInfo[i][AURA_REFINE_INFO_LEVEL_MIN] && bLevel <= s_aiAuraRefineInfo[i][AURA_REFINE_INFO_LEVEL_MAX])
return s_aiAuraRefineInfo[i];
}
return NULL;
}
int GetAuraRefineInfo(BYTE bGrade, BYTE bInfo)
{
if (bGrade >= AURA_GRADE_MAX_NUM || bInfo >= AURA_REFINE_INFO_MAX)
return 0;
return s_aiAuraRefineInfo[bGrade - 1][bInfo];
}
#endif
TItemAttrMap g_map_itemAttr;
TItemAttrMap g_map_itemRare;
const TApplyInfo aApplyInfo[MAX_APPLY_NUM] =
/*
{
DWORD dwPointType;
}
*/
{
// Point Type
{ POINT_NONE, }, // APPLY_NONE, 0
{ POINT_MAX_HP, }, // APPLY_MAX_HP, 1
{ POINT_MAX_SP, }, // APPLY_MAX_SP, 2
{ POINT_HT, }, // APPLY_CON, 3
{ POINT_IQ, }, // APPLY_INT, 4
{ POINT_ST, }, // APPLY_STR, 5
{ POINT_DX, }, // APPLY_DEX, 6
{ POINT_ATT_SPEED, }, // APPLY_ATT_SPEED, 7
{ POINT_MOV_SPEED, }, // APPLY_MOV_SPEED, 8
{ POINT_CASTING_SPEED, }, // APPLY_CAST_SPEED, 9
{ POINT_HP_REGEN, }, // APPLY_HP_REGEN, 10
{ POINT_SP_REGEN, }, // APPLY_SP_REGEN, 11
{ POINT_POISON_PCT, }, // APPLY_POISON_PCT, 12
{ POINT_STUN_PCT, }, // APPLY_STUN_PCT, 13
{ POINT_SLOW_PCT, }, // APPLY_SLOW_PCT, 14
{ POINT_CRITICAL_PCT, }, // APPLY_CRITICAL_PCT, 15
{ POINT_PENETRATE_PCT, }, // APPLY_PENETRATE_PCT, 16
{ POINT_ATTBONUS_HUMAN, }, // APPLY_ATTBONUS_HUMAN, 17
{ POINT_ATTBONUS_ANIMAL, }, // APPLY_ATTBONUS_ANIMAL, 18
{ POINT_ATTBONUS_ORC, }, // APPLY_ATTBONUS_ORC, 19
{ POINT_ATTBONUS_MILGYO, }, // APPLY_ATTBONUS_MILGYO, 20
{ POINT_ATTBONUS_UNDEAD, }, // APPLY_ATTBONUS_UNDEAD, 21
{ POINT_ATTBONUS_DEVIL, }, // APPLY_ATTBONUS_DEVIL, 22
{ POINT_STEAL_HP, }, // APPLY_STEAL_HP, 23
{ POINT_STEAL_SP, }, // APPLY_STEAL_SP, 24
{ POINT_MANA_BURN_PCT, }, // APPLY_MANA_BURN_PCT, 25
{ POINT_DAMAGE_SP_RECOVER, }, // APPLY_DAMAGE_SP_RECOVER,26
{ POINT_BLOCK, }, // APPLY_BLOCK, 27
{ POINT_DODGE, }, // APPLY_DODGE, 28
{ POINT_RESIST_SWORD, }, // APPLY_RESIST_SWORD, 29
{ POINT_RESIST_TWOHAND, }, // APPLY_RESIST_TWOHAND, 30
{ POINT_RESIST_DAGGER, }, // APPLY_RESIST_DAGGER, 31
{ POINT_RESIST_BELL, }, // APPLY_RESIST_BELL, 32
{ POINT_RESIST_FAN, }, // APPLY_RESIST_FAN, 33
{ POINT_RESIST_BOW, }, // APPLY_RESIST_BOW, 34
{ POINT_RESIST_FIRE, }, // APPLY_RESIST_FIRE, 35
{ POINT_RESIST_ELEC, }, // APPLY_RESIST_ELEC, 36
{ POINT_RESIST_MAGIC, }, // APPLY_RESIST_MAGIC, 37
{ POINT_RESIST_WIND, }, // APPLY_RESIST_WIND, 38
{ POINT_REFLECT_MELEE, }, // APPLY_REFLECT_MELEE, 39
{ POINT_REFLECT_CURSE, }, // APPLY_REFLECT_CURSE, 40
{ POINT_POISON_REDUCE, }, // APPLY_POISON_REDUCE, 41
{ POINT_KILL_SP_RECOVER, }, // APPLY_KILL_SP_RECOVER, 42
{ POINT_EXP_DOUBLE_BONUS, }, // APPLY_EXP_DOUBLE_BONUS, 43
{ POINT_GOLD_DOUBLE_BONUS, }, // APPLY_GOLD_DOUBLE_BONUS,44
{ POINT_ITEM_DROP_BONUS, }, // APPLY_ITEM_DROP_BONUS, 45
{ POINT_POTION_BONUS, }, // APPLY_POTION_BONUS, 46
{ POINT_KILL_HP_RECOVERY, }, // APPLY_KILL_HP_RECOVER, 47
{ POINT_IMMUNE_STUN, }, // APPLY_IMMUNE_STUN, 48
{ POINT_IMMUNE_SLOW, }, // APPLY_IMMUNE_SLOW, 49
{ POINT_IMMUNE_FALL, }, // APPLY_IMMUNE_FALL, 50
{ POINT_NONE, }, // APPLY_SKILL, 51
{ POINT_BOW_DISTANCE, }, // APPLY_BOW_DISTANCE, 52
{ POINT_ATT_GRADE_BONUS, }, // APPLY_ATT_GRADE, 53
{ POINT_DEF_GRADE_BONUS, }, // APPLY_DEF_GRADE, 54
{ POINT_MAGIC_ATT_GRADE_BONUS, }, // APPLY_MAGIC_ATT_GRADE, 55
{ POINT_MAGIC_DEF_GRADE_BONUS, }, // APPLY_MAGIC_DEF_GRADE, 56
{ POINT_CURSE_PCT, }, // APPLY_CURSE_PCT, 57
{ POINT_MAX_STAMINA }, // APPLY_MAX_STAMINA 58
{ POINT_ATTBONUS_WARRIOR }, // APPLY_ATTBONUS_WARRIOR 59
{ POINT_ATTBONUS_ASSASSIN }, // APPLY_ATTBONUS_ASSASSIN 60
{ POINT_ATTBONUS_SURA }, // APPLY_ATTBONUS_SURA 61
{ POINT_ATTBONUS_SHAMAN }, // APPLY_ATTBONUS_SHAMAN 62
{ POINT_ATTBONUS_MONSTER }, // APPLY_ATTBONUS_MONSTER 63
{ POINT_ATT_BONUS }, // 64 // APPLY_MALL_ATTBONUS
{ POINT_MALL_DEFBONUS }, // 65
{ POINT_MALL_EXPBONUS }, // 66 APPLY_MALL_EXPBONUS
{ POINT_MALL_ITEMBONUS }, // 67
{ POINT_MALL_GOLDBONUS }, // 68
{ POINT_MAX_HP_PCT }, // 69
{ POINT_MAX_SP_PCT }, // 70
{ POINT_SKILL_DAMAGE_BONUS }, // 71
{ POINT_NORMAL_HIT_DAMAGE_BONUS }, // 72
// DEFEND_BONUS_ATTRIBUTES
{ POINT_SKILL_DEFEND_BONUS }, // 73
{ POINT_NORMAL_HIT_DEFEND_BONUS }, // 74
// END_OF_DEFEND_BONUS_ATTRIBUTES
// PC_BANG_ITEM_ADD
{ POINT_PC_BANG_EXP_BONUS }, // 75
{ POINT_PC_BANG_DROP_BONUS }, // 76
// END_PC_BANG_ITEM_ADD
{ POINT_NONE, },
{ POINT_RESIST_WARRIOR, },
{ POINT_RESIST_ASSASSIN, },
{ POINT_RESIST_SURA, },
{ POINT_RESIST_SHAMAN, },
{ POINT_ENERGY },
{ POINT_DEF_GRADE },
{ POINT_COSTUME_ATTR_BONUS },
{ POINT_MAGIC_ATT_BONUS_PER },
{ POINT_MELEE_MAGIC_ATT_BONUS_PER }, // 86 APPLY_MELEE_MAGIC_ATTBONUS_PER
{ POINT_RESIST_ICE, }, // APPLY_RESIST_ICE, 87
{ POINT_RESIST_EARTH, }, // APPLY_RESIST_EARTH, 88
{ POINT_RESIST_DARK, }, // APPLY_RESIST_DARK, 89
{ POINT_RESIST_CRITICAL, }, // APPLY_ANTI_CRITICAL_PCT, 90
{ POINT_RESIST_PENETRATE, }, // APPLY_ANTI_PENETRATE_PCT, 91
#ifdef ENABLE_WOLFMAN_CHARACTER
{ POINT_BLEEDING_REDUCE, }, // APPLY_BLEEDING_REDUCE, 92
{ POINT_BLEEDING_PCT, }, // APPLY_BLEEDING_PCT, 93
{ POINT_ATTBONUS_WOLFMAN, },
{ POINT_RESIST_WOLFMAN, },
{ POINT_RESIST_CLAW, },
#else
{ POINT_NONE, }, // APPLY_BLEEDING_REDUCE, 92
{ POINT_NONE, }, // APPLY_BLEEDING_PCT, 93
{ POINT_NONE, },
{ POINT_NONE, },
{ POINT_NONE, },
#endif
#ifdef ENABLE_ACCE_SYSTEM
{ POINT_ACCEDRAIN_RATE, }, // APPLY_ACCEDRAIN_RATE, 97
#else
{ POINT_NONE, }, // APPLY_ACCEDRAIN_RATE, 97
#endif
#ifdef ENABLE_MAGIC_REDUCTION_SYSTEM
{ POINT_RESIST_MAGIC_REDUCTION, }, // APPLY_RESIST_MAGIC_REDUCTION,98
#else
{ POINT_NONE, }, // APPLY_RESIST_MAGIC_REDUCTION,98
#endif
#ifdef ENABLE_PENDANT_SYSTEM
{ POINT_APPLY_MOUNT, },
{ POINT_ENCHANT_FIRE, },
{ POINT_ENCHANT_ICE, },
{ POINT_ENCHANT_EARTH, },
{ POINT_ENCHANT_DARK, },
{ POINT_ENCHANT_WIND, },
{ POINT_ENCHANT_ELECT, },
{ POINT_RESIST_HUMAN, },
{ POINT_ATTBONUS_SWORD, },
{ POINT_ATTBONUS_TWOHAND, },
{ POINT_ATTBONUS_DAGGER, },
{ POINT_ATTBONUS_BELL, },
{ POINT_ATTBONUS_FAN, },
{ POINT_ATTBONUS_BOW, },
#ifdef ENABLE_WOLFMAN_CHARACTER
{ POINT_ATTBONUS_CLAW, },
#endif
{ POINT_ATTBONUS_CZ, },
{ POINT_ATTBONUS_DESERT, },
{ POINT_ATTBONUS_INSECT, },
#endif
#ifdef ENABLE_EXTRA_APPLY_BONUS
{ POINT_ATTBONUS_STONE, },
{ POINT_ATTBONUS_BOSS, },
{ POINT_ATTBONUS_ELEMENTS, },
{ POINT_ENCHANT_ELEMENTS, },
{ POINT_ATTBONUS_CHARACTERS, },
{ POINT_ENCHANT_CHARACTERS, },
{ POINT_ATTBONUS_RAZADOR, },
{ POINT_ATTBONUS_NEMERE, },
{ POINT_ATTBONUS_LUCIFER, },
{ POINT_ATTBONUS_BLUE_DRAGON, },
{ POINT_ATTBONUS_RED_DRAGON, },
{ POINT_ATTBONUS_AZRAEL, },
#endif
};
const int aiItemMagicAttributePercentHigh[ITEM_ATTRIBUTE_MAX_LEVEL] =
{
//25, 25, 40, 8, 2,
30, 40, 20, 8, 2
};
const int aiItemMagicAttributePercentLow[ITEM_ATTRIBUTE_MAX_LEVEL] =
{
//45, 25, 20, 10, 0,
50, 40, 10, 0, 0
};
// ADD_ITEM_ATTRIBUTE
const int aiItemAttributeAddPercent[ITEM_ATTRIBUTE_MAX_NUM] =
{
100, 80, 60, 50, 30, 0, 0,
};
// END_OF_ADD_ITEM_ATTRIBUTE
const int aiExpLossPercents[PLAYER_EXP_TABLE_MAX + 1] =
{
0,
5, 5, 5, 5, 5, 5, 5, 5, 5, 4, // 1 - 10
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, // 11 - 20
4, 4, 4, 4, 4, 4, 4, 3, 3, 3, // 21 - 30
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 31 - 40
3, 3, 3, 3, 2, 2, 2, 2, 2, 2, // 41 - 50
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 51 - 60
2, 2, 1, 1, 1, 1, 1, 1, 1, 1, // 61 - 70
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 71 - 80
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 81 - 90
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 91 - 100
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 101 - 110
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 111 - 120
// 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 130
// 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 140
// 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 150
// 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 160
// 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 170
// 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 180
// 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 190
// 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 200
// 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 210
// 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 220
// 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 230
// 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 240
// 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 250
};
const int aiSkillBookCountForLevelUp[10] =
{
3, 3, 3, 3, 3, 4, 4, 5, 5, 6
};
// ADD_GRANDMASTER_SKILL
const int aiGrandMasterSkillBookCountForLevelUp[10] =
{
3, 3, 5, 5, 7, 7, 10, 10, 10, 20,
};
const int aiGrandMasterSkillBookMinCount[10] =
{
// 1, 1, 3, 5, 10, 15, 20, 30, 40, 50,
// 3, 3, 5, 5, 10, 10, 15, 15, 20, 30
1, 1, 1, 2, 2, 3, 3, 4, 5, 6
};
const int aiGrandMasterSkillBookMaxCount[10] =
{
// 6, 15, 30, 45, 60, 80, 100, 120, 160, 200,
// 6, 10, 15, 20, 30, 40, 50, 60, 70, 80
5, 7, 9, 11, 13, 15, 20, 25, 30, 35
};
// END_OF_ADD_GRANDMASTER_SKILL
const int CHN_aiPartyBonusExpPercentByMemberCount[9] =
{
0, 0, 12, 18, 26, 40, 53, 70, 100
};
// UPGRADE_PARTY_BONUS
const int KOR_aiPartyBonusExpPercentByMemberCount[9] =
{
0,
0,
30, // 66% * 2 - 100
60, // 53% * 3 - 100
75, // 44% * 4 - 100
90, // 38% * 5 - 100
105, // 34% * 6 - 100
110, // 30% * 7 - 100
140, // 30% * 8 - 100
};
const int KOR_aiUniqueItemPartyBonusExpPercentByMemberCount[9] =
{
0,
0,
15*2,
14*3,
13*4,
12*5,
11*6,
10*7,
10*8,
};
// END_OF_UPGRADE_PARTY_BONUS
const int * aiChainLightningCountBySkillLevel = NULL;
const int aiChainLightningCountBySkillLevel_euckr[SKILL_MAX_LEVEL+1] =
{
0, // 0
2, // 1
2, // 2
2, // 3
2, // 4
2, // 5
2, // 6
2, // 7
2, // 8
3, // 9
3, // 10
3, // 11
3, // 12
3, // 13
3, // 14
3, // 15
3, // 16
3, // 17
3, // 18
4, // 19
4, // 20
4, // 21
4, // 22
4, // 23
5, // 24
5, // 25
5, // 26
5, // 27
5, // 28
5, // 29
5, // 30
5, // 31
5, // 32
5, // 33
5, // 34
5, // 35
5, // 36
5, // 37
5, // 38
5, // 39
5, // 40
};
const SStoneDropInfo aStoneDrop[STONE_INFO_MAX_NUM] =
{
// mob pct {+0 +1 +2 +3 +4}
{8005, 60, {30, 30, 30, 9, 1} },
{8006, 60, {28, 29, 31, 11, 1} },
{8007, 60, {24, 29, 32, 13, 2} },
{8008, 60, {22, 28, 33, 15, 2} },
{8009, 60, {21, 27, 33, 17, 2} },
{8010, 60, {18, 26, 34, 20, 2} },
{8011, 60, {14, 26, 35, 22, 3} },
{8012, 60, {10, 26, 37, 24, 3} },
{8013, 60, {2, 26, 40, 29, 3} },
{8014, 60, {0, 26, 41, 30, 3} },
};
const char * c_apszEmpireNames[EMPIRE_MAX_NUM] =
{
"전제국",
"신수국",
"천조국",
"진노국"
};
const char * c_apszPrivNames[MAX_PRIV_NUM] =
{
"",
"아이템이 나올 확률",
"돈이 나올 확률",
"돈 대박이 나올 확률",
"경험치 배율",
};
const int aiPolymorphPowerByLevel[SKILL_MAX_LEVEL + 1] =
{
10, // 1
11, // 2
11, // 3
12, // 4
13, // 5
13, // 6
14, // 7
15, // 8
16, // 9
17, // 10
18, // 11
19, // 12
20, // 13
22, // 14
23, // 15
24, // 16
26, // 17
27, // 18
29, // 19
31, // 20
33, // 21
35, // 22
37, // 23
39, // 24
41, // 25
44, // 26
46, // 27
49, // 28
52, // 29
55, // 30
59, // 31
62, // 32
66, // 33
70, // 34
74, // 35
79, // 36
84, // 37
89, // 38
94, // 39
100, // 40
};
TGuildWarInfo KOR_aGuildWarInfo[GUILD_WAR_TYPE_MAX_NUM] =
/*
{
long lMapIndex;
int iWarPrice;
int iWinnerPotionRewardPctToWinner;
int iLoserPotionRewardPctToWinner;
int iInitialScore;
int iEndScore;
};
*/
{
{ 0, 0, 0, 0, 0, 0 },
{ 110, 0, 100, 50, 0, 100 },
{ 111, 0, 100, 50, 0, 10 },
};
//
//
const int aiAccessorySocketAddPct[ITEM_ACCESSORY_SOCKET_MAX_NUM] =
{
50, 50, 50
};
const int aiAccessorySocketEffectivePct[ITEM_ACCESSORY_SOCKET_MAX_NUM + 1] =
{
0, 10, 20, 40
};
const int aiAccessorySocketDegradeTime[ITEM_ACCESSORY_SOCKET_MAX_NUM + 1] =
{
0, 3600 * 24, 3600 * 12, 3600 * 6
};
const int aiAccessorySocketPutPct[ITEM_ACCESSORY_SOCKET_MAX_NUM + 1] =
{
100, 100, 100, 0
};
// END_OF_ACCESSORY_REFINE
#include "../../common/length.h"
// from import_item_proto.c
typedef struct SValueName
{
const char * c_pszName;
long lValue;
} TValueName;
TValueName c_aApplyTypeNames[] =
{
{ "STR", APPLY_STR },
{ "DEX", APPLY_DEX },
{ "CON", APPLY_CON },
{ "INT", APPLY_INT },
{ "MAX_HP", APPLY_MAX_HP },
{ "MAX_SP", APPLY_MAX_SP },
{ "MAX_STAMINA", APPLY_MAX_STAMINA },
{ "POISON_REDUCE", APPLY_POISON_REDUCE },
{ "EXP_DOUBLE_BONUS", APPLY_EXP_DOUBLE_BONUS },
{ "GOLD_DOUBLE_BONUS", APPLY_GOLD_DOUBLE_BONUS },
{ "ITEM_DROP_BONUS", APPLY_ITEM_DROP_BONUS },
{ "HP_REGEN", APPLY_HP_REGEN },
{ "SP_REGEN", APPLY_SP_REGEN },
{ "ATTACK_SPEED", APPLY_ATT_SPEED },
{ "MOVE_SPEED", APPLY_MOV_SPEED },
{ "CAST_SPEED", APPLY_CAST_SPEED },
{ "ATT_BONUS", APPLY_ATT_GRADE_BONUS },
{ "DEF_BONUS", APPLY_DEF_GRADE_BONUS },
{ "MAGIC_ATT_GRADE",APPLY_MAGIC_ATT_GRADE },
{ "MAGIC_DEF_GRADE",APPLY_MAGIC_DEF_GRADE },
{ "SKILL", APPLY_SKILL },
{ "ATTBONUS_ANIMAL",APPLY_ATTBONUS_ANIMAL },
{ "ATTBONUS_UNDEAD",APPLY_ATTBONUS_UNDEAD },
{ "ATTBONUS_DEVIL", APPLY_ATTBONUS_DEVIL },
{ "ATTBONUS_HUMAN", APPLY_ATTBONUS_HUMAN },
{ "ADD_BOW_DISTANCE",APPLY_BOW_DISTANCE },
{ "DODGE", APPLY_DODGE },
{ "BLOCK", APPLY_BLOCK },
{ "RESIST_SWORD", APPLY_RESIST_SWORD },
{ "RESIST_TWOHAND", APPLY_RESIST_TWOHAND },
{ "RESIST_DAGGER", APPLY_RESIST_DAGGER },
{ "RESIST_BELL", APPLY_RESIST_BELL },
{ "RESIST_FAN", APPLY_RESIST_FAN },
{ "RESIST_BOW", APPLY_RESIST_BOW },
{ "RESIST_FIRE", APPLY_RESIST_FIRE },
{ "RESIST_ELEC", APPLY_RESIST_ELEC },
{ "RESIST_MAGIC", APPLY_RESIST_MAGIC },
{ "RESIST_WIND", APPLY_RESIST_WIND },
{ "REFLECT_MELEE", APPLY_REFLECT_MELEE },
{ "REFLECT_CURSE", APPLY_REFLECT_CURSE },
{ "RESIST_ICE", APPLY_RESIST_ICE },
{ "RESIST_EARTH", APPLY_RESIST_EARTH },
{ "RESIST_DARK", APPLY_RESIST_DARK },
{ "RESIST_CRITICAL", APPLY_ANTI_CRITICAL_PCT },
{ "RESIST_PENETRATE", APPLY_ANTI_PENETRATE_PCT },
{ "POISON", APPLY_POISON_PCT },
{ "SLOW", APPLY_SLOW_PCT },
{ "STUN", APPLY_STUN_PCT },
{ "STEAL_HP", APPLY_STEAL_HP },
{ "STEAL_SP", APPLY_STEAL_SP },
{ "MANA_BURN_PCT", APPLY_MANA_BURN_PCT },
{ "CRITICAL", APPLY_CRITICAL_PCT },
{ "PENETRATE", APPLY_PENETRATE_PCT },
{ "KILL_SP_RECOVER",APPLY_KILL_SP_RECOVER },
{ "KILL_HP_RECOVER",APPLY_KILL_HP_RECOVER },
{ "PENETRATE_PCT", APPLY_PENETRATE_PCT },
{ "CRITICAL_PCT", APPLY_CRITICAL_PCT },
{ "POISON_PCT", APPLY_POISON_PCT },
{ "STUN_PCT", APPLY_STUN_PCT },
{ "ATT_BONUS_TO_WARRIOR", APPLY_ATTBONUS_WARRIOR },
{ "ATT_BONUS_TO_ASSASSIN", APPLY_ATTBONUS_ASSASSIN },
{ "ATT_BONUS_TO_SURA", APPLY_ATTBONUS_SURA },
{ "ATT_BONUS_TO_SHAMAN", APPLY_ATTBONUS_SHAMAN },
{ "ATT_BONUS_TO_MONSTER", APPLY_ATTBONUS_MONSTER },
{ "ATT_BONUS_TO_MOB", APPLY_ATTBONUS_MONSTER },
{ "MALL_ATTBONUS", APPLY_MALL_ATTBONUS },
{ "MALL_EXPBONUS", APPLY_MALL_EXPBONUS },
{ "MALL_DEFBONUS", APPLY_MALL_DEFBONUS },
{ "MALL_ITEMBONUS", APPLY_MALL_ITEMBONUS },
{ "MALL_GOLDBONUS", APPLY_MALL_GOLDBONUS },
{ "MAX_HP_PCT", APPLY_MAX_HP_PCT },
{ "MAX_SP_PCT", APPLY_MAX_SP_PCT },
{ "SKILL_DAMAGE_BONUS", APPLY_SKILL_DAMAGE_BONUS },
{ "NORMAL_HIT_DAMAGE_BONUS",APPLY_NORMAL_HIT_DAMAGE_BONUS },
{ "SKILL_DEFEND_BONUS", APPLY_SKILL_DEFEND_BONUS },
{ "NORMAL_HIT_DEFEND_BONUS",APPLY_NORMAL_HIT_DEFEND_BONUS },
{ "PCBANG_EXP_BONUS", APPLY_PC_BANG_EXP_BONUS },
{ "PCBANG_DROP_BONUS", APPLY_PC_BANG_DROP_BONUS },
{ "RESIST_WARRIOR", APPLY_RESIST_WARRIOR},
{ "RESIST_ASSASSIN", APPLY_RESIST_ASSASSIN},
{ "RESIST_SURA", APPLY_RESIST_SURA},
{ "RESIST_SHAMAN", APPLY_RESIST_SHAMAN},
{ "INFINITE_AFFECT_DURATION", 0x1FFFFFFF },
{ "ENERGY", APPLY_ENERGY },
{ "COSTUME_ATTR_BONUS", APPLY_COSTUME_ATTR_BONUS },
{ "MAGIC_ATTBONUS_PER", APPLY_MAGIC_ATTBONUS_PER },
{ "MELEE_MAGIC_ATTBONUS_PER", APPLY_MELEE_MAGIC_ATTBONUS_PER },
#ifdef ENABLE_WOLFMAN_CHARACTER
{ "BLEEDING_REDUCE",APPLY_BLEEDING_REDUCE },
{ "BLEEDING_PCT",APPLY_BLEEDING_PCT },
{ "ATT_BONUS_TO_WOLFMAN",APPLY_ATTBONUS_WOLFMAN },
{ "RESIST_WOLFMAN",APPLY_RESIST_WOLFMAN },
{ "RESIST_CLAW",APPLY_RESIST_CLAW },
#endif
#ifdef ENABLE_ACCE_SYSTEM
{ "ACCEDRAIN_RATE",APPLY_ACCEDRAIN_RATE },
#endif
#ifdef ENABLE_MAGIC_REDUCTION_SYSTEM
{ "RESIST_MAGIC_REDUCTION",APPLY_RESIST_MAGIC_REDUCTION },
#endif
#ifdef ENABLE_PENDANT_SYSTEM
{ "APPLY_MOUNT,",APPLY_MOUNT, },
{ "ENCHANT_FIRE",APPLY_ENCHANT_FIRE },
{ "ENCHANT_ICE",APPLY_ENCHANT_ICE },
{ "ENCHANT_EARTH",APPLY_ENCHANT_EARTH },
{ "ENCHANT_DARK",APPLY_ENCHANT_DARK },
{ "ENCHANT_WIND",APPLY_ENCHANT_WIND },
{ "ENCHANT_ELECT",APPLY_ENCHANT_ELECT },
{ "RESIST_HUMAN",APPLY_RESIST_HUMAN },
{ "ATTBONUS_SWORD",APPLY_ATTBONUS_SWORD },
{ "ATTBONUS_TWOHAND",APPLY_ATTBONUS_TWOHAND },
{ "ATTBONUS_DAGGER",APPLY_ATTBONUS_DAGGER },
{ "ATTBONUS_BELL",APPLY_ATTBONUS_BELL },
{ "ATTBONUS_FAN",APPLY_ATTBONUS_FAN },
{ "ATTBONUS_BOW",APPLY_ATTBONUS_BOW },
#ifdef ENABLE_WOLFMAN_CHARACTER
{ "ATTBONUS_CLAW",APPLY_ATTBONUS_CLAW },
#endif
{ "ATTBONUS_CZ",APPLY_ATTBONUS_CZ },
{ "ATTBONUS_DESERT",APPLY_ATTBONUS_DESERT },
{ "ATTBONUS_INSECT",APPLY_ATTBONUS_INSECT },
#endif
#ifdef ENABLE_EXTRA_APPLY_BONUS
{ "ATTBONUS_BOSS", APPLY_ATTBONUS_BOSS },
{ "ATTBONUS_STONE", APPLY_ATTBONUS_STONE },
{ "ATTBONUS_ELEMENTS", APPLY_ATTBONUS_ELEMENTS },
{ "ENCHANT_ELEMENTS", APPLY_ENCHANT_ELEMENTS },
{ "ATTBONUS_CHARACTERS", APPLY_ATTBONUS_CHARACTERS },
{ "ENCHANT_CHARACTERS", APPLY_ENCHANT_CHARACTERS },
{ "ATTBONUS_RAZADOR", APPLY_ATTBONUS_RAZADOR },
{ "ATTBONUS_NEMERE", APPLY_ATTBONUS_NEMERE },
{ "ATTBONUS_LUCIFER", APPLY_ATTBONUS_LUCIFER },
{ "ATTBONUS_BLUE_DRAGON", APPLY_ATTBONUS_BLUE_DRAGON },
{ "ATTBONUS_RED_DRAGON", APPLY_ATTBONUS_RED_DRAGON },
{ "ATTBONUS_AZRAEL", APPLY_ATTBONUS_AZRAEL },
#endif
{ NULL, 0 }
};
// from import_item_proto.c
long FN_get_apply_type(const char *apply_type_string)
{
TValueName *value_name;
for (value_name = c_aApplyTypeNames; value_name->c_pszName; ++value_name)
{
if (0==strcasecmp(value_name->c_pszName, apply_type_string))
return value_name->lValue;
}
return 0;
}
direkt seviye verirse statü kullanamıyorlar mı anlamadımSeviye versin expye gerek yok statülerini de tekrar verebilirler dersen level vermeye göre de uyarlanabilir.
şuan bu 1 seviye 1 seviye mi atlatıyor? eğer öyleyse 10 nasıl yapıcamBir tane yaptım, bu işini görür. Hazır piyasada paylaşılmamışken bizim foruma özel olsun girip girip alsınlar =)
Şuanki durum için büyülü metale göre ayarlı dilersen değişebilirsin npc olarak da 9003'e bağlı bunu da değişebilirsin.
lua:quest level_up_quest begin state start begin when 9003.chat."Seviye Atlamak İstiyorum" begin if pc.count_item(25041) >= 50 then local current_level = pc.get_level() local current_exp = pc.get_exp() local exp_to_next_level = pc.get_next_exp() -- eşyayı sil pc.remove_item(25041, 50) -- exp hesap local required_exp_for_next_level = exp_to_next_level - current_exp local next_level_exp = pc.get_next_exp(current_level + 1) local exp_to_give = required_exp_for_next_level + (next_level_exp / 2) -- gerekli exp ver pc.give_exp2(exp_to_give) say("Tebrikler! 1 seviye atladınız.") else say("Maalesef, gerekli eşyadan 50 adet yok.") say("Lütfen yeterli miktarda eşya toplayın.") end end end end
90-250 olduğu için 1 level 1 level çok uzun sürecektirExp yerine direk seviye verdirmek statülerini sıfırlar benim gönderdiğim exp taraflı fakat 10 seviye değil 1 seviye verir. Böylesi daha kullanışlı olur diye düşünüyorum
Ek olarak sanırım seviye sınırı eklememişiz onun için de queste şöyle bir ek yapabilirsin
Bul
Lua:if pc.count_item(25041) >= 50 then
Güncelle
Lua:if pc.count_item(25041) >= 50 and pc.get_level() < 250 then
@ZEUS06 'ın verdiği questi biraz düzenledim dener misin?90-250 olduğu için 1 level 1 level çok uzun sürecektir
quest level_up_quest begin
state start begin
when 20094.chat."Seviye Atlamak İstiyorum" begin
if not pc.get_level() < 90 or pc.get_level() == 250 then
if pc.count_item(31132) >= 50 then
-- eşyayı sil
pc.remove_item(31132, 50)
-- gerekli exp ver
tecrubeYukle = pc.get_next_exp()
pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle)
pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle)
say("Tebrikler! 10 seviye atladınız.")
else
say("Maalesef, gerekli eşyadan 50 adet yok.")
say("Lütfen yeterli miktarda eşya toplayın.")
end
else
say("Maalesef, seviyen uygun değil.")
end
end
end
end
seviye atlamak istiyorum basınca hiç bir şey gelmeden kapanıyor@ZEUS06 'ın verdiği questi biraz düzenledim dener misin?
level_up_quest.lua:quest level_up_quest begin state start begin when 20094.chat."Seviye Atlamak İstiyorum" begin if not pc.get_level() < 90 or pc.get_level() == 250 then if pc.count_item(31132) >= 50 then -- eşyayı sil pc.remove_item(31132, 50) -- gerekli exp ver tecrubeYukle = pc.get_next_exp() pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) say("Tebrikler! 10 seviye atladınız.") else say("Maalesef, gerekli eşyadan 50 adet yok.") say("Lütfen yeterli miktarda eşya toplayın.") end else say("Maalesef, seviyen uygun değil.") end end end end
if pc.count_item(31132) >= 50 and pc.get_level() >= 90 and pc.get_level() < 250 then
seviye atlamak istiyorum basınca hiç bir şey gelmeden kapanıyor
en alt nasıl olacak yapar mısınif not sebebi ile olabilir, şöyle düzenleyelim;
if not kısmını sil, aşağıdaki if'i bununla değiş / en alttaki elseyi de say ve end'i ile birlikte silmeyi unutma. İlk elsedeki yazıyı güncellersin.
lua:if pc.count_item(31132) >= 50 and pc.get_level() >= 90 and pc.get_level() < 250 then
quest level_up_quest begin
state start begin
when 20094.chat."Seviye Atlamak İstiyorum" begin
if pc.count_item(31132) >= 50 and pc.get_level() >= 90 and pc.get_level() < 250 then
-- eşyayı sil
pc.remove_item(31132, 50)
-- gerekli exp ver
tecrubeYukle = pc.get_next_exp()
pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle)
pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle)
say("Tebrikler! 10 seviye atladınız.")
else
say("Maalesef, gerekli eşyadan 50 adet yok.")
say("Lütfen yeterli miktarda eşya toplayın.")
end
else
say("Maalesef, seviyen uygun değil.")
end
end
end
end
else
say("Maalesef, seviyen uygun değil.")
end
else
say("Maalesef, gerekli eşyadan 50 adet yok.")
say("Lütfen yeterli miktarda eşya toplayın.")
end
en alt nasıl olacak yapar mısın
level.lua:quest level_up_quest begin state start begin when 20094.chat."Seviye Atlamak İstiyorum" begin if pc.count_item(31132) >= 50 and pc.get_level() >= 90 and pc.get_level() < 250 then -- eşyayı sil pc.remove_item(31132, 50) -- gerekli exp ver tecrubeYukle = pc.get_next_exp() pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) pc.give_exp2(tecrubeYukle) say("Tebrikler! 10 seviye atladınız.") else say("Maalesef, gerekli eşyadan 50 adet yok.") say("Lütfen yeterli miktarda eşya toplayın.") end else say("Maalesef, seviyen uygun değil.") end end end end
bunu deneseviye atlamak istiyorum basınca hiç bir şey gelmeden kapanıyor
quest level_up_quest begin
state start begin
when 20094.chat."Seviye Atlamak İstiyorum" begin
if pc.get_level() < 90 or pc.get_level() == 250 then
say("Maalesef, seviyen uygun değil.")
else
if pc.count_item(31132) >= 50 then
-- eşyayı sil
pc.remove_item(31132, 50)
for i = 1, 10 do
local tecrubeYukle = pc.get_next_exp()
pc.give_exp2(tecrubeYukle)
end
say("Tebrikler! 10 seviye atladınız.")
else
say("Maalesef, gerekli eşyadan 50 adet yok.")
say("Lütfen yeterli miktarda eşya toplayın.")
end
end
end
end
end
tebrikler 10 seviye atladınız diyor leveli vermiyor eşyayıda kullanıyorbunu dene
level_up_quest.lua:quest level_up_quest begin state start begin when 20094.chat."Seviye Atlamak İstiyorum" begin if pc.get_level() < 90 or pc.get_level() == 250 then say("Maalesef, seviyen uygun değil.") else if pc.count_item(31132) >= 50 then -- eşyayı sil pc.remove_item(31132, 50) for i = 1, 10 do local tecrubeYukle = pc.get_next_exp() pc.give_exp2(tecrubeYukle) end say("Tebrikler! 10 seviye atladınız.") else say("Maalesef, gerekli eşyadan 50 adet yok.") say("Lütfen yeterli miktarda eşya toplayın.") end end end end end
90 seviyeden deneyince 100 e kadar mı geliyor?tebrikler 10 seviye atladınız diyor leveli vermiyor eşyayıda kullanıyor
evet90 seviyeden deneyince 100 e kadar mı geliyor?
buyur bu işini görecektir
quest level_up_quest begin
state start begin
when 20094.chat."Seviye Atlamak İstiyorum" begin
if pc.get_level() < 90 or pc.get_level() == 250 then
say("Maalesef, seviyen uygun değil.")
return
end
local itemkodu = 31132
say("10 seviye atlamak için gerekenler şu şekilde:")
say_item("x50 " ..item_name(itemkodu).. " ", itemkodu,"")
say("Seviye atlamak istiyor musun?")
say("")
local sec = select ( "Evet" , "Hayır " )
if sec == 1 then
if pc.count_item(itemkodu) >= 50 then
-- eşyayı sil
pc.remove_item(itemkodu, 50)
if pc.get_level() >= 90 and pc.get_level() < 100 then
for i = 1, 10 do
local tecrubeYukle = pc.get_next_exp()
pc.give_exp2(tecrubeYukle)
end
elseif pc.get_level() >= 100 and pc.get_level() < 110 then
pc.give_exp2(-9999999999)
pc.give_exp2(2150000000/2) pc.give_exp2(2150000000/2) pc.give_exp2(2250000000/2) pc.give_exp2(2250000000/2) --100 101
pc.give_exp2(2280000000/2) pc.give_exp2(2280000000/2) pc.give_exp2(2310000000/2) pc.give_exp2(2310000000/2) --102 103
pc.give_exp2(2330000000/2) pc.give_exp2(2330000000/2) pc.give_exp2(2350000000/2) pc.give_exp2(2350000000/2) --104 105
pc.give_exp2(2370000000/2) pc.give_exp2(2370000000/2) pc.give_exp2(2390000000/2) pc.give_exp2(2390000000/2) --106 107
pc.give_exp2(2400000000/2) pc.give_exp2(2400000000/2) pc.give_exp2(2410000000/2) pc.give_exp2(2410000000/2) --108 109
elseif pc.get_level() >= 110 and pc.get_level() < 120 then
pc.give_exp2(-9999999999)
pc.give_exp2(2410000000/2) pc.give_exp2(2410000000/2) pc.give_exp2(2420000000/2) pc.give_exp2(2420000000/2) --110 111
pc.give_exp2(2430000000/2) pc.give_exp2(2430000000/2) pc.give_exp2(2440000000/2) pc.give_exp2(2440000000/2) --112 113
pc.give_exp2(2450000000/2) pc.give_exp2(2450000000/2) pc.give_exp2(2460000000/2) pc.give_exp2(2460000000/2) --114 115
pc.give_exp2(2470000000/3) pc.give_exp2(2470000000/3) pc.give_exp2(2470000000/3) pc.give_exp2(2480000000/3) pc.give_exp2(2480000000/3) pc.give_exp2(2480000000/3) --116 117
pc.give_exp2(2490000000/3) pc.give_exp2(2490000000/3) pc.give_exp2(2490000000/3) pc.give_exp2(2490000000/3) pc.give_exp2(2490000000/3) pc.give_exp2(2490000000/3) --118 119
elseif pc.get_level() >= 120 then
pc.give_exp2(-9999999999)
for i = 1, 10 do
pc.give_exp2(2500000000 / 2) pc.give_exp2(2500000000 / 2)
end
end
say("Tebrikler! 10 seviye atladınız.")
else
say_item_vnum(itemkodu)
say("Maalesef, gerekli eşyadan 50 adet yok.")
say("Lütfen yeterli miktarda eşya toplayın.")
end
end
end
end
end