silumin
offline
Опыт:
11,153Активность: |
Уровень умения
У меня проблема, уже голову сломал.
Ситуация вкратце:
Теперь проблема:
Умения меняют уровень в следующем порядке: 1-1-2-3, т.е. беру итем - 1лвл, беру ещё итем - 1лвл всёравно, беру итем - 2лвл, беру итем - 3лвл. Мб кто подскажет в чём проблема? Если нужно выложу саму мапу. |
22.02.2008, 07:48 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
если можно не мапу а только код/скрин тригера
я вообще не понял, ты как, на гуи или жассе делал? теперь как бы я делал... массивы тут ненужны. качаешь нью ген ве... - он даст возможность вносить равкоды ака ид ручками... если тебе надо приаттачить какой либо равкод абилы к равкоду итема просто ставишь ему последнии три чара равкода одинаковыми, as example: 'A000' and 'I000'; 'A000'=='I000'-0x08000000 (пишу в хексе) - если это неясно спрашуй поясню конекретнее, ссыль на редактор тут: http://xgm.guru/forum/showthread.php?t=13118 теперь по самой абиле... абила я так понимаю не геройская и не итемная... Код:
теперь, если ты хочешь что бы эта абила была еще и изучаемой и т.д. тебе либо сделать в красный крестик пустышку, отлавливать тригером ее изучение и добавлять твою не геройскую абилу, либо воообще сделай свой красный крестик через спелл бук=) если что непонятно написал - уточняй))) |
22.02.2008, 09:35 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
silumin
offline
Опыт:
11,153Активность: |
Код:
CRTmassive - функция копирования массивов udg_key - ключ для установки "направления" копирования А массивы ИД умений нужны будут для некоторых триггерных спеллов и для возможности удаления умений (мне так проще) Код немного кривоватый и много лишнего, но он использовался как временный. До него делал так: создавал 3 одинаковых умения с разными характеристиками, а дальше просто отслеживал if'ами ИД умения и заменял его на его более высокий аналог. Минус, что это геморойно, не по-нормальному и умения "скачут" по панели. А выше приведённая функция пашет странно. Отредактировано FellGuard, 27.02.2008 в 03:05. |
22.02.2008, 11:39 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
silumin
offline
Опыт:
11,153Активность: |
Сегодня при очередном тестировании карты заметил, что алгоритм работает нормально если между 1м и 2м изучением юнит атаковал кого-нибудь т.е. уровни идут последовательно, без задержек: 1 - 2 - 3... Есть соображения? |
22.02.2008, 23:02 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
silumin.код просто ужасный... цикл вообще не нужен имхо)
смотри, вопервых заносить абилы в массив смысла нет. абилу мона всегда узнать нативкой, что намного проще и быстрее) по сабжу в блоке иф ты проверяешь если у юнита есть абила циклом... GetUnitAbilityLevel(u, 'A000')!=0x00 - сделает тоже самое... и я вообще то неуверен что твоя красота с индексами правильно пашет) я же вроде написал код вверху) |
23.02.2008, 10:46 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
silumin
offline
Опыт:
11,153Активность: |
Цитата:
Шастать по массивам по средствам индексов у меня получается проще... Объясни плз что означает 0х00 в выражении GetUnitAbilityLevel(u, 'A000')!=0x00, какой тип данных эти нули? Мб пропускаю что-нить интересное. |
|
23.02.2008, 15:41 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,747Активность: |
silumin
Цитата:
Это бональная цыфра "0" в глазах асемблериста, наверно получил эту дурную привычку у тоадкопа... |
|
23.02.2008, 15:44 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
silumin
offline
Опыт:
11,153Активность: |
Цитата:
И jass это нормально воспринимает? Как будет выглядеть цифра 2 или 5 из 10й СИ в формате ХхХХ?.. С какой СИ оперирует jass (имхо 32, есть ИД умений с буквами выше F)? |
|
23.02.2008, 19:03 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,747Активность: |
Цитата:
|
|
23.02.2008, 19:15 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
silumin
offline
Опыт:
11,153Активность: |
спс, честно говоря, не знал... Только всёравно не знаю почему ИД умений включают числа выше F) |
23.02.2008, 20:30 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
Цитата:
обычно равкоды идут в 256 в asc ii и спокойно переводят в любую другую сисму (юзать вин калк/скачать acs ii tabl) Цитата:
0x00 forever ! а кто бы говорил... Ж, я крайне против твоей действительно вредной привычки рассказывать всем, что все кодят неправильно, а твои говно табуляции и прочь проявления говнокодерства - это тру |
||
24.02.2008, 12:12 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
silumin
offline
Опыт:
11,153Активность: |
Почти всё сделано, вот теперь закупорился на такой проблеме: хочу сделать возможность удаления скиллов посредствам строки в чате.
Могу отследить какой игрок прописал тот или иной ключ на удаление скилла Могу удалить сам скилл. Знаю ИД юнита у которого нужно удалить скилл ( у всех игроков один одинаковый юнит, так понимаю кодируются они все под одним ИД) Но как вместо "ТригерингЮнит" поставить выражение типа "Юнит с ИД хххх, пренадлежащий Игроку Х" Или как это можно организовать по другому. Заранее спс |
27.02.2008, 01:42 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FellGuard
Losyash
offline
Опыт:
39,547Активность: |
Группируй.. Формируй группу с фильтром:
Код:
FellGuard добавил: есть кстати просто функция GroupEnumUnitsOfType - можно сделать аналогично, с фильтром по игроку уже ну вобщем, экспериментируй. FellGuard добавил: кто как пишет - дело каждого, хотя ADOLF, мне кажется разумным соблюдать балланс между понятностью кода, оформлением и отсутствием лишних затрат) Т.е. не принципиально ставить просто 0 или 0х00, один фиг внутреннее представление не меняется а парсер читает 3 лишних символа ;) Отредактировано FellGuard, 27.02.2008 в 03:25. |
27.02.2008, 03:29 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
FellGuard, написал кучу кода, совершенно ненужного в данном случае, и читает мне тут что то про лишнии символы) *rofl*
Код:
тока непроверял возращает ли чатМесаг тригер плаера... т.е. изначально занести юнитов в аррей в соответсвие с индексами игроков) |
27.02.2008, 11:08 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FellGuard
Losyash
offline
Опыт:
39,547Активность: |
Цитата:
FellGuard добавил: а фтыкнул, юнит один. Ну ладно, Адольф победил *лол* FellGuard добавил: код всеравно не буду убирать, в др. ситуации полезно :Р |
|
27.02.2008, 11:49 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
silumin
offline
Опыт:
11,153Активность: |
Я всё сделал так:
Код:
i - ИД абилки как я понял функция GetUnitsOfPlayerAndTypeId(udg_Player, 'h000') возвращает всех юнитов с указанным ИД принадлежащих определённому игроку. А на карте у каждого игрока только 1 юнит с таким ИД. Понатно что при рандомном выборе юнита из группы всегда будет выбираться один юнит т.к. только он и есть в группе. Ну и естественно перетряска массива умений игрока на наличие и удаления абилки, ИД которой хранится в <i>. Отредактировано silumin, 27.02.2008 в 19:38. |
27.02.2008, 19:32 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FellGuard
Losyash
offline
Опыт:
39,547Активность: |
silumin, если юнит один то его действительно лучше запомнить в массив с самого начала или там в течение игры
Код:
|
27.02.2008, 20:45 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
silumin, что то ты не то пишешь ТТ=/
твой код - первая инструкция добовляет к одной группе юнитов другую, вторая, гхм, зачем рандом юнит? короче, скачай джасс крафт и возми библиотеки коммон.дж и близзард.дж оттуда, или извлеки их мпку редактором из архива вар3х.мпку\скриптс почитай их, думаю станет яснее... вообще правильный вариант я писал, и говорить что то по несколько раз я не люблю) и поехали ка мы наверное в жасс раздел... |
28.02.2008, 13:42 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
df Hunter
Нападатель
offline
Опыт:
5,749Активность: |
ADOLF просьба не юзать HEX в ответах для юзеров, не надо их загружать ещё чем-то
|
28.02.2008, 20:11 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
StarTraveller
offline
Опыт:
965Активность: |
HEX система вычисления удобная когда работать с большими (ну или не очень) числами которые кратные степени 2йки.
напр. 1024 =0х400 2048 = 0х800 4096 = 0х1000 8192 = 0х2000 ну и т.д.
2147483648 = 0х80000000 (это максимальное значения integer в джассе вроде.) ну правдо в том что не имеет смысла просто везде подрят использовать НЕХ если тока для "защиты" кода. |
29.02.2008, 01:47 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|