PDA

Просмотр полной версии : [Вопрос] OnPlayerSelectObject и SelectObject



Noob123
09.12.2017, 23:12
Здравствуйте. Создаю объект в игре, далее хочу его переместить, используя для этого функцию SelectObject
Вроде появляется информация и, пытаясь кликнуть на объект, ничего не происходит! Даже OnPlayerSelectObject не вызывается!
Инклуды обновлял, не помогло. Прошу помочь разобраться в данной проблеме

- - - Добавлено - - -

Сразу говорю, Dynamic не используется!

DeimoS
10.12.2017, 01:33
Покажи код. Так же скажи, подключены ли какие-либо FS?
И для того, чтоб редактировать выбранный объект, нужно вызывать EditObject в OnPlayerSelectObject

Noob123
10.12.2017, 01:49
case 112:
{
if(response)
{
if(listitem == 0) ShowPlayerDialog(playerid, 114, DIALOG_STYLE_INPUT, \
"Создание объекта","Введите ID модели объекта для того чтобы его создать\nОбъект появится перед вами, далее вы будете изменять его\n\nМаксимальный ID объекта - 19469",\
"Создать","Назад");
else if(listitem == 1) SelectObject(playerid);
else if(listitem == 2) ShowPlayerDialog(playerid, 115, DIALOG_STYLE_MSGBOX, \
"Удаление объектов","{FFFFFF}Вы действительно хотите удалить все созданные объекты?",\
"Да","Назад");
}
}
case 114:
{
if(!response) return OpenMenuOBJ(playerid);
if(!strval(inputtext)) return ShowPlayerDialog(playerid, 114, DIALOG_STYLE_INPUT, \
"Создание объекта","Введите ID модели объекта для того чтобы его создать\nОбъект появится перед вами, далее вы будете изменять его\n\nМаксимальный ID объекта - 19469\n{FF0000}Ошибка: Недопустимое значение!",\
"Создать","Назад");
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
new objectid = CreateObject(strval(inputtext), X+1, Y+1, Z+1, 0.0,0.0,0.0);
EditObject(playerid, objectid);
SetPVarInt(playerid, "ModelID", strval(inputtext));
Createdobject[objectid] = true;
}
case 115:
{
if(!response) return OpenMenuOBJ(playerid);
for(new i = 0; i < MAX_OBJECTS; i++)
{
if(Createdobject[i] == true) DestroyObject(i);
}
SendClientMessage(playerid,COLOR_GREY,"Все созданные объекты удалены");
}
case 117:
{
new objectid = GetPVarInt(playerid, "SelectedObject");
if(response) EditObject(playerid, objectid);
else DestroyObject(objectid) && CancelEdit(playerid);
}


public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ)
{
MSG_D(playerid, 117, DIALOG_STYLE_MSGBOX, "Действие с объектом", "Выберите действие с объектом\nВы можете его отредактировать или удалить","Изменить","Удалить");
SetPVarInt(playerid, "SelectedObject", objectid),SetPVarInt(playerid, "ModelID", modelid);
return 1;
}

public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
{
if(response == 1)
{
DestroyObject(objectid);
if(TOTALOBJA == 0) obja[0] = CreateObject(GetPVarInt(playerid,"ModelID"),fX,fY,fZ,fRotX,fRotY,fRotZ),TOTALOBJA++;
else obja[TOTALOBJA+1] = CreateObject(GetPVarInt(playerid,"ModelID"),fX,fY,fZ,fRotX,fRotY,fRotZ),TOTALOBJA++;
}
return 1;
}


- - - Добавлено - - -

Ага, действительно из-за FS. Но как быть, если мне проще объекты загружать через FS?

DeimoS
10.12.2017, 02:37
Правильно настрой возвраты в коллбэке OnPlayerSelectObject для фс/мода

Return Values:

1 - Will prevent other scripts from receiving this callback.
0 - Indicates that this callback will be passed to the next script.