01.02.2014, 13:11
Quote:
Нет не так, путаницы не будут, просто перетрется старое значение и запишется новое. А вот если старый пикап не был удален, тогда он "потеряется".
При удалении несуществующего пикапа вообще ни чего не будет. |
1. Создаем пикап на переменную в массиве с автомобилями. ( Veh[vehicleid][Pickup] = CreatePickup... )
Оно нам нужно для того, чтобы запомнить, что именно на этот автомобиль такое действие(Например выдача брони, если модель Infernus), но и мы знаем, что этот пикап должен быть с ID 997 - Допустим. Вот он создался на ID 997, все записано в переменную, автомобиль Infernus, пока все по курсу.
2. Идем в паблик вызова пикапов. Там ставим цикл на все автомобили, дабы найти пикап, привязанный именно к автомобилю с уникальным действием. Проверяем ( if(pickupid == Veh[v][Pickup])....// где v - компонент цикла )
3. Вот мы нашли совпадение, это действительно инфернус, выдаем броню, прячем пикап ( DestroyPickup(Veh[v][Pickup], Veh[v][Pickup] = 0 // а затем следом очищаем переменную, ниже объясняю подробней) )
Так зачем же мы все-таки очищаем ее? А вот зачем. Допустим следом же мы создали следующий пикап к ТС(но до удаления первого), вот у нас 2 пикапа, один ID 997, другой ID 998. Итак, создаем ТРЕТИЙ, НО перед его созданием удалим первый! А именно ID 997. И по логике он занимает ID 997. Но тут то и всплывет неочищенная переменная. Мы скрыли его и не очистили, значит в переменной на инфернусе до сих пор стоит циферка 997, а значит и цикл до сих пор будет сверять по его переменной. И тут мы создали третье авто, оно как говорится ранее заняло ID 997. Ну пусть будет Буллет.
И теперь у нас в массиве автомобилей есть 2 переменных с ОДИНАКОВЫМ ID. А значит, когда пойдет цикл, вызовется ПЕРВЕЙ ТО ДЕЙСТВИЕ, которое идет первей по циклу. И в итоге, встав на пикап Буллета нам выдаст бронежилет, который дается при присоединении пикапа к Инфернусу.
4. Спавн машин. Там тоже надо очищать, именно по этой конструкции.