Просмотр полной версии : [Вопрос] Радиус
I'm Cobra
01.02.2014, 18:34
Здравствуйте! Мне нужно сделать такой радиус, если игрок поставил шип и ушел от него на определенное растояние(примерно как от кпп LSPD до Мэрии) ему выдало сообщение:
"Вы поставили шип, уберите его или он уберется автоматичеки"
И если он не убрал его, он сам уберается.
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, "Шипы исчезли. Вы ушли очень далеко");
// Тут функция уничтожения объекта.
}
Куда это добавить?
При создании шипов:
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, "Вы поставили шип, уберите его, или он уберется автоматически");
Скобку забыл дописать, пробуйте:
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, "Вы поставили шип, уберите его, или он уберется автоматически");
А если игрок не вернется, шип сам удалится?
Сейчас проверю...
(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, "Вы поставили шип, уберите его, или он уберется автоматически");
А если игрок не вернется, шип сам удалится?
Нет, но это можно реализовать, покажите как вы создаёте шипы, тогда сделаю.
I'm Cobra
01.02.2014, 19:01
Нет, но это можно реализовать, покажите как вы создаёте шипы, тогда сделаю.
Напишите свой скайп пожалуйста мне в ЛС
I'm Cobra
01.02.2014, 19:10
Delete.
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot