PDA

Просмотр полной версии : [Вопрос] Радиус



I'm Cobra
01.02.2014, 18:34
Здравствуйте! Мне нужно сделать такой радиус, если игрок поставил шип и ушел от него на определенное растояние(примерно как от кпп LSPD до Мэрии) ему выдало сообщение:
"Вы поставили шип, уберите его или он уберется автоматичеки"
И если он не убрал его, он сам уберается.

#Ник.
01.02.2014, 18:44
new Float: pos[3];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, радиус, pos[0], pos[1], pos[2])) return SCM(playerid, -1, "Вы отошли от шипов и не убрали их."); // Предупреждаем.
if(!IsPlayerInRangeOfPoint(playerid, радиус, pos[0], pos[1], pos[2])) { // Данный радиус больше чем тот, что выше.
SCM(playerid, -1, "Шипы исчезли. Вы ушли очень далеко");
// Тут функция уничтожения объекта.
}

I'm Cobra
01.02.2014, 18:49
new Float: pos[3];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, радиус, pos[0], pos[1], pos[2])) return SCM(playerid, -1, "Вы отошли от шипов и не убрали их."); // Предупреждаем.
if(!IsPlayerInRangeOfPoint(playerid, радиус, pos[0], pos[1], pos[2])) { // Данный радиус больше чем тот, что выше.
SCM(playerid, -1, "Шипы исчезли. Вы ушли очень далеко");
// Тут функция уничтожения объекта.
}


Куда это добавить?

L0ndl3m
01.02.2014, 18:50
При создании шипов:



new Float: p[3];
GetPlayerPos(playerid, p[0], p[1], p[2]);
SetPVarFloat(playerid, "X", p[0]);
SetPVarFloat(playerid, "Y", p[1]);
SetPVarFloat(playerid, "Z", p[2]);
SetPVarInt(playerid, "CreatedSpikes", 1);


В односекундный таймер (в цикл, при этом playerid заменяйте на i (если название переменной для цикла так названо)), либо в OnPlayerUpdate:


if(GetPVarInt(playerid, "CreatedSpikes") && !IsPlayerInRangeOfPoint(playerid, 50.0, GetPVarFloat(playerid, "X"), GetPVarFloat(playerid, "Y"), GetPVarFloat(playerid, "Z")) SendClientMessage(playerid, 0xFF0000FF, "Вы поставили шип, уберите его, или он уберется автоматически");


А при удалении шипов:


DeletePVar(playerid, "CreatedSpikes");

I'm Cobra
01.02.2014, 18:53
При создании шипов:



new Float: p[3];
GetPlayerPos(playerid, p[0], p[1], p[2]);
SetPVarFloat(playerid, "X", p[0]);
SetPVarFloat(playerid, "Y", p[1]);
SetPVarFloat(playerid, "Z", p[2]);
SetPVarInt(playerid, "CreatedSpikes", 1);


В односекундный таймер (в цикл, при этом playerid заменяйте на i (если название переменной для цикла так названо)), либо в OnPlayerUpdate:


if(GetPVarInt(playerid, "CreatedSpikes") && !IsPlayerInRangeOfPoint(playerid, 50.0, GetPVarFloat(playerid, "X"), GetPVarFloat(playerid, "Y"), GetPVarFloat(playerid, "Z")) SendClientMessage(playerid, 0xFF0000FF, "Вы поставили шип, уберите его, или он уберется автоматически");


А при удалении шипов:


DeletePVar(playerid, "CreatedSpikes");

Сейчас проверю...

(37284) : error 001: expected token: ")", but found "-identifier-"

Строка:

if(GetPVarInt(playerid, "CreatedSpikes") && !IsPlayerInRangeOfPoint(playerid, 50.0, GetPVarFloat(playerid, "X"), GetPVarFloat(playerid, "Y"), GetPVarFloat(playerid, "Z")) SendClientMessage(playerid, 0xFF0000FF, "Вы поставили шип, уберите его, или он уберется автоматически");

L0ndl3m
01.02.2014, 18:58
Скобку забыл дописать, пробуйте:


if(GetPVarInt(playerid, "CreatedSpikes") && !IsPlayerInRangeOfPoint(playerid, 50.0, GetPVarFloat(playerid, "X"), GetPVarFloat(playerid, "Y"), GetPVarFloat(playerid, "Z"))) SendClientMessage(playerid, 0xFF0000FF, "Вы поставили шип, уберите его, или он уберется автоматически");

I'm Cobra
01.02.2014, 18:59
Скобку забыл дописать, пробуйте:


if(GetPVarInt(playerid, "CreatedSpikes") && !IsPlayerInRangeOfPoint(playerid, 50.0, GetPVarFloat(playerid, "X"), GetPVarFloat(playerid, "Y"), GetPVarFloat(playerid, "Z"))) SendClientMessage(playerid, 0xFF0000FF, "Вы поставили шип, уберите его, или он уберется автоматически");

А если игрок не вернется, шип сам удалится?

#Ник.
01.02.2014, 18:59
Сейчас проверю...

(37284) : error 001: expected token: ")", but found "-identifier-"

Строка:

if(GetPVarInt(playerid, "CreatedSpikes") && !IsPlayerInRangeOfPoint(playerid, 50.0, GetPVarFloat(playerid, "X"), GetPVarFloat(playerid, "Y"), GetPVarFloat(playerid, "Z")) SendClientMessage(playerid, 0xFF0000FF, "Вы поставили шип, уберите его, или он уберется автоматически");



if(GetPVarInt(playerid, "CreatedSpikes") && !IsPlayerInRangeOfPoint(playerid, 50.0, GetPVarFloat(playerid, "X"), GetPVarFloat(playerid, "Y"), GetPVarFloat(playerid, "Z"))) SendClientMessage(playerid, 0xFF0000FF, "Вы поставили шип, уберите его, или он уберется автоматически");

L0ndl3m
01.02.2014, 19:00
А если игрок не вернется, шип сам удалится?

Нет, но это можно реализовать, покажите как вы создаёте шипы, тогда сделаю.

I'm Cobra
01.02.2014, 19:01
Нет, но это можно реализовать, покажите как вы создаёте шипы, тогда сделаю.

Напишите свой скайп пожалуйста мне в ЛС

I'm Cobra
01.02.2014, 19:10
Delete.

L0ndl3m
01.02.2014, 20:15
Решено, закрыто.