PDA

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



Unknown
13.08.2014, 12:20
Сделал проверку на объект, но все равно, даже если этого объекта нету, команда срабатывает.



if(IsValidPlayerObject(playerid,18632) && !BoatVeh(Veh))

Можно ли с этим что-нибудь поделать ?

Salvacore
13.08.2014, 12:35
if(IsValidPlayerObject(playerid,18632) && !BoatVeh(Veh)) return 0;

Unknown
13.08.2014, 13:00
if(IsValidPlayerObject(playerid,18632) && !BoatVeh(Veh)) return 0;

не помогло

L0ndl3m
13.08.2014, 13:19
Сделал проверку на объект, но все равно, даже если этого объекта нету, команда срабатывает.



if(IsValidPlayerObject(playerid,18632) && !BoatVeh(Veh))

Можно ли с этим что-нибудь поделать ?
Во втором параметре функции указывается не модель объекта, а его ID, чтобы сохранить ID нужно либо создавать массив для игроков, либо использовать функцию SetPVarInt.

Unknown
13.08.2014, 13:21
Во втором параметре функции указывается не модель объекта, а его ID, чтобы сохранить ID нужно либо создавать массив для игроков, либо использовать функцию SetPVarInt.


делаю так

if(IsValidPlayerObject(18632))
выдаёт

warning 202: number of arguments does not match definition

Salvacore
13.08.2014, 13:22
делаю так

if(IsValidPlayerObject(18632))
выдаёт

warning 202: number of arguments does not match definition

new NAME = Create....

L0ndl3m
13.08.2014, 13:47
Вы не совсем правильно поняли, сейчас покажу на примере небольшого кода:

Создаёте глобальный массив для игроков, в котором будет хранить ID объекта. Каждому элементу в массиве присвоим значение несуществующего объекта:


new
player_obj[MAX_PLAYERS] = { INVALID_OBJECT_ID, ... };


Далее, когда вы создаёте объект игрока, не просто создавайте его, а присваивайте значение элемента массива playerid, тому значение, которое хранит только что созданный объект:

player_obj[playerid] = CreatePlayerObject(...); // где ... это параметры

При удалении объекта игрока, не нужно ничего присваивать к значению функции.
Вы просто удаляйте и снизу устанавливайте значение объекта на несуществующий ID:


DestroyPlayerObject(playerid, player_obj[playerid]);
player_obj[playerid] = INVALID_OBJECT_ID;

Теперь можно не использовать функцию IsValidPlayerObject.

Вместо старой проверки используйте это:


if(player_obj[playerid] == INVALID_PLAYER_ID)
// объекта не существует