Массив строк. tag mismatch

Тема в разделе "Программирование / Скриптинг", создана пользователем Primo, 23 янв 2015.

  1. Primo

    Primo Где мои манеры

    Сообщения:
    1.190
    Симпатии:
    306
    Краткость - сестра таланта. Что не так?


    PHP:
    new pPrefix[MAXPLAYERS][256];
    SQL_FetchString(hndl9pPrefix[iClient], sizeof(pPrefix));

    public 
    Action:MyRank(clientargs)
    {
        if(
    client 0PrintToChat(client"%s"pPrefix[client]);
    }
     
  2. Саша Шеин

    Саша Шеин

    Сообщения:
    1.258
    Симпатии:
    191
    Primo, Эм не уверен но как вариант может так?
    new pPrefix[256][MAXPLAYERS];
    Не уверен, т.к с бд не работал.. Да и в сп средне....

    Добавлено через 50 секунд
    И вообще в какой строке ошибка из этих? Тут нет экстрасенсов...
     
    Последнее редактирование: 23 янв 2015
  3. Primo

    Primo Где мои манеры

    Сообщения:
    1.190
    Симпатии:
    306
    Саша Шеин, это явно не решение проблемы.
    Акцент на SQL_FetchString(hndl, 9, pPrefix[iClient], sizeof(pPrefix));

    Если логика развита, то можно понять, что Action:MyRank лишь только для проверки, что получил, в остальных 2х строчках не потеряешься.
     
  4. Серый™

    Серый™ CS:S Server

    Сообщения:
    2.558
    Симпатии:
    1.143
    Primo, создаёшь инт, а в чате выводишь почему то строку.
    PrintToChat(client, "%d", pPrefix[client]);

    А может сама проблема тут
    new pPrefix[MAXPLAYERS][256]; - надо создавать строку.
     
    Primo нравится это.
  5. Primo

    Primo Где мои манеры

    Сообщения:
    1.190
    Симпатии:
    306
    Серый™, чувствую себя дауном.
     
  6. Hejter

    Hejter Mapper Source Engine

    Сообщения:
    1.771
    Симпатии:
    259
  7. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.972
    Симпатии:
    2.977
    PHP:
    new String:pPrefix[MAXPLAYERS+1][256];
    SQL_FetchString(hndl9pPrefix[iClient], sizeof(pPrefix[]));

    public 
    Action:MyRank(clientargs)
    {
        if(
    client 0PrintToChat(client"%s"pPrefix[client]);
    }
     
    Последнее редактирование: 23 янв 2015
    Primo нравится это.
  8. Primo

    Primo Где мои манеры

    Сообщения:
    1.190
    Симпатии:
    306
    Второй вопрос, как можно передать данные этой строки через native?
     
  9. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.506
    Симпатии:
    1.961
    Причину указали, а сам хочу добавить, что задержка будет большая, если ты такое применишь в локальной области действия, да ещё без decl!
    В глобальной области тоже плоховато выглядит - занимает много памяти, не эффективное решение.
    +1 забыто!
     
    Primo нравится это.
  10. Primo

    Primo Где мои манеры

    Сообщения:
    1.190
    Симпатии:
    306
    Я опять делаю что-то не так. :D
    PHP:
    public Native_pGetPlayerPrefix(Handle:pluginnumParams)
    {
        
    SetNativeString(GetNativeCell(1), pPrefix[GetNativeCell(1)], GetNativeCell(3));
    }
    native pGetPlayerPrefix(clientString:str[], maxlength);
     
  11. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.506
    Симпатии:
    1.961
    Может первым надо поставить numParams? Сам нативы не использовал, сказать точно ничего не могу. Разве что уже вижу, что нужно/можно оптимизировать даже эту маленькую строчку. :-D
     
  12. Primo

    Primo Где мои манеры

    Сообщения:
    1.190
    Симпатии:
    306
    AlmazON, насколько я знаю и понимаю, GetNativeCell(1) получает значение первого аргумента, а зачем numParams - хз.
     
  13. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.972
    Симпатии:
    2.977
  14. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.506
    Симпатии:
    1.961
    Тоже чуть так не написал, но
    это у него текст (массив).
    Наверняка, сколько аргументов (количество) во всей строке/параметры.
     
  15. Primo

    Primo Где мои манеры

    Сообщения:
    1.190
    Симпатии:
    306
    R1KO, меня запугало количество параметров у GetNativeString :D и GetNativeCell(1) - индекс клиента.

    Добавлено через 39 минут
    Нет идей? Мне нужно передать строку Prefix в другой плагин через native.

    Добавлено через 1 час 4 минуты
    Как работает https://sm.alliedmods.net/api/index.php?fastload=show&id=34& ?

    Добавлено через 1 час 18 минут
    Проблема решена.
    public Native_pGetPlayerPrefix(Handle:plugin, numParams)
    {
    return SetNativeString(2, pPrefix[GetNativeCell(1)], GetNativeCell(3));
    }
     
    Последнее редактирование: 23 янв 2015
  16. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.972
    Симпатии:
    2.977
    Return убери
     
    Primo нравится это.
  17. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.506
    Симпатии:
    1.961
    Глупо сохранять глобально и получать параметр GetNativeCell(3), когда это можно прописать просто, как 256 - ведь у тебя именно такой максимум:
    PHP:
    public Native_pGetPlayerPrefix(Handle:pluginnumParams)
    {
        
    SetNativeString(2pPrefix[GetNativeCell(1)], 256);
    }
    Не знаю, надо ли менять в таком случае 2 на 1.
    Либо уж тогда получать через strlen внутри функции натива.
     
    Primo нравится это.