Помощь - Поиск - Пользователи - Календарь
Полная версия: Osi Стиль
UoKit.com Форумы > Ultima Online : Dev > Sphere Server > Архив готовых скриптов
KonstantiN
Код

//------- Эвент ----------------------------------------
[EVENTS e_weapon]
IF (<TAG0.LIFELEECH>)
SRC.ADDCLILOC 1060422,<EVAL <TAG0.LIFELEECH>>
endif
IF (<TAG0.MANALEECH>)
SRC.ADDCLILOC 1060427,<EVAL <TAG0.MANALEECH>>
endif
IF (<TAG0.STAMLEECH>)
SRC.ADDCLILOC 1060430,<EVAL <TAG0.STAMLEECH>>
endif
//---------------------------------------------------------
[events e_leechs]
ON=@DamageCalc
IF (<TAG0.STAMLEECH>)
cont.sysmessage @02b3,3 Stamina Leech: <FVAL (<VAR.ARGN1>*<TAG0.STAMLEECH>)/10>
cont.STAM += <EVAL (<VAR.ARGN1>*<TAG0.STAMLEECH>)/100>
IF (<cont.STAM> > <cont.MAXSTAM>)
cont.STAM=<cont.MAXSTAM>
endif
endif

IF (<TAG0.LIFELEECH>)
cont.sysmessage @02b3,3 Life Leech: <FVAL (<VAR.ARGN1>*<TAG0.LIFELEECH>)/10>
cont.HITS += <EVAL (<VAR.ARGN1>*<TAG0.LIFELEECH>)/100>
IF (<cont.HITS> > <cont.MAXHITS>)
cont.STAM=<cont.MAXHITS>
endif
endif

IF (<TAG0.MANALEECH>)
cont.sysmessage @02b3,3 Mana Leech: <FVAL (<VAR.ARGN1>*<TAG0.MANALEECH>)/10>
cont.MANA += <EVAL (<VAR.ARGN1>*<TAG0.MANALEECH>)/100>
IF (<cont.MANA> > <cont.MAXMANA>)
cont.MANA=<cont.MAXMANA>
endif
endif

[FUNCTION min]
RETURN <QVAL <ARGN1> < <ARGN2>? <ARGN1> : <ARGN2>>

[FUNCTION max]
RETURN <QVAL <ARGN2> < <ARGN1>? <ARGN1> : <ARGN2>>

[FUNCTION percent]
RETURN <EVAL (<ARGN1>*<ARGN2>)/100>

[FUNCTION IsWeapon]
IF ((<LAYER>==1) || (<LAYER>==2)) && (<DAM>)
    RETURN 1
ENDIF
RETURN 0



Код

//-----------------OSI урон-------------------------------------------
[DEFNAME aos_damtypes]
physical    0efff0000
fire        0efff0001
cold        0efff0002
poison    0efff0003
energy    0efff0004

[FUNCTION AOSDamage]
LOCAL.DAM=<STRARG <ARGS>>
ARGS=<STREAT <ARGS>>
LOCAL.PHYSICAL=<STRARG <ARGS>>
IF (<LOCAL.PHYSICAL>&0efff0000)
    DOSWITCH (<LOCAL.PHYSICAL>&~0efff0000)
    TAG.TEMP_PHYSICALDAM=100
    TAG.TEMP_FIREDAM=100
    TAG.TEMP_COLDDAM=100
    TAG.TEMP_POISONDAM=100
    TAG.TEMP_ENERGYDAM=100
    ENDDO
    ARGS=<STREAT <ARGS>>
    LOCAL.SOURCE=<STRARG <ARGS>>
    DAMAGE <LOCAL.DAM> 0 <LOCAL.SOURCE>
ELSE
    TAG.TEMP_PHYSICALDAM=<LOCAL.PHYSICAL>
    ARGS=<STREAT <ARGS>>
    TAG.TEMP_FIREDAM=<STRARG <ARGS>>
    ARGS=<STREAT <ARGS>>
    TAG.TEMP_COLDDAM=<STRARG <ARGS>>
    ARGS=<STREAT <ARGS>>
    TAG.TEMP_POISONDAM=<STRARG <ARGS>>
    ARGS=<STREAT <ARGS>>
    TAG.TEMP_ENERGYDAM=<STRARG <ARGS>>
    ARGS=<STREAT <ARGS>>
    LOCAL.SOURCE=<STRARG <ARGS>>
    DAMAGE <LOCAL.DAM> 0 <LOCAL.SOURCE>
ENDIF

/////////////////////////////////////////////////////////////////////////
//Combat System functions

[FUNCTION f_cs_attackspeed]
OBJ=<ARGN1>
IF (<ACTION>!=skill_wrestling) && (<OBJ.SPEED>)
    LOCAL.SPEED=<EVAL (((80000/((<STAM>+100)*<OBJ.SPEED>))/4)*10)-5>
ELSE
    LOCAL.SPEED=<EVAL (((80000/((<STAM>+100)*50))/4)*10)-5>
ENDIF
LOCAL.SwingSpeedIncrease=<OBJ.TAG0.SwingSpeedIncrease>+<TAG0.SwingSpeedIncrease>
IF (<LOCAL.SwingSpeedIncrease>)
    LOCAL.SPEED -= <Percent <LOCAL.SwingSpeedIncrease>, <LOCAL.SPEED>>
ENDIF
//attack speed is capped at 1.0 sec
RETURN <Max <LOCAL.SPEED>,1.0>

[FUNCTION f_cs_chancetohit]
LOCAL.ATKSKILL=<I.<SERV.SKILL.<ACTION>.KEY>>
IF (<SRC.ACTION>==skill_swordsmanship) || (<SRC.ACTION>==skill_macefighting) || (<SRC.ACTION>==skill_fencing)
    LOCAL.DEFSKILL=<SRC.<SERV.SKILL.<SRC.ACTION>.KEY>>
ELSE
    LOCAL.DEFSKILL=<SRC.WRESTLING>
ENDIF
OBJ=<ARGN1>
//both hit and def increase are capped at 45%
LOCAL.HitChanceIncrease=<OBJ.TAG0.HitChanceIncrease>+<TAG0.HitChanceIncrease>
LOCAL.ATK=<EVAL (<LOCAL.ATKSKILL>+200)*(100+<Min <LOCAL.HitChanceIncrease>,45>)>
LOCAL.DefenseChanceIncrease=<SRC.FINDLAYER.1.TAG0.DefenseChanceIncrease>+<SRC.FINDLAYER.2.TAG0.DefenseChanceIncrease>+<SRC.TAG0.DefenseChanceIncrease>
LOCAL.DEF=<EVAL (<LOCAL.DEFSKILL>+200)*((100+<Min <LOCAL.DefenseChanceIncrease>,45>)*2)>
LOCAL.CHANCE=<Max <EVAL (<LOCAL.ATK>*1000)/<LOCAL.DEF>>,2.0>
SKILLGAIN <SERV.SKILL.<ACTION>.KEY> 1
IF (RAND(1000)<<LOCAL.CHANCE>)
    RETURN 0
ELSE
    RETURN -10
ENDIF

[FUNCTION f_cs_chancetoblock]
IF (<FINDLAYER.2.TYPE>==t_shield)
    LOCAL.CHANCE=<Max <EVAL (<PARRYING>-<BUSHIDO>)/4>,0>
ELSE
    IF (<FINDLAYER.1.ISWEAPON>)
        LOCAL.NEW=(<PARRYING>*<BUSHIDO>)/48000
    ELSEIF (<FINDLAYER.2.ISWEAPON>)
        LOCAL.NEW=(<PARRYING>*<BUSHIDO>)/41140
    ENDIF
    IF (<PARRYING>>=100.0) || (<BUSHIDO>>=100.0)
        LOCAL.NEW += 5.0
    ENDIF
    LOCAL.LEGACY=<EVAL <PARRYING>/80>
    IF (<PARRYING>>=100.0)
        LOCAL.LEGACY += 5.0
    ENDIF
    LOCAL.CHANCE=<Max <LOCAL.NEW>, <LOCAL.LEGACY>>
ENDIF
IF (<DEX><80)
    LOCAL.DEXMOD=80-<DEX>
    LOCAL.CHANCE -= (<LOCAL.CHANCE>*<LOCAL.DEXMOD>)/100
ENDIF
SKILLGAIN parrying 1
RETURN <LOCAL.CHANCE>

[FUNCTION f_cs_calculatedamage]
OBJ=<ARGN1>
LOCAL.TACTICS=<EVAL <TACTICS>/16>
IF (<TACTICS>>=100.0)
    LOCAL.TACTICS += 6
ENDIF
LOCAL.ANATOMY=<EVAL (<ANATOMY>/2.0)+5>
IF (<OBJ.TYPE>==t_weapon_axe)
    LOCAL.LUMBERJACKING=<EVAL <LUMBERJACKING>/5.0>
    IF (<LUMBERJACKING>>=100.0)
        LOCAL.LUMBERJACKING += 10
    ENDIF
ENDIF
LOCAL.STR=<EVAL (<STR>*3)/10>
IF (<STR>>=100)
    LOCAL.STR += 5
ENDIF
//tag.damageincrease is capped at 100%
LOCAL.DamageIncrease=<Min <EVAL <OBJ.TAG0.DamageIncrease>+<TAG0.DamageIncrease>>,100>
LOCAL.BONUSDAMAGE=<EVAL (<LOCAL.TACTICS>+<LOCAL.ANATOMY>+<LOCAL.LUMBERJACKING>+<LOCAL.STR>+<LOCAL.DamageIncrease>>
IF (<ARGN1>)
    LOCAL.DAMAGE=<EVAL RAND(<OBJ.DAM>)>
ELSE
    IF (<DAM>)
        LOCAL.DAMAGE=<EVAL RAND(<DAM>)>
    ELSE
        LOCAL.DAMAGE=<EVAL RAND(1,4)>
    ENDIF        
ENDIF
LOCAL.DAMAGE += <Percent <LOCAL.BONUSDAMAGE>, <LOCAL.DAMAGE>>
SKILLGAIN tactics 1
SKILLGAIN anatomy 1
RETURN <LOCAL.DAMAGE>


[FUNCTION f_cs_damageabsorption]
IF (<TAG0.TEMP_PHYSICALDAM>)
    LOCAL.DAM  = <EVAL (<ARGN1>*<TAG0.TEMP_PHYSICALDAM>*(<Max <EVAL 100-<MODAR>>,30>))/10000>
ENDIF
IF (<TAG0.TEMP_FIREDAM>)
    LOCAL.DAM += <EVAL (<ARGN1>*<TAG0.TEMP_FIREDAM>*(<Max <EVAL 100-<RESFIRE>>,30>))/10000>
ENDIF
IF (<TAG0.TEMP_COLDDAM>)
    LOCAL.DAM += <EVAL (<ARGN1>*<TAG0.TEMP_COLDDAM>*(<Max <EVAL 100-<RESCOLD>>,30>))/10000>
ENDIF
IF (<TAG0.TEMP_POISONDAM>)
    LOCAL.DAM += <EVAL (<ARGN1>*<TAG0.TEMP_POISONDAM>*(<Max <EVAL 100-<RESPOISON>>,30>))/10000>
ENDIF
IF (<TAG0.TEMP_ENERGYDAM>)
    LOCAL.DAM += <EVAL (<ARGN1>*<TAG0.TEMP_ENERGYDAM>*(<Max <EVAL 100-<RESENERGY>>,30>))/10000>
ENDIF
RETURN <LOCAL.DAM>

/////////////////////////////////////////////////////////////////////////

[EVENTS e_aos_cs]
ON=@HITTRY
ARGN1=<f_cs_attackspeed <ARGO.UID>>
ACTDIFF=<f_cs_chancetohit <ARGO.UID>>

ON=@HIT
IF (<SRC.FINDLAYER.1>) || (<SRC.FINDLAYER.2>)
    IF (<SRC.f_cs_chancetoblock>>RAND(1000))
        IF (<SRC.FINDLAYER.2.TYPE>==t_shield) || (<SRC.FINDLAYER.2.ISWEAPON>)
            SRC.TRYSRC <UID> FINDLAYER.2.TRIGGER=@Parry
        ELSEIF (<SRC.FINDLAYER.1.ISWEAPON>)
            SRC.TRYSRC <UID> FINDLAYER.1.TRIGGER=@Parry
        ENDIF
        IF !(<VAR0.RETURN>)
            SRC.SYSMESSAGE You parry the blow.
            SYSMESSAGE <SRC.NAME> parries the blow.
            SRC.SOUND 0146
            SRC.ANIM 30
            RETURN 1
        ENDIF
    ENDIF
ENDIF

ARGN1=<f_cs_calculatedamage <ARGO.UID>>
VAR.ARGN1=<ARGN1>    //this is passed to trigger calls
IF (<ARGO.UID>)
    SRC.TAG.TEMP_PHYSICALDAM=<ARGO.TAG.PhysicalDamage>
    SRC.TAG.TEMP_FIREDAM=<ARGO.TAG.FireDamage>
    SRC.TAG.TEMP_COLDDAM=<ARGO.TAG.ColdDamage>
    SRC.TAG.TEMP_POISONDAM=<ARGO.TAG.PoisonDamage>
    SRC.TAG.TEMP_ENERGYDAM=<ARGO.TAG.EnergyDamage>
    TRY UID.<ARGO.UID>.TRIGGER=@DamageCalc            //src = attacked, [] = weapon, cont = attacker
ELSE
    SRC.TAG.TEMP_PHYSICALDAM=<TAG.PhysicalDamage>
    SRC.TAG.TEMP_FIREDAM=<TAG.FireDamage>
    SRC.TAG.TEMP_COLDDAM=<TAG.ColdDamage>
    SRC.TAG.TEMP_POISONDAM=<TAG.PoisonDamage>
    SRC.TAG.TEMP_ENERGYDAM=<TAG.EnergyDamage>
ENDIF
TRIGGER=@DamageCalc            //src = attacked, [] = attacker
ARGN1=<VAR.ARGN1>

ON=@GETHIT
IF (<TAG0.TEMP_PHYSICALDAM>) || (<TAG0.TEMP_FIREDAM>) || (<TAG0.TEMP_COLDDAM>) || (<TAG0.TEMP_POISONDAM>) || (<TAG0.TEMP_ENERGYDAM>)
    IF (<FLAGS>&04)
        FINDID.i_rune_paralyze.REMOVE
        FINDID.i_rune_paralyze_field.REMOVE
        FLAGS &= ~04
    ENDIF
    ARGN1=<f_cs_damageabsorption <ARGN1>>
    VAR.ARGN1=<ARGN1>
    TRIGGER=@DamageAbsorb            //src = attacker, [] = attacked
    ARGN1=<VAR.ARGN1>
    TAG.TEMP_PHYSICALDAM
    TAG.TEMP_FIREDAM
    TAG.TEMP_COLDDAM
    TAG.TEMP_POISONDAM
    TAG.TEMP_ENERGYDAM
    ARGN2=1
ENDIF


Вот бс меню

[code]
[DEFNAME def_skmenu_blacksmithing]
skmenu_blacksmithing_flags 07
skmenu_blacksmithing_subres_0 i_ingot_iron
skmenu_blacksmithing_subres_0_skill 0.0
skmenu_blacksmithing_subres_1 i_ingot_dull_copper
skmenu_blacksmithing_subres_1_skill 65.0
skmenu_blacksmithing_subres_2 i_ingot_shadow
skmenu_blacksmithing_subres_2_skill 70.0
skmenu_blacksmithing_subres_3 i_ingot_copper
skmenu_blacksmithing_subres_3_skill 75.0
skmenu_blacksmithing_subres_4 i_ingot_bronze
skmenu_blacksmithing_subres_4_skill 80.0
skmenu_blacksmithing_subres_5 i_ingot_gold
skmenu_blacksmithing_subres_5_skill 85.0
skmenu_blacksmithing_subres_6 i_ingot_agapite
skmenu_blacksmithing_subres_6_skill 90.0
skmenu_blacksmithing_subres_7 i_ingot_verite
skmenu_blacksmithing_subres_7_skill 95.0
skmenu_blacksmithing_subres_8 i_ingot_valorite
skmenu_blacksmithing_subres_8_skill 99.0
skmenu_blacksmithing_subres_9 i_ingot_blackrock
skmenu_blacksmithing_subres_9_skill 100.0
skmenu_blacksmithing_subres_10_skill 120.0
skmenu_blacksmithing_subres_11 i_ingot_old_copper
skmenu_blacksmithing_subres_11_skill 150.0
skmenu_blacksmithing_subres_12 i_ingot_shadow
skmenu_blacksmithing_subres_12_skill 70.0
skmenu_blacksmithing_subres_13 i_ingot_copper
skmenu_blacksmithing_subres_13_skill 75.0
skmenu_blacksmithing_subres_14 i_ingot_bronze
skmenu_blacksmithing_subres_14_skill 80.0
skmenu_blacksmithing_subres_15 i_ingot_gold
skmenu_blacksmithing_subres_15_skill 85.0
skmenu_blacksmithing_subres_16 i_ingot_agapite
skmenu_blacksmithing_subres_16_skill 90.0
skmenu_blacksmithing_subres_17 i_ingot_verite
skmenu_blacksmithing_subres_17_skill 95.0
skmenu_blacksmithing_subres_18 i_ingot_valorite
skmenu_blacksmithing_subres_18_skill 99.0
skmenu_blacksmithing_subres_19 i_ingot_blackrock
skmenu_blacksmithing_subres_19_skill 100.0
skmenu_blacksmithing_subres_20 i_ingot_old_copper
skmenu_blacksmithing_subres_20_skill 120.0
skmenu_blacksmithing_subres_21 i_ingot_old_copper //новый материал
skmenu_blacksmithing_subres_21_skill 120.0

skmenu_blacksmithing_subres2_0 i_dragon_scale_red
skmenu_blacksmithing_subres2_0_skill 0.0
skmenu_blacksmithing_subres2_1 i_dragon_scale_yellow
skmenu_blacksmithing_subres2_1_skill 0.0
skmenu_blacksmithing_subres2_2 i_dragon_scale_black
skmenu_blacksmithing_subres2_2_skill 0.0
skmenu_blacksmithing_subres2_3 i_dragon_scale_green
skmenu_blacksmithing_subres2_3_skill 0.0
skmenu_blacksmithing_subres2_4 i_dragon_scale_white
skmenu_blacksmithing_subres2_4_skill 0.0
skmenu_blacksmithing_subres2_5 i_dragon_scale_blue
skmenu_blacksmithing_subres2_5_skill 0.0

skmenu_blacksmithing_0_name RINGMAILS
skmenu_blacksmithing_0_0 i_ringmail_gloves
skmenu_blacksmithing_0_1 i_ringmail_leggings
skmenu_blacksmithing_0_2 i_ringmail_sleeves
skmenu_blacksmithing_0_3 i_ringmail_tunic

skmenu_blacksmithing_1_name CHAINMAIL
skmenu_blacksmithing_1_0 i_chainmail_coif
skmenu_blacksmithing_1_1 i_chainmail_leggings
skmenu_blacksmithing_1_2 i_chainmail_tunic

skmenu_blacksmithing_2_name PLATEMAILS
skmenu_blacksmithing_2_0 i_platemail_arms
skmenu_blacksmithing_2_1 i_platemail_gloves
skmenu_blacksmithing_2_2 i_platemail_gorget
skmenu_blacksmithing_2_3 i_platemail_leggings
skmenu_blacksmithing_2_4 i_platemail_chest
skmenu_blacksmithing_2_5 i_armor_female_plate
//SE armor
skmenu_blacksmithing_2_6 i_platemail_mempo
skmenu_blacksmithing_2_7 i_platemail_do
skmenu_blacksmithing_2_8 i_platemail_hiro_sode
skmenu_blacksmithing_2_9 i_platemail_suneate
skmenu_blacksmithing_2_10 i_platemail_haidate

skmenu_blacksmithing_3_name HELMETS
skmenu_blacksmithing_3_0 i_bascinet
skmenu_blacksmithing_3_1 i_helm_closed
skmenu_blacksmithing_3_2 i_helm_open
skmenu_blacksmithing_3_3 i_helm_nose
skmenu_blacksmithing_3_4 i_platemail_helm
//SE helmets
skmenu_blacksmithing_3_5 i_chainmail_hatsuburi
skmenu_blacksmithing_3_6 i_platemail_hatsuburi
skmenu_blacksmithing_3_7 i_platemail_jingasa_heavy
skmenu_blacksmithing_3_8 i_platemail_jingasa_light
skmenu_blacksmithing_3_9 i_platemail_jingasa_small
skmenu_blacksmithing_3_10 i_platemail_kabuto_decorative
skmenu_blacksmithing_3_11 i_platemail_kabuto_battle
skmenu_blacksmithing_3_12 i_platemail_kabuto_standard
//ML circlets
skmenu_blacksmithing_3_13 i_circlet
skmenu_blacksmithing_3_14 i_circlet_royal
skmenu_blacksmithing_3_15 i_circlet_gemmed

skmenu_blacksmithing_4_name SHIELDS
skmenu_blacksmithing_4_0 i_shield_buckler
skmenu_blacksmithing_4_1 i_shield_round_bronze
skmenu_blacksmithing_4_2 i_shield_heater
skmenu_blacksmithing_4_3 i_shield_round_metal
skmenu_blacksmithing_4_4 i_shield_kite_metal
skmenu_blacksmithing_4_5 i_shield_kite_wood

skmenu_blacksmithing_5_name BLADED
skmenu_blacksmithing_5_0 i_bone_harvester
skmenu_blacksmithing_5_1 i_sword_broad
skmenu_blacksmithing_5_2 i_crescent_blade
skmenu_blacksmithing_5_3 i_cutlass
skmenu_blacksmithing_5_4 i_dagger
skmenu_blacksmithing_5_5 i_katana
skmenu_blacksmithing_5_6 i_kryss
skmenu_blacksmithing_5_7 i_sword_long
skmenu_blacksmithing_5_8 i_scimitar
skmenu_blacksmithing_5_9 i_sword_viking
skmenu_blacksmithing_5_10 i_sword_long
//SE blades
skmenu_blacksmithing_5_11 i_no_dachi
skmenu_blacksmithing_5_12 i_wakizashi
skmenu_blacksmithing_5_13 i_lajatang
skmenu_blacksmithing_5_14 i_daisho
skmenu_blacksmithing_5_15 i_tekagi
skmenu_blacksmithing_5_16 i_kama
skmenu_blacksmithing_5_17 i_sai
//ML blades
skmenu_blacksmithing_5_18 i_assassin_spike
skmenu_blacksmithing_5_19 i_elven_machete
skmenu_blacksmithing_5_20 i_elven_spellblade
skmenu_blacksmithing_5_21 i_leafblade
skmenu_blacksmithing_5_22 i_radiant_scimitar
skmenu_blacksmithing_5_23 i_rune_blade
skmenu_blacksmithing_5_24 i_war_cleaver

skmenu_blacksmithing_6_name AXES
skmenu_blacksmithing_6_0 i_axe
skmenu_blacksmithing_6_1 i_axe_battle
skmenu_blacksmithing_6_2 i_axe_double
skmenu_blacksmithing_6_3 i_axe_exec
skmenu_blacksmithing_6_4 i_axe_battle_large
skmenu_blacksmithing_6_5 i_axe_two_hand
skmenu_blacksmithing_6_6 i_axe_war
//ML axes
skmenu_blacksmithing_6_7 i_ornate_axe

skmenu_blacksmithing_7_name POLE ARMS
skmenu_blacksmithing_7_0 i_bardiche
skmenu_blacksmithing_7_1 i_staff_bladed
skmenu_blacksmithing_7_2 i_staff_bladed_double
skmenu_blacksmithing_7_3 i_halberd
skmenu_blacksmithing_7_4 i_lance
skmenu_blacksmithing_7_5 i_pike
skmenu_blacksmithing_7_6 i_spear_short
skmenu_blacksmithing_7_7 i_scythe
skmenu_blacksmithing_7_8 i_spear
skmenu_blacksmithing_7_9 i_war_fork
skmenu_blacksmithing_7_10 i_pitchfork

skmenu_blacksmithing_8_name BASHING
skmenu_blacksmithing_8_0 i_hammer_pick
skmenu_blacksmithing_8_1 i_mace
skmenu_blacksmithing_8_2 i_maul
skmenu_blacksmithing_8_3 i_scepter
skmenu_blacksmithing_8_4 i_mace_war
skmenu_blacksmithing_8_5 i_hammer_war
skmenu_blacksmithing_8_6 i_tessen
//ML maces
skmenu_blacksmithing_8_7 i_diamond_mace

skmenu_blacksmithing_9_name DRAGON ARMOR
skmenu_blacksmithing_9_0 i_dragon_gloves
skmenu_blacksmithing_9_1 i_dragon_helm
skmenu_blacksmithing_9_2 i_dragon_leggings
skmenu_blacksmithing_9_3 i_dragon_sleeves
skmenu_blacksmithing_9_4 i_dragon_chest

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//MISC FUNCTIONS
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

[FUNCTION htmlFormatTitle]
RETURN <DEF.BFONT_WHITE><DEF.CENTER><ARGS><DEF.CENTERE><DEF.BFONTE>

[FUNCTION htmlFormat]
RETURN <DEF.BFONT_WHITE><ARGS><DEF.BFONTE>

[FUNCTION buttonId] //argn1=type, argn2=id
RETURN <EVAL 1+<ARGN1>+(<ARGN2>*8)>

[FUNCTION isArmor]
RETURN <EVAL (<TYPE>==t_armor)|(<TYPE>==t_armor_leather)>

[TYPEDEF t_weapon_mace_smith]
ON=@DCLICK
IF (<SRC.RESTEST 1 i_blacksmithing_craft>)
SRC.SYSMESSAGE You must wait to perform another action.
RETURN 1
ENDIF
DIALOG d_skillmenu_blacksmithing
EQUIP
RETURN 1

[TYPEDEF t_ingot]
ON=@DCLICK
RETURN 1

[FUNCTION f_resource_replace]//argn1 = item, argn2 = resource to search for, argn3 = resource to replace with
//this function returns a resource list with the specified resource replaced with another
LOCAL.I=1
WHILE (<SERV.ITEMDEF.<ARGV[0]>.RESOURCES.<LOCAL.I>.VAL>)
IF (<SERV.ITEMDEF.<ARGV[0]>.RESOURCES.<LOCAL.I>.KEY>==<ARGV[1]>)
LOCAL.RETURN=<LOCAL.RETURN>, <SERV.ITEMDEF.<ARGV[0]>.RESOURCES.<LOCAL.I>.VAL> <ARGV[2]>
ELSE
LOCAL.RETURN=<LOCAL.RETURN>, <SERV.ITEMDEF.<ARGV[0]>.RESOURCES.<LOCAL.I>.VAL> <SERV.ITEMDEF.<ARGV[0]>.RESOURCES.<LOCAL.I>.KEY>
ENDIF
LOCAL.I += 1
ENDWHILE
RETURN <STREAT <LOCAL.RETURN>>

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//MAIN FUNCTIONS
//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

[FUNCTION f_skmenu_blacksmithing_cancraft]
//this must be edited out for different skillmenus (because, for example, bowcraft doesn't need anvil & forge)
IF (<HITPOINTS><=0)
SRC.CTAG.SKMENU_BLACKSMITHING_NOTICE You have worn out your tool!
RETURN 0
ELSEIF (<CONT.TOPOBJ.UID>!=<SRC.UID>)
SRC.CTAG.SKMENU_BLACKSMITHING_NOTICE The tool must be on your person to use.
RETURN 0
ENDIF
IF (<SRC.ISNEARTYPE t_anvil, 2>) && (<SRC.ISNEARTYPE t_forge, 2>)
RETURN 1
ELSE
SRC.CTAG.SKMENU_BLACKSMITHING_NOTICE You must be near an anvil and a forge to smith items.
RETURN 0
ENDIF

//This is the main craft function
[FUNCTION f_skmenu_blacksmithing_makeitem]
//preliminary checks
IF (<SRC.ACTION>!=-1) || (<SRC.FINDID.i_blacksmithing_craft>)
SRC.SYSMESSAGE You must wait to perform another action
RETURN 1
ENDIF
IF !(<f_skmenu_blacksmithing_cancraft>)
DIALOG d_skillmenu_blacksmithing
RETURN 1
ELSEIF !(<SRC.CANMAKESKILL <ARGS>>)
SRC.CTAG0.SKMENU_BLACKSMITHING_NOTICE You don't have the required skills to attempt this item.
DIALOG d_skillmenu_blacksmithing
RETURN 1
ENDIF

//check resources
IF (<SERV.ITEMDEF.<ARGS>.RESOURCES.1.KEY>==i_dragon_scale)
LOCAL.USESUBRES2=1
LOCAL.RESOURCES=<f_resource_replace <ARGS>,i_dragon_scale,<DEF.skmenu_blacksmithing_subres2_<SRC.dCTAG0.SKMENU_BLACKSMITHING_SUBRES2>>>
ELSE
IF (<SRC.CTAG0.SKMENU_BLACKSMITHING_SUBRES>)
LOCAL.RESOURCES=<f_resource_replace <ARGS>,i_ingot_iron,<DEF.skmenu_blacksmithing_subres_<SRC.dCTAG0.SKMENU_BLACKSMITHING_SUBRES>>>
ELSE
LOCAL.RESOURCES=<SERV.ITEMDEF.<ARGS>.RESOURCES>
ENDIF
ENDIF
IF !(<SRC.RESTEST <LOCAL.RESOURCES>>)
SRC.CTAG0.SKMENU_BLACKSMITHING_NOTICE You don't have the resources required to make that item.
DIALOG d_skillmenu_blacksmithing
RETURN 1
ENDIF
SRC.CONSUME <LOCAL.RESOURCES>

//update the "last ten" list
IF (<ARGS>!=<SRC.CTAG0.SKMENU_BLACKSMITHING_LASTTEN_0>)
FOR 9 1
TRY SRC.CTAG0.SKMENU_BLACKSMITHING_LASTTEN_<dLOCAL._FOR> = <SRC.CTAG.SKMENU_BLACKSMITHING_LASTTEN_<EVAL <LOCAL._FOR>-1>>
ENDFOR
SRC.CTAG0.SKMENU_BLACKSMITHING_LASTTEN_0 <ARGS>
ENDIF

//start crafting
SERV.NEWITEM i_blacksmithing_craft
NEW.CONT=<SRC.UID>
IF (<LOCAL.USESUBRES2>)
NEW.MORE=<SRC.CTAG0.SKMENU_BLACKSMITHING_SUBRES2>
NEW.MORE2=1
ELSE
NEW.MORE=<SRC.CTAG0.SKMENU_BLACKSMITHING_SUBRES>
ENDIF
NEW.LINK=<UID>
NEW.TIMER=1
NEW.TAG.ITEM=<ARGS>
SRC.ANIM 11
SRC.EVENTS +e_blacksmithing_crafting

[ITEMDEF i_blacksmithing_craft]
ID=02007
NAME=Blacksmithing craft memory
TYPE=t_eq_script

ON=@CREATE
MOREX={2 4}

ON=@TIMER
CONT.SFX 02a
CONT.ANIM 11
MOREX -= 1
IF (<MOREX>)
TIMER 1
RETURN 1
ENDIF
LOCAL.CHANCE=<CONT.f_skmenu_blacksmithing_successchance <TAG.ITEM>, <LINK.UID>>
IF (RAND(1000)<<LOCAL.CHANCE>)
SERV.NEWITEM <TAG.ITEM>
LOCAL.EXCEP=<CONT.f_skmenu_blacksmithing_exceptionalchance <TAG.ITEM>, <LINK.UID>>
VAR.ARGN1=<LOCAL.EXCEP>
VAR.ARGN2=<MORE>
LINK.TRIGGER=@MakeItem
LOCAL.EXCEP=<VAR.ARGN1>
MORE=<VAR.ARGN2>
NEW.CONT=<CONT.FINDLAYER.21.UID>
CONT.SOUND 057
IF (<MORE2>) //crafting with subresource2
NEW.f_skmenu_blacksmithing_material <MORE> 1
ELSE //crafting with subresource
NEW.f_skmenu_blacksmithing_material <MORE>
ENDIF
IF (RAND(1000)<<LOCAL.EXCEP>)
NEW.QUALITY=201
IF (<CONT.CTAG0.SKMENU_BLACKSMITHING_MARKOPTION>==0)
NEW.TAG0.CRAFTEDBY=<CONT.UID>
ELSEIF (<CONT.CTAG0.SKMENU_BLACKSMITHING_MARKOPTION>==2)
CONT.CTAG0.SKMENU_BLACKSMITHING_TOOL=<LINK.UID>
TRYSRC <CONT.UID> NEW.DIALOG d_skillmenu_blacksmithing_querymakersmark
LOCAL.NODIALOG=1
ENDIF
NEW.NAME Exceptional <NEW.NAME>
NEW.HITPOINTS += 20
IF (<NEW.ISARMOR>)
FOR 6 //exceptional quality armors have increased resistances
DORAND 5
NEW.TAG0.PHYSICALRESIST += 4
NEW.TAG0.FIRERESIST += 4
NEW.TAG0.COLDRESIST += 4
NEW.TAG0.POISONRESIST += 4
NEW.TAG0.ENERGYRESIST += 4
ENDDO
ENDFOR
ELSEIF (<NEW.ISWEAPON>)
NEW.TAG0.DAMAGEINCREASE += 20
ENDIF
ELSE
NEW.QUALITY=<EVAL (<LOCAL.CHANCE>+<LOCAL.EXCEP>)/10>
ENDIF
NEW.RESENDTOOLTIP
LINK.HITS -= 1 //damage the tool
IF (<LINK.HITS><=0)
LINK.REMOVE
CONT.SYSMESSAGE You have worn out your tool!
IF (<NEW.QUALITY>>200) && !(<CONT.CTAG0.SKMENU_BLACKSMITHING_MARKOPTION>)
CONT.SYSMESSAGE You create an exceptional quality item and affix your maker's mark.
ELSEIF (<NEW.QUALITY>>200)
CONT.SYSMESSAGE You create an exceptional quality item.
ELSE
CONT.SYSMESSAGE You create the item.
ENDIF
LOCAL.NODIALOG=1
ELSE
LINK.RESENDTOOLTIP
IF (<NEW.QUALITY>>200) && !(<CONT.CTAG0.SKMENU_BLACKSMITHING_MARKOPTION>)
CONT.CTAG0.SKMENU_BLACKSMITHING_NOTICE You create an exceptional quality item and affix your maker's mark.
ELSEIF (<NEW.QUALITY>>200)
CONT.CTAG0.SKMENU_BLACKSMITHING_NOTICE You create an exceptional quality item.
ELSE
CONT.CTAG0.SKMENU_BLACKSMITHING_NOTICE You create the item.
ENDIF
ENDIF
IF (<LOCAL.CHANCE><1000) //gain skill only if the crafting was not trivial
CONT.SKILLGAIN blacksmithing <EVAL 10-(<LOCAL.CHANCE>/100)>
ENDIF
ELSE
LINK.HITS -= 1
IF (<LINK.HITS><=0)
LINK.REMOVE
CONT.SYSMESSAGE You have worn out your tool!
CONT.SYSMESSAGE You failed to create the item, and some of your materials are lost.
LOCAL.NODIALOG=1
ELSE
LINK.RESENDTOOLTIP
CONT.CTAG0.SKMENU_BLACKSMITHING_NOTICE You failed to create the item, and some of your materials are lost.
ENDIF
IF (<CONT.BLACKSMITHING><30.0)
CONT.SKILLGAIN blacksmithing 1
ENDIF
ENDIF
IF !(<LOCAL.NODIALOG>)
TRYSRC <CONT.UID> LINK.DIALOG d_skillmenu_blacksmithing
ENDIF
REMOVE
RETURN 1

ON=@UNEQUIP
SRC.EVENTS -e_blacksmithing_crafting

[EVENTS e_blacksmithing_crafting]
ON=@SKILLSTART
SRC.SYSMESSAGE You must wait to perform another action
ACTION -1
RETURN 1


[FUNCTION f_skmenu_blacksmithing_successchance]
//argv[0] = вешь которую крафтит
IF !(<CANMAKESKILL <ARGV[0]>>)
RETURN 0
ENDIF
LOCAL.CHANCE=<EVAL (<BLACKSMITHING>-<SERV.ITEMDEF.<ARGV[0]>.SKILLMAKE.1.VAL>)*2>
IF (<LOCAL.CHANCE>>1000)
LOCAL.CHANCE=1000
ELSEIF (<LOCAL.CHANCE><0)
LOCAL.CHANCE=0
ENDIF
RETURN <LOCAL.CHANCE>

[FUNCTION f_skmenu_blacksmithing_exceptionalchance]
//argv[0] = item to craft
//argv[1] = the tool used in the craft
LOCAL.OFFSET=600-((<BLACKSMITHING>-950)*3)
IF (<LOCAL.OFFSET><450)
LOCAL.OFFSET=450
ELSEIF (<LOCAL.OFFSET>>600)
LOCAL.OFFSET=600
ENDIF
LOCAL.CHANCE=<f_skmenu_blacksmithing_successchance <ARGV[0]>,<ARGV[1]>>-<LOCAL.OFFSET>
IF (<LOCAL.CHANCE>>1000)
LOCAL.CHANCE=1000
ELSEIF (<LOCAL.CHANCE><0)
LOCAL.CHANCE=0
ENDIF
RETURN <LOCAL.CHANCE>

[FUNCTION f_skmenu_blacksmithing_material]
IF (<ARGN2>)
TRY f_material_<DEF.skmenu_blacksmithing_subres2_<dARGN1>>
ELSE
TRY f_material_<DEF.skmenu_blacksmithing_subres_<dARGN1>>
ENDIF


[FUNCTION f_skmenu_blacksmithing_smelt]
IF !(<ARGO.UID>)
TARGETF f_skmenu_blacksmithing_smelt <UID>
SRC.SYSMESSAGE Target an item to recycle
ELSE
OBJ=<ARGO.UID>
IF !(<OBJ.ISITEM>)
RETURN 1
ELSEIF (<OBJ.CONT.TOPOBJ>!=<SRC.UID>)
RETURN 1
ENDIF
LOCAL.I=1
WHILE (<OBJ.RESOURCES.<LOCAL.I>.VAL>)
IF (<OBJ.RESOURCES.<LOCAL.I>.KEY>==i_ingot_iron)
LOCAL.AMOUNT=<OBJ.RESOURCES.<LOCAL.I>.VAL>
ENDIF
LOCAL.I += 1
ENDWHILE
IF !(<LOCAL.AMOUNT>)
SRC.CTAG0.SKMENU_BLACKSMITHING_NOTICE=You can't melt that down into ingots.
TRY UID.<ARGN1>,DIALOG d_skillmenu_blacksmithing
RETURN 1
ENDIF
LOCAL.AMOUNT /= 2
IF (<LOCAL.AMOUNT><1)
LOCAL.AMOUNT=1
ENDIF
SRC.SOUND 02a
SRC.SOUND 0240
OBJ.REMOVE
IF !(<OBJ.TAG0.MATERIAL>)
SERV.NEWITEM i_ingot_iron
ELSE
SERV.NEWITEM <OBJ.TAG0.MATERIAL>
ENDIF
NEW.AMOUNT=<LOCAL.AMOUNT>
NEW.BOUNCE
SRC.CTAG0.SKMENU_BLACKSMITHING_NOTICE=You melt the item down into ingots.
TRY UID.<ARGN1>.DIALOG d_skillmenu_blacksmithing
ENDIF

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Меню
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

[DIALOG d_skillmenu_blacksmithing] //argn1=страница
40,40
SRC.DIALOGCLOSE d_skillmenu_blacksmithing
page 0

resizepic 0 0 5054 530 437
gumppictiled 10 10 510 22 2624
gumppictiled 10 292 150 45 2624
gumppictiled 165 292 355 45 2624
gumppictiled 10 342 510 85 2624
gumppictiled 10 37 200 250 2624
gumppictiled 215 37 305 250 2624
checkertrans 10 10 510 417

dhtmlgump 10 12 510 20 0 0 <htmlFormatTitle BLACKSMITHY MENU>
dhtmlgump 10 37 200 22 0 0 <htmlFormatTitle CATEGORIES>
dhtmlgump 215 37 305 22 0 0 <htmlFormatTitle SELECTIONS>
dhtmlgump 10 302 150 25 0 0 <htmlFormatTitle NOTICES>

button 15 402 4017 4019 1 0 0
dhtmlgump 50 405 150 18 0 0 <htmlFormat EXIT>

button 270 402 4005 4007 1 0 <buttonID 6 2>
dhtmlgump 305 405 150 18 0 0 <htmlFormat MAKE LAST>

IF (<DEF.skmenu_blacksmithing_flags>&01)
button 270 362 4005 4007 1 0 <buttonID 6 6>
DOSWITCH (<SRC.CTAG0.SKMENU_BLACKSMITHING_MARKOPTION>)
dhtmlgump 305 365 150 18 0 0 <htmlFormat MARK ITEM>
dhtmlgump 305 365 150 18 0 0 <htmlFormat DO NOT MARK>
dhtmlgump 305 365 150 18 0 0 <htmlFormat PROMPT FOR MARK>
ENDDO
ENDIF
IF (<DEF.skmenu_blacksmithing_flags>&02)
button 15 342 4005 4007 1 0 <buttonID 6 1>
dhtmlgump 50 345 150 18 0 0 <htmlFormat SMELT ITEM>
ENDIF
IF (<DEF.skmenu_blacksmithing_flags>&04)
button 270 342 4005 4007 1 0 <buttonID 6 5>
dhtmlgump 305 345 150 18 0 0 <htmlFormat REPAIR ITEM>
ENDIF
IF (<DEF.skmenu_blacksmithing_flags>&08)
button 270 382 4005 4007 1 0 <buttonId 6 8>
dhtmlgump 305 385 150 18 0 0 <htmlFormat ENHANCE ITEM>
ENDIF
IF !(<ISEMPTY <SRC.CTAG.SKMENU_BLACKSMITHING_NOTICE>>)
dhtmlgump 170 295 350 40 0 0 <htmlFormat <SRC.CTAG.SKMENU_BLACKSMITHING_NOTICE>>
SRC.CTAG.SKMENU_BLACKSMITHING_NOTICE
ENDIF
//colored ingots
IF (<DEF0.skmenu_blacksmithing_subres_0>)
button 15 362 4005 4007 1 0 <buttonId 6 0>
dhtmlgump 50 365 250 18 0 0 <htmlFormat <SERV.ITEMDEF.<DEF.skmenu_blacksmithing_subres_<SRC.dCTAG0.SKMENU_BLACKSMITHING_SUBRES>>.NAME>>
ENDIF
//dragon scales
IF (<DEF0.skmenu_blacksmithing_subres2_0>)
button 15 382 4005 4007 1 0 <buttonId 6 7>
dhtmlgump 50 385 250 18 0 0 <htmlFormat <SERV.ITEMDEF.<DEF.skmenu_blacksmithing_subres2_<SRC.dCTAG0.SKMENU_BLACKSMITHING_SUBRES2>>.NAME>>
ENDIF

f_skmenu_blacksmithing_categories
IF (0<ARGS>==1)
f_skmenu_blacksmithing_subres
ELSEIF (0<ARGS>==2)
f_skmenu_blacksmithing_subres2
ELSE
f_skmenu_blacksmithing_items <SRC.CTAG0.SKMENU_BLACKSMITHING_LASTCATEGORY>
ENDIF

[DIALOG d_skillmenu_blacksmithing BUTTON]
ON=1 0ffffffff
ARGN1 -= 1
LOCAL.TYPE=<ARGN1>%8
LOCAL.INDEX=<ARGN1>/8
IF (<LOCAL.TYPE>==0)
SRC.CTAG0.SKMENU_BLACKSMITHING_LASTCATEGORY=<LOCAL.INDEX>
DIALOG d_skillmenu_blacksmithing
ELSEIF (<LOCAL.TYPE>==1)
f_skmenu_blacksmithing_makeitem <DEF.skmenu_blacksmithing_<SRC.dCTAG0.SKMENU_BLACKSMITHING_LASTCATEGORY>_<dLOCAL.INDEX>>
ELSEIF (<LOCAL.TYPE>==2)
DIALOG d_skillmenu_blacksmithing_details 0, <LOCAL.INDEX>
ELSEIF (<LOCAL.TYPE>==3)
f_skmenu_blacksmithing_makeitem <SRC.CTAG0.SKMENU_BLACKSMITHING_LASTTEN_<dLOCAL.INDEX>>
ELSEIF (<LOCAL.TYPE>==4)
DIALOG d_skillmenu_blacksmithing_details 0, <LOCAL.INDEX>
ELSEIF (<LOCAL.TYPE>==5)
IF (<DEF.skmenu_blacksmithing_subres_<dLOCAL.INDEX>>)
IF (<DEF.skmenu_blacksmithing_subres_<dLOCAL.INDEX>_skill>><SRC.BLACKSMITHING>)
SRC.CTAG.SKMENU_BLACKSMITHING_NOTICE You cannot work this strange and unusual material.
DIALOG d_skillmenu_blacksmithing 0, 1
RETURN 1
ENDIF
SRC.CTAG0.SKMENU_BLACKSMITHING_SUBRES=<LOCAL.INDEX>
SRC.CTAG.SKMENU_BLACKSMITHING_NOTICE Material: <SERV.ITEMDEF.<DEF.skmenu_blacksmithing_subres_<dLOCAL.INDEX>>.NAME>
DIALOG d_skillmenu_blacksmithing
ENDIF
ELSEIF (<LOCAL.TYPE>==6) //misc
IF (<LOCAL.INDEX>==0) //resource selection
IF (<DEF0.skmenu_blacksmithing_subres_0>)
DIALOG d_skillmenu_blacksmithing 0, 1
ENDIF
ELSEIF (<LOCAL.INDEX>==1) //resmelt
IF (<DEF0.skmenu_blacksmithing_flags>&02)
f_skmenu_blacksmithing_smelt
ENDIF
ELSEIF (<LOCAL.INDEX>==2) //make last
IF (<SRC.CTAG0.SKMENU_BLACKSMITHING_LASTTEN_0>)
f_skmenu_blacksmithing_makeitem <SRC.CTAG0.SKMENU_BLACKSMITHING_LASTTEN_0>
ELSE
SRC.CTAG.SKMENU_BLACKSMITHING_NOTICE You haven't made anything yet.
DIALOG d_skillmenu_blacksmithing
ENDIF
ELSEIF (<LOCAL.INDEX>==3) //last 10 items made
SRC.CTAG0.SKMENU_BLACKSMITHING_LASTCATEGORY=-1
DIALOG d_skillmenu_blacksmithing
ELSEIF (<LOCAL.INDEX>==4) // Toggle use resource hue
SRC.CTAG0.SKMENU_BLACKSMITHING_DONOTCOLOR ^= 1
DIALOG d_skillmenu_blacksmithing 0, 1
ELSEIF (<LOCAL.INDEX>==5) //repair
IF (<DEF0.skmenu_blacksmithing_flags>&04)
SRC.REPAIR
ENDIF
ELSEIF (<LOCAL.INDEX>==6) //toggle mark option
IF (<DEF0.skmenu_blacksmithing_flags>&01)
DOSWITCH <SRC.CTAG0.SKMENU_BLACKSMITHING_MARKOPTION>
SRC.CTAG.SKMENU_BLACKSMITHING_MARKOPTION = 1
SRC.CTAG.SKMENU_BLACKSMITHING_MARKOPTION = 2
SRC.CTAG.SKMENU_BLACKSMITHING_MARKOPTION = 0
ENDDO
ENDIF
DIALOG d_skillmenu_blacksmithing
ELSEIF (<LOCAL.INDEX>==7) //resource selection 2
IF (<DEF0.skmenu_blacksmithing_subres2_0>)
DIALOG d_skillmenu_blacksmithing 0, 2
ENDIF
ELSEIF (<LOCAL.INDEX>==8) //enhance
IF (<DEF0.skmenu_blacksmithing_flags>&08)
//f_skmenu_blacksmithing_enhance
ENDIF
ELSEIF (<LOCAL.INDEX>==9) // Toggle use resource hue (subres2 page)
SRC.CTAG0.SKMENU_BLACKSMITHING_DONOTCOLOR ^= 1
DIALOG d_skillmenu_blacksmithing 0, 2
ENDIF
ELSEIF (<LOCAL.TYPE>==7) //subres2 selected
IF (<DEF.skmenu_blacksmithing_subres2_<dLOCAL.INDEX>>)
IF (<DEF.skmenu_blacksmithing_subres2_<dLOCAL.INDEX>_skill>><SRC.BLACKSMITHING>)
SRC.CTAG.SKMENU_BLACKSMITHING_NOTICE You cannot work this strange and unusual material.
DIALOG d_skillmenu_blacksmithing 0, 2
RETURN 1
ENDIF
SRC.CTAG0.SKMENU_BLACKSMITHING_SUBRES2=<LOCAL.INDEX>
SRC.CTAG.SKMENU_BLACKSMITHING_NOTICE Material: <SERV.ITEMDEF.<DEF.skmenu_blacksmithing_subres2_<dLOCAL.INDEX>>.NAME>
DIALOG d_skillmenu_blacksmithing
ENDIF
ENDIF

[FUNCTION f_skmenu_blacksmithing_categories]
button 15 60 4005 4007 1 0 <buttonId 6 3>
dhtmlgump 50 63 150 18 0 0 <htmlFormat LAST TEN>
WHILE (<DEF0.skmenu_blacksmithing_<dLOCAL.I>_0>)
button 15 <EVAL 80+(<LOCAL.I>*20)> 4005 4007 1 0 <buttonId 0 <LOCAL.I>>
dhtmlgump 50 <EVAL 83+(<LOCAL.I>*20)> 150 18 0 0 <htmlFormat <DEF.skmenu_blacksmithing_<dLOCAL.I>_name>>
LOCAL.I += 1
ENDWHILE

[FUNCTION f_skmenu_blacksmithing_items] //argn1=выбор категории
IF (<ARGN1>==-1)
WHILE (<SRC.CTAG0.SKMENU_BLACKSMITHING_LASTTEN_<dLOCAL.I>>)
LOCAL.INDEX=<LOCAL.I>%10
LOCAL.ITEM=<SRC.CTAG0.SKMENU_BLACKSMITHING_LASTTEN_<dLOCAL.I>>
IF (<LOCAL.INDEX>==0)
IF (<LOCAL.I>>0)
button 370 260 4005 4007 0 <EVAL (<LOCAL.I>/10)+1> 0
dhtmlgump 405 263 100 18 0 0 <htmlFormat NEXT PAGE>
ENDIF
page <EVAL (<LOCAL.I>/10)+1>
IF (<LOCAL.I>>0)
button 220 260 4014 4016 0 <EVAL (<LOCAL.I>/10)> 0
dhtmlgump 255 263 100 18 0 0 <htmlFormat PREV PAGE>
ENDIF
ENDIF
button 220 <EVAL 60+(<LOCAL.INDEX>*20)> 4005 4007 1 0 <buttonId 3 <LOCAL.I>>
dhtmlgump 255 <EVAL 63+(<LOCAL.INDEX>*20)> 220 18 0 0 <htmlFormat <SERV.ITEMDEF.<LOCAL.ITEM>.NAME>>
button 480 <EVAL 60+(<LOCAL.INDEX>*20)> 4011 4012 1 0 <buttonId 4 <LOCAL.I>>
LOCAL.I += 1
ENDWHILE
ELSE
WHILE (<DEF0.skmenu_blacksmithing_<dARGN1>_<dLOCAL.I>>)
LOCAL.INDEX=<LOCAL.I>%10
LOCAL.ITEM=<DEF.skmenu_blacksmithing_<dARGN1>_<dLOCAL.I>>
IF (<LOCAL.INDEX>==0)
IF (<LOCAL.I>>0)
button 370 260 4005 4007 0 <EVAL (<LOCAL.I>/10)+1> 0
dhtmlgump 405 263 100 18 0 0 <htmlFormat NEXT PAGE>
ENDIF
page <EVAL (<LOCAL.I>/10)+1>
IF (<LOCAL.I>>0)
button 220 260 4014 4016 0 <EVAL (<LOCAL.I>/10)> 0
dhtmlgump 255 263 100 18 0 0 <htmlFormat PREV PAGE>
ENDIF
ENDIF
button 220 <EVAL 60+(<LOCAL.INDEX>*20)> 4005 4007 1 0 <buttonId 1 <LOCAL.I>>
dhtmlgump 255 <EVAL 63+(<LOCAL.INDEX>*20)> 220 18 0 0 <htmlFormat <SERV.ITEMDEF.<LOCAL.ITEM>.NAME>>
button 480 <EVAL 60+(<LOCAL.INDEX>*20)> 4011 4012 1 0 <buttonId 2 <LOCAL.I>>
LOCAL.I += 1
ENDFOR
ENDIF

[FUNCTION f_skmenu_blacksmithing_subres]
WHILE (<DEF0.skmenu_blacksmithing_subres_<dLOCAL.I>>)
LOCAL.INDEX=<LOCAL.I>%10
IF (<LOCAL.INDEX>==0)
IF (<LOCAL.I>>0)
button 485 260 4005 4007 0 <EVAL (<LOCAL.I>/10)+1> 0
ENDIF
page <EVAL (<LOCAL.I>/10)+1>
IF (<LOCAL.I>>0)
button 455 260 4014 4016 0 <EVAL (<LOCAL.I>/10)> 0
ENDIF
button 220 260 4005 4007 1 0 <buttonID 6 4>
dhtmlgump 255 263 200 18 0 0 <htmlFormat <QVAL <SRC.CTAG0.SKMENU_BLACKSMITHING_DONOTCOLOR>?USE MATERIAL COLOR:DO NOT COLOR>>
ENDIF
button 220 <EVAL 60+(<LOCAL.INDEX>*20)> 4005 4007 1 0 <buttonID 5 <LOCAL.I>>
dhtmlgump 255 <EVAL 63+(<LOCAL.INDEX>*20)> 250 18 0 0 <htmlFormat <SERV.ITEMDEF.<DEF0.skmenu_blacksmithing_subres_<dLOCAL.I>>.NAME>>
LOCAL.I += 1
ENDWHILE


[FUNCTION f_skmenu_blacksmithing_subres2]
WHILE (<DEF0.skmenu_blacksmithing_subres2_<dLOCAL.I>>)
LOCAL.INDEX=<LOCAL.I>%10
IF (<LOCAL.INDEX>==0)
IF (<LOCAL.I>>0)
button 485 260 4005 4007 0 <EVAL (<LOCAL.I>/10)+1> 0
ENDIF
page <EVAL (<LOCAL.I>/10)+1>
IF (<LOCAL.I>>0)
button 455 260 4014 4016 0 <EVAL (<LOCAL.I>/10)> 0
ENDIF
button 220 260 4005 4007 1 0 <buttonID 6 9>
dhtmlgump 255 263 200 18 0 0 <htmlFormat <QVAL <SRC.CTAG0.SKMENU_BLACKSMITHING_DONOTCOLOR>?USE MATERIAL COLOR:DO NOT COLOR>>
ENDIF
button 220 <EVAL 60+(<LOCAL.INDEX>*20)> 4005 4007 1 0 <buttonID 7 <LOCAL.I>>
dhtmlgump 255 <EVAL 63+(<LOCAL.INDEX>*20)> 250 18 0 0 <htmlFormat <SERV.ITEMDEF.<DEF0.skmenu_blacksmithing_subres2_<dLOCAL.I>>.NAME>>
LOCAL.I += 1
ENDWHILE


[DIALOG d_skillmenu_blacksmithing_details]
40,40
SRC.DIALOGCLOSE d_skillmenu_blacksmithing
SRC.DIALOGCLOSE d_skillmenu_blacksmithing_details
page 0

resizepic 0 0 5054 530 417
gumppictiled 10 10 510 22 2624
gumppictiled 10 37 150 148 2624
gumppictiled 165 37 355 90 2624
gumppictiled 10 190 155 22 2624
gumppictiled 10 217 150 53 2624
gumppictiled 165 132 355 80 2624
gumppictiled 10 275 155 22 2624
gumppictiled 10 302 150 53 2624
gumppictiled 165 217 355 80 2624
gumppictiled 10 360 155 22 2624
gumppictiled 165 302 355 80 2624
gumppictiled 10 387 510 22 2624
checkertrans 10 10 510 399

dhtmlgump 10 12 510 20 0 0 <htmlFormatTitle BLACKSMITHY MENU>
dhtmlgump 170 40 150 20 0 0 <htmlFormatTitle ITEM>
dhtmlgump 10 192 150 22 0 0 <htmlFormatTitle SKILLS>
dhtmlgump 10 277 150 22 0 0 <htmlFormatTitle MATERIALS>
dhtmlgump 10 362 150 22 0 0 <htmlFormatTitle OTHER>

button 15 387 4014 4016 1 0 0
dhtmlgump 50 390 150 18 0 0 <htmlFormat BACK>

button 270 387 4005 4007 1 0 <EVAL <ARGS>+1>
dhtmlgump 305 390 150 18 0 0 <htmlFormat MAKE NOW>
IF (<SRC.CTAG0.SKMENU_BLACKSMITHING_LASTCATEGORY>==-1)
LOCAL.ITEM=<SRC.CTAG.SKMENU_BLACKSMITHING_LASTTEN_<dARGS>>
ELSE
&nbs
d`ArcZeal
Понравилась приписка - подарок нубам.
А- Даже если нуб это скачает, толку эму не будет. Так как тогда придется писать и варсистему под эти таги.
Б- Есть варсистема под этот скрипт. Скачать можно от туда, где ты скачал и это.

Вот только в итоге получится что-то вроде Оси, но на эмуляторе Сферы.
Толку так же нет. Так как проще тогда РанУО скачать и получить всё это готовенькое и рабочее.
-=JoKeR=-
БС меню даже не дописано, что нюб будет делать ? ohmy.gif Пить йад.
yoboys
хмм , что-то знакомое wink.gif
d`ArcZeal
При скачивании релиза 56б прилагается.
KonstantiN
еще есть отедельно но форуме сфере там уже с разобратыми багами даже была версия
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.