Форум Игромании
 
Регистрация
Справка
Пользователи Календарь Сообщения за день

Warcraft Обсуждение игр серии Warcraft, решение технических проблем

Ответ
 
Опции темы
Старый 18.07.2005, 21:31   #1
Мастер
 
Аватар для INCWADRA
 
Регистрация: 03.04.2007
Адрес: Сайтама
Сообщений: 391
Репутация: 92 [+/-]
Создание карт, модов для WarCraft 3

Прежде чем задать вопрос прочитайте следующее:
Полезные ссылки, программы и прочее..., Оглавление "Библиотеки Творцов"

Данная тема предназначена для решения каких либо проблем или помощи в создании карт и модов для игры Warcraft 3. Немного о наборе инструментов, которые понадобятся нам в создании и редактировании:

WorldEditor

Скрытый текст:

Автор: Blizzard Entertainment
Тип: Редактор мира Warcraft 3
Способ распространения: На диске с игрой
Язык: Русский
Версия: 1.21b
О программе:
Официальный редактор карт для вара очень удобен и вполне не сложен. Редактор похож на своего предшественника StarEdit (редактор мира StarCraft), но он все равно отличается большой функциональностью и интерфейсом. Больше информации можно узнать на Wikpedia
Альтернативные редакторы:Прочие программы:
  • War3FileConverter - программа предназначена для конвертирования моделий и текстур.
  • WC3 Image Extractor II - мощная программа для просмотра и конвертирования текстур .BLP в изображения .TGA и обратно.
  • PowerMPQ - Хороший редактор архивов вара, таких как .MPQ .W3M .W3X и т.д.
  • WinMPQ - Более старший и запатентованный редактор .MPQ
  • Jass Craft - Отличный редактор Jass кода.
  • Wc3MapOptimizer - Оптимизатор карт.
  • Warcraft III Viewer (рус.) - Просмоторщик моделей вара
  • War3 Model Editor (рус.) - Редактор моделей вара. Но на нем нельзя создавать модели с нуля.
  • Button Manager - Программа для добавление рамок к иконкам.
  • MdlVis 1.39b - Лучший в своем роде редактор моделей.
  • Справочник по триггерам
  • Еще программы вы можете найти на сайтах Wc3Campaigns, HiveWorkshop и XGM.

Полезные ссылки:

Последний раз редактировалось Emix; 04.01.2011 в 10:42.
INCWADRA вне форума  
Отправить сообщение для INCWADRA с помощью ICQ Отправить сообщение для INCWADRA с помощью Skype™ Ответить с цитированием
Старый 25.02.2008, 22:02   #1561
Юзер
 
Аватар для Malcolmishe
 
Регистрация: 07.06.2007
Сообщений: 307
Репутация: 14 [+/-]
что такое ОЕ? У меня обычный ворд-эдитор.
Malcolmishe вне форума  
Ответить с цитированием
Старый 25.02.2008, 22:03   #1562
Новичок
 
Аватар для blax
 
Регистрация: 25.02.2008
Сообщений: 1
Репутация: 0 [+/-]
Цитата:
Сообщение от Fly-Cry Посмотреть сообщение
Недавно качнул с какого то сайта инфу о импорте. Могу скинуть на Email.
P.S. Так же у меня имеется много справки о варике. И есть ссылки на хорошие сайты.
Скинь плз мне! (blax93@mail.ru)
blax вне форума  
Ответить с цитированием
Старый 25.02.2008, 22:16   #1563
Юзер
 
Регистрация: 14.06.2005
Сообщений: 188
Репутация: 20 [+/-]
я понимаю... ОЕ - Object Editor, в переводе - Редактор Объектов (ну, там где список всех абил и, где ты их создаешь). Извини, все забываю, что у тебя редактор переведенный.
GadenbIsh вне форума  
Отправить сообщение для GadenbIsh с помощью ICQ Ответить с цитированием
Старый 25.02.2008, 22:18   #1564
Юзер
 
Аватар для Malcolmishe
 
Регистрация: 07.06.2007
Сообщений: 307
Репутация: 14 [+/-]
с выбранным из списка ордером не пашет

call IssueImmediateOrderBJ( udg_hren, 'A001:Abrf')
пишет ошибку при компиляции "отсутсвует выражение"

call IssueImmediateOrderBJ( udg_hren, 'A001')
пишет ошибку при компиляции на СЛЕДУЮЩЕЙ строке "неверный тип аргумента (integer)"

Добавлено через 7 минут
Гхм... Попробовал просто дать ему эту абилку и поюзать ее вручную. Нифига. Попробую сделать на основе абилки от кибергоблина...

Добавлено через 12 минут
не получилось. А что ты там про реплэйс говорил?

Последний раз редактировалось Malcolmishe; 25.02.2008 в 22:30. Причина: Добавлено сообщение
Malcolmishe вне форума  
Ответить с цитированием
Старый 25.02.2008, 22:39   #1565
Юзер
 
Регистрация: 14.06.2005
Сообщений: 188
Репутация: 20 [+/-]
че-то странные у тебя ордерстринги

call IssueImmediateOrderBJ( udg_hren, "robogoblin" )
вот синтаксис, где "robogoblin" - стандартный ордерстринг

A001:Abrf - не ордерстринг, а имя абилки

Как я и думал, через ордерстринги не получается... Он не возвращается в начальную форму.
Сейчас сделаю тебе пример через реплейс

Последний раз редактировалось GadenbIsh; 25.02.2008 в 22:47.
GadenbIsh вне форума  
Отправить сообщение для GadenbIsh с помощью ICQ Ответить с цитированием
Старый 25.02.2008, 22:40   #1566
Юзер
 
Аватар для Malcolmishe
 
Регистрация: 07.06.2007
Сообщений: 307
Репутация: 14 [+/-]
Через реплейс получилось. Экспа сохраняеться, но параметры (сила, ловкость, инт) и абилки не передаются. Как их передать? Наверно через кэш как-то, но я им пользоваться не умею...

Добавлено через 34 секунды
С ордерстрингом я тоже пробовал - не получилось.

Последний раз редактировалось Malcolmishe; 25.02.2008 в 22:40. Причина: Добавлено сообщение
Malcolmishe вне форума  
Ответить с цитированием
Старый 25.02.2008, 22:53   #1567
Юзер
 
Регистрация: 14.06.2005
Сообщений: 188
Репутация: 20 [+/-]
а, кеш тут ни при чем... передавать можно триггерами, сейчас напишу пример

Добавлено через 8 минут
Вот триггер, передающий силу. Остальные параметры по аналогии. При желании можно избавиться от BJ:

Код:
local integer str
local unit her = GetSpellAbilityUnit()

    set str = GetHeroStatBJ(bj_HEROSTAT_STR, her, false)
    call ReplaceUnitBJ( her, 'Hamg', bj_UNIT_STATE_METHOD_RELATIVE )
    set her = GetLastReplacedUnitBJ()
    call ModifyHeroStat( bj_HEROSTAT_STR, her, bj_MODIFYMETHOD_SET, str )

set her = null
'Hamg' - юнит на который заменяем

Можно сделать через триггеры, но придется юзать глобалки и + неоптимизированность:

Set X = (Strength of (Casting unit) (Exclude bonuses))
Unit - Replace (Casting unit) with a Archmage using The old unit's relative life and mana
Hero - Modify Strength of (Last replaced unit): Set to X

Последний раз редактировалось GadenbIsh; 25.02.2008 в 23:05. Причина: Добавлено сообщение
GadenbIsh вне форума  
Отправить сообщение для GadenbIsh с помощью ICQ Ответить с цитированием
Старый 25.02.2008, 23:08   #1568
Юзер
 
Аватар для Malcolmishe
 
Регистрация: 07.06.2007
Сообщений: 307
Репутация: 14 [+/-]
А можешь то же самое с коментами? И аналогично для абилок. Я в джасе ноль полный, а хотелось бы знать что я делаю
Malcolmishe вне форума  
Ответить с цитированием
Старый 25.02.2008, 23:14   #1569
Юзер
 
Регистрация: 14.06.2005
Сообщений: 188
Репутация: 20 [+/-]
Конечно:

Код:
local integer str - локальная переменная, в ней будет храниться сила
local unit her = GetSpellAbilityUnit() - локальная переменная, в ней будет храниться ссылка героя

    set str = GetHeroStatBJ(bj_HEROSTAT_STR, her, false)
запоминаем в переменной str значение силы героя, который кастовал абилку, бонусы итемов и прочего не включаем

    call ReplaceUnitBJ( her, 'Hamg', bj_UNIT_STATE_METHOD_RELATIVE )
заменяем нашего героя на нового, сохраняя ману, экспу ит.п.

    set her = GetLastReplacedUnitBJ()
в переменную героя записываем нового, на которого заменили

    call ModifyHeroStat( bj_HEROSTAT_STR, her, bj_MODIFYMETHOD_SET, str )
изменяем новому герою силу на значение str, которое было запомнено

set her = null
обнуляем ссылку на героя, чтобы не забивать ей память
Ну, это все будет работать, если у тебя есть абилка-пустышка. И такие событие и условие:

Событие: юнит кастует абилку
Условие: кастуемая абилка = твоей дамми-абилке
Действия выше описал
GadenbIsh вне форума  
Отправить сообщение для GadenbIsh с помощью ICQ Ответить с цитированием
Старый 25.02.2008, 23:25   #1570
Юзер
 
Аватар для Malcolmishe
 
Регистрация: 07.06.2007
Сообщений: 307
Репутация: 14 [+/-]
Ок. С этим понял. Более того, на сколько я понимаю - я могу интегрировать это в мой скрипт превращения в виде костам скрипт.
Остался вопрос - как передать абилки?
Malcolmishe вне форума  
Ответить с цитированием
Старый 25.02.2008, 23:30   #1571
Юзер
 
Регистрация: 14.06.2005
Сообщений: 188
Репутация: 20 [+/-]
ну, формам героя дай одни и те же абилки.

Если ты про левел, то аналогично... Перед заменой сохраняем их уровень в переменной, а после замены повышаем его на сохраненное число.

Или у тебя можно получить новые абилки во время игры?
GadenbIsh вне форума  
Отправить сообщение для GadenbIsh с помощью ICQ Ответить с цитированием
Старый 25.02.2008, 23:39   #1572
Юзер
 
Аватар для Malcolmishe
 
Регистрация: 07.06.2007
Сообщений: 307
Репутация: 14 [+/-]
Именно. Дело в том, что у героя нет своих абилок. Все абилки он получает триггерно через add abylity. Т.о. он может иметь до 7 абилок без дополнительных ухищьрений с книгами, временными юнитами и пр.
Смысл в том, что я хотел сделать, чтобы через некоторое время игры герой изменяется. Он меняет внешность, но сохраняет все параметры - жизнь, ману, эксп, левел, статы, скилы. И вариантов превращения несколько - в зависимости от того что он учил/будет учить зависит его внешность. Ну типа как получение второй профы в рагнарек он-лайн или линейдж.
Malcolmishe вне форума  
Ответить с цитированием
Старый 25.02.2008, 23:46   #1573
Юзер
 
Регистрация: 14.06.2005
Сообщений: 188
Репутация: 20 [+/-]
а, так бы и сказал, я тебя сразу не понял...
Тогда создаешь семь глобальных переменных с типом Ability. При добавлении герою абилки записывай в свободную ту абилку, которую добвляешь. Перед заменой получай лвл каждой из семи записаных в глобальной переменной, а после замены добавляй записанные абилки и поднимай их лвл.

Это немного геморно, но я другого выхода не вижу.
GadenbIsh вне форума  
Отправить сообщение для GadenbIsh с помощью ICQ Ответить с цитированием
Старый 25.02.2008, 23:57   #1574
Юзер
 
Аватар для Malcolmishe
 
Регистрация: 07.06.2007
Сообщений: 307
Репутация: 14 [+/-]
Хм. Думаю лучше создать не семь переменных, а одну-массив. Вопрос - нельзя ли триггерно узнать, какие абилки знает герой на данный момент?
Если нииизя, то как узнать, знает герой эту абилку уже или еще нет? Ибо от этого будет зависеть - писать его в новую переменную/ячейку массива, или игнорить.
Как можно узнать уровень абилки?

Пока я делаю так:
герой повышает скилл (пока это временно сделано через нажатие кнопки диалога)
боевая единица - увеличить уровень скилла
боевая единица - add скилл

т.о. если у героя нет еще этого скилла, то первая команда проходит бесследно, вторая добавляет скилл. Если скилл уже есть, первая повышает уровень, вторая проходит бесследно. Эта система в любомм случае должна быть изменена, чтобы не тратить поинты больше максимума (сумбурно я объясняю как-то...)

Добавлено через 2 минуты
и вот еще что. Когда я говорю создать массив и ставлю там циферку 7, что это значит? Какие номера ячеек будут доступны?
0 1 2 3 4 5 6 7
или
1 2 3 4 5 6 7
или
0 1 2 3 4 5 6

Последний раз редактировалось Malcolmishe; 26.02.2008 в 00:00. Причина: Добавлено сообщение
Malcolmishe вне форума  
Ответить с цитированием
Старый 26.02.2008, 00:08   #1575
Юзер
 
Регистрация: 14.06.2005
Сообщений: 188
Репутация: 20 [+/-]
ну, массив по сути и есть семь переменных.
Цитата:
Вопрос - нельзя ли триггерно узнать, какие абилки знает герой на данный момент?
GetUnitAbilityLevelSwapped(абилка, юнит) - возвращает уровень абилки.. Если 0, то абилка не изучена, но я не знаю, катит ли это при добавлении абилок триггерно.

триггер в ГУИ:
Set X = (Level of абилка for юнит)

по второму вопросу - 0 1 2 3 4 5 6 7

Добавлено через 2 минуты
Но я бы делал не так. При добавлении делал бы проверку на лвл. Если он 0, от добавляем, если больше, то повышаем.

Добавлено через 3 минуты
ну, и при добавлении записываем его в пустую переменную..

Последний раз редактировалось GadenbIsh; 26.02.2008 в 00:11. Причина: Добавлено сообщение
GadenbIsh вне форума  
Отправить сообщение для GadenbIsh с помощью ICQ Ответить с цитированием
Старый 26.02.2008, 00:13   #1576
Юзер
 
Аватар для Malcolmishe
 
Регистрация: 07.06.2007
Сообщений: 307
Репутация: 14 [+/-]
Цитата:
Сообщение от GadenbIsh Посмотреть сообщение
GetUnitAbilityLevelSwapped(абилка, юнит)
как правильно писать "абилку" и "юнит"? Какие знаки препинания нужно ставить?
"Юнит" - скорее всего буду обозначать глобальной переменной.
Malcolmishe вне форума  
Ответить с цитированием
Старый 26.02.2008, 00:17   #1577
Юзер
 
Регистрация: 14.06.2005
Сообщений: 188
Репутация: 20 [+/-]
ну, если герой - hero, а имя абилки 'AHbh' (ну, смотрится в редакторе объектов), то так: GetUnitAbilityLevelSwapped('AHbh', udg_hero)
GadenbIsh вне форума  
Отправить сообщение для GadenbIsh с помощью ICQ Ответить с цитированием
Старый 26.02.2008, 00:20   #1578
Юзер
 
Аватар для Malcolmishe
 
Регистрация: 07.06.2007
Сообщений: 307
Репутация: 14 [+/-]
а если абилка нестандарная и имеет вид A000:Xyzx ?

Добавлено через 43 секунды
Цитата:
Сообщение от GadenbIsh Посмотреть сообщение
Но я бы делал не так. При добавлении делал бы проверку на лвл. Если он 0, от добавляем, если больше, то повышаем.
Ну собственно я так-же собирался делать Я конечно чайник, но не до такой же степени.

Добавлено через 1 минуту
Хм... тогда при добавлении надо делать цыкл, чтобы проверить все переменные.

Последний раз редактировалось Malcolmishe; 26.02.2008 в 00:21. Причина: Добавлено сообщение
Malcolmishe вне форума  
Ответить с цитированием
Старый 26.02.2008, 00:25   #1579
Юзер
 
Регистрация: 14.06.2005
Сообщений: 188
Репутация: 20 [+/-]
тогда просто 'A000'
Цитата:
Хм... тогда при добавлении надо делать цыкл, чтобы проверить все переменные.
Не обязательно. Создаешь переменную интегер i. При добавлении скила увеличиваешь ее на единицу. При повышении лвла - нет. К массиву обращайся по i - так ar[i] - у тебя будет всегда пустая ячейка. И при добавлении проверяй, i < 6 (или сколько у тебя там макс абилок?)
GadenbIsh вне форума  
Отправить сообщение для GadenbIsh с помощью ICQ Ответить с цитированием
Старый 26.02.2008, 00:28   #1580
Юзер
 
Аватар для Malcolmishe
 
Регистрация: 07.06.2007
Сообщений: 307
Репутация: 14 [+/-]
i - глобальная я так понимаю.
Malcolmishe вне форума  
Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 20:11.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Rambler's Top100 Яндекс цитирования