0
8
11 месяцев назад
Отредактирован Centyrion
0

» WarCraft 3 / Arthas Revenge Siege

Последние новости!
0
8
11 месяцев назад
0

» Блог им. ofeerist / Обзор на пиво

🤣🤣🤣Пиво🤣🤣
0
8
11 месяцев назад
0

» Таверна "Ржавое колесо" / Жульен с грибами

🤣 Не люблю Сметану но для Жульена самое то!🤣🤣
0
8
11 месяцев назад
Отредактирован Centyrion
0

» WarCraft 3 / Сломалась карта

это скорее всего по невнимательности, это решается убиранием всех строк кода из war3map.j на которые указывают редактор, новые функции которые поддерживаются в JNJP не будут работать в обычном редакторе
либо использовать тот же редактор в котором прописаны эти функции
0
8
11 месяцев назад
Отредактирован Centyrion
0

» WarCraft 3 / ворота по вертикале

Идем в Редакторе Объектов -> Разрушаемые объекты или Декорации -> Ищем например Ворота (СВ- ЮЗ) или (СЗ - ЮВ) -> ищем Параметр J) Графика - Фиксированное вращение (bfxr) и указываем от 0 до 360.00 где значение указывается в градусах
Далее выбираем Файл Модель (bfil) Ворот на (З-В)
Выбираем на панель инструментов и смотрим в какую сторону Ворота смотрят
0
8
11 месяцев назад
Отредактирован Centyrion
0

» WarCraft 3 / Как играть с другом против бота в WarCraft 3?

видимо он имеет в виду про команду !comp <> <> на боте
если в карте в которой играете предусмотрен механизм создания Компьютерного игрока то да можно написать эту команду
если же в условиях нету такого механизма зря вставляете в слоты игроков компьютера он не сработает а проигнорирует их
а так зависит от разработчиков проекта и самого бота. если можно ввести эту команду и в слоте игрока появится компьютер то карта запустится с компьютером.
но они не действуют, когда ввожу их в игре
это потому что в Лобби надо их вводить а не в самой игре
0
8
11 месяцев назад
0

» WarCraft 3 / Проверка на наличие значения (HaveSavedValue)

Centyrion, если исправно работает, то и смущаться лишний раз незачем.
ну все-же предупрежден значит вооружен.
оказывается я все это время сохранял Имя Игрока вместо идентификатора, т.е 0 1 2 3 4 в зависимости от айди игрока, так даже лучше...но не каждый зайдет в Function List и глянет что там происходит, все-же это дело оптимизации. как напишешь так и сработает.

Centyrion, если исправно работает, то и смущаться лишний раз незачем.
спасибо за ответ.
0
8
11 месяцев назад
Отредактирован Centyrion
0

» WarCraft 3 / Проверка на наличие значения (HaveSavedValue)

Откуда вообще был взят первый вариант, где два раза _STRING? Всё там должно быть нормально.
не сомневаюсь
вот пример, пояснения в конце
call SavePlayerHandleBJ(GetOwningPlayer((Hero[GetPlayerId(GetTriggerPlayer())])),15,1,udg_H)
call SaveLocationHandle(udg_H, 3, StringHash("GV"+I2S(GetPlayerId(GetTriggerPlayer()))), GetUnitLoc(Hero[GetPlayerId(GetTriggerPlayer())]))
if HaveSavedValue(15, bj_HASHTABLE_HANDLE, 1, udg_H) == true then
do action
здесь и наткнулся на  HaveSavedValue
call SetUnitPositionLoc(Hero[GetPlayerId(GetOwningPlayer(GetManipulatingUnit()))],LoadLocationHandle(udg_H, 3, StringHash("GV"+I2S(GetPlayerId(GetOwningPlayer(GetManipulatingUnit()))))))
else
endif
HaveSavedValue работает исправно но смущает
    elseif (valueType == bj_HASHTABLE_STRING) then
        return HaveSavedHandle(table, missionKey, key)
    else
                return false

Centyrion, ещё раз, зачем использовать обёртку вместо нативки?
как вариант, хоть и незачем

Откуда вообще был взят первый вариант, где два раза _STRING? Всё там должно быть нормально.
это прописано в Function List Jass New Gen Pack

ссылка на сайте
0
8
11 месяцев назад
0

» WarCraft 3 / Проверка на наличие значения (HaveSavedValue)

тут выбор не велик
  1. использовать другие значения для сохранения хэндла в хэш таблице кроме HaveSavedHandle но при этом использовать BJ функции
  2. можно без BJ но использовать HaveSavedHandle
  3. записать в некую переменную значение которое должно проверятся и проверить ее перед определенным действием
  4. ну или использовать обычный редактор не JNJP
  5. запилить свою функцию на подобие этой и туда прописать что мне нужно сохранять с последующим очищением
5 )наиболее подходящий вариант

я о том почему JNJP написал в Function List подобное
Потому что такая функция имеется в игре наверное.
она есть но сохраняет false вместо хэндла

воспользуюсь конструкции типа bj_HASHTABLE_INTEGER
все равно игрока можно записать как Player(index)
а индекс и будет целочисленной

или зависит от того что буду делать можно и bj_HASHTABLE_BOOLEAN чтобы не использовать BJ функции

тем более они занимают намного меньше места в памяти нежели хэндлы
0
8
11 месяцев назад
0

» WarCraft 3 / Проверка на наличие значения (HaveSavedValue)

Почему бы не использовать напрямую HaveSavedHandle?
Потому что так неинтересно и невозможно из гуя.
верно подметил 🙂я о том почему JNJP написал в Function List подобное
0
8
11 месяцев назад
0

» WarCraft 3 / 1.31.1

1.31.1 я тоже скачал, пользовался ноутбуком 2010 года
1.26 работал с 20 фпс
1.31.1 работает но только с 10
проблема с твоим компьютером
0
8
11 месяцев назад
Отредактирован Centyrion
0

» WarCraft 3 / Проверка на наличие значения (HaveSavedValue)

или все-же целочисленную переменную сохранить вместо хэндла?
valueType == bj_HASHTABLE_INTEGER

особой роли не играет что буду сохранять но смущает Function List из JNJP

	// Hashtable value types
	constant integer   bj_HASHTABLE_BOOLEAN                 = 0
	constant integer   bj_HASHTABLE_INTEGER                 = 1
	constant integer   bj_HASHTABLE_REAL                    = 2
	constant integer   bj_HASHTABLE_STRING                  = 3
	constant integer   bj_HASHTABLE_HANDLE                  = 4
0
8
1 год назад
Отредактирован Centyrion
0

» WarCraft 3 / Доска Статистики

сдаюсь

loop
exitwhen k >= F_MaxPlayers()
if GetPlayerSlotState(Player(k)) == PLAYER_SLOT_STATE_PLAYING and GetPlayerSlotState(Player(k)) != PLAYER_SLOT_STATE_EMPTY then
call MultiboardSetRowCount(udg_MB, k + 2)
endif
set k = k + 1
endloop
что же ему не хватает

он все равно добавляет эти иконки
попробую по другому

если указать в качестве строки переменную типа массив с порядковым номером игрока и через эту нативку установить кол-во строк то оно не сработает....так как функция не умеет считать кол-во игроков

или 2 вариант...когда цикл достиг конца и условие выполнилось.. взять и добавить булевую переменную в качестве остановки цикла
простым языком цикл будет выполнятся до тех пор пока не сработает условие выхода из цикла а условие не сработает так как она добавит только лишнее
или 3 вариант в качестве выхода из цикла указать кол-во игроков и дальше ручками править

Возможно ошибка в коде, попробуй
local integer l = 0
local integer i = 0
loop
exitwhen i >= 10
if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING and GetPlayerSlotState(Player(i)) != PLAYER_SLOT_STATE_EMPTY then
call MultiboardSetRowCount(udg_MB, l + 2)
set l = l + 1
endif
set i = i + 1
endloop
этот вариант сработал

но
loop
exitwhen k >= F_MaxPlayers()
if GetPlayerSlotState(Player(k)) == PLAYER_SLOT_STATE_PLAYING and GetPlayerSlotState(Player(k)) != PLAYER_SLOT_STATE_EMPTY then
set r = r + 1
call MultiboardSetRowCount(udg_MB, r + 1) //не + 2 а + 1 так как цикл уже запущен
endif
set k = k + 1
endloop

но надо перестроить и другие функции.

10 строк кода вместо одной функции и 1 переменная )) оригинально ))

спасибо за ответ
Загруженные файлы
0
8
1 год назад
0

» WarCraft 3 / Доска Статистики

Borodach:
пробовал и так, нивкакую не хочет
перестроил полностью функцию
проблема была и в этом и в другом
MultiboardSetRowCount мне оно понадобилось чтобы не указать переменную которая проверяет кол-во игроков которые играют и так далее
чтобы было все понятно

создал цикл и поставил в начале функции
постоянно забываю про порядок выполнения кода
если не соблюдать порядок строк оно и не заработает
0
8
1 год назад
Отредактирован Centyrion
0

» WarCraft 3 / Доска Статистики

грешу на то что в цикле нельзя установить кол-во строк таблицы
только присвоить переменную которая проверит кто играет и кто нет и установить кол-во строк
0
8
1 год назад
Отредактирован Centyrion
0

» WarCraft 3 / Как установить сложность компьютера?

Изменить состояние фиксированного слота вряд-ли возможно, главное зачем это делать, если на слоте всегда будет один и тот же ИИ? Просто при инициализации запускаешь нужный скрипт и всё
все верно, можно еще в Игровые константы изменить имя компьютерного игрока и дальше запилить свой ИИ
он имел в виду
если здесь можно изменить
Загруженные файлы
0
8
1 год назад
0

» WarCraft 3 / Работа с StringHash

мне известно что каждый объект который создается занимает в памяти определенное кол-во байтов
Uint32 это четыре байта. Ну и строки остаются в памяти до конца игры.
Только чтоб это сказалось на производительности, это нужно специально постараться.
про типы данных тоже прочел, да и С++ тоже знаком с ним, небось скоро начну писать библиотеки
0
8
1 год назад
0

» WarCraft 3 / Работа с StringHash

Выше всё правильно сказали, integer по определению не может вызывать утечек, также
Centyrion:
прочел тут
-Данная функция абсолютно не криптостойкая, она генерирует 32-битный ключ и её исходники есть в интернете
Поэтому ничего не стоит сделать брутфорсер и узнать, что за герой будет у тебя создаваться
Где-то на гитхабе видел готовый брутфорсер на java.
ну про взлом я пока не думаю )) да и врятли кто-то заморочиться внедрять читпаки и мемхаки, это больше делаю для проверки имени игрока и проверки если игрок который насолил кому-то зашел поиграть а тут бац не может играть потому что он в списке забаненых игроков.
0
8
1 год назад
0

» WarCraft 3 / [GUI] Тригер "отказывает" в запуске карты, или крашит игру.

смотри я тебе дал готовый пример как должно все работать, он будет крашится если не соблюдать правила
даю тебе карту где наглядно есть подобный механизм от него и отталкивайся
Загруженные файлы
0
8
1 год назад
0

» WarCraft 3 / [GUI] Тригер "отказывает" в запуске карты, или крашит игру.

я тебе в 10 раз говорю НИКОГДА не используй вейты в Циклах
Ну не знаю, я использовал на практике специальную функцию, где есть таймер и цикл, а в цикле вейт(!) на 1 сек, цикл работает, пока не истекает таймер. Так вот, с ней никогда никаких ошибок и крашей не было, всё стабильно. Даже на паузе. Версия 1.26а
в мултиплеере она себя проявит. это только надо поиграть на 2 машинах которые не находятся в одной локалке

Остаётся узнать - ПОЧЕМУ? Почему способность сама по себе работает, а обращение к ней тригера, даже если сам тригер не активируется, ломает игру?
потому что нельзя кастовать пассивную способность.

function BackEnd takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer id=GetHandleId(t)
local unit c=LoadUnitHandle(udg_HT,id,0)
call UnitRemoveAbility(c,'A06I') // здесь убираем абилку и очищаем следы
call DestroyTimer(t)
call FlushChildHashtable(udg_HT,id)
set t=null
set c=null
endfunction
function Back takes nothing returns nothing
local unit u=GetSpellAbilityUnit()
local timer t=CreateTimer()
call SaveUnitHandle(udg_HT,GetHandleId(t),0,u)
call UnitAddAbility(u,'A06I') // это пассивная абилка
call TimerStart(t,0.5,false,function BackEnd) //запускаем таймер чтобы делать чтото
set u=null
set t=null
endfunction

ответ дал. как надо кастовать скил и как с ним работать

Я в коде полный 0. Скилл сейчас переделаю, поменяю по-разному, посмотрю.
тогда иди читай гайды как создать первоклассный скил
0
8
1 год назад
0

» WarCraft 3 / Работа с StringHash

а использовал конструкцию когда-то но она вызывала десинхронизацию в мултиплеере

Centyrion, это обыкновенный хэш. Там нечему утекать и ломаться в мультиплеере. Его часто используют для именования ключей хэш-таблиц.
Да и чтоб вызвать просадки производительности, его нужно очень много раз вызвать.
спасибо за ответ.
Загруженные файлы
0
8
1 год назад
0

» WarCraft 3 / Работа с StringHash

Centyrion, это обыкновенный хэш. Там нечему утекать и ломаться в мультиплеере. Его часто используют для именования ключей хэш-таблиц.
Да и чтоб вызвать просадки производительности, его нужно очень много раз вызвать.
Ну, мне известно что каждый объект который создается занимает в памяти определенное кол-во байтов, поэтому я постараюсь его особо не использовать,
вот пример где это используется
ну я и подумал использовать его
Загруженные файлы
0
8
1 год назад
0

» WarCraft 3 / Работа с StringHash

((цитата
создает ли эта нативка утечки или чтото такое
Нет.
и в мултиплеере как она себя поведет не вызовет десинх или все нормально будет
Не вызовет.
))
спасибо) побоялся что если при инициализации карты сохраню все имена игроков в хэш таблицу и когда попытаюсь достать эти значения по ключу игра крашнится или вылетит