Ñêðèïòû - Ñòðàíèöà 206 - Ôîðóì HeroesWorld-à

Áûñòðàÿ íàâèãàöèÿ ïî îñíîâíûì ðàçäåëàì ôîðóìà:
Òóðíèðû
ÊÀÐÒÛ
Heroes 6
Heroes 5
Heroes 4
Heroes 3
Heroes 2
Heroes 1
Might&Magic

Ãåðîè Ìå÷à è Ìàãèè 5 - Êàðòîñòðîèòåëüñòâî (Ðåäàêòîð êàðò)  ýòîì ðàçäåëå ìîæíî îáñóæäàòü âñå ÷òî êàñàåòñÿ ðåäàêòîðà êàðò äëÿ Heroes of Might and Magic V. Òàê æå çäåñü îáñóæäàåì êàðòîñòðîèòåëüñòâî.

Îòâåò
Ñòðàíèöà 206 èç 261
 
Îïöèè òåìû
#3076
Ñòàðûé 21.01.2020, 18:48
  #3076
^
Gerter
 
Àâàòàð äëÿ Gerter
📖
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
pegn0ly#9113
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
pegn0ly#9113
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

я бы предложил вариант покороче даже:

	red_squads = {["red1"] = 1, ["red2"] = 1, ["red3"] = 1,  ["red4"] = 1, ["red5"] = 1, ["red6"] = 1, ["red7"] = 1, ["red8"] = 1, ["red9"] = 1, ["red10"] = 1,
["red11"] = 1, ["red12"] = 1, ["red13"] = 1, ["red14"] = 1, ["red15"] = 1};

rednumber = 0

function CheckRedStacks()
  while 1 do
    for stack, exists in red_squads do
      if exists and (not IsObjectExists(stack)) then
        red_squads[stack] = nil
        rednumber = rednumber + 1
        if GetObjectiveState('нужное_задание') == OBJECTIVE_ACTIVE then
           SetObjectiveProgress('нужное_задание', rednumber)
        end
      end
    end
    sleep()
  end
end

startThread(CheckRedStacks)
__________________
Íåò âîéíå.
Íåò âîéíå.
Gerter âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3077
Ñòàðûé 21.01.2020, 18:52
  #3077
^
JonnyP
📖
Ðåãèñòðàöèÿ: 01.09.2011
Ñîîáùåíèÿ: 462
Îòïðàâèòü ñîîáùåíèå äëÿ  JonnyP ñ ïîìîùüþ ICQ
Ðåãèñòðàöèÿ: 01.09.2011
Ñîîáùåíèÿ: 462
Îòïðàâèòü ñîîáùåíèå äëÿ  JonnyP ñ ïîìîùüþ ICQ
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

	
function CheckRedStacks() --конкретно у меня тут проверка существования
while 1 do
for i, stack in red_squads do
if IsObjectExists(stack) == nil then
rednumber = 0 + 1;
end;
end;
end;
end;

function Checking()
while 1 do
sleep(5);
if rednumber == 1 then
SetObjectiveProgress('sec1', 1);
elseif rednumber == 2 then
SetObjectiveProgress('sec1', 2);
--и т.д
end;
end;
end;


	
...
function CheckRedStacks()
  while 1 do
    for stack, exists in red_squads do
      if exists and (not IsObjectExists(stack)) then
        red_squads[stack] = nil
        rednumber = rednumber + 1
        if GetObjectiveState('нужное_задание') == OBJECTIVE_ACTIVE then
           SetObjectiveProgress('нужное_задание', rednumber)
        end
      end
    end
    sleep()
 end
end
...


А зачем добавлять конструкцию типа "while 1 do ... end" ?
Ничего против не имею, просто интересно
JonnyP âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3078
Ñòàðûé 21.01.2020, 19:04
  #3078
^
Gerter
 
Àâàòàð äëÿ Gerter
📖
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
pegn0ly#9113
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
pegn0ly#9113
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

для создания бесконечного цикла проверки, очевидно
__________________
Íåò âîéíå.
Íåò âîéíå.
Gerter âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3079
Ñòàðûé 21.01.2020, 19:19
  #3079
^
JonnyP
📖
Ðåãèñòðàöèÿ: 01.09.2011
Ñîîáùåíèÿ: 462
Îòïðàâèòü ñîîáùåíèå äëÿ  JonnyP ñ ïîìîùüþ ICQ
Ðåãèñòðàöèÿ: 01.09.2011
Ñîîáùåíèÿ: 462
Îòïðàâèòü ñîîáùåíèå äëÿ  JonnyP ñ ïîìîùüþ ICQ
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Gerterдля создания бесконечного цикла проверки, очевидно
Ок, задам по другому.
Какая цель этой бесконечной проверки?
JonnyP âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3080
Ñòàðûé 21.01.2020, 19:27
  #3080
^
Gerter
 
Àâàòàð äëÿ Gerter
📖
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
pegn0ly#9113
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
pegn0ly#9113
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

постоянно проверять существование стеков и обновлять прогресс задания при их уничтожении. конечно, мой цикл нужно дополнить условием выхода при прогрессе равном 15, но это мелочь уже.
__________________
Íåò âîéíå.
Íåò âîéíå.
Gerter âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3081
Ñòàðûé 21.01.2020, 19:41
  #3081
^
JonnyP
📖
Ðåãèñòðàöèÿ: 01.09.2011
Ñîîáùåíèÿ: 462
Îòïðàâèòü ñîîáùåíèå äëÿ  JonnyP ñ ïîìîùüþ ICQ
Ðåãèñòðàöèÿ: 01.09.2011
Ñîîáùåíèÿ: 462
Îòïðàâèòü ñîîáùåíèå äëÿ  JonnyP ñ ïîìîùüþ ICQ
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Gerterпостоянно проверять существование стеков и обновлять прогресс задания при их уничтожении. конечно, мой цикл нужно дополнить условием выхода при прогрессе равном 15, но это мелочь уже.
Понятно.
Просто у меня небольшое недоумение вызвала реализация, но в целом вполне рабочий вариант.
JonnyP âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3082
Ñòàðûé 21.01.2020, 19:58
  #3082
^
Gerter
 
Àâàòàð äëÿ Gerter
📖
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
pegn0ly#9113
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
pegn0ly#9113
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

ну предложи свой вариант, будет интересно глянуть
__________________
Íåò âîéíå.
Íåò âîéíå.
Gerter âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3083
Ñòàðûé 21.01.2020, 20:15
  #3083
^
JonnyP
📖
Ðåãèñòðàöèÿ: 01.09.2011
Ñîîáùåíèÿ: 462
Îòïðàâèòü ñîîáùåíèå äëÿ  JonnyP ñ ïîìîùüþ ICQ
Ðåãèñòðàöèÿ: 01.09.2011
Ñîîáùåíèÿ: 462
Îòïðàâèòü ñîîáùåíèå äëÿ  JonnyP ñ ïîìîùüþ ICQ
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Gerterну предложи свой вариант, будет интересно глянуть
Оптимальнее не использовать дополнительные бесконечные циклы. Как вариант, завязать проверку на COMBAT_RESULT, OBJECT_TOUCH или NEW_DAY.
Но в целом это не особо важно для скриптов к карте.
...
Набросал код в общих чертах (3 в одном). Не проверял.
	
-- Имена отрядов в редакторе карт
squadList = {
  "squad01", "squad02",	-- ... "squad99"
}


function connect()
  Trigger( NEW_DAY_TRIGGER, "onDateUpdate" )
  Trigger( COMBAT_RESULTS_TRIGGER, "onCombatFinish" )
  for i, squad in squadList do
    setSquadDisabled( squad )
    Trigger( OBJECT_TOUCH_TRIGGER, squad, "onObjectTouch" )	
  end
end


function setSquadDisabled( squad )
  SetObjectEnabled( squad, nil )
  -- SetDisabledObjectMode( squad, DISABLED_INTERACT )  -- меняет курсор
  -- SetMonsterSelectionType( squad, 0 ) -- убирает юбку
end


-- Если не критично ждать следующего дня (по сюжету или задумке)
function onDateUpdate()
  -- ...
  check()
end


-- Здесь есть возможность дополнительно узнать имя героя,
-- кол-во существ, результат битвы и т.д.
-- Суть способа - дополнительные расширенные возможности.
function onCombatFinish( index )
  -- local heroWinner = GetSavedCombatArmyHero( index, 1 )
  -- local heroLooser = GetSavedCombatArmyHero( index, 0 )
  check()
end


-- Здесь дополнительно придется узнавать стеки и их кол-во у обьекта,
-- или полностью завязать на скрипт исключая установки редактора.
-- Суть способа - запускать контролируемую проверку после боя.
function onObjectToucch( hero, object )
  StartCombat( hero, nil, ... , "check", ... ) -- ??? Куча разных параметров, мб ошибся
end


function check()
  local count = getSquadCount()
  if count == length( squadList ) then
    -- Убиты все отряды -> действия ...
  else
    -- Очевидно, что в редакторе должны быть указаны все ProgreesFile's
    -- в количестве равном кол-ву отрядов в списке squadList
    SetObjectiveProgress( , count )
  end
end


function getSquadCount()
  local count = 0
  for i, squad in squadList do
    if IsObjectExists( squad ) then
      count = count + 1
    end
  end
  return count
end


startThread( connect )

JonnyP âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3084
Ñòàðûé 22.01.2020, 02:41
  #3084
^
Izenhorn
📖
Ðåãèñòðàöèÿ: 17.01.2020
Ñîîáùåíèÿ: 2
Ðåãèñòðàöèÿ: 17.01.2020
Ñîîáùåíèÿ: 2
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Кстати тоже любопытные скрипты, спасибо. Можно много где применить. Правда для задания ожидать нового дня, когда тебе надо обновить задание в реальном времени, может быть критично
Izenhorn âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3085
Ñòàðûé 22.01.2020, 03:35
  #3085
^
Gerter
 
Àâàòàð äëÿ Gerter
📖
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
pegn0ly#9113
Âûñòàâêà íàãðàä
Ðåãèñòðàöèÿ: 16.07.2012
Àäðåñ: Ñàíêò-Ïåòåðáóðã
Ñîîáùåíèÿ: 830
pegn0ly#9113
Âûñòàâêà íàãðàä
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

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


а если говорить глобально, то триггеры в некоторых ситуациях просто неприменимы, в отличие от подобных потоков
__________________
Íåò âîéíå.
Íåò âîéíå.
Gerter âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3086
Ñòàðûé 22.01.2020, 14:36
  #3086
^
John_Lock
 
Àâàòàð äëÿ John_Lock
📖
Ðåãèñòðàöèÿ: 03.01.2017
Ñîîáùåíèÿ: 124
Ðåãèñòðàöèÿ: 03.01.2017
Ñîîáùåíèÿ: 124
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Есть ли какая-нибудь документация по пользованию расширенным редактором карт? Очень много интересного можно с ним сделать, но как работать я не знаю. Знаю, как только включить его.

Для расширенного редактора нужна лицензионная версия?

Спасибо за предоставленные выше коды)
John_Lock âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3087
Ñòàðûé 23.01.2020, 22:41
  #3087
^
JonnyP
📖
Ðåãèñòðàöèÿ: 01.09.2011
Ñîîáùåíèÿ: 462
Îòïðàâèòü ñîîáùåíèå äëÿ  JonnyP ñ ïîìîùüþ ICQ
Ðåãèñòðàöèÿ: 01.09.2011
Ñîîáùåíèÿ: 462
Îòïðàâèòü ñîîáùåíèå äëÿ  JonnyP ñ ïîìîùüþ ICQ
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Gerterмноговато лишних движений, имхо, для столь простых задач. ну да тут неважно, оба варианта рабочие, человек выберет, какой ему будет понятнее и удобнее.
а если говорить глобально, то триггеры в некоторых ситуациях просто неприменимы, в отличие от подобных потоков
Согласен. Если уж отходить от примера, то лучше поток вообще использовать только если другие варианты не подходят. Чем больше проверок (условий) тем лагучее карта.

User01322342Есть ли какая-нибудь документация по пользованию расширенным редактором карт? Очень много интересного можно с ним сделать, но как работать я не знаю. Знаю, как только включить его.
Для расширенного редактора нужна лицензионная версия?
...
Там вроде нет ничего такого особенного, чему стоит учиться. Различия точно не вспомню, но вроде из полезного позволяет открывать ресурсы игры, выбирать нужные окна (?), запаковывать изменения в архив карты, мб еще что-то. По линцензионной версии - скорее всего не имеет значения.
JonnyP âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3088
Ñòàðûé 25.01.2020, 20:07
  #3088
^
John_Lock
 
Àâàòàð äëÿ John_Lock
📖
Ðåãèñòðàöèÿ: 03.01.2017
Ñîîáùåíèÿ: 124
Ðåãèñòðàöèÿ: 03.01.2017
Ñîîáùåíèÿ: 124
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

JonnyPСогласен. Если уж отходить от примера, то лучше поток вообще использовать только если другие варианты не подходят. Чем больше проверок (условий) тем лагучее карта.


Там вроде нет ничего такого особенного, чему стоит учиться. Различия точно не вспомню, но вроде из полезного позволяет открывать ресурсы игры, выбирать нужные окна (?), запаковывать изменения в архив карты, мб еще что-то. По линцензионной версии - скорее всего не имеет значения.
В этом и проблема. Я не знаю как добавить на карту объекты из расширенного редактора.
John_Lock âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3089
Ñòàðûé 26.01.2020, 14:37
  #3089
^
JonnyP
📖
Ðåãèñòðàöèÿ: 01.09.2011
Ñîîáùåíèÿ: 462
Îòïðàâèòü ñîîáùåíèå äëÿ  JonnyP ñ ïîìîùüþ ICQ
Ðåãèñòðàöèÿ: 01.09.2011
Ñîîáùåíèÿ: 462
Îòïðàâèòü ñîîáùåíèå äëÿ  JonnyP ñ ïîìîùüþ ICQ
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

User01322342В этом и проблема. Я не знаю как добавить на карту объекты из расширенного редактора.
О каком "расширенном редакторе" идет речь? Он не дает возможности добавлять обьекты.
Или речь о моде?
JonnyP âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
#3090
Ñòàðûé 28.01.2020, 09:10
  #3090
^
dredknight
📖
Ðåãèñòðàöèÿ: 24.10.2015
Ñîîáùåíèÿ: 709
dredknight#9852
Ðåãèñòðàöèÿ: 24.10.2015
Ñîîáùåíèÿ: 709
dredknight#9852
Ïî óìîë÷àíèþ
Re: Ñêðèïòû

Is there a way to get what object is on specific coordinates?

For example GetObjectFromLocation(x,y)

Or the only way is to rotate through all existing objects on the map and check them one by one?
dredknight âíå ôîðóìà
Îòâåòèòü ñ öèòèðîâàíèåì
Îòâåò
Ñòðàíèöà 206 èç 261


Îïöèè òåìû



×àñîâîé ïîÿñ GMT +4, âðåìÿ: 14:49.


vBulletin v3.5.0, Copyright ©2000-2024, Jelsoft Enterprises Ltd. (Ðóññêèé)

ßíäåêñ öèòèðîâàíèå    Top.Mail.Ru