OnPlayerEditDynamicObject похитил курсор -
Johurt - 08.05.2016
Доброго времени суток. Во время переустановки объекта, убежав или уехав из стримзоны объекта, выбирается другой объект. Я это пресекаю, блокирую перемещение нового выбранного объекта, старый возвращаю на место и выключаю эдит режим игроку, после этого пропадает курсор. В чем проблема?
Код:
Код:
public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
if(objectid == INVALID_OBJECT_ID) return 1;
if(pInfo[playerid][EditOID] != objectid)
{
GetDynamicObjectPos(objectid, x, y, z);
GetDynamicObjectRot(objectid, rx, ry, rz);
SetDynamicObjectPos(objectid, x, y, z);
SetDynamicObjectRot(objectid, rx, ry, rz);
if(pInfo[playerid][eKB])
{
new o = pInfo[playerid][EditOID], sl = pInfo[playerid][eKBID];
GetDynamicObjectPos(o, x, y, z);
GetDynamicObjectRot(o, rx, ry, rz);
SetDynamicObjectPos(o, x, y, z);
SetDynamicObjectRot(o, rx, ry, rz);
format(logtext, 98, "Kelio blokada nr. {ffffff}%d\n{1d5187}Pastate: {ffffff}%s\n%s", sl + 1, GetPlayerNameEx(pKB[sl][kbC]), TimestampToDate(pKB[sl][kbCT]));
pKB[sl][kblID] = CreateDynamic3DTextLabel(logtext, 0x1d5187FF, x, y, z + 1.0, 10.0);
pKB[sl][kbB] = true;
pInfo[playerid][eKB] = false;
pInfo[playerid][eKBID] = -1;
pInfo[playerid][EditOID] = INVALID_OBJECT_ID;
}
if(response != EDIT_RESPONSE_CANCEL) CancelEdit(playerid);
return 1;
}
if(pInfo[playerid][eKB])
{
switch(response)
{
case EDIT_RESPONSE_CANCEL, EDIT_RESPONSE_FINAL:
{
new sl = pInfo[playerid][eKBID];
if(response == EDIT_RESPONSE_CANCEL)
{
GetDynamicObjectPos(objectid, x, y, z);
GetDynamicObjectRot(objectid, rx, ry, rz);
SetDynamicObjectPos(objectid, x, y, z);
SetDynamicObjectRot(objectid, rx, ry, rz);
}
else
{
DestroyDynamicObject(pKB[sl][kboID]);
pKB[sl][kboID] = CreateDynamicObject(978, x, y, z, rx, ry, rz);
}
format(logtext, 98, "Kelio blokada nr. {ffffff}%d\n{1d5187}Pastate: {ffffff}%s\n%s", sl + 1, GetPlayerNameEx(pKB[sl][kbC]), TimestampToDate(pKB[sl][kbCT]));
pKB[sl][kblID] = CreateDynamic3DTextLabel(logtext, 0x1d5187FF, x, y, z + 1.0, 10.0);
pKB[sl][kbB] = true;
pInfo[playerid][eKB] = false;
pInfo[playerid][eKBID] = -1;
pInfo[playerid][EditOID] = INVALID_OBJECT_ID;
}
}
}
return 1;
}
Курсора нет не в диалогах, не в эдит режиме.
Re: OnPlayerEditDynamicObject похитил курсор -
Mcc - 08.05.2016
В том что когда игрок жмет на перемещение, курсор пропадает, а когда отпускает - курсор снова появляется. Ты закрываешь Эдит когда курсор пропал но не успел появиться.
Re: OnPlayerEditDynamicObject похитил курсор -
Johurt - 08.05.2016
Ясно. Как лечить? Таймером наверное не получиться, так как можно зажать кнопку мыши и водить. Проверять кнопку мыши в OnPlayerKeyStateChange - бред.
Re: OnPlayerEditDynamicObject похитил курсор -
Mcc - 08.05.2016
С CancelSelectTextDraw можешь похимичить но наврятли что то получится. Просто возвращай объект на место без закрытия редактора.
Re: OnPlayerEditDynamicObject похитил курсор -
Johurt - 08.05.2016
С
Код:
SelectTextDraw(playerid, -1);
CancelSelectTextDraw(playerid);
ничего не вышло.
EDIT: Возвращая объект на место, для игрока он остается на том месте, куда он его переставил, что опять же не хорошо, игрок может к примеру отодвинуть объект и пройти/проехать в том месте. Меня не совсем такое решении устраивает.
Re: OnPlayerEditDynamicObject похитил курсор -
Mcc - 08.05.2016
Ну так не надо сохранять его в нежелательном месте. Пусть двигает его куда хочет, если это происходит в его интерьере.
Re: OnPlayerEditDynamicObject похитил курсор -
Johurt - 08.05.2016
Это сис-ма полицейских заграждений, действие происходит не в интерьерах. Позицию не сохраняю. После закрытия/сохранения объекта, он возвращается на то место, откуда был взят. Код из 1 сообщения не переписывал, убрал лишь:
Код:
if(response != EDIT_RESPONSE_CANCEL) CancelEdit(playerid);
Re: OnPlayerEditDynamicObject похитил курсор -
Mcc - 08.05.2016
Для полицейских ограждений сойдет позиция относительно угла поворота игрока и высоты.
Re: OnPlayerEditDynamicObject похитил курсор -
Johurt - 08.05.2016
Мне так не сойдет. Я хочу так, как делаю.
Re: OnPlayerEditDynamicObject похитил курсор -
Mcc - 08.05.2016
Quote:
Originally Posted by Johurt
Мне так не сойдет. Я хочу так, как делаю.
|
А я хочу бразильянку в бикини, но приходится ограничиваться отечественным продуктом. Так же и с твоей проблемой.
Quote:
Originally Posted by eakwarp
На место - это заново установить первоначальную позицию объекта.
|
Двигаемый объект с сервером не синхронизируется в процессе, поэтому на место вернуть не получится.