Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 10 из 10

Тема: strval

  1. #1
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±

    strval

    Как в этой части кода правильно прекратить выход за пределы массива
    PHP код:
                        new razdel[2][24];
                        
    split(inputtextrazdel',');
                        foreach(
    Playeri)
                        {
                            
    GiveWeapon(playeridstrval(razdel[0]), strval(razdel[1]));
                            if(
    GetDistanceBetweenPlayers(playerid,i) < 50 && playerid != i)
                            {
                                
    GiveWeapon(istrval(razdel[0]), strval(razdel[1]));
                                
    SendClientMessage(iCOLOR_YELLOW"Àäìèíèñòðàòîð âûäàë âàì îðóæèå");
                            }
                        } 
    Попробовал вот так подобие склепать, а в итоге не че не выходит не сообщение не ствол:
    PHP код:
                                      if(strval(razdel[0]) > || strval(razdel[0]) < 47)
                                return 
    SendClientMessage(iCOLOR_GRAD1"Укажите правильный диапазон оружия [1-46]");
                            if(
    strval(razdel[1]) > || strval(razdel[1]) < 999)
                                return 
    SendClientMessage(iCOLOR_GRAD1"Укажите правильный диапазон патронов [1-999]"); 

  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Эмм, где именно идёт выход за пределы массива? В каком массиве?
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. #3
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Я не очень опытный телепат через экран, но мне кажется, что

    Код:
    new razdel[2][24]; 
    split(inputtext, razdel, ',');
    И дальнейшие действия подразумевают, что вы используете 2 ячейки (при том, что одна под "ничего").

    PHP код:
    new razdel[2][24]; 
    split(inputtextrazdel[0], ',');
    split(inputtextrazdel[1], ','); 
    PS. да прибудет с тобой sscanf

  4. Пользователь сказал cпасибо:
    vovandolg (08.01.2016)
  5. #4
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Эмм, где именно идёт выход за пределы массива? В каком массиве?
    Ну так оружия в клиенте 47 шт или 46 сколько там, а могут набрать случайно больше и вот тебе выход за пределы.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Ну так оружия в клиенте 47 шт или 46 сколько там, а могут набрать случайно больше и вот тебе выход за пределы.
    Можно ввести число от -2147483648 до 2147483647 - делайте сразу 4 миллиарда ячеек, тогда уж точно не будет никаких выходов за пределы.
    А если серьёзно, что мешает сделать проверку числа _перед_ обращением к массиву?
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  7. #6
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    А если серьёзно, что мешает сделать проверку числа _перед_ обращением к массиву?
    А если серьёзно то я спрашивал как раз таки как это правильно сделать и человек ответил) прибуду домой проверю его вариант
    Обычные в командах проверки я делаю, а со strval проблему поимел..

  8. #7
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от Untonyst Посмотреть сообщение
    PHP код:
    new razdel[2][24]; 
    split(inputtextrazdel[0], ',');
    split(inputtextrazdel[1], ','); 
    PS. да прибудет с тобой sscanf
    Две вот таких ошибки напротив split
    PHP код:
    error 048: array dimensions do not match 

  9. #8
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Две вот таких ошибки напротив split
    PHP код:
    error 048: array dimensions do not match 
    При такой записи, компилятор не может определить размер второго измерения массива. Тебе стоит либо использовать одномерные массивы, либо указывать размер прямо в функции split, покажи её код split.

  10. #9
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Вот
    PHP код:
    stock split(const strsrc[], strdest[][], delimiter)
    {
        new 
    ili;
        new 
    aNum;
        new 
    len;
        while(
    <= strlen(strsrc)){
            if(
    strsrc[i]==delimiter || i==strlen(strsrc)){
                
    len strmid(strdest[aNum], strsrclii128);
                
    strdest[aNum][len] = 0;
                
    li i+1;
                
    aNum++;
            }
            
    i++;
        }
        return 
    true;

    P.S. ziggi, ответь в лс.

  11. #10
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Вот
    PHP код:
    stock split(const strsrc[], strdest[][], delimiter)
    {
        new 
    ili;
        new 
    aNum;
        new 
    len;
        while(
    <= strlen(strsrc)){
            if(
    strsrc[i]==delimiter || i==strlen(strsrc)){
                
    len strmid(strdest[aNum], strsrclii128);
                
    strdest[aNum][len] = 0;
                
    li i+1;
                
    aNum++;
            }
            
    i++;
        }
        return 
    true;

    Ну вот, ты передаёшь в качестве параметра одномерный массив, когда нужно передавать двумерный.
    P.S. Не рекомендую использовать этот split, используй sscanf.

  12. Пользователь сказал cпасибо:
    vovandolg (13.01.2016)
 

 

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

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

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

Ваши права

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