Скрипты - Страница 200 - Форум HeroesWorld-а

Быстрая навигация по основным разделам форума:
Турниры
КАРТЫ
Heroes 6
Heroes 5
Heroes 4
Heroes 3
Heroes 2
Heroes 1
Might&Magic

Герои Меча и Магии 5 - Картостроительство (Редактор карт) В этом разделе можно обсуждать все что касается редактора карт для Heroes of Might and Magic V. Так же здесь обсуждаем картостроительство.

Ответ
Страница 200 из 260
 
Опции темы
#2986
Старый 02.01.2020, 22:35
  #2986
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

GrigoriyОрку через скрипт можно как-то добавить походные заклинания? Стандартной командой не выходит
скорее всего нельзя, орки(точнее любой герой с гневом) учить заклинания вообще никаким способом неспособны
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#2987
Старый 02.01.2020, 22:58
  #2987
^
JonnyP
📖
Регистрация: 01.09.2011
Сообщения: 462
Отправить сообщение для  JonnyP с помощью ICQ
Регистрация: 01.09.2011
Сообщения: 462
Отправить сообщение для  JonnyP с помощью ICQ
По умолчанию
Re: Скрипты

OrnsteinDragonslayerРебята, у меня возник вопрос. Подскажите, что не так?
Условия: есть эльфийский город, принадлежащий, собсна, эльфу (игрок 3). Если его захватит Игрок 2, то провал задания и проигрыш.
...
Эта команда не справляется. После захвата города ничего не происходит. Ошибок никаких нет. Где я мог ошибиться? Спасибо заранее

Вообще, реализация с зацикленной проверкой не самый оптимальный вариант.
Как то так, наверное (в игре не проверял)

Нажмите на изображение для увеличения
Название: Untitled-1.png
Просмотров: 21
Размер:	31.3 Кбайт
ID:	61050
JonnyP вне форума
Ответить с цитированием
#2988
Старый 04.01.2020, 23:05
  #2988
^
Killer5029
📖
Регистрация: 04.01.2020
Сообщения: 27
Регистрация: 04.01.2020
Сообщения: 27
По умолчанию
Re: Скрипты

