PDA

Просмотр полной версии : [CMD] /getpos /setpos [DC_CMD]



Alanchick
09.01.2016, 19:55
Доброго времени суток, Уважаемые пользователи Pro-Pawn.Ru!
Бывает такая ситуация, когда тебе нужно оставаться на одном месте по какой то причине,
но тебя просят телепортироваться к игроку для чего либо.

Написал команды /getpos и /setpos.
/getpos - записывает положение игрока.
/setpos - телепортирует игрока в записанные координаты.

Перейдем к коду:
Ко всем переменным (new):


new
Float:x_getpos = 0.0,
Float:y_getpos = 0.0,
Float:z_getpos = 0.0;
И собственно, сами команды:
/getpos:

CMD:getpos(playerid)
{
if(!IsPlayerConnected(playerid))
return true;
if(PlayerInfo[playerid][pAdmin] < 5)
return true;
GetPlayerPos(playerid, x_getpos, y_getpos, z_getpos);
SendClientMessage(playerid, -1, "Вы сохранили координаты!");
SendClientMessage(playerid, -1, "Чтобы телепортироваться по ним, введите: /setpos");
return true;
}
/setpos

CMD:setpos(playerid)
{
if(!IsPlayerConnected(playerid))
return true;
if(PlayerInfo[playerid][pAdmin] < 5)
return true;
if(x_getpos == 0.0 && y_getpos == 0.0 && z_getpos == 0.0)
{
SendClientMessage(playerid, -1, "Сначала сохраните координаты для ТП!");
SendClientMessage(playerid, -1, "Для этого введите команду: /getpos");
return true;
}
else
{
SetPlayerPos(playerid, x_getpos, y_getpos, z_getpos);
SendClientMessage(playerid, -1, "Вы успешно телепортировались по сохраненным координатам.");
}
return true;
}


Автор: Alanchick
Жду адекватной критики.

Daniel_Cortez
09.01.2016, 20:08
http://pro-pawn.ru/showthread.php?5738

DeimoS
09.01.2016, 20:12
А что, если я и мой друг, находясь в разных частях карты, решим одновременно записать свои координаты?

И почему вы вот здесь:

if(x_getpos == 0.0 && y_getpos == 0.0 && z_getpos == 0.0)
не сделали так:

if(x_getpos == 0.0)
{
if(y_getpos == 0.0)
{
if(z_getpos == 0.0)
{
Если вот тут вы разделяете две проверки, которые спокойно можно объединить в одну?

if(!IsPlayerConnected(playerid))
return true;
if(PlayerInfo[playerid][pAdmin] < 5)
return true;

Роуди.
09.01.2016, 21:39
Я бы на пивоварах сделал

ziggi
09.01.2016, 22:13
CMD:setpos(playerid)
{
if(!IsPlayerConnected(playerid))
return true;

Как по-твоему игрок введёт команду, если он не подключен к серверу?

Роуди.
09.01.2016, 22:56
CMD:setpos(playerid)
{
if(!IsPlayerConnected(playerid))
return true;

Как по-твоему игрок введёт команду, если он не подключен к серверу?

Кстати да, давно коробит эта проверка..

DeimoS
09.01.2016, 23:26
CMD:setpos(playerid)
{
if(!IsPlayerConnected(playerid))
return true;

Как по-твоему игрок введёт команду, если он не подключен к серверу?

Он просто душой живёт ещё в тех временах, когда в SA-MP была уязвимость, после которой игрок мог остаться на сервере после кика и юзать команды :3 #верните_мне_мой_2007

ziggi
13.01.2016, 01:45
Он просто душой живёт ещё в тех временах, когда в SA-MP была уязвимость, после которой игрок мог остаться на сервере после кика и юзать команды :3 #верните_мне_мой_2007

Тогда это лучше было бы засунуть в OnPlayerCommandReceived :)