Включете dc_foreach_veh - бързо търсене на транспорт Архив - Pro Pawn - Портал за скриптове на PAWN
Внимание: Това включване е морално остаряло. Подобна функционалност вече е внедрена във foreach (https://github.com/Open-GTO/foreach), използвайте я вместо добавка на трета страна.
Съдържанието на старата тема беше изоставено по исторически причини.
Доста просто включване, което добавя нов итератор на превозно средство за foreach, съдържащ идентификационните номера на всички превозни средства, породени на сървъра.
Превозното средство се добавя автоматично към итератора при създаване (CreateVehicle/AddStaticVehicle (Ex)) и се премахва при унищожаване (DestroyVehicle).
За да работи включването, се изисква foreach/y_iterate от Y_Less.
Можете да ги поставите както в папката "включва" (в основата на сървъра), така и в "pawno/include", и двете опции се вземат предвид при включването.
CMD: respawnvehicles (playerid, params [])
ако (0 == IsPlayerAdmin (playerid))
връщане 0;
foreach (нов v: превозно средство)
SetVehicleToRespawn (v);
return SendClientMessage (playerid, -1, "Вие създадохте цялото превозно средство.");
>
ALTX: respawnvehicles ("/ resveh");
GetNerelyVehicle (Float: x, Float: y, Float: z, Float: distance)
нов Float: t, най-близък_veh_id = INVALID_VEHICLE_ID;
foreach (нов v: превозно средство)
if (floatcmp ((t = GetVehicleDistanceFromPoint (v, x, y, z)), разстояние)! = 1)
разстояние = t, най-близък_veh_id = v;
върнете най-близкия_вех_ид;
>
GetNerelyVehicleToPlayer (playerid, Float: разстояние)
нов Float: x, Float: y, Float: z;
if (0 == GetPlayerPos (playerid, x, y, z))
връщане INVALID_VEHICLE_ID;
връщане GetNerelyVehicle (x, y, z, разстояние);
>
Бележки:
Не можете да изтриете автомобили (DestroyVehicle), докато итерирате през итератор на превозно средство, използвайки foreach.
Това е така, защото премахването на елементи от итератор, докато се придържате към неговите елементи, може да доведе до непредсказуеми последици.
Примерен код, който може да доведе до срив:
foreach (v: Превозно средство)
DestroyVehicle (v);
Не се опитвайте да променяте стойността на макроса MAX_VEHICLES по вашия начин.
Дори ако промените тази стойност, да речем, на 500, пак можете да създадете повече от 500 автомобила, използвайки CreateVehicle/AddStaticVehicle (Ex).
Примери за намеса в MAX_VEHICLES (по-добре ги премахнете от вашия скрипт):
#undef MAX_VEHICLES
#define MAX_VEHICLES 500
#if дефинирани MAX_VEHICLES
#undef MAX_VEHICLES
#endif
#define MAX_VEHICLES 500
#if дефинирани MAX_VEHICLES