Привет) помогите, пожалуйста. Я хочу чтоб по прошествию какого то времени, игрок захвативший город смог купить все накопленные войска в нейтральном городе, а он «нейтральный город» откуда то берет деньги и сам их покупает. Я даже отключил в настройках возможность постройки ратуши, но это все равно не помогло(
Killer5029 вне форума
Ответить с цитированием
#2989
Старый 04.01.2020, 23:53
  #2989
^
OrnsteinDragonslayer
 
Аватар для OrnsteinDragonslayer
📖
Регистрация: 10.01.2016
Сообщения: 172
Регистрация: 10.01.2016
Сообщения: 172
По умолчанию
Re: Скрипты

JonnyPВообще, реализация с зацикленной проверкой не самый оптимальный вариант.
Как то так, наверное (в игре не проверял)

Вложение 61050

Не помогает, проблема всё та же - задание не проваливается, никто не проигрывает, консоль ошибки не видит.
А единичка, кстати потому, что задание проваливается для первого игрока.
	function onObjectCapture( prevOwner, newOwner, hero, object )
         if prewOwner == PLAYER_3 and newOwner == PLAYER_2 then
          Trigger( OBJECT_CAPTURE_TRIGGER, 'houseElf', nil )
          SetObjectiveState ('q4', OBJECTIVE_FAILED, PLAYER_1 )
          sleep(10)
          Loose()
         end
end
Trigger(OBJECT_CAPTURE_TRIGGER, 'houseElf', 'onObjectCapture' )
OrnsteinDragonslayer вне форума
Ответить с цитированием
#2990
Старый 05.01.2020, 13:37
  #2990
^
MasteR
 
Аватар для MasteR
📖
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
По умолчанию
Re: Скрипты

OrnsteinDragonslayerНе помогает, проблема всё та же - задание не проваливается, никто не проигрывает, консоль ошибки не видит.
А единичка, кстати потому, что задание проваливается для первого игрока.
	function onObjectCapture( prevOwner, newOwner, hero, object )
         if prewOwner == PLAYER_3 and newOwner == PLAYER_2 then
          Trigger( OBJECT_CAPTURE_TRIGGER, 'houseElf', nil )
          SetObjectiveState ('q4', OBJECTIVE_FAILED, PLAYER_1 )
          sleep(10)
          Loose()
         end
end
Trigger(OBJECT_CAPTURE_TRIGGER, 'houseElf', 'onObjectCapture' )


function onObjectCapture(PrevOwner, NewOwner)

if PrevOwner == 3 and NewOwner == 2 then

Trigger(5, 'houseElf', nil)
SetObjectiveState ('q4', 4, 1)
sleep(10)
Loose()

end

end

Trigger(5, 'houseElf', 'onObjectCapture')

Внимательнее надо с именами переменных
MasteR вне форума
Ответить с цитированием
#2991
Старый 05.01.2020, 13:41
  #2991
^
JonnyP
📖
Регистрация: 01.09.2011
Сообщения: 462
Отправить сообщение для  JonnyP с помощью ICQ
Регистрация: 01.09.2011
Сообщения: 462
Отправить сообщение для  JonnyP с помощью ICQ
По умолчанию
Re: Скрипты

OrnsteinDragonslayerНе помогает, проблема всё та же - задание не проваливается, никто не проигрывает, консоль ошибки не видит.
Суть ошибки я передал - функция принимает 4 параметра + излишняя проверка с бесконечным циклом. Возможно синтаксис неверный (я писал что не проверял в игре).
Попробуй "print"-ы повставлять, посмотри что в консоли будет.
... А единичка, кстати потому, что задание проваливается для первого игрока.
... Условия: есть эльфийский город, принадлежащий, собсна, эльфу (игрок 3). Если его захватит Игрок 2, то провал задания и проигрыш.
Чтобы не было путаницы используй константы - PLAYER_1, PLAYER_... и т.д., это неплохая устоявшаяся практика.
В условиях такого не было, поэтому расценил это как ошибку, но это в принципе не важно.

Master...Внимательнее надо с именами переменных
В смысле? Я не нахожу отличий. Если речь про стиль написания переменных то это не имеет значения (PascalCase или camelCase).
JonnyP вне форума
Ответить с цитированием
#2992
Старый 05.01.2020, 13:41
  #2992
^
MasteR
 
Аватар для MasteR
📖
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
По умолчанию
Re: Скрипты

Killer5029Привет) помогите, пожалуйста. Я хочу чтоб по прошествию какого то времени, игрок захвативший город смог купить все накопленные войска в нейтральном городе, а он «нейтральный город» откуда то берет деньги и сам их покупает. Я даже отключил в настройках возможность постройки ратуши, но это все равно не помогло(

Может это можно как-то легче сделать, но я бы в такой ситуации не строил бы изначально ни одного здания с существами в этом городе. После того, как город перейдет к игроку, скриптами можно построить любые здания в этом городе, а также (вроде) добавить существ для выкупа.
MasteR вне форума
Ответить с цитированием
#2993
Старый 05.01.2020, 17:23
  #2993
^
Killer5029
📖
Регистрация: 04.01.2020
Сообщения: 27
Регистрация: 04.01.2020
Сообщения: 27
По умолчанию
Re: Скрипты

MasteRМожет это можно как-то легче сделать, но я бы в такой ситуации не строил бы изначально ни одного здания с существами в этом городе. После того, как город перейдет к игроку, скриптами можно построить любые здания в этом городе, а также (вроде) добавить существ для выкупа.
Не помнишь какой командой можно построить здания в городе?
Killer5029 вне форума
Ответить с цитированием
#2994
Старый 05.01.2020, 17:31
  #2994
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

Killer5029Не помнишь какой командой можно построить здания в городе?
UpgradeTownBuilding(имя_города, id здания)

по поводу добавления существ для выкупа - для этого есть функция SetObjectDwellingCreatures(имя_города, id существа, число)
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#2995
Старый 05.01.2020, 17:55
  #2995
^
MasteR
 
Аватар для MasteR
📖
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
По умолчанию
Re: Скрипты

JonnyPВ смысле? Я не нахожу отличий. Если речь про стиль написания переменных то это не имеет значения (PascalCase или camelCase).

В параметре функции prevOwner, а в теле функции prewOwner.
MasteR вне форума
Ответить с цитированием
#2996
Старый 05.01.2020, 17:57
  #2996
^
Killer5029
📖
Регистрация: 04.01.2020
Сообщения: 27
Регистрация: 04.01.2020
Сообщения: 27
По умолчанию
Re: Скрипты

GerterUpgradeTownBuilding(имя_города, id здания)

по поводу добавления существ для выкупа - для этого есть функция SetObjectDwellingCreatures(имя_города, id существа, число)
я написал такой скрипт(не работает)
local a=0;
function Armia()
local day=GetDate(3);
if day == 0
then a=a+1;
end;
end;

Trigger(NEW_DAY_TRIGGER, "Armia");

function zoloto()
if prewOwner == PLAYER_NOON and newOwner == PLAYER_NAME
then SetObjectDwellingCreatures('houseInferno', 16, 35*a);
SetObjectDwellingCreatures('houseInferno', 18, 34*a);
SetObjectDwellingCreatures('houseInferno', 20, 18*a);
SetObjectDwellingCreatures('houseInferno', 22, 10*a);
SetObjectDwellingCreatures('houseInferno', 24, 7*a);
SetObjectDwellingCreatures('houseInferno', 26, 4*a);
SetObjectDwellingCreatures('houseInferno', 28, 2*a);

end;
end;

Trigger( OBJECT_CAPTURE_TRIGGER, 'houseInferno', "zoloto")

В чем может быть ошибка? подскажите пожалуйста)
Killer5029 вне форума
Ответить с цитированием
#2997
Старый 05.01.2020, 18:02
  #2997
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

Killer5029я написал такой скрипт(не работает)
local a=0;
function Armia()
local day=GetDate(3);
if day == 0
then a=a+1;
end;
end;

Trigger(NEW_DAY_TRIGGER, "Armia");

function zoloto()
if prewOwner == PLAYER_NOON and newOwner == PLAYER_NAME
then SetObjectDwellingCreatures('houseInferno', 16, 35*a);
SetObjectDwellingCreatures('houseInferno', 18, 34*a);
SetObjectDwellingCreatures('houseInferno', 20, 18*a);
SetObjectDwellingCreatures('houseInferno', 22, 10*a);
SetObjectDwellingCreatures('houseInferno', 24, 7*a);
SetObjectDwellingCreatures('houseInferno', 26, 4*a);
SetObjectDwellingCreatures('houseInferno', 28, 2*a);

end;
end;

Trigger( OBJECT_CAPTURE_TRIGGER, 'houseInferno', "zoloto")

В чем может быть ошибка? подскажите пожалуйста)

во-первых, вот так:
	local a = 0
вне функций лучше не писать
во-вторых, вот эта строчка:
	if prewOwner == PLAYER_NOON and newOwner == PLAYER_NAME
нейтральный игрок - это PLAYER_NONE. PLAYER_NAME - это что вообще? нужно использовать константы номера игрока, например, PLAYER_1.

кроме того, в определении функции zoloto нужно указать, что у нее есть параметры prewOwner и newOwner:
	function zoloto(prewOwner, newOwner)
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#2998
Старый 05.01.2020, 18:08
  #2998
^
Killer5029
📖
Регистрация: 04.01.2020
Сообщения: 27
Регистрация: 04.01.2020
Сообщения: 27
По умолчанию
Re: Скрипты

Gerterво-первых, вот так:
	local a = 0
вне функций лучше не писать
во-вторых, вот эта строчка:
	if prewOwner == PLAYER_NOON and newOwner == PLAYER_NAME
нейтральный игрок - это PLAYER_NONE. PLAYER_NAME - это что вообще? нужно использовать константы номера игрока, например, PLAYER_1.

кроме того, в определении функции zoloto нужно указать, что у нее есть параметры prewOwner и newOwner:
	function zoloto(prewOwner, newOwner)

PLAYER_NAME - это любой игрок. Я хочу чтоб скрипт работал, когда любой игрок захватит этот город
Killer5029 вне форума
Ответить с цитированием
#2999
Старый 05.01.2020, 18:14
  #2999
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

ну тогда вообще не надо проверять номер игрока, который захватывает город
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#3000
Старый 05.01.2020, 18:21
  #3000
^
Killer5029
📖
Регистрация: 04.01.2020
Сообщения: 27
Регистрация: 04.01.2020
Сообщения: 27
По умолчанию
Re: Скрипты

Gerterну тогда вообще не надо проверять номер игрока, который захватывает город
то есть можно оставить так?
local a = 0
function Armia()
local day=GetDate(3);
if day == 0
then a=a+1;
end;
end;

Trigger(NEW_DAY_TRIGGER, "Armia");

function zoloto()
SetObjectDwellingCreatures('houseInferno', 16, 35*a);
SetObjectDwellingCreatures('houseInferno', 18, 34*a);
SetObjectDwellingCreatures('houseInferno', 20, 18*a);
SetObjectDwellingCreatures('houseInferno', 22, 10*a);
SetObjectDwellingCreatures('houseInferno', 24, 7*a);
SetObjectDwellingCreatures('houseInferno', 26, 4*a);
SetObjectDwellingCreatures('houseInferno', 28, 2*a);

end;


Trigger( OBJECT_CAPTURE_TRIGGER, 'houseInferno', "zoloto")

Добавлено через 2 минуты
Gerterну тогда вообще не надо проверять номер игрока, который захватывает город
то есть можно так оставить?
local a = 0
function Armia()
local day=GetDate(3);
if day == 0
then a=a+1;
end;
end;

Trigger(NEW_DAY_TRIGGER, "Armia");

function zoloto()
SetObjectDwellingCreatures('houseInferno', 16, 35*a);
SetObjectDwellingCreatures('houseInferno', 18, 34*a);
SetObjectDwellingCreatures('houseInferno', 20, 18*a);
SetObjectDwellingCreatures('houseInferno', 22, 10*a);
SetObjectDwellingCreatures('houseInferno', 24, 7*a);
SetObjectDwellingCreatures('houseInferno', 26, 4*a);
SetObjectDwellingCreatures('houseInferno', 28, 2*a);

end;


Trigger( OBJECT_CAPTURE_TRIGGER, 'houseInferno', "zoloto")
Killer5029 вне форума
Ответить с цитированием
Ответ
Страница 200 из 260


Опции темы



Часовой пояс GMT +4, время: 19:05.


vBulletin v3.5.0, Copyright ©2000-2024, Jelsoft Enterprises Ltd. (Русский)

Яндекс цитирование    Top.Mail.Ru