Здравствуйте, гость ( Вход | Регистрация )

2 страниц V < 1 2  
Ответить в эту темуОткрыть новую тему
> Pvp Combat System [0.56b], Система возможно совместима с 0.55R 4.0.2.
tayfun
сообщение 10.7.2007, 21:31
Сообщение #21


***

Novice
Сообщений: 62
Регистрация: 2.8.2005
Группа: Пользователи
Наличность: 0
Пользователь №: 4.045



Проблемы:

1. С кулока можно убить кого угодно т.к. дамаг 15

2. Только когда ПвП показывается урон сколько ты отнял

3. какая формулы нужна чтобы был нормальный дамаге, ато при 20 арморе скелеты всё время миссают

4. может для НПС нужен другой сцп ?

Сервер 56б клиент 2.0.3
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Breaker
сообщение 14.7.2007, 5:51
Сообщение #22


******

Expert
Сообщений: 529
Регистрация: 25.12.2004
Группа: Пользователи
Наличность: 0
Из: Москва
Пользователь №: 2.792
Возраст: 27



Цитата(tayfun @ 10.7.2007, 22:31) *

Проблемы:
1. С кулока можно убить кого угодно т.к. дамаг 15
2. Только когда ПвП показывается урон сколько ты отнял
3. какая формулы нужна чтобы был нормальный дамаге, ато при 20 арморе скелеты всё время миссают
4. может для НПС нужен другой сцп ?
Сервер 56б клиент 2.0.3


1)
Код

ON=@Hit
//<[MOD]------------------- Получение базового урона персонажа ------------------------->
IF StrMatch("t_weapon_*","<ARGO.TYPE>") || StrMatch("t_wand","<ARGO.TYPE>")
   ARGN = RAND({<ARGO.DAM>})
ELSE
   ARGN = <EVAL ((<STR>*10)/100) + RAND(2)>  // ТУТ ПОДСТАВЬ ФОРМУЛУ КАКУЮ ТЕБЕ НАДО!
// К ПРИМЕРУ
// ARGN = <EVAL ((<STR>*5)/100) + RAND(2)>  // 5% от силы. то есть при СТР=100 / урон 5 хп
ENDIF


2) А что именно надо?
3) либо увеличить силу скелетам, либо
Код

//<[MOD] -------------------- Уменьшение урона от количества брони --------------------->
   ARGN -= <EVAL (<AC>*45)/100> // УМЕНЬШИТЬ ПРОЦЕНТЫ УРОНА ОТ КОЛ-ВО АРМОРА. щас
// стоит 45% от армора, то есть 45% армора вычитается из урона.


4) само собой, рекомендую на 56 делать это всё через DAM= мобов, удобно делать БОССОВ... ХП довига и не убивает с 1 удара, а то на 55 было мол STR=10000 и бьёт гад под 3К хп =)

ПРИМЕРНО ВОТ ТАК см.ниже.

ВНИМАНИЕ НЕ ДЛЯ НУБОВ!!!

Sphere.ini
Код

EventsPet=e_PvM                              // Events related to all NPCs


и 2 евента на PvM+PvP, e_PvP - вешаем на игроков.
Код

//& #60;============================================================================
=========>
//<------------------------------------------------------------------------------------->
//<- Ultima Online: The Odyssey                                                        ->
//<- Sphere Version: 56x (56b-Nightly)                                                 ->
//<- Script Author: Breaker (Cache)                                                    ->
//<-                                                                                   ->
//<- Last edit date: 22.12.2006                                                        ->
//<------------------------------------------------------------------------------------->
//& #60;============================================================================
=========>

[EVENTS e_PvM]
ON=@Death
//<[FIX] -------------- Исправление смерти моба для триггера @Kill --------------------->
FORCHARMEMORYTYPE MEMORY_FIGHT
  COLOR |= 00010
ENDFOR


//<------------------------------------------------------------------------------------->
//<- Magic Combat ---------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
ON=@SpellCast
//<[MOD] ------------------ Вычисление модификации скорости магии ---------------------->
//SRC.SYSMESSAGE @73, Cast speed: <FVAL <ARGN3>> sec.
IF (<ARGN> >= 65)
   ARGN=<EVAL RAND(63)+1>
ENDIF
SRC.SAY Cast: <SERV.SPELL.<ARGN>.NAME>


ON=@SpellEffect
IF (<FLAGS>&statf_invul)
   EFFECT 3,037b9,10,20
   RETURN 1
//<[FIX] --------- Не применять формулы на спеллы которых нет в Spellbook-е ------------>
ELIF (<ARGN> >= 65)
   SERV.LOG @WARNING: <NAME> [<ACCOUNT>] using not aviable spell <ARGN>
//<[FIX] --------------------------- Применение Cure спелла ---------------------------->
ELIF (<ARGN>==11)
   TRY FINDID.i_memory_poison.REMOVE
   EFFECT 3,i_fx_heal_effect,15,25
   RETURN 1
//<[FIX] -------------------------- Применение Dispel спелла --------------------------->
ELIF (<ARGN>==41) || (<ARGN>==54)
   TRY FINDID.i_memory_poison.REMOVE
   TRY FINDID.i_memory_incognito.REMOVE
   TRY FINDID.i_memory_spell_stats.REMOVE
//<[MOD] ------------ Система отражения магии от спелла (Magic Reflection) ------------->
ELIF (<FINDID.i_rune_magic_reflection.UID>) && (<SERV.SPELL.<ARGN>.FLAGS>&spellflag_harm)

   EFFECT=3,i_fx_bless_EFFECT,15,15
   FINDID.i_rune_magic_reflection.REMOVE
   FLAGS=<FLAGS>&~statf_reflection

   IF (<UID>!=<SRC.UID>)
      SRC.SPELLEFFECT <ARGN>, <MAGERY>

      IF (0)
      ELIF (<ARGN>==5)    // s_magic_arrow
         SRC.EFFECT 0,036e4,4,16,6
      ELIF (<ARGN>==18)   // s_fireball
         SRC.EFFECT 0,036d4,4,16,6
      ELIF (<ARGN>==30)   // s_lightning
         EFFECT 1,i_fx_curse,4,16,6
      ELIF (<ARGN>==49)   // s_chain_lightning
         EFFECT 1,i_fx_curse,4,16,6
      ELIF (<ARGN>==51)   // s_flamestrike
         SRC.EFFECT 3,03709,4,16,6
      ENDIF

   ENDIF
   RETURN 1
ELSE
//<[MOD] ----------------- Восстановление/сохранение значений спелла ------------------->
   IF (<VAR0.Spell_<ARGN>_Effect>)
      SERV.SPELL.<ARGN>.EFFECT = "<VAR0.Spell_<ARGN>_Effect>"
   ELSE
      VAR0.Spell_<ARGN>_Effect = "<SERV.SPELL.<ARGN>.EFFECT>"
   ENDIF

   IF (<VAR0.Spell_<ARGN>_Duration>)
      SERV.SPELL.<ARGN>.DURATION = "<VAR0.Spell_<ARGN>_Duration>"
   ELSE
      VAR0.Spell_<ARGN>_Duration = "<SERV.SPELL.<ARGN>.DURATION>"
   ENDIF

   IF (<VAR0.Spell_<ARGN>_ManaUse>)
      SERV.SPELL.<ARGN>.MANAUSE = "<VAR0.Spell_<ARGN>_ManaUse>"
   ELSE
      VAR0.Spell_<ARGN>_ManaUse = "<SERV.SPELL.<ARGN>.MANAUSE>"
   ENDIF

//<[MOD] -------------------- Вычисление модификации сил магии ------------------------->
   LOCAL.SpellDiff = "<QVAL (<SRC.INT> < 100) ?-<EVAL (100-<SRC.INT>)>:<EVAL (<SRC.INT>-100)> >"

//<[FIX] ------------------------- Применение спеллов на статы ------------------------->
   IF (<ARGN>==1)||(<ARGN>==3)||(<ARGN>==8)||(<ARGN>==9)||(<ARGN>==10)||(<ARGN>==16)||(<ARGN>==17)||(<ARGN>==27)

      // 1 - Clumsy      - STR= 0  DEX=-10 INT= 0
      // 3 - Feeblemind  - STR= 0  DEX= 0  INT=-10
      // 8 - Weaken      - STR=-10 DEX= 0  INT= 0
      // -----------------------------------------
      // 9 - Agility     - STR= 0  DEX=+10 INT= 0
      //10 - Cunning     - STR= 0  DEX= 0  INT=+10
      //16 - Strength    - STR=+10 DEX= 0  INT= 0
      // -----------------------------------------
      //17 - Bless       - STR=+5  DEX=+5  INT=+5
      //27 - Curse       - STR=-5  DEX=-5  INT=-5
      SOUND <SERV.SPELL.<ARGN>.SOUND>
      EFFECT 3,<SERV.SPELL.<ARGN>.EFFECT_ID>,15,15

      SERV.NEWITEM=i_memory_spell_stats
      NEW.DispID=<SERV.SPELL.<ARGN>.RUNE_ITEM>
      NEW.NAME=<SERV.SPELL.<ARGN>.NAME>
      NEW.LINK=<SRC.UID>
  
      IF (0)
      //<--------------------------------- Increased spells ---------------------------------->
      ELIF (<ARGN>== 1) // Clumsy      - STR= 0  DEX=-10 INT= 0
         NEW.MOREM=0       // Mode: 0=- 1=+
         NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT>  // DEX
      ELIF (<ARGN>== 3)
         NEW.MOREM=0       // Mode: 0=- 1=+
         NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT>  // INT
      ELIF (<ARGN>== 8)
         NEW.MOREM=0       // Mode: 0=- 1=+
         NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT>  // STR
   //<--------------------------------- Decreased spells ---------------------------------->
      ELIF (<ARGN>== 9)
         NEW.MOREM=1       // Mode: 0=- 1=+
         NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT>  // DEX
      ELIF (<ARGN>==10)
         NEW.MOREM=1       // Mode: 0=- 1=+
         NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT>  // INT
      ELIF (<ARGN>==16)
         NEW.MOREM=1       // Mode: 0=- 1=+
         NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT>  // STR
   //<------------------------------- Increased mass spell -------------------------------->
      ELIF (<ARGN>==17)
         NEW.MOREM=1       // Mode: 0=- 1=+
         NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT>  // STR
         NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT>  // DEX
         NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT>  // INT
   //<------------------------------- Decreased mass spell -------------------------------->
      ELIF (<ARGN>==27)
         NEW.MOREM=0       // Mode: 0=- 1=+
         NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT>  // STR
         NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT>  // DEX
         NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT>  // INT
      ENDIF  
      EQUIP=<NEW.UID>
      NEW.TIMER=<SERV.SPELL.<ARGN>.DURATION>
      RETURN 1
   ENDIF

//<[MOD] -------------------- Увеличение/уменьшение сил магии -------------------------->
   IF (<SERV.SPELL.<ARGN>.MANAUSE>) // Если есть значение затрат маны
      SERV.SPELL.<ARGN>.MANAUSE -= <EVAL (<SERV.SPELL.<ARGN>.MANAUSE>*<SRC.GetCombatEffect ManaRequirement>)/100>
      IF (<SERV.SPELL.<ARGN>.MANAUSE> < 0)
         SERV.SPELL.<ARGN>.MANAUSE = 0
      ENDIF
   ENDIF

   IF (<SERV.SPELL.<ARGN>.DURATION>) // Если у спелла есть значение продолжительности
      SERV.SPELL.<ARGN>.DURATION += <EVAL (<SERV.SPELL.<ARGN>.DURATION>*<LOCAL.SpellDiff>)/100>
      IF (<SERV.SPELL.<ARGN>.DURATION> < 1)
         SERV.SPELL.<ARGN>.DURATION = 0
      ENDIF
   ENDIF

   IF (<SERV.SPELL.<ARGN>.EFFECT>) // Если у спелла есть значение урона
      SERV.SPELL.<ARGN>.EFFECT += <EVAL (<SERV.SPELL.<ARGN>.EFFECT>*<LOCAL.SpellDiff>)/100>
      SERV.SPELL.<ARGN>.EFFECT += <EVAL (<SERV.SPELL.<ARGN>.EFFECT>*<EVAL <EvaluatingIntel>/15>)/100>
      IF (<SERV.SPELL.<ARGN>.EFFECT> < 1)
         SERV.SPELL.<ARGN>.EFFECT = 0
      ENDIF
   ENDIF
ENDIF


//<------------------------------------------------------------------------------------->
//<- Melee Combat ---------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
ON=@HitTry
//<----------------------------- Если аттакуемый Game Master --------------------------->
IF (<SRC.IsGM>)
//<------------------------ Если на каком нить игроке есть invul ----------------------->
ELIF (<FLAGS>&statf_invul) || (<SRC.FLAGS>&statf_invul)
//<---------------------------- Если аттакуемый в No PVP зоне -------------------------->
ELIF (<REGION.FLAGS>®ion_flag_safe) || (<REGION.FLAGS>®ion_flag_no_pvp)
//<----------------------------- Если аттакуещий в Safe зоне --------------------------->
ELIF (<SRC.REGION.FLAGS>®ion_flag_safe) || (<SRC.REGION.FLAGS>®ion_flag_no_pvp)
ELSE
   ARGN = 20 // Скорость рукопашного удара (По умолчанию)
   RETURN 0
ENDIF
RETURN 1


ON=@HitMiss
ACTDIFF=0


ON=@Hit
ARGN = <QVAL StrMatch("t_weapon_*","<ARGO.TYPE>")?RAND({<ARGO.DAM>}):RAND({<DAM>})>


ON=@GetHit
//<[MOD] ------------------- Получаемый урон является магическим ----------------------->
IF (<ARGN2>&dam_magic)
   ARGN -= <EVAL (<ARGN>*<EVAL <MagicResistance>/25>) / 100>
//<[MOD] ------------------- Получаемый урон является физическим ----------------------->
ELSE
   ARGN -= <EVAL (<AC>*45)/100>
ENDIF

//<[MOD] ---------------------- Выполнение результатов урона --------------------------->
IF (<ARGN> > 0)
//<[MOD] --------------- Прерывание каста с книшки, при получении удара ---------------->
   IF (<SRC.UID>!=<UID>) && (<ACTION>==Skill_Magery)
      ACTION=-1
   ENDIF

//<[FIX] ---------------- Выводим монстра из парализа, если он в нём ------------------->
   TRY FINDID.i_rune_paralyze.REMOVE
   TRY FINDID.i_rune_paralyze_field.REMOVE

//<[MOD] ------------------- Вывод информации о получении урона ------------------------>
   IF (<ARGN2>&dam_magic)
      SRC.SYSMESSAGE @0c2, You damage <NAME> on <ARGN> hits.
   ELSE
      SRC.SYSMESSAGE @04a, You damage <NAME> on <ARGN> hits.
   ENDIF
ELSE
   SRC.SYSMESSAGE <NAME> is parry blow.
ENDIF
//<[MOD] ---------- Установка GOD типа урона, так как сделали все вычисления ----------->
ARGN2=01 // Чтоб урон прошёл на столько, чему равно ARGN


[EOF]

Код
//& #60;============================================================================
=========>
//<------------------------------------------------------------------------------------->
//<- Ultima Online: The Odyssey                                                        ->
//<- Sphere Version: 56x (56b-Nightly)                                                 ->
//<- Script Author: Breaker (Cache)                                                    ->
//<-                                                                                   ->
//<- Last edit date: 13.12.2006                                                        ->
//<------------------------------------------------------------------------------------->
//& #60;============================================================================
=========>

[EVENTS e_PvP]
//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//<- Magic Combat ---------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->

//<------------------------------------------------------------------------------------->
//< TRIGGER: SpellCast                                                                  >
//<------------------------------------------------------------------------------------->
ON=@SpellCast
IF (<SRC.IsGM>) //(<SRC.ACCOUNT.PLEVEL> > 1)
   ARGN3=0.1
ELSE

//<[MOD] ------------------------ Взятие параметров спелла ----------------------------->
   ARGN3 = <DEF.Spell_<ARGN>_CastTime>

//<[MOD] ------------- Вычисление модификации скорости магии со скроллов --------------->
   IF StrMatch("t_scroll","<ARGO.TYPE>")
      ARGN3 = <ARGN3> - <FVAL (<ARGN>*45)/100>
      SRC.TAG.IsScroll="1"
   ENDIF

//<[MOD] ---------------- Увеличение скорости магии бонусом QuickCast ------------------>
   ARGN3 -= <EVAL (<ARGN3>*<SRC.GetCombatEffect QuickCast>)/100>

ENDIF
//IF (<SRC.IsGM>)
//   SRC.SYSMESSAGE @73, Cast speed: <FVAL <ARGN3>> sec.
//ENDIF


//<------------------------------------------------------------------------------------->
//< TRIGGER: SpellEffect                                                                >
//<------------------------------------------------------------------------------------->
ON=@SpellEffect
IF (<FLAGS>&statf_invul)
   EFFECT 3,037b9,10,20
   RETURN 1
//<[FIX] --------- Не применять формулы на спеллы которых нет в Spellbook-е ------------>
ELIF (<ARGN> >= 65)
   SERV.LOG @WARNING: <NAME> [<ACCOUNT>] using not aviable spell <ARGN>
//<[FIX] --------------------------- Применение Cure спелла ---------------------------->
ELIF (<ARGN>==11)
   TRY FINDID.i_memory_poison.REMOVE
   EFFECT 3,i_fx_heal_effect,15,25
   RETURN 1
//<[FIX] -------------------------- Применение Dispel спелла --------------------------->
ELIF (<ARGN>==41) || (<ARGN>==54)
   TRY FINDID.i_memory_poison.REMOVE
   TRY FINDID.i_memory_incognito.REMOVE
   TRY FINDID.i_memory_spell_stats.REMOVE
//<[MOD] ------------ Система отражения магии от спелла (Magic Reflection) ------------->
ELIF (<FINDID.i_rune_magic_reflection.UID>) && (<SERV.SPELL.<ARGN>.FLAGS>&spellflag_harm)

   EFFECT=3,i_fx_bless_EFFECT,15,15
   FINDID.i_rune_magic_reflection.REMOVE
   FLAGS=<FLAGS>&~statf_reflection

   IF (<UID>!=<SRC.UID>)
      SRC.SPELLEFFECT <ARGN>, <MAGERY>

      IF (0)
      ELIF (<ARGN>==5)    // s_magic_arrow
         SRC.EFFECT 0,036e4,4,16,6
      ELIF (<ARGN>==18)   // s_fireball
         SRC.EFFECT 0,036d4,4,16,6
      ELIF (<ARGN>==30)   // s_lightning
         EFFECT 1,i_fx_curse,4,16,6
      ELIF (<ARGN>==49)   // s_chain_lightning
         EFFECT 1,i_fx_curse,4,16,6
      ELIF (<ARGN>==51)   // s_flamestrike
         SRC.EFFECT 3,03709,4,16,6
      ENDIF

   ENDIF
   RETURN 1

//<[MOD] ---- Применение потери силы замораживающей магии от бонуса ResistCold --------->
ELIF (<SRC.FLAGS>&statf_freeze) && ((<ARGN>==38) || (<ARGN>==47))
   RETURN 1
ELSE
//<[MOD] ------------------------ Взятие параметров спелла ----------------------------->
   LOCAL.SpellEffect   = <DEF.Spell_<ARGN>_Effect>
   LOCAL.SpellManaUse  = <DEF.Spell_<ARGN>_ManaUse>
   LOCAL.SpellDuration = <DEF.Spell_<ARGN>_Duration>

//<[MOD] -------------------- Вычисление модификации сил магии ------------------------->
   LOCAL.SpellDiff = "<QVAL (<SRC.INT> < 100) ?-<EVAL (100-<SRC.INT>)>:<EVAL (<SRC.INT>-100)> >"

//<------------------------------------------------------------------------------------->
//<[MOD] -------------------- Увеличение/уменьшение сил магии -------------------------->

   IF (<LOCAL.SpellEffect>) // Если у спелла есть значение урона
      LOCAL.SpellEffect += <EVAL (<dLOCAL.SpellEffect>*<dLOCAL.SpellDiff>)/100>
      IF (<SERV.SPELL.<ARGN>.FLAGS>&spellflag_harm) // Если спел является harm
         LOCAL.SpellEffect += <EVAL (<dLOCAL.SpellEffect>*<EVAL <EvaluatingIntel>/15>)/100>
      ENDIF
   ENDIF

   IF (<dLOCAL.SpellManaUse>) // Если есть значение затрат маны
   //<[MOD] ------------ Уменьшение затрат маны бонусом LowerManaCost --------------------->
      LOCAL.SpellManaUse -= <EVAL (<dLOCAL.SpellManaUse>*<SRC.GetCombatEffect LowerManaCost>)/100>
   ENDIF

   IF (<dLOCAL.SpellDuration>) // Если у спелла есть значение продолжительности
      LOCAL.SpellDuration += <EVAL (<LOCAL.SpellDuration>*<LOCAL.SpellDiff>)/100>
  
   //<[MOD] ---- Применение потери силы замораживающей магии от бонуса ResistCold --------->
      IF (<ARGN>==38) || (<ARGN>==47)
         LOCAL.SpellDuration -= <EVAL (<LOCAL.SpellDuration>*<GetCombatEffect ResistCold>)/100>
      ENDIF
   ENDIF

//<[MOD] --------------------- Применение вычислений силы магии ------------------------>
   SERV.SPELL.<ARGN>.EFFECT   = "<QVAL (<dLOCAL.SpellEffect>)?<dLOCAL.SpellEffect>:0>"
   SERV.SPELL.<ARGN>.MANAUSE  = "<QVAL (<dLOCAL.SpellManaUse>)?<dLOCAL.SpellManaUse>:0>"
   SERV.SPELL.<ARGN>.DURATION = "<QVAL (<dLOCAL.SpellDuration>)?<dLOCAL.SpellDuration>:0>"

//<[MOD] ------------------------------------------------------------------------------->
   IF (<SRC.IsGM>)
      SRC.SYSMESSAGE @73, Spell Diff: <EVAL <LOCAL.SpellDiff>>%
      SRC.SYSMESSAGE @73, Cast Effect: <SERV.SPELL.<ARGN>.EFFECT> pt.
      SRC.SYSMESSAGE @73, Cast Duraction: <FVAL <SERV.SPELL.<ARGN>.DURATION>> secs
      SRC.SYSMESSAGE @73, Cast Mana Use: <SERV.SPELL.<ARGN>.MANAUSE> pt.
   ENDIF

//<[FIX] ------------------------ Применение спеллов на статы -------------------------->
   IF (<ARGN>==1)||(<ARGN>==3)||(<ARGN>==8)||(<ARGN>==9)||(<ARGN>==10)||(<ARGN>==16)||(<ARGN>==17)||(<ARGN>==27)

      // 1 - Clumsy      - STR= 0  DEX=-10 INT= 0
      // 3 - Feeblemind  - STR= 0  DEX= 0  INT=-10
      // 8 - Weaken      - STR=-10 DEX= 0  INT= 0
      // -----------------------------------------
      // 9 - Agility     - STR= 0  DEX=+10 INT= 0
      //10 - Cunning     - STR= 0  DEX= 0  INT=+10
      //16 - Strength    - STR=+10 DEX= 0  INT= 0
      // -----------------------------------------
      //17 - Bless       - STR=+5  DEX=+5  INT=+5
      //27 - Curse       - STR=-5  DEX=-5  INT=-5
      SOUND <SERV.SPELL.<ARGN>.SOUND>
      EFFECT 3,<SERV.SPELL.<ARGN>.EFFECT_ID>,15,15

      SERV.NEWITEM=i_memory_spell_stats
      NEW.DispID=<SERV.SPELL.<ARGN>.RUNE_ITEM>
      NEW.NAME=<SERV.SPELL.<ARGN>.NAME>
      NEW.LINK=<SRC.UID>
  
      IF (0)
      //<--------------------------------- Increased spells ---------------------------------->
      ELIF (<ARGN>== 1) // Clumsy      - STR= 0  DEX=-10 INT= 0
         NEW.MOREM=0       // Mode: 0=- 1=+
         NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT>  // DEX
      ELIF (<ARGN>== 3)
         NEW.MOREM=0       // Mode: 0=- 1=+
         NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT>  // INT
      ELIF (<ARGN>== 8)
         NEW.MOREM=0       // Mode: 0=- 1=+
         NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT>  // STR
   //<--------------------------------- Decreased spells ---------------------------------->
      ELIF (<ARGN>== 9)
         NEW.MOREM=1       // Mode: 0=- 1=+
         NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT>  // DEX
      ELIF (<ARGN>==10)
         NEW.MOREM=1       // Mode: 0=- 1=+
         NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT>  // INT
      ELIF (<ARGN>==16)
         NEW.MOREM=1       // Mode: 0=- 1=+
         NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT>  // STR
   //<------------------------------- Increased mass spell -------------------------------->
      ELIF (<ARGN>==17)
         NEW.MOREM=1       // Mode: 0=- 1=+
         NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT>  // STR
         NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT>  // DEX
         NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT>  // INT
   //<------------------------------- Decreased mass spell -------------------------------->
      ELIF (<ARGN>==27)
         NEW.MOREM=0       // Mode: 0=- 1=+
         NEW.MOREX=<SERV.SPELL.<ARGN>.EFFECT>  // STR
         NEW.MOREY=<SERV.SPELL.<ARGN>.EFFECT>  // DEX
         NEW.MOREZ=<SERV.SPELL.<ARGN>.EFFECT>  // INT
      ENDIF  
      EQUIP=<NEW.UID>
      NEW.TIMER=<SERV.SPELL.<ARGN>.DURATION>
      RETURN 1
   ENDIF

//<[MOD] ------------------------------------------------------------------------------->
   IF !(<SERV.SPELL.<ARGN>.DURATION>) && !(<SERV.SPELL.<ARGN>.EFFECT>) && (<SERV.SPELL.<ARGN>.FLAGS>&spellflag_harm)
      EFFECT 3,<SERV.SPELL.<ARGN>.EFFECT_ID>,15,15
      RETURN 1
   ENDIF
ENDIF

//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//<- Melee Combat ---------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->

//<------------------------------------------------------------------------------------->
//< TRIGGER: HitTry
//<------------------------------------------------------------------------------------->
ON=@HitTry
//<----------------------------- Если аттакуемый Game Master --------------------------->
IF (<SRC.IsGM>)
   SYSMESSAGE You can`t attack a Game Master.
//<------------------------ Если на каком нить игроке есть invul ----------------------->
ELIF (<FLAGS>&statf_invul) || (<SRC.FLAGS>&statf_invul)
   SYSMESSAGE You can't attack <SRC.NAME> in your state.
//<---------------------------- Если аттакуемый в No PVP зоне -------------------------->
ELIF (<REGION.FLAGS>&region_flag_safe) || (<REGION.FLAGS>&region_flag_no_pvp)
   SYSMESSAGE You can't attack <SRC.NAME> here.
//<----------------------------- Если аттакуещий в Safe зоне --------------------------->
ELIF (<SRC.REGION.FLAGS>&region_flag_safe) || (<SRC.REGION.FLAGS>&region_flag_no_pvp)
   SYSMESSAGE You can't attack <SRC.NAME> here.
ELIF (<STAM> < 1)
   STAM=0
ELSE
   ARGN = 20 // Скорость рукопашного удара (По умолчанию)
   IF StrMatch("t_weapon_*","<ARGO.TYPE>")
      IF (<EVAL 0<DEF.<UID.<ARGO.UID>.DispID>_speed>>)     // Скорость оружий по его дополнительному типу
         ARGN = <FVAL <DEF.<UID.<ARGO.UID>.DispID>_speed>>
      ELIF (<EVAL 0<DEF.<UID.<ARGO.UID>.BaseID>_speed>>)   // Скорость оружий по его главному типу
         ARGN = <FVAL <DEF.<UID.<ARGO.UID>.BaseID>_speed>>
      ELSE  // Если предмет не прописан в базе оружий то сообщяем игроку
         SYSMESSAGEUA 32 0 0 0` If you have seen this message, speed of your
         SYSMESSAGEUA 32 0 0 0` weapon is not registered, call Game Master!
         SERV.LOG [<NAME>] use weapon <ARGO.NAME>[<ARGO.UID>], is not registered.
         RETURN 1
      ENDIF
   ENDIF

//<[MOD] ---------- Каждые 10 ловкости увеличиывают/уменьшают скорость на 0.1 ---------->
   ARGN = <ARGN> + <EVAL (100-<DEX>)/10>
//<[MOD] --------------- Применение эффекта боя на скорость с предметов ---------------->
   ARGN = <ARGN> - <FVAL (<ARGN>*<GetCombatEffect DamageSpeed>)/100>
//<[MOD] ----------------- Потеря стамины в зависимости от типа оружия ----------------->
   STAM = <STAM> - <ARGO.LAYER>

   IF (<FVAL <ARGN>> < 0.1)
      ARGN=0.1
   ENDIF

   IF (<SRC.IsGM>)
      SYSMESSAGE @0c2, Weapon speed: <FVAL <ARGN>>
   ENDIF
   RETURN 0
ENDIF
RETURN 1


//<------------------------------------------------------------------------------------->
//< TRIGGER: HitMiss
//<------------------------------------------------------------------------------------->
ON=@HitMiss
SRC.SYSMESSAGE <NAME> miss you.
SYSMESSAGE You miss <SRC.NAME>
RETURN 1

//<------------------------------------------------------------------------------------->
//< TRIGGER: Hit  
//<------------------------------------------------------------------------------------->
ON=@Hit
//<[MOD]------------------- Получение базового урона персонажа ------------------------->
IF StrMatch("t_weapon_*","<ARGO.TYPE>") || StrMatch("t_wand","<ARGO.TYPE>")
   ARGN = RAND({<ARGO.DAM>})
ELSE
   ARGN = <EVAL ((<STR>*10)/100) + RAND(2)>
ENDIF

//<[MOD] ----------------- Уменьшение урона от потери прочности ------------------------>
ARGN = (<ARGN>*<ARGO.MORE1L>)/<ARGO.MORE1H>

//<[MOD] ------------------ Увеличение урона от силы персонажа ------------------------->
//ARGN += <EVAL (<STR>-100)/5>
ARGN += <EVAL (<STR>+10)/10> // Default of Client Formula

//<[MOD] --------------- Увеличение урона от бонуса увеличения урона ------------------->
ARGN += <EVAL (<ARGN>*<GetCombatEffect DamageIncrease>)/100>

//<[MOD] ------------------- Потеря урона луков от дистанции --------------------------->
IF StrMatch("t_weapon_bow","<ARGO.TYPE>") || StrMatch("t_weapon_xbow","<ARGO.TYPE>")
   IF (<ARGO.ID>==013b1) // Если это bow (лук)
      ARGN = <ARGN> - <EVAL (<DISTANCE>*135)/100>
   ELIF (<ARGO.ID>==0f4f) // Если это crossbow (арбалет)
      ARGN = <ARGN> - <EVAL (<DISTANCE>*120)/100>
   ELIF (<ARGO.ID>==013fc) // Если это heavy crossbow (тяжолый арбалет)
      ARGN = <ARGN> - <EVAL (<DISTANCE>*105)/100>
   ENDIF
ELSE
//<[MOD] -------- Дополнительный удар со спины (backstab) от оружия ближнего боя ------->
   IF (<ARGN> > 0) && (<SRC.DIR>==<DIR>) && (RAND(3)==0)
      TAG.Backstab=<EVAL (<ARGN>*75)/100>
   ENDIF
//<[MOD] --------------- Критический удар оружием от оружия ближнего боя --------------->
   IF (<ARGN> > 0) && (RAND(50)==0)
      TAG.Critical=<EVAL (<ARGN>*135)/100>
   ENDIF
ENDIF

//<[FIX] ----------------- Поломка одетых предметов оружия при ударе ------------------->
IF (<ARGN> > 0)
   DamageEquipedWeapon
ENDIF


//<------------------------------------------------------------------------------------->
//<------------------------------------------------------------------------------------->
//< TRIGGER: GetHit                                                                     >
//<------------------------------------------------------------------------------------->
ON=@GetHit
//<[MOD] ------------------- Получаемый урон является магическим ----------------------->
IF (<ARGN2>&dam_magic)
//<[MOD] ----------------- Применение потери силы магии от резиста --------------------->
   ARGN -= <EVAL (<ARGN>*<EVAL <ResistSpells>/25>) / 100>

//<[MOD] ------- Применение потери силы огненной магии от бонуса ResistFire ------------>
   IF (<ARGN2>&dam_fire)
      ARGN -= <EVAL (<ARGN>*<GetCombatEffect ResistFire>)/100>
   ENDIF
//<[MOD] ---- Применение потери силы энергетической магии от бонуса ResistEnergy ------->
   IF (<ARGN2>&dam_lightning)
      ARGN -= <EVAL (<ARGN>*<GetCombatEffect ResistEnergy>)/100>
   ENDIF
//<[MOD] ----- Применение потери силы отравляющей магии от бонуса ResistPoison --------->
   IF (<ARGN2>&dam_poison)
      ARGN -= <EVAL (<ARGN>*<GetCombatEffect ResistPoison>)/100>
   ENDIF

//<[MOD] ------------------- Получаемый урон является физическим ----------------------->
ELSE
//<[MOD] -------- Дополнительный удар со спины (backstab) от оружия ближнего боя ------->
   IF (<SRC.TAG0.Backstab>)
      SRC.SAY @33, Backstab!
      ARGN += <EVAL <SRC.TAG.Backstab>>
      SRC.TAG.Backstab =
   ENDIF
//<[MOD] --------------- Критический удар оружием от оружия ближнего боя --------------->
   IF (<SRC.TAG0.Critical>)
      SRC.SAY @33, Critical!
      ARGN += <EVAL <SRC.TAG.Critical>>
      SRC.TAG.Critical =
   ENDIF

//<[MOD] -------------------- Уменьшение урона от количества брони --------------------->
   ARGN -= <EVAL (<AC>*45)/100>

//<[MOD] -------------------- Сопративляемость к физическому урону --------------------->
   ARGN -= <EVAL (<ARGN>*<GetCombatEffect ResistPhysical>)/100>

//<[MOD] ---------------- ворот от удара бонусом "увернуться от удара" ----------------->
   IF (<ARGN> > 0) && (RAND(100) < <EVAL <GetCombatEffect DefenseChance>>)
      //<[FIX] ----------- Выводим игрока из парализа, если он в нём ------------------->
      TRY FINDID.i_rune_paralyze.REMOVE
      TRY FINDID.i_rune_paralyze_field.REMOVE

      SYSMESSAGE @73, You perform a masterful defense!
      SRC.SYSMESSAGE @33, <NAME> perform a masterful defense.
      ARGN=0
      RETURN 1
   ENDIF

//<[FIX] ------------- Поломка одетых предметов брони при получении урона -------------->
   IF (<ARGN> > 0)
      DamageEquipedArmor
   ENDIF
ENDIF

//<[MOD] ---------------------- Выполнение результатов урона --------------------------->
IF (<ARGN> > 0)
//<[MOD] --------------- Прерывание каста с книшки, при получении удара ---------------->
   IF (<SRC.UID>!=<UID>) && !(<TAG0.IsScroll>) && (<ACTION>==Skill_Magery)
      ACTION=-1
   ENDIF

//<[FIX] ---------------- Выводим игрока из парализа, если он в нём -------------------->
   TRY FINDID.i_rune_paralyze.REMOVE
   TRY FINDID.i_rune_paralyze_field.REMOVE

//<[MOD] ------------------- Вывод информации о получении урона ------------------------>
   IF (<UID>==<SRC.UID>)
      IF (<SRC.DETAIL>)
         SRC.SYSMESSAGE @<QVAL (<ARGN2>&dam_magic)?0c2:04a>, You damaged on <ARGN> hits.
      ENDIF
   ELSE
      IF (<SRC.DETAIL>)
         SRC.SYSMESSAGE @<QVAL (<ARGN2>&dam_magic)?0c2:04a>, You damage <NAME> on <ARGN> hits.
      ENDIF
      IF (<DETAIL>)
         SYSMESSAGE @026, <SRC.NAME> damage you on <ARGN> hits.
      ENDIF
   ENDIF
ELSE
   SYSMESSAGE You parry is blow.
   SRC.SYSMESSAGE <NAME> is parry blow.
   RETURN 1
ENDIF
//<[MOD] ---------- Установка GOD типа урона, так как сделали все вычисления ----------->
ARGN2=01 // Чтоб урон прошёл на столько, чему равно ARGN


[EOF]


+ SphereDefs3.scp
[code]
//& #60;============================================================================
=========>
//<------------------------------------------------------------------------------------->
//<- Ultima Online: The Odyssey ->
//<- Sphere Version: 56x (56b-Nightly) ->
//<- Script Author: Breaker (Cache) ->
//<- ->
//<- Last edit date: 26.04.2007 ->
//<------------------------------------------------------------------------------------->
//& #60;============================================================================
=========>

[DEFNAME SPELLS_DEFS]
// Clumsy
Spell_1_CastTime 1.5
Spell_1_Effect 10
Spell_1_Duration 120.0
Spell_1_ManaUse 4
// Create Food
Spell_2_CastTime 1.5
Spell_2_Effect 0
Spell_2_Duration 0.0
Spell_2_ManaUse 4
// Feeblemind
Spell_3_CastTime 1.5
Spell_3_Effect 10
Spell_3_Duration 120.0
Spell_3_ManaUse 4
// Heal
Spell_4_CastTime 1.7
Spell_4_Effect 10
Spell_4_Duration 0.0
Spell_4_ManaUse 5
// Magic Arrow
Spell_5_CastTime 1.5
Spell_5_Effect 3
Spell_5_Duration 0.0
Spell_5_ManaUse 4
// Night Sight
Spell_6_CastTime 1.5
Spell_6_Effect 0
Spell_6_Duration 600.0
Spell_6_ManaUse 4
// Reactive Armor
Spell_7_CastTime 1.7
Spell_7_Effect 50
Spell_7_Duration 120.0
Spell_7_ManaUse 4
// Weaken
Spell_8_CastTime 1.7
Spell_8_Effect 10
Spell_8_Duration 120.0
Spell_8_ManaUse 4
// Agility
Spell_9_CastTime 2.0
Spell_9_Effect 10
Spell_9_Duration 120.0
Spell_9_ManaUse 5
// Cunning
Spell_10_CastTime 2.0
Spell_10_Effect 10
Spell_10_Duration 120.0
Spell_10_ManaUse 5
// Cure
Spell_11_CastTime 2.0
Spell_11_Effect 0
Spell_11_Duration 0.0
Spell_11_ManaUse 5
// Harm
Spell_12_CastTime 2.0
Spell_12_Effect 6
Spell_12_Duration 0.0
Spell_12_ManaUse 7
// Magic Trap
Spell_13_CastTime 2.0
Spell_13_Effect 0
Spell_13_Duration 0
Spell_13_ManaUse 6
// Magic Untrap
Spell_14_CastTime 2.0
Spell_14_Effect 0
Spell_14_Duration 0.0
Spell_14_ManaUse 8
// Protection
Spell_15_CastTime 2.0
Spell_15_Effect 10
Spell_15_Duration 120.0
Spell_15_ManaUse 6
// Strength
Spell_16_CastTime 2.0
Spell_16_Effect 10
Spell_16_Duration 120.0
Spell_16_ManaUse 6
// Bless
Spell_17_CastTime 2.5
Spell_17_Effect 5
Spell_17_Duration 120.0
Spell_17_ManaUse 9
// Fireball
Spell_18_CastTime 2.5
Spell_18_Effect 15
Spell_18_Duration 0.0
Spell_18_ManaUse 9
// Magic Lock
Spell_19_CastTime 2.5
Spell_19_Effect 0
Spell_19_Duration 0.0
Spell_19_ManaUse 9
// Poison
Spell_20_CastTime 2.5
Spell_20_Effect 10
Spell_20_Duration 0.0
Spell_20_ManaUse 9
// Telekinesis
Spell_21_CastTime 2.5
Spell_21_Effect  


--------------------
Все мои скрипты и сервера: ftp://sphere@magery.ru
FTP работает не всегда, только когда мой комп включен. По вечерам часто!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
NeoBahamut
сообщение 27.7.2007, 0:59
Сообщение #23


*****

Journeyman
Сообщений: 354
Регистрация: 22.5.2004
Группа: Пользователи
Наличность: 0
Из: Latvia
Пользователь №: 1.791
Возраст: 19



меня интересует где в Backstab идёт проверка что человек стоит за спиной?

У меня на 0.56б он пишет что <DIR> это ошибка.


--------------------
www.animeshiro.lv
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DihlofozzZ
сообщение 27.7.2007, 1:15
Сообщение #24


***********

Администратор форума
Сообщений: 5.602
Регистрация: 8.3.2003
Группа: Администраторы
Наличность: 0
Из: Москва Россия
Пользователь №: 237



мне впадлу просматривать весь скрипт, но если пишет, что ошибка значит неправильно написано (соблюдай написание со всякими SRC.*) (IMG:style_emoticons/default/smile.gif)


--------------------
С уважением Администратор Форума.
Контактный Email: dihlofozzz@uokit.com


Topic Closed
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
NeoBahamut
сообщение 27.7.2007, 2:10
Сообщение #25


*****

Journeyman
Сообщений: 354
Регистрация: 22.5.2004
Группа: Пользователи
Наличность: 0
Из: Latvia
Пользователь №: 1.791
Возраст: 19



я вообщето эти строчки пытался использовать вот так (IMG:style_emoticons/default/smile.gif) :

IF (<ARGN> > 0) && (<SRC.TARG.DIR>==<DIR>)
SRC.TARG.DAMAGE=50
ELSE
SRC.TARG.DAMAGE=25
ENDIF

ERROR: Can't resolve <DIR>


--------------------
www.animeshiro.lv
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DihlofozzZ
сообщение 27.7.2007, 10:24
Сообщение #26


***********

Администратор форума
Сообщений: 5.602
Регистрация: 8.3.2003
Группа: Администраторы
Наличность: 0
Из: Москва Россия
Пользователь №: 237



а что в данном случае у тебя <DIR> и какой там триггер если SRC.TARG?


--------------------
С уважением Администратор Форума.
Контактный Email: dihlofozzz@uokit.com


Topic Closed
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Breaker
сообщение 29.7.2007, 5:59
Сообщение #27


******

Expert
Сообщений: 529
Регистрация: 25.12.2004
Группа: Пользователи
Наличность: 0
Из: Москва
Пользователь №: 2.792
Возраст: 27



Код

ON=@GetHit
.....
//<[MOD] -------- Дополнительный удар со спины (backstab) от оружия ближнего боя ------->
   IF (<ARGN> > 0) && (<SRC.DIR>==<DIR>) && (RAND(3)==0)
.....
.....
....

где
SRC.DIR - чел который бьёт
DIR - чел по кому бьют (тот кто получит больно в спину) (IMG:style_emoticons/default/biggrin.gif)

ЗЫ: а X.TARG.X есть перехват TARGet-а =) от этого и TARG, если бы у тя было типа
Код

ON=@TargOnChar
IF <SRC.TARG.DIR>==<SRC.DIR>
   ляля тополя...
ENDIF

то норм... но тут не TargON


--------------------
Все мои скрипты и сервера: ftp://sphere@magery.ru
FTP работает не всегда, только когда мой комп включен. По вечерам часто!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
mAdShAkEr
сообщение 18.12.2014, 2:59
Сообщение #28


**

Группа: Пользователи
Наличность: 0
Пользователь №: 16.522
Возраст: 26



Скажите почему не добавляет бонус к оружию ?
ARGN += <EVAL (<ARGN>*<GetCombatEffect DamageIncrease>)/100>
Код
[ITEMDEF i_HALBERD_vanq]
ID=i_halberd
Name=Halberd of Vanquishing
RESOURCES=i_halberd,5 i_enchant_weapon
CATEGORY=Provisions - Weapons - Magic
SUBSECTION=Magic Halberds
DESCRIPTION=Halberd of Vanquishing

ON=@Create
    COLOR=color_magic_weap
    HITPOINTS={31 80}
    ATTR=attr_magic
    MOREY=100.0
ON=@Equip
src.tag.DamageIncreas=0<src.tag.DamageIncrease>+70
src.tag.DamageSpeed=0<src.tag.DamageSpeed>+70

on=@unequip
src.tag.DamageIncreas=0<src.tag.DamageIncrease>+-70
src.tag.DamageSpeed=0<src.tag.DamageSpeed>+-70
тоже самое со скоростью атаки


сфера 56б
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sirocco
сообщение 18.12.2014, 10:43
Сообщение #29


******

Expert
Сообщений: 809
Регистрация: 2.2.2012
Группа: Пользователи
Наличность: 15408
Пользователь №: 14.566
Возраст: 30



Ну я даже и не знаю.... действительно почему?
src.tag.DamageIncreas=0<src.tag.DamageIncrease>+-70
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 страниц V < 1 2
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.3.2024, 20:51
Designed by Nickostyle