Возьми аналог и посмотри, что в других картах делают(например, для W3 TFT 1.26a VampirismFire5.10b2.w3x =) ). И да если олд скул то самое простое, мне кажется, это в екселе подредактировать .slk и в текстовом редакторе .txt файлы и вставить их в карту. Определив всех героев и все способности свои или стандартные и указав им связи.
Проверь не вызываются ли команды для отправки юнитов в бой, на юнита, на декорацию, в область в одном таймере дважды в один период времени. Так как повторный приказ вызывает дисинх в сетевой игре. В локальной нет. Компьютер думает, что игрок не может в 0.1 сек делать два действия сразу.
Мысли в слух. Если делать смежные базы с общим сильным дамагом по радиусу(дефом), то одним можно идти в развитие, до красного вала, а вторым самоуничтожаться. Итого 5-теро почти без корма впереди.
Makeba, да так оно и есть скрипт human.ai имеет тоже функцию main, которая вызывается первая для этого скрипта. А main в карте должен содержать инициализацию ai скриптов не помню точную функцию. Помню что AI в конце. Вроде бы, вот эта функция MeleeStartingAI.
Makeba, в ИИ скриптах не работают многие функции которые можно запихнуть в главный код, так же и в главном коде не работают некоторые функции которые работают в ИИ скриптах. Так что не сравнивай их. Эта два отдельных острова. Где свои законы.
Если конвертнёшь в текст, то вроде, эта функция SubString первый аргумент изначальная строка, второй с какого символа, третий по кокой символ (но + 1), конечный аргумент выходная строка.
Fasser, прототип - это только наработки для проекта. Первичный интерфейс, например. Сделай уж её трёхмерной, чтобы была модель. Только куда ты её денешь потом? Кому такое убожество нужно?
globals
gamecache vSyncCache3
boolean vSync
integer vCountPlayersUser
endglobals
function fInitnData takes nothing returns nothing
set vSyncCache3 = InitGameCache("Sync3")
set vSync = false
set vCountPlayersUser = 3
endfunction
function fSync takes nothing returns nothing
local string vStr
local integer vvi
local real vResult
if (vSync == false) then
set vStr = I2S(GetPlayerId(GetLocalPlayer()))
call StoreReal(vSyncCache3,"real_data",vStr, 1.0)
call SyncStoredReal(vSyncCache3,"real_data",vStr)
call StoreReal(vSyncCache3,"real_data",vStr, 0.0)
set vSync = true
else
set vvi = 0
loop
exitwhen vvi >= vCountPlayersUser
// тут должна быть проверка игрока на лив
set vResult = GetStoredReal(vSyncCache3,"real_data",vStr)
if (vResult == 0.0) then
return
endif
endloop
endif
// Ура данные синхронизированы по времени в vResult значение
// fSync - конечно же это функция таймера
endfunction
call TimerStart(Bv,1234,false,function QX)
call TimerStart(t,1.,true,function JR)
set t=null
set Kv=true
set vTriggerMB = CreateTrigger( )
call TriggerRegisterTimerEventSingle( vTriggerMB, 0.1 )
call TriggerAddAction( vTriggerMB, function kR )
set vTimeRound = 60 * 1
set vTriggerMB2 = CreateTrigger( )
call TriggerRegisterTimerEventSingle( vTriggerMB2, 0.1 )
call TriggerAddAction( vTriggerMB2, function qA )
QX это бесконечный таймер который прибаляет к счётчику 1234 сек
JR отображает секунды в мультибораде каждую секунду
kR создаёт мультиборад
qA создаёт таймеры следующего раунда(тебе это не надо)
fE это удобное отображение времени через двоеточие
FR устанавливает итему мультиборада значение
А лучше скачай JassCraft, а то очень неудобно читать однотонный текст jass2. Да ещё и без дебага.)
ShadowNinja, проблема с дисинхронами в карте, или когда интернет отваливается у одного из игроков, но тогда он висит и идёт прогресс ожидания. У меня дисинхроны обычно бывали из-за того, что в одну и ту же долю секунды действия не совпадали, так как работали win32 потоки в мапхаке. Я сделал таймер один на всех игроков и решил эту проблему. Но ещё возможно, что в в функции передаёшь передаёшь переменную unit, а тип юнита 0, выдаёт. Ставишь заглушку с сообщением на экран и проблема в смене id unit'ов по непонятной причине. И приходится по новой эту переменную определять. Пример, во время строительства один id юнита, во время постройки другой. Или рабочие которые рубят лес сами по себе меняют свой id, по неизвестной причине Варкрафта 3. И когда ты пытаешься вызвать функцию в которой нет такого юнита, то идёт вылет из игры. Вообщем проверяй своих юнитов на Id функций GetUnitTypeId, если 0 то такого юнита уже нету. И ищи его в зоне наверное в определенной. Ведать и в рефордже та же шляпа, со сменой long значений handle к юнитам. Но проблема может быть и не только в юнитах, но и в итемах и тд. тп. Проверяй их id. Лучшего способа не нашёл.
Видео с данной реализацией ботов на старой карте. Недочёты вампы, не добивают базы, идут на хорошо укреплённую базу без опыта, юзают ветерки около пушек. И не отступают нормально. Хумы бегают под ногами у вампа, не грейдятся тенты иногда(исправлю =) ), хумы помогают сразу даже на базах без норм обороны. Версия вверху старая, скоро выйдет новая.
Fasser, ты представь, что такое регионы баз и как они ищутся перед тем, как начинать такую затею. Ты ведь не рандомно будешь отправлять отряды в точку на карте? Потом микро это вторая тема. Когда кто то отходит кто то подходит, кто то окружает, кто то защищается и т.д. и т.п. По этому вообще можно целую книгу писать. А если тупо замес. То кому это будет интересно? Таких ботов ты с лёгкостью вынесешь и кто будет играть твоя аудитория? Если серьезно браться за проект, то придётся отдаться сполна. А оно тебе надо? Сколько у тебя есть времени свободного? Какие перспективы в будущем? Что ты с этого поимеешь? Если ты в погоне за славой, то хоть помолился бы Богу, чтобы Он тебе знания дал. А без этого не куда. Либо ты свихнёшься, либо ты забросишь, либо добьёшься своего. Но я с удовольствием посмотрю на твой проект. На этапе проходимости между юнитами, что ты будешь делать в мапхаке ковыряться? Делать карты данных? Поздравляю ты пришёл к тому же что и я. Но у меня цель игру сделать свою. В итоге. А наработки мне в плюс.
» WarCraft 3 / Помогите, пж, реализовать следующую идею: при каждом повышении…
» WarCraft 3 / Приветствую, господамы. Мне тут все уши прожужжали с нытьём о…
» WarCraft 3 / Пятиминутка в вампов
» WarCraft 3 / Одинокий рокер-троль
» WarCraft 3 / ИИ на джасс
» WarCraft 3 / Пятиминутка в вампов
» WarCraft 3 / ИИ на джасс
» WarCraft 3 / Что это за функция? и как она должна работать? в описании…
» WarCraft 3 / Парочка приколов: 1. -Учительница: "Что такое невесомость?"…
» WarCraft 3 / Воин из племени кентавроогров
» WarCraft 3 / Воин из племени кентавроогров
» Администрация XGM / У многих старых вопросов статус " не опубликован ", который…
» WarCraft 3 / (MH) Отдача приказа
» WarCraft 3 / Всем ку. Как синхронизировать Real данные локального игрока…
» WarCraft 3 / Пятиминутка в вампов
» WarCraft 3 / таймер времени игры
» WarCraft 3 / таймер времени игры
» WarCraft 3 / Десинх карты в Рефоржете после 10-15 сек!Подскажите плз, всё было…
» WarCraft 3 / Как отследить урон от руки/заклинаний? Какую систему…
» WarCraft 3 / Пятиминутка в вампов
» WarCraft 3 / Всем привет! Возможна ли конвертация рефорджевской карты на…
» WarCraft 3 / Возрождение старых карт Предлагаю написать ИИ для карты 23…
» WarCraft 3 / Возрождение старых карт Предлагаю написать ИИ для карты 23…
» WarCraft 3 / Пятиминутка в вампов
» WarCraft 3 / Конвертер из Jass в C++ dll для запуска из игры