И так многим интересно как сделать так чтобы где игрок вышел из игры,там же при входе он и появится.
На эту тему я решил поискать немного информации,нашёл не плохой урок,от Extazy.
Смотрите.
И так первое что вам нужно добавить 3 переменных которые будут записываться в аккаунт пользователя.
(!)Если у вас нет регистрации,ничего не выйдет!
(!)Этот мануал написан для ГФ модов,но оптимизировать можно под что угодно,главное чтобы была регистрация.
И так находим конструкцию enum pInfo в своём моде,и в конец добавляем
Далее в OnPlayerRegister добавляем строку.
Поясняю: Тут мы делаем чтобы при создании аккаунта в него добавились нужные нам переменные.
Далее в OnPlayerUpdate добавляем аналогичный код.
Поясняю: Тут мы делаем чтобы переменные записывались в аккаунт
И в OnPlayerLogin добавляем.
Поясняю: Тут мы извлекаем значение переменных из файла
Далее в OnGameModeInit добавляем бесконечный таймер,который будет получать позиции игроков
Далее создадим сам паблик .
Ну и наконец при спавне игрока,устанавливаем ему эти координаты.
Это ставим в OnPlayerSpawn
В принципе можно убрать все спавны фракциям,и добавить условия только зарегистрирован или нет,и если нет то ставить другую позицию.
Но это уже нюансы.
Автор: Extazy.
Исправление ошибок: @Vlad_Trifonov
Думаю все понятно.Это хороший урок,это система много кому требуется,удачи вам.
На эту тему я решил поискать немного информации,нашёл не плохой урок,от Extazy.
Смотрите.
И так первое что вам нужно добавить 3 переменных которые будут записываться в аккаунт пользователя.
(!)Если у вас нет регистрации,ничего не выйдет!
(!)Этот мануал написан для ГФ модов,но оптимизировать можно под что угодно,главное чтобы была регистрация.
И так находим конструкцию enum pInfo в своём моде,и в конец добавляем
Код:
Float:pCordX, Float:pCordY, Float:pCordZ,
Код:
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 добавляем бесконечный таймер,который будет получать позиции игроков
Код:
SetTimer("SavePlayerPos",1000,1);
Код:
forward SavePlayerPos();public SavePlayerPos(){ new Float:px,Float:py,Float:pz; //используем цикл 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
Код:
SetPlayerPos(playerid, PlayerInfo[playerid][pCordX],PlayerInfo[playerid][pCordY],PlayerInfo[playerid][pCordZ]);//Установим координаты из переменной SetPlayerFacingAngle(playerid, 360.0);
Но это уже нюансы.
Автор: Extazy.
Исправление ошибок: @Vlad_Trifonov
Думаю все понятно.Это хороший урок,это система много кому требуется,удачи вам.
Последнее редактирование модератором: