Если в теории я могу поймать твой фриз, но придётся потрудится. Я делал конвертер кода из jass в С(вот ресурс ). Но только для w3 TFT 1.26a. Нужно сделать такой же только для рефорджед. Потом конвертнуть jass2 файл в С код. Сделать длл. Переименовать его в микс. Кинуть в папку с игрой. Зарегистрировать функцию мейн, как войд без аргументов. Запустить в jass2 эту функцию. И вуаля можно дебагерить свой С++ код и искать косяки.
Вообщем карта играбельная, но тормазит, хуманов не пробывал, только орков. Боты сильные. Строят и башенки и быстро точки захватывают и там строят башни. Карта защищена как я понял, так как в редакторе я её не открыл. Вот скриншоты из игры. Тормоза исправлять нужно тому, кто знает хорошо свой код.
Frosty102, мне кажется, нужно насоздавать нестандартных способностей в редакторе карт, узнать их рав коды, и в jass2 добавлять их юниту и удалять по твоим условиям. А вот на что нажимать вопрос. Там спелы располагаются в зависимости от их объявления в slk файле. На UjAPI это вроде бы делается проще, но не всем он подходит. Так что вопрос всё равно открыт. Ждём более опытных пользователей. =) А вообще то, по одному уровню повышения сделай на 6 скилов и уровень доступности скила сделай. Первые три на первом уровне доступны и т.д. Даже без джасса можно обойтись, если я не ошибаюсь.
mistwood, было что-то наподобие, но при выходе из вара, и да это всё практика с мх и разными миксами айсфога. Он же их пишет на паскале обычно, а там и касяки в его коде, он не иделаен. Я имею ввиду его код. Выход скопируй Варкрафт по новой. Или храни бек апы. Не думаю, что проблема на стороне ОС.
Возьми аналог и посмотри, что в других картах делают(например, для 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. Лучшего способа не нашёл.
Видео с данной реализацией ботов на старой карте. Недочёты вампы, не добивают базы, идут на хорошо укреплённую базу без опыта, юзают ветерки около пушек. И не отступают нормально. Хумы бегают под ногами у вампа, не грейдятся тенты иногда(исправлю =) ), хумы помогают сразу даже на базах без норм обороны. Версия вверху старая, скоро выйдет новая.
» WarCraft 3 / Что не так с этими ИИ скриптами?Недавно спрашивал про…
» WarCraft 3 / Что не так с этими ИИ скриптами?Недавно спрашивал про…
-
8.png
-
9.png
-
10.png
-
11.png
-
12.png
-
13.png
-
14.png
-
15.png
-
16.png
Полный список» WarCraft 3 / Помогите, пж, реализовать следующую идею: при каждом повышении…
» WarCraft 3 / Всем привет.решил зарубиться с ии ботами в варик. и словил…
» WarCraft 3 / Почему ИИ ни с того ни с сего не работает? На ровном месте.…
» 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 / Пятиминутка в вампов