PDA

Просмотр полной версии : [CMD] Создание транспорта с 3 функциями + информация (/createvehicle)



Тузик
27.06.2016, 14:24
Не сказал бы, что это урок, потому сюда и отправил данный пост. Итак, приветствую, читатель.

В данной теме я опубликую команду на ком.процессоре от Zeex'a (также подходит для DC_CMD).

Во-первых добавим в начало мода:

#include <zcmd>
#include <sscanf2>

new aVehicle[MAX_PLAYERS];
Во-вторых добавим удаление транспорта, если игрок выйдет

// В паблик о выходе игрока добавим:
DestroyVehicle(aVehicle[playerid]);

Далее, советую, добавить в конец мода этот паблик:

public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
if(IsPlayerInAnyVehicle(playerid))
{
if(vehicleid == aVehicle[playerid])
{
new Float:health;
GetVehicleHealth(vehicleid, health);
if(health < 300) DestroyVehicle(aVehicle[playerid]);
}
}
return 1;
}
// Он позволит удалить созданный этим же игроком транспорт при уровне здоровья машины меньше 300
// ** на заметку, этот паблик не синхронизирован и иногда может не работать...



CMD:vehicle(playerid, params[])
{
new modelid, color[2], Float:X, Float:Y, Float:Z, Float:R, vehicleid = GetPlayerVehicleID(playerid);

GetPlayerPos(playerid, X,Y,Z);
sscanf(params, "ddd", modelid, color[0], color[1]);
if(modelid == 0 && color[0] == 0 && color[1] == 0)
{
if(!vehicleid && !aVehicle[playerid])
return SendClientMessage(playerid, -1, "(( Введите: /vehicle [modelid] [color1] [color2] ))");
else if(GetPlayerVehicleSeat(playerid) == 0)
{
if(vehicleid == aVehicle[playerid]) DestroyVehicle(aVehicle[playerid]), aVehicle[playerid] = 0;
else
{
SetVehicleToRespawn(vehicleid);
SendClientMessage(playerid, -1, "(( Ваш транспорт был успешно перемещен на место появления ))");
return 1;
}
}
else if(aVehicle[playerid])
{
DestroyVehicle(aVehicle[playerid]);
aVehicle[playerid] = 0;
}
SendClientMessage(playerid, -1, "(( Ваш транспорт был успешно удален ))");
}
else
{
if(aVehicle[playerid] && vehicleid != aVehicle[playerid])
return SendClientMessage(playerid, -1, "(( Вы уже создавали транспорт. Для удаление введите: /vehicle ))");
if(!(400 < modelid < 611)) return SendClientMessage(playerid, -1, "(( Модель не может быть меньше 400 или больше 611! ))");
if(!(0 <= color[0] <= 255) || !(0 <= color[1] <= 255))
return SendClientMessage(playerid, -1, "(( Цвет не может быть меньше 0 или больше 255! ))");
if(GetPlayerVehicleSeat(playerid) == 0)
{
GetVehicleZAngle(vehicleid, R);
if(vehicleid == aVehicle[playerid]) DestroyVehicle(aVehicle[playerid]);
else SetVehicleToRespawn(vehicleid);
SendClientMessage(playerid, -1, "(( Вы успешно пересоздали транспорт ))");
}
else if(!vehicleid) GetPlayerFacingAngle(playerid, R), SendClientMessage(playerid, -1, "(( Вы успешно создали транспорт ))");
aVehicle[playerid] = CreateVehicle(modelid, X,Y,Z,R, color[0], color[1], 60000);
PutPlayerInVehicle(playerid, aVehicle[playerid], 0);
}
return 1;
}

Не жду серьезной критики, есть ошибки - излагайте, подправлю/добавлю чего-нибудь.
И как писал выше "Не сказал бы, что это урок, потому сюда и отправил данный пост" думаю для новичка вполне подойдет.

1) Информация для правильного использования
2) Создание транспорта
3) Пересоздание транспорта
4) Удаление транспорта

Всем добра :3

ziggi
07.07.2016, 11:00
OnVehicleDamageStatusUpdate не подходит для отслеживания изменения здоровья.

arzumanov
15.07.2016, 14:27
Больше подойдёт для этого раздела http://pro-pawn.ru/forumdisplay.php?10-Команды

//Перенесено || DeimoS