Question

Stepan_Pawnp
Новичок

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

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

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

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

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

 

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

 

Edited by Stepan_Pawnp

Share this post


Link to post

2 answers to this question

  • 0
hokageud
Завсегдатый

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

Edited by hokageud

Share this post


Link to post
  • 0
Stepan_Pawnp
Новичок

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

КОД /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;
}

 

 

Edited by Cawfee
Причина: спрятал код под спойлер.

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • ВасилийСталин
      By ВасилийСталин
      VERDICT PROJECT - V:ACE
       
      Соревновательный проект на платформе SA-MP, вдохновлённый духом Counter-Strike: тактические перестрелки, честный рейтинг и ванильное PVP.
      В разработке, не используются ресурсы, из открытых источников. Всё строится с нуля, собственный игровой мод, полностью кастомный интерфейс и игровой лаунчер.
      Что мы разрабатываем:
       
      - Рейтинговый режим с подбором по ELO. Равные соперники, честные матчи, путь от новичка до вершины таблицы.
      - Полностью кастомный интерфейс (CEF): меню, лобби, магазин и статистика такого уровня, какого на SA-MP почти не встретишь.
      - Легионеры - уникальные оперативники с индивидуальным дизайном и редкостью, открываются через боевой пропуск или чёрные ячейки (кейсы).
      - Скины на оружие и кейсы - коллекционная система в духе CS. -> В активной разработке
      - Киберспортивные команды: теги, ростеры, матчи команда против команды.
      - Тренировка аима, система рангов, ежедневные награды и не только.
       
      Продуманный баланс и внимание к деталям ванильного сражения - то, ради чего мы за это взялись.
      Проект уже на серьёзной стадии разработки. Мы открываем сообщество раньше официального анонса, чтобы первые скриншоты, новости и дата старта достались тем, кто был с нами с самого начала. Мы всегда рады открытой критике, или советам - сделаем игру лучше для всех!
      Подписывайтесь, чтобы не пропустить официальное заявление о запуске и первые материалы проекта.
       
      Группа VK: https://vk.ru/verdictcs
      Официальная почта: verdictproject@mail.ru
    • Kevin_McCarthy
      By Kevin_McCarthy
      🔒 ОТКРЫТИЕ НАБОРА НА ЗАКРЫТОЕ БЕТА-ТЕСТИРОВАНИЕ (ЗБТ)!
      Друзья! Мы выходим на самый ответственный этап разработки Brilliant RP. Проект уже практически готов к полноценному запуску, но перед тем как открыть двери для всех игроков, нам нужно тщательно проверить каждую систему, каждую работу и каждую строчку кода.
      Именно поэтому мы объявляем о старте Закрытого Бета-Тестирования!
      🏆 ТОП-3 ТЕСТЕРА ПОЛУЧАТ КРУТЫЕ ПРИЗЫ!
      Мы высоко ценим время и вклад каждого участника. Тестеры, которые проявят наибольшую активность, найдут больше всего уникальных багов и подробно опишут их в нашей Google-форме, получат ценные награды:
      🥇 1 МЕСТО: 3000 рублей на кошелек, 100.000$ игровой валюты, и Diamond VIP на 30 дней
      🥈 2 МЕСТО: 2000 рублей на кошелек, 75.000$ игровой валюты, и Diamond VIP на 30 дней
      🥉 3 МЕСТО: 1000 рублей на кошелек, 50.000$ игровой валюты, и Diamond VIP на 30 дней
      📝 Как стать участником ЗБТ?
      Заполни заявку на участие: 👉 https://vk.ru/gtasamp_brilliantrp
      Дождись одобрения.
    • OOLOAIS
      By OOLOAIS
      Ищу скрипт для самп/crmp который может скопировать акссесуары с аризоны/родины пж помогите