Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 4 из 4
  1. #1
    Аватар для Dima_Tushin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±

    Система News

    Здравствуйте делал систему News и столкнулся с проблемой сохранения текста при редактирование объявления

    Описание ошибки: Мы отправляем сообщение к фракции 2 сообщение например /ad 1 | /ad 2 потом мы редактируем эти 2 сообщения как отредактировали все хорошо работает как нужно как доходит дело до отправки например сообщение 1 (( /ad 1 )) мы отправили в чате появилось потом как пошел черед отправки сообщения под номером 2 (( /ad 2 )) вы ходит сообщение под номером 1 (( /ad 1 )) и получается должно отправиться (( /ad 2 )) так как 2 сообщение отправили а отправилось под номером 1 то есть по циклу у меня сохраняется ID текста и получается когда у меня 2 сообщение я отправляю 1 там текст (( 1 )) я его отправил а потом очередь до 2 у меня отправляется тоже (( 1 )) а должно (( 2 )) как исправить?

    PHP код:
    enum nInfo
    {
        
    nName[90],//Ник отправителя
        
    nText[90],//Текст отправителя
    }
    new 
    NewsInfo[15][nInfo];//Количество объявлений
    new TotalNews[1];
    new 
    NewsPrislal[MAX_PLAYERS][128];
    new 
    LSNewsCena 500
    PHP код:
        if(strcmp(cmd"/n"true) == || strcmp(cmd"/npanel"true) == 0)
        {
            new 
    npanel[] = "[0] Объявления";
            
    ShowPlayerDialog(playerid28DIALOG_STYLE_LIST"[ News Menu]"npanel"Далее""Отмена");
            return 
    1;
        }
        if(
    strcmp(cmd"/advertise"true) == || strcmp(cmd"/ad"true) == 0)
        {
            new 
    length strlen(cmdtext);
            while((
    idx length) && (cmdtext[idx] <= ' '))
            {
                
    idx++;
            }
            new 
    offset idx;
            new 
    result[64];
            while((
    idx length) && ((idx offset) < (sizeof(result) - 1)))
            {
                
    result[idx offset] = cmdtext[idx];
                
    idx++;
            }
            
    result[idx offset] = EOS;
            if(!
    strlen(result)) return SendClientMessage(playeridCOLOR_WHITE"Введите: (/ad)vertise [текст]");
            
    NewsPrislal[playerid] = result;
            new 
    okroz[90];
            
    format(okrozsizeof(okroz), "{B8B8B8}Вы собираетесь отправить объявление:\n{57D900}%s\n\n{B8B8B8}Стоимость{00FF5E} %i вирт\n\n\n{56839C}Объявление будет подано после проверки!\n{56839C}Спасибо что вы пользуетесь услугами LS News"resultLSNewsCena);
            
    ShowPlayerDialog(playerid32DIALOG_STYLE_MSGBOX"{FFFFFF}Проверка"okroz"Отправить""Отмена");
            return 
    1;
        } 
    PHP код:
            /*************************************NEWS*****************************/
        
    case 28:
            {
                if(
    response)
                {
                    switch(
    listitem)
                    {
                        case 
    0Newss(playerid);
                    }
                }
                else
                {
                    return 
    1;
                }
            }
            case 
    29:
            {
                if(
    response)
                {
                    
    SetPVarInt(playerid"News"listitem 1);
                    
    ShowPlayerDialog(playerid30DIALOG_STYLE_LIST"Объявление""[1] Отправить объявление\n[2] Редактировать объявление""Далее""Отмена");
                }
                else
                {
                    return 
    1;
                }
            }
        case 
    30:
            {
                if(
    response)
                {
                    switch(
    listitem)
                    {
                        case 
    0:
                        {
                            new 
    okroz[90];
                            
    format(okrozsizeof(okroz), "Объявление: %s. Прислал: %s. Телефон: %i"NewsInfo[GetPVarInt(playerid"News")][nText], NewsInfo[GetPVarInt(playerid"News")][nName/*NewsInfo[TotalNews]][nTelefon]*/);
                            
    SendClientMessageToAll(COLOR_GREENokroz);
                            
    format(okrozsizeof(okroz), "Отредактировал сотрудник LS News: %s"PlayerInfo[playerid][pName]);
                            
    SendClientMessageToAll(COLOR_GREENokroz);
                            
    TotalNews[0]--;
                            
    DeletePVar(playerid"News");
                            
    Newss(playerid);
                        }
                        case 
    1:
                        {
                            new 
    okroz[90];
                            
    format(okrozsizeof(okroz), "Объявление: %s. Прислал: %s"NewsInfo[GetPVarInt(playerid"News")][nText], NewsInfo[GetPVarInt(playerid"News")][nName]);
                            
    ShowPlayerDialog(playerid311"Объявления"okroz"Принять""Назад");
                        }
                    }
                }
                else
                {
                    
    DeletePVar(playerid"News");
                    
    Newss(playerid);
                    return 
    1;
                }
            }
            case 
    31:
            {
                if(
    response)
                {
                    if(!
    strlen(inputtext))
                    {
                        new 
    okroz[90];
                        
    format(okrozsizeof(okroz), "Объявление: %s. Прислал: %s"NewsInfo[GetPVarInt(playerid"News")][nText], NewsInfo[GetPVarInt(playerid"News")][nName]);
                        
    ShowPlayerDialog(playerid321"Объявления"okroz"Принять""Назад");
                        return 
    1;
                    }
                    
    strmid(NewsInfo[GetPVarInt(playerid"News")][nText], inputtext0128128);
                    
    SendClientMessage(playeridCOLOR_BLUE"Объявление отредактировано и сохранено!");
                    
    ShowPlayerDialog(playerid30DIALOG_STYLE_LIST"Объявление""[1] Отправить объявление\n[2] Редактировать объявление""Далее""Отмена");
                }
                else
                {
                    return 
    1;
                }
            }
        case 
    32:
            {
                if(
    response)
                {
                    new 
    okroz[15];
                    if(
    PlayerInfo[playerid][pMoney] < LSNewsCena) return SendClientMessage(playeridCOLOR_WHITE,  "У вас нет столько денег");
                    
    PlayerInfo[playerid][pMoney] -= LSNewsCena;//Отняли деньги
                    
    TotalNews[0]++;
                    
    //FrackBank[0][fLSNews] += LSNewsCena;
                    //NewsInfo[TotalNews[0]][nTelefon] = PlayerInfo[playerid][pNomerTelefon];
                    
    strmid(NewsInfo[TotalNews[0]][nText], NewsPrislal[playerid], 0128128);
                    
    strmid(NewsInfo[TotalNews[0]][nName], PlayerInfo[playerid][pName], 0MAX_PLAYER_NAMEMAX_PLAYER_NAME);
                    
    format(okrozsizeof(okroz), "~r~$-%i"LSNewsCena);
                    
    GameTextForPlayer(playeridokroz30001);
                    
    SendClientMessage(playeridCOLOR_WHITE"Ваше объявление будит подано после проверки!");
                }
                else
                {
                    return 
    1;
                }
            } 
    PHP код:
    stock Newss(playerid)
    {
        new 
    string[150], okrozz[150];
        for(new 
    1<= TotalNews[0]; i++)
        {
            
    format(stringsizeof(string), "[%d] Текст: %s Прислала: %s\n"iNewsInfo[i][nText], NewsInfo[i][nName]);
            
    strcat(okrozzstring);
        }
        if(
    TotalNews[0] == 0) return ShowPlayerDialog(playerid9999DIALOG_STYLE_MSGBOX"Объявление""|\tНовых объявлений нет\t|""Готово""");
        
    ShowPlayerDialog(playerid29DIALOG_STYLE_LIST"Объявление"okrozz"Далее""Отмена");
        return 
    1;


  2. #2
    Аватар для Dima_Tushin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    не кто не знает?

  3. #3
    Аватар для qwezert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Цитата Сообщение от Dima_Tushin Посмотреть сообщение
    не кто не знает?
    Честно - обьяснение так себе да и сама система вроде как нелогична. Зачем тогда нужна БД?
    Я бы сделал например так - Создал в БД таблицу с новостями, при добавлении новости игроком - добавлял бы ее в таблицу и ставил флаг - не отмодерированная. Как только новость проверили и отправили - менял бы флаг на - отмодерированная. Очень удобно, быстро, все новости достаются по идишнику и редактируются по идишнику. Очищать таблицу можно при перезагрузке мода в 4 часа например.
    Работать так с массивами для редактирования и сохранения новостей - зашквар. ИМХО
    Лучше лишний раз показаться глупым и что то узнать, чем вы*бнуться и обосраться.

  4. #4
    Аватар для Dima_Tushin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Россия
    Сообщений
    154
    Репутация:
    1 ±
    Решил проблему. Модератор закройте тему или удалите.

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •