AlexKARASb
Learning cpp
offline
Опыт:
22,103Активность: |
Ограничение движения дамми
Дамми передвигается переодическим триггером
Как выставить ограничение в функции так чтобы дамми удалялся до выхода за пределы карты |
31.01.2010, 22:47 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
XOR
offline
Опыт:
38,284Активность: |
if GetRectMax/MinX/Y(bj_initial_map_area) <> GetUnitX/Y И у векса была такая библиотека. |
31.01.2010, 22:58 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
если новые координаты выходят за пределы игровой зоны не выполнять передвижение или вовсе его прекратить.
библиотека векса же заставляет юнита вести себя жутким образом. |
01.02.2010, 07:58 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SRes
1110101000
offline
Опыт:
9,997Активность: |
Любезно поделюсь готовыми функциями (для ленивых) :
Код:
|
01.02.2010, 09:38 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
AlexKARASb
Learning cpp
offline
Опыт:
22,103Активность: |
Добрый всем вечер Немогли бы мне оъяснить private это что за функция? ни разу не пробовал их сделать, да и вообще не сталкивался |
05.02.2010, 20:16 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nekit1234007
offline
Опыт:
11,916Активность: |
private ограничивает видимость функции (и не только их) в библиотеках, областях и во многих других местах в вДжассе.
Код:
|
05.02.2010, 20:27 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sunn
To feel joy, not be blue
offline
Опыт:
4,975Активность: |
По сути ничего такого астрального в private функциях нет. ВЖасс просто прибавляет приватные префиксы к именам всех переменных и функцияй, которые были обьявлены как приватные, т.е. если рассмотреть пример Некита, то написав не
Код:
а Код:
мы бы таки вызвали эту приватную функцию, хоть по идее и не можем этого делать. Приватными можно смело обьявлять все внутренние переменные и функции всяческих системок во избежание конфликтов имен и неосторожных вызовов. Всю эту билиберду с именами важно помнить при использовании ExecuteFunc. Ибо фаталы. |
05.02.2010, 21:10 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nekit1234007
offline
Опыт:
11,916Активность: |
Sunn, неполучицца, после каждой компиляции количество "_" меняется.
|
05.02.2010, 21:14 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sunn
To feel joy, not be blue
offline
Опыт:
4,975Активность: |
Кстати да. Раньше не замечал. Где-то каждая из трёх-четырёх компиляций ругается на неизвестную функцию.
Вот так вот. |
05.02.2010, 21:18 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
AlexKARASb
Learning cpp
offline
Опыт:
22,103Активность: |
~Nekit1234007, тоесть для того чтобы сделать в моем таймере по движению ограничение нужно:
1)создать библиотеку а в ней приват функцию 2)при движении перед тем как двигать сделать оператор иф а вот SRes, написал > if ( GetRectMaxX( bj_mapInitialPlayableArea) < x) then set x = GetRectMaxX( bj_mapInitialPlayableArea) endif if ( GetRectMinX( bj_mapInitialPlayableArea) > x) then set x = GetRectMinX( bj_mapInitialPlayableArea) endif call SetUnitX( u, x) гетрект это что? что-то вроде дистанции? ну вот пробую написать: Код:
|
05.02.2010, 21:32 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
XOR
offline
Опыт:
38,284Активность: |
GetRectMax/MinX/Y возвращает верхний, нижний, правый, левый углы.
XiMiKs добавил:
|
05.02.2010, 22:45 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SRes
1110101000
offline
Опыт:
9,997Активность: |
В общем-то я просто забыл убрать private (тогда спешил, да и джасс давно не ковыряю), копировал из своей карты.
Код:
Просто вставляешь это где-нибудь вначале кода, а потом используешь ЭТИ функции, вместо обычных, эти функции ограничивают x, y по максимальным x, y карты. Цитата:
Вроде такого. |
|
05.02.2010, 22:47 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
AlexKARASb
Learning cpp
offline
Опыт:
22,103Активность: |
~XiMiKs, этот код примером писал
Цитата:
то есть перемещать в таймере уже не надо, просто вызвать функции ограничители? » раскрыть function SetUnitXS takes unit u, real x returns nothing if ( GetRectMaxX( bj_mapInitialPlayableArea) < x) then set x = GetRectMaxX( bj_mapInitialPlayableArea) endif if ( GetRectMinX( bj_mapInitialPlayableArea) > x) then set x = GetRectMinX( bj_mapInitialPlayableArea) endif call SetUnitX( u, x) endfunction function SetUnitYS takes unit u, real y returns nothing if ( GetRectMaxY( bj_mapInitialPlayableArea) < y) then set y = GetRectMaxY( bj_mapInitialPlayableArea) endif if ( GetRectMinY( bj_mapInitialPlayableArea) > y) then set y = GetRectMinY( bj_mapInitialPlayableArea) endif call SetUnitY( u, y) endfunction function timerTest takes nothing returns nothing call SetUnitXS() call SetUnitYS() endfunction function actions ........ ........ call TimerStart(t,.05,true,timerTest) endfunction ладно такое чувство что я буду в ограничение движение вдуплять столько же сколько учился его двигать :D |
|
06.02.2010, 10:28 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SRes
1110101000
offline
Опыт:
9,997Активность: |
Эти функции ничего не заменяют, кроме SetUnitX\Y...
|
06.02.2010, 10:37 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
bee
vjass.optimizer
offline
Опыт:
16,615Активность: |
засунь этот код в Custom Srcipt карты
если координаты находятся в пределах карты то вернет true что вы паритесь то? Bee добавил: просто перед тем как переместить дамми по новым координатам проверяещь их по вышеуказанной функции |
06.02.2010, 10:59 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
AlexKARASb
Learning cpp
offline
Опыт:
22,103Активность: |
~Bee, опиши пожалуйста примером кодом
ну просто я еще так и не научился возращать значения из ф-ций примерно так: » раскрыть ?Код:
|
10.02.2010, 15:15 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nekit1234007
offline
Опыт:
11,916Активность: |
Код:
|
10.02.2010, 15:18 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
AlexKARASb
Learning cpp
offline
Опыт:
22,103Активность: |
Nekit1234007, понял спасибо
только одна странность, когда вылетает за пределы он не удаляется а просто останавливается, почему так? AlexKARASb добавил: спасибо всем за то что объяснили ^___^ все тему можно закрыть |
10.02.2010, 15:57 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
agentex
offline
Опыт:
34,834Активность: |
public круче, их можно юзать в executefunc (ExecuteFunc(область_функция)) в отличие от привате |
10.02.2010, 16:24 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nekit1234007
offline
Опыт:
11,916Активность: |
ExecuteFunc(SCOPE_PRIVATE+"FunctionName")
|
10.02.2010, 16:27 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|