Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Сохранение Позиции - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Урок ]
Сохранение Позиции
Оценка: -----

#1
Пользователь офлайн   Lwf 

  • Эксперт
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
И так..Многие хотели сделать чтобы когда игрок допустим телепортировался на Паркур зону а когда вышел из неё оказался на тoм месте от куда он телепортировался,в этом уроке я покажу вам как это сделать.
Для начала ко всем forward добавьте
forward SavePos(playerid);

И ко всем new
new Float:X,Float:Y,Float:Z;

И в конец мода добавьте
public SavePos(playerid)
{
    {
	    GetPlayerPos(playerid,X,Y,Z);//функция узнаёт позицию и записывает в переменную
    }
    return 1;
}

Ну можно сказать всё,сейчас я вам покажу как можно использовать
    if(strcmp(cmdtext, "/teleportkudato", true) == 0)
	{
		SavePos(playerid);//Сохраняет позицию в переменную
		SetPlayerPos(playerid, 1773.59997559,-1750.59997559,44.50000000);//телепортирует
		return 1;
	}

 	if(strcmp(cmdtext, "/teleportotkudota", true) == 0)
	{
		SetPlayerPos(playerid,X,Y,Z);//Узнаёт данные переменной и телепортирует туда
		return 1;
	}

Думаю принцип вы поняли,удачи вам на этом всё.

Вариант без Public(меньше кода)

    if(strcmp(cmdtext, "/teleportkudato", true) == 0)
	{
	        GetPlayerPos(playerid,X,Y,Z);
		SetPlayerPos(playerid, 1773.59997559,-1750.59997559,44.50000000);//телепортирует
		return 1;
	}

 	if(strcmp(cmdtext, "/teleportotkudota", true) == 0)
	{
		SetPlayerPos(playerid,X,Y,Z);//Узнаёт данные переменной и телепортирует туда
		return 1;
	}


Автор:Slaer
При копировании материала указывать ссылку на источник(pawn-wiki.ru)и указывать автора(Slaer)обязательно

Так же это можно использовать в многих командах таких как /spec /specoff

Сообщение отредактировал Mike: 18 Январь 2012 - 15:40

4

#2
Пользователь офлайн   Lwf 

  • Эксперт
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
up
0

#3
Пользователь онлайн   Romzes 

  • © Pawn-Wiki.Ru
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Норм. но зачем public SavePos(playerid) вызывать? Без него тоже можно и код меньше станет.
1

#4
Пользователь офлайн   Lwf 

  • Эксперт
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Это я делал в экспериментальных целях щас напишу второй вариант
0

#5
Пользователь онлайн   Romzes 

  • © Pawn-Wiki.Ru
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Вот так теперь нормально. + Раньше ставил...
0

#6
Пользователь офлайн   Rock & Roll 

  • ДИПЛОМИРОВАННЫЙ ИНЖЕНЕР
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Функция работать не будет. По простой причине. Так как после любого шага или действия будит сброс GetPlayerPos, поэтому лучше сделать так:
if(strcmp(cmdtext, "/Savepos", true)==0)
   {
     static Float:ax;
     static Float:ay;
     static Float:az;
	GetPlayerPos(playerid, ax,ay,az);
    SendClientMessage(playerid,COLOR_GREY, "Ваша позиция сохранена! Для телепорта используй /loadpos");
    return 1;
   }

 if(strcmp(cmdtext, "/Loadpos", true)==0)
  {
    static Float:ax;
    static Float:ay;
    static Float:az;
	SetPlayerPos(playerid, ax,ay,az);
	SendClientMessage(playerid,COLOR_GREY, "Вы телепортировались на сохранённую позицию");
    GivePlayerMoney(playerid, -100);
    return 1;
   }

0

#7
Пользователь офлайн   Lwf 

  • Эксперт
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Сохранение позиции идёт перед телепортом и всё работает,проверял..
1

#8
Пользователь офлайн   Rock & Roll 

  • ДИПЛОМИРОВАННЫЙ ИНЖЕНЕР
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Я тоже раньше так делал, пока не поставил не переменную, а статичную функцию
0

#9
Пользователь офлайн   dIgL 

  • Новичок
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
А как сделать для простого сервера? И без телепорта, просто сохранять позицию при дисконекте или крэше. Подскажите пожалуйста.
0

Сказали спасибо 1:

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей