[ Урок ] Сохранение позиции при выходе.
|
|
[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
|
Кхм, я конечно всё понимаю, но кому в голову пришло переводить код в переводчике? Что за поплавок, истинна,ключ,если, вал хД Компилятор ведь выбьет кучу ошибок. Измени на нормальные float, Val, if, key, true.
P.s я вначале подумал что у меня браузер все сам перевел, но зашел с телефона, увидел тоже самоеДобавлено (23.11.2015, 08:49) ---------------------------------------------
###adeaf6944f49fac015d35e9d3eb34516###
|
|
|
|
vl777v |
Дата: Четверг, 03.03.2016, 04:05 | Сообщение # 6
|
Новичок
Сообщений: 9
Статус: Offline
|
после рестарта все слетит конечно...нужно с базой данных связать
|
|
|
|