Сейчас 15:11:39 Пятница, 29 марта, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Как исключить точку из нескольких рандомных точек
Как исключить точку из нескольких рандомных точек
Samedy_Дата: Среда, 10 Июня 2015, 15:03:15 | Сообщение # 1
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Есть три точки(rect=точка): A, B и C. При входе в одну из точек, героя тпшит к другой точке.
В данный момент, тп происходит так: вошел в A, тпшнуло в A, B или C.
А нужно, чтобы было так: вошел в A, тпшнуло в B или C.
Собственно вопрос заключается скорее в том, как исключить ту точку, в которой находится герой в данный момент.

Решения, в которых понадобится jngp не предлагать
Да сохранит Аллах того, кто предложит решение на ГУИ.

Добавлено (10 Июня 2015, 15:00:37)
---------------------------------------------
И еще, не могу в common.j найти функцию типа DestroyDialogButton. Подобная есть? Либо как сделать так, чтобы установить кнопке диалога(Button[1], например) значение на null.
Может udg_Button[1] = null сканает? :D

Добавлено (10 Июня 2015, 15:03:15)
---------------------------------------------

Цитата Samedy_ ()
Может udg_Button[1] = null сканает?

Реально сканало)


Сообщение отредактировал Samedy_ - Среда, 10 Июня 2015, 14:23:38
 

KaotikaДата: Среда, 10 Июня 2015, 15:50:36 | Сообщение # 2
5 уровень
Группа: Проверенные
Сообщений: 144
Награды: 0
Репутация: 20
Блокировки:
(location=точка)

Цитата Samedy_ ()
как исключить ту точку, в которой находится герой

проверяй условием

Добавлено (10 Июня 2015, 15:36:44)
---------------------------------------------
Цитата Kaotika ()
DestroyDialogButton


нельзя уничтожать Бутоны.

Добавлено (10 Июня 2015, 15:42:23)
---------------------------------------------


Добавлено (10 Июня 2015, 15:50:36)
---------------------------------------------
Цитата Samedy_ ()
И еще, не могу в common.j найти функцию типа DestroyDialogButton. Подобная есть? Либо как сделать так, чтобы установить кнопке диалога(Button[1], например) значение на null.
Может udg_Button[1] = null сканает? :D


я бы использовал это:

Очищаем диалог, дальше создаём его (опять) с нужными бутонами


Тискаю клаву... остальных пока некогда!


Сообщение отредактировал Kaotika - Среда, 10 Июня 2015, 15:52:02
 

Samedy_Дата: Среда, 10 Июня 2015, 16:57:40 | Сообщение # 3
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Цитата Kaotika ()
Очищаем диалог, дальше создаём его (опять) с нужными бутонами

Да, я в итоге так и сделал)
Цитата Kaotika ()
(location=точка)

Я имел в виду, что у меня в качестве точки задан рект.
Цитата Kaotika ()
проверяй условием

Я не догоняю каким. Точки-то рандомные.

Добавлено (10 Июня 2015, 16:57:40)
---------------------------------------------
Есть конечно вариант делать Вошел в А и если рандом равно 1, то тп к B, а если рандом равно 2, то тп к C...
Но ведь должен быть другой способ, да?

 

KaotikaДата: Среда, 10 Июня 2015, 17:23:02 | Сообщение # 4
5 уровень
Группа: Проверенные
Сообщений: 144
Награды: 0
Репутация: 20
Блокировки:
см. скрин

Тискаю клаву... остальных пока некогда!
 

Samedy_Дата: Среда, 10 Июня 2015, 17:33:51 | Сообщение # 5
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Цитата Kaotika ()
см. скрин

Не понимаю как это поможет. Даже протестить решил - толку ноль. Может я тупой и там нужно как-то изменить сам регион? Но как? он ведь рандомный.
 

KaotikaДата: Среда, 10 Июня 2015, 18:23:29 | Сообщение # 6
5 уровень
Группа: Проверенные
Сообщений: 144
Награды: 0
Репутация: 20
Блокировки:
массивами.

Если нужно, то сделаю только на jass. а то париться на гуи не хочется


Тискаю клаву... остальных пока некогда!
 

Samedy_Дата: Среда, 10 Июня 2015, 23:06:09 | Сообщение # 7
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Цитата Kaotika ()
Если нужно, то сделаю только на jass. а то париться на гуи не хочется

