Merlin
Умник
Автор : -WorcOut-
[HR][/HR]
к #define добавим
[HR][/HR]
к new добавим
[HR][/HR]
в public OnPlayerConnect(playerid)
[HR][/HR]
в public OnPlayerSpawn(playerid)
[HR][/HR]
К командам "zcmd"
[HR][/HR]
В любое место мода добавим
[HR][/HR]
в public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
[HR][/HR]
В любое место
[HR][/HR]
в public OnObjectMoved(objectid)
[HR][/HR]
в public OnPlayerStateChange(playerid, newstate, oldstate)
[HR][/HR]
в конец мода
[HR][/HR]
к #define добавим
PHP:
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
#define CYAN 0x00FFFFFF
#define RED 0xFF0000FF
#define ORANGE 0xFF9900FF
#define GREEN 0x15FF00FF
#define YELLOW 0xFFFF00FF
к new добавим
PHP:
new
gRockOj[MAX_PLAYERS],
Shot_car[MAX_PLAYERS],
FEATURED[][] =
{
{18647},
{18648},
{18649},
{18650},
{18651},
{18652},
{354}
};
в public OnPlayerConnect(playerid)
PHP:
Shot_car[playerid] = 0;
в public OnPlayerSpawn(playerid)
PHP:
SendClientMessage(playerid,0x33CCFFAA,"Используйте /jcar для создания car");
Shot_car[playerid] = 0;
К командам "zcmd"
PHP:
CMD:jcar(playerid,params[])
//создание транспорта
{
static
Float:spawn_x,// координаты спавна "x"
Float:spawn_y,// координаты спавна "y"
Float:spawn_z,// координаты спавна "z"
Float:sheathing,// Обшивка
Float:distance;//Дистанция
// координаты спавна (глобальные переменные)
spawn_x += (distance * floatsin(-sheathing, degrees));
// координаты x + дистанция , Получить синус от заданного угла.Угол ввода может быть в радианах, градусах или классов.
spawn_y += (distance * floatcos(-sheathing, degrees));
//координаты y + дистанция ,Получить синус от заданного угла.Угол ввода может быть в радианах, градусах или классов.
sheathing += 90.0;
if(sheathing > 360.0) sheathing -= 360.0;
GetPlayerPos(playerid,spawn_x,spawn_y,spawn_z);
//Узнать позицию игрока в игре.
AddStaticVehicle(603,spawn_x,spawn_y+3,spawn_z,sheathing,0,1);
//модели предварительно загружены для игроков
return 1;
}
CMD:dcar(playerid,params[])
// удаление транспорта
{
RemoveVehicle(GetPlayerVehicleID(playerid));
//Эта функция получает ID автомобиля, в котором сидит игрок
return 1;
}
В любое место мода добавим
PHP:
RemoveVehicle(vehicleid)
// удаление транспорта
{
for(new players = 0 ; players <=MAX_PLAYERS ; players++)
{
static
Float:spawn_x,// координаты спавна "x" DELETE
Float:spawn_y,// координаты спавна "y" DELETE
Float:spawn_z // координаты спавна "z" DELETE
;
if (IsPlayerInVehicle(players,vehicleid))
//Проверяет, находится ли игрок в указанном транспорте.
{
GetPlayerPos(players,spawn_x,spawn_y,spawn_z);
//Узнать позицию игрока в игре.
SetPlayerPos(players,spawn_x,spawn_y,spawn_z+2);
//Эта функция изменяет текущую позицию онлайн игрока на карте.
DestroyVehicle(vehicleid);
//Уничтожает ранее созданный транспорт.
}
SetVehicleParamsForPlayer(vehicleid,players,0,1);
//Установите параметры транспортного средства, для игрока.
}
SetTimerEx("VehRes",3000,0,"d",vehicleid);
//Запуск таймера
return 1;
}
в public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
PHP:
if(newkeys & KEY_FIRE)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
//Получает текущее положение игрока.
{
if(IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 603 && Shot_car[playerid] == 0 )
//Проверяет, находится ли игрок в каком-либо транспорте.
{
new
vehicleid = GetPlayerVehicleID(playerid),
Float:spawn_x,
// координаты спавна "x"
Float:spawn_y,
// координаты спавна "y"
Float:spawn_z,
// координаты спавна "z"
Float:spawn_r,
// координаты спавна "r"
Float:dist = 50.0,
Float:tmpang,
Float:tmpx,
Float:tmpy,
Float:tmpz,rand = random(sizeof(FEATURED));
Shot_car[playerid]= 1;
SetTimerEx("ShotHeved", 3000, false, "i", playerid);
GetVehiclePos(vehicleid, spawn_x, spawn_y, spawn_z);
GetVehicleZAngle(vehicleid, spawn_r);
//Определить угол поворот транспорта.
gRockOj[playerid] = CreateObject(FEATURED[rand][0], spawn_x+2, spawn_y+2, spawn_z, 0, 0, spawn_r+90);
MoveObject(gRockOj[playerid],spawn_x + (dist * floatsin(-spawn_r, degrees)), spawn_y + (dist * floatcos(-spawn_r, degrees)),spawn_z,70.0);
for(new i;i<MAX_PLAYERS;i++)
{
if(i == playerid)continue;
if(IsPlayerInRangeOfPoint(i, 50.0, spawn_x, spawn_y, spawn_z))
{
GetPlayerPos(i, tmpx, tmpy, tmpz);
//Узнать позицию игрока в игре.
tmpang = (90-atan2(tmpy-spawn_y, tmpx-spawn_x));
if(tmpang < 0)tmpang = 360.0+tmpang;
tmpang = 360.0 - tmpang;
if( floatabs(tmpang-spawn_r) < 5.0)
{
dist = GetPlayerDistanceFromPoint(i, spawn_x, spawn_y, spawn_z);
//Получает расстояние между игроком и точкой на карте.
}
}
}
}
}
}
if (IsPlayerInAnyVehicle(playerid))
//Проверяет, находится ли игрок в каком-либо транспорте.
{
if(newkeys == KEY_CROUCH)
{
static
Float:vsp_x,
Float:vsp_y,
Float:vsp_z;
AddVehicleComponent(GetPlayerVehicleID(playerid), 1010);
//Устанавливает транспорту компонент
GetVehicleVelocity(GetPlayerVehicleID(playerid), vsp_x, vsp_y, vsp_z);
//Возвращает скорость, с которой транспортное средство движется в трех направлениях, vsp_x, vsp_y и vsp_z.
SetVehicleVelocity(GetPlayerVehicleID(playerid) ,vsp_x * 1.5,vsp_y * 1.5 ,vsp_z * 1.5);
//Задаёт скорость движения транспорта в определённом направлении.
SendClientMessage(playerid,RED,"Super Speed");
//посылает сообщение на конкретного игрока
}
}
if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 603)
//Проверяет, находится ли игрок в каком-либо транспорте.
{
if (PRESSED(KEY_SUBMISSION))
{
static
Float:spawn_x,
Float:spawn_y,
Float:spawn_z;
GetVehicleVelocity(GetPlayerVehicleID(playerid), spawn_x, spawn_y, spawn_z);
//Возвращает скорость, с которой транспортное средство движется в трех направлениях, spawn_x, spawn_y и spawn_z.
SetVehicleVelocity(GetPlayerVehicleID(playerid) ,spawn_x ,spawn_y ,spawn_z+0.3);
//Задаёт скорость движения транспорта в определённом направлении.
}
}
if(newkeys == KEY_YES)
{
new Car = GetVehicleModel(GetPlayerVehicleID(playerid));
//Получает модели ID автомобиля.
if(Car == 603)
{
static
Float:spawn_x,
Float:spawn_y,
Float:spawn_z; //
GetPlayerPos(playerid,spawn_x,spawn_y,spawn_z);
//Узнать позицию игрока в игре.
SetPlayerPos(playerid,spawn_x,spawn_y,spawn_z+90); //
//Эта функция изменяет текущую позицию онлайн игрока на карте.
GivePlayerWeapon(playerid, 46 , 1);
//Даёт конкретное оружие и конкретное кол-во патронов игроку.
GameTextForPlayer(playerid, "~n~~n~~n~~n~~r~Ejected",2500,3);
//выброшенный
}
}
if(newkeys == KEY_NO)
{
RepairVehicle(GetPlayerVehicleID(playerid));
//Полностью ремонт транспортного средства,
SetVehicleHealth(GetPlayerVehicleID(playerid),9999999999);
//Установите здоровья автомобиля
GameTextForPlayer(playerid, "~g~~h~Fixed",3000,3);
//фиксированный
}
if(newkeys == KEY_LOOK_LEFT)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 603)
//Получает текущее положение игрока.
{
GameTextForPlayer(playerid, "~n~~n~~n~~n~~g~Invisible!",2500,3);
new int1 = GetPlayerInterior(playerid);
LinkVehicleToInterior(GetPlayerVehicleID(playerid),int1+1);
}
}
if(newkeys == KEY_LOOK_RIGHT)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 603)
//Получает текущее положение игрока.
{
GameTextForPlayer(playerid, "~n~~n~~n~~n~~b~Visible!",2500,3);
new int1 = GetPlayerInterior(playerid);
LinkVehicleToInterior(GetPlayerVehicleID(playerid),int1);
// Транспортные средства могут быть видны только игроков в той же интерьер
}
}
В любое место
PHP:
forward ShotHeved(playerid);
public ShotHeved(playerid)
{
Shot_car[playerid] = 0;
return 1;
}
в public OnObjectMoved(objectid)
PHP:
new
Float:spawn_x,
Float:spawn_y,
Float:spawn_z;
for(new i;i<MAX_PLAYERS;i++)
{
if(objectid == gRockOj[i])
{
GetObjectPos(gRockOj[i], spawn_x, spawn_y, spawn_z);
//Получение Обьекта
CreateExplosion(spawn_x, spawn_y, spawn_z,7,10.0);
//Создать такой взрыв в указанных координатах.
DestroyObject(gRockOj[i]);
//Разрушает (удаляет) данного объекта.
}
}
}
в public OnPlayerStateChange(playerid, newstate, oldstate)
PHP:
if (newstate == PLAYER_STATE_DRIVER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 603)
{
SendClientMessage(playerid,RED,"Использовать огонь клавишу, чтобы запустить Ракета");
SendClientMessage(playerid,ORANGE,"Используйте Sub Миссия ключ (+ или Numpad 2) для Mega Jump");
SendClientMessage(playerid,CYAN,"Используйте кнопку 'Y', чтобы извлечь из автомобиля");
SendClientMessage(playerid,-1,"Используйте 'N'Key исправить автомобиля");
SendClientMessage(playerid,GREEN,"Используйте 'Q', чтобы невидимом транспортного средства");
SendClientMessage(playerid,YELLOW,"Используйте 'E'Key для видимого транспортного средства");
}
в конец мода
PHP:
stock GetClosestObjectID(objectid)
{
new Float:range = 5.0;
foreach(object, i)
{
if(objectid == i) continue;
new
Float:spawn_x,
Float:spawn_y,
Float:spawn_z;
GetObjectPos(i, spawn_x, spawn_y, spawn_z);
//Получение Обьекта
if(IsObjectInRangeOfPoint(objectid, range, spawn_x, spawn_y, spawn_z))
{
return i;
}
}
return INVALID_PLAYER_ID;
}
stock GetClosestPlayerID(playerid)
{
new Float:range = 5.0;
foreach(Player, i)
{
if(playerid == i) continue;
new
Float:spawn_x,
Float:spawn_y,
Float:spawn_z;
GetPlayerPos(i, spawn_x, spawn_y, spawn_z);
//Узнать позицию игрока в игре.
if(IsObjectInRangeOfPoint(playerid, range, spawn_x, spawn_y, spawn_z))
{
return i;
}
}
return INVALID_PLAYER_ID;
}
stock GetClosestVehicleID(vehicleid)
{
new Float:range = 5.0;
foreach(Vehicle, i)
{
if(vehicleid == i) continue;
new
Float:spawn_x,
Float:spawn_y,
Float:spawn_z;
GetVehiclePos(i, spawn_x, spawn_y, spawn_z);
//Узнать позицию игрока в игре.
if(IsObjectInRangeOfPoint(vehicleid, range, spawn_x, spawn_y, spawn_z))
{
return i;
}
}
return INVALID_PLAYER_ID;
}
Последнее редактирование:
