Kenshi245
offline
Опыт:
2,252Активность: |
Spell Rejuvenation
Есть скрипт на спелл rejuvenation, механика такая же как в оригинальном варике - лечит хп со временем и отображает цыферки, но в скрипте есть жесткий баг - иногда, когда часто накладываешь бафф на разные цели, бафф появляется, но ни лечения ни цифр нету, кто может сказать в чем проблема?
Код:
|
13.04.2008, 21:50 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
вы води сообщение рода...
"unit X heald for X" т.е. в действие выводи сообщение что бы ты знал что оно выполнилось или нет. кстати удалять возможно не существующий таймер не советуетьса =) |
14.04.2008, 03:54 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
http://xgm.guru/forum/showthread.php?t=14923
статья по теме отладки скриптов впринципе |
14.04.2008, 13:46 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
Хмм, вместо того, чтобы лишний раз удалять таймер, лучше лишний раз проверять, создан ли он. Т.е. сделать так, чтобы таймер существовал тогда и только тогда, когда бафф лежит на цели.
По сути, нам необходимо определить, сколько лечения дает rejuvination - это безусловно - аттачим значение к юниту-цели. Затем, если таймер, приаттаченный к цели, не создан - создаем и работаем. Если таймер уже был создан - ничего не делаем (время баффа обновляет сам спелл), при каждом выполнении таймера будет браться значение local real Heal, приаттаченное к юниту. + я не понял, где у тебя используется значение local integer pID в Spell_Rejuvination, т.к. можно сразу получать номер игрока в таймер-функции. Собственно, вот проверенный код: Код:
А по-хорошему лучше делать без кэша и без RB ^_^ Отредактировано ShadoW DaemoN, 17.04.2008 в 05:26. |
14.04.2008, 16:29 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
эм... притбавлю только что этот спел будет работать некоректно т.к. очищается ключ хендла юнита который также может быть использован и в других спелах, там лчше строку прибовлять какуюнить |
14.04.2008, 17:03 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Erica
offline
Опыт:
28Активность: |
Jon
Все коректно будет работать |
14.04.2008, 17:50 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Erica потомучто ShadoW DaemoN уже подредактировал ошибку
|
14.04.2008, 17:59 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Erica, обоснуй
в любом случае в 99% можно сделать лучше без кеша кешь нужен для переноса между картами |
14.04.2008, 18:03 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FellGuard
Losyash
offline
Опыт:
39,547Активность: |
подредактировал ли? call FlushStoredMission(udg_Game_Cache, I2S(H2I(unitA)), "Rej_Time") синтаксическая ошибка.. видимо FlushStoredInteger |
14.04.2008, 18:04 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
хм, я увидел надпись "Пофиксено" подумал что исправил... да у него и не толкьо в этом ошибка была, короче чтото вроде такого нуно...
» code Код:
|
14.04.2008, 18:16 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
зачем к юниту аттачить таймер? |
14.04.2008, 18:25 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
ADOLF чтобы если повторно наслать на юнита спел то действее спела не удваивалось бы
Jon добавил: хотя там при создании таймера можно проверку на баф делать... я хз, я просто привел код в состояние что должен работать, над алгоритмикой пусть думает автор |
14.04.2008, 18:30 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Цитата:
проверять бафф/аттачить в узер дату один бит-бул |
|
14.04.2008, 18:37 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ShadoW DaemoN
offline
Опыт:
37,078Активность: |
ADOLF, имхо, mission accomplished. Юзеру требовалось разобраться в чем ошибка, я привел некоторые выражения, как в данном случае можно было бы сделать, и привел код с минимальными изменениями.
Вероятным может оказаться, что юзердата занята чем-то другим. + я добавил после кода, что лучше бы и без кэша обойтись... Кстати, про баффы я как-то сразу не сообразил =) FellGuard, ок-ок, моя каюсь ^^ Я еще утречком хотел ответ выслать, но не получилось. Цитата:
Он вообще-то и так работал (имеется в виду алгоритм), а чтение/запись кэша - это уже не сколько к алгоритму относится, сколько к обеспечению. >_< |
|
14.04.2008, 19:14 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Kenshi245
offline
Опыт:
2,252Активность: |
Вот моя отредактированная версия (Учитывает еще и то, что могут баффнуть спеллами разного лвл)
Код:
А кстати как можно это без кеша сделать? Отредактировано Kenshi245, 16.04.2008 в 21:46. |
16.04.2008, 21:41 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
YellowStar
poon
offline
Опыт:
15,144Активность: |
ADOLF ярый противник кеша. Не такой уж он и плохой ии лично я использую его не только для переноса между миссиями, мне с ним тупо проще да и код запутанный выходит :D не сразуможно разобратся что к чему
|
17.04.2008, 06:25 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|