Если это не сложно - сделай, потому что я додуматься не могу. Если затрудняет (на jass) подтолкни меня, скажи от какой функции первоначально бежать, я постараюсь сам сделать)
 

НаклзДата: Среда, 10 Июня 2015, 23:39:34 | Сообщение # 8
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
Вот мой вариант http://rghost.ru/8y9tjRvn2
Ну вариант с локалками не получилось реализовать в одном триггере, потому что он должен быть в текстовом виде, а если делать через Custom Script будут условия глючить. Вариант с глобалками понятней, но если одновременно в области (хоть в одну, хоть в разные, главное одновременно) зайдут несколько юнитов, то шанс бага будет расти из за возможности перезаписать глобальные переменные, и расти он будет пропорционально увеличению количества одновременно входящих юнитов.
 

Samedy_Дата: Четверг, 11 Июня 2015, 00:23:32 | Сообщение # 9
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Цитата Наклз ()
Ну вариант с локалками не получилось реализовать в одном триггере, потому что он должен быть в текстовом виде

Так не велика беда. Считай, ты дал мне домашнее задание)))
Спасибо, буду разбираться.
Вот еще такой вопрос, почему не работает вот это:
local unit hu
set hu = GetOwningPlayer(GetTriggerUnit()) == Player(0)
set udg_unit = hu
call ShowUnitHide(udg_unit)
и как сделать правильно?


Сообщение отредактировал Samedy_ - Четверг, 11 Июня 2015, 00:50:41
 

НаклзДата: Четверг, 11 Июня 2015, 07:32:42 | Сообщение # 10
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
Эм, на вопрос "как сделать правильно" я ответить не могу, так как я даже не понимаю чего ты пытался добиться второй строчкой кода.
Почему не работая, объясняю:
Ты объявляешь переменную типа "юнит" (local unit hu) , потом пытаешь в переменную типа юнит записать ИГРОКА. Функция GetOwningPlayer вернёт владельца юнита GetTriggerUnit(). Понимаешь в чем ошибка? И да, это ещё что такое "== Player(0)" ? Или это что бы показать мне какого игрока вернёт функция? Потому что если сделать так в карте, то... в общем, два знака присваивания(==) в коде означают "равенство", использовать это можно только в условии.

И да, я кажись понял, если ты хочешь "показать" юнита GetTriggerUnit(), то почему бы не сделать это вот так

call ShowUnitHide(GetTriggerUnit())
 

BiboДата: Четверг, 11 Июня 2015, 07:48:12 | Сообщение # 11
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
Цитата Наклз ()
Ты объявляешь переменную типа "юнит" (local unit hu) , потом пытаешь в переменную типа юнит записать ИГРОКА.

Поправка:
он объявляет переменную типа unit
Код
local unit hu

после, пытается присвоить этой переменной значение типа boolean, совершая операцию сравнения.
Код
set hu = GetOwningPlayer(GetTriggerUnit()) == Player(0)

Цитата Наклз ()
И да, я кажись понял, если ты хочешь "показать" юнита GetTriggerUnit(), то почему бы не сделать это вот так
call ShowUnitHide(GetTriggerUnit())

Эта функция скрывает юнита. Чтобы показать, используется ShowUnitShow, однако, нагляднее использовать нативку
Код
call ShowUnit(GetTriggerUnit(), true)
 

НаклзДата: Четверг, 11 Июня 2015, 07:49:35 | Сообщение # 12
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
Цитата Bibo ()
он объявляет переменную типа unit

я так и сказал
Цитата Bibo ()
после, пытается присвоить этой переменной значение типа boolean, совершая операцию сравнения.

разве условие будет работать без скобок?
 

BiboДата: Четверг, 11 Июня 2015, 07:56:12 | Сообщение # 13
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
Цитата Наклз ()
разве условие будет работать без скобок?

Прежде выполнения операции присваивания, будут выполнены операции справа от знака присваивания.
 

Samedy_Дата: Четверг, 11 Июня 2015, 09:53:20 | Сообщение # 14
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Дело просто в том, что мне нужно спрятать, а позже показать юнита определенного игрока, который будет записан в "hu" (юнит в hu, а не игрок, конечно).

Сообщение отредактировал Samedy_ - Четверг, 11 Июня 2015, 09:53:49
 

BiboДата: Четверг, 11 Июня 2015, 10:11:02 | Сообщение # 15
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
Код
local unit hu = GetTriggerUnit()
call ShowUnit(hu, false)
set udg_unit = hu
set hu = null

Когда нужно показать
Код
call ShowUnit(udg_unit , true)
 

Samedy_Дата: Четверг, 11 Июня 2015, 10:14:54 | Сообщение # 16
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Цитата Bibo ()
local unit hu = GetTriggerUnit()
call ShowUnit(hu, false)
set udg_unit = hu
set hu = null

В таком случае ведь не скроется юнит именно игрока 0 или 1.
Я делал через выбор всех юнитов игрока, но понял что это не то, что нужно. Юниты скрываются через n секунд после инициализации, а после определенного условия снова появляются.
 

BiboДата: Четверг, 11 Июня 2015, 10:22:55 | Сообщение # 17
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
Код
local unit hu = GetTriggerUnit()  
if GetOwningPlayer(hu) == Player(0) then
     call ShowUnit(hu, false)  
endif
set udg_unit = hu  
set hu = null
 

Samedy_Дата: Четверг, 11 Июня 2015, 10:47:16 | Сообщение # 18
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Цитата Bibo ()
local unit hu = GetTriggerUnit()
if GetOwningPlayer(hu) == Player(0) then
call ShowUnit(hu, false)
endif
set udg_unit = hu
set hu = null

Ух-ты, я даже не знал что можно так условия использовать. Теперь понимаю, почему говорят, что без jassa ничего не сделать.) спасибо)

Добавлено (11 Июня 2015, 10:41:12)
---------------------------------------------
:'(

Добавлено (11 Июня 2015, 10:45:39)
---------------------------------------------
Глобальная unit создана, если что.

Добавлено (11 Июня 2015, 10:47:16)
---------------------------------------------
А, все, доперло до меня, кажется.

Сообщение отредактировал Samedy_ - Четверг, 11 Июня 2015, 10:46:00
 

BiboДата: Четверг, 11 Июня 2015, 10:47:50 | Сообщение # 19
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
Цитата Наклз ()
Вот мой вариант http://rghost.ru/8y9tjRvn2

Альтернативный пример случайного перемещения без использования Jass-а, однако, только с использованием JNGP.


Сообщение отредактировал Bibo - Четверг, 11 Июня 2015, 10:47:59
 

KaotikaДата: Четверг, 11 Июня 2015, 10:48:42 | Сообщение # 20
5 уровень
Группа: Проверенные
Сообщений: 144
Награды: 0
Репутация: 20
Блокировки:
по всей видимости - разобрался с вопросом)



Тискаю клаву... остальных пока некогда!
 

Samedy_Дата: Четверг, 11 Июня 2015, 10:52:05 | Сообщение # 21
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Цитата Kaotika ()
Брат, переходи на Jass New Gen Pack и работай с jass'ом - понравится

Я создавал уже тему, где описывал почему не могу его использовать. :(
Я чуть ли не каждый день пытаюсь что-то сделать, но карты созданные там все время крашатся в мультиплеере.
 

НаклзДата: Четверг, 11 Июня 2015, 13:57:14 | Сообщение # 22
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
Цитата Bibo ()
Альтернативный пример случайного перемещения без использования Jass-а, однако, только с использованием JNGP.

Если одновременно зайдут два юнита то велик шанс что телепортируеться только один, не так ли?
 

BiboДата: Четверг, 11 Июня 2015, 14:15:21 | Сообщение # 23
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
Цитата Наклз ()
Если одновременно зайдут два юнита то велик шанс что телепортируеться только один, не так ли?

Иной задачи поставлено не было.
 

НаклзДата: Четверг, 11 Июня 2015, 17:38:37 | Сообщение # 24
10 уровень
Группа: Проверенные
Сообщений: 1431
Награды: 0
Репутация: 760
Блокировки:
Цитата Samedy_ ()
Ух-ты, я даже не знал что можно так условия использовать. Теперь понимаю, почему говорят, что без jassa ничего не сделать.) спасибо)

Грубо говоря, то что тут сделано можно и на ГУИ сделать

Добавлено (11 Июня 2015, 17:38:37)
---------------------------------------------
Можно условие и вверх кинуть, но так сделал на случай использования циклов

Сообщение отредактировал Наклз - Четверг, 11 Июня 2015, 17:37:11
 

BorodachДата: Четверг, 11 Июня 2015, 19:57:14 | Сообщение # 25
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
Если локально скрывать юнита будет десинк. Можно только локально дать ему прозрачность.

Karamba
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Как исключить точку из нескольких рандомных точек
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz