Ко всем new добавить это:
new bool:SetPos[MAX_PLAYERS] = false; new Float:X22,Float:Y22,Float:Z22; new int22;

В паблик :
public OnPlayerCommandText(playerid, cmdtext[])

Вставляем вот это:
if (strcmp("/setpos" , cmdtext, true, 10) == 0) { if(IsPlayerConnected(playerid)) { if(IsPlayerAdmin(playerid) || PlayerInfo[playerid][pAdmin] >= 4) // вместо PlayerInfo[playerid][pAdmin] вставить своё. { if(SetPos[playerid] == false) { GetPlayerPos(playerid,X22,Y22,Z22); GetPlayerInterior(playerid,int22); SendClientMessage(playerid,0x1E90FFFF,"Точка телепортации успешно установлена Для телепорта используйте /tppos"); SetPos[playerid] = true; } else { SendClientMessage(playerid,0x1E90FFFF,"Точка телепортации сброшена!"); SetPos[playerid] = false; } } } return 1; }

И так, первая команда готова, займёмся второй.
if (strcmp("/tppos" , cmdtext, true, 10) == 0) { if(IsPlayerConnected(playerid)) { if(IsPlayerAdmin(playerid) || PlayerInfo[playerid][pAdmin] >= 4) { if(SetPos[playerid] == true) { SetPlayerPos(playerid,X22,Y22,Z22); SetPlayerInterior(playerid,int22); } else { SendClientMessage(playerid,-1,"Точка телепортации не была установлена!"); } } } return 1; }

Ну вот собственно и все! Сейчас поясню, что это такое вообще.
Прописываете команду /setpos, полученные ваши координаты записываются в переменные. После прописывания команды /tppos, ваша позиция становится на тех координатах, которые были записаны в переменных.
Проще говоря вы телепортируетесь в ту точку, где прописывали команду /setpos. Как-то так :)
Если будут какие-то проблемы, пишите.
На этом все, если понравилось не откажусь от + :)
Автор: Shpatel