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

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 10 из 10

Тема: strval

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,360
    Репутация:
    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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Эмм, где именно идёт выход за пределы массива? В каком массиве?
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

  3. #3
    Аватар для untonyst
    Младший сержант

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

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

    PHP код:
    new razdel[2][24]; 
    split(inputtextrazdel[0], ',');
    split(inputtextrazdel[1], ','); 
    PS. да прибудет с тобой sscanf
    Младший сержант Стяжкин | ЧСВ группа в ВКонтакте NEW

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

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

  6. #5
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

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

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

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

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,360
    Репутация:
    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,035
    Репутация:
    702 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Две вот таких ошибки напротив split
    PHP код:
    error 048: array dimensions do not match 
    При такой записи, компилятор не может определить размер второго измерения массива. Тебе стоит либо использовать одномерные массивы, либо указывать размер прямо в функции split, покажи её код split.

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,360
    Репутация:
    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,035
    Репутация:
    702 ±
    Цитата Сообщение от 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)

Ваши права

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