shape1
shape2
shape3
shape4
shape7
shape8

Воздушные бомбы


Статус
Закрыто для дальнейших ответов.

MotoSport

Pawno-Crmp.Ru || Живи вечно!
Пользователь
08.03.2015
921
168
0
23
eb6f9b72614d.png
 Что мы делаем?Итак, предлогаю вашему вниманию систему ракетной обороны или ракетного удара по игроку.

eb6f9b72614d.png
 В чем это заключается?

Заключается это в том, что когда игрок (Админ) введет команду /flyattack [iD] то на данного игрока (с введенным ID) с воздуха упадут три ракеты, которые потом взорвутся и по возможности уничтожат игрока. Так как система будет занята выстрелом ракет, её нельзя будет использовать пока она выстреливает в какого-либо игрока.

eb6f9b72614d.png
 Как это сделать?

Сделать - нет ничего сложного. Приступим.
Переменная:

new pRocket[3],
Float:X,
Float:Y,
Float:Z,
Aimer = INVALID_PLAYER_ID,
Timer[MAX_PLAYERS],
bool:Attack = false;

Команды: 

if(strcmp(cmd,"/flyattack",true) == 0)
{
tmp = strtok(cmdtext,idx);
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,0xFFFFFFFF,"Вы не Админ!");
if(!strlen(tmp)) return SendClientMessage(playerid,0xFFFFFFFF,"Используйте /flyattack [ID игрока]");
new pid = strval(tmp);
if(!IsPlayerConnected(pid)) return SendClientMessage(playerid,0xFFFFFFFF,"> Игрок не подключен!");
if(GetPlayerInterior(pid) != 0) return SendClientMessage(playerid,0xFFFFFFFF,"> Игрока находится в доме!");
if(Attack) return SendClientMessage(playerid,0xF60000FF,"> Ракетная установка уже преведена в действие!");
pRocket[0] = INVALID_OBJECT_ID;
pRocket[1] = INVALID_OBJECT_ID;
pRocket[2] = INVALID_OBJECT_ID;
Attack = true;
Aimer = playerid;
GetPlayerPos(pid,X,Y,Z);
pRocket[0] = CreateObject(354,X,Y,Z+500.0,0.0,0.0,0.0);
pRocket[1] = CreateObject(354,X,Y,Z+510.0,0.0,0.0,0.0);
pRocket[2] = CreateObject(354,X,Y,Z+515.0,0.0,0.0,0.0);
MoveObject(pRocket[0],X,Y,Z-5,70.0);
MoveObject(pRocket[1],X,Y,Z-5,70.0);
MoveObject(pRocket[2],X,Y,Z-5,70.0);
Timer[pid] = SetTimerEx("ObjectUpdate",100,true,"dd",pid,pRocket[0]);
new Name[32],string[128];
GetPlayerName(pid,Name,sizeof(Name));
format(string,sizeof(string),"> Ракетная Атака на игрока %s запущена!",Name);
SendClientMessage(playerid,0xF60000AA,string);
return 1;
}

Теперь создадим паблики:

forward ObjectUpdate(playerid,objectid);
public ObjectUpdate(playerid,objectid)
{
if(!Attack) return KillTimer(Timer[playerid]);
new Float:eek:X[6];
GetObjectPos(objectid,oX[0],oX[1],oX[2]);
GetPlayerPos(playerid,oX[3],oX[4],oX[5]);
if(oX[2] < oX[5])
{
DestroyObject(pRocket[0]);
DestroyObject(pRocket[1]);
DestroyObject(pRocket[2]);
CreateExplosion(X+RandomValue(-10,10),Y+RandomValue(-10,10),Z,6,10.0);
CreateExplosion(X+RandomValue(-10,10),Y+RandomValue(-10,10),Z,6,10.0);
CreateExplosion(X+RandomValue(-10,10),Y+RandomValue(-10,10),Z,6,10.0);
SendClientMessage(Aimer,-1,"> Ракетная атака ударила по цели!");
KillTimer(Timer[playerid]);
Attack = false;
}
return 1;
}

Стоки:

stock strtok(const string[],&index,seperator=' ')
{
new length = strlen(string),offset = index,result[64];
while((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
if((index < length) && (string[index] == seperator))
{
index++;
}
return result;
}


Код:
stock RandomValue(min, max)
{
   return random(max - min) + min;
}
Автор: Gameyer

 
Последнее редактирование модератором:

Sten

Unknown
Пользователь
08.05.2014
830
77
0
Где-то уже видел. Этого случайно на форуме нету?

 

LHTTD

Темная сторона Форума
Пользователь
08.10.2014
325
43
0
Хорошая Работа,бро)+

 
Статус
Закрыто для дальнейших ответов.