Прокрутка карты в клиенте

Автор темы #1
Дата рег
4 Фев 2013
Сообщения
75
Симпатии
19
Всем привет. У меня ревизия 798. Какую функцию использовать для перемещения по карте в клиенте при доведение мышки до конца экрана, как в мапере. На сколько понимаю, писать код надо в событие __EventMouseMove но какими функциями двигать экран, понятия не имею и найти пока ничего не смог.
 
Автор темы #3
Дата рег
4 Фев 2013
Сообщения
75
Симпатии
19
Спасибо огромное! Замучился искать эту функцию.
 
Дата рег
4 Авг 2016
Сообщения
162
Симпатии
30
MoveScreenOffset ( int, int, uint, bool ) еще посмотри, тоже на эту тему вроде.
 
Автор темы #5
Дата рег
4 Фев 2013
Сообщения
75
Симпатии
19
Спасибо. А не в курсе какой функцией проверить координаты мышки?
 
Автор темы #7
Дата рег
4 Фев 2013
Сообщения
75
Симпатии
19
Что-то ни как не выходи ни с одной из функций. Все мозги себе вскипятил и волосы, от злости почти все выдрал себе, и на голове и на заднице!! :mad:
Что MoveScreenToHex( x, y, _CameraSpeed ), что MoveScreenOffset ( int, int, uint, bool ), срабатывают только первый раз (тоесть при первой попытке сдвинуть экран мышкой) потом глухо! Даже через логи все проверил. Все норм, только функции не пашут нормально. Может я, что-то не так сделал. вот код (в ClientMain.fos):
Код:
uint16 SmX = 0; //Куда премещать экран
uint16 SmY = 0; // .....
bool IsMoveScr = false; // нужно-ли перемещать экран
.....................
void ModuleInit()
{
Config::InitializeGame();
............
...........
__EventLoop	   .Subscribe( OnLoop ); // Бесконечный цикл бытия...
}
....................
..................
void OnLoop(){
 
Critter player = GetChosen();
if(player is null) return;
if (__MouseX <=0){SmX = player.HexX - 10; IsMoveScr = true;}
if (__MouseX >= __ScreenWidth - 1){SmX = player.HexX + 10; IsMoveScr = true;}
if (__MouseY <=0){SmY = player.HexY - 10; IsMoveScr = true;}
if (__MouseY >= __ScreenHeight - 1){SmY = player.HexY + 10; IsMoveScr = true;}
 
if(IsMoveScr){
MoveScreenToHex( SmX, SmY, 3, false);
Log("Move To: " + SmX + ", " + SmY);
IsMoveScr = false;
}
Кстати в MoveScreenToHex( SmX, SmY, 3, false) последнее значение означает canStop. Но к чему это имеет отношение и как это юзать я так и не понял. Пробовал оба варианта но результат тот-же.
 
Дата рег
22 Окт 2012
Сообщения
119
Симпатии
63
пальцем в небо
взможно камера зацепилась за скроллблокеры?
емнип в фонлайне был подобный баг на больших разрешениях очень давно
 
Автор темы #9
Дата рег
4 Фев 2013
Сообщения
75
Симпатии
19
Можно где-то прописать стартовое положение камеры? У меня персонаж появлялся на мапе вообще где-то сверху и камера на него вообще не смотрит изначально. Потом просто стартовые координаты персонажа поменял.
 
Автор темы #10
Дата рег
4 Фев 2013
Сообщения
75
Симпатии
19
Разобрался!
Вопервых надо было поставить по краям скролблокеры и прокрутка сразу работала нормально. Во вторых обязательно надо ставить етниер и портовать персонажа на него, тогда камера изначально центруется на персонажа.