Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ Sphere Server 0.55R _ Дамаг Ездовым Животным

Автор: Lord Artes 1.12.2006, 16:50

хочу сделать что бы когда бьют игрока, и если он сидит на лошади, то часть повреждения по игроку шла ездовому животному, на котором он сидит. Как это сделать? помогите дописать:

ON=@GetHit
damage_on_horse

FUNCTION damage_on_horse]
if (<src.findlayer.25.uid> )
что сюда вписать что бы был дамаг по лошади?
src.sysmessage Your Horse has been damaged
else
src.sysmessage netu horsi // необращайте внимание на месагу, это для теста.
endif

... заранее благодарю!

Автор: Barracoon 1.12.2006, 17:24

Цитата(Lord Artes @ 2.12.2006, 0:50)
что сюда вписать что бы был дамаг по лошади?
Исходный код
// Чисто логически - примерно так(лошади здесь наносится четверть повреждений)...
src.findlayer.25.uid.damage(eval(<arg1>/4))

Автор: ImProV1zator 15.1.2014, 23:39

Не работает так!

Автор: Sirocco 16.1.2014, 0:01

Код

On=@Hit
horse = <src.findlayer.layer_horse.more2>
horse.hits = <eval (<horse.hits> - <argn1>)>
src.sysmessage Нанесен <argn1> урон вашему <horse.name>

Автор: ImProV1zator 16.1.2014, 1:46

Код

01:32:ERROR:(PvX.scp,165)Undefined keyword 'horse'
01:32:ERROR:(PvX.scp,166)Can't resolve <horse.hits>
01:32:ERROR:(PvX.scp,166)Undefined keyword 'horse.hits'
01:32:ERROR:(PvX.scp,167)Can't resolve <horse.name>

пробую сделать проверку по другому:
Код

say <eval  <findlayer.layer_horse.hits>> говорит 220
say <eval  <findlayer.layer_horse.more>>  говорит 220
say <eval  <findlayer.layer_horse.more1>> говорит -19456548598
say <eval  <findlayer.layer_horse.more2>> говорит 4334

Тестирую на ламе, у которой нет ничего по 220 (ни сила ни хп, ниче)
Хп у ламы 38...

Автор: DihlofozzZ 16.1.2014, 12:29

ref1=<findlayer.layer_horse.more1>
say <ref1.hits>

Автор: Sirocco 16.1.2014, 13:34

more1 - это вообще-то тип животного


автору, иногда нужно понимать что ты, в принципе, скопировал... и почему это не должно работать.
layer_horse - это всего лишь мемори... и отношение к ламе имеет поскольку-постольку... ну разве что 220, это и есть ID самой ламы.

Особенно понравился этот кусок:
say <eval <findlayer.layer_horse.more>> говорит 220
say <eval <findlayer.layer_horse.more1>> говорит -19456548598

а тебе никто не говорил, что more и more1 - это одно и тоже?

Продолжай думать над моим вариантом... он правильный.

Автор: ImProV1zator 22.1.2014, 7:29

Цитата(DihlofozzZ @ 16.1.2014, 13:29) *

ref1=<findlayer.layer_horse.more1>
say <ref1.hits>

пишет 0, пробовал с eval тоже 0


Цитата(Sirocco @ 16.1.2014, 14:34) *

а тебе никто не говорил, что more и more1 - это одно и тоже?

Почему тогда цифры разные выдает?


Не могу понять, где хранятся хп, обращался уже и к слою и к i_mt_ итему...

Автор: Sirocco 22.1.2014, 8:07

Это печально... начнем с того, что в GetHit src, это источник урона.

Автор: ImProV1zator 22.1.2014, 10:49

src это тот, кто наносит урон.причем тут это вообще?я и с src пробовал, сидя чарами на ламах.какая разница от кого идет урон?
Я не через @hit а через Gethit пытался делать.Только что проверил через @hit тоже самое по сути.

ON=@HIT
src.say @38 Hp <eval <src.findlayer.layer_horse.more2>.hits>
src.say @38 Hp <eval <findlayer.layer_horse.more2>.<hits>>

говорит 8146 (при то что у обоих лам по 100 str и меньше 100 хп)
говорит 8158 (при то что у обоих лам по 100 str и меньше 100 хп)

on=@gethit
src.say @38 Mount Hits: <eval <src.findlayer.layer_horse.more2>.hits>
src.say @38 Mount Hits: <eval <findlayer.layer_horse.more2>.<hits>>

аналогично.

Автор: ЖаК 22.1.2014, 11:54

где хранятся хп хороший вопрос, просто пойми что когда чар на живке, живки по факту не существует

она там вроде бы рядом всегда в логауте, вот ее и надо наверно ковырять

Автор: ImProV1zator 22.1.2014, 12:24

спасибо, очень помог Жак

Автор: Sirocco 22.1.2014, 13:27

Цитата(ImProV1zator @ 22.1.2014, 8:29) *

пишет 0, пробовал с eval тоже 0
Почему тогда цифры разные выдает?
Не могу понять, где хранятся хп, обращался уже и к слою и к i_mt_ итему...


хп хранятся на животинке в логауте...
а в море2 слоя 25 хранится серийка животного.
вот и весь сказ...
и вариант решения, единственный верный - я выложил в своем первом сообщении...

но он тебе явно не поможет, если ты даже не видишь что там нужно исправить.

Так что я не понимаю, зачем это столько мусолить... и какую собственно неоценимую помощь тебе оказал Жак, который сам себе порой не в состоянии помочь.

Автор: ImProV1zator 23.1.2014, 2:44

Спасибо.скрестил твой вариант и дихлофоса.

Код

on=@gethit
if <findlayer.layer_horse>
ref1=<findlayer.layer_horse.more2>
ref1.hits = <eval (<ref1.hits> - <argn1>/5)>
sysmsg_red <ref1.name> <eval <ref1.hits>> hits
endif

Теперь ломаю голову, как сделать dismount
вот
Код

src.dclick
SRC.FLAGS |= statf_onhorse

работает

А без src (просто Dclick) не хочет.

Автор: Sirocco 23.1.2014, 8:42

попробуй триггер Hit
либо вариант через trysrc

Автор: ImProV1zator 15.2.2014, 6:26

Сделал тупо через remove

Код

on=@gethit
if (<findlayer.layer_horse.baseid>!=i_et_mustang) && (<findlayer.layer_horse.baseid>!=i_et_horse) && (<findlayer.layer_horse.baseid>!=i_et_zostrich) && (<findlayer.layer_horse.baseid>!=i_et_forest) &&(<findlayer.layer_horse.baseid>!=i_et_oclock) && (<findlayer.layer_horse.baseid>!=i_et_llama) && (<findlayer.layer_horse.baseid>!=i_et_polar_bear)
if <findlayer.layer_horse>
ref1=<findlayer.layer_horse.more2>
ref1.hits = <eval (<ref1.hits> - <argn1>/5)>
if <ref1.hits> < <eval <argn1>/5>
sysmsg_red <ref1.name> died.
ref1.remove
endif
//update
sysmsg_red <ref1.name> <eval <ref1.hits>> hits
endif
endif

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)