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

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

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

[ Scr ][ GF ]
Сохранение позиции при выходе
Оценка: ***** 2 Голосов

#1
Пользователь офлайн   Санёк 

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

И так первое что вам нужно добавить 3 переменных которые будут записываться в аккаунт пользователя.
(!)Если у вас нет регистрации,ничего не выйдет!
(!)Этот мануал написан для ГФ модов,но оптимизировать можно под что угодно,главное чтобы была регистрация.

И так находим конструкцию enum pInfo в своём моде,и в конец добавляем
Float:pCordX,  
Float:pCordY,  
Float:pCordZ,  

Далее в OnPlayerRegister добавляем строку
format(var, 32, "CordinataX=%.1f\n",PlayerInfo[playerid][pCordX]);
fwrite(hFile, var);  
format(var, 32, "CordinataX=%.1f\n",PlayerInfo[playerid][pCordY]);
fwrite(hFile, var);  
format(var, 32, "CordinataX=%.1f\n",PlayerInfo[playerid][pCordZ]);
fwrite(hFile, var);  

Поясняю: Тут мы делаем чтобы при создании аккаунта в него добавились нужные нам переменные.

Далее в OnPlayerUpdate добавляем аналогичный код
format(var, 32, "CordinataX=%.1f\n",PlayerInfo[playerid][pCordX]);
fwrite(hFile, var);  
format(var, 32, "CordinataX=%.1f\n",PlayerInfo[playerid][pCordY]);
fwrite(hFile, var);  
format(var, 32, "CordinataX=%.1f\n",PlayerInfo[playerid][pCordZ]);
fwrite(hFile, var);  

Поясняю: Тут мы делаем чтобы переменные записывались в аккаунт

И в OnPlayerLogin добавляем
if( strcmp( key , "CordinataX" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pCordX] = strval( val ); }  
if( strcmp( key , "CordinataY" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pCordY] = strval( val ); }  
if( strcmp( key , "CordinataZ" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pCordZ] = strval( val ); }  

Поясняю: Тут мы извлекаем значение переменных из файла

Далее в OnGameModeInit добавляем бесконечный таймер,который будет получать позиции игроков

Code
SetTimer("SavePlayerPos",1000,1);

Далее создадим сам паблик
public SavePlayerPos()  
{  
new Float:x,Float:y,Float:z;  
//используем цикл  
for(new i = 0;i , MAX_PLAYERS;i++)  
{  
GetPlayerPos(i,px,py,pz);//Получаем позицию игрока  
PlayerInfo[i][pCordX] = px;//записываем x  
PlayerInfo[i][pCordY] = py;//записываем y  
PlayerInfo[i][pCordZ] = pz;//записываем z  
}  
}  

И не забудьте добавить форвард,в начало кода

Ну и наконец при спавне игрока,устанавливаем ему эти координаты.
Это ставим в OnPlayerSpawn

forward SavePlayerPos();  

x = PlayerInfo[i][pCordX];  
y = PlayerInfo[i][pCordY];  
z = PlayerInfo[i][pCordZ];  
            SetPlayerPos(playerid, x,y,z);//Установим координаты из переменной  
         SetPlayerFacingAngle(playerid, 360.0);  

В принципе можно убрать все спавны фракциям,и добавить условия только зарегистрирован или нет,и если нет то ставить другую позицию.
Но это уже нюансы.

Автор: Extazy.

Надеюсь вам этот урок помог.
Удачи)
6

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

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
За это конечно + тебе! Но можешь ли ты перевести эти сохранения на систему регистрации MySQL?!?!?! Очень надо!=)
0

#3
Пользователь офлайн   Санёк 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
я дружу с MySQL
0

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

  • Пользователь
  • Вставить ник
  • Раскрыть информацию
Я бы ещё интерьер в сохранение добавил... а то падать не охота))) :biggrin:/>/>

А так + конечно)

Сообщение отредактировал Zverek: 05 января 2013 - 00:49

0

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

  • Пользователь
  • Вставить ник
  • Раскрыть информацию
еще бы лучше было если нужно было давать соглашение на данную функцию,например в течении 1 написать команду /back
0

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

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияZverek (05 января 2013 - 00:47) писал:

Я бы ещё интерьер в сохранение добавил... а то падать не охота))) :biggrin:/>/>

А так + конечно)


Можеш подробнее написать , как добавить сюда сохранение интерьера. Буду благодарен.
0

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

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Есть несколько багов!!!
0

#8
Пользователь офлайн   iRusel 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Вместе с возмущением желательно было бы написать что за баги.
0

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

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Огромное спасибо. Пишу мод. Как раз искал :rolleyes:
0

#10
Пользователь офлайн   Xogan 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Ищу Мод с такой системой.
0

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


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

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


Яндекс.Метрика