Код
[FUNCTION exp_gain]
tag.exp=<eval <tag.exp>+<args>>
sysmessage You have gained <args> EXP points
[FUNCTION point_gain]
tag.points=<eval <tag.points>+<args>>
sysmessage You have gained <args> credit points
[FUNCTION exp_lost]
tag.exp=<eval <tag.exp>-<args>>
[FUNCTION point_lost]
tag.points=<eval <tag.points>-<args>>
[FUNCTION status]
sysmessage **** <name>, <title>, LEVEL : <eval <tag.level>> ****
sysmessage Your EXP points : <eval <tag.exp>>
sysmessage Your credit points : <eval <tag.points>>
[FUNCTION level_up]
var.left = <
var.right = >
IF (<src.isgm> == 1)
src.dialog d_level_up
RETURN !
ENDIF
IF (<eval <tag.level>> == 0) && (<tag.exp> >=200)
src.dialog d_level_up
RETURN 1
ELSEIF (<eval <tag.level>> == 1) && (<tag.exp> >=800)
src.dialog d_level_up
RETURN 1
ELSEIF (<eval <tag.level>> == 2) && (<tag.exp> >=2000)
src.dialog d_level_up
RETURN 1
ELSEIF (<eval <tag.level>> == 3) && (<tag.exp> >=4000)
src.dialog d_level_up
RETURN 1
ELSEIF (<eval <tag.level>> == 4) && (<tag.exp> >=9000)
src.dialog d_level_up
RETURN 1
ELSEIF (<eval <tag.level>> == 5) && (<tag.exp> >=15000)
src.dialog d_level_up
RETURN 1
ELSEIF (<eval <tag.level>> == 6) && (<tag.exp> >=23000)
src.dialog d_level_up
RETURN 1
ELSE
sysmessage You can't upgrade your level
RETURN 1
ENDIF
[DIALOG d_level_up]
0 0
nomove
resizepic 0 0 2600 648 251
//50 55(56) 57 210(211)
gumppic 170 30 50
gumppic 314 30 50
gumppic 170 80 50
gumppic 314 80 50
text 230 50 1580 0
text 85 105 1580 1
text 145 130 1580 2
text 145 150 1580 3
text 145 170 1580 4
HTMLgump 175 131 40 40 5 0 0
HTMLgump 175 151 40 40 6 0 0
HTMLgump 175 171 40 40 7 0 0
HTMLgump 225 131 370 60 8 1 0
group 1
radio 80 131 210 211 0 1
radio 80 151 210 211 0 2
radio 80 171 210 211 0 3
group 2
radio 100 131 210 211 0 4
radio 100 151 210 211 0 5
radio 100 171 210 211 0 6
group 3
radio 120 131 210 211 0 7
radio 120 151 210 211 0 8
radio 120 171 210 211 0 9
BUTTON 121 191 247 249 1 0 1
[DIALOG d_level_up TEXT]
EXP level up stat menu :
Upgrade your stats:
Str
Dex
Int
<var.left>b<var.right> <str> <var.left>/b<var.right>
<var.left>b<var.right> <dex> <var.left>/b<var.right>
<var.left>b<var.right> <int> <var.left>/b<var.right>
This is a menu of upgrading your stats <var.left>p<var.right> To upgrade stats select <var.left>i<var.right>3<var.left>/i<var.right> checkboxes <var.left>p<var.right> Then press <var.left>b<var.right>Okey<var.left>/b<var.right>
[DIALOG d_level_up BUTTON]
ONBUTTON=1
IF (<eval <ARGCHK[1]>+<ARGCHK[2]>+<ARGCHK[3]>+<ARGCHK[4]>+<ARGCHK[5]>+<ARGCHK[6]>+<ARGCHK[7]>+<ARGCHK[8]>+<ARGCHK[9]>> != 3)
src.message You must select 3 stats
RETURN 1
ENDIF
IF (<eval <src.int>+<eval (<ARGCHK[3]>*9)+(<ARGCHK[6]>*9)+(<ARGCHK[9]>*9)>> > 170 )
src.message You have too much INT
RETURN 1
ELSEIF (<eval <src.str>+<eval (<ARGCHK[1]>*9)+(<ARGCHK[4]>*9)+(<ARGCHK[7]>*9)>> > 170 )
src.message You have too much STR
RETURN 1
ELSEIF (<eval <src.dex>+<eval (<ARGCHK[2]>*9)+(<ARGCHK[5]>*9)+(<ARGCHK[8]>*9)>> > 170 )
src.message You have too much DEX
RETURN 1
ENDIF
src.str=(<src.str>+<eval (<ARGCHK[1]>*9)+(<ARGCHK[4]>*9)+(<ARGCHK[7]>*9)>)
src.dex=(<src.dex>+<eval (<ARGCHK[2]>*9)+(<ARGCHK[5]>*9)+(<ARGCHK[8]>*9)>)
src.int=(<src.int>+<eval (<ARGCHK[3]>*9)+(<ARGCHK[6]>*9)+(<ARGCHK[9]>*9)>)
IF (<eval <tag.level>> == 0)
src.tag.exp=<src.tag.exp>-200
ELSEIF (<eval <tag.level>> == 1) && (<tag.exp> >=800)
src.tag.exp=<src.tag.exp>-800
ELSEIF (<eval <tag.level>> == 2) && (<tag.exp> >=2000)
src.tag.exp=<src.tag.exp>-2000
ELSEIF (<eval <tag.level>> == 3) && (<tag.exp> >=4000)
src.tag.exp=<src.tag.exp>-4000
ELSEIF (<eval <tag.level>> == 4) && (<tag.exp> >=9000)
src.tag.exp=<src.tag.exp>-9000
ELSEIF (<eval <tag.level>> == 5) && (<tag.exp> >=15000)
src.tag.exp=<src.tag.exp>-15000
ELSEIF (<eval <tag.level>> == 6) && (<tag.exp> >=23000)
src.tag.exp=<src.tag.exp>-23000
ENDIF
src.tag.level=<src.tag.level>+1
[EVENTS e_exp]
On=@death
IF (<act.npc> == 0)
act.tag.exp=<eval <act.tag.exp>+(<tag.level>*20)>
IF (<eval <tag.exp>-(<tag.level>*10)> > 0)
tag.exp=<eval <tag.exp>-(<tag.level>*10)>
ELSE
tag.exp=0
ENDIF
ENDIF
[ITEMDEF i_exp_change]
DEFNAME=i_exp_change
ID=i_crystal_purple
TYPE=t_changer_exp
NAME=EXP chnger
[TYPEDEF t_changer_exp]
DEFNAME=t_changer_exp
ON=@dclick
IF (<src.tag.level> =< 4)
IF (<src.tag.exp> >= 100)
src.tag.exp=<src.tag.exp>-100
src.newitem=i_exp_eat
src.act.bounce
src.message You have gain exp eat-point
RETURN 1
ELSE
src.message You haven't enough exp!
RETURN 1
ENDIF
ELSE
src.message Your level is too high to do this!
RETURN 1
ENDIF
[ITEMDEF i_exp_eat]
DEFNAME=i_exp_eat
ID=i_spellbook
TYPE=t_exp_eaten
NAME=EXP update
[TYPEDEF t_exp_eaten]
DEFNAME=t_exp_eaten
ON=@dclick
IF (<src.tag.level> =< 4)
src.tag.exp=<src.tag.exp>+100
src.message Getting EXP
remove
ELSE
src.message Your level is too high to do this!
RETURN 1
ENDIF
так, 7 уровнеи, на каждый улучшаются статы (мож ошибся че, сами смотрите).
Больше 170 никакои стат не идет.
Игроки 4 уровня или ниже могут експу переделывать в свободное пользование (для 4ого уровня или ниже).
Зп убийство чара дается уровень*20, а у убитого отнимается уровень*10.
+всякий функции и типы.
Кому надо - разберетесь.
Для полнои работы надо отрубить в сферетаблес прокачку статов и на монстров разбросать exp_gain на @death
NFix: Могут возникнуть проблемы в R-сферах, там подглючивают HTMLgump.