- 25, Aug 2014
- #1
Всем привет вот решил выложить сохранение позиции при выходе из игры и Spawn на том месте где вы вышли из игры.
Ну так что приступим.
Сис-ма сохранения позиции на MxINI сразу предупредил.
Для начала найдём в моде enum pInfo
Далее в неё вставим:
Теперь сделаем чтоб игрок делал Spawn на сохранённой позиции. В моде находим public OnPlayerSpawn(playerid)
Float:pPos_x,
Float:pPos_y,
Float:pPos_z,
pInt, // если такой есть уже, то не надо его вставлять !
pWorld,
в public OnPlayerConnect(playerid)
PlayerInfo[playerid][pPos_x] = -275.9215;
PlayerInfo[playerid][pPos_y] = 1527.2606;
PlayerInfo[playerid][pPos_z] = 75.1405;
PlayerInfo[playerid][pInt] = 0;
PlayerInfo[playerid][pWorld] = 0;
Далее находим в вашем моде OnplayerRegister
И вставляем в неё данное:
ini_setFloat(File, "Pos_x", -275.9215);
ini_setFloat(File, "Pos_y", 1527.2606);
ini_setFloat(File, "Pos_z", 75.1405);
ini_setInteger(File, "Int", 0);
ini_setInteger(File, "World", 0);
Далее находим в вашем моде Onplayerlogin
И вставляем в неё данное:
ini_getFloat(File, "Pos_x", PlayerInfo[playerid][pPos_x]);
ini_getFloat(File, "Pos_y", PlayerInfo[playerid][pPos_y]);
ini_getFloat(File, "Pos_z", PlayerInfo[playerid][pPos_z]);
ini_getInteger(File, "Int", PlayerInfo[playerid][pInt]);
ini_getInteger(File, "World", PlayerInfo[playerid][pWorld]);
Теперь добавим функцию сохранения позиции
В конец мода или куда вам удобно вставим:
stock UpdatePlayerPosition(playerid)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid,x,y,z);
PlayerInfo[playerid][pPos_x] = x;
PlayerInfo[playerid][pPos_y] = y;
PlayerInfo[playerid][pPos_z] = z;
PlayerInfo[playerid][pInt] = GetPlayerInterior(playerid);
PlayerInfo[playerid][pWorld] = GetPlayerVirtualWorld(playerid);
return 1;
}
Теперь сделаем чтоб позиция сохранялась при Disconne'кте
В моде находим public OnPlayerDisconnect(playerid,reason)
В него вставляем функцию сохранения позиции:
UpdatePlayerPosition(playerid);
Теперь сделаем чтоб игрок делал Spawn на сохранённой позиции. В моде находим public OnPlayerSpawn(playerid)
new Float:x,Float:y,Float:z;
x = PlayerInfo[playerid][pPos_x];
y = PlayerInfo[playerid][pPos_y];
z = PlayerInfo[playerid][pPos_z];
SetPlayerPos(playerid,x,y,z+5);
SetPlayerInterior(playerid, PlayerInfo[playerid][pInt]);
SetPlayerVirtualWorld(playerid, PlayerInfo[playerid][pWorld]);
Не забываем и про того что
Сделаем чтоб позиция сохранялась в файле игрока.
В моде ищем функцию сохранения игрока и в неё вставляем:SavessAkk
ini_setFloat(File, "Pos_x", PlayerInfo[playerid][pPos_x]);
ini_setFloat(File, "Pos_y", PlayerInfo[playerid][pPos_y]);
ini_setFloat(File, "Pos_z", PlayerInfo[playerid][pPos_z]);
ini_setInteger(File, "Int", PlayerInfo[playerid][pInt]);
ini_setInteger(File, "World", PlayerInfo[playerid][pWorld]);
Сохраняет позицию и миры
Автор: неизвестно
Доработал я