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, ты представь, что такое регионы баз и как они ищутся перед тем, как начинать такую затею. Ты ведь не рандомно будешь отправлять отряды в точку на карте? Потом микро это вторая тема. Когда кто то отходит кто то подходит, кто то окружает, кто то защищается и т.д. и т.п. По этому вообще можно целую книгу писать. А если тупо замес. То кому это будет интересно? Таких ботов ты с лёгкостью вынесешь и кто будет играть твоя аудитория? Если серьезно браться за проект, то придётся отдаться сполна. А оно тебе надо? Сколько у тебя есть времени свободного? Какие перспективы в будущем? Что ты с этого поимеешь? Если ты в погоне за славой, то хоть помолился бы Богу, чтобы Он тебе знания дал. А без этого не куда. Либо ты свихнёшься, либо ты забросишь, либо добьёшься своего. Но я с удовольствием посмотрю на твой проект. На этапе проходимости между юнитами, что ты будешь делать в мапхаке ковыряться? Делать карты данных? Поздравляю ты пришёл к тому же что и я. Но у меня цель игру сделать свою. В итоге. А наработки мне в плюс.
Fasser, если сделать мапхак для Linux, то можно такие карты и на Irina Bot запускать без опаски. Вот сделал тебе костыли можешь попробовать под Lunux'ом запустить данную карту и конвертер. Но лучше программировать учись, сам всё будешь делать. Закинь файлы RedirectCalls.mix, Vampirism_fire.mix,
JassApi.dll, возможно потребуется ещё и msvcp100.dll, msvcr100.dll в папку с игрой. Если я не ошибаюсь, а могу и ошибиться то функция GetModuleHandle работает под wine. И подхватит библиотеку JassApi.dll. Может и нет. Проверь. И закинь VampirismFire5.10b2[0].w3x в папку с картами. Также сделал Jass_convert_C++.exe под Linux пути. Делаю всё в слепую без Linux'a так что результат не гарантирован. Проверяй.
Fasser, офтоп. Если по твоему вопросу, то ответь сначала на вопрос, где ты хочешь запустить exe файл? На телефоне в Android OS? В Linux'ax таких как Ubuntu или других им подобным? Если на телефоне то качай wine для Andoroid'a apk файл. Моё приложение запустить, в Android не получится, потому что пути разные. В Android путь /etc/w3 например. В Windows c:\games\w3. Я под Linux не подстраивал свою программу. Я забыл как там идёт запрос к файлам. Можно по типу пути определять твоё предпочтение вывода файла. Это можно сделать. Но если капать дальше. То все выводы файлов в библиотеке будут Windows'кие. Это тебе не потребуется, а вот для мапхака потребуется. А мне Linux ставить не хочется, что бы проверить, как мапхак работает на wine в Linux'e. И тут похоже без знаний нашего гения IceFoga не обойтись. Но если библиотека в Linux это .so файл, то в Windows это dll. При мапхаке IceFoga dll распаковывается из архива карты в Temp файлы Windows. Там и запускается. А вот, что бы реализовать такое в Linux. То можно кинуть dll в папку с игрой. Переименовать библиотеку в mix. Все необходимые библиотеки тоже кинуть в папку и с игрой в данном случае это RedirectCalls.dll, JassApi.dll их можно найти в карте. Сменить расширение файла RedirectCalls.dll на mix. Получится, что все библиотеки погрузятся в игре. Но их нужно запустить как описано в теме "Своя нативка на С++". Нужно зарегистрировать начальную функцию библиотеки объявить её в common.j файле в новых нативках. Импортировать common.j по пути Scripts\. В war3map.j убрать все мапхаки и вызвать функцию библиотеки которая зарегистрирована в игре в новых нативках. Этот велосипед может и сработать. Но лучше бы сделать мапхак для Linux отдельно, а я в этом не шарю. А если ты решил играть в Warcraft 3 на телефоне, то это порнография.
Fasser, если ты имеешь в виду андроид приложение, то это будет то же самое только на flutter, например. Но тебе легче Сишный код запустить, который в проекте, на другой платформе. И будет тот же результат. А ты что в телефоне играешь в Warcraft 3, через wine, как в linux'e?
» 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 для запуска из игры
» WarCraft 3 / Конвертер из Jass в C++ dll для запуска из игры
JassApi.dll, возможно потребуется ещё и msvcp100.dll, msvcr100.dll в папку с игрой. Если я не ошибаюсь, а могу и ошибиться то функция GetModuleHandle работает под wine. И подхватит библиотеку JassApi.dll. Может и нет. Проверь. И закинь VampirismFire5.10b2[0].w3x в папку с картами. Также сделал Jass_convert_C++.exe под Linux пути. Делаю всё в слепую без Linux'a так что результат не гарантирован. Проверяй.
» WarCraft 3 / Конвертер из Jass в C++ dll для запуска из игры
» WarCraft 3 / Конвертер из Jass в C++ dll для запуска из игры
» WarCraft 3 / Конвертер из Jass в C++ dll для запуска из игры