Немного о пикапах.
Когда мы создаем пикап, и хотим его в будущем удалить, нам надо запомнить его ID. Значит берем переменную, и присваиваем к ней создание пикапа.
Но при удалении пикапа по этой переменной, сама переменная ведь не очищается? И поэтому, если на этом же ID пикапа будет позже другое действие, ее надо очистить, иначе будет путаница ID. Ведь так?
И еще, что будет если удалить пикап, привязанный к пустой переменной, или даже удалить несуществующий пикап?
Вообщем объясню суть проблемы на примере. Есть команда, создающая в определенном месте, к переменной автомобиля пикап.
Code:
CMD:pick(playerid)
{
Veh[GetVehicleID(playerid)][Pickup] = CreatePickup(19131,23,x,y,z); // сами координаты непричем
return 1;
}
Таким образом мы будем садиться в разные автомобили, хоть в тысячу авто, все должно работать гладко, мы садимся, пикап создается, вылазим и в следующую. Но это нормально только при загрузке сервера. Теперь заглянем в другой паблик, а именно паблик OnVehicleSpawn:
Code:
OnVehicleSpawn(vehicleid)
{
DestroyPickup(vehicleid][Pickup]); //скрываем сам пикап
Veh[vehicleid][Pickup] = 0; // *
return 1;
}
Действие, которое я пометил "*" мы делаем потому, что если мы создадим очередной пикап, он займет ID только что заспавненного авто, так как мы скрыли пикап, а обнулять то кто будет? Вообщем так сказать антипутанница ID.
Ну так вот, после загрузки мода все в норме. Но стоит мне запустить спавн всех авто на сервере, а потом в первой попавшейся создать пикап, так странность! ID пикапа равен не 997(а он по идее должен быть такой), а равен НУЛЮ. Но если сядем в другое авто(после создания НУЛЕВОГО пикапа) и создадим следующий пикап, то опять все будет в норме до тех пор, пока не заспавним одну из машин! Если заспавнили, то опять первый созданный пикап после спавна авто пикап будет НУЛЕВОЙ! А потом опять все последующие пикапы под правильными ID, и так может до бесконечности (спавним, нулевой, норма..). В чем может быть проблема? Или какой совет дадите?