[ Урок ] Сохранение позиции при выходе. - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Phoenixxx_Czar, Getbackthere, [CM]OlegEhtler  
[ Урок ] Сохранение позиции при выходе.
[CM]Radio™ Дата: Среда, 11.11.2015, 15:58 | Сообщение # 1
Новичок
Сообщений: 10
Статус: Offline
И так многим интересно как сделать так чтобы где игрок вышел из игры,там же при входе он и появится.
На эту тему я решил поискать немного информации, нашел не плохой урок.

В общем внимательно читаем.

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

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

Код
Поплавок:pCordX,  
Поплавок:pCordY,  
Поплавок:pCordZ,  


Далее в OnPlayerRegister добавляем строку:

Код
Формат(в var, 32, "CordinataX=%.1-ый этаж и\N",PlayerInfo[playerid][pCordX]);fwrite(hFile, var в);  
Формат(в var, 32, "CordinataX=%.1-ый этаж и\N",PlayerInfo[playerid][pCordY]);fwrite(hFile, var в);  
Формат(в var, 32, "CordinataX=%.1-ый этаж и\N",PlayerInfo[playerid][pCordZ]);fwrite(hFile, var в);  


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

Далее в OnPlayerUpdate добавляем аналогичный код:

Код
Формат(в var, 32, "CordinataX=%.1-ый этаж и\N",PlayerInfo[playerid][pCordX]);fwrite(hFile, var в);  
Формат(в var, 32, "CordinataX=%.1-ый этаж и\N",PlayerInfo[playerid][pCordY]);fwrite(hFile, var в);  
Формат(в var, 32, "CordinataX=%.1-ый этаж и\N",PlayerInfo[playerid][pCordZ]);fwrite(hFile, var в);  


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

И в OnPlayerLogin добавляем:

Код
если( strcmp( ключ , "CordinataX" , истина ) == 0 ) { вал = ini_GetValue( данных ); PlayerInfo[playerid][pCordX] = strval( вал ); }  
если( strcmp( ключ , "CordinataY" , истина ) == 0 ) { вал = ini_GetValue( данных ); PlayerInfo[playerid][pCordY] = strval( вал ); }  
если( strcmp( ключ , "CordinataZ" , истина ) == 0 ) { вал = ini_GetValue( данных ); PlayerInfo[playerid][pCordZ] = strval( вал ); }  


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

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

Цитата
SetTimer("SavePlayerPos",1000,1);


Далее создадим сам паблик

Код
общественная SavePlayerPos()  
{  
новый поплавок:х,поплавок:Y в,поплавок:по Z;  
//используем цикл
для(новая я = 0;я , MAX_PLAYERS;я++)  
{  
GetPlayerPos(я,РХ,ру,ПЗ);//Получаем позицию игрока
PlayerInfo[я][pCordX] = РХ;//записываем х
PlayerInfo[я][pCordY] = пы;//записываем в Y
PlayerInfo[я][pCordZ] = ПЗ;//записываем в Z
}  
}  


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

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

Цитата
вперед SavePlayerPos();


Код
х = PlayerInfo[я][pCordX];  
для Y = PlayerInfo[я][pCordY];  
для Z = PlayerInfo[я][pCordZ];  
            SetPlayerPos(playerid, х,по Y,по Z);//Установим координаты из переменной
         SetPlayerFacingAngle(playerid, 360.0);  

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


ⒸⒽⒺⒶⓉ ⇐ ⇒ ⓂⒶⓈⓉⒺⓇ
Len1n Дата: Среда, 11.11.2015, 16:08 | Сообщение # 2
Боец
Сообщений: 89
Статус: Offline
Забыл устанавливать выдачу интерьера и виртуального мира. Игрок может зайти в инт к какой нибудь орг. и в итоге после перезахода появится в воздухе и умрет при падении. И так в итоге человек опять возвращается на ту же позицию. Что твоя система? Баги и какашечки =)
Так же не забуду уточнить, что может существовать какая-нибудь больница.


Связь со мной:
Skype: po61-rap
E-Mail: len1nthe@gmail.com

if(time>=1500 && rep<500) {
cout « "200 репы накручено!";
rep+=200;
}
Plombirbom Дата: Четверг, 12.11.2015, 00:50 | Сообщение # 3
Боец
Сообщений: 133
Статус: Offline
Я может чего то не понимаю, но а где сохранение? После рестарта сервера сохранение пропадёт.

Бесплатная студия графики: http://cheat-master.ru/forum/134-522716-1
Snayder Дата: Пятница, 13.11.2015, 00:03 | Сообщение # 4
Боец
Сообщений: 57
Статус: Offline
Найс

AHK кодер, дизайнер. Главные темы/разработки:
Лаунчер Samp (cheat-master.ru/forum/160-525067-1)
Загрузчик игры (cheat-master.ru/forum/160-522747-1)
FakeProject (cheat-master.ru/forum/160-523636-1)
Графика (cheat-master.ru/forum/134-524221-1)
А так же, различные AHK фэйки в разделах AHK/популярных проектов SAMP.
STy1e Дата: Понедельник, 23.11.2015, 08:49 | Сообщение # 5
Боец
Сообщений: 51
Статус: Offline
Кхм, я конечно всё понимаю, но кому в голову пришло переводить код в переводчике? biggrin Что за поплавок, истинна,ключ,если, вал хД Компилятор ведь выбьет кучу ошибок. Измени на нормальные float, Val, if, key, true.

P.s я вначале подумал что у меня браузер все сам перевел, но зашел с телефона, увидел тоже самое

Добавлено (23.11.2015, 08:49)
---------------------------------------------



###adeaf6944f49fac015d35e9d3eb34516###
vl777v Дата: Четверг, 03.03.2016, 04:05 | Сообщение # 6
Новичок
Сообщений: 9
Статус: Offline
после рестарта все слетит конечно...нужно с базой данных связать
  • Страница 1 из 1
  • 1
Поиск: