Вопросы

Всем привет, столкнулся с такой проблемой что пропадает маппинг.

Тоесть создаю маппинг через /map либо же просто ставлю тюнинг,

маппинг создается и пропадает спустя пару минут, на тест сервере ничего не пропадает,

а на сервере там где 50+ онлайна пропадает, лимит CreateObject не превышен, всего обьектов 54000 (CreateDynamicObject),

версию streamer менял много раз, в логах ничего не пишет(, прошу помогите

 

UPD: В OnGameModeInit стоит Streamer_SetVisibleItems(STREAMER_TYPE_OBJECT, 1000, -1);
Но с ним или без него, все равно пропадает.

 

Отредактировано пользователем Stepan_Pawnp

Поделиться сообщением


Ссылка на сообщение

2 ответа на этот вопрос

  • 0

код связанный с /map дай, если создание объекта происходит через createobject измени на createdynamicobject или наоборот

Отредактировано пользователем hokageud

Поделиться сообщением


Ссылка на сообщение
  • 0

Поменял местами, не помогло,

КОД /map: 

 

Спойлер

stock AdminMapping_Create(playerid, model, const Story[])
{
    new id = GetAdminMappingFREE();
            
    if id == -1 *then
        return SendErrorMessage(playerid);
            
    GetPlayerPos(playerid, AdminMapping[id][AM_Pos][0], AdminMapping[id][AM_Pos][1], AdminMapping[id][AM_Pos][2]);
            
    AdminMapping[id][AM_Object] = CreateObject(model, AdminMapping[id][AM_Pos][0], AdminMapping[id][AM_Pos][1] + 2.5, AdminMapping[id][AM_Pos][2], 0.00.00.0);
            
    Int_SetPlayerData(playerid, "AdminMappingID", id);
    
    format(global_str, 1024"INSERT INTO map_objects (`idx`, `pUID`, `Owner`, `Model`, `X`, `Y`, `Z`, `RX`, `RY`, `RZ`, `Story`, `Date`) VALUES ('%d', '%d', '%s', '%d', '%f', '%f', '%f', '%f', '%f', '%f', '%s', CURRENT_TIMESTAMP())", id, PI[playerid][pID], PN(playerid), model,  AdminMapping[id][AM_Pos][0], AdminMapping[id][AM_Pos][1], AdminMapping[id][AM_Pos][2], 0.00.00.0, Story);
    mysql_tquery(mysql, global_str, "AdminMapping_CreateSQL""dd", playerid, id);
    AddLog(4"Администратор <a  data-cke-saved-href=../logsaccount.php?name=%s href=../logsaccount.php?name=%s>%s</a> создал обьект %i.", PN(playerid), PN(playerid),model);
    return true;
}

public: AdminMapping_CreateSQL(playerid, id)
{
    AdminMapping[id][AM_UID] = cache_insert_id(mysql);
    
    SCMF(playerid, COLOR_LIGHTBLUE, "[Admin Mapping] Объект создан, установите его в нужной позиции и нажмите на кнопку сохранения или ESC. [%d*%d]", id, AdminMapping[id][AM_UID]);
            
    SCM(playerid, -1"[Admin Mapping] Объекту присвоена группа: Без названия [ID: 0].");
    
    EditObject(playerid, AdminMapping[id][AM_Object]);
}


public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
    if response == EDIT_RESPONSE_FINAL *then
    {
        if Int_GetPlayerData(playerid, "AdminMappingID") *then
        {
            new id = Int_GetPlayerData(playerid, "AdminMappingID");

            AdminMapping_Update(id, x,y,z, rx, ry, rz);

            DeletePVar(playerid, "AdminMappingID");
        }
    }
    else if response == EDIT_RESPONSE_CANCEL *then
    {
        if Int_GetPlayerData(playerid, "AdminMappingID") *then
        {
            new id = Int_GetPlayerData(playerid, "AdminMappingID");

            SetObjectPos(objectid, AdminMapping[id][AM_Pos][0], AdminMapping[id][AM_Pos][1], AdminMapping[id][AM_Pos][2]);
            SetObjectRot(objectid, AdminMapping[id][AM_Rot][0], AdminMapping[id][AM_Rot][1], AdminMapping[id][AM_Rot][2]);

            DeletePVar(playerid, "AdminMappingID");
        }
    }
    return true;
}
stock AdminMapping_Update(id, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
    SetObjectPos(AdminMapping[id][AM_Object], AdminMapping[id][AM_Pos][0] = x, AdminMapping[id][AM_Pos][1] = y, AdminMapping[id][AM_Pos][2] = z);
    SetObjectRot(AdminMapping[id][AM_Object], AdminMapping[id][AM_Rot][0] = rx, AdminMapping[id][AM_Rot][1] = ry, AdminMapping[id][AM_Rot][2] = rz);
            
    SQL("UPDATE map_objects SET X = '%f', Y = '%f', Z = '%f', RX = '%f', RY = '%f', RZ = '%f' WHERE ID = '%d'", x,y,z, rx,ry,rz, AdminMapping[id][AM_UID]);

    return true;
}

 

 

