Сообщения от Скрипты
local x, y, f = GetObjectPosition(имя_героя);
то f и будет номером этажа.
BlueHeavenHero, если написать
local x, y, f = GetObjectPosition(имя_героя);
то f и будет номером этажа.
Всякое/карты:
Добавление недостающей музыки гномам
Не думал, что это может быть так просто. Спасибо, сейчас попробую сделать снова
BlueHeavenHero, я себе на карте такую функцию написал:
function WhereAmI(obj)
local x, y, z = GetObjectPosition(obj);
if z == 0 then
return 0
elseif z == 1 then
return 1
end
endИспользование:
if heroName == "Duncan" then
if WhereAmI( heroName ) == 0 then
DuncanInGround = 1
elseif WhereAmI( heroName ) == 1 then
DuncanInGround = 0
end
end
Всякое/карты:
Добавление недостающей музыки гномам
x, y, f = GetObjectPosition(имя_героя);
Переменным желательно только присвоить более длинные имена, раз они видны из всего скрипта.
Всем привет, почитал на просторах форума и не только инфу про функцию talkboxforplayer, всё работает кроме одного, функция не видит коснувшегося героя. Окошко с вариантами есть, тексты ответов есть, кнопки есть, а вот героя не видит, и армию не выдает.
Замысел такой - случайный герой касается домика - выбирает ответ - получает армию.
Сам код взят из руководства Jack_of_shadows:
Зеленым цветом выделил правильный код, который я копировал, а красным код, который я писал под себя и он разумеется содержит где то ошибку
function DialogBox(icon, title, text, mode, callback, ...)
hero = human
if arg.n==1 then
TalkBoxForPlayers(GetCurrentPlayer(), icon, nil, text, nil, callback, mode, title, nil, 0, arg[1])
elseif arg.n==2 then
TalkBoxForPlayers(GetCurrentPlayer(), icon, nil, text, nil, callback, mode, title, nil, 0, arg[1], arg[2])
elseif arg.n==3 then
TalkBoxForPlayers(GetCurrentPlayer(), icon, nil, text, nil, callback, mode, title, nil, 0, arg[1], arg[2], arg[3])
elseif arg.n==4 then
TalkBoxForPlayers(GetCurrentPlayer(), icon, nil, text, nil, callback, mode, title, nil, 0, arg[1], arg[2], arg[3], arg[4])
elseif arg.n==5 then
TalkBoxForPlayers(GetCurrentPlayer(), icon, nil, text, nil, callback, mode, title, nil, 0, arg[1], arg[2], arg[3], arg[4], arg[5])
end;
end
Trigger (OBJECT_TOUCH_TRIGGER, "pokrov1", "Talk1");
function Talk1()
DialogBox("/UI/MessageBox/Message.xdb#xpointer(/Texture)","/UI/MessageBox/TalkBox/text.txt", "/Maps/Multiplayer/arena/voenachalnik1.txt", 1, "Talk1Callback", "/Maps/Multiplayer/arena/voenachalnik2.txt", "/Maps/Multiplayer/arena/voenachalnik3.txt", "/Maps/Multiplayer/arena/voenachalnik4.txt")
end
function Talk1Callback(pl, ans)
if (ans==1) and HasHeroSkill (human, 57)
then
AddHeroCreatures (human, 106, 50);
elseif (ans==2) and HasHeroSkill (human, 57)
then
AddHeroCreatures (human, 107, 50);
elseif (ans==3) and HasHeroSkill (human, 57)
then
AddHeroCreatures (human, 108, 50);
end;
end;
Благодарю за помощь
Всякое/карты:
Добавление недостающей музыки гномам
green belly, сразу же вижу что у тебя триггер не передаёт никакие аргументы в функцию с DialogBox'ом, т.е. в Talk1. А ещё у тебя как-то неверно прописано назначение переменной героя, с которым нужно что-либо делать. Для начала следует убрать строку hero = human из DialogBox(она там просто не нужна), строку function Talk1() заменить на function Talk1(hero), в самой функции добавить строку human = hero. Теперь скрипт будет знать кто такой human чтобы давать ему существ.
Спасибо, сделал, заработало.
Ранее никаких переменных и аргументов не указывал и не подтягивал
Снова я с TalkBoxForPlayers
Проблема такая, есть рабочий код, он прописан 8 раз для 8 игроков на касание 8 объектов. И тут начинается самый шок.
Для первых 2 функций - работает все идеально.
Для 3-8 функций - не вызывается диалог бокс.
Для этих же 3-8 функций вызывается строка else messagebox....
Сам код:
function pokrov1F(hero)
human = hero
if HasHeroSkill(human, 80)
then
DialogBox("/UI/MessageBox/Message.xdb#xpointer(/Texture)","/UI/MessageBox/TalkBox/text.txt", "/Maps/Multiplayer/arena/pokrov1.txt", 1, "pokrov1otvetF", "/Maps/Multiplayer/arena/pokrov2.txt", "/Maps/Multiplayer/arena/pokrov3.txt", "/Maps/Multiplayer/arena/pokrov4.txt", "/Maps/Multiplayer/arena/pokrov5.txt")
Trigger (OBJECT_TOUCH_TRIGGER, "pokrov1", nil);
else MessageBox("/Maps/Multiplayer/arena/netpokrov.txt");
end;
end;
Trigger (OBJECT_TOUCH_TRIGGER, "pokrov1", "pokrov1F");
function pokrov1otvetF(pl, ans)
if (ans==1)
then
ChangeHeroStat(human, STAT_ATTACK, 3);
elseif (ans==2)
then
ChangeHeroStat(human, STAT_SPELL_POWER, 3);
elseif (ans==3)
then
ChangeHeroStat(human, STAT_KNOWLEDGE, 3);
elseif (ans==4)
then
ChangeHeroStat(human, STAT_LUCK, 2);
end;
end;
Разумеется я меняю параметры для того чтобы работало на разных игроков
Меняю на цифры 2,3 и тд до 8, выделил жёлтым цветом меняемые параметры
Для меня неизвестно где проблема, потому что ВО ВСЕХ функциях реально проверяется наличие перка 80, ведь когда его нет показывается else messagebox, но как так для цифр 1 и 2 работает, а далее нет.