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

    Статус
    Оффлайн
    Регистрация
    26.11.2014
    Адрес
    Новосибирск
    Сообщений
    20
    Репутация:
    0 ±

    Delete3DTextLabel не удаляет 3D текст

    Начал делать заправки. и появилась проблема, не мгу удалить созданный в Init 3DText
    собственно код:
    PHP код:
    enum AZSp{azsId,azsUid,Float:azsX,Float:azsY,Float:azsZ,azsStr[64],Text3D:azsT3D}
    new 
    AZS[][AZSp]; 
    При старте серва выполняется LoadAZS, все тексты грузяться на места свои
    PHP код:
    LoadAZS()
    {
        new 
    i,query[200];
        
    format(querysizeof(query), "SELECT * FROM `azs`");
        
    mysql_query(query),mysql_store_result();
        while (
    mysql_retrieve_row())
        {
                
    //......
            
    AZS[i][azsT3D]=Create3DTextLabel(AZS[i][azsStr],C_WHITE,AZS[i][azsX],AZS[i][azsY],AZS[i][azsZ],20.0,0,0);
        }
        
    format(querysizeof(query),"LOADING: AZS .................... %d",i);
        print(
    query);
        return 
    1;

    Выполняю команду, текст не удаляется, почему?
    PHP код:
    // * * * ADMIN SET POSition AZS
    CMD:asetposazs(playeridparams[])
    {
        if (
    pInfo[playerid][pAdmin] >= 6)
        {
            new 
    query[128],id;
            if(
    sscanf(params,"d",id)) return SCM(playeridC_WHITE" Введите: /asetposazs [Номер АЗС]");
            
    format(querysizeof(query), "SELECT `id` FROM `azs` WHERE `id`='%d' LIMIT 1"id);
            
    mysql_query(query),mysql_store_result(),mysql_retrieve_row();
            if(
    mysql_num_rows() == 1)
            {
                
    //..................
                
    Delete3DTextLabel(AZS[id][azsT3D]);
                
    format(stringsizeof(string), "Местоположение АЗС-%d назначено"id);
                return 
    SCM(playeridC_GREENstring);
                
    //..................
            
    }
            else return 
    SCM(playeridC_RED"Такой АЗС нет!");
        }
        return 
    1;

    "Местоположение АЗС-%d назначено" срабатывает
    За место
    PHP код:
    Delete3DTextLabel(AZS[id][azsT3D]); 
    указывал
    PHP код:
    Delete3DTextLabel(AZS[0 и 1][azsT3D]); 
    тоже ноль реакции

    - - - Добавлено - - -

    добился удаление указав размер массива
    PHP код:
    new AZS[100][AZSp]; 
    а можно без фиксированного размера массива сделать?

  2. #2
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Кажется подозрительным следующий участок:

    Цитата Сообщение от DiFix Посмотреть сообщение
    PHP код:
    LoadAZS()
    {
        new 
    i,query[200];
        
    format(querysizeof(query), "SELECT * FROM `azs`");
        
    mysql_query(query),mysql_store_result();
        while (
    mysql_retrieve_row())
        {
                
    //......
            
    AZS[i][azsT3D]=Create3DTextLabel(AZS[i][azsStr],C_WHITE,AZS[i][azsX],AZS[i][azsY],AZS[i][azsZ],20.0,0,0);
        }
        
    format(querysizeof(query),"LOADING: AZS .................... %d",i);
        print(
    query);
        return 
    1;

    Не изменяется счётчик цикла (i). По сути все экземпляры АЗС записываются в слот 0, перезаписывая друг друга, из-за чего в 0-м слоте будет самая последняя АЗС из таблицы, а остальные слоты будут пустыми.

    Цитата Сообщение от DiFix Посмотреть сообщение
    а можно без фиксированного размера массива сделать?
    Вы имеете в виду динамические массивы? Можно, но для этого потребуются специальные плагины для динамического выделения памяти. Да и обращение к таким динамическим массивам будет производиться через функции плагина. Следовательно, за счёт задержки из-за вызова нативных функций работа с динамическими массивами будет намного медленнее, чем со статическими. Поэтому лучше оставить всё так, как есть.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    26.11.2014
    Адрес
    Новосибирск
    Сообщений
    20
    Репутация:
    0 ±
    Не изменяется счётчик цикла (i).
    тут не согласен, переменная i берется из БД, и ей присваивается уникальный номер записи.

    извиняюсь я просто убрал нужный код для решения вопроса.
    вот так
    PHP код:
    LoadAZS()
    {
        new 
    i,query[200];
        
    format(querysizeof(query), "SELECT * FROM `azs`");
        
    mysql_query(query),mysql_store_result();
        while (
    mysql_retrieve_row())
        {
            
    mysqlRowInt("id",i); AZS[i][azsId] = i;
            
    mysqlRowInt("uid",AZS[i][azsUid]);
            
    mysqlRowFloat("azsX",AZS[i][azsX]);
            
    mysqlRowFloat("azsY",AZS[i][azsY]);
            
    mysqlRowFloat("azsZ",AZS[i][azsZ]);
            
    mysqlRowStr("str",AZS[i][azsStr]);
            
    AZS[i][azsT3D]=Create3DTextLabel(AZS[i][azsStr],C_WHITE,AZS[i][azsX],AZS[i][azsY],AZS[i][azsZ],20.0,0,0);
        }
        
    format(querysizeof(query),"LOADING: AZS .................... %d",i);
        print(
    query);
        return 
    1;

    - - - Добавлено - - -

    и хочу уточнить, я добался того чего хотел , 3д текст удаляется.
    что я сделал, указал фиксированный размер массива.
    PHP код:
    new AZS[100][AZSp]; 
    а хотел что бы работало так
    PHP код:
    new AZS[][AZSp]; 
    почему не работает непойму
    ---
    есть примерный код со шлагбаумами, тот работает без фиксированного размера массива.
    PHP код:
    enum Slakbaums{Float:p1,Float:p2,Float:p3,Float:p4,Float:p5,Float:p6,Float:p7,Float:p8,Float:p9,slakStr[50],slakH}
    new 
    Slakbaum[][Slakbaums]={
        {
    1544.67664,-1630.85718,13.2,-180.0,-90.0,-90.0,-180.0,-180.0,-90.0,"Полиция"}
    }; 
    и функция перемещения объекта moveobject работает отлично, а Delete3DTextLabel с удаление 3д текста АЗС, нехочет работать.

    - - - Добавлено - - -

    вообщем пришел к выводу, что не удается сохранить в Text3D:azsT3D созданный текст.

    enum AZSp{azsId,azsUid,Float:azsX,Float:azsY,Float:azsZ,azsStr[64],Text3D:azsT3D}
    new AZS[][AZSp];
    Последний раз редактировалось DiFix; 29.11.2014 в 13:59.

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

    Статус
    Оффлайн
    Регистрация
    26.11.2014
    Адрес
    Новосибирск
    Сообщений
    20
    Репутация:
    0 ±
    вообщем я понял что для динамического массива надо указывать фиксированный размер, иначе работать не будет.
    тему закрываем

 

 

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

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

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

Ваши права

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