КОД ТЮНИНГА:

 

Спойлер

stock EditOwnableCarObject(playerid, slot)
{
    new Float:X,Float:Y,Float:Z, carid = GetPlayerVehicleID(playerid), number = GetVehicleID(carid);
    if(AttachEdit{playerid} || !IsAOwnableCar(number)) return false;
    if(IsPlayerInHisVehicle(playerid) && GetPlayerState(playerid) == 2)
    {
        SCM(playerid, COLOR_VALIK, "[Информация] {F0F0F0}Используя ползунки вокруг обьекта, установите нужные позиции тюнинг детали и нажмите кнопку СОХРАНИТЬ!");
        SCM(playerid, COLOR_VALIK, "[Информация] {F0F0F0}Также рядом с кнопкой СОХРАНИТЬ есть возможность переключиться на изменения угла поворота обьекта");
        SCM(playerid, COLOR_VALIK, "[Информация] {F0F0F0}Чтобы в момент редактировать пользоваться мышкой, зажмите 'W' (двигаться вперед)!");
        SCM(playerid, COLOR_LIGHTRED, "[Информация] {F0F0F0}Запрещается заводить двигатель и выводить обьект далеко от вашего транспорта!");
        SCM(playerid, COLOR_LIGHTRED, "[Информация] Для отмены нажмите 'ESC'");
        GetVehiclePos(carid,X,Y,Z);
        SetVehicleZAngle(carid, 0.0);
        if(ObjectCarEdit[carid][slot] != -1) DestroyObject(ObjectCarEdit[carid][slot]), ObjectCarEdit[carid][slot] = -1;
        ObjectCarSelect[playerid] = CreateObject(1934, X, Y, Z, 0.00.00.0);
        ObjectCarEdit[carid][slot] = CreateObject(CarInfo[number][cModelObject][slot], X, Y, Z, 0.00.00.0);
        PickObject[playerid] = slot;
        AttachEdit{playerid} = true;
        SetPVarInt(playerid, "LockCars", CarInfo[number][cLock]);
        CarInfo[number][cLock] = 1;
        SetDoorsStatus(carid, 1, playerid);
        AttachObjectToVehicle(ObjectCarEdit[carid][slot], carid, 0000.00.00.0);
        SetEngineStatus(carid, false, playerid);
        SetPVarInt(playerid, "TypeRedactor"1);
        EditObject(playerid, ObjectCarSelect[playerid]);
    }
    return 1;
}


public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
    if(GetPVarInt(playerid, "TypeRedactor") == 1)
    {
        if(response == EDIT_RESPONSE_UPDATE)
        {
            if(objectid == ObjectCarSelect[playerid])
            {
                new carid = GetPlayerVehicleID(playerid);
                new Float:Tx,Float:Ty,Float:Tz,Float:Tr, slot = PickObject[playerid], obj = ObjectCarEdit[carid][slot];
                GetVehiclePos(carid,Tx,Ty,Tz);
                GetVehicleZAngle(carid, Tr);
                if(x-Tx >= 3.5 || y-Ty >= 3.5 || z-Tz >= 3.5) AttachObjectToVehicle(obj, carid, 3.53.53.5, rx, ry, rz-Tr);
                else AttachObjectToVehicle(obj, carid, x-Tx, y-Ty, z-Tz, rx, ry, rz-Tr);
            }
        }
        if(response == EDIT_RESPONSE_CANCEL)
        {
            if(objectid == ObjectCarSelect[playerid])
            {
                new slot = PickObject[playerid];
                new carid = GetPlayerVehicleID(playerid);
                new number = GetVehicleID(carid);
                if(ObjectCarSelect[playerid] != -1) DestroyObject(ObjectCarSelect[playerid]), ObjectCarSelect[playerid] = -1;
                AttachObjectToVehicle
                (
                    ObjectCarEdit[carid][slot],
                    carid,
                    CarInfo[number][cObjectPosX][slot],
                    CarInfo[number][cObjectPosY][slot],
                    CarInfo[number][cObjectPosZ][slot],
                    CarInfo[number][cObjectRotX][slot],
                    CarInfo[number][cObjectRotY][slot],
                    CarInfo[number][cObjectRotZ][slot]
                );
                PickObject[playerid] = -1;
                AttachEdit{playerid} = false;
                CarInfo[number][cLock] = GetPVarInt(playerid, "LockCars");
                SetDoorsStatus(carid, GetPVarInt(playerid, "LockCars"), playerid);
                DeletePVar(playerid, "LockCars");
                CancelEdit(playerid);
                Streamer_Update(playerid);
            }
            else AttachEdit{playerid} = false;
        }
        if(response == EDIT_RESPONSE_FINAL)
        {
            if(objectid == ObjectCarSelect[playerid])
            {
                new slot = PickObject[playerid];
                new Float:Tx,Float:Ty,Float:Tz,Float:Tr;
                new carid = GetPlayerVehicleID(playerid);
                new number = GetVehicleID(carid);
                if(ObjectCarSelect[playerid] != -1) DestroyObject(ObjectCarSelect[playerid]), ObjectCarSelect[playerid] = -1;
                if(ObjectCarEdit[carid][slot] != -1) DestroyObject(ObjectCarEdit[carid][slot]), ObjectCarEdit[carid][slot] = -1;
                GetVehiclePos(carid,Tx,Ty,Tz);
                GetVehicleZAngle(carid, Tr);
                CarInfo[number][cObjectPosX][slot] = x-Tx;
                CarInfo[number][cObjectPosY][slot] = y-Ty;
                CarInfo[number][cObjectPosZ][slot] = z-Tz;
                CarInfo[number][cObjectRotX][slot] = rx;
                CarInfo[number][cObjectRotY][slot] = ry;
                CarInfo[number][cObjectRotZ][slot] = rz-Tr;
                CarInfo[number][cObjectUsed][slot] = 1;
                SaveObjectCar(number);
                ObjectCarEdit[carid][slot] = CreateObject(CarInfo[number][cModelObject][slot], Tx, Ty, Tz, 0.00.00.0);
                AttachObjectToVehicle(ObjectCarEdit[carid][slot], carid, x-Tx, y-Ty, z-Tz, rx, ry, rz-Tr);
                Streamer_Update(playerid);
                CarInfo[number][cLock] = GetPVarInt(playerid, "LockCars");
                SetDoorsStatus(carid, GetPVarInt(playerid, "LockCars"), playerid);
                PickObject[playerid] = -1;
                AttachEdit{playerid} = false;
                DeletePVar(playerid, "LockCars");
            }
            else AttachEdit{playerid} = false;
        }
    }
    return true;
}

 

 

Отредактировано пользователем Cawfee
Причина: спрятал код под спойлер.

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Sten Developer
      От Sten Developer
      Объясню всю ситуацию, пишу систему смерти игрока но она не работает. Решил по приколу написать туда обычный вывод текста SCM(playerid, COLOR_RED, "Вы умерли");
      Но однако после смерти текст не выводиться. Не работает абсолютно все. Кто знает как решить эту проблему?